使用C#串口发送指定命令无响应,求助可行解决方案
串口发送指令问题解决方法
你的问题出在port.Write的第三个参数上——你固定写了1,这意味着每次只发送1个字节:
- 发送
"\r\n"时,虽然字符串是两个字符,但你只发了第一个字节(\r),设备刚好能识别并响应; - 发送
"S1\r\n"时,只发了第一个字符S,设备没有收到完整的指令,自然不会返回数据。
要正确发送完整指令,你需要把整个字符串的所有字节都发出去,把第三个参数改成字节数组的长度即可:
inputData = "S1\r\n"; byte[] sendBytes = Encoding.ASCII.GetBytes(inputData); port.Write(sendBytes, 0, sendBytes.Length);
或者直接使用port.Write的字符串重载(底层会自动处理编码和长度):
inputData = "S1\r\n"; port.Write(inputData);
这样就能和Putty一样发送完整的S1\r\n指令,设备收到后就会正常返回响应了。
内容的提问来源于stack exchange,提问作者Alessandro Chiodo
相关产品推荐
相关产品推荐

