■ExpSetup, DocFile オブジェクトの例■
例1:Data Acquisition を行うマクロ
VBScriptの場合(Visual Basicでも動作します)
Set dx = CreateObject("WinX32.DocFile")
Set Exp = CreateObject("WinX32.ExpSetup")
Exp.Start(dx) ' Start Acquisition
Exp.WaitForExperiment ' Wait for collection to complete
Visual Basicの場合
Dim ex As New WINX32Lib.ExpSetup
Dim dx As WINX32Lib.DocFile
ex.Start dx
ex.WaitForExperiment
VBScriptの場合、上の4行をエディタ等で作成し、例えばSample.vbsというファイル名で保存します。WinSpec32を起動して、MacroのExecute macro...から実行してみてください。
Visual Basicの場合、Sample.basというファイル名で保存し、Visual Basicでコンパイルの上、実行させて下さい。
WinSpec32は、測定を開始するはずです。
では、マクロの中身を見てみましょう。
WinSpec32/WinView32を総称して"WinX32"と呼びますが、その機能を使用するためにObjectを作成します。1行目では、WinX32の中のExpSetupというObjectを作成しています。そして、ExpSetupの中の一つのファンクションである測定を開始するファンクション-start-と、測定終了を待つファンクション-WaitForExperiment-を使用しています。
このように、WinSpec32/WinView32のマクロとは、Objectを作成して、その中のファンクションを呼ぶという作業を行う事です。では、WinX32には、どのようなObjectがあり、そのObjectは、どんなファンクションを有しているのでしょう? それは、付属のマニュアルをご覧になるか、もしVisual Basicをお使いであればObject Browserを使用する、(Microsoftが配布しているツールである)OLEVIEWを使用するなどの方法があります。
例2:露光時間を10秒に設定する
Dim dx, Exp1
Set dx = CreateObject("WinX32.DocFile")
Set Exp1 = CreateObject("WinX32.ExpSetup")
Exp1.SetParam 1, 10
Exp1.Start (dx)
例3:データファイル名を要求するダイアログを出し、その名前に変更するマクロ
Set Exp1 = CreateObject("WinX32.ExpSetup") strName=inputbox("ファイル名を入力してください:") if strName <> "" then Exp1.SetParam 780, strName 'EXP_DATFILENAME strMsg=Exp1.GetParam(780) else strMsg="名前が入力されていません" end if wscript.echo strMsgExpSetup Objectを介してSetParam, GetParamを使用する事で、データファイル名や、露光時間等を取得したり変更したりすることが出来ます。上の780という数字は後ろのページのEXP_CMDのテーブルを参照して下さい。Visual Basicなら素直にSetParam(EXP_DATFILENAME....と書いて構いません。
例4:TTL(1番)ポートにパルスを送信しながらスペクトルを取得する
PI社のCCDカメラコントローラーには、外部出力用のTTLポートがあります。このポートを使用してステッピングモータを動作させたりする場合のサンプルです。
Dim Exp1 Dim dx Dim count Dim framecount Dim ttl count=0 Set dx1 = CreateObject("WinX32.DocFile") Set Exp1 = CreateObject("WinX32.ExpSetup") Exp1.Start( dx1 ) While Exp1.GetParam(797) ' 797=EXP_RUNNING framecount=dx.GetParam(91) If count < framecount Then ttl=&H00FF Exp1.SetParam 91, ttl ttl=&H00FE Exp1.SetParam 91, ttl count=count+1 End If WendTTLポートは入力、出力とも8bitあります。従って、1番目(LSB)のTTLをLowレベルに、他をHighレベルにするには2進数で、1111110 16進数で fe
を送ればよいことになります。同様に、全部をHighにするには
2進数で、1111111 16進数で ff
です。上の例では、このようにパルスを送っています。