gpt4 book ai didi

linux - 为什么只有在按回车后才能在串行连接中接收到字符?

转载 作者:可可西里 更新时间:2023-11-01 11:45:55 24 4
gpt4 key购买 nike

我有一个简单的 PC 到板连接,使用串口(9600,无奇偶校验,8 位,无硬件流)我在 PC 中用 teraterm 打开了简单的终端 * 并在 teraterm 和 board 中输入了 key ,我只是这样做了

 cat /dev/ttyO5

我在范围内看到了按下的字符,但我在板控制台中看到了字符,只有在 teraterm 中按下“enter”之后(就好像它们存储在 Linux 驱动程序中的某个 FIFO 中,只有输入触发)

  1. 为什么只有按回车键才能在 Linux 驱动程序中接收到字符?
  2. 有没有什么方法可以不按回车键接收字符? (我们使用一些 ascii 协议(protocol),所以将它作为虚拟发送是没有意义的)

多谢指教冉

最佳答案

but I see the characters in the board console, only after pressing "enter" in teraterm

您描述的行为是规范阅读(又名阅读行)的特征。
您似乎想要的行为称为非规范读取(也称为原始读取或二进制读取)。

  1. why are the characters received in Linux driver only when pressing enter key ?

不,Linux 串行端口驱动程序正在接收在线路上出现的每个字符。
每个字符都被缓冲(通常在支持 DMA 的内存中),然后转发到行规程处理程序,它也缓冲接收到的数据。
用户空间程序的规范 read() 系统调用将被阻止,直到行规程处理程序检测到行终止字符。

  1. Is there some way to receive the characters without pressing the enter key ?

是的,在发出cat命令之前,将串口配置为非规范模式:

stty -F /dev/tty05 raw

或者更可能是正确的设备节点是

stty -F /dev/ttyO5 raw

或者在板上的用户空间程序中使用termios接口(interface)将串口配置为非规范模式。示例代码是 here .

有关如何正确编程串行端口的文档是 Serial Programming Guide for POSIX Operating SystemsSetting Terminal Modes Properly .

关于linux - 为什么只有在按回车后才能在串行连接中接收到字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27214759/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com