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)
|
||||
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,
|
||||
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;
|
||||
}
|
||||
/* -------------------------------------------------------------------- */
|
||||
/* 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. */
|
||||
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