11-29-2016 09:03 AM
マイコンとシリアル通信を行い、取得したデータを保存するVIの作成に取り組んでおります。
マイコンから10msecごとに、カンマ区切りで数値データ2つを送信し、
LabVIEWで1000msecごとに読み取っています。
しかし、読み取りのタイミングと、データが送られてくるタイミングが合わず、
最初と最後のデータが途切れて、間違った値を読み取ってしまいます。
添付の画像は、実行した際のスクリーンショットですが、
マイコンからは「1023,671」 程度の値を送り続けているにも関わらず、
最初と最後に途切れたデータが入っているため「23, 671」や「1023,6」などを
読み取っている状態です。
チャートは本来ならばそれぞれ横一直線になってほしいのですが、
ループのタイミングで途切れたデータが入るため、そのタイミングで下がっています。
マイコンから送ったデータをすべて読み取ってから、表示すれば良いと考えたのですが、
どのようにすればいいのか見当がついておりません。
1秒間に5~10サンプル程度取得し、時刻情報を付けた上で保存したいと考えています。
マイコン側のプログラムも変更可能です。
お忙しいところ恐縮ですが、どのように書き換えればいいのか、
アドバイスをいただけましたら幸いです。
よろしくお願いします。
11-30-2016 04:17 AM
こんにちは、
LV2014を使っているので添付のVIは開けなかったのですが、シリアルから読み込む部分とデータを切り出す部分を独立させると良いと思います。
北東北 LABVIEWユーザー会のフォーラムに「生産者消費者パターン
リンクが汚くてすみませんが、同じNIのサイトです。
11-30-2016 04:29 AM
シリアル通信で受信データが途切れるとのことですが、添付していただいたVIを見る限り、シリアル通信のフロー制御を行っていないことが原因ではないかと思います。
フロー制御を設定することで、送信側は受信側の準備が整っているか確認をしながら通信を行います。
フロー制御には、ハードウェアハンドシェイク(RTS/CTS方式、DSR/DTR方式)や、ソフトウェアハンドシェイク(XON/XOFF方式)など、いくつか種類があるので、
マイコン側で設定可能なフロー制御方式を確認し、マイコン側・LabVIEW側ともに同じ設定をして、同様の症状が現れるか確認していただけますでしょうか。
もし複数設定可能でしたら、ハードウェアハンドシェイクの設定を行うことをオススメします。
以上、ご確認よろしくお願い致します。
11-30-2016 05:16 AM
こんにちは、
使っているのがLV2014なので添付VIは開けないのですが、シリアルから読み込む部分とデータを切り出す部分を分離すれば良いと思います。生産者/消費者デザインパターンと呼ばれている方法です。
通信モジュールからデータを受け取るプログラムを添付します。