|
|
1
4
不准确的
使用阻塞模式(即从
打开()
)如果不希望看到返回代码为零(或
学习 this answer .
您发布的代码太少(这是结束问题的理由),但您试图将数据读入
打印数组地址的地址(或整数变量的地址)不会产生任何效果(例如。 “8位十六进制数…始终与所示类似” ). 您尚未显示可能收到的任何内容。 如果您使用的是一个小的32位endian处理器,那么将字节数组作为一个长整数进行访问将颠倒每个字的字节顺序(即。 “不是预期的” ),只访问前四个字节,这可以由八个十六进制数字表示。
虽然Linux是(几乎)“一切都是文件”的操作系统之一,但这些“文件”可能并不相等。尤其是程序访问的设备文件,即。
补遗 现在您已经发布了一些初始化代码,显然还有一些错误。 不管您的编程经验如何,以下代码与注释之间的不一致是一个可能延长调试时间的缺陷。
清除ICANON标志将启用非规范输入,与注释所述相反。
termios初始化编写得很好(即使用正确的布尔运算符而不是直接赋值),但不完整(基于为非规范模式执行的现有代码)。
由于您在描述您试图做的事情方面做得很差,因此无法建议进行适当的更正。 |
|
|
2
-1
在只有16字节fifo或更少的串行端口上?我认为那行不通。 串行端口是字符设备,这有一个很好的理由——您希望以一种方式进行编码,从零字节(如果启用超时)、一字节到内部fifo的大小。即使你(试图)那样发送,也不要期望它们保持整齐。 |