すっかり前のネタですが、
GenTLの、ほんと上っ面だけを書いていました。(今見ると恥ずかしいな)
今回は、.ctiファイルについて(もうちょっとだけ)調べた内容です。
.ctiファイルとは?
”Common Transport Interface"の略ですが、中身はWindowsのdllです。
要はカメラやフレームグラバーなどを制御するためのライブラリですね、
GenTLの規格でいうGenTLProducerになります。(詳しくは上記ネタ参照)
名前は違えど普通にdllなので、dumpbin等で中身を確認するとこんな感じ。
DSXxxxxxという関数が並んでいますが、これらは何なんでしょう?
GenTL.hを見てみる
DSXxxxxxは、GenTL規格で決められた関数になります、規格は下記参照。 https://www.emva.org/wp-content/uploads/GenICam_GenTL_1_6.pdf
これだと判りにくいので、ざっと一覧で見るのはヘッダファイルが有ります、
下記リンクよりダウンロードして解凍して下さい。
https://www.emva.org/wp-content/uploads/GenTL_v1_6.zip
GenTL.hの中にGC_APIで関数名の一覧が有ります、これらですね。
GenTL.hをincludeし、LoadLibraryで.ctiファイルを読み込むことで、
.ctiを経由してカメラの検出だとか情報取得等々、色々出来るはず、
この辺りのやり方を、今回調べていきます。
なんで、わざわざ.ctiを使う??
例えばA社のカメラ/Grabber用にA社SDKで作ったアプリはA社専用、
当然B社では使えないので、B社のSDKで作り直す必要有り、
カメラのレジスタ一個読むだけでも、A社用アプリ/B社用アプリが必要に。
これを各社SDKでは無く、各社の供給する.ctiファイルを使うことで、
A社でもB社でも使えるアプリが出来ないか? というのが今回の目論見です、
と言ってもSDKと100%同じことまで出来ないので、ある程度の範囲限定。
以前紹介した、Harvesterからもヒントを頂きました、
(こっちは画像取得まで含め大抵のことが出来ますね、凄い)
mengineer.hatenablog.com
.ctiファイルはいずこに?
ここまで書くとうまい話なんですが、ひとつ前提条件が有ります、
A社、B社、(C社、D社...) 各社とも .ctiファイルを供給してくれること。
あと.ctiファイルのインストール先を知っておく必要有り、規格書だと
環境変数のGENICAM_GENTL64_PATH もしくは GENICAM_GENTL32_PATH に
.ctiのフォルダが設定されるみたい?ですが、そうでない会社も有ります。
(となるとSDKのインストールフォルダ辺り、検索するしか無いのかな)
まあ色々有りそうですが、次は.ctiファイル経由で接続カメラを検出する
というのをやってみる予定です、次回へ続く。