le bar est ouvert

This commit is contained in:
Tonton Th 2018-12-14 18:52:06 +01:00
parent aba734c095
commit c391b6b079
3 changed files with 52 additions and 1 deletions

View File

@ -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.

View File

@ -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;
}
/* -------------------------------------------------------------------- */

View File

@ -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);