验位*/ 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 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 115200: cfsetispeed(&newtio,B115200); cfsetospeed(&newtio,B115200); break; case 460800: cfsetispeed(&newtio,B460800); cfsetospeed(&newtio,B460800); break; default: cfsetispeed(&newtio,B9600); cfsetospeed(&newtio,B9600); break; } /*设置停止位*/ if(nStop==1) newtio.c_cflag &= ~CSTOPB; else if(nStop==2) newtio.c_cflag |= CSTOPB; /*设置等待时间和最小接收字符*/ newtio.c_cc[VTIME] =0; newtio.c_cc[VMIN]=0; /*处理未接受字符*/ tcflush(fd, TCIFLUSH); /*激活新配置*/ if((tcsetattr(fd,TCSANOW,&newtio))!=0)
{ perror(“com set error”); return -1; } printf("set done!\n"); return 0; }
|