# HG changeset patch # User yannic # Date 2011-10-05 12:14:24 # Node ID 8c2d8af9e068256d9e3d6999bebae13f84a7fcd4 # Parent eb1be01872c0d231aca9294ceff4d381d092200f Improved linux support diff --git a/src/Makefile.in b/src/Makefile.in --- a/src/Makefile.in +++ b/src/Makefile.in @@ -140,7 +140,6 @@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ -MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ @@ -168,7 +167,6 @@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ -ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ @@ -201,6 +199,7 @@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ +lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ diff --git a/src/RS232.h b/src/RS232.h --- a/src/RS232.h +++ b/src/RS232.h @@ -1,4 +1,7 @@ // SOPSUYSI_RS232.h + +#define debug + #include "rs232config.h" #ifdef HAVE_WINDOWS_H diff --git a/src/RS232_unix.c b/src/RS232_unix.c --- a/src/RS232_unix.c +++ b/src/RS232_unix.c @@ -18,6 +18,9 @@ rs232port_t rs232open(char* psPortName) { rs232port_t fd; fd = open(psPortName, O_RDWR | O_NOCTTY | O_NDELAY); + #ifdef debug + if(fd==-1)printf("can't open Port\n"); + #endif return fd; } @@ -51,7 +54,12 @@ int rs232setup(rs232port_t fd, int ChSiz rs232cfparity(fd, &terminos, Parity); rs232cfnbstop(fd, &terminos, NbStop); rs232cfcsize(fd, &terminos, ChSize); - tcsetattr(fd, TCSANOW, &terminos); + + #ifdef debug + if(tcsetattr(fd, TCSANOW, &terminos)!=0)printf("bad setup\n"); + #else + tcsetattr(fd, TCSANOW, &terminos); + #endif return 0; } } @@ -83,7 +91,23 @@ int rs232setparity(rs232port_t fd, rs232 { struct termios terminos; tcgetattr(fd, &terminos); - terminos.c_cflag = Parity; + switch(Parity) + { + case rs232parityNo: + terminos.c_cflag &= Parity; + break; + case rs232parityOdd: + terminos.c_cflag &= ~PARENB; + terminos.c_cflag |= Parity; + break; + case rs232parityEven: + terminos.c_cflag &= ~PARENB; + terminos.c_cflag |= Parity; + break; + default: + terminos.c_cflag &= ~PARENB; + break; + } tcsetattr(fd, TCSANOW, &terminos); return 0; } @@ -212,7 +236,23 @@ int rs232cfparity(int fd, struct termios } else { - terminos->c_cflag = Parity; + switch(Parity) + { + case rs232parityNo: + terminos->c_cflag &= Parity; + break; + case rs232parityOdd: + terminos->c_cflag &= ~PARENB; + terminos->c_cflag |= Parity; + break; + case rs232parityEven: + terminos->c_cflag &= ~PARENB; + terminos->c_cflag |= Parity; + break; + default: + terminos->c_cflag &= ~PARENB; + break; + } return 0; } }