11-14-2011 08:46 PM
初めて質問させていただきます。初めて1週間の初心者です。
RS-232C通信で測定器から次々と受信するデータ文字列をヘッダと終端文字で囲まれたデータ毎に文字配列に格納したいのですが、実現できません。
スプレッドシートから\r\nを終端文字として文字配列に格納すことは出来るのですが、次々と送られて来る受信データからどのようにして文字配列に格納したらよいのか方法がわからずにいます。
Basic Serial Write and Read.viを使用し、測定器との通信自体は出来ています。
ヘッダは"#"で終端文字は”\r\n”です。
よろしくお願い致します。
11-17-2011 05:57 AM
minoru 様
平素より NI 製品をご利用いただきまして誠にありがとうございます。
日本ナショナルインスツルメンツ技術部のワカスと申します。
一つの方法と致しまして配列連結関数を用いることが考えられますが、
まず下記についてご指示頂ければと思います。
1-具体的にどのようにデータが受信されますでしょうか。
#123\r\n 、#123\r\n、#123\r\n..
それそれのデータを下記のように表示されたいのでしょうか。
123
123
123
..
もし可能であれば、現在お使いのプログラム(受信データをデフォルト値に設定)
を添付頂ければと思います。
以上、宜しくお願い致します。
11-18-2011 01:33 AM
ワカス様、お世話になります。
質問をした後に、終端文字(\r\n)で区切り、受信をすることは行えるようになりましたが、まだ配列に格納することが出来ていません。
現在のプログラムを添付します。コマンドを送信すると、レスポンスとしてデータが通信で送られて来ます。
受信データをデフォルト値に設定の方法がわかりませんでしたので、テキストファイルを添付しました。
通信でいつ送られて来るか分からないデータを待つためにWhileループ、シフトレジスタ、待機(10ms)を使用しています。
LabVIEW初心者なので、このような受信プログラムで良いのか疑問に思っています、他にもっとスマートな方法がありましたら、ご教授願います。
よろしくお願いしたします。
11-19-2011 03:57 AM
こんにちは
終端文字が\nであれば、初期化(VISAシリアルポート構成)の「終端文字列を有効にする」を有効のままにして、\nまでの1行分のデータを読んで、配列に連結することもできるかと思います。
この方法はバイナリ通信では使えませんが、テキストデータで終端文字が決まっている場合にはこの方が多少楽かと思います。
データを1行ごとに受信して配列に格納するサンプルを作成してみましたので添付します。
タイムアウト時間は実際にどのくらいの間隔でデータがくるのかによって調整が必要です。
ついでに送信側のサンプルも作ってみましたので、それも添付します。
232Cポートが2つあるPCならクロスケーブルでCOM1とCOM2をつないで確認できます。
「com0com」 という仮想シリアルポートのソフトを使うと、ケーブルもつかわずにすみます。ご参考までに。
http://homepage2.nifty.com/nonnon/Link/Null-Modem.html
11-20-2011 06:03 PM
Yyyyさま、ご回答有難うございます。
現在使用中のWindowsが2000なのでLabVIEW8.5を使用しています。バージョンが古いので作っていただいたVIが開けませんでした。8.5用に変換する方法などありましたらご教授願います。
11-20-2011 08:05 PM
Yyyy 様、minoru 様
ご返信頂きまして誠にありがとうございます。
Yyyy 様に作成されたデータ送信・受信用のサンプルプログラムをLabVIEW8.5に使用できるように
ダウンコンバージョン致しましたので、ご確認頂ければと思います。
ご指示された方法では、問題なくデータを連絡して配列に格納することができると思われます。
以上、宜しくお願い致します。
11-20-2011 11:41 PM
Yyyy様、ワカス様、有難うございます。
サンプルは思い通りに動作しました。大変参考になりました。私のVIより大変スマートで感激しました。
「終端文字を有効にする」の使い方を知らないばかりに大変苦労しました。参考にさせていただきます。
有難うございました。