====== QtXTop : FLIライブラリを利用して CCD カメラ等を使用するための Stars ドライバ ====== ===== - 概要 ===== FLIのライブラリを使用し、FLI のライブラリに認識されるCCDカメラに対して Stars 経由でコマンドを送って制御する為の Strs ドライバです。 ===== - ダウンロード ===== * {{:tabuchi:qtxtop-pack-20200227.zip|実行ファイルのパッケージ}}(Windows版, 64bit, 2020,2,27, 2.26版を少改定) * {{:tabuchi:prog:qtxtoppack-20160223.zip|実行ファイルのパッケージ}}(Windows版, 2016.02.23) * 2016.02.18 : 実際にX線を使って正しく撮影されているかどうかは確認していません。\\ 光がない状態で、実装されているコマンドを送って応答が正しいこと、撮影コマンドを送った時内部状態が正しく遷移しデータファイルができること、は確認してあります。 * 2016.02.19 : 幾つかコマンド追加(Set/GetSeqFileNo, Set/GetUseSeqFNo)。実装を忘れてた GetMode を追加。 * 2016.02.23 : カメラにシャッターがないので、露光と読み出しを連続で行ってしまうと像が流れる。\\ その対策として、Exposure コマンドの中身を3つのコマンド(StartExposure, RBIFlush, DownLoadImage)に分割。\\ 外部でシャッター制御を行う余地を作った。 ===== - 履歴 ===== * 2016.2.18 : この Wiki ページでの公開を開始しました。 * 2016.2.19 : 更新 * 2016.2.23 : Exposure を分解した 3つのコマンドを実装。StartExposure, RBIFlush, DownLoadImage * 2020.2.26 : 64bit Windows10 で動作確認したバージョンを upload しました。 ===== - 簡単な説明 ===== ==== - 設定ファイル ==== QtXTop の設定は、同じフォルダに置いた config.cfg に書けます。 次にあげるのは設定ファイル(config.cfg)の内容の例です。 STARS_IP     192.168.11.111  # Stars サーバの IP アドレス STARS_PORT    6057        # Stars サーバの Port 番号 KEY_FILE_NAME  QtXTop       # Stars のコネクション確立に使う Key ファイルの名前 NAME_ON_STARS  QtXTop       # Stars 上で名乗る自分の名前 CAMERA_NO 0       # PC に FLI ライブラリが認識する複数のカメラがある場合、何番目のカメラを制御するかを指定 ==== - Stars経由でのコマンド ==== QtXTop は Stars 経由で送られてくる下記のコマンドを認識します。 ^ コマンド名 ^ 引数 ^ 説明 ^ 凡例/応答例 ^ ||||| |IsBusy   | 無し | 撮影中は 1 そうでなければ 0 を返す | | ^ ^ ^ ^ ^ |GetLibVer   | 無し | ライブラリのバージョンを表す文字列を返す | | |GetModel   | 無し | モデル名を表す文字列を返す | | |GetSerialSTR  | 無し | シリアル番号を表す文字列を返す | | |GetHWRev    | 無し | ハードウエアのバージョンを表す数字を返す | | |GetPixSize   | 無し | ピクセルサイズを表す 2つの数字を返す | | |GetArrayArea  | 無し | デバイスのピクセルサイズ?を表す 4 つの数字を返す | 0 0 3448 2574 | |GetVisArea   | 無し | デバイスの有効サイズ?を表す 4 つの数字を返す | 43 46 3369 2550 | |SetTemp    | 1つ | 温度を設定する(実数、℃) | | |GetTemp    | 無し | デバイスの CCD温度と、ベース温度を示す2つの数字を返す | | |GetCCDTemp   | 無し | デバイスの CCD温度を返す | |GetBaseTemp   | 無し | デバイスの ベース温度を返す | |GetCoolerPWR  | 無し | クーラーパワーの数値を返す | ^ ^ ^ ^ ^ |SetBin     | 3つ | bin を設定する。hbin, vbin, rbin の順 デフォルトは全部 1 | SetBin 1 1 1 | |GetBin     | 無し | bin を表す3つの数字を返す。 hbin, vbin, rbin の順 | 1 1 1 | |SetRBIFlushes | 1つ | 何回 RBI Flush を行うかを指定 (デフォルト は 0) | | |GetRBIFlushes | 無し | 設定されている RBIFlushes の数字を返す | | |SetRBIExpTime | 1つ | RBI Flush に際して露光を行う時間を指定。\\ デフォルトは 500 (500ミリ秒?) | | |GetRBIExpTime | 無し | 設定されている RBIExpTime の数字を返す | | |SetTDIRate   | 1つ | 本番撮影の際の TDI Rate を指定。デフォルトは 0 | | |GetTDIRate   | 無し | 設定されている TDIRate の数字を返す | | ^ ^ ^ ^ ^ |SetImages   | 1つ | 連続して何枚イメージを撮影するかの指定。デフォルトは 1 | | |GetImages   | 無し | 設定されている Images の数字を返す。 | | |SetExpTime   | 1つ | 本番撮影の露光時間を指定。デフォルトは 500 (500ミリ秒?) | | |GetExpTime   | 無し | 設定されている露光時間を返す。 | | |SetInterval   | 1つ | 複数枚イメージを取る際、間を開ける時間。\\ デフォルトは 0。現在内部では使われていない(無効)。 | | |GetInterval   | 無し | 設定されている Interval を返す。 | | |SetFileName   | 1つ | 撮影されたデータを保存するファイル名の設定。\\ 実際の保存の際には、指定された名前にイメージ番号が加わわります。| | |GetFileName   | 無し | 設定されているデータファイル名を返す。 | | ^ ^ ^ ^ ^ |Exposure     | 無し | 撮影。即 OK が返ってきます。\\ 撮影が終わったかどうかは IsBusy できくか、EvChangedIsBusy 0 を待つかしてください。\\ このコマンドを実行する前に設定した \\ hbin, vbin, rbin, RBIFlushes, RBIExpTime, Images, ExpTime, FileName, TDIRate \\ の数字/値が使われます。 | | |StartExposure   | 無し | 撮影。即 OK が返ってきます。CCDからのデータ読み出しは行いません。\\ 事前に設定した hbin, vbin, ExpTime, TDIRate の値が使われます。 | | |DownLoadImage | 無し | 撮影されて CCD 上に残っている像を読みだし、ファイルに書き出します。\\ 事前に設定したFileName が使われます。 | | |RBIFlush      | 無し | 決められた条件で CCD に借りの露光動作とデータの空読みを行います。\\ 撮影前のデバイスクリアの動作? \\ rbin, RBIFlushes, RBIExpTime の値が使われます。| | ^ ^ ^ ^ ^ |SetUseSeqFNo   | 1つ | ファイル名に通し番号を付けるかどうか。 1 : Yes, 0 : No。 \\ Yes にすると、SetFileName したファイル名に通し番号がついた名前で保存されます。 | | |GetUseSeqFNo   | 無し | ファイル名に通し番号を付ける設定かどうかを尋ねる。 1 : Yes, 0 : No | | |SetSeqFileNo   | 1つ | 通し番号の最初の数字を指定。データファイル保存のたびに一つづつ増えます。 | | |GetSeqFileNo   | 無し | 次に使われる通し番号。 | | ==== - Stars経由で発生するイベント ==== QtXTop は、下記のイベントを Stars 経由で発生します。 ^ イベント名 ^ 説明 ^ |EvChangedIsBusy | QtXTop 側から能動的に発生するイベントメッセージ。\\ 撮影が始まるった時点で 1, 終わった時点で 0 が発生。 | ===== - その他、チップス等 ===== ==== - 縦横のピクセル数の取得 ==== ファイルから画像を復元するときには、縦横のピクセル数が必要になります。 それは、Stars 経由で GetVisArea を送った時の回答の 4つの数字を x1 y1 x2 y2 とした時、 幅 = x2-x1, 高さ = y2-y1 で求まります。 ==== - 画像ファイルの ImageJ での読み込み ==== ImageJで読む場合は、Import/Raw...から、上記縦横のピクセル数の情報を入力し、 Image type = 16-bit Unsigned、Offset = 0, Little-endian byte orderにチェックを入れると読み込めます。 ==== - ImageJ での画像解析の前に ==== - 撮影と同じ露光時間で測定したダークレベルを差し引く - Process/Filters/Median... Radius = 1.0 pixel(2.0などでも可;数字が大きくなるほど分解能は下がる) をしておくと、かなり弱い信号まで高いS/N比で見えるようになります。 ==== - 画像の回転 ==== FLIGrabで見える画像はカメラで見たそのままですが、保存される.rawファイルは、180°回転像になっています。 ===== - What to Do ===== * 連番のナンバリングは修正すべし\\ SetUseSeqFNo 1のとき、連続ファイルの番号は1ずつ増えて、scan_0001-0000.raw, scan_0002-0000.raw, scan_0003-0000.raw ...などとなるが、SetImageで連続撮影の指定をした場合、scan_0001-0000.raw, scan_0002-0001.raw,, scan_0003-0002.raw ...などとなってしまう。 * FLIGrabと同時に使っていると、FLIGrab終了時にCCDの冷却が止まってしまう。\\ 起動時に "SetTemp -20"を自動的に送る、あるいは GetTempで温度を監視するなどの機能があるといいと思います。>> 温度変化はイベント化すべし ? ------ 当 web ページとその下のページに関するお問い合わせ等ございましたら、[[連絡先|連絡先]]にご連絡をお願いします。 \\ [[start|田渕のページのルート]]