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

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

O valor do caractere ascii "NUL" é 0. É possível enviar esse caractere por uma linha serial sem que ele seja interpretado como nenhum dado sendo enviado?

Responder1

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

Para elaborar: Em uma série assíncrona típica, você tem um bit de início, depois oito bits de dados e, em seguida, um bit de parada. Você ainda teria os oito bits de dados - eles seriam todos zeros. Os bits de início e parada informam ao receptor "aqui está um personagem". O que são os bits do personagem é irrelevante.

Se um programa receptor 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, provavelmente não fará nada ao receber um NUL (porque foi isso que a maioria dos terminais reais fez). A API da porta serial ainda terá registrado o recebimento do caractere NUL e entregue ao programa. Foi o emulador de terminal que decidiu “ah, vou simplesmente ignorar isso”.

Existem muitos aplicativos para enviar dados "binários" por linhas seriais assíncronas que teriam falhado se os NULs não tivessem sido enviados ou recebidos.

Para mais informações, consultehttps://en.wikipedia.org/wiki/Asynchronous_serial_communication

Responder2

O protocolo serial tem bits de início e de parada, 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 assim um bit de início ou não enviando um bit inicial é possível diferenciar entre nada e nulo.

informação relacionada