シリアルポートを介してモーターコントローラーと通信するためのgtkアプリケーション(C ++)を作成しています。私はLinuxUbuntuとtermioslibを使用しています。それを行うための最良の解決策についてアドバイスが必要です。だから私が持っている制約は次のとおりです:1-リクエストを送信すると、コントローラーがメッセージを返送します2-エラーが発生した場合、コントローラーはいつでもエラー通知を送信できます3-リクエストは[CRで終了したANSII文字列です] 4-コントローラーの答えは、[CR][NL]で終わるANSII文字列です。
(3)と(4)の関係で、シリアルポートをCANONICALモードで構成するのが適切だと思いました。GUI +(2)のおかげで、マルチスレッドについて考えました。シリアルポートにユーザー要求を書き込むメインスレッドと、コントローラーの応答を読み取るための他の無限スレッドです。いい考えだと思いますか?
2番目の質問:マルチスレッドを使用している場合、必要なときにデータを書き込めるようにしたいので、おそらくpthread_cond_waitを使用して、書き込み中に読み取りスレッドを停止/スリープする方法を見つける必要があります。私は正しいですか?ポーリングと選択機能を見たことがありますが、それらを本当に理解しておらず、正規モードと互換性があるかどうかわかりません。
マルチスレッドとシリアルポートを使い始めています。私はグーグル、フォーラムでたくさんのことを読みました...しかし、大量の情報は初心者にとって少し圧倒されます。
ご協力ありがとうございました。