我在做一个串口通信的仪器软件,串口说明中需要发送一个换行符('\n',0x0a,10)来唤醒设备,如果成功,则设备返回(‘\n\r'),使用串口调试助手可以接受到下面代码发送过去的换行符,也可以收到串口调试助手发送回来的字符,同时使用串口调试助手给设备发送换行符也可以收到设备的返回字符串(‘\n\r'),但我使用下面的串口却怎么也无法得到设备的返回值,这是什么原因呢?请大神指教。
public static byte[] CmdConnect = System.Text.Encoding.ASCII.GetBytes("\n"); ComPort.Write(CmdComConncet, 0, CmdComConncet.Length);
receiveData事件设置了没?
设置好了,用串口调试助手给软件发送字符是可以收到的。
\n换成\r\n试试:
public static byte[] CmdConnect = System.Text.Encoding.ASCII.GetBytes("\r\n");
我的设备平时是在睡眠状态,需要先通过串口发送一个唤醒字符才可以进行通信的。
问题出在串行通信中是否启用请求发送 (RTS) 信号及串行通信过程中启用数据终端就绪 (DTR) 信号,在打开端口的时候设置下面两项即可。
ComPort.RtsEnable = true; ComPort.DtrEnable = true;
波特率,停止位,效验位,数据位,是否设置正确?Write之后,要Read吧。要么用事件,要么停顿至少500ms后,去读。建议用事件。