計測制御技術ラウンジ >> GPIB技術ラウンジ 全部 1- 最新50

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普及に努めます。

新着レスの表示

名前 : E-mail(省略可) :

文責:計測制御技術ラウンジ, Powered by ©タカヒロ@みちのく掲示板 [12ch BBS 2.03]