0

Linux で仮想シリアル ポートからデータを読み取っています (接続されているデバイスは xbee モジュールです)。

現時点では、ポートのバッファをチェックするスレッドで読み取りが行われます。しかし、多くのデバイスの場合、これは良くありません。1 つのポートではミリ秒ごとに、別のポートでは 1 秒ごとにデータが受信される可能性があるため、CPU の負担になります。

新しいデータが利用可能になったときにのみイベントを発生させる割り込みのようなものがあるかどうかを知りたいです(このプリンシパルはマイクロコントローラーで機能することを知っています)。

これを C++ で作成するにはどうすればよいですか?

私の知識が不足しているため、この情報をどのように使用するかわかりません。私がこのようなものを持っている場合:

while(1){

   int n= PollComport(comport_number, buf, 4095);
   if(n>0){
   //make somemthing with the new data
   }
}

while ループを削除したい。epoll_wait はどこでどのように使用しますか?

4

1 に答える 1

2

それはあなたの問題ではありません。OSがそれを行います。ブロッキング読み取りまたは何らかの種類の I/O 多重化 (selectまたは などepoll_wait) を使用するだけです。あなたがする必要がある特別なことは何もありません。

于 2012-09-01T10:11:25.227 に答える