可以发送/无法读取.NET串口

teh*_*orf 5 c# serial-port .net-3.5

可能重复:
C#serialport和hyperterminal

问题

我的串口连接有问题.我可以将数据发送到我的设备,但我无法读取数据.如果我使用Hyperterm,每个工作都很好 - 我看到数据进出.

但是,使用我的代码,我的串行端口对象从不接收任何数据,但我发送的数据由设备接收.

有任何想法吗?

项目信息:

  • WPF
  • .NET 3.5(不是客户端配置文件版本)
  • 在Windows 7上开发
  • Visual Studio 2010
  • DA-15串口转USB

Hyperterm设置:

  • 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);
Run Code Online (Sandbox Code Playgroud)

编辑:

我在上面注意到了,但为了确保每个人都知道,我正在使用USB转串口电缆.我不认为这是问题,因为它适用于Hyperterm,但以防万一.

Mar*_*all 6

看看他们使用单独的线程来检查数据的MSDN 示例。您还可以订阅DataReceived 事件以查看它是否正在触发。并且有关于将DTRRTS设置为 true的社区评论,如果连接的设备需要它们,它将不会传输数据。

  • 将 DTR 和 RTS 设置为 true 解决了让我发疯的阅读问题。 (3认同)