SerialPort.Write(byte [],int,int)的文档是否具有误导性?

时间:2013-02-28 09:27:42

标签: c# .net serial-port

我问这个,以防我错误地使用SerialPort.Write()。我很确定我没有,但你永远不知道......

SerialPort.Write(byte[], int, int)州的文档:

  

默认情况下,SerialPort使用ASCIIEncoding对字符进行编码。   ASCIIEncoding将所有大于127的字符编码为(char)63或   '?'。要支持该范围内的其他字符,请将“编码”设置为   UTF8Encoding,UTF32Encoding或UnicodeEncoding。

这与SerialPort.Write(string)SerialPort.Write(char[], int, int)的文档中的评论相同。

多年来一直如此,但我以前从未真正注意到它。我总是高兴地使用SerialPort.Write(byte[], int, int)发送值大于0x7f的二进制数据。我觉得奇怪的是,发送字节数组的东西的文档是在讨论字符。

只是我,或者那里的文件有点不对劲吗?

2 个答案:

答案 0 :(得分:3)

文档肯定是错误的。如果你反编译Write(char[], int, int),你会看到

byte[] bytes = this.Encoding.GetBytes(buffer, offset, count);
this.Write(bytes, 0, bytes.Length); // This is the Write(byte[], int, int) method

Write(byte[], int, int)方法只包含:

this.internalSerialStream.Write(buffer, offset, count, this.writeTimeout);

很明显,此方法中没有ASCII编码。

答案 1 :(得分:2)

是的,那是误导。 (不确定你还能从答案中得到什么。这真的是一个问题吗?)