NI製品ディスカッション

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

シリアル通信中の改行コードについて

解決済み
解決策を見る

 私は今現在、マイコン⇔LabVIEWのシリアル通信を試みています。

 

LabVIEWから応答をマイコンに送って、

返ってきた応答を読み取るプログラムを作成しているのですが、

返ってきた16進数のバイト配列の中に改行コード0x0Aが含まれており、

本来5バイトのデータのはずが2バイト目までしか読み込めません。

読み取れなかった3バイト分は次のデータを読み込んだ時にくっついて読み取られます。

 

そこで、改行コード0X0Aが含まれていても、

ちゃんと5バイト分まとめて読み込む方法がないか教えて頂きたいのです。

どうぞよろしくお願い致します。

 

0 件の賞賛
メッセージ1/6
3,930件の閲覧回数

Post your code or a picture of your code. We will be able to tell you what is going wrong.

Benoit

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

こちらがLabVIEWのコードになります。

マイコンとLabVIEWのやり取りを2回行っています。

 

This is LabVIEW BlockDiagrm.

It communicated between microcomputer and LabVIEW 2 times.

すべてをダウンロード
0 件の賞賛
メッセージ3/6
3,891件の閲覧回数

did you try to increase the delay?

The micro processor might take more time to answer...

I joined to this answer a proper way to do a read from Serial port.

This way, you should never miss any byte.Receive serial port function.png

Benoit

 

0 件の賞賛
メッセージ4/6
3,887件の閲覧回数
解決策
トピック作成者n2a5が受理

VISAプロパティの「Serial Settings -> End Mode for Reads(端子表示名はASRL End In)」プロパティのデフォルト値は「2 : TermChar」です。これが「2」だと「Message Based Settings -> Termination Character Enable」は無視されます。

これらを正しく設定するか、デフォルトで「0x0A」に設定されている「Termination Character」を別の文字に変更しましょう。

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

問題は解決致しました。

ありがとうございました。

 

I solved this problem.

Thank you very much.

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