在线阅读的所有示例代码中,SerialPorts都使用ReadByte,然后转换为Character而不是首先使用ReadChar。
这样做有优势吗?
答案 0 :(得分:3)
当您使用ReadChar时,它基于您正在使用的编码,如@Preston Guillot所说。根据{{3}}的文件:
此方法根据编码读取一个完整的字符。
一起使用ReadChar和ReadChar时要小心。交换 读取字节和读取字符之间可能会导致额外的数据 被阅读和/或其他意外行为。如果有必要切换 在读取文本和从流中读取二进制数据之间,选择一个 仔细定义文本和二进制之间边界的协议 数据,例如手动读取字节和解码数据。
答案 1 :(得分:3)
SerialPort.Encoding属性经常被误解。默认是ASCIIEncoding,它会产生吗?对于字节值0x80..0xFF。所以他们不喜欢这些问号。如果你看到这样的代码,然后直接将字节转换为char,那么它们就是错误的,Unicode在该字节范围内有很多unprintable codepoints,并且设备实际意味着发送这些字符的几率为零。字符串往往被认为比字节[]更容易处理,它是。