Linux串口编程在设置串口才能避免回显和双回车呢

Linux串口编程在设置串口才能避免回显和双回车呢,第1张

c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG) // 屏蔽回显

双回车是你接受端软件的处理问题,接受的时候只收CR, 不要CR+LF

如果 Linux 在读取串口数据时一直返回最后一个数据包,可能有以下几个原因:

1. 数据没有被清空:在每次读取完数据之后,需要把读取到的数据清空,否则下次读取时就会读到上次未清空的数据。可以使用`memset`函数把缓冲区清空。

2. 缓冲区溢出:当读取速度比串口接收速率快时,会造成数据的积累,导致缓冲区溢出。可以考虑增加读取间隔时间,或者增加缓冲区大小来解决该问题。

3. 波特率设置错误:如果波特率设置不正确,会导致传输数据出错。可以在代码中检查波特率是否与硬件匹配。

4. 串口状态错误:如果串口状态不正确,也会导致数据读取失败。可以使用`tcgetattr`函数获取当前的串口属性,然后再设置正确的属性。

需要进一步调试和分析才能确定具体原因。建议使用调试器或打印调试信息来进行排查。

LINUX里面,可以方便的设置输入不回显(通过设置终端属性),LINUX的开发者一般认为不回显比显示为*更安全(比如当密码只有一两位长度的时候,设置为*几乎没有一点安全性),所有系统本身不提供显示*的手段(WINDOWS提供这样的手段是安全性的定位为玩...


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

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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-01
下一篇 2023-04-01

发表评论

登录后才能评论

评论列表(0条)

保存