//----------------------------------------------------------------------------- // Copyright (C) David Welch, 2000 //----------------------------------------------------------------------------- #include #include #include #include #include #include #include #include int ser_hand; unsigned short ser_buffcnt; unsigned short ser_maincnt; unsigned char ser_buffer[8192]; //----------------------------------------------------------------------------- unsigned char ser_open ( void ) { struct termios options; // int ret; int dtr_bit=TIOCM_DTR; // int setbits; ser_hand=open("/dev/ttyS1",O_RDWR|O_NOCTTY|O_NDELAY); if(ser_hand==-1) { fprintf(stderr,"open: error - %s\n",strerror(errno)); return(1); } fcntl(ser_hand,F_SETFL,FNDELAY); bzero(&options,sizeof(options)); options.c_cflag=B19200|CS8|CLOCAL|CREAD; options.c_iflag=IGNPAR; tcflush(ser_hand,TCIFLUSH); tcsetattr(ser_hand,TCSANOW,&options); ser_maincnt=ser_buffcnt=0; sleep(1); dtr_bit=TIOCM_DTR; ioctl(ser_hand,TIOCMBIC,&dtr_bit); return(0); } //----------------------------------------------------------------------------- void strobedtr ( void ) { int dtr_bit; time_t x; dtr_bit=TIOCM_DTR; ioctl(ser_hand,TIOCMBIS,&dtr_bit); x=time(NULL)+5; while(time(NULL)0) { ser_maincnt+=r; if(ser_maincnt>4095) { ser_maincnt&=0xFFF; memcpy(ser_buffer,&ser_buffer[4096],ser_maincnt); } } } //----------------------------------------------------------------------------- unsigned short ser_copystring ( unsigned char *d ) { unsigned short r; unsigned short buffcnt; unsigned short maincnt; ser_update(); buffcnt=ser_buffcnt; maincnt=ser_maincnt; for(r=0;buffcnt!=maincnt;buffcnt=(buffcnt+1)&0xFFF,r++) *d++=ser_buffer[buffcnt]; return(r); } //----------------------------------------------------------------------------- unsigned short ser_dump ( unsigned short x ) { unsigned short r; for(r=0;r