Bonjour à tous,
je me permets de vous solliciter suite à une incompréhension dans le bout de code que j'ai fait. En effet quand je compile et exécute mon code je trouve un résultat incohérent
J'utilise une API/librairie MAVLINK (https://mavlink.io/en/mavgen_c/) disponible sur internet permettant de formatter des données.
https://github.com/mavlink/c_library...position_int.h pour la fonction : mavlink_msg_global_position_int_pack
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31 int main (int argc, char ** argv){ mavlink_message_t msg; int32_t lat = 10; int32_t longe = 11; int32_t alt = 12; int32_t relative_alt = 15; int16_t vx = 16; int16_t vy = 17; int16_t vz = 18; uint16_t hdg = 19; uint16_t size = 0; int i = 0; uint8_t buffer[280]; for(i=0;i<280 ; i++){ buffer[i] = 0; } mavlink_msg_global_position_int_pack(1, 2, &msg, 100, lat, longe, alt, relative_alt, vx, vy, vz, hdg); size = mavlink_msg_to_send_buffer(buffer, &msg); for(i=0;i<size ; i++){ printf("%i\n",buffer[i]); } printf("total size : %i\n",size); return 1; }
http://docs.ros.org/en/jade/api/mavl...8h_source.html ligne 157 pour la fonction : mavlink_msg_to_send_buffer
A la fin du formatage pour mois il me manque un octet de donnée (voir https://mavlink.io/en/guide/serialization.html pour formatage de la trame)
253 => ok 0xFD
27 => ok lenght
0 => inc flags
0 => ok cmp flags
0 => ok SEQ
1 => ok sys ID
2 => ok COM ID
33 => ok message 33 (fisrt byte)
0 => ok (second byte)
0 => ok (third byte)
100 => ok value of time boot ms (fisrt byte)
0 => ok value of time boot ms (second byte)
0 => ok value of time boot ms (third byte)
0 => ok value of time boot ms (fourth byte)
10 => ok value of lat parameter (fisrt byte)
0 => ok value of lat parameter (second byte)
0 => ok value of lat parameter (third byte)
0 => ok value of lat parameter (fourth byte)
11 => ok value of longe parameter (fisrt byte)
0 => ok value of longe parameter (second byte)
0 => ok value of longe parameter (third byte)
0 => ok value of longe parameter (fourth byte)
12 => ok value of alt parameter (fisrt byte)
0 => ok value of alt parameter (second byte)
0 => ok value of alt parameter (third byte)
0 => ok value of alt parameter (fourth byte)
15 => ok value of relative alt parameter (fisrt byte)
0 => ok value of relative alt parameter (second byte)
0 => ok value of relative alt parameter (third byte)
0 => ok value of relative alt parameter (fourth byte)
16 => ok value of vx parameter (fisrt byte)
0 => ok value of vx parameter(second byte)
17 => ok value of vy parameter (fisrt byte)
0 => ok value of vy parameter(second byte)
18 => ok value of vz parameter (fisrt byte)
0 => ok value of vz parameter(second byte)
19 => ok value of hdg parameter (fisrt byte) il n'y a pas le second byte, pour moi la valeur est codé sur 2 bytes, il devrait donc y avoir un zéro après le 19
198 => checksum (fisrt byte)
254 => checksum(second byte)
total size : 39
Merci beaucoup pour votre aide
Partager