를 사용하고 있습니다. 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 ++ 부스트 라이브러리를 사용하는 방법을 알아내는 것입니다. …하지만 그것을 살펴 봤지만 알아낼 수 없었습니다.
댓글
- 제발 ' 문제를 이해하기위한 링크 만 제공하지 않습니다. 대부분의 노력으로 인해 문제를 따르지 않을 것입니다 .. ' 문제가 무엇인지 직접 설명하세요. 질문을 통해서만 이해할 수 있습니다. 간단한 둘러보기 를 수행하고 도움말 센터 를 방문하세요. a> 여기에서 어떻게 작동하는지 알 수 있습니다.
- @Ingo ' 정말 그렇게하려고 노력했으며 발생한 오류를 명시 적으로 설명했습니다. 제가 링크 한 포스트를 요약해서 그와 관련된 내용을 말하고이 포스트에서 링크 한 라이브러리의 코드도 넣었습니다. 이 게시물에서-제가 ' 다르게 할 수 있었던 일에 대해 더 구체적으로 말씀해 주시겠습니까?
- @ tlfong01 예, 오류가 Python 코드에서 비롯된 것임을 압니다. 도서관. 이 프로젝트에서는 파이썬 만 사용하고 있습니다. get_status 메서드가 반환해야하는 정보를 인쇄하려고했지만 print 문에서 동일한 오류가 발생합니다. 잘못된 파일 설명자. spidev.xfer2에 대한 자세한 정보는 어디에서 찾을 수 있습니까? 내가 가지고있는 spidev 라이브러리는 github.com/Gadgetoid/py-spidev이며,이 문제를 해결하기 위해이 라이브러리에서 무엇을 찾아야하는지 ' 알지 못합니다.
- 링크 한 게시물의 부록 E에서 SPI 루프백 테스트를 시도했습니다. 나는 모두 0을 얻습니다. ' 무엇을 받아야하는지 잘 모르겠습니다. MOSI를 MISO에 연결해야합니까? recv.py 프로그램을 사용하고 있습니다.
- ' PyPi spidev 매뉴얼을 살펴 봤습니다 (Gadgetoid를 사용하고 있지만 ' s py-spidev, as per the tutorial). ' spidev.xfer2가 무엇을 반환해야하는지 알 수 없습니다. NRF24.NOP 값은 0xFF입니다. (self.spidev.xfer2 ([NRF24.NOP]))를 인쇄하려고하면 (즉, 0 요소를 얻기위한 접근 자없이) 출력은 아무것도 인쇄하지 않고 여전히 return 문이 아닌이 print 문에 의해 오류가 발생합니다. 다음과 같습니다.