⑴用到函数tcsetattr:
⑵函数原型:tcsetattr(fd,OPTION,&newtio;
⑶这里的newtio就是termios类型的变量,OPTION可能的取值如下:
⑷TCSANOW:改变的配置立即生效
⑸TCSADRAIN:改变的配置在所有写入fd的输出都结束后生效
⑹TCSAFLUSH:改变的配置自爱所有写入fd引用对象的输出都被结束后生效,所有已接受但为读入的输入都在改变发生前丢弃。
⑺该函数调用成功返回,失败-.
⑻if((tcsetattr(fd,TCSANOW,&newtio!=
⑼perror(“ set error”;
⑽return -;
⑾/*串口配置的完整函数,为了函数的通用性,通常将常用的选项都在函数中列出,可大大方便以后用户的调试使用
⑿*/ int set_opt(int fd,int nSpeed,int nBits,char nEvent,int nStop { struct termios newtio,oldtio; /*
⒀保存测试现有串口参数设置,在这里如果串口号等出错,会有相关的出错信息
⒁*/ if(tcgetattr(fd,&oldtio!= { perror(“SetupSerial ”;
⒂return -; } bzero(&newtio,sizeof(newtio; /*
⒃步骤一,设置字符大小
⒄*/ newtio.c_cflag |= CLOCAL | CREAD;
⒅newtio.c_cflag &= ~CSIZE; /*
⒆*/ switch(nBits { case :
⒇newtio.c_cflag |=CS;
⒈break; case :
⒉newtio.c_cflag |=CS;
⒊break; } /*
⒋*/ switch(nEvent { case ‘O‘://奇数
⒌newtio.c_cflag |= PARENB; newtio.c_cflag |=PARODD;
⒍newtio.c_iflag |= (INPCK | ISTRIP; break; case ‘E‘://偶数
⒎newtio.c_iflag |= (INPCK | ISTRIP; newtio.c_cflag |= PARENB;
⒏newtio.c_cflag &= ~PARODD; case ‘N‘://无奇偶校验位 newtio.c_cflag &= ~PARENB; break; } /*
⒐*/ switch(nSpeed { case :
⒑cfsetispeed(&newtio,B;
⒒cfsetospeed(&newtio,B;
⒓break; case :
⒔cfsetispeed(&newtio,B;
⒕cfsetospeed(&newtio,B;
⒖break; case :
⒗cfsetispeed(&newtio,B;
⒘cfsetospeed(&newtio,B;
⒙break; case :
⒚cfsetispeed(&newtio,B;
⒛cfsetospeed(&newtio,B;
①break; case :
②cfsetispeed(&newtio,B;
③cfsetospeed(&newtio,B;
④break; default:
⑤cfsetispeed(&newtio,B;
⑥cfsetospeed(&newtio,B;
⑦break; } /*
⑧设置停止位*/ if(nStop==
⑨newtio.c_cflag &= ~CSTOPB; else if(nStop==
⑩newtio.c_cflag |= CSTOPB; /*
Ⅰ设置等待时间和最小接收字符
Ⅱ*/ newtio.c_[VTIME] =; newtio.c_[VMIN]=; /*
Ⅲ*/ tcflush(fd, TCIFLUSH; /*
Ⅳ*/ if((tcsetattr(fd,TCSANOW,&newtio!=
Ⅴperror(“ set error”;
Ⅵreturn -;
Ⅶprintf(“set done!
Ⅷreturn ;
Ⅸ上面就是Linux下串口设置的介绍了,需要设置的地方有点多,初学者可能会用到该方面的知识,希望上面介绍的方法能够帮助到你。