Browse Source

le bar est ouvert

tth 1 year ago
parent
commit
c391b6b079
3 changed files with 52 additions and 1 deletions
  1. 13
    1
      serial/README.md
  2. 37
    0
      serial/serial.c
  3. 2
    0
      serial/serial.h

+ 13
- 1
serial/README.md View File

@@ -6,10 +6,22 @@ de contrôle du phytotron.
6 6
 
7 7
 Ayant déja pratiqué ce genre de chose (recevoir des données par rs232)
8 8
 pour un déja ancien
9
-[projet](http://art.dinorama.fr/bdf/)
9
+[projet artsitique](http://art.dinorama.fr/bdf/) conçu par et
10 10
 avec _MadPhoenix_, je me propose de reprendre quelques parties de ce code,
11 11
 de le remettre au gout du jour et de le tester dès que possible.
12 12
 
13
+## principe général
14
+
15
+Pour écouter plusieurs lignes simultanément, chaque port sera traité
16
+par un _thread_ séparé, et les diverses données reçues seront pré-traitées
17
+par celui-ci. Les flux de données seront alors agrégées par
18
+le célèbre *synthétiseur d'évènement* mis au point il y a très longtemps
19
+par le professeur Cispeo.
20
+
21
+
22
+
23
+
24
+
13 25
 
14 26
 
15 27
 

+ 37
- 0
serial/serial.c View File

@@ -170,3 +170,40 @@ switch (retval) {
170 170
 return byte;
171 171
 }
172 172
 /* -------------------------------------------------------------------- */
173
+/* timeout is in milliseconds */
174
+
175
+int getline_to(int fd, char *where, int szm, int to_ms)
176
+{
177
+int	curpos, byte, retval;
178
+
179
+curpos = 0;
180
+retval = -7;					/* magic number powa */
181
+where[0] = '\0';				/* erase all the bs  */
182
+
183
+for(;;)	{
184
+	byte = getbyte_to (fd, to_ms);
185
+
186
+	if (byte < 0) {
187
+		fprintf(stderr, "%s : somthing is wrong %d\n", 
188
+				__func__, byte);
189
+		retval = byte;
190
+		break;
191
+		}
192
+
193
+	if ('\n' == byte) {			/* got an EOL ? */
194
+		where[curpos] = '\0';
195
+		retval = curpos;
196
+		}
197
+
198
+	
199
+
200
+
201
+	}
202
+
203
+fprintf(stderr, "%s -> '%s'\n", __func__, where);
204
+
205
+
206
+return -666;
207
+}
208
+/* -------------------------------------------------------------------- */
209
+

+ 2
- 0
serial/serial.h View File

@@ -12,4 +12,6 @@ int getbyte(int fd);
12 12
 /* timeout is exprimed in milliseconds. */
13 13
 int getbyte_to (int fd, int to_ms);
14 14
 
15
+int getline_to(int fd, char *where, int szm, int to_ms);
16
+
15 17
 

Loading…
Cancel
Save