|
从端口读取数据有一点小骗术。当你以行数据模式操作端口,每个 read(2) 系统调用都会返回, 而不论多少字符实际存在于串行输入缓冲中。 如果没有字符存在,调用将阻塞(等待)直到有字符进入,或超时,或错误出现。read方法能够用以下方法获得立即的返回:
fcntl(fd, F_SETFL, FNDELAY);
当端口没有接受到字符时,FNDELAY 项使得 read 函数返回0。要实现标准的(阻塞)行为,调用 fcntl() 而不带 FNDELAY 项:
fcntl(fd, F_SETFL, 0);
这同样可以在带O_NDELAY项打开串行端口后使用。
--------------------------------------------------------------------------
1.行数据模式是怎么回事?为什么read都会返回?
2.read方法能够用以下方法获得立即的返回:
fcntl(fd, F_SETFL, FNDELAY);
立即返回是干什么?详细解释。谢谢。
3.fcntl(fd, F_SETFL, 0);
这同样可以在带O_NDELAY项打开串行端口后使用。
这个是怎么回事,在说什么?
本人新手高人指教!!!!!!!!!!!!!!
|
|