lib_nrf24がOSError(Errno 9)をスローしますradio.available(0)

のファイル記述子が正しくありませんオクトピを実行している私のpiに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 

このスタックオーバーフローの投稿がOSErrorについて見つかりましたとは意味しますが、これがlib_nrf24ライブラリで何が起こっているのか、そしてラジオが正常に動作するようにそれを機能させる方法を理解するのにどのように役立つのかわかりません。

投稿によるとファイルが開かれ、他の場所で閉じられるとエラーがスローされる可能性があるため、現在の環境ではファイルがまだ開いていると見なされ、ファイルを閉じようとするとこのエラーがスローされます。ライブラリ内の関連コードは単なるreturnステートメントです。

 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」「errno9」または「Badfiledescriptor」の両方に言及している投稿を検索しました。これら2つの問題の共通部分のヒットはゼロです。

lib_nrf24 githubページで、libと表示されていることに気付きましたraryは2018年5月の時点でサポートされていません。私は運が悪いですか?これらのrfモジュール用の最新のPythonライブラリは見つかりませんでした。私が見た他の唯一のアプローチは、c ++ブーストライブラリを使用して tmrh20ライブラリを使用する方法を理解することです。 …しかし、私はそれを見て理解できませんでした。

コメント

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です