c - 如何在换行到达之前读取 tty 设备上的终端输入?

标签 c linux serial-port tty

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

谢谢

最佳答案

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

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

请参阅tcsetattr()手册页以获取更多信息。

关于c - 如何在换行到达之前读取 tty 设备上的终端输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9222231/

相关文章:

c++ - 使用标准 C++ fstream 在串行设备 (/dev/ttyGS0) 上读写?

iphone - 在 iPhone 中访问/dev/tty.iap 被拒绝

linux - Linux RS485串口通讯耗时

c - 如何克服 "An array is allocated or declared with size zero"限制?

c - 为什么我的编译器不接受 fork(),尽管我包含了 <unistd.h>?

linux - "grep"二进制文件中 ascii 字符串的偏移量

c - 在 Linux 中替代 c 语言中的 getch 和 clrscr()

linux - xmodmap 清除命令

c++ - 在释放/删除时写入垃圾

c - sigaction 用法和解释