本帖最后由 lk07828 于 2016-1-12 10:28 编辑
linux C
串口通讯流程:
com_set();
while(1)
{
tcflush(fd,TCIOFLUSH);//先清空所有缓冲区
write(fd,sendbuf,len);
read(fd,recvbuf,len);
}
read总是读不到数据:
1.去掉tcflush(fd,TCIOFLUSH)后正常。但是第一次运行时read也是返回0,以后正常(可能跟comset中也有tcflush有关)
2.在不去掉tcflush(fd,TCIOFLUSH)的情况下,将串口的参数
options.c_cc[VTIME] = 1; //100ms
改大一点到2,串口接收正常。
但是单纯的再tcflush(fd,TCIOFLUSH)后usleep(200ms)也不行
问题:
串口的tcflush是怎么个用法?
还是想将options.c_cc[VTIME]设置为1,然后每次发送前还是要清缓冲区,该怎么做? |