Seite 1 von 1

free com port

Verfasst: Dienstag 14. Juni 2011, 19:06
von gallego2k
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

Re: free com port

Verfasst: Dienstag 14. Juni 2011, 19:20
von 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.

Re: free com port

Verfasst: Donnerstag 16. Juni 2011, 18:19
von gallego2k
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.

Re: free com port

Verfasst: Donnerstag 16. Juni 2011, 19:24
von ceddy
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;)

Re: free com port

Verfasst: Donnerstag 16. Juni 2011, 19:50
von DaMutz
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)