Como eu transmito um único valor serial de dados hexadecimais no PuTTY usando um código Alt?

1

Estou tentando enviar um valor hexadecimal específico através de uma porta COM serial usando o PuTTY. Especificamente, desejo enviar os códigos hexadecimais 9C, B6, FC e 8B. Eu procurei os códigos Alt para eles e eles são 156, 182, 252 e 139 respectivamente.

No entanto, sempre que eu insiro os códigos Alt , um valor hexadecimal anterior de C2 é enviado antes de 9C, B6 e 8B para que os valores enviados sejam C2 9C, C2 B6 e C2 8B . O valor para FC é alterado para C3 FC.

Por que esses valores estão sendo colocados antes do valor hexadecimal e por que o FC está sendo alterado completamente? Para mim, parece que há um problema internamente ao converter o código Alt para hex. Existe uma maneira de inserir diretamente valores hexadecimais sem usar os códigos Alt no PuTTY?

    
por Josh 27.05.2014 / 19:50

1 resposta

4

O que você está vendo é apenas a conversão do conjunto de caracteres de texto comum.

No que diz respeito ao PuTTY, você está digitando (e lendo) texto , não dados binários brutos, portanto ele deve converter o texto em bytes em qualquer conjunto de caracteres configurado antes de enviá-lo fio.

Em outras palavras, quando você digita Alt + 1 8 2 , o PuTTY recebe o correspondente caractere do conjunto de caracteres "OEM" legado que o sistema está configurado para. (Digitar Alt + 0 1 8 2 escolheria do conjunto de caracteres legado "ANSI" (Windows-125x). Nesse caso, o caractere é , um pilcrow.

Agora, o PuTTY precisa converter esse caractere em bytes. Versões anteriores do PuTTY, por padrão, escolheriam o mesmo conjunto legado de caracteres Windows-125x que o próprio sistema operacional usa, por exemplo, Windows-1257, então a conversão costumava ser quase direta - input 1 8 2 , receber byte 182 decimal (0xB6 hex).

No entanto, como o PuTTY geralmente se conecta a servidores Linux ou BSD, a grande maioria migrou para UTF-8 como padrão, a versão mais recente do PuTTY começou a usar o UTF-8 por padrão também. UTF-8 é uma codificação do conjunto de caracteres mega Unicode, que tem na posição U + 00B6, e é principalmente apenas coincidência que o UTF-8 codifica esse valor como bytes C2 B6 :

  • U+00B60000|0000 10|110110[110]00010 [10]110110C2 B6

  • U+00FC0000|0000 11|111100[110]00011 [10]111100C3 BC

  • U+20AC0010|0000 10|101100[1110]0010 [10]000010 [10]101100E2 82 AC

  • A Wikipedia possui cores

Como um exemplo diferente, a letra ė costumava ser byte E6 no conjunto de caracteres Windows-1257, mas no Unicode é U + 0117, correspondendo aos bytes C4 97 em UTF-8. Essas seqüências são de tamanho variável, até 4 bytes para posições maiores.

Se você precisar usar o PuTTY para enviar dados binários, abra a tela de configurações "Window → Translation" e escolha CP437, ISO-8859-1 ou Windows-1252 como "Remote character set". (Salve isso em uma sessão separada; não salve isso como um padrão global porque ele quebrará conexões SSH regulares.)

    
por 27.05.2014 / 22:08