资源描述:
《LINUX 串口通讯源码》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、主要函数intopenport(char*Dev)//打开串口intsetport(intfd,intbaud,intdatabits,intstopbits,intparity)//设置串口,波特率,数据位,停止位,校验intreadport(intfd,char*buf,intlen,intmaxwaittime)//读数据,参数为串口,BUF,长度,超时时间intwriteport(intfd,char*buf,intlen) //发送数据voidclearport(intfd)
2、 //如果出现数据与规约不符合,可以调用这个函数来刷新串口读写数据 如果有BUG,请大家及时回复给我,EMAIL:41063473@QQ.COM。#include #include #include #include #include #include #include intopenport(char*De
3、v) { int fd=open(Dev,O_RDWR
4、O_NOCTTY
5、O_NDELAY); if(-1==fd) { perror("Can''tOpenSerialPort"); return-1; } else returnfd; } intsetport(intfd,intbaud,intdatabits,intstopbits,intparity){ intbaudrate; struct termios newtio; switch
6、(baud) { case300: baudrate=B300; break; case600: baudrate=B600; break; case1200: baudrate=B1200; break; case2400: baudrate=B2400; break; case4800: baudrate=B4800; break; case9600: baudrate=B9600; break; case19200: baudrate=B19200; break;
7、 case38400: baudrate=B38400; break; default: baudrate=B9600; break; } tcgetattr(fd,&newtio); bzero(&newtio,sizeof(newtio)); //setting c_cflag newtio.c_cflag &=~CSIZE; switch(databits)/*设置数据位数*/ { case7: newtio.c_cflag
8、=CS7
9、;//7位数据位 break; case8: newtio.c_cflag
10、=CS8;//8位数据位 break; default: newtio.c_cflag
11、=CS8; break; } switch(parity)//设置校验 { case'n': case'N': newtio.c_cflag&=~PARENB; /*Clearparityenable*/ newtio.c_iflag&=~INPCK; /*Enablep
12、aritychecking*/ break; case'o': case'O': newtio.c_cflag
13、=(PARODD
14、PARENB);/*设置为奇效验*/ newtio.c_iflag
15、=INPCK; /*Disnableparitychecking*/ break; case'e': case'E': newtio.c_cflag
16、=PARENB; /*Enableparity*/ newtio
17、.c_cflag&=~PARODD; /*转换为偶效验*/ newtio.c_iflag
18、=INPCK; /*Disnableparitychecking*/ break; case'S': case's': /*asnoparity*/ newtio.c_cflag&=~PARENB; newtio.c_cflag&=~CSTOPB;break; default: newtio.c_cflag&=~PARENB; /*Cle