SerialPort verträgt sich nicht mit Modul

Den Serial Port zu öffnen funktioniert ohne Probleme.


IPS_SetProperty($comPort, 'Open', true);
IPS_ApplyChanges($comPort);

Wenn ich dann aber den Serial Port wieder schließen will, hängt sich das Modul und dann schlussendlich auch IP-Symcon auf :eek:
Wobei der Befehl IPS_SetProperty noch ein TRUE zurück gibt.
Bei IPS_ApplyChanges ist es dann vorbei.


IPS_SetProperty($comPort, 'Open', false);
IPS_ApplyChanges($comPort);

Warum willst du überhaupt die Einstellungen ändern.
Das ist Aufgabe vom User, den Port manuell zu schließen, wenn er die Verbindung trennen will.
Michael

Weil sich der Port ab und zu aufhängt.
Liegt wohl am billigen USB to Ethernet Adapter, oder am Treiber der diesen dann als Com am Server zur Verfügung stellt.

Wenn ich dann den Port schließe und dann wieder öffne funktioniert die Abfrage wieder.

Also für den Moment habe ich das so gelöst.
Funktioniert zwar, kommt mir aber irgendwie nicht richtig vor.


IPS_SetProperty($comPort, 'Open', false);
IPS_RunScriptText('IPS_ApplyChanges(' . $comPort . ');');

Das kommt drauf an.
Wenn du z.b. dich mit Registermessage auf die Änderung vom Status des IO registriert hast, kannst du damit auch deadlocks bauen :slight_smile:

Zum Aufhängen:
Ich habe ein ähnliches verhalten beim Onkyo Receiver. Darum sende einmal in der Stunde eine Status Anfrage.

Aber wenn du einen LAN/Serial Adapter benutzt, warum nutzt du dann nicht TCP oder UDP um die Daten zu senden?
Die meisten günstigen können das besser als mit ein virtual ComTreiber. Meistens ist ja der Treiber das Problem.
Michael