NI製品ディスカッション

キャンセル
次の結果を表示 
次の代わりに検索 
もしかして: 

VISA書き込みに16進数表記を使用する場合について

解決済み
解決策を見る

現在,計測機器に対しVISA書き込みにより16進数のコマンドを送信しようとしています。

 

「LabVIEWでNI-VISAを使用したバイナリ/16進数の送受信」というページを参考に

文字列定数を16進数に変更するところまでは理解したのですが,


01 03 0002 0002 65CB  (1バイト 1バイト 2バイト 2バイト 2バイト)   というコマンドを入力したいところ
0103 0002 0002 65CB (2バイト 2バイト 2バイト 2バイト)                という2バイト区切りでしか入力することができません。

 

この場合はどのように対応したらよいのでしょうか?

ご教授の程お願い致します。

 

 

 

0 件の賞賛
メッセージ1/3
5,286件の閲覧回数
解決策
トピック作成者Kazu38が受理

Kazu38さん、

 

文字列の制御器・定数・表示器の「表示スタイル」を16進数に変更すると2バイトごとにグループされているに見えますが、実際のデータと自動的に入ったスペースは関係ありません。

 

問題点は16進数からデータに変換する時です。altenbachさんの例の通りですが、16進数の\00\07\00\08が U8(1バイトデータ)に変換された場合に0, 7, 0, 8になりますが、U16(2バイトデータ)に変換されたら7,8になりますし、U32(4バイトデータ)に変換されたら458760になります。

 

NI-VISAは\00\07\00\08だけを送っていますので、変換は機器の方にて行われています。機器は1バイト 1バイト 2バイト 2バイト 2バイトのデータを予想しているであれば現在の16進数の01030002000265CBのままで送ってもいいと思います。 

 

screenshot.133.png

0 件の賞賛
メッセージ2/3
5,239件の閲覧回数

foxhound73さん

 

無事解決致しました。

ありがとうございます。

0 件の賞賛
メッセージ3/3
5,202件の閲覧回数