,
Je dois lire des données depuis un port série USB dans un programme C. Quand j'utilise gtkterm, il fonctionne parfaitement, mais avec n'importe quel autre logiciel (minicom, hexdump, cat ou même mon propre logiciel) pas moyen de lui faire cracher des données .
Je possède un autre adaptateur série/USB qui lui, fonctionne très bien, mais voilà, j'ai besoin que les deux marche en même temps...
Avec :
j'obtiens :
Code : Sélectionner tout - Visualiser dans une fenêtre à part stty -F/dev/ttyUSB1 -a
La seule configuration que je fasse avant d'utiliser par exemple hexdump est :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 speed 19200 baud; rows 0; columns 0; line = 0; intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^A; eol = <undef>; eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V; flush = ^O; min = 1; time = 0; -parenb -parodd cs8 hupcl -cstopb cread clocal -crtscts -ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr -icrnl -ixon -ixoff -iuclc -ixany -imaxbel -iutf8 -opost -olcuc -ocrnl -onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0 isig -icanon iexten -echo -echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke
Auriez-vous une piste pour m'aider à trouver d'où vient le problème ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part stty -F /det/ttyUSB1 19200
Le programme sur lequel je travaille doit lire depuis un port série (port1) des données (à 19200), les écrire dans un autre port série (port2) et rediriger les données envoyées par port2 vers la sortie standard. Il doit me servir uniquement à me faciliter le développement sur un boîtier embarqué et n'a donc pas besoin d'être propre ou efficient .
Voilà son source (code C) :
Je suis en train de me dire que je vais finir par aller voir dans le code source de gtkterm, alors s'il vous plaît, aidez-moi avant que je ne mette à exécution cette idée quasi suicidaire...
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
39
40
41
42
43
44
45
46
47
48 /** * \file tube.c * \date 15 déc. 2009 * \author nicolas * Redirige la sortie du port série tachy vers l'entrée du port série boîtier * et affiche la sortie du port série boîtier. */ #include <stdlib.h> #include <stdio.h> #include <unistd.h> #include <pthread.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #define BUF_SIZE 64 void *affichage(void *data) { int fd = *((int *)data); int lus; char buffer[BUF_SIZE]; while (1) { lus = read(fd, buffer, BUF_SIZE); if (lus > 0) write(1, buffer, lus); } return NULL; } int main(void) { char buffer[BUF_SIZE]; int tachy = open("/dev/ttyUSB1", O_RDONLY); int boitier = open("/dev/ttyUSB0", O_RDWR); int lus; pthread_t thread_affichage; pthread_create(&thread_affichage, NULL, affichage, &boitier); while (1) { lus = read(tachy, buffer, BUF_SIZE); if (lus > 0) write(boitier, buffer, lus); write(2, buffer, BUF_SIZE); } return EXIT_SUCCESS; }
Partager