在ReadChar上使用SerialPort.ReadByte的优势?

时间:2013-10-25 05:25:15

标签: c# serial-port c#-5.0

在线阅读的所有示例代码中,SerialPorts都使用ReadByte,然后转换为Character而不是首先使用ReadChar。

这样做有优势吗?

2 个答案:

答案 0 :(得分:3)

当您使用ReadChar时,它基于您正在使用的编码,如@Preston Guillot所说。根据{{​​3}}的文件:

  

此方法根据编码读取一个完整的字符。

     

一起使用ReadChar和ReadChar时要小心。交换   读取字节和读取字符之间可能会导致额外的数据   被阅读和/或其他意外行为。如果有必要切换   在读取文本和从流中读取二进制数据之间,选择一个   仔细定义文本和二进制之间边界的协议   数据,例如手动读取字节和解码数据。

答案 1 :(得分:3)

SerialPort.Encoding属性经常被误解。默认是ASCIIEncoding,它会产生吗?对于字节值0x80..0xFF。所以他们不喜欢这些问号。如果你看到这样的代码,然后直接将字节转换为char,那么它们就是错误的,Unicode在该字节范围内有很多unprintable codepoints,并且设备实际意味着发送这些字符的几率为零。字符串往往被认为比字节[]更容易处理,它是。