laudenpower:
Li o material que você mandou, mas ainda não consigo visualizar como uma coisa dessa (a inversão dos bits) não coloca todo a comunicação a perder, sendo que nesse caso ela apenas ocasiona o problema uma vez entre várias vezes.
Outra coisa que não entendi é o esquema de conversão tipo eu tenho que enviar 100 bytes (nesse caso tenho que mandar char’s para representar a tabela asc) tenho que converter caracter por caracter? Pergunto isso por que eu posso escolher o encode quando eu manipulo o OutputStreamWriter e nesse caso tem os encodes que utilizam BigEndian e LittleEndian mas eles mandam 2 bytes na porta serial ao invés de 1 como estava sendo enviado antes.
Essa parte de conversão de bits é realmente complicada para mim por que apesar de estar lendo o material que você está cedendo ta faltando contextualizar isso de alguma forma entende?
Sim,
Eu quero dizer que vai afetar na comunicação, ou seja quando esse pacote chegar na aplicação. Na porta de comunicação(serial) é indiferente.
Quando seu programa ler o byte vai ler de forma errônea, influenciando posteriormente no tempo de leitura(caso o software esteja esperando um bit específico para iniciar, ou até mesmo terminar a comunicação).
Um exemplo é uma leitora de mesa. Passamos o cartão magnético, enquanto nosso software aguarda um bit específico para ler o restante da sequencia(dito trem de bit). De acordo com o protocolo, os 2 primeiros bits com valor 10 iniciam a transmissão e os 2 últimos 00 terminam a transmissão. Entre eles estão as informações referentes a comunicação. Pela inversão algumas vezes líamos valores picados pois o protocolo achava que valores intermediários (10 ) indicavam o início da transmissão.
No seu caso, a inversão ocasiona a leitura tardia, pois o seu software, ou então o servidor do outro lado esperam pelo início da comunicação. A diferença no tempo pode estar ae.
Imagine dessa maneira -
Em 1ms enviei 3 requisições, e meu servidor(ou cliente) recebeu apenas 1(por acaso simplesmente porque os bytes recebidos combinam com o “início-transmissão”). Lembrando que não tem nada haver com rxtx(isso já é o hardware), mas com o java e o c(ou qualquer outra linguagem l endian) e a maneira como interpretam os seus bytes.
Você precisa saber como o servidor e a sua aplicação estão interpretando a troca de mensagens. Isso pode ser feito imprimindo todos os valores do pacote e comparando-os. Lembrando, comparando os tempos da transmissão.