try: serial.open() - pySerial Fehler abfangen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
arghargh
User
Beiträge: 81
Registriert: Donnerstag 4. September 2008, 22:26

try: serial.open() - pySerial Fehler abfangen

Beitragvon arghargh » Samstag 1. November 2008, 18:55

Leider funktioniert das nicht so wie ich's mir vorstelle:

Code: Alles auswählen

   ser = serial.Serial(
      port=serialport,
      baudrate=thebaudrate,
      parity=serial.PARITY_NONE,
      stopbits=serial.STOPBITS_ONE,
      bytesize=serial.EIGHTBITS,
      timeout = 1
   )
   try:
      ser.open()
   except serial.SerialException:
      exit("Cannot open serial port")


Wenn der Port aus einer anderen Anwendung geöffnet ist bekomme ich folgenden Fehler
[code=]
Traceback (most recent call last):
File "ser.py", line 692, in <module>
connect()
File "ser.py", line 554, in connect
serial_open(options.serialport,max(baudrates))
File "ser.py", line 244, in serial_open
timeout = 1
File "C:\Programme\python\lib\site-packages\serial\serialutil.py", line 171, in __init__
self.open()
File "C:\Programme\python\lib\site-packages\serial\serialwin32.py", line 53, in open
raise SerialException("could not open port %s: %s" % (self.portstr, msg))
serial.serialutil.SerialException: could not open port COM1: (5, 'CreateFile', 'Zugriff verweigert')[/code]

Wie fängt man sowas ab?
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Samstag 1. November 2008, 18:57

Indem man ``serial.serialutil.SerialException`` abfängt?!
My god, it's full of CARs! | Leonidasvoice vs Modvoice
arghargh
User
Beiträge: 81
Registriert: Donnerstag 4. September 2008, 22:26

Beitragvon arghargh » Samstag 1. November 2008, 19:03

Code: Alles auswählen

   except serial.SerialException, serial.serialutil.SerialException:


Leider der selbe Fehler. Ich dachte eigentlich, dass das Abfangen dieses Fehlers Aufgabe von serial ist?

Ich werd's morgen mal mit einem Testprogramm versuchen.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5554
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Telfs (Tirol)
Kontaktdaten:

Beitragvon gerold » Samstag 1. November 2008, 19:09

Hallo arghargh!

Der Fehler tritt wahrscheinlich schon eine Zeile vorher (``serial.Serial(...``) auf. Beim Initialisieren der Klasse wird der Port automatisch geöffnet.

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Benutzeravatar
name
User
Beiträge: 254
Registriert: Dienstag 5. September 2006, 16:35
Wohnort: Wien
Kontaktdaten:

Beitragvon name » Samstag 1. November 2008, 20:47

arghargh hat geschrieben:

Code: Alles auswählen

   except serial.SerialException, serial.serialutil.SerialException:


Leider der selbe Fehler. Ich dachte eigentlich, dass das Abfangen dieses Fehlers Aufgabe von serial ist?

Ich werd's morgen mal mit einem Testprogramm versuchen.

Code: Alles auswählen

   except (serial.SerialException, serial.serialutil.SerialException):
Deins faengt eine serial.SerialException ab und bindet sie an den Namen serial.serialutil.SerialException. Gottseidank wird das mit Python 3.0 anders, wo es dann zu "except FooError as bar" wird.

Code: Alles auswählen

>>> try:
...     raise ValueError
... except TypeError, ValueError:
...     pass
...
Traceback (most recent call last):
  File "<stdin>", line 2, in <module>
ValueError
>>> try:
...     raise TypeError
... except TypeError, ValueError:
...     print ValueError.__class__ == TypeError
...
True
>>> try:
...     raise ValueError
... except (TypeError, ValueError):
...     print "Ooops!"
...
Ooops!
>>>

 

Vielleicht hilft das Beispiel.
Ohloh | Mein Blog | Jabber: segfaulthunter@swissjabber.eu | asynchia – asynchrone Netzwerkbibliothek

In the beginning the Universe was created. This has made a lot of people very angry and has been widely regarded as a bad move.
Benutzeravatar
Trundle
User
Beiträge: 591
Registriert: Dienstag 3. Juli 2007, 16:45

Beitragvon Trundle » Samstag 1. November 2008, 21:04

@name: ``except Exception as exc`` funktioniert schon mit Python 2.6.
"Der Dumme erwartet viel. Der Denkende sagt wenig." ("Herr Keuner" -- Bertolt Brecht)
arghargh
User
Beiträge: 81
Registriert: Donnerstag 4. September 2008, 22:26

Beitragvon arghargh » Sonntag 2. November 2008, 13:43

Tatsächlich, wenn die Instanz mit Parametern erzeugt wird, wird der Port gleich geöffnet:
http://pyserial.wiki.sourceforge.net/py ... cpySerial8

Danke für die Hilfe.

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder