В общем есть некий девайс в виде компаса направления собранный на mpu9250 и mega328p эта связка бросает в CAN шину свои данные через vp230.
Данные я эти считать могу, они в hex но как отделить зерна от плевел понять не могу..
Знаю точно что в сеть летят все данные по акселерометру отдельно, по магнитному отдельно, потом уже STM32 эти данные через CAN собирает и выдает истинный курс (ну или азимут, как удобней) при чем в самом потоке же этого азимута нет (предполагаю, что он как раз таки рассчитывается уже в самой ардуино на основе магнитных показателей..
пример данных снятых из шины CAN:
19A10045 8 0A 00 00 00 0A 00 00 00
19A10045 8 0A 00 00 00 0A 00 00 00
1DA18045 8 00 00 00 00 00 00 02 FF
1DA18045 8 26 00 11 00 CE 06 01 40
1DA18045 8 09 00 F3 FF F2 FE 03 FF
19A10045 8 0A 00 00 00 0A 00 00 00
1DA18045 8 CE 00 2A 00 35 02 04 43
19A10045 8 0A 00 00 00 0A 00 00 00
19A10045 8 0A 00 00 00 0A 00 00 00
1DA18045 8 01 00 00 00 00 00 02 3F
1DA18045 8 29 00 12 00 CE 06 01 40
1DA18045 8 21 00 C2 FF 4C FC 03 3F
1DA18045 8 D1 00 28 00 36 02 04 43
19A10045 8 0A 00 00 00 0A 00 00 00
19A10045 8 0A 00 00 00 0A 00 00 00
1DA18045 8 00 00 FE FF 00 00 02 40
1DA18045 8 29 00 0F 00 CE 06 01 40
1DA18045 8 1D 00 C3 FF 48 FC 03 40
19A10045 8 0A 00 00 00 0A 00 00 00
1DA18045 8 D6 00 26 00 35 02 04 43
19A10045 8 0A 00 00 00 0A 00 00 00
19A10045 8 0A 00 00 00 0A 00 00 00
1DA18045 8 02 00 00 00 00 00 02 40
1DA18045 8 2A 00 10 00 CE 06 01 40
1DA18045 8 1D 00 C2 FF 4D FC 03 40
1DA18045 8 CE 00 2D 00 34 02 04 43
19A10045 8 0A 00 00 00 0A 00 00 00
19A10045 8 0A 00 00 00 0A 00 00 00
1DA18045 8 00 00 00 00 00 00 02 40
1DA18045 8 2C 00 10 00 CE 06 01 40
1DA18045 8 24 00 C3 FF 4A FC 03 40
19A10045 8 0A 00 00 00 0A 00 00 00
1DA18045 8 D2 00 29 00 36 02 04 43
19A10045 8 0A 00 00 00 0A 00 00 00
19A10045 8 0A 00 00 00 0A 00 00 00
1DA18045 8 FD FF 00 00 01 00 02 40
1DA18045 8 2D 00 0E 00 CE 06 01 40
1DA18045 8 1C 00 C2 FF 45 FC 03 40
1DA18045 8 D3 00 29 00 36 02 04 43
19A10045 8 0A 00 00 00 0A 00 00 00
19A10045 8 0A 00 00 00 0A 00 00 00
1DA18045 8 02 00 00 00 00 00 02 40
1DA18045 8 2B 00 0D 00 CE 06 01 3F
1DA18045 8 17 00 C6 FF 4B FC 03 40
19A10045 8 0A 00 00 00 0A 00 00 00
1DA18045 8 D5 00 29 00 36 02 04 43
19A10045 8 0A 00 00 00 0A 00 00 00
19A10045 8 0A 00 00 00 0A 00 00 00
1DA18045 8 09 00 E2 FF FA FF 02 40
1DA18045 8 2E 00 FF FF CE 06 01 3C
1DA18045 8 F4 FF C8 FF 5E FC 03 40
1DA18045 8 DF 00 29 00 32 02 04 43
19A10045 8 0A 00 00 00 0A 00 00 00
19A10045 8 0A 00 00 00 0A 00 00 00
1DA18045 8 01 00 00 00 00 00 02 40
1DA18045 8 24 00 0C 00 CE 06 01 3F
1DA18045 8 05 00 C0 FF 48 FC 03 00
19A10045 8 0A 00 00 00 09 00 00 00
1DA18045 8 DE 00 2B 00 33 02 04 43
19A10045 8 09 00 00 00 09 00 00 00
19A10045 8 09 00 00 00 09 00 00 00
1DA18045 8 FE FF FE FF F8 FF 02 40
1DA18045 8 15 00 BD FF 3F FC 03 40
1DA18045 8 1B 00 09 00 CE 06 01 3F
1DA18045 8 DC 00 24 00 34 02 04 43
19A10045 8 09 00 00 00 09 00 00 00
19A10045 8 09 00 00 00 09 00 00 00
1DA18045 8 F8 FF FC FF EE FF 02 40
1DA18045 8 1A 00 CA FF 3D FC 03 40
1DA18045 8 18 00 06 00 CE 06 01 3E
19A10045 8 09 00 00 00 08 00 00 00
1DA18045 8 DC 00 20 00 38 02 04 43
19A10045 8 08 00 00 00 08 00 00 00
19A10045 8 08 00 00 00 09 00 00 00
если мои догадки верны (эмпирически вычислил по реакции на движения) ID 19A10045 - это данные акселерометра, а 1DA18045 - магнитные; как видим все значения здесь будут строго положительные, и если брать только 1 значение HEX - то максимальное значение DEC - 255, но девайс я вертел в разных направлениях - то есть значения обязаны быть и отрицательными в том числе. Если брать по 2 значения (как я это считал в других устройствах) то нам не хватает данных.... (всего передается 9 параметров по осям) В состоянии покоя акселерометр показывает 00.
В общем я уже всю голову сломал как пересчитывать, и видимо очень запутался....