mengineer's blog

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

GenTL .ctiファイルを調べてみる

すっかり前のネタですが、

mengineer.hatenablog.com

GenTLの、ほんと上っ面だけを書いていました。(今見ると恥ずかしいな)
今回は、.ctiファイルについて(もうちょっとだけ)調べた内容です。

.ctiファイルとは?

Common Transport Interface"の略ですが、中身はWindowsのdllです。

要はカメラやフレームグラバーなどを制御するためのライブラリですね、
GenTLの規格でいうGenTLProducerになります。(詳しくは上記ネタ参照)

名前は違えど普通にdllなので、dumpbin等で中身を確認するとこんな感じ。

f:id:mengineer:20200823053708p:plain

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で関数名の一覧が有ります、これらですね。 f:id:mengineer:20200823062509p:plain

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ファイル経由で接続カメラを検出する
というのをやってみる予定です、次回へ続く。