2013-03-08 4 views
3

몇 가지 센서를 모니터링하는 시스템을 구축 중이며이 센서를 기반으로 몇 가지 조명을 켜고 끕니다.Arduino 비 차단 Wifi 연결

추가 데이터 분석을 위해 해당 데이터를 중앙 서버로 보내고 Wifi 방패를 추가했습니다. 네트워크가없는 경우 시스템이 정상적으로 작동해야합니다. 그래서 내가 한 것은 루프()에서 네트워크 상태를 모니터하고 그것이 다운되면 다시 연결하는 것입니다.

이제 문제는 Wifi.begin()이 연결되거나 오류가 발생할 때까지 실행을 차단한다는 것입니다. 이 시간 동안 시스템이 응답하지 않을 수 있으므로이 허용되지 않습니다.

내가 예를 here를 들어, 아두 이노에서 스레드를 사용을 검토 한 결과,하지만이 제한 사항에 표시 :이 라이브러리와 주요 잠재적 인 문제의

하나는 사실이다 하나의 스레드가 두 번째 Thread는 현재 loop() 함수가 완료 될 때까지 호출 될 수 없으므로, 시스템이 잠기 게됩니다 ( ).

누구나 어떤 아이디어, 경험 또는 경험이 있습니까?

감사합니다,

후안

답변

0

당신이 만료 될 때 교착 상태에 빠진 차단 기능이있는 스레드를 죽이는 인터럽트하는 타이머를 만들 수 있습니다.

실제로 중요한 업데이트를 수행하려면 Timer1 library과 같은 인터럽트를 사용할 수 있습니다. 그렇게하면 코드를 차단하는 것에 대해 걱정할 필요가 없습니다.