Android デバイスと 232 デバイス間の 232 通信の開発中に、非常に奇妙な問題に遭遇しました。MCU と 232 デバイス間の通信をセットアップしたいのですが、232 デバイスのボーレートは 115200 です。
私が行ったことは次のとおりです。私open()
はポートttyO0
を取得し、ファイル記述子を取得しましたfd1
。tcsetattr(fd1,TCSAFLUSH,termiosA)
にマップtermiosA
するために使用しますfd1
。のtermiosA
ボーレートは 9600 であるため、私の 232 デバイスとは互換性がありません。
その後、以前に作成したものを破棄し、上記のプロセスを、 、に変更fd1
して再度実行しました。また、ボーレートは 115200 です。fd2
termiosA
termiosB
termiosB
ただし、まだ機能していないことがわかりました。tcsetattr()
その理由は、ファイル記述子と設定の間のマップではなく、関数が実際に物理ポートと設定の間のマップを行うためだと思います。そのため、CPU の実際の物理ポートは最初の設定にマップされ、何らかの理由でtermiosA
再度変更されませんでした。termiosB
したがって、MCU と 232 デバイス間の通信は失敗します。