É possível enviar o NUL através de uma linha serial?

1

O valor do caractere ASCII "NUL" é 0. É possível enviar este caractere através de uma linha serial sem interpretá-lo como nenhum dado sendo enviado?

    
por user233009 17.03.2017 / 06:37

2 respostas

4

Sim, claro. O enquadramento de caracteres é separado do seu conteúdo. Não há razão para que oito bits de zero sejam inerentemente interpretados como "nenhum dado é enviado" - mais do que um setor de disco cheio de zeros seria.

Para elaborar: No típico serial assíncrono você tem um bit inicial, então oito bits de dados, depois um bit de parada. Você ainda teria os oito bits de dados - eles simplesmente seriam todos zeros. O bit de início e fim diz ao receptor "aqui está um personagem". Quais são os bits no personagem são irrelevantes.

Se um programa de recebimento por acaso interpretar o NUL como "sem dados", isso é problema dele, mas isso é um problema da camada de aplicativo.

Por exemplo, se o programa receptor for um emulador de terminal, ele provavelmente não fará nada quando receber uma NUL (porque é o que a maioria dos terminais reais fez). A API da porta serial ainda registrará o recebimento do caractere NUL e o entregou ao programa. É o emulador de terminal que decidiu "oh, vou ignorar isso".

Existem muitas aplicações para enviar dados "binários" através de linhas seriais assíncronas que teriam falhado caso as NULs não tivessem sido enviadas ou recebidas.

Para mais informações, consulte link

    
por 17.03.2017 / 06:39
0

O protocolo serial tem bits de início e fim, e os dados são protegidos dentro deles - N81 (sem paridade, 8 bits, 1 bit de parada permitirá que você envie qualquer caractere ASCII e 1 codificação comum), enviando um iniciar bit ou não enviar um bit de início, é possível diferenciar entre nada e null.

    
por 17.03.2017 / 06:41