C#中的串行端口不';无法正确发送扩展ASCII字符
我在C#中使用SerialPort,发现无法发送扩展ASCII字符 如果我发送的字符低于128,则会正确传输,否则我将始终传输0x3FC#中的串行端口不';无法正确发送扩展ASCII字符,c#,serial-port,non-ascii-characters,C#,Serial Port,Non Ascii Characters,我在C#中使用SerialPort,发现无法发送扩展ASCII字符 如果我发送的字符低于128,则会正确传输,否则我将始终传输0x3F comport.Write(((char)127).ToString()); ///I receive 0x7F comport.Write(((char)128).ToString()); ///I receive 0x3F 是否有特定设置允许我将字符从0x00发送到0xFF?来自: 默认情况下,SerialPort使用AscienceODing对字符
comport.Write(((char)127).ToString()); ///I receive 0x7F
comport.Write(((char)128).ToString()); ///I receive 0x3F
是否有特定设置允许我将字符从0x00发送到0xFF?来自:
默认情况下,SerialPort使用AscienceODing对字符进行编码。AscienceODing将大于127的所有字符编码为(字符)63或“?”。要支持该范围内的其他字符,请将编码设置为UTF8Encoding、UTF32Encoding或Unicode编码
因此,您只需更改comport
对象的Encoding
属性。来自:
默认情况下,SerialPort使用AscienceODing对字符进行编码。AscienceODing将大于127的所有字符编码为(字符)63或“?”。要支持该范围内的其他字符,请将编码设置为UTF8Encoding、UTF32Encoding或Unicode编码
因此,您应该只更改
comport
对象的Encoding
属性。如果我更改为comport.Write((byte)128.ToString()),请使用byte
..@DanielA.White
我发送3个字符:“1”、“2”、“8”不调用.ToString()
如果我更改为comport.Write((byte)128).ToString()),请使用byte
..@DanielA.White代码>我发送了3个字符:“1”、“2”、“8”不要呼叫.ToString()
谢谢!经过一些测试,我注意到对我来说正确的编码是以下comport.encoding=encoding.GetEncoding(28591)代码>谢谢!经过一些测试,我注意到对我来说正确的编码是以下comport.encoding=encoding.GetEncoding(28591)代码>