SSブログ

OS X用GigE Visionカメラドライバ - その19 [OS X用GigE Vision]

GEN<i>CAM規格の抄訳の続き。かなり飽きてきたけど、途中でやめるのはもっとイヤなので続ける。今日は読み書きをダイナミックに制御するためのパラメータの話。

DCAM規格の1394カメラの機能であるBytesPerPacketは一時的にロックされる機能の典型的な例である。ユーザはこのカメラパラメータを変更することができるが、PCのアダプタカードのDMAが画像取得をしていないかぎりにおいてである。DMAを設定することはトランスポートレイヤがカメラにBytesPerPacketパラメータを尋ねてその値に従ってDMAの値を設定するということである。これが終わればBytesPerPacketはトランスポートレイヤがDMAを解放するまで変更してはならない。その途中ではこのパラメータはカメラではロックされる。

カメラそのものはDMAが設定されたかどうかを知る手段はない。同時にカメラ記述ファイルの「通常」のノードはBytesPerPacketのロック属性を制御するのには使えない。

GenApi内部での解決はBooleanノードTLParamsLocked(図-8)を提供することである。BytesPerPacketはこのノードにpIsLockedリンクを通じてつながる。トランスポートレイヤ(TL)はTLParamsLockedの値をアップデートすることでDMAの状態を反映させる。トランスポートレイヤがDMAを設定する前、TLparamsLockedをtrueに設定することでそれぞれのカメラパラメータ(すなわちBytesPerPacket)をロックする。そして画像取得が終わった後、TLParamsLockedをfalseに設定し直す。TLParamsLockedノードの変更はそれに依存するすべてのノード、例えばBytesPerPacketノードをロックする。

一般的にこの構造が動作するためにはTLParamsLockedは標準的なノード名でトランスポートレイヤはカメラのGenApiインターフェイスにアクセスできなければならない。さらに、カメラ記述ファイルの設計者はどのパラメータがトランスポートレイヤにロックされるかに気をつけなければならない。この情報はトランスポートレイヤの標準であるDCAM規格に含まれ、画像転送中に1フレーム中のパケット数と、そのサイズが固定されることを規定している。

Gamma機能は一部のカメラに実装され、そうでないカメラもあるということは「未実装」の典型的な例である。もしカメラがGamma機能が実装されているかどうかを知らせる問い合わせビットを持っていれば、その機能を持つカメラすべてのカメラ記述ファイルをひとつ保守するだけですむ。
1010fig08.png
図-8にこのような場合にGenICamがどう扱うかを示す。Gamma機能ノードはpIsImplementedリンクを持っていてそれは問い合わせビットにマップされたGammaInqノードにつながっている。たいてい複数の問い合わせビットがひとつのレジスタにパックされている。このビットを抽出するにはMaskedIntRegタイプが使われる。これはIntRegノードと同じように働くが、どのビットあるいは連続するビットを整数として抽出すべきかを表している。
nice!(0)  コメント(0)  トラックバック(0) 

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。