나는 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 서비스 및 권한과는 관련이 없습니다. 내가 읽으려고했던 핀은 방향을 설정 한 후에 닫혔다. 종료 할 통화를 삭제하면이 문제가 해결되었습니다.
어떤 라인에서 예외가 발생합니까? – Blundell
질문을 전체 스택 트레이스로 업데이트 할 수 있습니까? 활동이 끝날 때'Gpio' 개체를 닫으시겠습니까? –
줄 7은 예외를 발생시킵니다. 하지만 사실은 @ NickFelker의 의견을 읽은 후에 내가 잘못한 것을 깨달았습니다. 그것은 방향을 설정 한 후 핀이 닫혀 있기 때문입니다. 예외가 주어진 닫힌 핀을 읽으려고하면. 아주 오해의 소지가 있지만 문제는 지금 해결됩니다 :) – RespectableSlave