| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 
 | /*Oo_______________________________________________oO
       Program name : serie1
       Date : 24/09/2003
 
       Version : 0.3
OOoo_______________________________________________oO*/
 
#include <unistd.h>
#include <fcntl.h>
#include <termios.h>
#include <stdio.h>
#include <string.h>
 
#define BAUDRATE B9600
#define MODEMDEVICE "/dev/ttyS0"
 
#define FALSE 0
#define TRUE 1
 
volatile int STOP=FALSE; 
 
int main(int argc, char *argv[])
{
 int fd,res;
 struct termios oldtio,newtio;
 char buf[12],c;
 
 fd = open(MODEMDEVICE, O_RDWR | O_NOCTTY ); 
 if (fd <0) 
   {
     perror(MODEMDEVICE);
     return(-1);
   }
 
 tcgetattr(fd,&oldtio);
 bzero(&newtio, sizeof(newtio));
 
 newtio.c_cflag = BAUDRATE | CRTSCTS | CS8 | CLOCAL | CREAD;
 newtio.c_iflag = IGNPAR | ICRNL;
 newtio.c_oflag = 0;
 newtio.c_lflag = ICANON;
 newtio.c_cc[VINTR]    = 0;
 newtio.c_cc[VQUIT]    = 0;
 newtio.c_cc[VERASE]   = 0;
 newtio.c_cc[VKILL]    = 0;
 newtio.c_cc[VEOF]     = 4;
 newtio.c_cc[VTIME]    = 0;
 newtio.c_cc[VMIN]     = 1;
 newtio.c_cc[VSWTC]    = 0;
 newtio.c_cc[VSTART]   = 0;
 newtio.c_cc[VSTOP]    = 0;
 newtio.c_cc[VSUSP]    = 0;
 newtio.c_cc[VEOL]     = 0;
 newtio.c_cc[VREPRINT] = 0;
 newtio.c_cc[VDISCARD] = 0;
 newtio.c_cc[VWERASE]  = 0;
 newtio.c_cc[VLNEXT]   = 0;
 newtio.c_cc[VEOL2]    = 0;
 
 tcflush(fd,TCIFLUSH);
 tcsetattr(fd,TCSANOW,&newtio);
 
 while (STOP==FALSE)
   {     
     res = read(fd,&buf,1); 
     buf[res]='\0';
     printf("%s",buf);
 
     if (buf[0]=='z') STOP=TRUE;
 
 
     bzero(&buf,12);
   }
 
 tcsetattr(fd,TCSANOW,&oldtio);
 
 return(0);
} | 
Partager