2016-06-20 11 views
1

Windows 10のIoTを初めて使用しています。私は数年間マイクロコントローラを使っていましたが、おそらくそれは私の悪い習慣です。私はそれらの間に特定の組み合わせが見つかるまで、いくつかのGPIOに「ping」する必要があるアプリケーションを構築しています。一度検出されると、グラフィカルインタフェースはアニメーションを行う必要があります。Windows 10のIoTループGPIOのバックグラウンド

私の問題は以下の通りです。グラフィカルインターフェイスを表示している最中にバックグラウンドでループするのが最善の方法は何ですか?

私は現在、次のようにやっている:

InitGPIO();

timer = new DispatcherTimer(); 
timer.Interval = TimeSpan.FromMilliseconds(0.05); 
timer.Tick += Timer_Tick; 
if (init) 
    timer.Start(); 

private void Timer_Tick(object sender, object e) 
{ 
     //Here I loop the GPIO. I f a comkbination is found, the graphical interface is triggered. 
} 

良い方法はありますか?

ありがとうございます!

答えて

0

多くのセンサーとコントローラーには独自のポーリングレートが設定されているため、特にタイマーに自分自身を接続しないことをお勧めします.GpioPinには、値が変更されたときに対応する独自のイベントレシーバーがあります。

すべてをイベ​​ント受信者にバインドすると、メインプログラムクラスでは、すべてが初期化された後でループすることができます。while(true) {}

私はテスト用の小さなプロジェクトしか書いていないので、自分の机から立ち上がって自分のraspiの電源を忘れることが多いので、私はループにタイムアウトして焼くので、5分後に自動的にシャットダウンします。

var timeout = DateTime.Now.AddMinutes(5); 

while (DateTime.Now < timeout) { 
    Task.Delay(1000).Wait(); 
} 

タイムアウトが経過すると、毎秒チェックされます。 Unity開発(これもwhile(真)の概念を使用しています)で遊んでいる習慣は、実際にループを最大速度で実行させないようにすることです。CPUサイクルを噛んでしまいます。空のループに単純な1ミリ秒の遅延を入れても良いです。

関連する問題