Com-Port Buffer reseten

Hallo zusammen,

nach meinem Umstieg auf W7 bekomme ich meine PHP-Scripte mit FREAD einfach nicht mehr zum Laufen.

Habe das Wochenende damit verbracht, alles auf Serial-Port mit Registervariable umzustellen.

Es läuft auch alles soweit. Nur in unregelmässigen Abstände bekomme ich eine Verschiebung
der gelesenen Daten . Dann habe ich Quasi die letzte Ziffer des vorherigen Datensatz immer als erste.
Da ich unterschiedlich lange Pakete ohne definierten Start und Stop habe, muß ich die Stellen zählen bis ich den
String auswerten kann.

Derzeit bekomme ich es nur hin wenn ich dann denn COM-Port (LAN-Seriell) abschalte, den Port in IPS schließe, Den Port wieder einschalte und in IPS wieder öffne.

Wie bekomme ich den kompletten Buffer nach einer Übertragung gelöscht damit der nächste wieder Leer anfängt? Stehe da irgendwie auf dem Schlauch

Vielen Dank für eure Mühe

Udo

Hi Udo!

Ist bei mir schon ein wenig her, dass ich damit gearbeitet habe, aber Buffer leeren ging glaub ich so:

RegVar_SetBuffer(12345, "");

RegVar_SetBuffer — IP-Symcon :: Automatisierungssoftware

Grüße,
Chris

Hallo Chris,

ich hatte es so gemacht.

Regvar_setBuffer($_IPS[‚INSTANCE‘], „“);

Vielleicht habe ich irgendwo aber noch einen Sprung
wo ich den Befehl nicht ausführen.

Muß man das in der RegisterVariable sehen das der geleert wurde?

Ich habe nach dem Einlesen Buffer Länge 0 da stehen. Das sollte doch das Zeichen dafür sein das der leer ist oder?

Hoffe nur das es nicht irgendwie mit dem LAN-Seriellport zu tun hat.

Gruß Udo

Soweit ich mich erinnere wird im Debug der RegVar auch der Buffer immer angezeigt. Von daher ja, sollte man dort im Debug sehen :slight_smile:

Grüße,
Chris

Mal bis zum nächsten Fehler warten und schauen was dann im Debug drin steht.

Ich glaube das ich den Hund gefunden habe.

Ich löschen den Buffer mehr nicht in dem Script was aus der Registervariable ausgeführt wird,
sondern in meinem Script welches den Befekl an die COM-Schnittstelle schickt.

Dort mache ich
RegVar_SetBuffer(12345, „“);
einen kleine Sleep und schicke dann
regvar_sendtext(12345, „xxxx“)

Seit dem hat sich mein Script nicht mehr verschluckt.

Buffer sollte man immer brav leeren, ansonsten gibt’s Müll :slight_smile: Aber wenn es jetzt klappt bei dir, dann ist es ja gut :cool:

Grüße,
Chris