とりあえず上手く行った。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になる。
、、、ってだんだんいやになってきた。
【後記】結局、ちゃんと作った。飲みながら。