Comunicação serial com Java e painel

3 respostas
java
M

Olá, preciso enviar bytes via porta serial para um painel de led para exibir números, porém estou apanhando um pouco pra saber o que eu preciso enviar exatamente, alguém pode dar uma ajuda?!
segue abaixo o protocolo de comunicação

prot1|458x500 prot2

3 Respostas

staroski

Você sabe que 1 byte são 8 bits, certo?
No desenho você já tem um mapa dizendo qual é o bit que acende cada segmento.
Então você tem que fazer um mapa pra saber quais segmentos devem ser acesos pra representar cada dígito de 0 à 9.
Feito isso, é só identificar os bits de cada segmento à ser aceso.
Tendo os bits, é só converter de binário pra decimal pra saber o valor do byte correspondente que você precisa enviar.

Por exemplo, para visualizar o dígito 7, você precisa acender os segmentos A, B e C.

Pela sua tabela podemos mapear os bits da seguinte forma:

BIT:         7 6 5 4 3 2 1 0
SEGMENTO:    - E G F A B C D
DÍGITO 7:    0 0 0 0 1 1 1 0    [1 para aceso e 0 para apagado]

Os bits para acender o dígito 7 são 1110, que em decimal equivale à 14, logo, você precisa enviar um byte de valor 14.

Seguindo essa lógica, você chega na tabelinha abaixo:

+--------+----------------+-----------+-------+
| DÍGITO |    SEGMENTOS   |   BITS    | BYTE  |
|        |                | -EGFABCD  |       |
|   0    |   a,b,c,d,e,f  | 01011111  |   95  |
|   1    |           b,c  | 00000110  |    6  |
|   2    |     a,b,d,e,g  | 01101101  |  109  |
|   3    |     a,b,c,d,g  | 00101111  |   47  |
|   4    |     b,c,d,f,g  | 00110111  |   55  |
|   5    |     a,c,d,f,g  | 00111011  |   59  |
|   6    |   a,c,d,e,f,g  | 01111011  |   27  |
|   7    |         a,b,c  | 00001110  |   14  |
|   8    | a,b,c,d,e,f,g  | 01111111  |  127  |
|   9    |   a,b,c,d,f,g  | 00111111  |   63  |
+--------+----------------+-----------+-------+
M

olá, obrigado pela resposta! consegui entender essa parte.
acha que consegue me dar uma ajuda a entender essa aqui? acredito que apenas enviando o byte do digito ele ainda não apareça no painel, acha que preciso de alguma forma definir a posição que eu quero que o digito apareça?

staroski

Pelo enunciado que você postou, você sempre precisa enviar um pacote de 10 bytes para acionar os seus displays.

Criado 26 de agosto de 2020
Ultima resposta 27 de ago. de 2020
Respostas 3
Participantes 2