Ubuntu12.04を実行しているBeagleBoardで実行されるホームオートメーションプロジェクトのプログラムを作成する必要があります。プログラムの機能は次のとおりです。
シリアルポート(私の場合はLinuxバージョンに既存のFTDIドライバーを使用する仮想COMポート)からデータを取得します。XBEEモジュールはUSBポートに接続され、USBポートは、Zigbeeプロトコルを介して受信し、Beagleボードにシリアルに送信します。
上記のデータをMySQLDBにダンプします。
TCP / IPプロトコルを介してコマンドを送信し、TCP/IPを介して要求された情報を送信するタブレットからの指示を聞きます。小さなデータの場合もあれば、データの連続ストリームの場合もあります。
上記の機能を実装しました。詳細は以下のとおりです。
シリアルの読み取りと書き込みに使用したコードは、次のWebサイトhttp://www.teuniz.net/RS-232/で提供されているヘッダーファイルを使用しています。while(1)ループを使用して、シリアルポートを継続的に読み取り、値をフェッチします。このために別のスレッドを作成しました。
MySQLDBにデータをダンプするための別のスレッドを作成しました。
TCP/IPサーバー用の別のスレッド。将来、複数のクライアント接続を受け入れる機能が追加されたときに、スレッドはより多くのスレッドを生成する可能性があります。
私の質問は次のとおりです。
1GhZ ARM 7コアを備えた組み込みプラットフォームで実行されていることを考えると、複数のスレッドを生成するこのプログラミング方法は優れたプログラミング方法ですか?
それを行うためのより良い方法はありますか?
シリアルポート経由で同時に読み書きできる方法を教えてください。これを行うには、読み取り機能と書き込み機能を別々のスレッドに再度配置する必要がありますか?