Um dos elementos apresentados foi uma "janela" chamada "Frames". Mas o que é um frame? Este conceito é muito usado na área de comunicação de dados, neste caso específico de comunicação via porta serial. Um frame é um conjunto de dados com início e fim bem definidos.
Por exemplo em comunicação de dados via porta serial frames são delimitados por caracteres de controle como STX e ETX.
Um dos principais recursos do SerialWizard é ser capaz de carregar um arquivo com a definição de um frame e, a medida que os dados são recebidos e/ou enviados, separar os diversos elementos (fields) deste frame.
Este arquivo (XML) possui a seguinte sintaxe:
Created with colorer-take5 library. Type 'xml'Neste exemplo definimos um "frame" com o seguinte formato:
<?xml version="1.0" encoding="ISO-8859-1"?>
<protocol>
<frame>
<stx />
<len length='2' encoding='int/hex-string'/>
<payload length='[len]'>
<signature length='4' /> <!-- <signature value='xxx' /> not supported -->
<command length='3' mapping='commands'/>
<status length='1' mapping='status'/>
<data />
</payload>
<etx/>
<lrc length='1' />
</frame>
<commands>
<item value='001' description='Command 1' />
<item value='002' description='Command 2' />
</commands>
<status>
<item value='004' description='status 004' />
<item value='008' description='status 008' />
</status>
</protocol>
- Primeiro campo é o caracter de controle STX
- O segundo campo (Len) possui 2 bytes de tamanho e representa um número inteiro em uma string hexadecimal (por exemplo "12" ou 18 em decimal).
- O próximo campo (payload) possui len bytes de tamanho (ou seja, se o valor do campo len for "15" (em hexa) então este campo possui 21 bytes) e possi os seguintes subcampos:
- signature, com 4 bytes
- command, com 3 bytes
- status, com 1 byte
- e data com len - 4 - 3- 1 bytes.
- Caracter de controle ETX
- LRC com 1 byte.
Abaixo apresentamos a janela principal do programa após a carga de dados formatados segundo o frame acima:
Observe que a janela "frames" foi populada com a estrutura exata do frame. Além disso podemos selecionar os dados relativos ao campo do frame clicando no respectivo checkbox na janela frames (observe o campo data).
No próximo post farei uma breve explicação sobre os elementos que definem um frame.
Abraços.
Adriano
[+/-] mostrar/esconder este post