文档详情

Linux下串口C语言编程.doc

发布:2018-12-24约4.02千字共5页下载文档
文本预览下载声明
串口操作代码 #include stdio.h #include string.h #include sys/types.h #include errno.h #include sys/types.h #include fcntl.h #include unistd.h #include termios.h #include stdlib.h #define BUFFER_SIZE 1024 #define HOST_PORT 1 int set_port(int fd, int baud_rate, int data_bits, char parity, int stop_bits) { struct termios newtio,oldtio; if( tcgetattr(fd,oldtio) != 0) { perror(Setup Serial 1); return -1; } bzero(newtio,sizeof(newtio)); newtio.c_cflag |= CLOCAL | CREAD; newtio.c_cflag = ~CSIZE; /* set baud_speed*/ switch(baud_rate) { case 2400: cfsetispeed(newtio,B2400); cfsetospeed(newtio,B2400); break; case 4800: cfsetispeed(newtio,B4800); cfsetospeed(newtio,B4800); break; case 9600: cfsetispeed(newtio,B9600); cfsetospeed(newtio,B9600); break; case 19200: cfsetispeed(newtio,B19200); cfsetospeed(newtio,B19200); break; case 38400: cfsetispeed(newtio,B38400); cfsetospeed(newtio,B38400); break; default: case 115200: cfsetispeed(newtio,B115200); cfsetospeed(newtio,B115200); break; } /* set data_bits upon 7 or 8*/ switch(data_bits) { case 7: newtio.c_cflag |= CS7; break; default : case 8: newtio.c_cflag |= CS8; break; } /**/ switch(parity) { default: case N: case n: { newtio.c_cflag = ~PARENB; newtio.c_iflag = ~INPCK; } break; case o: case O: { newtio.c_cflag |= (PARODD | PARENB); newtio.c_iflag |= INPCK; } break; case e: case E: { newtio.c_cflag |= PARENB; newtio.c_cflag = ~PA
显示全部
相似文档