使用SerialPort.ReadByte优于ReadChar的优势
本文关键字:ReadChar 优于 SerialPort ReadByte 使用 | 更新日期: 2023-09-27 18:36:53
在我在网上阅读的所有关于串行端口的示例代码中,所有代码都使用ReadByte然后转换为字符,而不是首先使用ReadChar。
这样做有好处吗?
SerialPort.Encoding 属性经常被误解。 默认值为 ASCIIEncoding,它将产生 ?对于字节值 0x80..0xFF.所以他们不喜欢得到这些问号。 如果您看到这样的代码,然后直接将字节转换为字符,那么他们就真的错了,Unicode 在该字节范围内有很多不可打印的代码点,并且设备实际打算发送这些字符的几率为零。 字符串往往被认为比字节[]更容易处理,确实如此。
当你使用ReadChar时,它是基于你正在使用的编码,就像@Preston Guillot所说的那样。根据ReadChar的文档:
此方法根据编码读取一个完整字符。
同时使用 ReadByte 和 ReadChar 时要小心。开关 在读取字节和读取字符之间可能会导致额外的数据 被阅读和/或其他意外行为。如果需要切换 在读取文本和从流中读取二进制数据之间,选择一个 仔细定义文本和二进制之间边界的协议 数据,例如手动读取字节和解码数据。