LabVIEW(バージョン7.0)を使用してシリアル接続でデバイスを制御しています。 USBを使用して接続されており、Windows XPを実行しているコンピュータに仮想シリアルポートとしてインストールされています。私のプログラムがコマンドを送信したときに私のデバイスがクラッシュするたびに、それがタイムアウトするまでそれ以上の入力を受け付けることができなくなります(デバイス自体も機能しなくなります)。LabVIEWでシリアル通信がクラッシュする
私はPortmonを使ってシリアルポートトラフィックを調べました。デバイスがクラッシュするたびに、シリアルドライバはIOCTL_SERIAL_GET_COMMSTATUSコマンドを使って、プログラムを使用して送信するコマンドを1回ではなく4回送信します。私はこの最後のコマンドが何を返すかを見ることはできませんが、私は以前のコミュニケーションで何かが起こったと思います。私はポートの構成がまったく正しいとは思っていませんが、どうやって、なぜか分かりません。何かを書くときはいつでも、デバイスへの接続を開いたり閉じたりします。
完全性のために、9600,8ビット、パリティなし、1ストップビット、およびフロー制御なしのボーレートを持っています。私は、これらのパラメータの正しい設定はデバイスに依存しているが、メーカーは推奨設定を提供していないことに気付いています。
Portmonに加えて、NI I/OTrace - http://digital.ni.com/public.nsf/allkb/282C5D41E2BA04F2862574BA007803B9を使用して、シリアル通信のLabVIEWパースペクティブを取得することもできます。赤色で表示されている行は、エラー状態を示します。 –
あなたを助けるために、より具体的な情報を提供する必要があります。どんなデバイスに接続していますか、どんなドライバを使用していますか、あなたのlabviewコードの抜粋を投稿することはできますが、それは問題ではないかもしれないと示唆しています。同じドライバを使用してこの問題が発生しない別のプログラムがありますか。 –
@ D.J.Klomp具体的には、このデバイスはRFジェネレータ(WindFreak製、モデルはSynthUSBii)です。それはATmega32U2マイクロコントローラを含んでいます。私が下で説明したように、すべてのコマンドに改行を追加することで問題が解決されたため、デバイスを制御するプログラムに依存しません。この問題は、ここで扱うにはあまりにも具体的ではないかもしれないことを認識しています。なぜなら、マイクロコントローラがどのようにプログラムされているかに大きく依存しているからです。 – Julius