El mismo comando serial, diferentes respuestas seriales

0

Tengo un dispositivo (un contador de tráfico) que se comunica con mi computadora a través del puerto serie.

Para extraer datos de este dispositivo, uso un software específico. También estoy usando un monitor de puerto serie para verificar qué está escrito en el puerto serie y cuál es la respuesta en serie.

Por ejemplo, si en el software provisto con el contador, hago clic en "obtener información sobre el consumo de energía", mi monitor de serie captura el siguiente resultado:

[30/08/2018 18:29:28] Written data (COM4) 
    3f                                                ?                
[30/08/2018 18:29:28] Read data (COM4) 
    3f 20 33 63 20 28 30 38 3a 33 35 20 30 39 2d 30   ? 3c (08:35 09-0 
    37 2d 32 30 31 38 20 29 20 2b 28 4d 3d 35 2e 36   7-2018 ) +(M=5.6 
    38 56 2c 20 52 3d 35 2e 33 37 56 29 0d 0a 35 62   8V, R=5.37V)..5b 
    ...

Luego, si envío solo el mismo comando de serie (para que ? o 3f en hexadecimal), obtengo el mismo resultado exacto. Genial

Ahora trato de extraer los datos almacenados. Así que hago clic en "extraer los datos almacenados" y mi monitor de serie captura el siguiente resultado:

[30/08/2018 18:42:46] Written data (COM4) 
    72 30 35 64                                       r05d             
[30/08/2018 18:42:46] Read data (COM4) 
    64 20 02 f4 01 b8 5f aa 81 00 ca 39 2b 4b b8 28   d .ô.¸_ª.Ê9+K¸( 
    dc 98 77 2c 59 ad 19 f6 5b 34 9c c7 31 5e 1f 1e   ܘw,Y­.ö[4œÇ1^.. 
    68 5f c8 8e 7b 32 4f ed 10 60 51 d2 a1 5b 33 62   h_ÈŽ{2Oí.'QÒ¡[3b 
    ...

Pero esta vez, si envío el mismo comando serial, ¡el resultado es totalmente diferente!

[30/08/2018 18:41:01] Written data (COM4) 
    72 30 35 64                                       r05d             
[30/08/2018 18:41:01] Read data (COM4) 
    72 20 30 35                                       r 05      

¿Por qué el mismo comando serial me da dos respuestas diferentes?

Si puedo obtener la misma respuesta, será fácil recrear el archivo creado por el software ... pero necesito la misma respuesta.

    
pregunta obchardon

1 respuesta

1

Una interfaz en serie, incluso una estándar como RS232, no aplica nada sobre el protocolo de aplicación (comandos disponibles y su sintaxis) de un dispositivo. Que puede tener todo tipo de casos especiales y comandos que cambian la configuración o la forma en que funcionan otros comandos, limitados únicamente por la creatividad y / o el masoquismo del ingeniero que lo diseñó. Es por esto que el mismo comando puede darte resultados diferentes. A veces, los comandos necesitan otros comandos o condiciones para proporcionar los resultados que está buscando.

Como una metáfora, en un indicador de comando en su PC, escribir ls le dará un resultado diferente si emite un comando cd para cambiar el directorio intermedio. Esta es una ilustración de cómo un comando puede tener un efecto secundario en la salida de otros comandos.

En este caso particular, hay algo que la aplicación o el dispositivo está haciendo que proporciona datos válidos en un caso pero no en el otro. O algo que le falta en la captura, o incluso algo que le hace físicamente al dispositivo (por ejemplo, ciclo de energía o presión de botón) que no tuvo en cuenta.

Ese ser, esto es simplemente la "alegría" de la ingeniería inversa, descubrir todos los pequeños detalles y efectos secundarios. Es imposible que alguien le brinde más información sin proporcionarle más información sobre el dispositivo, pero incluso así lo único que podemos hacer es adivinar a menos que pueda encontrar documentación de comandos o una especificación de protocolo para este dispositivo. A veces, esto se proporciona en una hoja de datos o manual, incluso si el software propietario también está disponible, por lo que vale la pena comprobarlo.

    
respondido por el crasic

Lea otras preguntas en las etiquetas