2015年04月24日

node.jsでVISA測定器と通信する。

webinteractiveio.png

node-serialportに触発されて、node.jsで測定器を制御したいと思いました。

測定器の世界には VISA(Virtual Instrument Software Architechture)という
GPIB、VXI、PXI、シリアル(RS232/485)、イーサネット、USBおよび/もしくは
IEEE 1394をインタフェースとした計測器の標準規格がありまして、これを扱うには
visa32.dllを叩けばインターフェースの種類に関係なく、共通の命令で制御できるわけです。

対してnode.jsには node-ffi というネイティブdllを扱える神モジュールがありますので、
この2つを組み合わせれば、測定器をnode.jsから扱えそうです。

という訳で実際にやってみました。

visa32.dllには沢山の関数が有りますが、とりあえず必要な分だけ実装してみました。
('viOpenDefaultRM','viOpen','viPrintf','viScanf','viClose' の5つ)

'viOpenDefaultRM'は本来ならばint型を引数に取るはずですが、何故かstring型を渡さないと動きませんでした。
'viOpen'も何故かsesn = 0ではだめで、( IO Monitorでを立ち上げた状態でInteractiveIOで *IDN? を投げたときのsesn の値)'256' にしたら動きました。
'viPrintf'もなぜ'1'で'int'が正解なのかわかりませんが、これでエラーはなくなりました。
'viScanf'はvisa32.csを見ると色々な型を受け付けるみたいですが、IO Monitor を見ると int8[] でやりとりしてたので、それに合わせました。

とまぁ、試行錯誤の結果ようやく動きました。

visa32test.png

WEBインターフェースは、expressでさくっと作成。
もちろん、socket.io でリロードすることなくリアルタイムで結果を表示します。

githubに置きましたのでご自由にどうぞ。
posted by MON at 21:41| Comment(0) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。

この記事へのトラックバック
【今是昨非】http://nomulabo.com/