Я получил устройство ИБП APC SMC1000, которое я хочу использовать для питания приложения на основе микроконтроллера и выполнения некоторых задач перед выключением. ИБП имеет как последовательный, так и USB-порт, но протокол последовательного порта, похоже, не документирован. Поскольку USB-хоста нет на канале uC, я хочу общаться с ним через последовательный порт.
После некоторого возни с использованием скрипта Python ИБП начинает говорить, и я могу определить некоторую информацию. Тем не менее, в конечном итоге, кажется, что ожидается сообщение, прежде чем продолжить, поэтому я хочу выяснить, как это сделать.
ИБП всегда отправляет 19-байтовые сообщения, где первый байт является идентификатором, затем 16-байтовыеданных, а затем предположительно 2 байта некоторой неизвестной контрольной суммы или контрольной суммы.
[ Msg ID | 16 byte data | 2 byte checksum? ]
Как получить тип контрольной суммы CRC или контрольной суммы? Я уже попробовал несколько схем и в конце концов использовал месть без удачи для следующих сообщений с идентификатором 7f:
0x7f 0000000019c90013004e000001790000 3190
0x7f 0000000019ca0013004e000001790000 259b
0x7f 0000000019cb0013004e000001790000 19a6
0x7f 0000000019cc0013004e000001790000 0db1
0x7f 0000000019cd0013004e000001790000 01bc
0x7f 0000000019ce0013004e000001790000 f4c7
0x7f 0000000019cf0013004e000001790000 e8d2
0x7f 0000000019d00013004e000001790000 dcdd
0x7f 0000000019d10013004e000001790000 d0e8
0x7f 0000000019d20013004e000001790000 c4f3
0x7f 0000000019d30013004e000001790000 b8fe
0x7f 0000000019d40013004e000001790000 ac0e
0x7f 0000000019d50013004e000001790000 a015
0x7f 000000001c67001500530000017c0000 5eb8
Буду признателен за любые полезные мысли!