#include #include #include #include #include #include #include #define BAUDRATE B9600 #define MODEMDEVICE "/dev/ttyS1" #define _POSIX_SOURCE 1 /* POSIX compliant source */ #define FALSE 0 #define TRUE 1 main(int argc, char* argv[]) { int fd,c, res; struct termios oldtio,newtio; unsigned char buf; buf = argv[1][0]; fd = open(MODEMDEVICE, O_RDWR | O_NOCTTY|O_NDELAY ); if (fd <0) {perror(MODEMDEVICE); exit(-1); } bzero(&newtio, sizeof(newtio)); tcgetattr(fd,&oldtio); /* save current port settings */ cfsetispeed(&newtio, B9600); cfsetospeed(&newtio, B9600); newtio.c_cflag &= ~CSIZE; /* Mask the character size bits */ newtio.c_cflag |= CS8; /* Select 8 data bits */ /* no parity */ newtio.c_cflag &= ~PARENB; newtio.c_cflag &= ~CSTOPB; newtio.c_cflag &= ~CSIZE; newtio.c_cflag &= ~CRTSCTS; newtio.c_cflag |= CS8; newtio.c_cflag |= (CLOCAL| CREAD); newtio.c_oflag = 0; /* set input mode (non-canonical, no echo,...) */ newtio.c_lflag = 0; newtio.c_cc[VTIME] = 0; /* inter-character timer unused */ newtio.c_cc[VMIN] = 1; /* blocking read until 5 chars received */ tcflush(fd, TCIFLUSH); tcsetattr(fd,TCSANOW,&newtio); res = write(fd,&buf,1); /* returns after 5 chars have been input */ printf("wrote %c\n", buf); }