blochの日記

自虐ネタ以外のぐちは書かないようにしましょう

Windows7でCryogenicの磁場制御と34401のデータ読み込み

とりあえず上手く行った。NIのUSB-GPIBアダプタで、無事にCryogenicのSMS-150とSMS-240を制御でき、かつ、34401を読み込めた。後者は出来てあたりまえ。あとは、

  • 掃引往復回数を無効に
  • グラフィック描画を無効に
  • ファイルに随時書き込んで、flush(FileHandle);でフラッシュ。
  • sma4をプログラム内から立ち上げる

最後のが結構大変で、

  • uses Windows;
  • n:=WinExec('C:\Program Files (x86)\Sma4Win\sma4win.exe C:\Program Files (x86)\Sma4Win\SAMPLE2.SMP',SW_SHOWNORMAL)

とかしてやる。SW_SHOWNORMALは定義済み定数で、起動時のウィンドウの状態を指定。戻り値もWindows.dcuで定義されているはず。
問題はsma4本体のプログラムがどこにあるかを探すことだ。トホホなやり方だけど、

  • C:\Program Files (x86)\Sma4Win\sma4win.exe
  • C:\Program Files (x86)\tsuzuki\Sma4Win\sma4win.exe
  • C:\Program Files\Sma4Win\sma4win.exe
  • C:\Program Files\tsuzuki\Sma4Win\sma4win.exe

のいずれかであろう。tsuzukiは、sma4の作者さんの名前で、msiでまっとうにインストールするとこのフォルダに入る。
あとは、立ち上げたいsmpファイルを作ってそこにデータファイル名を埋め込めばOKだ。基本smpファイルは、
sm:array[1..100]of string=(' Sma4Win ver. 1.8 SMP file','','0 1 210 297 0 0 2',...
とかやって定義しておいて、ファイル名のところだけ書き換える。ラベル名は適当で良いみたい。ファイルは4回読み込んでそれぞれ、Reのu/d、Imのu/dとしておいて、x座標軸はコマンドパラメタから読み取って設定。サイズはおよそ4Kバイト、行数は合計で127になる。
、、、ってだんだんいやになってきた。
【後記】結局、ちゃんと作った。飲みながら。