texto formato encriptar código convertir con codigo c# .net serial-port

c# - formato - Codificación de SerialPort: ¿cómo obtengo ASCII de 8 bits?



encriptar con codigo ascii en c# (3)

Tengo un problema con un programa que se comunica a través de un puerto serie. Uno de los caracteres que debe enviar y recibir es el símbolo de grado, ASCII 0xBF. Ha funcionado bien durante años. De repente, el objeto del puerto serie ha comenzado a dejar caer el bit 7, por lo que obtengo 0x3F en lugar de 0xBF.

Estoy seguro de que esto es algo tonto que he hecho porque he jugado con mi código en esa área recientemente, sin embargo no puedo ver lo que he hecho que causa la pérdida del octavo bit.

Mi puerto se inicializa así:

BaudRate 9600 int DataBits 8 int DiscardNull true bool DtrEnable true bool Encoding {System.Text.ASCIIEncoding} System.Text.Encoding Handshake None System.IO.Ports.Handshake NewLine "/n" string Parity None System.IO.Ports.Parity ParityReplace 63 byte PortName "COM4" string ReadBufferSize 128 int ReadTimeout 250 int ReceivedBytesThreshold 1 int RtsEnable true bool StopBits One System.IO.Ports.StopBits WriteBufferSize 64 int WriteTimeout 1500 int

¿Alguna idea de cómo restauro el puerto a la operación de 8 bits?


System.Text.ASCIIEncoding no es la codificación correcta para utilizar para la comunicación de 8 bits. En su lugar, utilice, por ejemplo, la página de códigos "ISO 8859-1 Latin 1; Europeo occidental (ISO)":

port.Encoding = Encoding.GetEncoding(28591);


Su problema es que ASCIIEncoding es una codificación de 7 bits. Está buscando algo que admita ASCII extendido .

A continuación, obtendrá la página de códigos 1252 .

System.Text.Encoding.GetEncoding(1252);

Esto te dará ISO 8859-1 .

System.Text.Encoding.GetEncoding(28591);

Ambos se consideran ASCII extendido y ambos contienen símbolos (la mayoría con la misma representación de bytes) típicamente asociados con este conjunto, como ©, ¥ y º. Consulte los enlaces a los que se hace referencia para obtener más información sobre qué caracteres están incluidos en cada codificación.


El símbolo de grado en 1252 y 28591 parece ser xB0, no xBF.