如何在新线到达之前读取tty设备上的终端输入?

时间:2012-02-10 03:17:17

标签: c linux serial-port tty

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

由于

2 个答案:

答案 0 :(得分:3)

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

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

有关详细信息,请参阅tcsetattr()手册页。

答案 1 :(得分:-1)

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

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

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