64bit と Timestamp
今まで
だったのを
にしたのです。
すでに32bitのSDKが入っているところに64bitのSDKを入れたら、別々のディレクトリにインストールされて("Program Files (x86)"と"Program Files"、しかしめんどくさい名前だ)、スタートメニューにも両方表示されました。
32bit版のFlyCap2ではカメラ情報は取得できるものの肝心の画像データが取得できなくなり、当然自作のC++のプログラムも同様の状態になりました。ドライバとかが変わってしまったんでしょうか。。。困ります。
仕方ないのでVC++のプロジェクトもx64でリビルドしてみました。すると、ちゃんと動いてくれました。
それから、タイムスタンプについても??状態だったのがわかりました。
ググって出会ったページ:スペースソフト IEEE1394解説 プロトコル*1
引用はややこしくなりそうなのでしませんが、上の記事の「アービトレーション」の「アイソクロナスアービトレーション」の節にある、12bit、13bit、7bitの値のそれぞれが、FlyCapture2でのTimeStamp構造体のメンバに対応しているようです。記事からわかるとおり
ビット数 | メンバ名 | 備考 |
---|---|---|
12bit | cycleOffset | 12bitだが3072のモジュロで、24.576MHzのクロックでカウントアップ |
13bit | cycleCount | cycleOffsetがあふれるごとにカウントアップ、つまり8kHz、これは8000のモジュロ |
7bit | cycleSeconds | cycleCountがあふれるごとにカウントアップ、つまり1Hz、これは128のモジュロ |
のようです。USB接続のカメラでもIEEE 1394の仕様を踏襲しているのだと思います。