Hallo zusammen, ich habe eben ein Pull Request für ein neues Feature eingestellt: Serielle Farbdisplays von 4Dsystems über das SGC Protokoll. Der Code ist so weit mit einem Display "µOled160-G1" getestet und läuft bei mir stabil.
Kurz zur Erklärung: Hardware: Benötigt wird, neben der 5V Stromversorgung, die UART und ein Output Pin für den Reset. Der wird nicht direkt an das Display angeschlossen; das Display hat einen integrierten Pull-Up und der Pin muss über einen Transistor low gezogen werden, um einen Reset zu bekommen. Funktionen: Die gesamte Initialisierung, Reset und Protokoll / serielle Verbindung wird über eine State Machine abgewickelt - hier muss man sich keine großen Gedanken machen ;-) Es gibt generell 3 Möglichkeiten, das Resultat eines Befehls (über ECMD) abzufragen: - einfach einen neuen Befehl schicken, es kommt "BUSY" wenn der letzte Befehl noch nicht fertig ist - über den ECMD "sgc result", dort wird der aktuelle Zustand angezeigt - im Menuconfig kann "ECMD senden" aktiviert werden, dann wird das, was im "sgc result" steht aktiv an die dort eingestellte IP-Adresse und den ECMD-Port geschickt. Über "sgc setip" lässt sich die IP auch noch während des Betriebs ändern (wird NICHT gespeichert, d.h. nach einem Reset des E6 ist das wieder auf Default). Systembefehle: "sgc setpwr" mit 1 oder 0 schaltet den Displaycontroller ein oder aus. Es wird empfohlen, vor der Trennung von der Stromzufuhr in diesen Zustand zu gehen. "sgc getpwr" liefert den aktuellen Zustand. Im Menuconfig kann ein Auto Timeout gesetzt werden, das nach einer einstellbaren Zeit ohne SGC-relevante Befehle das Display ausschaltet, das ist gut, wenn z.B. eine Unterbrechung der Verbindung abgefangen werden soll. Alle weiteren Befehle sind entsprechend des Datenblattes für das SGC Protokoll nachlesbar und am Ende der sgc_ecmd.c mit ihrer Parametrierung aufgelistet. Mit "sgc colour" wird die aktuelle Farbe eingestellt. Dieser Befehl, wie auch alle anderen Befehle mit Farbeinstellung, ist überladen - d.h. es kann eine Angabe in RGB 5:6:5 in 2 Bytes, wie im Datenblatt erläutert, oder aber in 3 Bytes RGB 5:5:5 (Wertebereich jew. 0...31) gemacht werden. Den Code habe ich schon mit "indent.sh" formatiert, und, so glaube ich, recht ausführlich dokumentiert. Ich freue mich über Fragen :-) Viele Grüße, Nico
_______________________________________________ Ethersex-devel mailing list Ethersex-devel@list.zerties.org https://list.zerties.org/cgi-bin/mailman/listinfo/ethersex-devel