VISAからのGPIB機器への"BYTE"形式データ送信
- 1 名前: 初心者です・ 投稿日:2005/04/22(金) 00:24 ID:fTRWVooY
- VBAでVISA(Agilent)を使用して、GPIB機器を制御しようとしています。
GPIB機器が"BYTE"形式の制御コマンドなのですが、VISAからの"BYTE"形式の
コマンド送信がわかりません。どなたかご存知の方おしえてください。
お願いします。(ちなみに VIVPRINTFでTEXT形式でのコマンド送信はわかりました)
- 2 名前: マニク◆Jy2pR/5Y 投稿日:2005/04/22(金) 09:16 ID:???
- バイナリデータを送るならviWrite()。
- 3 名前: 初心者です・ 投稿日:2005/04/22(金) 23:36 ID:TXhHP9F2
- ありがとうございます。参考に致します。
- 4 名前: 初心者です・ 投稿日:2005/04/22(金) 23:50 ID:TXhHP9F2
- マニクさんかなりお詳しそうなので質問して良いですか?
上記の質問をAGILNTのサポートに問い合わせてみたのですが
ちんぷんかんぷんな回答をもらってしまいました。
今困っているのは、HT(HP) BASICの”OUTPUT
@*** USING #,B;1,2,3”に相当する
VISAのコマンドが知りたいのですが、具体的に名案ありませんか?
- 5 名前: マニク◆Jy2pR/5Y 投稿日:2005/04/23(土) 19:31 ID:???
- >>4
HT BASICのOUTPUT USING #Bがわからないのでにゃんとも。。。
数値を列挙してIEEE488.2バイナリを送信するのか、
配列変数とかを指定してカンマ区切りで送信するのか、
どちらなんでしょう?
後者ならviPrintfの%書式でサポートしてますが。
- 6 名前: 初心者です・ 投稿日:2005/04/24(日) 00:19 ID:wbttMouY
- マニクさんありがとうございます。
一度、GPIBボードメーカにコマンド確認してみます。
ありがとうございます。
- 7 名前: 初心者です・ 投稿日:2005/04/27(水) 00:13 ID:3sbklyiY
- メーカに問い合わせたところ、8ビットのバイナリ形式の
データを3つ(任意に設定0〜255)送信し、最後に
ENTを送信してくださいとのことでした。どうしたら
いいのでしょうか?
- 8 名前: マニク◆Jy2pR/5Y 投稿日:2005/04/27(水) 08:58 ID:???
- >>7
BYTE配列を任意をバイト数送信するって事で良いんでしょうか。
基本的にはviWriteを使う。但しデフォルトの宣言は
パラメータがByVal As Stringになっていて文字列送信には
向いてるが配列の参照渡しには向いてない。
そこで、パラメータの型をひねった宣言、
Declare Function viWriteAny Lib "VISA32.DLL" Alias "#257" (ByVal vi As Long, ByRef Buffer As Any, ByVal count As Long, retCount As Long) As Long
を追加する。(viWriteAnyなんて関数はVISAには無い!)
あとは、
Dim x(0 To 3) As Byte
x(0) = &HAA
x(1) = &HBB
x(2) = &HCC
x(3) = &HA '最後のENTってASCII 0x0Aの事?
Dim retCount As Long
vs = viWriteAny(vi, x(0), 4, retCount)
みたいにすればいい。
- 9 名前: 初心者です・ 投稿日:2005/05/10(火) 00:44 ID:hrhzLy4E
- マニクさん
完璧でした。
最後のENTは私の間違いでしたが
上記の手順で無事動作することができました。
色々アドバイスありがとうございました。
VISA普及に努めます。
新着レスの表示