vielleicht ist der Titel nicht ganz selbstsprechen…
Worum geht es: Wenn ich Daten seriell absende, komme diese „losgelöst“ an anderer Stelle im Code als Antwort an. Je nachdem wie viel - oder wenig - Mühe sich der Programmierer des seriellen Gerätes gemacht hat, kommen dann Daten ohne Bezug auf die Anfrage zurück. Wenn ich einzelne Anfragen stelle, dann kann ich mit Glück diesen Dateneingang mit der letzte Anfrage matchen.
Gleichwohl frage ich mich, ob es nicht ein Model gibt, dass es mir ermöglicht mit hoher Sicherheit die ankommenden Daten mit einer vorher durchgeführten Anfrage erfolgreich zu matchen, auch wenn eine größere Menge an Anfragen gesendet wurde.
Habt ihr so etwas schon mal erfolgreich umgesetzt?
Das kommt immer auf das Protokoll an. Ich habe gerade ein serielles Protokoll implementiert, das zu beginn immer den Nachrichtentyp sendet. Das macht es wenigstens etwas einfacher darauf zu reagieren.
Generell habe ich es so aufgebaut, dass die Scripted für senden und empfangen getrennt sind. Die empfangene Nachricht wird in eine Buffer geschrieben und dann so zerstückelt wie ich sie brauche.
Ggf. Kannst du auch die gesendeten Befehle in einen Buffer schieben und dann in Kombination auswerten.
vielen Dank für Eure ntworten. Das ist in Summe sehr unbefriedigend. Ich habe daher nach einem ganz anderem Weg gesucht und bin (wahrscheinlich) fündig geworden…
Das Gerät hat auch eine eigene Website, so das es mir mit viel Googln gelungen ist mit CURL Daten zurück zu bekommen!
Das Ergebnis von $output = curl_exec($ch); und print_r($output); sieht so aus:
Es ist soweit erst mal kein gültiges Json, da der Key nicht Inn Anführungsstrichen steht.
Es ist aber wahrscheinlich nicht zu erwarten, dass die Reihenfolge sich ändert oder die Daten mehrere Ebenen bekommen. Aus diesem Grund würde ich einfach mit String Operationen arbeiten.
…über den seriellen Zugriff kann man Daten lesen als auch setzen, gleichwohl ist es eher ein ziemlich direkter Ersatz der FB.
Das Gerät ist ein Videoprojektor von Acer. Die Funktionen der seriellen Schnittstelle sind leider mehr als bescheiden (inkl. der offiziellen Dokumentation). Wie schon oben beschrieben wollte ich mehr Funktionalitäten in mein Modul integrieren.
Über LAN kann ich jetzt bereits diverse Status auslesen und visualisieren sowie das Gerät über WOL einschalten, würde aber gerne auch auf diese Weg auch Statusänderung (z.B. Änderung des aktiven Eingangs) aus IPS heraus umsetzen.
Habe mich heute das erste Mal überhaupt mit cURL auseinandergesetzt, mein aktueller Stand des Moduls benutzt (noch) die serielle Schnittstelle.
Kann dir zu fast jedem Beamer was sagen - nur nicht zu Acer Musste mal schauen, ob du irgendwo eine Beschreibung zur Schnittstelle findest.
Kannst ja auch mal das genaue Modell posten, vlt hat jemand schon mal was damit gemacht.
Dein Acer kann nicht zufällig PJLink? Dafür hätte ich schon ein Modul
-Chris-
PS: Wie man Daten an eine serielle Schnittstelle sendet steht in der IPS Doku. Oder rechte Maustaste auf dem IO und „Befehl testen“.
Aber ich würde LAN bevorzugen.
deswegen schrieb ich oben: Seriell ist nicht so besonders toll, versuche daher spontan auf LAN umzustellen…
Frage: Lesen kann ich mit cURL, kann ich damit auch etwas setzen?