le bar est ouvert
This commit is contained in:
parent
aba734c095
commit
c391b6b079
@ -6,10 +6,22 @@ de contrôle du phytotron.
|
|||||||
|
|
||||||
Ayant déja pratiqué ce genre de chose (recevoir des données par rs232)
|
Ayant déja pratiqué ce genre de chose (recevoir des données par rs232)
|
||||||
pour un déja ancien
|
pour un déja ancien
|
||||||
[projet](http://art.dinorama.fr/bdf/)
|
[projet artsitique](http://art.dinorama.fr/bdf/) conçu par et
|
||||||
avec _MadPhoenix_, je me propose de reprendre quelques parties de ce code,
|
avec _MadPhoenix_, je me propose de reprendre quelques parties de ce code,
|
||||||
de le remettre au gout du jour et de le tester dès que possible.
|
de le remettre au gout du jour et de le tester dès que possible.
|
||||||
|
|
||||||
|
## principe général
|
||||||
|
|
||||||
|
Pour écouter plusieurs lignes simultanément, chaque port sera traité
|
||||||
|
par un _thread_ séparé, et les diverses données reçues seront pré-traitées
|
||||||
|
par celui-ci. Les flux de données seront alors agrégées par
|
||||||
|
le célèbre *synthétiseur d'évènement* mis au point il y a très longtemps
|
||||||
|
par le professeur Cispeo.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -170,3 +170,40 @@ switch (retval) {
|
|||||||
return byte;
|
return byte;
|
||||||
}
|
}
|
||||||
/* -------------------------------------------------------------------- */
|
/* -------------------------------------------------------------------- */
|
||||||
|
/* timeout is in milliseconds */
|
||||||
|
|
||||||
|
int getline_to(int fd, char *where, int szm, int to_ms)
|
||||||
|
{
|
||||||
|
int curpos, byte, retval;
|
||||||
|
|
||||||
|
curpos = 0;
|
||||||
|
retval = -7; /* magic number powa */
|
||||||
|
where[0] = '\0'; /* erase all the bs */
|
||||||
|
|
||||||
|
for(;;) {
|
||||||
|
byte = getbyte_to (fd, to_ms);
|
||||||
|
|
||||||
|
if (byte < 0) {
|
||||||
|
fprintf(stderr, "%s : somthing is wrong %d\n",
|
||||||
|
__func__, byte);
|
||||||
|
retval = byte;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ('\n' == byte) { /* got an EOL ? */
|
||||||
|
where[curpos] = '\0';
|
||||||
|
retval = curpos;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
fprintf(stderr, "%s -> '%s'\n", __func__, where);
|
||||||
|
|
||||||
|
|
||||||
|
return -666;
|
||||||
|
}
|
||||||
|
/* -------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
@ -12,4 +12,6 @@ int getbyte(int fd);
|
|||||||
/* timeout is exprimed in milliseconds. */
|
/* timeout is exprimed in milliseconds. */
|
||||||
int getbyte_to (int fd, int to_ms);
|
int getbyte_to (int fd, int to_ms);
|
||||||
|
|
||||||
|
int getline_to(int fd, char *where, int szm, int to_ms);
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user