如何在C#程序中发送ASCII字符

时间:2009-12-03 17:28:52

标签: c# serial-port

为了使我的C#程序作为串口接口工作,我需要发送“ENQ”并期望返回“ACK”。

根据我在本论坛回答之前的问题时所理解的,我认为系统希望我发送'5'并返回'6'(ASCII等效的ENQ和ACK)。
因此,我可以发送一个“5”的字符而不是发送一个“ENQ”的字符串吗?

感谢所有答案,指出C#中的'5'不是ASCII 5 好的,我现在阅读评论,我会尝试:

serialPort.Write(new byte[]{5},0,1);

3 个答案:

答案 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的无符号字节。