@@ -1,7 +1,7 | |||
|
1 | 1 | # -*- Autoconf -*- |
|
2 | 2 | # Process this file with autoconf to produce a configure script. |
|
3 | 3 | AC_PREREQ([2.67]) |
|
4 |
AC_INIT([librs232],[ |
|
|
4 | AC_INIT([librs232],[2.0.0],[alexis.jeandet@lpp.polytechnique.fr],[rs232],[http://www.lpp.fr]) | |
|
5 | 5 | AM_INIT_AUTOMAKE([1.10 -Wall foreign]) |
|
6 | 6 | AC_CONFIG_MACRO_DIR([m4]) |
|
7 | 7 | # Checks for programs. |
@@ -18,10 +18,10 AM_PROG_LIBTOOL | |||
|
18 | 18 | # Checks for libraries. |
|
19 | 19 | |
|
20 | 20 | # Checks for header files. |
|
21 | AC_CHECK_HEADERS([stdio.h string.h fcntl.h errno.h unistd.h termios.h windows.h]) | |
|
21 | AC_CHECK_HEADERS([stdio.h string.h fcntl.h errno.h unistd.h termios.h termio.h windows.h]) | |
|
22 | 22 | |
|
23 |
AC_SUBST([RS232_SO_VERSION], [ |
|
|
24 |
AC_SUBST([RS232_API_VERSION], [ |
|
|
23 | AC_SUBST([RS232_SO_VERSION], [2:0:0]) | |
|
24 | AC_SUBST([RS232_API_VERSION], [2.0]) | |
|
25 | 25 | # Checks for typedefs, structures, and compiler characteristics. |
|
26 | 26 | |
|
27 | 27 | # Checks for library functions. |
@@ -36,6 +36,12 rs232extern int rs232setparity(rs232port | |||
|
36 | 36 | rs232extern int rs232setnbstop(rs232port_t fd, rs232stop NbStop); |
|
37 | 37 | rs232extern int rs232setcsize(rs232port_t fd, int ChSize); |
|
38 | 38 | rs232extern int rs232setbaudrate(rs232port_t fd, int baudrate); |
|
39 | rs232extern int rs232setRTS(rs232port_t fd); | |
|
40 | rs232extern int rs232clearRTS(rs232port_t fd); | |
|
41 | rs232extern int rs232setDTR(rs232port_t fd); | |
|
42 | rs232extern int rs232clearDTR(rs232port_t fd); | |
|
43 | rs232extern int rs232saferead(rs232port_t fd,char* data,int count ); | |
|
44 | rs232extern int rs232safewrite(rs232port_t fd,char* data,int count); | |
|
39 | 45 | |
|
40 | 46 | #endif |
|
41 | 47 |
@@ -7,6 +7,9 | |||
|
7 | 7 | #ifdef HAVE_TERMIOS_H |
|
8 | 8 | #include <termios.h> |
|
9 | 9 | #endif |
|
10 | #ifdef HAVE_TERMIO_H | |
|
11 | #include <termio.h> | |
|
12 | #endif | |
|
10 | 13 | #include "RS232.h" |
|
11 | 14 | |
|
12 | 15 | #ifdef HAVE_WINDOWS_H |
@@ -95,6 +98,8 int rs232setparity(rs232port_t fd, rs232 | |||
|
95 | 98 | { |
|
96 | 99 | struct termios terminos; |
|
97 | 100 | tcgetattr(fd, &terminos); |
|
101 | terminos.c_cflag &= ~PARENB; | |
|
102 | terminos.c_cflag &= ~PARODD; | |
|
98 | 103 | switch(Parity) |
|
99 | 104 | { |
|
100 | 105 | case rs232parityNo: |
@@ -152,6 +157,7 int rs232setcsize(rs232port_t fd, int Ch | |||
|
152 | 157 | { |
|
153 | 158 | struct termios terminos; |
|
154 | 159 | tcgetattr(fd, &terminos); |
|
160 | terminos.c_cflag &= ~CSIZE; | |
|
155 | 161 | switch(ChSize) |
|
156 | 162 | { |
|
157 | 163 | case 5: |
@@ -240,21 +246,25 int rs232cfparity(int fd, struct termios | |||
|
240 | 246 | } |
|
241 | 247 | else |
|
242 | 248 | { |
|
249 | terminos->c_cflag &= ~PARENB; | |
|
250 | terminos->c_cflag &= ~PARODD; | |
|
243 | 251 | switch(Parity) |
|
244 | 252 | { |
|
245 | 253 | case rs232parityNo: |
|
246 |
terminos->c_cflag &= |
|
|
254 | terminos->c_cflag &= ~PARENB; | |
|
255 | terminos->c_cflag &= ~PARODD; | |
|
247 | 256 | break; |
|
248 | 257 | case rs232parityOdd: |
|
249 |
terminos->c_cflag |
|
|
250 |
terminos->c_cflag |= P |
|
|
258 | terminos->c_cflag |= PARENB; | |
|
259 | terminos->c_cflag |= PARODD; | |
|
251 | 260 | break; |
|
252 | 261 | case rs232parityEven: |
|
253 |
terminos->c_cflag |
|
|
254 |
terminos->c_cflag |
|
|
262 | terminos->c_cflag |= PARENB; | |
|
263 | terminos->c_cflag &= ~PARODD; | |
|
255 | 264 | break; |
|
256 | 265 | default: |
|
257 | 266 | terminos->c_cflag &= ~PARENB; |
|
267 | terminos->c_cflag &= ~PARODD; | |
|
258 | 268 | break; |
|
259 | 269 | } |
|
260 | 270 | return 0; |
@@ -291,6 +301,7 int rs232cfcsize(int fd, struct termios | |||
|
291 | 301 | } |
|
292 | 302 | else |
|
293 | 303 | { |
|
304 | terminos->c_cflag &= ~CSIZE; | |
|
294 | 305 | switch(ChSize) |
|
295 | 306 | { |
|
296 | 307 | case 5: |
@@ -338,6 +349,90 int rs232read(rs232port_t fd,char *psRea | |||
|
338 | 349 | |
|
339 | 350 | } |
|
340 | 351 | |
|
352 | ||
|
353 | int rs232setRTS(rs232port_t fd) | |
|
354 | { | |
|
355 | int status; | |
|
356 | ioctl(fd, TIOCMGET, &status); | |
|
357 | status &= ~TIOCM_RTS; | |
|
358 | if (ioctl(fd, TIOCMSET, &status)) | |
|
359 | { | |
|
360 | return -1; | |
|
361 | } | |
|
362 | return 0; | |
|
363 | } | |
|
364 | ||
|
365 | int rs232clearRTS(rs232port_t fd) | |
|
366 | { | |
|
367 | int status; | |
|
368 | ioctl(fd, TIOCMGET, &status); | |
|
369 | status |= TIOCM_RTS; | |
|
370 | if (ioctl(fd, TIOCMSET, &status)) | |
|
371 | { | |
|
372 | return -1; | |
|
373 | } | |
|
374 | return 0; | |
|
375 | } | |
|
376 | ||
|
377 | int rs232setDTR(rs232port_t fd) | |
|
378 | { | |
|
379 | int status; | |
|
380 | ioctl(fd, TIOCMGET, &status); | |
|
381 | status &= ~TIOCM_DTR; | |
|
382 | if (ioctl(fd, TIOCMSET, &status)) | |
|
383 | { | |
|
384 | return -1; | |
|
385 | } | |
|
386 | return 0; | |
|
387 | } | |
|
388 | ||
|
389 | ||
|
390 | int rs232clearDTR(rs232port_t fd) | |
|
391 | { | |
|
392 | int status; | |
|
393 | ioctl(fd, TIOCMGET, &status); | |
|
394 | status |= TIOCM_DTR; | |
|
395 | if (ioctl(fd, TIOCMSET, &status)) | |
|
396 | { | |
|
397 | return -1; | |
|
398 | } | |
|
399 | return 0; | |
|
400 | } | |
|
401 | ||
|
402 | ||
|
403 | ||
|
404 | int rs232saferead(rs232port_t fd,char* data,int count ) | |
|
405 | { | |
|
406 | int read=0; | |
|
407 | int i=0; | |
|
408 | for(i=0;i<100;i++) | |
|
409 | { | |
|
410 | read = rs232read(fd,data,count); | |
|
411 | count -=read; | |
|
412 | data+=read; | |
|
413 | if(count==0) | |
|
414 | return 0; | |
|
415 | } | |
|
416 | return -1; | |
|
417 | } | |
|
418 | ||
|
419 | ||
|
420 | ||
|
421 | int rs232safewrite(rs232port_t fd,char* data,int count) | |
|
422 | { | |
|
423 | int written=0; | |
|
424 | int i=0; | |
|
425 | for(i=0;i<1000;i++) | |
|
426 | { | |
|
427 | written = rs232write(fd,data+written,count); | |
|
428 | count-=written; | |
|
429 | data+=written; | |
|
430 | if(count==0) | |
|
431 | return 0; | |
|
432 | } | |
|
433 | return -1; | |
|
434 | } | |
|
435 | ||
|
341 | 436 | #endif |
|
342 | 437 | #endif //#ifdef HAVE_TERMIOS_H |
|
343 | 438 |
@@ -220,4 +220,68 int rs232read(rs232port_t fd,char *psRea | |||
|
220 | 220 | } |
|
221 | 221 | |
|
222 | 222 | |
|
223 | int rs232saferead(rs232port_t fd,char* data,int count ) | |
|
224 | { | |
|
225 | int read=0; | |
|
226 | int i=0; | |
|
227 | for(i=0;i<100;i++) | |
|
228 | { | |
|
229 | read = rs232read(fd,data,count); | |
|
230 | count -=read; | |
|
231 | data+=read; | |
|
232 | if(count==0) | |
|
233 | return 0; | |
|
234 | } | |
|
235 | return -1; | |
|
236 | } | |
|
237 | ||
|
238 | ||
|
239 | ||
|
240 | int rs232safewrite(rs232port_t fd,char* data,int count) | |
|
241 | { | |
|
242 | int written=0; | |
|
243 | int i=0; | |
|
244 | for(i=0;i<1000;i++) | |
|
245 | { | |
|
246 | written = rs232write(fd,data+written,count); | |
|
247 | count-=written; | |
|
248 | data+=written; | |
|
249 | if(count==0) | |
|
250 | return 0; | |
|
251 | } | |
|
252 | return -1; | |
|
253 | } | |
|
254 | ||
|
255 | ||
|
256 | int rs232setRTS(rs232port_t fd) | |
|
257 | { | |
|
258 | if(EscapeCommFunction(fd, SETRTS)) | |
|
259 | return 0; | |
|
260 | return -1; | |
|
261 | } | |
|
262 | ||
|
263 | int rs232clearRTS(rs232port_t fd) | |
|
264 | { | |
|
265 | if(EscapeCommFunction(fd, CLRRTS)) | |
|
266 | return 0; | |
|
267 | return -1; | |
|
268 | } | |
|
269 | ||
|
270 | int rs232setDTR(rs232port_t fd) | |
|
271 | { | |
|
272 | if(EscapeCommFunction(fd, SETDTR)) | |
|
273 | return 0; | |
|
274 | return -1; | |
|
275 | } | |
|
276 | ||
|
277 | ||
|
278 | int rs232clearDTR(rs232port_t fd) | |
|
279 | { | |
|
280 | if(EscapeCommFunction(fd, CLRDTR)) | |
|
281 | return 0; | |
|
282 | return -1; | |
|
283 | } | |
|
284 | ||
|
285 | ||
|
286 | ||
|
223 | 287 | #endif //#ifdef HAVE_WINDOWS_H |
General Comments 0
You need to be logged in to leave comments.
Login now