5

重複の可能性:
C#シリアルポートとハイパーターミナル

問題

シリアル接続に問題があります。デバイスにデータを送信できますが、データを読み取ることができません。Hypertermを使用すると、すべてが正常に機能します。データが出入りするのがわかります。

ただし、私のコードを使用すると、シリアルポートオブジェクトはデータを受信しませんが、送信するデータはデバイスによって受信されます。

何か案は?

プロジェクト情報:

  • WPF
  • .NET 3.5(クライアントプロファイルバージョンではありません)
  • Windows7での開発
  • Visual Studio 2010
  • DA-15シリアルからUSB

ハイパーターム設定:

  • COM20
  • ビット/秒:115200
  • データビット:8
  • パリティ:なし
  • ストップビット:1
  • フロー制御:なし

C#コード:

SerialPort serial = new SerialPort();

serial.PortName = "COM20";
serial.BaudRate = 115200;
serial.DataBits = 8;
serial.Parity = Parity.None;
serial.StopBits = StopBits.One;
serial.Handshake = Handshake.None;

serial.Open();
serial.Write("Hello World\r\n");    // Echoed on device screen

while (0 == serial.BytesToRead)     // Never receive a response
    System.Threading.Thread.Sleep(100);

char[] first = new char[serial.BytesToRead];
serial.Read(first, 0, first.Length);

編集:

上記で説明しましたが、念のため、USB-シリアルポートケーブルを使用しています。Hypertermで動作するため、これは問題ではないと思いますが、念のためです。

4

1 に答える 1

7

データをチェックするために別のスレッドを使用しているMSDNの例を見てください。DataReceivedイベントをサブスクライブして、発生しているかどうかを確認することもできます。また、 DTRRTSをtrueに設定することについてのコミュニティのコメントがあります。接続されたデバイスがそれらを必要とする場合、データを送信しません。

于 2012-06-27T00:35:47.057 に答える