我目前正在基于UNIX的设备上开发一个简单的串行接口,但无法找到以下内容的明确答案:
我目前正在尝试确定'纯时间读取'(VMIN = 0,VTIME> 0)是否会在读取到n_bytes的一半时间返回,因为定时器在调用read时启动,而不是在第一个字符时收到了。
例如,如果我向串口的另一端的设备发送消息并且我想要响应,我会尝试以下(伪代码):
m_tty.c_cc[VMIN] = 0;
m_tty.c_cc[VTIME] = 5; //i.e. > 0
write(myFileHandle, myData, sizeof(myData));
usleep(sizeof(myData) * 100); //assuming 100 us per char to Tx.
read(myFileHandle, myRxData, expectedMinNumBytes);
我不清楚read()是否会在计时器即将到期时第一个字节到达时返回,还是在收到第一个字节后它是否会继续直到'expectedMinNumBytes'?
提前感谢您的帮助!
答案 0 :(得分:0)
这是一个纯粹的定时阅读。如果有可用数据,则立即满足读取。如果没有数据,则在调用read时启动定时器,并且读取返回:因为定时器到期(返回0)或单个字节可用。