lib_nrf24 kaster OSError (Errno 9) Dårlig filbeskrivelse på radio.tilgjengelig (0)

Jeg bruker BLavery «s lib_nrf24-bibliotek med en nRF24L01-modul på min pi som kjører Octopi (det er ganske mye raspian for formålene her, AFAIK – her er resultatet av os-release-kommandoen).

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" 

Jeg er i stand til å sette opp radioen i henhold til denne opplæringen , men koden som venter på at radioen skal motta data;

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

kaster en OSError (errno 9) Dårlig filbeskrivelse. Her er full feilsporing:

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 

Jeg fant dette stackoverflow-innlegget om hva OSError er og betyr, men jeg er ikke sikker på hvordan dette vil hjelpe meg å finne ut hva som skjer i biblioteket lib_nrf24, og hvordan jeg får det til å fungere slik at radioen oppfører seg normalt.

Innlegget sier at dette feil kan kastes hvis en fil åpnes, og lukkes andre steder, slik at det nåværende miljøet tror at den fortsatt er åpen, og kaster denne feilen når den prøver å lukke filen. Den impliserende koden i biblioteket er bare en returerklæring;

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

Og jeg lærer ikke noe mer av å se på den tilgjengelige metoden som kaller get_status

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

Jeg har søkt etter innlegg som nevner både biblioteket lib_nrf24 og noe av «OSError» «errno 9» eller «Dårlig filbeskrivelse» og kommer med null treff for skjæringspunktet mellom disse to utgavene.

Jeg skjønner på lib_nrf24 github-siden det står lib rary er ute av støtte fra mai 2018. Har jeg lykken? Jeg kunne ikke finne et nyere python-bibliotek for disse RF-modulene. Den eneste andre tilnærmingen jeg har sett er å finne ut hvordan jeg bruker c ++ boost-bibliotekene til å bruke tmrh20-biblioteket … men jeg har sett på det og kunne ikke finne ut av det.

Kommentarer

  • Vennligst ikke ' t presenterer bare lenker for å forstå problemet ditt. De fleste av oss vil ikke følge det fordi for mye innsats .. Forklar hva ' er problemet selv slik at vi bare kan forstå det fra spørsmålet. Ta den korte Tour og besøk brukerstøtten for å få en idé om hvordan ting fungerer her.
  • @Ingo I ' Jeg har virkelig prøvd å gjøre det, jeg uttalte eksplisitt feilene jeg får, og Jeg oppsummerte innlegget jeg lenket til, og sa hva som er relevant fra det. Jeg satte koden fra biblioteket jeg koblet til i dette innlegget også. Jeg tror virkelig alt er i dette innlegget – kan du være mer spesifikk om hva jeg kunne ' har gjort annerledes?
  • @ tlfong01 Ja, jeg vet at feilen er fra pythonkoden i biblioteket. Jeg bruker bare python i dette prosjektet. Jeg prøvde å skrive ut informasjonen som get_status-metoden trenger for å returnere, men så gir utskriftsuttalelsen den samme feilen; Dårlig filbeskrivelse. Hvor kan jeg finne mer informasjon om spidev.xfer2? Spidev-biblioteket jeg har er github.com/Gadgetoid/py-spidev, og jeg vet ikke ' hva jeg skal se etter i dette biblioteket for å løse dette problemet.
  • Jeg prøvde SPI loopback-testen fra vedlegg E i innlegget du koblet til. Jeg får alle nuller. Jeg ' er ikke sikker på hva jeg skal få. Bør MOSI kobles til MISO? Jeg bruker programmet recv.py.
  • Jeg ' har sett på PyPi spidev-manualen (selv om jeg bruker Gadgetoid ' s py-spidev, i henhold til opplæringen). Jeg kan ' ikke finne ut hva spidev.xfer2 skal returnere. NRF24.NOP-verdien er bare 0xFF. Hvis jeg prøver å skrive ut (self.spidev.xfer2 ([NRF24.NOP])) (dvs. uten accessoren for å få 0-elementet), skriver utskriften ingenting, og feilen blir fortsatt kastet av denne utskriftsuttalelsen, ikke returuttalelsen som følger.

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *