Android 函数tcsetattr()是否映射到文件描述符或物理端口
在开发android设备和232设备之间的232通信时,我遇到了一个非常奇怪的问题。我想在我的MCU和232设备之间建立通信,232设备的波特率为115200 我所做的工作如下: 我Android 函数tcsetattr()是否映射到文件描述符或物理端口,android,linux,serial-port,Android,Linux,Serial Port,在开发android设备和232设备之间的232通信时,我遇到了一个非常奇怪的问题。我想在我的MCU和232设备之间建立通信,232设备的波特率为115200 我所做的工作如下: 我open()一个端口ttyO0,并获得一个文件描述符fd1。我使用tcsetattr(fd1,TCSAFLUSH,termiosA)将termiosA映射到fd1。termiosA的波特率为9600,因此与我的232设备不兼容 后来,我取消了之前创建的内容,并通过将fd1更改为fd2,将termiosA更改为term
open()
一个端口ttyO0
,并获得一个文件描述符fd1
。我使用tcsetattr(fd1,TCSAFLUSH,termiosA)
将termiosA
映射到fd1
。termiosA
的波特率为9600,因此与我的232设备不兼容
后来,我取消了之前创建的内容,并通过将fd1
更改为fd2
,将termiosA
更改为termiosB
再次执行上述过程。并且termiosB
的波特率为115200
然而,我发现它仍然不起作用。我猜原因是
tcsetattr()
函数实际上是在物理端口和设置之间进行映射,而不是在文件描述符和设置之间进行映射。因此,我的CPU中的实际物理端口首先映射到termiosA
的设置,并且由于某种原因没有再次更改为termiosB
。因此,MCU和232设备之间的通信失败 你确定这个价格(125000英镑)吗?@dbasnett这个数字不重要,我只是做到了。现在我将其更改为115200以避免混淆您似乎误解了tcsettattr()的作用。它不映射任何内容,而是基于在调用中传递的指针处找到的termios结构来配置接口。