lib_nrf24가 radio.available (0)에서 OSError (Errno 9) 잘못된 파일 설명자를 발생시킵니다.

를 사용하고 있습니다. Octopi를 실행하는 파이에 nRF24L01 모듈이있는 BLavery의 lib_nrf24 라이브러리 (여기서는 AFAIK의 목적을 위해 거의 rasbpian입니다. 여기에 os-release 명령의 결과가 있습니다).

PRETTY_NAME="Raspbian GNU/Linux 10 (buster)" NAME="Raspbian GNU/Linux" VERSION_ID="10" VERSION="10 (buster)" VERSION_CODENAME=buster ID=raspbian ID_LIKE=debian HOME_URL="http://www.raspbian.org/" SUPPORT_URL="http://www.raspbian.org/RaspbianForums" BUG_REPORT_URL="http://www.raspbian.org/RaspbianBugs" 

이 자습서 에 따라 라디오를 설정할 수 있지만 라디오를 기다리는 코드는 데이터 수신;

 while not radio.available(0): time.sleep(1/100) 

OSError (errno 9) 잘못된 파일 설명자가 발생합니다. 전체 오류 추적은 다음과 같습니다.

Traceback (most recent call last): File "main.py", line 72, in <module> main() File "main.py", line 18, in main while not radio.available(0): File "/home/pi/smarthome/lib_nrf24.py", line 506, in available status = self.get_status() File "/home/pi/smarthome/lib_nrf24.py", line 293, in get_status return self.spidev.xfer2([NRF24.NOP])[0] OSError: [Errno 9] Bad file descriptor 

이 stackoverflow 게시물 에서 OSError가 무엇인지 발견했습니다. 의미합니다.하지만 이것이 lib_nrf24 라이브러리에서 무슨 일이 일어나고 있는지 파악하는 데 어떻게 도움이되는지, 그리고 라디오가 정상적으로 작동하도록 만드는 방법을 잘 모르겠습니다.

파일이 열려 있고 다른 곳에서 닫히면 오류가 발생할 수 있으므로 현재 환경에서 파일이 아직 열려 있다고 생각하고 파일을 닫으려고 할 때이 오류를 발생시킵니다. 라이브러리의 암시 코드는 반환 문일뿐입니다.

 def get_status(self): return self.spidev.xfer2([NRF24.NOP])[0] 

그리고 get_status를 호출하는 사용 가능한 메소드를 살펴보면 더 이상 배우지 않습니다.

 def available(self, pipe_num=None): if not pipe_num: pipe_num = [] status = self.get_status() result = False ... 

lib_nrf24 라이브러리와 “OSError” “errno 9″또는 “Bad file descriptor”를 모두 언급하는 게시물을 검색했으며이 두 문제의 교차점에 대해 적중 횟수가 0이되었습니다.

lib_nrf24 github 페이지에서 lib rary는 2018 년 5 월부터 지원되지 않습니다. 운이 좋지 않습니까? 이러한 rf 모듈에 대한 최신 Python 라이브러리를 찾을 수 없습니다. 내가 본 유일한 다른 접근 방식은 tmrh20 라이브러리를 사용하기 위해 C ++ 부스트 라이브러리를 사용하는 방법을 알아내는 것입니다. …하지만 그것을 살펴 봤지만 알아낼 수 없었습니다.

댓글

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다