mikrocontroller.net

Forum: PC-Programmierung RasPi Python UART Abfrage Fehler


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
Autor: Flaz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

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

def check_uart():

  global uart_data
  global uart_data_available
  uart_data_available = False

  while True:
    uart_data = ser.readline()
    uart_data = ''.join(["{:02X}".format(e) for e in bytearray(uart_data)])
    if (uart_data!=""):
      uart_data_available = True
    else:
      uart_data_available = False

def main():
      ...
      start_new_thread(check_uart,())
      ...


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?

Autor: Chris M. (chris_appment)
Datum:

Bewertung
0 lesenswert
nicht 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!
import serial 
port=serial.Serial(port='/dev/ttyAMA0',baudrate=9600, timeout=1.0)

def receiveCommand(self):
        while(port.isOpen()):
            if (port.inWaiting()>0): 
                rawdata = port.read(port.inWaiting()).decode('ascii')
                print(rawdata)
            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
Autor: Flaz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Chris M. schrieb:
> Hat es denn schon einmal funktioniert?

ja, es funktioniert mitunter Tage ohne Probleme...

Autor: Chris M. (chris_appment)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: devzero (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.