2012-01-19 3 views
0

私は現在、2つのXBeeを使用しています。そのうちの1つは自分のコンピュータに接続されていて、もう1つは自作のUAVです。飛行機のXbeeは常に飛行機についてのデータを送信しています。私はC++インターフェイスを使ってそのデータを取得したいのですが、Form(私はWinFormsとも呼ばれていると思います)。私のフォームにはGoogle Earthが埋め込まれたWebブラウザがあり、GE地図上でその航空機の位置を更新したいと考えています。私はXBeeからデータを取得する方法を知っていますが、データを収集して入力なしで常に実行するコードを取得する方法はわかりません。形式で関数を常時実行する(C++)

このプロジェクトは、他の人がそれを落としたプロジェクトです。私はこのコードを "継承"しており、コメントの不足のために私は少し混乱しています。

+0

通常、このようなデータ収集は処理されません。 –

答えて

1

GetMessage()の代わりにPeekMessage()を使用するようにメッセージポンプを変更することができます。これにより、メッセージループがアイドル状態のときにメッセージが利用可能になったときに処理したり、何か他のことを行うことができます。

for (bool running = true; running;) 
{ 
    // check for any window messages. this operation does not block 
    // if no messages are available. 
    ::MSG message; 
    const ::BOOL fetched = ::PeekMessage(&message, 0, 0, 0, PM_REMOVE); 
    if (fetched) 
    { 
     // process window message. 
     TranslateMessage(&message); 
     DispatchMessage(&message); 

     // need to check explicitly for WM_QUIT message, since the "false" 
     // return value is already used to mean "there were no messages". 
     running = (message.message != WM_QUIT); 
    } 
    else 
    { 
     // no messages available, thread is idle. take time to check 
     // auxiliary input source. if no auxiliary input is available 
     // and checking (and processing) the auxiliary inputs is very 
     // fast, consider adding an extra ::Sleep() call to avoid hogging 
     // up the CPU. 
    } 
} 

.NETベースのアプリケーションでは、あなたがApplication.Idleイベントを見てみることをお勧めします:

のWin32 APIを使用して

が、それはのようになります。

関連する問題