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普及に努めます。
 
新着レスの表示