嗨,现在我写入字节数据(例如,\x00\x11\x22
)从我的 PC 到在 ttyS1 端口运行 unix 的设备的串行端口。我可以使用以下任一方式打印数据
cat /dev/ttyS1
od -x < /dev/ttyS1
两者都有效,但是使用 cat 我会打印“▒▒”。使用 od,我看到一些数据字节:
0000000 00fe
0000001
这不是我发送的(001122Hex)。
如何获得正确的十六进制显示?
编辑:tty权限设置:
stty -F /dev/ttyS1 speed 115200 cs8 -cstopb -parenb -echo time 3 min 0
编辑2: 发生了一些奇怪的事情,我不知道为什么。我尝试发送不同的数据:“1049”,然后我的程序将其发送为“\x10\x49”。 od 返回:
0000000 4910
0000002
似乎它颠倒了字节。但我现在不明白的是,如果我有重复的数字,如“\x11\x49”,一旦数据损坏。似乎所有重复的值,如 x11、x00、x22,由于某种原因都被错误地转换了。并且,任何超过 8 的值也会被错误翻译。知道为什么吗?使用 hexdump 或 od 给出相同的结果。
答案1
od 表明您在这里刚刚收到 254 Decimal,左边的 par 是“行号”。
我认为这里的问题是你如何发送数据,或者你的 /dev/ttyS1 权限,你能在这部分开发更多吗?
如果使用 xxd -r 你会看到什么?