Fonction screen /dev/ttyUSB0 en C sur LINUX
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 :
Code:
$ screen /dev/ttyUSB0
ou
J'aimerais pouvoir lire ses données avec un programme C. J'ai déjà commencé le programme par :
Code:
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);
}; |
Seulement, je n'arrive pas à écrire la fonction de lecture et d'affichage des données.
Pour info, les données à lire ressemblent à ça :
Code:
1 2 3 4
|
CHARS : 363764 SENTENCES : 0 CHECKSUM : 669
Heading : 52 Tilt : -48 Roll : -2
CHARS : ... ainsi de suite ... |
Merci beaucoup d'avance pour votre aide !!