Hallo liebe IP-Symcon-User,
ich steuere schon seit Jahren einen Wechselrichter über den Com-Port an. Ein script sendet eine Folge von Befehlen zur Sollwertvorgabe, gemäß Protokoll des Herstellers. Ein typische Befehl sieht folgendermaßen aus:
Bislang hatte ich den entsprechenden Sollwert direkt in verschieden an sonsten gleiche Scripte direkt eingegeben.
Jetzt möchte ich aber nur noch ein Scrpit verwenden, wo der entsprechende Sollwert eingelesen und dann variabel an die Stelle plaziert wird. Prinzipiell soll das dann folgendermaßen aussehen:
Leider ist es mir bislang nicht gelungen die Variable so zu formatieren, dass sie korrekt gesendet wird.
Im Debug der Schnittstelle stehen an der Stelle auch vier 2-Stellige Blöcke anstatt ein 2stelliger Block so wie es auch sein sollte. Es scheint sich vielleicht um ein Datentypproblem zu handeln.
Hat jemand eine Idee?
Man kann das Problem vielleicht auch besser fassen:
zwei comport-Befehle sollen im Prinzip gleich funktionieren, den gleichen Binärcode zum Empfäger senden:
In der zweiten Zeile entspricht das Ergebnis in der vorherigen Berechnung ebenfalls dem Wert 9C, was auch über den echo Befehl im Ausgabefenster so dargestellt wird.
Beim debug Fesnster steht aber folgendes(siehe unten):
Der Fehler ist dort zu erkennen, wo die vier Blöcke in einer Zeile stehen. Wenn man die entsprechenden Zeichen direkt in die
Funktion schreibt, steht dort nur ein Zweierblock, wie bei den anderen TRANSMIT Zeilen.
Ich hoffe, dass das Problem jetzt klarer erkennbar ist.
Wenn du das wirklich so gemacht hast schickt er dir ja nicht den Inhalt der Variablen $I_S_hex sondern er schickt \x$I_S_hex als Zeichenkette.
Was passiert denn wenn du
COMPort_SendText($comport_ID, „\x“ . $I_S_hex);
da rein schreibst? Der . ist glaub ich der concat Befehl in PHP ohne da jetzt nachzuschauen.
Hallo teichhei,
hat leider nicht geklappt, es werden im Debug Fenster drei Dopppelblöcke angezeigt.
Ich habe aber noch eine weitere Frage: kann man mit einer if oder case Abfrage prüfen, ob eine Zahl in einem Interval liegt oder muss man 2 Abfragen verschachteln?
ich spreche den Ser-Port wie folgt an um einen String an einen IR Lesekopf zu senden und damit Daten abzufragen.
Das funktioniert, vielleicht hilft es Dir weiter.
SPRT_SendText(43536 /*[Ser Port eHz IR Lesekopf 300,7,1,E 4RI USB 1]*/, chr(0x2f).chr(0x3f).chr(0x21).chr(0x0d).chr(0x0a)); // ersten String an IR schnittstelle senden
Hallo IPS-User,
ich habe den letzten Vorschlag gerade getestet und es hat so erstmal funktioniert. Ich muss das jetzt nochmal komplett testen, aber ich glaube, dass es klappt.