物事が近いが、依然として正しくない場合は、.NETシリアルポートオブジェクトは、偶数(致命的な何かが起こるまでそれが、です)あなたにエラーを与えていないことがあります。
最も一般的なシリアルポートの通信エラーは、ボーレートの不一致のために発生します。あなたが「エコー」を得ることができることを知っているというメッセージがあれば、それをハンドシェイクの取り組みの一環として試してみてください。接続しようとしているデバイスに「ステータス」メッセージが表示されている可能性があります。それを要求することによる害はなく、通信が正しく流れているかどうかを知ることができます。
ソフトウェアハンドシェイク(xon xoff)については、正しく設定されているかどうかを検出することはほとんどありません。シリアルポートオブジェクトは、基本的なシリアルポートドライバの実装に応じて、スレッド例外エラーを完全に無視することから何かを行うことができます。私はxon/xoffを完全に無視するシリアルポートドライバを手に入れ、文字をプログラムに直接渡しました。
ハードウェアハンドシェイクでは、デバイスの動作方法に応じて、ボーレートの基本的なエコー戦略が機能する場合があります。ハードウェアハンドシェイクを行うことがわかっている場合は、それを検出してオンにすることができます。デバイスがハードウェアハンドシェイクを必要とし、それがオンになっていない場合、何も得られず、その逆もあります。
使用頻度の低いもう1つの設定は、DTRピン - データ端末の準備です。一部のシリアルデバイスでは、データの送信を開始するタイミングを示すために、これをアサート(trueに設定)する必要があります。デフォルトではfalseに設定されています。それを渦巻きにする。
シリアルポートオブジェクトは... finickyです。必ずしも必要ではありませんが、変更を加える前にポートを閉鎖することを検討します。
編集:thisがお使いのデバイスであるようにあなたのコメントに
おかげで、それが見えます。これはデフォルトの設定があるべきと言う:
- 1200ボー
- 奇数パリティ
- 1ストップビット
- ハードウェアハンドシェイク
それはどのように多くのデータビットを指定するのではなく、デバイスはそれが7と8をサポートしていると言います。私はそれらの両方を試してみましょう。また、600,1200,2400,4800,9600、および19200ボーをサポートしています。
ハードウェアハンドシェイクを有効にし、DTRを有効にして(異なるもの)、すべての異なるボーレートを循環させると、それはあなたの設定ではない可能性があります。使用しているシリアルケーブルがお使いのデバイスに正しく接続されていない可能性があります。シリアルケーブルの中には、「パススルー」ケーブルがあります。片側の1〜9ピンと他の1〜9ピンが正確に一致しています。次に、 "TX"と "RX"ケーブルが切り替わる(クロスオーバー)ケーブルがあります。片側が送信されたときに相手側に非常に便利なケーブルが届くようにします。
コマンドテーブルマニュアルの後ろにあります。何らかのエコーバックを取得するために発行できる「印刷ソフトウェアバージョン」コマンドがあります。
あなたのデバイスから期待されるデータのフォーマットを説明することでこれを拡張することができますか? –
モデル番号を入力することができれば、使用している実際のデバイスに関する詳細があれば、何が間違っているのかを知ることができます。 –