¿Cómo debería ser esta comunicación COM?

0

Estoy intentando volver a escribir una pequeña herramienta de utilidad para mi computadora Mio 105. Desafortunadamente, no hay ninguna API para hacer eso, así que lo único que queda es la ingeniería inversa. Así que configuré un sniffer USB y usé un software original para comunicarme con el dispositivo. Entonces logré escribir un fragmento de código que también podía comunicarse, el puerto se configuró correctamente, pero existe un problema sobre cómo funciona. Los datos blandos originales se transfieren en paquetes más grandes (hasta 4kB) pero en mi código tuve que leer un byte por uno. Entonces, aquí está la pregunta: ¿cómo lograr algo así como estos paquetes automáticamente?

Usé Serial Port Monitor para ver un puerto USB. Aquí hay un ejemplo de datos enviados: enlace Cuando abro manualmente el puerto con este programa puedo ver que RTS y DTR están activados. Enviar un código hexadecimal en particular da como resultado la misma respuesta del dispositivo como se dio anteriormente. ¿Es esta comunicación de alguna manera estandarizada o estos comandos de código hexadecimal son específicos para este dispositivo y necesito codificarlos dentro de mi programa?

    
pregunta moorzyn

1 respuesta

2

El protocolo de bajo nivel parece ser bastante sencillo.

Los mensajes del host siempre comienzan con 0x02 , seguido de dos bytes de longitud (big-endian, con mayor frecuencia 0x00 0x01 = 1). A esto le siguen longitud bytes de datos (algún tipo de byte de comando o dirección de registro, a veces con datos adicionales) y una suma de comprobación de un byte de algún tipo.

Las respuestas del dispositivo tienen una estructura similar. El primer byte es una repetición del byte de comando / dirección que envió el host, seguido de dos bytes de longitud, longitud bytes de datos y la suma de comprobación.

Más allá de eso, el significado de los campos de datos es probablemente completamente propietario. Claramente, a veces se trata de cadenas ASCII, pero muchos son datos binarios. Tendrá que pasar mucho tiempo correlacionando el contenido de los mensajes con lo que ve en la interfaz de usuario y cualquier otra cosa que pueda estar ocurriendo en el dispositivo en ese momento.

    
respondido por el Dave Tweed

Lea otras preguntas en las etiquetas