Linux中串口read怎样阻塞的方式读入数据解决办法
1个回答
展开全部
open(dev, O_NONBLOCK|O_RDWR)..... 非阻塞
------解决方案--------------------
C/C++ code fd = open( Dev, O_RDWR | O_NOCTTY);
options.c_cc[VTIME] = 0; /* 等待100ms* 该值等待时间就返回 */
options.c_cc[VMIN] = 1; /* 接收到该值数量字节就返回 */
/* 上面两个条件为非零时才有效,两个都为非零时任意一个条件达到都返回,如果两个条件都为零,则马上返回 */
tcflush(fd,TCIFLUSH); /* Update the options and do it NOW */
if (tcsetattr(fd,TCSANOW,&options) != 0){
return ERRCOM_SETATTR;
}
return ERRCOM_OK;
------解决方案--------------------
两个都为非零时任意一个条件达到都返回
如果两个条件都为零,则马上返回
如果一个为非零,则仅仅关注该非零条件
------解决方案--------------------
C/C++ code fd = open( Dev, O_RDWR | O_NOCTTY);
options.c_cc[VTIME] = 0; /* 等待100ms* 该值等待时间就返回 */
options.c_cc[VMIN] = 1; /* 接收到该值数量字节就返回 */
/* 上面两个条件为非零时才有效,两个都为非零时任意一个条件达到都返回,如果两个条件都为零,则马上返回 */
tcflush(fd,TCIFLUSH); /* Update the options and do it NOW */
if (tcsetattr(fd,TCSANOW,&options) != 0){
return ERRCOM_SETATTR;
}
return ERRCOM_OK;
------解决方案--------------------
两个都为非零时任意一个条件达到都返回
如果两个条件都为零,则马上返回
如果一个为非零,则仅仅关注该非零条件
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询