Zurück   IP-Symcon Community Forum > IP-Symcon 2.x > Scripte, PHP, SQL

Antwort
 
LinkBack Themen-Optionen Thema durchsuchen
  #1 (permalink)  
Alt 06.04.09, 09:18
Junior Member
 
Registriert seit: Sep 2008
Ort: Zentralschweiz
Beiträge: 24
Standard IPS_VALUE und serielle Schnittstelle

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
Mit Zitat antworten
  #2 (permalink)  
Alt 06.04.09, 09:49
Benutzerbild von RWN
RWN RWN ist offline
Super Moderator
 
Registriert seit: Jan 2007
Ort: Nidda(Hessen)
Beiträge: 5,969
Standard

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)
Mit Zitat antworten
  #3 (permalink)  
Alt 06.04.09, 10:15
Benutzerbild von paresy
Administrator
 
Registriert seit: Feb 2005
Ort: Sarkwitz
Beiträge: 6,370
Standard

Die Lösung mit dem RegVar_SetBuffer/GetBuffer ist gut. Die Tatsache, dass das Skript doppelt ausgeführt wird, sollte ja kein Problem darstellen. (Bitte niemals eine String Variable für Binärdaten nehmen. Das ist langsam und kann außerdem die Settings kaputt machen)

Da das Script über RegVar auch seriell ausführt wird, musst du keine Angst haben, dass "Daten" gleichzeitig oder verschoben ausgewertet werden. Es wird alles nacheinander abgearbeitet.

paresy
Mit Zitat antworten
  #4 (permalink)  
Alt 06.04.09, 10:39
Junior Member
 
Registriert seit: Sep 2008
Ort: Zentralschweiz
Beiträge: 24
Post

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
Mit Zitat antworten
  #5 (permalink)  
Alt 06.04.09, 15:08
Benutzerbild von paresy
Administrator
 
Registriert seit: Feb 2005
Ort: Sarkwitz
Beiträge: 6,370
Standard

Das war auf IP-Symcon Variablen bezogen. Im PHP Skript kannst du natürlich alles machen - Das beeinflusst ja IPS nicht.

paresy
Mit Zitat antworten
  #6 (permalink)  
Alt 06.04.09, 17:11
Junior Member
 
Registriert seit: Sep 2008
Ort: Zentralschweiz
Beiträge: 24
Standard

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
Mit Zitat antworten
Antwort

Stichworte
ips_value , serielle schnittstelle , trigger

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


Ä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


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:07 Uhr.


Powered by vBulletin® Version 3.8.4 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO 3.6.0