Python liesst nur für paar Sekunden den Port aus

Python auf Einplatinencomputer wie Raspberry Pi, Banana Pi / Python für Micro-Controller
Peter54
User
Beiträge: 4
Registriert: Sonntag 3. Dezember 2017, 10:23

Python liesst nur für paar Sekunden den Port aus

Beitragvon Peter54 » Sonntag 3. Dezember 2017, 10:29

  1. import serial
  2.  
  3.  
  4. ser = serial.Serial(port="/dev/rfcomm0",baudrate=9600,timeout=1)
  5.  
  6. try:
  7.     ser.isOpen()
  8.     print("Serial ist open")
  9. except:
  10.     print("Serial is not open")
  11.     exit()
  12.  
  13.  
  14. if (ser.isOpen()):
  15.     try:
  16.         while(1):
  17.             print(ser.readline())
  18.  
  19.     except Exception:
  20.         print("fehler")
  21.  
  22. else:
  23.     print("joo")
  24.  






Die Daten werden von einen Hc05 an den Raspi geschickt und von Python aus wird der Port ausgelesen.
Nur auf einmal funktioniert es nicht mehr mit den Port auslesen,wenn es mal klappt :K hört er nach paar Sekunden wieder auf



Hier ist ein Bild:
[img]
https://picload.org/view/dridloiw/bilds ... -.png.html
[/img]
Benutzeravatar
__deets__
User
Beiträge: 2177
Registriert: Mittwoch 14. Oktober 2015, 14:29

Re: Python liesst nur für paar Sekunden den Port aus

Beitragvon __deets__ » Sonntag 3. Dezember 2017, 12:22

Deine selbstgebaute Fehlerbehandlung verhindert leider, das man da etwas substantielles sagen kann. Nimm die mal raus, damit man die eigentliche Fehlermeldung sieht. Und poste die hier natürlich.
Sirius3
User
Beiträge: 7069
Registriert: Sonntag 21. Oktober 2012, 17:20

Re: Python liesst nur für paar Sekunden den Port aus

Beitragvon Sirius3 » Sonntag 3. Dezember 2017, 13:14

@Peter54: um da etwas sagen zu können, muß ersteinmal die „Fehlerbehandlung" weg, das ist nämlich nur eine Fehlerverschleierung. Die unsinnige Prüfung, ob eine Port, den man eben geöffnet hat, auch wirklich offen ist, findet man überall ist aber unnötig. `if` und `while` brauchen keine Klammern.

  1. import serial
  2.  
  3. with serial.Serial(port="/dev/rfcomm0", baudrate=9600, timeout=1) as ser:
  4.     for line in ser:
  5.         print(line.strip())


Welche Fehlermeldung kommt dann hier?
Peter54
User
Beiträge: 4
Registriert: Sonntag 3. Dezember 2017, 10:23

Re: Python liesst nur für paar Sekunden den Port aus

Beitragvon Peter54 » Sonntag 3. Dezember 2017, 15:33

Code: Alles auswählen

 '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?)
Benutzeravatar
__deets__
User
Beiträge: 2177
Registriert: Mittwoch 14. Oktober 2015, 14:29

Re: Python liesst nur für paar Sekunden den Port aus

Beitragvon __deets__ » Sonntag 3. Dezember 2017, 15:50

Na die Fehlermeldung ist doch recht eindeutig. Entweder ein anderer Prozess greift ebenfalls auf die Schnittstelle zu, oder das BT Gerät ist unzuverlässig verbunden. Welche von den Möglichkeiten musst du rausfinden, das können wir nicht.
Peter54
User
Beiträge: 4
Registriert: Sonntag 3. Dezember 2017, 10:23

Re: Python liesst nur für paar Sekunden den Port aus

Beitragvon Peter54 » Sonntag 3. Dezember 2017, 19:59

Wenn ich das Skript starte zeigt er mir nur für paar Sekunden die Sensoren-daten an bis er wieder abbricht.

Ich möchte nur die Daten die per Bluetooth versendet werden, einfach mit den Raspberry empfangen.
Benutzeravatar
__deets__
User
Beiträge: 2177
Registriert: Mittwoch 14. Oktober 2015, 14:29

Re: Python liesst nur für paar Sekunden den Port aus

Beitragvon __deets__ » Sonntag 3. Dezember 2017, 20:25

Das habe ich schon verstanden. Aber das Problem hat nichts mit Python bzw. deiner Programmierung zu tun. Sondern entweder hast du noch irgendwen/irgendetwas anderes, das dieses Bluetooth Geraet ansprechen will (zB ueber cron dein Skript mehrfach gestartet, oder irgend etwas anderes), oder du hast ein Problem mit der Verbindungsqualitaet. Wenn letzteres der Fall ist, musst du die entweder verbessern, oder dein Programm so umschreiben, das es mit gelegentlichen Verbindungsabbruechen zurecht kommt.
Peter54
User
Beiträge: 4
Registriert: Sonntag 3. Dezember 2017, 10:23

Re: Python liesst nur für paar Sekunden den Port aus

Beitragvon Peter54 » Sonntag 3. Dezember 2017, 22:06

Ich danke für deine Hilfe.....


Hiermit kommt auch meine letzte Frage.

Kannst du mir Beispiel schreiben, wie ich das mache das Python die Unterbrechung ignoriert?

Also damit ich mir ein Bild machen könnte.


Vg Peter
Benutzeravatar
__deets__
User
Beiträge: 2177
Registriert: Mittwoch 14. Oktober 2015, 14:29

Re: Python liesst nur für paar Sekunden den Port aus

Beitragvon __deets__ » Sonntag 3. Dezember 2017, 22:10

Du musst nur eine while-Schleife um das Ganze legen, in welcher du die Ausnahme "serial.serialutil.SerialException" abfaengst, und danach wird dann wieder alles neu aufgemacht

  1. import serial
  2.  
  3. while True:
  4.      try:
  5.           with serial.Serial(port="/dev/rfcomm0", baudrate=9600, timeout=1) as ser:
  6.               for line in ser:
  7.                   print(line.strip())
  8.      except serial.serialutil.SerialException:
  9.            print("retry")
  10.  

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder