我在我的android设备和232设备之间开发232通信时遇到了一个非常奇怪的问题。我想在我的 MCU 和 232 设备之间建立通信,232 设备的波特率为 115200。
我所做的如下:我open()
一个端口ttyO0
并获得了一个文件描述符fd1
。我tcsetattr(fd1,TCSAFLUSH,termiosA)
用来映射termiosA
到fd1
. termiosA
波特率 9600 所以它与我的 232 设备不兼容。
后来我破坏了之前创建的内容,并通过更改fd1
为fd2
和termiosA
来再次执行上述过程termiosB
。termiosB
波特率115200 。
但是,我发现它仍然无法正常工作。我猜原因是该tcsetattr()
函数实际上是在物理端口和设置之间进行映射,而不是在文件描述符和设置之间进行映射。所以我的 CPU 中的实际物理端口被映射到 first 的设置,并且由于某种原因termiosA
没有再次更改。termiosB
因此 MCU 和 232 设备之间的通信失败。