Spørgsmål:
UART RX holder op med at læse data efter at have fungeret korrekt
FrantišekV
2018-10-16 16:34:57 UTC
view on stackexchange narkive permalink

Jeg prøver at læse en kontinuerlig strøm af data fra min enhed (laserhøjdemåler). Enheden er tilsluttet UART Rx-stiften på hindbær Pi 3B +. ​​Alt fungerer fint med denne pythonkode:

  import timeimport serialtry: ser = serial.Serial (port = '/ dev / serial0' , baudrate = 115200, paritet = serial.PARITY_NONE, stopbits = serial.STOPBITS_ONE, bytesize = serial.EIGHTBITS, timeout = 1) undtagen IOError: print ("mislykkedes ved indstilling af port \ n"), mens 1: x = ser.readline ( ) print (x)  

Men efter tilfældig mængde vellykkede læsninger får jeg denne fejl:

  Traceback (seneste opkald sidst): File "/ usr / lib / python3 / dist-packages / serial / serialposix.py ", linje 490, i læs 'enhed rapporterer beredskab til at læse, men returnerede ingen data' serial.serialutil.SerialException: enhed rapporterer beredskab til at læse, men returnerede ingen data (enhed afbrudt eller flere adgang på port?) Under håndtering af ovennævnte undtagelse opstod der en anden undtagelse: Traceback (seneste opkald sidst): Fil "/home/pi/readSerial.py", linje 25, i <module> x = ser.readline () File "/usr/lib/python3/dist-packages/serial/serialposix.py", line 497, in read raise SerialException ('read failed: {}'. Format (e)) serial .serialutil.SerialException: læsning mislykkedes: enhed rapporterer beredskab til at læse, men returnerede ingen data (enhed frakoblet eller multiple adgang på port?)  

Når jeg kører den samme kode igen, fungerer alt igen, i en kort periode (tilfældigt fra 1 til 30'ere). Jeg har brug for at læse data fra sensoren i få timer. Kan nogen hjælpe mig med at forstå problemet eller finde en løsning? Jeg er helt vild. Tak.

En svar:
Dmitry Grigoryev
2018-10-16 17:09:46 UTC
view on stackexchange narkive permalink

Kontroller, om du har deaktiveret loginprompten på / dev / serial0 . Det, du ser, kan skyldes to processer (dit script og getty ), der læser fra den samme port.

Loginprompten på seriel port kan deaktiveres ved at køre sudo raspi -config , navigerer til "Avanceret", "Seriel" og svarer "Nej" på spørgsmålet om login shell.

Alternativt kan du få en billig USB-til-UART-dongle og tilslutte din enhed til den.

Jeg deaktiverede det via raspi-condig, men jeg bekræftede det igen, og resultatet var det samme. Men så deaktiverede jeg det med: og og nu fungerer alt perfekt. Tak, jeg ville aldrig have forestillet mig, at det er sådan en fjollet ting.
@fvilagi Ja, jeg er også overrasket over, at 'raspi-config' er så ujævn.


Denne spørgsmål og svar blev automatisk oversat fra det engelske sprog.Det originale indhold er tilgængeligt på stackexchange, som vi takker for den cc by-sa 4.0-licens, den distribueres under.
Loading...