free com port

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.
Antworten
gallego2k
User
Beiträge: 2
Registriert: Dienstag 14. Juni 2011, 18:35

Hallo,
habe einen Motorcontroler und die Ansteuerung für diesen in python realisiert. Alles supergut doch bei Absturz und nochmaligem Start ist de comport bussy und es läuft nichts mehr.
Spreche den comport über die dll`s des Controlers an. open_com(port_no) und close_com(port_no)
Wenn aber während der Motorbewegung ein Programmabbruch erfolgt ist der port nach wie vor belegt, d.h. open_com(port_no) liefert bei Neustart einen Fehler.
Kennt jemand ein tool, welches einen rs232 mit Angabe dessen Nummer in jungfräulichkeit versetzt? (Reinitialisierung)
Gruß, gallego
deets

Sowas sollte normalerweise das System machen.

Du koenntest ausserdem versuchen, einen Signalhandler (falls es das unter Windows gibt) oder auf auesserster Eben ein try/catch in dein Programm einzubauen, dass den Comport dann wieder freigibt.
gallego2k
User
Beiträge: 2
Registriert: Dienstag 14. Juni 2011, 18:35

Danke @ deets, an die try/catch-Behandlung dachte ich auch schon. Wird wohl die beste Möglichkeit sein den comport im catch-Fall zu schliessen.
ceddy
User
Beiträge: 79
Registriert: Mittwoch 25. August 2010, 12:01

Ich stimme zu das, es mit try/catch eine gute lösung.
Wenn er trotzdem mal blockiert ist einmal hardware komplet aus und von allen stromquellen trennen mist sollte das auch gehen;)
Benutzeravatar
DaMutz
User
Beiträge: 202
Registriert: Freitag 31. Oktober 2008, 17:25

ich verwende jeweils pyserial unter Windows und da prüfe ich vor dem öffnen des Ports ob er schon offen ist und schliesse ihn dann bevor ich erneut öffne:

Code: Alles auswählen

ser = serial.Serial()
ser.port = 0
if ser.isOpen():
    ser.close()
        
ser = serial.Serial(0, 9600, timeout=10)
Antworten