2017-11-02 1 views
0

나는 Raspberry Pi 3에서 실행되는 Android Things OS의 io 핀을 관리하는 Xamarin.Android C# 클래스를 작성했습니다. 이 예외가 발생합니다 :android.os.ServiceSpecificException 발신자가 BCM26 (코드 13)을 소유하지 않음

android.os.ServiceSpecificException : 발신자가 BCM26을 보유하고 있지 않습니다 (코드 13)

에서 :

1 // setup 
2 var io = new PeripheralManagerService(); 
3 Gpio p = io.OpenGpio("BCM26"); 
4 p.SetDirection(Gpio.DirectionIn); 
5 
6 // later I read it 
7 if (p.Value == HIGH) 
8  Console.WriteLine("Pin is high"); 
9 // Exception raised 

이 문제를 해결하려면 어떻게해야합니까?

편집 : 위의 코드는 실제로 작동합니다. 원본이 멀티 스레드 였고 게시하기에 너무 복잡하기 때문에 관련 부품을 작은 샘플 코드로 추출하려고했는데 예외가 제기 된 이유에 대한 답변이 나왔습니다. Android 서비스 및 권한과는 관련이 없습니다. 내가 읽으려고했던 핀은 방향을 설정 한 후에 닫혔다. 종료 할 통화를 삭제하면이 문제가 해결되었습니다.

+0

어떤 라인에서 예외가 발생합니까? – Blundell

+0

질문을 전체 스택 트레이스로 업데이트 할 수 있습니까? 활동이 끝날 때'Gpio' 개체를 닫으시겠습니까? –

+0

줄 7은 예외를 발생시킵니다. 하지만 사실은 @ NickFelker의 의견을 읽은 후에 내가 잘못한 것을 깨달았습니다. 그것은 방향을 설정 한 후 핀이 닫혀 있기 때문입니다. 예외가 주어진 닫힌 핀을 읽으려고하면. 아주 오해의 소지가 있지만 문제는 지금 해결됩니다 :) – RespectableSlave

답변

0

핀이 열려 있어야합니다 (실제로 끝날 때까지 닫지 마십시오). 핀을 읽으려고하면 인터넷 사용 또는 녹음 오디오 권한과 같은 Android 권한으로 나를 혼란스럽게하는 수수한 예외가 발생합니다.

관련 문제