2016-06-20 3 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(); 
} 

이렇게하면 시간 초과가되었는지 확인합니다. 유니티 개발 (while (true) 개념을 사용하는)에서 놀아온 습관은 CPU 사이클을 씹을 수 있기 때문에 루프를 최대 속도로 실행시키지 않는 것입니다. 빈 루프에 대한 간단한 1ms 지연을 던지는 것이 낫습니다.