■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 strMsg                     

ExpSetup 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                      

  Wend     
TTLポートは入力、出力とも8bitあります。従って、1番目(LSB)のTTLをLowレベルに、他をHighレベルにするには

2進数で、1111110      16進数で  fe

を送ればよいことになります。同様に、全部をHighにするには

2進数で、1111111      16進数で  ff

です。上の例では、このようにパルスを送っています。