##// END OF EJS Templates
Win32 read timeout between bytes set to a more realistic value
Win32 read timeout between bytes set to a more realistic value

File last commit:

r41:21b605b21a3e alexis
r43:a38235df29ea alexis
Show More
RS232_unix.c
558 lines | 10.0 KiB | text/x-c | CLexer
jeandet@PC-DE-JEANDET.lpp.polytechnique.fr
Win/Unix portability completed, need to be tested.
r5 #include <stdio.h>
#include <unistd.h>
#include <fcntl.h>
#include <string.h>
#include <errno.h>
jeandet@pc-de-jeandet3.LAB-LPP.LOCAL
Satrted Port enumeration feature.
r33 #include <malloc.h>
jeandet@pc-de-jeandet3.LAB-LPP.LOCAL
Port enumeration Works on linux
r34 #include <dirent.h>
#include <limits.h>
#include <stdlib.h>
#include <sys/stat.h>
yannic
Included Config file for setup.
r7 #include "rs232config.h"
jeandet@pc-de-jeandet3.LAB-LPP.LOCAL
Port enumeration Works on linux
r34
jeandet@PC-DE-JEANDET.lpp.polytechnique.fr
Win/Unix portability completed, need to be tested.
r5 #ifdef HAVE_TERMIOS_H
#include <termios.h>
#endif
jeandet@pc-de-jeandet3.lab-lpp.local
Added RTS and CTS signal handing, saffer read and write functions....
r26 #ifdef HAVE_TERMIO_H
#include <termio.h>
#endif
jeandet@PC-DE-JEANDET.lpp.polytechnique.fr
Win/Unix portability completed, need to be tested.
r5 #include "RS232.h"
jeandet@PC-DE-JEANDET.lpp.polytechnique.fr
fixed some read bugs (under windows)
r8 #ifdef HAVE_WINDOWS_H
#else
jeandet@PC-DE-JEANDET.lpp.polytechnique.fr
Win/Unix portability completed, need to be tested.
r5 #ifdef HAVE_TERMIOS_H
rs232speed_t rs232cfspeed(unsigned int BaudeRate);
rs232port_t rs232open(char* psPortName)
{
Improved beaglebone support.
r36 rs232port_t fd;
jeandet@pc-de-jeandet.lpp.polytechnique.fr
Fixed x86_linux regression -> read returns without timeout isn't good at all!...
r37 int flags;
fd = (rs232port_t)open(psPortName, O_RDWR | O_NOCTTY );//| O_NDELAY);
//fcntl((int)fd, F_SETFL, FNDELAY);
Improved beaglebone support.
r36 //fd = open(psPortName, O_RDWR | O_NOCTTY);
Jeandet Alexis
Replaced debug define by RS232_debug.
r40 #ifdef RS232_debug
Improved beaglebone support.
r36 if(fd==-1)printf("can't open Port\n");
jeandet@pc-de-jeandet.lpp.polytechnique.fr
Fixed x86_linux regression -> read returns without timeout isn't good at all!...
r37 #else
if(fd!=-1)
{
//flags = fcntl(fd, F_GETFL);
//flags |= O_NONBLOCK;
//flags|=FNDELAY;
//fcntl(fd, F_SETFL, flags);
//fcntl((int)fd, F_SETFL, FNDELAY);
}
Improved beaglebone support.
r36 #endif
return fd;
jeandet@PC-DE-JEANDET.lpp.polytechnique.fr
Win/Unix portability completed, need to be tested.
r5 }
int rs232close(rs232port_t fd)
{
jeandet@PC-DE-JEANDET.lpp.polytechnique.fr
fixed some read bugs (under windows)
r8 if ((int)fd == -1)
jeandet@PC-DE-JEANDET.lpp.polytechnique.fr
Win/Unix portability completed, need to be tested.
r5 {
return -1;
}
else
{
close(fd);
return 0;
}
}
jeandet@pc-de-jeandet3.LAB-LPP.LOCAL
Satrted Port enumeration feature.
r33 rs232portslist_t* rs232getportlist()
{
jeandet@pc-de-jeandet3.LAB-LPP.LOCAL
Port enumeration Works on linux
r34 struct dirent *dp;
char* path="/dev/serial/by-id";
DIR *dir = opendir(path);
rs232portslist_t* firstitem=NULL;
rs232portslist_t* previtem=NULL;
char linkname[1024];
int i=0;
if(dir!=NULL)
{
while ((dp=readdir(dir)) != NULL)
{
char* name = (char*)malloc(1024);
for(i=0;i<1024;i++)
{
name[i]='\0';
linkname[i]='\0';
}
struct stat statbuf;
strcpy(linkname,path);
strcat(linkname,"/");
strcat(linkname,dp->d_name);
lstat(linkname, &statbuf);
if(S_ISLNK(statbuf.st_mode))
{
if(-1!=readlink(linkname,name,1024))
{
for(i=0;i<1024;i++)
{
linkname[i]='\0';
}
strcpy(linkname,path);
strcat(linkname,"/");
strcat(linkname,name);
for(i=0;i<1024;i++)
{
name[i]='\0';
}
if(NULL!=realpath(linkname, name))
{
rs232portslist_t* item = (rs232portslist_t*)malloc(sizeof(rs232portslist_t));
item->name = name;
item->next = NULL;
if(NULL!=previtem)previtem->next = item;
previtem = item;
if(NULL==firstitem)firstitem = item;
}
}
}
jeandet@pc-de-jeandet3.LAB-LPP.LOCAL
Satrted Port enumeration feature.
r33
jeandet@pc-de-jeandet3.LAB-LPP.LOCAL
Port enumeration Works on linux
r34 }
}
return firstitem;
jeandet@pc-de-jeandet3.LAB-LPP.LOCAL
Satrted Port enumeration feature.
r33 }
void rs232deleteportlist(rs232portslist_t* list)
{
jeandet@pc-de-jeandet3.LAB-LPP.LOCAL
Port enumeration Works on linux
r34 if(list!=NULL)
{
if(list->next != NULL)
rs232deleteportlist(list->next);
free(list);
}
jeandet@pc-de-jeandet3.LAB-LPP.LOCAL
Satrted Port enumeration feature.
r33 }
jeandet@PC-DE-JEANDET.lpp.polytechnique.fr
Win/Unix portability completed, need to be tested.
r5
jeandet@PC-DE-JEANDET.lpp.polytechnique.fr
fixed some read bugs (under windows)
r8 int rs232setup(rs232port_t fd, int ChSize, int BaudeRate, rs232parity Parity, rs232stop NbStop)
jeandet@PC-DE-JEANDET.lpp.polytechnique.fr
Win/Unix portability completed, need to be tested.
r5 {
jeandet@PC-DE-JEANDET.lpp.polytechnique.fr
fixed some read bugs (under windows)
r8 if ((int)fd == -1)
jeandet@PC-DE-JEANDET.lpp.polytechnique.fr
Win/Unix portability completed, need to be tested.
r5 {
return -1;
}
else
{
struct termios terminos;
tcgetattr(fd, &terminos);
Improved beaglebone support.
r36 terminos.c_iflag=0;
terminos.c_oflag=0;
terminos.c_cflag=0;
terminos.c_lflag=0;
jeandet@PC-DE-JEANDET.lpp.polytechnique.fr
Win/Unix portability completed, need to be tested.
r5 cfsetispeed(&terminos, rs232cfspeed(BaudeRate));
cfsetospeed(&terminos, rs232cfspeed(BaudeRate));
terminos.c_cflag |= (CLOCAL | CREAD);
jeandet@pc-de-jeandet3.lab-lpp.local
removed config file refenrence in headers. -> cleaner install
r31 rs232cfparity((int)fd, &terminos, Parity);
rs232cfnbstop((int)fd, &terminos, NbStop);
rs232cfcsize((int)fd, &terminos, ChSize);
some linux bug fixes, added timeouts for read actions
r12 terminos.c_cc[VMIN]=0;
Now totaly stable on linux read timeout = 100ms
r13 terminos.c_cc[VTIME]=1;
some linux bug fixes, added timeouts for read actions
r12 tcflush(fd, TCIFLUSH);
Jeandet Alexis
Replaced debug define by RS232_debug.
r40 #ifdef RS232_debug
yannic
Improved linux support
r11 if(tcsetattr(fd, TCSANOW, &terminos)!=0)printf("bad setup\n");
#else
tcsetattr(fd, TCSANOW, &terminos);
#endif
jeandet@PC-DE-JEANDET.lpp.polytechnique.fr
Win/Unix portability completed, need to be tested.
r5 return 0;
}
}
int rs232setbaudrate(rs232port_t fd, int baudrate)
{
jeandet@PC-DE-JEANDET.lpp.polytechnique.fr
fixed some read bugs (under windows)
r8 if ((int)fd == -1)
jeandet@PC-DE-JEANDET.lpp.polytechnique.fr
Win/Unix portability completed, need to be tested.
r5 {
return fd;
}
else
{
struct termios terminos;
jeandet@pc-de-jeandet3.lab-lpp.local
removed config file refenrence in headers. -> cleaner install
r31 tcgetattr((int)fd, &terminos);
jeandet@PC-DE-JEANDET.lpp.polytechnique.fr
Win/Unix portability completed, need to be tested.
r5 cfsetispeed(&terminos, rs232cfspeed(baudrate));
cfsetospeed(&terminos, rs232cfspeed(baudrate));
jeandet@pc-de-jeandet3.lab-lpp.local
removed config file refenrence in headers. -> cleaner install
r31 tcsetattr((int)fd, TCSANOW, &terminos);
jeandet@PC-DE-JEANDET.lpp.polytechnique.fr
Win/Unix portability completed, need to be tested.
r5 return 0;
}
}
int rs232setparity(rs232port_t fd, rs232parity Parity)
{
jeandet@PC-DE-JEANDET.lpp.polytechnique.fr
fixed some read bugs (under windows)
r8 if ((int)fd == -1)
jeandet@PC-DE-JEANDET.lpp.polytechnique.fr
Win/Unix portability completed, need to be tested.
r5 {
return fd;
}
else
{
struct termios terminos;
jeandet@pc-de-jeandet3.lab-lpp.local
removed config file refenrence in headers. -> cleaner install
r31 tcgetattr((int)fd, &terminos);
jeandet@pc-de-jeandet3.lab-lpp.local
Added RTS and CTS signal handing, saffer read and write functions....
r26 terminos.c_cflag &= ~PARENB;
terminos.c_cflag &= ~PARODD;
yannic
Improved linux support
r11 switch(Parity)
{
case rs232parityNo:
jeandet@pc-de-jeandet3.lab-lpp.local
fixed bug on Parity hndling under linux!
r25 terminos.c_cflag &= ~PARENB;
yannic
Improved linux support
r11 break;
case rs232parityOdd:
jeandet@pc-de-jeandet3.lab-lpp.local
fixed bug on Parity hndling under linux!
r25 terminos.c_cflag |= PARENB;
terminos.c_cflag |= PARODD;
yannic
Improved linux support
r11 break;
case rs232parityEven:
jeandet@pc-de-jeandet3.lab-lpp.local
fixed bug on Parity hndling under linux!
r25 terminos.c_cflag |= PARENB;
terminos.c_cflag &= ~PARODD;
yannic
Improved linux support
r11 break;
default:
terminos.c_cflag &= ~PARENB;
break;
}
jeandet@pc-de-jeandet3.lab-lpp.local
removed config file refenrence in headers. -> cleaner install
r31 tcsetattr((int)fd, TCSANOW, &terminos);
jeandet@PC-DE-JEANDET.lpp.polytechnique.fr
Win/Unix portability completed, need to be tested.
r5 return 0;
}
}
jeandet@PC-DE-JEANDET.lpp.polytechnique.fr
RAS
r9 int rs232setnbstop(rs232port_t fd, rs232stop NbStop)
jeandet@PC-DE-JEANDET.lpp.polytechnique.fr
Win/Unix portability completed, need to be tested.
r5 {
jeandet@PC-DE-JEANDET.lpp.polytechnique.fr
fixed some read bugs (under windows)
r8 if ((int)fd == -1)
jeandet@PC-DE-JEANDET.lpp.polytechnique.fr
Win/Unix portability completed, need to be tested.
r5 {
return fd;
}
else
{
struct termios terminos;
jeandet@pc-de-jeandet3.lab-lpp.local
removed config file refenrence in headers. -> cleaner install
r31 tcgetattr((int)fd, &terminos);
jeandet@PC-DE-JEANDET.lpp.polytechnique.fr
Win/Unix portability completed, need to be tested.
r5 switch(NbStop)
{
jeandet@PC-DE-JEANDET.lab-lpp.local
Fixed errors for windows
r32 case rs232OneStop:
terminos.c_cflag &= ~CSTOPB;
break;
case rs232One5Stop:
jeandet@PC-DE-JEANDET.lpp.polytechnique.fr
Win/Unix portability completed, need to be tested.
r5 terminos.c_cflag |= CSTOPB;
jeandet@PC-DE-JEANDET.lab-lpp.local
Fixed errors for windows
r32 break;
case rs232TwoStop:
terminos.c_cflag |= CSTOPB;
break;
jeandet@PC-DE-JEANDET.lpp.polytechnique.fr
Win/Unix portability completed, need to be tested.
r5 default:
terminos.c_cflag &= ~CSTOPB;
jeandet@PC-DE-JEANDET.lab-lpp.local
Fixed errors for windows
r32 break;
jeandet@PC-DE-JEANDET.lpp.polytechnique.fr
Win/Unix portability completed, need to be tested.
r5 }
jeandet@pc-de-jeandet3.lab-lpp.local
removed config file refenrence in headers. -> cleaner install
r31 tcsetattr((int)fd, TCSANOW, &terminos);
jeandet@PC-DE-JEANDET.lpp.polytechnique.fr
Win/Unix portability completed, need to be tested.
r5 return 0;
}
}
int rs232setcsize(rs232port_t fd, int ChSize)
{
jeandet@PC-DE-JEANDET.lpp.polytechnique.fr
fixed some read bugs (under windows)
r8 if ((int)fd == -1)
jeandet@PC-DE-JEANDET.lpp.polytechnique.fr
Win/Unix portability completed, need to be tested.
r5 {
return fd;
}
else
{
struct termios terminos;
jeandet@pc-de-jeandet3.lab-lpp.local
removed config file refenrence in headers. -> cleaner install
r31 tcgetattr((int)fd, &terminos);
jeandet@pc-de-jeandet3.lab-lpp.local
Added RTS and CTS signal handing, saffer read and write functions....
r26 terminos.c_cflag &= ~CSIZE;
jeandet@PC-DE-JEANDET.lpp.polytechnique.fr
Win/Unix portability completed, need to be tested.
r5 switch(ChSize)
{
case 5:
terminos.c_cflag |= CS5;
break;
case 6:
terminos.c_cflag |= CS6;
break;
case 7:
terminos.c_cflag |= CS7;
break;
default:
terminos.c_cflag |= CS8;
break;
}
jeandet@pc-de-jeandet3.lab-lpp.local
removed config file refenrence in headers. -> cleaner install
r31 tcsetattr((int)fd, TCSANOW, &terminos);
jeandet@PC-DE-JEANDET.lpp.polytechnique.fr
Win/Unix portability completed, need to be tested.
r5 return 0;
}
}
rs232speed_t rs232cfspeed(unsigned int BaudeRate)
{
if(BaudeRate<25)
return B0;
if(BaudeRate<67)
return B50;
if(BaudeRate<93)
return B75;
if(BaudeRate<123)
return B110;
if(BaudeRate<142)
return B134;
if(BaudeRate<175)
return B150;
if(BaudeRate<250)
return B200;
if(BaudeRate<450)
return B300;
if(BaudeRate<900)
return B600;
if(BaudeRate<1500)
return B1200;
if(BaudeRate<2100)
return B1800;
if(BaudeRate<3600)
return B2400;
if(BaudeRate<7200)
return B4800;
if(BaudeRate<1400)
return B9600;
if(BaudeRate<28800)
return B19200;
if(BaudeRate<48000)
return B38400;
if(BaudeRate<86400)
return B57600;
if(BaudeRate<172800)
return B115200;
Jeandet Alexis
added 3Mbaud for unix
r41
if(BaudeRate<345600)
return B230400;
if(BaudeRate<345600)
return B460800;
if(BaudeRate<748800)
return B576000;
if(BaudeRate<1210800)
return B921600;
if(BaudeRate<1750000)
return B1500000;
if(BaudeRate<2250000)
return B2000000;
if(BaudeRate<2750000)
return B2500000;
jeandet@PC-DE-JEANDET.lpp.polytechnique.fr
Win/Unix portability completed, need to be tested.
r5 else
Jeandet Alexis
added 3Mbaud for unix
r41 return B3000000;
jeandet@PC-DE-JEANDET.lpp.polytechnique.fr
Win/Unix portability completed, need to be tested.
r5 }
int rs232cfparity(int fd, struct termios *terminos, rs232parity Parity)
{
jeandet@PC-DE-JEANDET.lpp.polytechnique.fr
fixed some read bugs (under windows)
r8 if ((int)fd == -1)
jeandet@PC-DE-JEANDET.lpp.polytechnique.fr
Win/Unix portability completed, need to be tested.
r5 {
return fd;
}
else
{
jeandet@pc-de-jeandet3.lab-lpp.local
Added RTS and CTS signal handing, saffer read and write functions....
r26 terminos->c_cflag &= ~PARENB;
terminos->c_cflag &= ~PARODD;
yannic
Improved linux support
r11 switch(Parity)
{
case rs232parityNo:
jeandet@pc-de-jeandet3.lab-lpp.local
Added RTS and CTS signal handing, saffer read and write functions....
r26 terminos->c_cflag &= ~PARENB;
terminos->c_cflag &= ~PARODD;
yannic
Improved linux support
r11 break;
case rs232parityOdd:
jeandet@pc-de-jeandet3.lab-lpp.local
Added RTS and CTS signal handing, saffer read and write functions....
r26 terminos->c_cflag |= PARENB;
terminos->c_cflag |= PARODD;
yannic
Improved linux support
r11 break;
case rs232parityEven:
jeandet@pc-de-jeandet3.lab-lpp.local
Added RTS and CTS signal handing, saffer read and write functions....
r26 terminos->c_cflag |= PARENB;
terminos->c_cflag &= ~PARODD;
yannic
Improved linux support
r11 break;
default:
terminos->c_cflag &= ~PARENB;
jeandet@pc-de-jeandet3.lab-lpp.local
Added RTS and CTS signal handing, saffer read and write functions....
r26 terminos->c_cflag &= ~PARODD;
yannic
Improved linux support
r11 break;
}
jeandet@PC-DE-JEANDET.lpp.polytechnique.fr
Win/Unix portability completed, need to be tested.
r5 return 0;
}
}
jeandet@PC-DE-JEANDET.lpp.polytechnique.fr
fixed some read bugs (under windows)
r8 int rs232cfnbstop(int fd, struct termios *terminos, rs232stop NbStop)
jeandet@PC-DE-JEANDET.lpp.polytechnique.fr
Win/Unix portability completed, need to be tested.
r5 {
jeandet@PC-DE-JEANDET.lpp.polytechnique.fr
fixed some read bugs (under windows)
r8 if ((int)fd == -1)
jeandet@PC-DE-JEANDET.lpp.polytechnique.fr
Win/Unix portability completed, need to be tested.
r5 {
return fd;
}
else
{
switch(NbStop)
{
case 2:
terminos->c_cflag |= CSTOPB;
break;
default:
terminos->c_cflag &= ~CSTOPB;
break;
}
return 0;
}
}
int rs232cfcsize(int fd, struct termios *terminos, int ChSize)
{
jeandet@PC-DE-JEANDET.lpp.polytechnique.fr
fixed some read bugs (under windows)
r8 if ((int)fd == -1)
jeandet@PC-DE-JEANDET.lpp.polytechnique.fr
Win/Unix portability completed, need to be tested.
r5 {
return fd;
}
else
{
jeandet@pc-de-jeandet3.lab-lpp.local
Added RTS and CTS signal handing, saffer read and write functions....
r26 terminos->c_cflag &= ~CSIZE;
jeandet@PC-DE-JEANDET.lpp.polytechnique.fr
Win/Unix portability completed, need to be tested.
r5 switch(ChSize)
{
case 5:
terminos->c_cflag |= CS5;
break;
case 6:
terminos->c_cflag |= CS6;
break;
case 7:
terminos->c_cflag |= CS7;
break;
default:
terminos->c_cflag |= CS8;
break;
}
return 0;
}
}
int rs232write(rs232port_t fd,char *psWrite, int WriteBufferSize)
{
jeandet@PC-DE-JEANDET.lpp.polytechnique.fr
fixed some read bugs (under windows)
r8 if ((int)fd == -1)
jeandet@PC-DE-JEANDET.lpp.polytechnique.fr
Win/Unix portability completed, need to be tested.
r5 {
return -1;
}
else
{
jeandet@pc-de-jeandet3.lab-lpp.local
removed config file refenrence in headers. -> cleaner install
r31 return write((int)fd, psWrite, WriteBufferSize);
jeandet@PC-DE-JEANDET.lpp.polytechnique.fr
Win/Unix portability completed, need to be tested.
r5 }
}
int rs232read(rs232port_t fd,char *psReadHex, int ReadBufferSize)
{
jeandet@PC-DE-JEANDET.lpp.polytechnique.fr
fixed some read bugs (under windows)
r8 if ((int)fd == -1)
jeandet@PC-DE-JEANDET.lpp.polytechnique.fr
Win/Unix portability completed, need to be tested.
r5 {
return -1;
}
else
{
jeandet@pc-de-jeandet3.lab-lpp.local
removed config file refenrence in headers. -> cleaner install
r31 return read((int)fd, psReadHex, ReadBufferSize);
jeandet@PC-DE-JEANDET.lpp.polytechnique.fr
Win/Unix portability completed, need to be tested.
r5 }
}
jeandet@pc-de-jeandet3.lab-lpp.local
Added RTS and CTS signal handing, saffer read and write functions....
r26
int rs232setRTS(rs232port_t fd)
{
int status;
jeandet@pc-de-jeandet3.lab-lpp.local
removed config file refenrence in headers. -> cleaner install
r31 ioctl((int)fd, TIOCMGET, &status);
jeandet@pc-de-jeandet3.lab-lpp.local
Added RTS and CTS signal handing, saffer read and write functions....
r26 status &= ~TIOCM_RTS;
jeandet@pc-de-jeandet3.lab-lpp.local
removed config file refenrence in headers. -> cleaner install
r31 if (ioctl((int)fd, TIOCMSET, &status))
jeandet@pc-de-jeandet3.lab-lpp.local
Added RTS and CTS signal handing, saffer read and write functions....
r26 {
return -1;
}
return 0;
}
int rs232clearRTS(rs232port_t fd)
{
int status;
jeandet@pc-de-jeandet3.lab-lpp.local
removed config file refenrence in headers. -> cleaner install
r31 ioctl((int)fd, TIOCMGET, &status);
jeandet@pc-de-jeandet3.lab-lpp.local
Added RTS and CTS signal handing, saffer read and write functions....
r26 status |= TIOCM_RTS;
jeandet@pc-de-jeandet3.lab-lpp.local
removed config file refenrence in headers. -> cleaner install
r31 if (ioctl((int)fd, TIOCMSET, &status))
jeandet@pc-de-jeandet3.lab-lpp.local
Added RTS and CTS signal handing, saffer read and write functions....
r26 {
return -1;
}
return 0;
}
int rs232setDTR(rs232port_t fd)
{
int status;
jeandet@pc-de-jeandet3.lab-lpp.local
removed config file refenrence in headers. -> cleaner install
r31 ioctl((int)fd, TIOCMGET, &status);
jeandet@pc-de-jeandet3.lab-lpp.local
Added RTS and CTS signal handing, saffer read and write functions....
r26 status &= ~TIOCM_DTR;
jeandet@pc-de-jeandet3.lab-lpp.local
removed config file refenrence in headers. -> cleaner install
r31 if (ioctl((int)fd, TIOCMSET, &status))
jeandet@pc-de-jeandet3.lab-lpp.local
Added RTS and CTS signal handing, saffer read and write functions....
r26 {
return -1;
}
return 0;
}
int rs232clearDTR(rs232port_t fd)
{
int status;
jeandet@pc-de-jeandet3.lab-lpp.local
removed config file refenrence in headers. -> cleaner install
r31 ioctl((int)fd, TIOCMGET, &status);
jeandet@pc-de-jeandet3.lab-lpp.local
Added RTS and CTS signal handing, saffer read and write functions....
r26 status |= TIOCM_DTR;
jeandet@pc-de-jeandet3.lab-lpp.local
removed config file refenrence in headers. -> cleaner install
r31 if (ioctl((int)fd, TIOCMSET, &status))
jeandet@pc-de-jeandet3.lab-lpp.local
Added RTS and CTS signal handing, saffer read and write functions....
r26 {
return -1;
}
return 0;
}
int rs232saferead(rs232port_t fd,char* data,int count )
{
int read=0;
int i=0;
Improved beaglebone support.
r36 for(i=0;i<1000;i++)
jeandet@pc-de-jeandet3.lab-lpp.local
Added RTS and CTS signal handing, saffer read and write functions....
r26 {
jeandet@pc-de-jeandet3.lab-lpp.local
removed config file refenrence in headers. -> cleaner install
r31 read = rs232read((int)fd,data,count);
Improved beaglebone support.
r36 //printf("read %d bytes\n",read);
if(read==-1)read=0;
count-=read;
jeandet@pc-de-jeandet3.lab-lpp.local
Added RTS and CTS signal handing, saffer read and write functions....
r26 data+=read;
if(count==0)
return 0;
Improved beaglebone support.
r36 usleep(10);
jeandet@pc-de-jeandet3.lab-lpp.local
Added RTS and CTS signal handing, saffer read and write functions....
r26 }
return -1;
}
int rs232safewrite(rs232port_t fd,char* data,int count)
{
int written=0;
int i=0;
for(i=0;i<1000;i++)
{
jeandet@pc-de-jeandet3.lab-lpp.local
removed config file refenrence in headers. -> cleaner install
r31 written = rs232write((int)fd,data+written,count);
Improved beaglebone support.
r36 //printf("%d bytes written\n",written);
if(written==-1)written=0;
jeandet@pc-de-jeandet3.lab-lpp.local
Added RTS and CTS signal handing, saffer read and write functions....
r26 count-=written;
data+=written;
if(count==0)
return 0;
}
return -1;
}
jeandet@PC-DE-JEANDET.lpp.polytechnique.fr
fixed some read bugs (under windows)
r8 #endif
#endif //#ifdef HAVE_TERMIOS_H
jeandet@PC-DE-JEANDET.lpp.polytechnique.fr
Win/Unix portability completed, need to be tested.
r5