LabVIEWがシリアルポートを継続的にポーリングするのを防ぐ

更新しました Nov 30, 2018

使用製品

Software

  • LabVIEW Full

Driver

  • NI-VISA

問題

シリアルポートから読み取ると、データがポートで利用可能になるまで、LabVIEWはデータを継続的にポーリングします。これにより、プロセッサとリソースの使用量が増加し、プログラム内の他のループが円滑に実行されなくなります。どうすればこれを防ぐことができますか?

解決策

この問題は、VISAイベントを使用して解決できます。VISAイベントは、VISAイベント有効関数を使用してポートにシリアル文字が到着したときに生成されます。Whileループ内でVISA読み取り関数の前にVISAイベント待機関数を置くことができます。

VISA読み取り関数は、シリアルポートで文字を受信したときにのみ実行されます。データがシリアルポートに到着するまで、VISAイベント待機関数を含むスレッドは中断されます。したがって、VISA読み取り関数は、ポートでデータが使用可能な場合にのみ実行されます。読み取るバイト数を1として指定することにより、データが利用可能な場合にのみ、シリアルポートが確実にポーリングされます。プログラムが停止する際は、VISAセッションを閉じる前にVISAイベント破棄関数を使用してイベントを閉じます。
 


これらの関数は、LabVIEWのブロックダイアグラムで関数パレットの計測器I/O>>VISA>>上級>>イベント処理に含まれています。

追加情報

VISAイベント待機関数の詳細については、LabVIEWヘルプを参照してください。

この記事はお役に立ちましたか?

いいえ