24-03-2024, 07:09 PM
(24-03-2024, 04:54 PM)Tehani escribió: [ -> ]Para completar la tabla y estar completamente seguro, si ignoro los mensajes del AC12 y el emulate.js que vete tú a saber, me faltan capturas del modo NAV/TRACK y NO DRIFT del NAC-2, y NO DRIFT del TP22:
AUTO Mode ..0x14 0x00 0x80 0x00 / ..16,00,80,00 / 41,9f,64,0a,10,00,00,00 / 41,9f,ff,0a,10,00,80,00
VANE Mode ?..0x14 0x04 0x80 0x02 / ..06,04,00,00 / 41,9f,64,0a,00,04,00,04 / 41,9f,ff,0a,10,04,80,06
TRACK Mode ..0x54 0x00 0x80 0x00 / ..f0,00,80,00 ?? / 41,9f,ff,0a,14,00,80,00
NODRIFT M ..0x14 0x01 0x80 0x00 / ..16,01,00,00 ?? / ??
else // NFU (si ninguna de éstas)
Parece que voy descubriendo cosas:
Ese 14 que he marcado lo indica el piloto AP22 como transición por el modo AUTO antes de pasar al modo TRACK/NAV que es un 51 (más adelante en el fichero de la captura he podido ver ese nuevo cambio), lo cual coincide con el AC12 a la izquierda en la misma línea:
AC12: NAC-2 AP22
TRACK Mode ..0x54 0x00 0x80 0x00 / ..f0,00,80,00 / ?? / 41,9f,ff,0a,54,00,80,00
Entonces se puede ver que todos los modos automáticos tienen activado (a 1) el bit 4 de ese byte, y a 0 en STBY.
54 hexadecimal = 0101 0100 escrito en binario. El bit de la derecha es el bit número 0 (de menor peso). Ese bit en negrita es entonces el que indica "piloto engranado".
Me puedo saltar el paso previo de "engaged" o "not engaged". Basta con una sola decodificación cuando el byte anterior indica que es información de estado: 0a.
Ya casi pondría la mano en el fuego de que el NAC-2 (??) enviará lo mismo.
Así, el código en C que pegué al principio sigue vigente (de hecho el yanqui dijo que funciona), aunque puede simplificarse.
Nada nuevo. Este tipo de peleas ha sido habitual desde el principio de los tiempos de Ocenav tratando datos de Seatalk, nmea2000, AIS, otros pilotos y muchas más cosas.
Muchas veces, para escribir una sola línea de programa, han sido necesarias semanas de investigación y/o ingeniería inversa como esta.