opt.c_cflag &= ~INPCK;
opt.c_cflag |= (CLOCAL | CREAD);opt.c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG);opt.c_oflag &= ~OPOST;
opt.c_oflag &= ~(ONLCR | OCRNL); //添加的opt.c_iflag &= ~(ICRNL | INLCR);
opt.c_iflag &= ~(IXON | IXOFF | IXANY); //添加的opt.c_cc[VTIME] = 0;
opt.c_cc[VMIN] = 0;tcflush(fd,
TCIOFLUSH);printf(\TCSANOW, &opt) != 0) {
perror(\
return -1;
}
printf(\ { n = 0; len = 0;
bzero(read_buf, sizeof(read_buf)); //类似于memset
bzero(write_buf, sizeof(write_buf));while( (n = read(fd, read_buf, sizeof(read_buf))) > 0 ) {
for(i = len; i < (len + n); i++) {
write_buf[i] = read_buf[i - len]; } len += n; }
write_buf[len] = '\\0';printf(\
printf(\
printf(\ }
}9.附录c_cflag用于设置控制参数,除了波特率外还包含以下内容:
EXTA External rate clock
EXTB External rate clock
CSIZE Bit mask for data bits
CS5 5个数据位
CS6 6个数据位
CS7 7个数据位
CS8 8个数据位
CSTOPB 2个停止位(清除该标志表示1个停止位
PARENB 允许校验位
PARODD 使用奇校验(清除该标志表示使用偶校验)
CREAD Enable receiver
HUPCL Hangup (drop DTR) on last close
CLOCAL Local line – do not change “owner” of port
LOBLK Block job control outpu
c_cflag标志可以定义CLOCAL和CREAD,这将确保该程序不被其他端口控制和信号干扰,同时串口驱动将读取进入的数据。CLOCAL和CREAD通常总是被是能的。c_lflag用于设置本地模式,决定串口驱动如何处理输入字符,设置内容如下:
ISIG Enable SIGINTR, SIGSUSP, SIGDSUSP, and SIGQUIT signals
ICANON Enable canonical input (else raw)
XCASE Map uppercase \\lowercase (obsolete)
ECHO Enable echoing of input characters
ECHOE Echo erase character as BS-SP-BS
ECHOK Echo NL after kill character