我正在使用open(),tcget / setattr(),read()来使用嵌入式linux(angstrom)读取串行设备。我可以很好地读写数据。但是,我正在阅读的设备会显示一个未以换行符终止的提示。这意味着我无法读取提示,直到我使设备发送一些其他输出结尾有换行符。基本上,我知道提示字符串(“COM3>”)位于tty缓冲区中,等待设备发送换行符。 read()不会访问“COM3>”提示字符串,直到换行符到达。有没有办法在换行符到达之前更改强制read()以获取缓冲区中的数据?
由于
答案 0 :(得分:3)
在规范模式中,默认情况下,输入是行缓冲的。
你可能想要的是将终端设置为带有cfmakeraw()
的“原始”模式,这将(除其他外)禁用规范模式。
有关详细信息,请参阅tcsetattr()
手册页。
答案 1 :(得分:-1)
C的一个好处是有百种方法可以做任何事情。
如果是我,我不会使用ioctl。
一个简单的cMyChar = getc(STDIN)就可以了。