11-28-2021 12:57 PM
お世話になっております。
「VISA open ー VISA Write ー VISA read ー VISA close」の処理のサブViを作り、
これをメインVIから呼び出し、コマンドを送って応答を受信する処理を作りましたが、
最後に送った一回のコマンドに対する応答だけを受け取りたいのですが、過去のコマンドの応答まで全部受け取れてしまいます。
どのようにすれば、最後に送ったコマンドの応答だけを受け取ることができますか。
参考にサンプルの Continuous Serial Write and Read.vi を見てみましたが、このサンプルも
ブロック図に「フィードバックノードは以前のすべての応答文字列を格納します。「文字列連結」関数は、格納された値に現在の応答を追加します。」と記載があり、やはり過去の全ての応答が格納される処理のようで、参考にすることができませんでした。
ご伝授いただけますようよろしくお願いいたします。
解決済! 解決策の投稿を見る。
11-28-2021 06:50 PM
Write の前に read を行い、格納されている応答文字列を空にしてみてはどうでしょうか。
12-09-2021 01:52 AM
hama-mmc様
この度は早々にアドバイスいただきありがとうございました。
教えていただいた処理を追加しまして、それでもうまく動きませんでしたので、
別のところに問題があるようでいろいろ試してみたところ、
応答文字列の受信データを配列に格納し、上書きされるような処理にしたら解決できました。
こうしないと、VIが動いている間は、過去の受信データが全部蓄積されていきました。
そもそものデータの扱い方が良くなかったようです。
格納されている応答文字を空にする処理も必要でしたので、アドバイスいただきとても助かりました。
ありがとうございました。
返信が遅くなり申し訳ございませんでした。