1. Contexto
No domínio da IoT e comunicação industrial, a depuração de protocolos binários representa um obstáculo significativo para a eficiência do desenvolvimento:
- A montagem manual de quadros hexadecimais é suscetível a erros
- O cálculo de CRC/verificação é trabalhoso
- Falta de mapeamento visual da estrutura do protocolo
- Dificuldade na transferência de conhecimento do protocolo dentro das equipes
O OptiByte Playground é um ambiente de depuração de protocolos baseado na web, projetado para resolver esses desafios.
2. Arquitetura Funcional
A arquitetura do Playground é modular, composta por um painel de configuração, visualizador hexadecimal, gerador de dados, motor de análise e um adaptador para canais de hardware (Serial, MQTT, TCP, UDP). O fluxo permite que uma instância de protocolo definida seja configurada, os dados sejam gerados ou analisados, e a comunicação ocorra através do canal de hardware selecionado via um agente de ponte WebSocket.
3. Funcionalidades Principais
3.1 Motor de Geração Binária
Tipos de dados suportados:
| Categoria | Tipos |
|---|---|
| Inteiros | u8, u16, u32, u64, i8, i16, i32, i64 |
| Ponto Flutuante | f32, f64 |
| Booleano | bool |
| Compostos | enum, struct, arrayFixo, arrayDinâmico |
| Restrições | subintervalo (limites de valor), sinalizadoresDeBits |
| Genéricos | parâmetroDeTipo |
Processo de Geração:
- Iterar pelos campos da estrutura do protocolo.
- Processar semanticamente: Campos Fixos → gravar valor constante, Campos de Checksum → reservar espaço para cálculo adiado, Campos Parâmetro → gerar de acordo com a configuração do usuário.
- Expandir recursivamente tipos aninhados (structs/arrays com profundidade arbitrária).
- Após todos os campos serem escritos, calcular o CRC/checksum de forma unificada.
- Retornar o resultado como um
Uint8Array.
Algoritmos de Verificação Entegrados:
CRC8, CRC8/MAXIM
CRC16: MODBUS, CCITT, IBM, MAXIM, USB, X25, XMODEM, DNP
CRC32
XOR-8, SUM-8, SUM-16, SUM-16/COMPLEMENTO
LRC, Fletcher-16, Adler-32
3.2 Motor de Análise
Ao receber uma string hexadecimal, o motor produz uma árvore de análise (ArvoreNoAnalise[]):
interface ArvoreNoAnalise {
chave: string; // Identificador único
rotulo: string; // Nome do campo
descricaoTipo: string; // Descrição do tipo
valorOriginal?: any; // Valor bruto
valorExibicao?: string | number | bigint;
deslocamento: number; // Offset em bytes
tamanhoEmBytes: number; // Espaço ocupado
aviso?: string; // Alerta de violação de intervalo
filhos?: ArvoreNoAnalise[];
}
Suporta mapeamento automático de enums, validação de subintervalos e expansão bit-a-bit de sinalizadores.
3.3 Configuração de Campos e Predefinições
Cada campo suporta dois modos de geração:
- Fixo: Especificar um valor exato manualmente.
- Aleatório: Gerar um valor dentro de um intervalo especificado.
O sistema de predefinições permite salvar, trocar, clonar e excluir múltiplos conjuntos de configuração. Os dados das predefinições são salvos de forma assíncrona no backend através de uma fila de sincronização.
3.4 Ligação Request/Response
Visuailzação de duas colinas com captura de ida e volta:
- Gerar e enviar o quadro na coluna de Request.
- O sistema aguarda automaticamente a Response (com tempo limite configurável).
- Ao receber a resposta, ela é automaticamente inserida na coluna de Response e analisada.
- Sugestões de diagnóstico são exibidas em caso de tempo limite.
3.5 Canais de Hardware
Conexão com hardware através do EdgaAgent (proxy WebSocket):
| Fornecedor | Protocolo | Descrição |
|---|---|---|
| FornecedorSerial | RS-232/485/UART | Recurso físico exclusivo |
| FornecedorMqtt | MQTT 3.1.1/5.0 | Recurso lógico exclusivo |
| FornecedorTcp | TCP | Servidor/Cliente |
| FornecedorUdp | UDP | Sem conexão |
3.6 Suíte de Testes
- Gravação/Reprodução: Registrar sequências completas de quadros de comunicação, com suporte a importação e exportação.
- Teste de Carga: Configurar número de envios e intervalo, com estatísticas de taxa de resposta em tempo real.
3.7 Publicação Pública
É possível publicar um snapshot do Playground como um link público. Os visitantes podem:
- Gerar e analisar dados (modo somente leitura ou editável).
- Forkar o conteúdo para seu próprio projeto para continuar o desenvolvimento.
4. Como Utilizar
- Crie uma conta na plataforma OptiByte.
- Crie um projeto e defina a estrutura do protocolo no editor.
- Clique em "Playground" para entrar no ambiente de depuração.
- Selecione uma instância de protocolo, configure os campos e execute a geração/análise.
A versão gratuita inclui todas as funcionalidades do Playground.