linux – 为什么只有在按Enter键后才能通过串行连接收到字符?

linux – 为什么只有在按Enter键后才能通过串行连接收到字符?,第1张

概述我有一个简单的PC到板连接使用串行(9600,没有奇偶校验,8位,没有hw流) 我在PC上用teraterm打开简单的终端*并在teraterm和board中输入密钥,我就是这么做的 cat /dev/ttyO5 我在范围内看到了按下的字符,但是只有在teraterm中按下“enter”后才会看到控制台中的字符(好像它们存储在Linux驱动程序中的某些FIFO中,只能输入触发器) >为什么只有在按 我有一个简单的PC到板连接使用串行(9600,没有奇偶校验,8位,没有hw流)
我在PC上用teraterm打开简单的终端*并在teraterm和board中输入密钥,我就是这么做的
cat /dev/ttyO5

我在范围内看到了按下的字符,但是只有在teraterm中按下“enter”后才会看到控制台中的字符(好像它们存储在linux驱动程序中的某些FIFO中,只能输入触发器)

>为什么只有在按下回车键时才能在linux驱动程序中收到字符?
>有没有办法在不按回车键的情况下接收字符? (我们使用ascii的一些协议,因此将它作为虚拟发送是没有意义的)

谢谢你的建议,

解决方法

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

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

why are the characters received in linux driver only when pressing enter key ?

不,linux串行端口驱动程序正在接收线路上显示的每个字符.
每个字符都被缓冲(通常在DMA存储器中),然后转发到线路规则处理程序,该处理程序也缓冲接收的数据.
userland程序的规范read()系统调用被阻止,直到行纪律处理程序检测到行终止字符.

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接口在板上的用户空间程序中将串行端口配置为非规范模式.示例代码是here.

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

总结

以上是内存溢出为你收集整理的linux – 为什么只有在按Enter键后才能通过串行连接收到字符?全部内容,希望文章能够帮你解决linux – 为什么只有在按Enter键后才能通过串行连接收到字符?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/1035861.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存