在Linux串口编程的一些问题解决(6)

2019-04-15 20:03

Opt.c_cflag &= ~PARENB; //清除校验位

Opt.c_iflag &= ~INPCK; //enable parity checking break; case 'o': case 'O':

Opt.c_cflag |= PARENB; //enable parity

Opt.c_cflag |= PARODD; //奇校验

Opt.c_iflag |= INPCK //disable parity checking break; case 'e': case 'E':

Opt.c_cflag |= PARENB; //enable parity

Opt.c_cflag &= ~PARODD; //偶校验

Opt.c_iflag |= INPCK; //disable pairty checking break; case 's': case 'S':

Opt.c_cflag &= ~PARENB; //清除校验位

Opt.c_cflag &= ~CSTOPB; //??????????????

Opt.c_iflag |= INPCK; //disable pairty checking break; default:

fprintf(stderr, \

return FALSE;

}switch(stopbits) //设置停止位 { case 1:

Opt.c_cflag &= ~CSTOPB; break; case 2:

Opt.c_cflag |= CSTOPB; break; default:

fprintf(stderr, \

return FALSE;

}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); //添加的tcflush(fd, TCIFLUSH);

Opt.c_cc[VTIME] = 0; //设置超时为15sec

Opt.c_cc[VMIN] = 0; //Update the Opt and do it now

if(tcsetattr(fd, TCSANOW, &Opt) != 0) {

perror(\

return FALSE;

}return TRUE;

}5.某些设置项在第四步中我们看到一些比较特殊的设置,下面简述一下他们的作用。

c_cc数组的VSTART和VSTOP元素被设定成DC1和DC3,代表ASCII标准的XON和XOFF字符,如果在传输这两个字符的时候就传不过去,需要把软件流控制屏蔽,即:

Opt.c_iflag &= ~ (IXON | IXOFF | IXANY);

有时候,在用write发送数据时没有键入回车,信息就发送不出去,这主要是因为我们在输入输出时是按照规范模式接收到回车或换行才发送,而更多情况下我们是不必键入回车或换行的。此时应转换到行方式输入,不经处理直接发送,设置如下:

Opt.c_lflag &= ~ (ICANON | ECHO | ECHOE | ISIG);


在Linux串口编程的一些问题解决(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:青州项目可行性报告1650136325 - 图文

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: