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
属性。
我在 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
属性。