2017-04-23 56 views
1

私はarduinoから取得したセンサーの値を読み取って、パルスセンサーとDS18B20(温度センサー)を使用してlabviewに表示しようとしていますが、 )波形のチャートを心臓のパルスから得るためには、1分より遅くなると、値が混ざり合ってしまいます(私はアナログセンサーの値ではなく温度を得ます)。 serial.printの値はコンマで区切られているので、LVでマッチパターンを使用して区切ります。Code on labview to read buffer from arduino where the different values are separated by a commalabviewを使用してarduinoからバッファを高速で取得する

答えて

1

ポートで待機中のバイト数を確認し、あなたは不完全なメッセージを受け取る可能性があります。データの例とそれを送信するArduinoコードの例を見ることなく、これがどうやって間違っているのかを正確に言うのは難しいですが、この種のデータ交換をうまく機能させるためには、私はあなたにお勧めします:

  • Arduinoコードが終了文字を送信していることを確認してください。
  • シリアルポートをLabVIEWで設定する場合は、これを読み込みの終了文字として設定して有効にしてください。これはデフォルトである必要があります。次に、LabVIEWコードが実行されていない間にそこに蓄積された古いデータを削除するために、ループに入る前に読み込みバッファをクリアします。
  • ループでは、Bytes at Portをチェックしないでくださいが、大きな値をシリアル読み取り機能のbytes to readに配線してください。 Serial Readは、直列バッファから終端文字までのバイトを読み込んで返し、必要に応じてそれらが到着するのを待ちます(ポートに設定されたタイムアウト設定まで)。そうすれば、あなたは常に完全な文字列を受け取るべきです。

受信した文字列からデータを取得するには、Scan from String関数を使用します。たとえば、適切なスキャン文字列が%f,%f\nのようなもので、2つの浮動小数点値がコンマで区切られ、改行で終わるかのように見えます。文字列からのスキャンではエラー出力が表示されます。また、読み取りしようとしている値ごとにデフォルトでワイヤリングできるため、データが正しく受信されなかったかどうかを検出できます。

スクリーンショットを撮るのではなく、LabVIEWコードを表示する最も良い方法は、ダイアグラム上でLabVIEWコードを選択し、Edit>Create VI Snippet from Selectionを選択することです。これにより、実際のLabVIEWコードも埋め込まれたPNG画像が保存されます。また、データフローが左から右にできるだけ大きくなるようにブロックダイアグラムを配置することを検討してください。

関連する問題