首页 新闻 会员 周边

C# 串口发送换行符的问题

0
悬赏园豆:20 [待解决问题]

我在做一个串口通信的仪器软件,串口说明中需要发送一个换行符('\n',0x0a,10)来唤醒设备,如果成功,则设备返回(‘\n\r'),使用串口调试助手可以接受到下面代码发送过去的换行符,也可以收到串口调试助手发送回来的字符,同时使用串口调试助手给设备发送换行符也可以收到设备的返回字符串(‘\n\r'),但我使用下面的串口却怎么也无法得到设备的返回值,这是什么原因呢?请大神指教。

public static byte[] CmdConnect = System.Text.Encoding.ASCII.GetBytes("\n");
ComPort.Write(CmdComConncet, 0, CmdComConncet.Length); 
wzhwang的主页 wzhwang | 初学一级 | 园豆:45
提问于:2014-08-04 20:24
< >
分享
所有回答(5)
0

receiveData事件设置了没?

Firen | 园豆:5385 (大侠五级) | 2014-08-04 21:29

设置好了,用串口调试助手给软件发送字符是可以收到的。

支持(0) 反对(0) wzhwang | 园豆:45 (初学一级) | 2014-08-05 08:07
0

\n换成\r\n试试:

public static byte[] CmdConnect = System.Text.Encoding.ASCII.GetBytes("\r\n");

参考资料:Serial Comms in C# for Beginners

dudu | 园豆:30994 (高人七级) | 2014-08-04 22:08
0

换行符('\n',0x0a,10)来唤醒设备 ? 什么意思啊

串口不就打开  和关闭吗

还有什么唤醒啊

无法得到设备返回值,调试下,试试 \\N,C# 里面是\\

男人要爽 | 园豆:6 (初学一级) | 2014-08-04 22:41

我的设备平时是在睡眠状态,需要先通过串口发送一个唤醒字符才可以进行通信的。

支持(0) 反对(0) wzhwang | 园豆:45 (初学一级) | 2014-08-05 08:08
0

问题出在串行通信中是否启用请求发送 (RTS) 信号及串行通信过程中启用数据终端就绪 (DTR) 信号,在打开端口的时候设置下面两项即可。

            ComPort.RtsEnable = true;
            ComPort.DtrEnable = true;
wzhwang | 园豆:45 (初学一级) | 2014-08-05 12:20
0

波特率,停止位,效验位,数据位,是否设置正确?Write之后,要Read吧。要么用事件,要么停顿至少500ms后,去读。建议用事件。

forhells | 园豆:724 (小虾三级) | 2014-08-05 19:27
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册