かなり間が空きました、久しぶりの更新です!
はてなブログ、一ヶ月間更新しないと
『そろそろ次の記事を投稿してみませんか?』
ってメールが届くんですね。
ということで、最近またJAIのカメラを触っていますので、その関連ネタです、
CameraLinkなので、シリアル通信でコマンドを送受信/制御しています。
その方法について自分のメモを兼ねて整理します、例によって言語はC#にて。
JAIカメラのコマンド体系
JAIのWebサイトでは、個々の製品のページからマニュアル等を
ダウンロード出来ます、例えばAT-030MCLという製品だと下記から。
右側の”マニュアル”です、ちなみに”Software download”で、
シリアル通信用のコントロールツールもダウンロード出来ますが、
今回はそれを使わずに、同じ機能を内作しようって場合のお話し。
例えば、カメラのゲインを順番に変えながら画像を取り込む等々の場合、
画像取込ソフトに、カメラの制御機能も含めたい場合が多いはずです。
(その辺をDLLで提供して頂けると有り難いんですけどね)
さて本題、JAIのマニュアルを見ていくと、コマンド体系の説明が出てきます。
NNはコマンド名、=の後にパラメータ、その後に改行コードを付加して送ります。
実際のコマンド名は、下表のようにコマンドリストとして記載されています、
大体はJAIのカメラで共通ですが、機種独自のコマンドも有るので要注意!
例えば、ShutterModeをPresetShutterに設定したい場合には、
SM=1<CR><LF>
をカメラに送信します、カメラがそのコマンドを正常に処理すると、
COMPLETE<CR><LF>
という文字列が戻ります、もし無効なコマンドを送ると下記の文字列が戻ります。
01 Unknown command !!<CR><LF> コマンド名が無効の場合 02 Bad Parameter !!<CR><LF> パラメータが範囲外の場合
現在の設定を確認したい場合は、コマンドの後ろに”?”を付けて送ると、
設定内容が文字列として戻ってきます。
SH?<CR><LF> SH=1<CR><LF>
画像処理ボードのCOMポート設定
説明が前後しますが、カメラリンク経由でシリアル通信する場合には、
画像処理ボードを使用しますので、その設定が必要となります。
例えばDalsaのボードだと、”Sapera Configuration”というツールで、
ボードに割り当てるCOMポートを設定します、下記はCOM3に設定する例。
ちなみにCOMポートを割り当てるのでは無く、CameraLink用のdllを指定して、
通信する方法も有りますが、C#での実現方法が判らなかったので今回は割愛。
Dalsa以外のボードでも、同様にCOMポートを割り当てて使用出来るはずです、
私の知る範囲だと、MatroxやAVALのボードでは同じ手法が使えました。
HIROSE12Pin経由での通信
また話が飛びます、JAIの一部のカメラでは,CameraLink以外にHIROSE12Pinでも、
シリアル通信出来るモデルが有ります、例えばCV-L107CLという機種だと下記
6Pinと7Pinを使用して通信出来ます、CameraLinkと12pinどちらで通信するかは、
カメラ本体、別のDIPSWで設定を切り替える仕組みになっているようです。
前置きだけで長くなってしまいました、実際のC#のソフトの話は次回へ続く。