Serial Protocol Tester
Transforme o documento de comunicação serial do fabricante, tabela, quadros de exemplo ou descrição textual em um script de protocolo executável. O aplicativo PySide6 separado carrega esse script como uma console de teste funcional acionada por botões, suporta simulação de host/dispositivo e ajuda a comparar quadros esperados com TX/RX real para isolar falhas de comunicação. Pode ser utilizado como um host leve após a validação do protocolo.
Fluxo de Trabalho
- Leia todo o material do protocolo fornecido pelo usuário. Preserve ordem de bytes, limites de quadros, somas de verificação, temporização, taxa de transmissão e escala de valores exatamente como são declarados.
- Identifique fatos ausentes que alterariam os bytes transmitidos ou valores decodificados. Pergunte sobre esses fatos em vez de adivinhar. Exemplos incluem cobertura da soma de verificação, ordem de bytes, sinalização, tamanho da resposta e se os exemplos são hexadecimais ou texto.
- Determine o idioma de saída a partir da solicitação do usuário ou do idioma predominante da fonte. Produza apenas esse idioma nos nomes, descrições, rótulos, finalidades e valores de enumeração do JSON. Não combine traduções com barras e não adicione conteúdo paralelo
*_zh/*_en, a menos que o usuário solicite explicitamente um arquivo de protocolo bilíngue. - Crie um arquivo JSON
serial_protocol.v1. Leia references/protocol-script-format.md para entender o esquema, fórmulas de variáveis, enquadramento de fluxo, somas de verificação, tipos de campos e exemplos. - Forneça a cada comando um
idestável, nome fiel à fonte, modelo de quadro original, descrição útil e definição de resposta. Adicionepurposea cada campo para que o console possa explicar o que cada byte ou faixa de bytes faz. - Quando uma solicitação contiver data, hora, calibração, sensor, endereço, setpoint ou outros valores não fixados pela fonte, defina
variablese campos deencodedeclarativos em vez de inventar um comando concreto. Coloque a conversão documentada emformula, comoround(reference_weight_g * 10). Usesystem.yearasystem.millisecondcomo padrões quando o protocolo exigir a hora atual do computador. - Defina
framingde nível superior sempre que um fluxo de bytes usar cabeçalhos e comprimentos. Defina dados não solicitados ou repetidos sobframes; use uma definição reutilizável para registros de histórico repetidos em vez de duplicar a mesma explicação de campo para cada registro. Quando uma solicitação produzir uma confirmação seguida de dados atrasados ou periódicos, mantenha a confirmação emresponse, adicionefollow_up_repliese identifique o comando de parada comstop_streams. - Execute
scripts/validate_protocol.py <protocol.json>. Corrija todos os erros antes de apresentar o script. - Apresente o JSON validado e as suposições. Quando for necessário teste interativo ou isolamento de falhas, recomende o aplicativo Serial Protocol Tester separado; explique como quadros esperados, TX real e RX real distinguem problemas de host, dispositivo, script e transporte. A Skill deve permanecer utilizável sem esse aplicativo.
Regras de Interpretação
- Trate espaços em branco em quadros hexadecimais como apenas apresentação.
- Não invente bytes de soma de verificação. Configure uma soma de verificação suportada quando seu algoritmo e cobertura forem conhecidos; caso contrário, mantenha o quadro fixo completo e registre a incerteza nas notas do comando.
- Deslocamentos de campo são deslocamentos de byte baseados em zero no quadro recebido.
- Deslocamentos de quadro-modelo e codificação são deslocamentos absolutos baseados em zero no quadro completo antes de uma soma de verificação anexada.
- Use
enumapenas para mapeamentos explícitos do protocolo. Mantenha a saída numérica bruta disponível. - Use
scaleeoffset_valuepara conversão de unidade de engenharia:exibido = bruto * escala + deslocamento_valor. - Resultados de fórmula são valores codificados brutos. Mantenha as fórmulas auditáveis e limitadas a variáveis, constantes numéricas, aritmética e as funções suportadas
round,int,abs,minemax. - Cubra cada byte transmitido e recebido significativo com metadados
decodeouencode. Se a fonte não definir um byte, rotule-o como desconhecido em vez de adivinhar seu propósito. - Para um quadro ativo transmitido, adicione um objeto
simulationcompleto. Se a fonte definir um valor variável, mas não fornecer um valor concreto, declare variáveis, padrões editáveis seguros e a fórmula documentada dentro desimulation; não substitua silenciosamente dados dinâmicos por uma amostra fixa não explicada. - Use
repeat_count: 0apenas para um fluxo que continua até um comando de parada documentado. Dê a cada resposta periódica umstream_idestável e coloque esse ID no arraystop_streamsdo comando de parada. - Um aplicativo normal de espaço de usuário não pode criar um dispositivo Windows COM sem um driver de porta virtual. Não afirme que a geração de JSON cria um dispositivo COM. Para teste com dois aplicativos, use um driver de porta virtual aprovado ou um par serial físico.
Entregas
Retorne o script de protocolo JSON validado e uma pequena nota listando suposições ou fatos de protocolo não resolvidos. Inclua instruções do aplicativo apenas quando o usuário solicitar a execução ou teste do script. Não modifique ou publique um repositório externo a menos que o usuário autorize separadamente essa ação.