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

Antwort per Email an