Android 函数tcsetattr()是否映射到文件描述符或物理端口

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

在开发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中的实际物理端口首先映射到
termiosA
的设置,并且由于某种原因没有再次更改为
termiosB
。因此,MCU和232设备之间的通信失败

你确定这个价格(125000英镑)吗?@dbasnett这个数字不重要,我只是做到了。现在我将其更改为115200以避免混淆您似乎误解了tcsettattr()的作用。它不映射任何内容,而是基于在调用中传递的指针处找到的termios结构来配置接口。