Forum: PC-Programmierung RasPi Python UART Abfrage Fehler


von Flaz (Gast)


Lesenswert?

Hallo

ich verwende einen threat im Hintergrund um einen Eingang von Daten auf 
der seriellen Schnittstelle zu überwachen (Interrupt habe ich nicht 
hinbekommen)

1
def check_uart():
2
3
  global uart_data
4
  global uart_data_available
5
  uart_data_available = False
6
7
  while True:
8
    uart_data = ser.readline()
9
    uart_data = ''.join(["{:02X}".format(e) for e in bytearray(uart_data)])
10
    if (uart_data!=""):
11
      uart_data_available = True
12
    else:
13
      uart_data_available = False

1
def main():
2
      ...
3
      start_new_thread(check_uart,())
4
      ...


immer wieder mal (konnte es noch nicht eindeutig reproduzieren) bekomme 
ich folgende Fehlermeldung:

   uart_data = ser.readline()
  File "/usr/lib/python2.7/dist-packages/serial/serialposix.py", line 
490, in read
    'device reports readiness to read but returned no data '
serial.serialutil.SerialException: device reports readiness to read but 
returned no data (device disconnected or multiple access on port?)


Kann jemand helfen?

von Chris M. (chris_appment)


Lesenswert?

Habe mal meinen Code zum Lesen angehängt.
Hat es denn schon einmal funktioniert?
Denk dran, dass beim Raspi Bluetooth deaktiviert werden muss, damit man 
die serielle Schnittstelle nutzen kann!
1
import serial 
2
port=serial.Serial(port='/dev/ttyAMA0',baudrate=9600, timeout=1.0)
3
4
def receiveCommand(self):
5
        while(port.isOpen()):
6
            if (port.inWaiting()>0): 
7
                rawdata = port.read(port.inWaiting()).decode('ascii')
8
                print(rawdata)
9
            time.sleep(0.01)

Habs aus meinem Programm rauskopiert und schnell umgeschrieben, hoffe 
ist kein Fehler beim Umschreiben passiert, einfach mal testen

: Bearbeitet durch User
von Flaz (Gast)


Lesenswert?

Chris M. schrieb:
> Hat es denn schon einmal funktioniert?

ja, es funktioniert mitunter Tage ohne Probleme...

von Chris M. (chris_appment)


Lesenswert?

Die Fehlermeldung sagt ja, dass keine Daten von deinem angeschlossenen 
Gerät gelesen werden können.
Probiere mal meine Funktion aus. Die ist so geschrieben, dass der innere 
Befehl nur ausgeführt wird, wenn Daten am Port anliegen

von devzero (Gast)


Lesenswert?

Was sagt dmesg im Fehlerfall? Ist das ein USB Adapter? Evtl. gibts da 
Kommunikationsprobleme..

Ich wuerde die Exception fangen und dann versuchen das Device neu zu 
oeffnen.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.