为了使我的C#程序作为串口接口工作,我需要发送“ENQ”并期望返回“ACK”。
根据我在本论坛回答之前的问题时所理解的,我认为系统希望我发送'5'并返回'6'(ASCII等效的ENQ和ACK)。
因此,我可以发送一个“5”的字符而不是发送一个“ENQ”的字符串吗?
感谢所有答案,指出C#中的'5'不是ASCII 5 好的,我现在阅读评论,我会尝试:
serialPort.Write(new byte[]{5},0,1);
答案 0 :(得分:3)
通过串口发送无符号字节,值为5.
您需要检查,验证,但所有内容都可能是无符号的,因此您可以将0-255作为值。
答案 1 :(得分:1)
如果您正在使用SerialPort对象和WriteLine方法,请尝试:
SerialPort serialPort = ...;
...
string message = ((char) 5).ToString();
serialPort.WriteLine(message);
要解决这些注释,您可以将SerialPort.NewLine
属性更改为您的“结束传输”字符,在这种情况下,可能是char 5.我是针对使用ETX作为其的几台计算机开发的“消息结束”字符。如果您不断使用Write
,然后需要编写字符5来结束您的消息,请考虑这条路线。
答案 2 :(得分:0)
你不能发送一个5的字符,用C#字符保存unicode 16位字符。
您可以发送一个值为5的无符号字节。