NI製品ディスカッション

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

Labview シリアル受信の読み取り

解決済み
解決策を見る

お世話になっております。

 

「VISA open ー VISA Write ー VISA read ー VISA close」の処理のサブViを作り、

これをメインVIから呼び出し、コマンドを送って応答を受信する処理を作りましたが、

最後に送った一回のコマンドに対する応答だけを受け取りたいのですが、過去のコマンドの応答まで全部受け取れてしまいます。

どのようにすれば、最後に送ったコマンドの応答だけを受け取ることができますか。

 

参考にサンプルの Continuous Serial Write and Read.vi を見てみましたが、このサンプルも

ブロック図に「フィードバックノードは以前のすべての応答文字列を格納します。「文字列連結」関数は、格納された値に現在の応答を追加します。」と記載があり、やはり過去の全ての応答が格納される処理のようで、参考にすることができませんでした。

 

ご伝授いただけますようよろしくお願いいたします。

 

 

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

Write の前に read を行い、格納されている応答文字列を空にしてみてはどうでしょうか。

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

hama-mmc様

この度は早々にアドバイスいただきありがとうございました。

教えていただいた処理を追加しまして、それでもうまく動きませんでしたので、

別のところに問題があるようでいろいろ試してみたところ、

応答文字列の受信データを配列に格納し、上書きされるような処理にしたら解決できました。

こうしないと、VIが動いている間は、過去の受信データが全部蓄積されていきました。

そもそものデータの扱い方が良くなかったようです。

格納されている応答文字を空にする処理も必要でしたので、アドバイスいただきとても助かりました。

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

返信が遅くなり申し訳ございませんでした。

 

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