mengineer's blog

ニッチなネタばかりですが。

JAIのCameraLinkでコマンド送受信 前準備編

かなり間が空きました、久しぶりの更新です!

はてなブログ、一ヶ月間更新しないと
『そろそろ次の記事を投稿してみませんか?』
ってメールが届くんですね。

ということで、最近またJAIのカメラを触っていますので、その関連ネタです、
CameraLinkなので、シリアル通信でコマンドを送受信/制御しています。

その方法について自分のメモを兼ねて整理します、例によって言語はC#にて。

JAIカメラのコマンド体系

JAIのWebサイトでは、個々の製品のページからマニュアル等を
ダウンロード出来ます、例えばAT-030MCLという製品だと下記から。

f:id:mengineer:20160827110141p:plain

右側の”マニュアル”です、ちなみに”Software download”で、
シリアル通信用のコントロールツールもダウンロード出来ますが、
今回はそれを使わずに、同じ機能を内作しようって場合のお話し。

例えば、カメラのゲインを順番に変えながら画像を取り込む等々の場合、
画像取込ソフトに、カメラの制御機能も含めたい場合が多いはずです。
(その辺をDLLで提供して頂けると有り難いんですけどね)

さて本題、JAIのマニュアルを見ていくと、コマンド体系の説明が出てきます。

f:id:mengineer:20160827125056p:plain

NNはコマンド名、=の後にパラメータ、その後に改行コードを付加して送ります。

実際のコマンド名は、下表のようにコマンドリストとして記載されています、
大体はJAIのカメラで共通ですが、機種独自のコマンドも有るので要注意!

f:id:mengineer:20160827125520p:plain

例えば、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に設定する例。

f:id:mengineer:20160827134743p:plain

ちなみにCOMポートを割り当てるのでは無く、CameraLink用のdllを指定して、
通信する方法も有りますが、C#での実現方法が判らなかったので今回は割愛。

Dalsa以外のボードでも、同様にCOMポートを割り当てて使用出来るはずです、
私の知る範囲だと、MatroxやAVALのボードでは同じ手法が使えました。

HIROSE12Pin経由での通信

また話が飛びます、JAIの一部のカメラでは,CameraLink以外にHIROSE12Pinでも、
シリアル通信出来るモデルが有ります、例えばCV-L107CLという機種だと下記

f:id:mengineer:20160828211039p:plain

6Pinと7Pinを使用して通信出来ます、CameraLinkと12pinどちらで通信するかは、
カメラ本体、別のDIPSWで設定を切り替える仕組みになっているようです。

前置きだけで長くなってしまいました、実際のC#のソフトの話は次回へ続く。