02-03-2015 10:44 PM
ADVANTEST R6552をRS-232Cで表示値データを取り込む場合に
4回ぐらい問い合わせないと返ってきません。
ADVANTESTに確認した所、
>・クエリコマンドの場合
> *IDN? の例
>
> 応答
> LF
> ADVANTEST・・・・・CRLF
> LF
> =>CRLF
>・通常のコマンド
> *CLS の例
>
> 応答
> LF
> =>CRLF
>
>viWriteはLFで受信を打ち切るためクエリコマンドの場合は都合4回
>viWriteを実行することにより全ての応答を読み出すことができます。
>クエリコマンド以外の通常コマンドもコマンドの受信後に必ず
>LF=>CRLFを応答します。これを受信しておかないと、
>以降のクエリコマンドで以前の読み出されていなかった応答が
>出力されてしまい期待通りの結果とならない場合があります。
strsetcmd = "read?"
Call Send(strsetcmd)
Call Receive(strGetCmd)
上記のコードで送っています。
ADVANTESTの回答の通りに送るには上記のコードをどのようにして送ったらいいか教えてください。
02-05-2015 06:44 AM
開発言語とライブラリは何を使用していますか?
日本NI 上野
02-05-2015 05:29 PM
EXCEL VBAでNI-VISAを使っています。
今まではNI-VISAでUSB、GP-IB、RS-232Cを使っていましたがADVANTEST R6552は
GP-IBは今まで通りに使用できたのですが
RS-232Cでは問い合わせで送った通りに数回送らないと返ってきません。
02-06-2015 06:26 AM
シリアルのほうが制限が多いので大変です。
シリアルの場合は、終端文字としてEOL(CR + LF)はviSetAttributeで対応していません。
下記のリンク先にも記載されています。
http://www.ni.com/tutorial/4256/en/#toc7
上記の例では、Scan(VISAならviScanf)を使っていますが、何らかの処理をさせなければいけません。
ほかには、バッファサイズをチェックする方法もあります。
「serial vbCrLf buffer」というキーワードで検索してみてください。