/dev/ttyAMA0 接收方正在读取以下数据: \xF8\x1-6ren">
gpt4 book ai didi

Linux 去除串口多余字符

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:12:48 24 4
gpt4 key购买 nike

在 linux 上工作,使用以下命令以 115200 波特向串口发送数据:

echo -e "\x1B\x11\x00\x00" > /dev/ttyAMA0

接收方正在读取以下数据:

\xF8\x1B\x11\x00\x00\x0D\x0A

我不希望 \xF8 作为起始字节和 \x0D\x0A 作为尾部(回车和换行字节)。我怎么能删除它们?到目前为止我发现的是

stty raw -F /dev/ttyAMA0

这会停用 \x0D,但我想摆脱 \xF8\x0A 并且没有其他选项对我有用.

最佳答案

您可以使用 echo -en 消除换行符。或者改用 printf

你是从树莓派发送的吗?每次打开连接时都会发送 0xF8(例如,通过调用 echo),这似乎是一个已知问题。我不知道是否有修复程序,但您可以通过使用串行终端程序保持连接打开以防止进一步的 0xF8

这里的第三篇文章中有一个示例,展示了如何在 bash 中使用重定向来保持连接:exec 9>/dev/ttyAMA0
http://www.raspberrypi.org/forums/viewtopic.php?t=34528&p=293067

潜在问题:
有人说这是驱动程序问题(请参阅 this answer),但据我了解,以下内容表明它与硬件相关:

http://elinux.org/RPi_Serial_Connection#Glitch_when_opening_serial_port
When the serial port is opened the voltage on TXD pulses negative for approximately 32 us (regardless of the baud rate). This pulse may be interpreted as a transmission by a device connected to the TXD pin, which could have unintended effects.

这也意味着您收到的垃圾取决于波特率。我不会依赖修复程序而是寻找解决方法。

如果您可以控制接收器,您可以让它等待一个自定义的字节序列,并且只在接收到这个序列后才开始操作。

上面的 elinux.org 链接可以给你一些其他的想法。

关于Linux 去除串口多余字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27307086/

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