C# 中的 SerialPort 不能正确发送扩展 ASCII 字符

SerialPort in C# doesn't send correctly Extended ASCII char

我在 C# 中使用 SerialPort,我发现我无法发送扩展的 ASCII 字符。

如果我发送一个小于 128 的字符,它会被正确传输,否则我总是传输 0x3F

comport.Write(((char)127).ToString());  ///I receive 0x7F 
comport.Write(((char)128).ToString());  ///I receive 0x3F

是否有特定设置允许我发送从 0x00 到 0xFF 的字符?

来自docs

By default, SerialPort uses ASCIIEncoding to encode the characters. ASCIIEncoding encodes all characters greater than 127 as (char)63 or '?'. To support additional characters in that range, set Encoding to UTF8Encoding, UTF32Encoding, or UnicodeEncoding.

所以你应该只更改 comport 对象的 Encoding 属性。