これは照明とはあまり関係ないのですが・・・。
照明制御のついでにプロジェクター(と音)を全自動で制御している案件があるのですが、
プロジェクターだけ課題が残っていて、それを解決できる方法が見つかり。
これは他の照明制御他、色々なことに応用できるぞということで後で見かえせるようにブログに概要を記しておこうと思います。
その筋の方にとっては『いまさらRS232C?』と思われるかもしれませんが。
でもプロジェクターの外部端子がそれしかなかったので必要にかられまして・・・・。
---------------------
目的は、主にプロジェクターのON.OFFと入力の切り替えをPCから全自動で、スケジュールに合わせて完全にバックグラウンドで制御する。
(ウインドウが開くと都合が悪かったので完全バックグラウンド動作は必須)
まずプロジェクターとのRS232C通信確認に使ったのはこれ。
シリアル通信テスタ Serister
これで動作は確認。
超初心者の私でも超使いやすかったです。
・COMMPORTはデバイスマネージャで適宜変更。
・HEXとキャラクターとテキストモードと、切り替えて確認できたのも、後々役に立ちました。

スクリーンショット↑

実はここまでで1日かかってます。
いろいろとプロジェクターから返ってくるrs232cの悲鳴を聞きながら・・・


でもそれでは、ソフトを立ち上げた後手動で送るしかなく、自動化が出来ないので
次にコマンドプロンプトを使えばどうか、と助言をもらい試してみることに。
そのために使ったのはこれ。
コマンドライン通信(RS232C)
この内容を書き換えてやってみることに。
ただこれが最初うまく行かなかったです。いろいろスクリプトで余計な部分を省きながら動作確認しながらしていくだけで1日。

ソフトの構成と書いてあることを理解するのに,ほとんど助けて頂きながら1日かかりました。

それなりの時間をかけてたどり着いた、最後の関門、『送る文字列』の問題。
やれHEXだの16進法だのASCIIだの・・・。

↑スクリプト↑
いろいろやってもうまく行かず、途中でハイパーターミナルでの通信を試みるという寄り道も。
通信はできますが、自動化への道のりは見えずまた、コマンド通信に戻る。
結局、最後に残った送信している命令の内容に。
テキストデータとバイナリの間で何回も試しているうちに成功。
やっている方には常識かもしれない、RS232C通信での文字列送受信のルール、の範囲内かも・・・・などど思いながら。


↑プロジェクター側の資料
—-

↑こんな感じでやってました↑
今回は目的達成の最低限の実現には、送信するだけで受信は必要なかったのでシンプルに思えます。
-----—-
EXIT等のコマンドを足して、無事コマンドプロンプトでRS232通信(送信だけではありますが)が実現。
あとはバックグラウンド化。
自動化にはバッチファイルを作成してそれをタスクで立ち上げる。
これも教えて頂いてすんなりいけました。
※今回一番の学びどころはこのBATファイル関連。
残るはバックグラウンドでの動作。
-----—
ネットを探していたら、こんな感じの記事がちらほらと。
なるほどと、VBSファイルを作成し、そこからバッチファイルを叩くようにする。
・・・・・・でもできない。
どうして、と悩むこと1時間。
PCの環境が整っていないんじゃないかと最後は疑いましたが、これも思わぬ落とし穴が。
先にあげたコマンドライン通信(RS232C)ですが、
バッチファイルを叩くと、その階層の下のバッチファイルを実行するつくりになっていて。
最初のファイルは隠れていたのですが、下の階層のファイルが呼び出される際にアクティブになってしまっていたのでした。
コマンドライン通信のソフトの構造はすでに理解していたつもりですが、VBSで指定してもウインドウが開いてしまう原因がそこにある、と気が付くのに時間がかかりました。
結局親ファイルをスルーして子供のファイルのみをVBSで叩く形にして解決。
(最初から親ファイルは今回のような目的に使うのには必要なかったのか・・・・も)
-----—
でめでたく目的達成とあいなりました。
PCでの自動実行については、タスクを使ってましたが、プラスでコマンドプロンプトを使えばもっと細かく自動で動かせるということを今回学びました。
あとは文法とかコマンドとか。
RS232CとコマンドプロンプトとBATファイルとVBSファイル。
今回は時間はかかりましたが、いろいろな人に助けられて、また一つ賢くなることができました。
これも照明関連の制御のために十分のちのち色々生かすことが出来る、と確信しています。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です