2017-05-21 41 views
0

コマンドプロンプト(Windows 7 OS)でCOMポートを閉じる必要があります。これは、LabVIEWと呼ばれる言語で制御された多くの実験装置で動作し、これらのデバイスとの通信が失われることがあるためです。今の唯一の修正は、デバイスマネージャのCOMの名前を変更するか、再起動することです。理想的には、コマンドプロンプトでポートを閉じたいと思っています。コントロールソフトウェアでプログラムで実装できます。コマンドプロンプトでCOMポートを閉じる

誰にでも分かりますか。コマンドプロンプトでCOMポートを閉じる方法、またはCOMポートを閉じるためのすばやく簡単な方法ですから、デバイスとの接続を再確立できますか?

乾杯!

+0

私の経験のLabVIEWから限りapplcationが実行されている(一度オープン)オープンCOMポートを残します。タスクマネージャを使用してすべてのLabVIEWアプリケーションを強制終了しようとしましたか? –

+0

いいえ、適切なクローズVISAセッションコマンドを使用してポートを閉じることができます。しかし、問題は通常、プログラムの実行時間の最後にこれを配置するため、デバイスが失敗した場合でも、プログラムは最終ステージのイベントに到達しません。 – QuantumPenguin

答えて

0

私は単に他のプログラムで使用されているリソースを閉じることはできませんが、間違いなくエラーにつながると思います。正しくプログラミングされています。ポートが開いたままになっていても、LabVIEWはポートを開いたままにしてはいけません。

LabVIEWでは、プログラマチックにCOMポートを開いたり閉じたりしますが、VISAシステムの自動クローズには依存しないでください。また、シリアル接続にタイムアウトを追加すると、接続エラーのタイムアウトが発生し、リソースをクリーンアップする必要があります。

LabVIEWコードの投稿が必要な場合は、原点で問題を解決する必要があります。

whileループでシリアルポートから読み込むと、エラーが見つかったときにwhileループを停止するだけです(コードスニペットを参照)。これにより、ループが停止し、エラーに関係なくリソースがループの外側で閉じられます。

enter image description here

+0

デバイスが正常に機能している場合は問題ありません。また、プログラムを閉じて再起動すると、すべて問題なく制御PCと通信できます。問題は、デバイスが故障して再起動が必要な場合に、COMが開いたままになっている場合です。プログラムが正常に終了すると、各デバイスに適切なClose VISAセッションがあります。問題は、デバイスに障害が発生した場合でも、プログラムがこのコマンドを送信できないことです。 – QuantumPenguin

+0

それはタイムアウトが来る場所です。シリアル通信のタイムアウトは無限に(またはLVで-1)設定されています。タイムアウトを追加すると、デバイスが故障したときにこれを正常に回復できます。 。 –

+0

@ D.J. Klompアドバイスをありがとう、私はこれを試し、何が起こるか見る。 – QuantumPenguin

関連する問題