Bonjour !
J'ai un module GPS qui envoie par protocole XBee sur une clé USB les coordonnées GPS.
Ses données se trouvent dans le fichier /dev/ttyUSB0 et j'arrive à les lire en utilisant le terminal :
ou
Code : Sélectionner tout - Visualiser dans une fenêtre à part $ screen /dev/ttyUSB0
J'aimerais pouvoir lire ses données avec un programme C. J'ai déjà commencé le programme par :
Code : Sélectionner tout - Visualiser dans une fenêtre à part $ cat /dev/ttyUSB0
Seulement, je n'arrive pas à écrire la fonction de lecture et d'affichage des données.
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
32
33
34
35
36
37
38 #include <stdio.h> #include <stdlib.h> #include <termios.h> #include <sys/fcntl.h> #include <unistd.h> #include "serial_port.h" void read_Serial_Port(const char* DEVICE_PORT) { int file; struct termios options; char data[60] = ""; unsigned int sizeMax = 60; file = open(DEVICE_PORT, O_RDONLY | O_NOCTTY | O_NDELAY); if(file == -1){ perror("Unable to open the serial port\n"); } printf("Serial port open successful\n"); tcgetattr(file, &options); cfsetispeed(&options, B9600); cfsetospeed(&options, B9600); options.c_cflag |= (CLOCAL | CREAD); options.c_cflag |= PARENB; //No parity options.c_cflag |= PARODD; options.c_cflag &= ~CSTOPB; options.c_cflag &= ~CSIZE; options.c_cflag |= CS8; //8 bits options.c_iflag |= (INPCK | ISTRIP); tcsetattr(file, TCSANOW, &options); fcntl(file, F_SETFL, FNDELAY); printf("Reading serial port ...\n\n"); ... close(file); };
Pour info, les données à lire ressemblent à ça :
Merci beaucoup d'avance pour votre aide !!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 CHARS : 363764 SENTENCES : 0 CHECKSUM : 669 Heading : 52 Tilt : -48 Roll : -2 CHARS : ... ainsi de suite ...
Partager