[表紙頁]へ  関連記事の目次へ

[2018年4月4日]
複数画面 切替表示プログラムを、試作 


このところ、「2画面 同時 連続表示」で“糞害箇所付近”を集中的に見るようにしているのだが、皆目、収穫無し!
やはり、狙った箇所だけでなく、その他の場所も気になるので、時々、「8カメラ切替方式」のプログラムに替えて見ているのだが、どうにもまどろっこしい。

で、「4画面 同時 断続表示」のプログラムを作り始めたのだが、考えている内に、それ以外にも色々出来そうな気がして、「1画面だけ」、「2画面 同時 連続表示」、「3,4画面 同時 断続表示」、「5〜8画面 切替表示」などを考え、それらを1プログラム(U2Face4.exe)内に詰め込んだ。 ・・・ 尚、ここで言う「画面」とは、「」のこと。

4画面 同時 断続表示」で、殆ど静止画像に近いけれども、重点箇所:2箇所と、それ以外の場所:2箇所を看視・俯瞰出来るようになった。(図1、図2<クリック>
これで、“ワン公の散歩”は、どれかの画面に現れ、もし其処に留まっていれば、その画面だけを「1〜2画面 同時 連続表示」にして注視出来るはず! ...と期待している♪

ただ、カメラに「UCAM-DLA200Hを多用しているので、3,4画面表示の場合などで、画面の切り替わり時に一瞬暗転することがあるが、これは仕方が無い。

−−−−−−−−−−−−−−−−−−−−−−−−−
+++ Switch文を使う +++

メニュー(透明率85%)」上の「カメラ番号 1・・・8」をクリックして、“茶色”に反転させれば、“そのカメラの映像を表示する”ということにした。(図3)
そして、その“茶色数”(=画面の数:Fm)によって、処理ルーチン群(小プログラム群)を切り替える(switch文)方式にしてみた。(図4<クリック>

このプログラムは、「切替」は自在のはずで、一旦[停止]させた後、再度[開始]させれば、そのまま「指定画面数」に切り替わるはずなんだが、まだ、上手く行かない場合がある
なので、“茶設定”をした後は、一度[終了]してから、再度プログラムを立ち上げ直すようにしている。
(...これは、Windowsの並列処理機能の“有難迷惑な副作用”なのかも...と思っているのだが、要は私のプログラミングが下手糞なだけか。苦笑)
毎度のように、少しずつ手直ししながら、更に好ましい状態にして行かねば!

+++ 1画面と4画面切替(動画) +++

今回の「3,4画面 同時 断続表示」は、「2画面 同時 連続表示」を2組(上下に)用意して、それらを切り替える方式(ルーチン群)にしてある。
左右の2画面は、プログラム的には切り替えず、連続表示のつもりなんだが、実際には、途切れたように一瞬暗転している。(動画1<クリック>

これは、「UCAM-DLA200H」の癖(立上り遅延)なので止むを得ないが、まぁ、これで、プログラムが順調に動いているのが分かるってもんだ!
その点、1番目のカメラ「Microsoft HD-3000」は、その癖が無いから、画面が暗転することが無い。

8台の内1台だけを選んで、連続的に映像を見ることも出来る。(図5)
今は、土手の桜も満開で、時折、“小花見”を愉しんでいる人の姿も見える。
もう少し経てば、花びらが舞い散る様子も見えることだろう。

それにしても、未だに“糞害犯人”を発見・検挙することが出来ていないのは、遺憾!(?)
またやられたなら、次は「ドライブレコーダー」を使う手も考えたいが、果たして、現れて捕まえられるか?

+++ 2画面と3画面切替自在 +++

1画面 連続表示」では、ギクシャクではあるが、ほぼ連続した動画が見られるが、この「2画面 同時 連続表示」でも、2カメラの映像を同時に2画面で見ることが出来る。(図7)

しかし、USB2.0のカメラでは、同時映像データの収集(と表示)が出来るのは、2台までが限度のようなので、それを前提にして、
3,4画面 同時 断続表示」では、2画面の組を2組(上下2段)設けて、それらの組を一定時間毎に切り替える方式にした。(図8<クリック>
「3画面」は、単に「4画面」の内、1画面を削っただけで、今は、特に小細工はしていない。
尚、「5画面以上」の指定では、表示を全体に広げ、「順次 画面切替方式」にしている。

+++ エラー対策 +++

以前から、自作プログラム側の責任では無さそうなエラー(いや!忖度される側だから、当然?外野・野党から、責任を問われるか?苦笑)が、突然出て来ることがある。(図10<クリック>
特に、1番目のカメラに切り替える時にエラーが起き易い。
今の場合、偶々「Microsoft HD-3000」だった(図10<クリック>)だけで、他のカメラにしても同じだった。

不定期に発生するので、“原因”が考え難かった。
そこで、取り敢えず、プログラムの怪しげな箇所を、手直してみた。
 旧 if(f1_buf.empty()){break;}
 新 if(f1_buf.empty()){;}
上のように、旧を新に入れ替えて、「もし、バッファが空だったとしても、中断:breakなどせず、無視する」ようにしてみた。
それで、“エラー発生”の頻度は、かなり低くなったようだが、まだ油断は出来ない。暫く様子を見よう。


[表紙頁]へ  関連記事の目次へ