| |||||||
| Registrieren | Benutzerliste | Interessengemeinschaften | Usermap | Kalender | Suchen | Heutige Beiträge | Alle Foren als gelesen markieren |
![]() |
| | LinkBack | Themen-Optionen | Thema durchsuchen |
| |||
|
Guten Tag Ich versuche ein Möller Easy Steuerrelais via serieller Schnittstelle abzufragen. Ablauf: - Via serieller Schnittstelle Abfragebefehl an die Easy senden - Die Antwort der Easy wird in eine Register Varable gelesen - Die Register Variable startet ein Script - Das Script wertet die seriellen Daten via $IPS_VALUE aus Leider ist die Länge des empfangenen Datenstroms befehlsabhängig (keine konstante Länge) und hat am Schluss des Datenstromes noch eine 2-Byte Checksumme angehängt. Da heisst, ich kann mit dem Cutter nichts machen. Die Länge des empfangenen Strings wird in Byte 2 mitgeteilt. Problem: Solange der Datenstrom nicht länger wie 8 Byte ist, funktioniert alles bestens. Ist der empfangene Datenstrom länger (zum Beispiel 14 Byte) wird das Script zweimal ausgeführt/getriggert, einmal für die ersten 8 Byte und ein zweites Mal für die restlichen 6 Byte. Kann man den seriellen Empfangsbuffer vergrössern damit IPS später triggert? oder Wie kann ich den zweigeteilten String wieder zusammensetzen? Danke für eure Hilfe Erwin |
| ||||
|
Hallo Erwin, das die Daten unregelmässig ankommen liegt am Comport, da kannst Du nichts machen. Hast Du es mal mit RegVar_GetBuffer probiert. Hier mal zur Info. Sendet die Easy ein Steuerzeichen mit als Anfang des Datenstrings, wenn ja könnte man über ein Script arbeiten.
__________________ Gruß Rainer Unmögliches wird sofort erledigt, Wunder dauern etwas länger. Geändert von RWN (06.04.09 um 09:56 Uhr) |
| |||
|
Hallo Rainer, Hallo Paresy Danke für die schnelle Hilfe. RegVar_SetBuffer/GetBuffer schaut nach einer weiteren, eleganten Lösung aus. @paresy: Etwas verwirrt mich: Du schreibst: "Bitte niemals eine String Variable für Binärdaten nehmen. Das ist langsam und kann außerdem die Settings kaputt machen" In der Refernz steht: boolean RegVar_SetBuffer ( integer $InstanzID, string $Puffer ) So wie ich das verstehe, ist $Puffer als String definiert. Bekommen ich da mit meinen binären Daten jetzt Probleme? Erwin |
| |||
|
Folgendes funktioniert: $buf = RegVar_GetBuffer(123); $buf .= $IPS_Value; WENN Datenstream vollständig Datenstream verarbeiten SONST Teilstream mit RegVar_SetBuffer(123,$buf) zwischenspeichern Der Buffer wird jeweils vom auslösenden Befehl gelöscht (siehe posting 1) Besten Dank |
![]() |
| Stichworte |
| ips_value , serielle schnittstelle , trigger |
| Themen-Optionen | Thema durchsuchen |
| |
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| USB Schnittstelle für EIB | sirko | Allgemeine Diskussion | 9 | 30.05.09 13:22 |
| Wer hat Erfahrung mit 750-654 | cali | SPS Automatisierungstechnik | 45 | 20.04.09 09:19 |
| Eibmarkt Schnittstelle via FT1.2 und Silex SX-1000U funktioniert ! | epogo | KNX/EIB, LCN | 1 | 10.03.09 04:34 |
| Hilfe !!! XComfort Schnittstelle Time out | Ironeagle1967 | Allgemeine Diskussion | 2 | 07.11.08 23:19 |
| PC Wettersensor - serielle SchnittstelleHa | Torro | Allgemeine Diskussion | 6 | 23.05.06 11:50 |