2

我正在使用 open()、tcget/setattr()、read() 读取使用嵌入式 linux (angstrom) 的串行设备。我可以很好地读写数据。但是,我正在阅读的设备会显示一个不以换行符终止的提示。这意味着我无法阅读提示,直到我让设备发送一些末尾有换行符的其他输出。基本上,我知道提示字符串(“COM3>”)位于 tty 缓冲区中,等待设备发送换行符。read() 在换行符到达之前不会访问“COM3>”提示字符串。有没有办法改变强制 read() 在换行符到达之前获取缓冲区中的数据?

谢谢

4

2 回答 2

4

在默认的规范模式下,输入是行缓冲的。

您可能想要的是使用 将终端设置为“原始”模式cfmakeraw(),这将(除其他外)禁用规范模式。

有关更多信息,请参见tcsetattr()手册页。

于 2012-02-10T04:02:57.123 回答
-1

C 的好处之一是有一百种方法可以做任何事情。

如果是我,我不会使用 ioctl。

一个简单的 cMyChar = getc(STDIN) 就可以了。

于 2012-02-10T04:41:23.707 回答