SYNOPSIS
loadrt lcd fmt_strings=""Plain Text %4.4f\nAnd So on|Second Page, Next Inst""
FUNKTIONEN
- lcd (erfordert einen Fließkomma-Thread).
-
Alle LCD-Instanzen werden durch dieselbe Funktion aktualisiert.
PINS
- lcd.NN.out (u32) out
-
Über diesen Pin wird der Ausgangsbytestrom gesendet. Bei jedem Thread-Aufruf wird ein Zeichen gesendet. Es ist kein Handshaking vorgesehen.
- lcd.NN.page.PP.arg.NN (float/s32/u32/bit) in
-
Die Eingangspins haben Typen, die mit den Format-String-Bezeichnern übereinstimmen.
- lcd.NN.page_num (u32) in
-
Wählt die Seitenzahl aus. Es können mehrere Layouts definiert werden, und dieser Pin wechselt zwischen ihnen.
- lcd.NN.contrast (float) in
-
Versucht, den Kontrast des LCD-Bildschirms mit der Byte-Sequenz ESC C und dann einen Wert von 0x20 bis 0xBF (passend zur der Mesa 7I73) einzustellen. Der Wert sollte zwischen 0 und 1 liegen.
PARAMETER
- lcd.NN.decimal-separator (u32) rw
-
Legt das Dezimaltrennzeichen fest, das für Fließkommazahlen verwendet wird. Der Standardwert ist 46 (0x2E), was einem "." entspricht. Wenn ein Komma erforderlich ist, setzen Sie diesen Parameter auf 44 (0x2C).
BESCHREIBUNG
lcd takes format strings much like those used in C and many other languages in the printf and scanf functions and their variants.
Die Komponente wurde speziell zur Unterstützung des Mesa 7I73 Pendant Controllers geschrieben, kann aber auch für das Streaming von Daten an andere Zeichengeräte verwendet werden. Da das Ausgabeformat das ADM3-Terminalformat nachahmt, könnte es für das Streaming von Daten an ein serielles Gerät verwendet werden. Vielleicht sogar ein echter ADM3. Die Strings enthalten eine Mischung aus Textwerten (die direkt angezeigt werden), "escapeten" Formatierungscodes und numerischen Formatdeskriptoren. Eine detaillierte Beschreibung der Formatierungscodes finden Sie unter: https://en.wikipedia.org/wiki/Printf.
Die Komponente kann so konfiguriert werden, dass sie eine unbegrenzte Anzahl von unterschiedlich formatierten Seiten anzeigt, die mit einem HAL-Pin ausgewählt werden können.
Escaped codes
-
` \n` Fügt ein Clear-to-End-, Carriage-Return- und Line-Feed-Zeichen ein. Dies führt auch dann zu einem Zeilenvorschub und einer Löschung, wenn ein automatischer Umbruch stattgefunden hat (lcd kennt die Breite der LCD-Anzeige nicht). Um in der Spalte ganz rechts zu drucken, muss der Formatumbruch zugelassen und der
\n-Code weggelassen werden. -
\tFügt einen Tabulator ein (in der aktuellen Version sind es 4 Leerzeichen und nicht ein echter Tabulator). -
\NNfügt das durch den Hexadezimalcode NN definierte Zeichen ein. Da das Zeichen , in der Formatzeichenfolge zur Trennung von LCD-Instanzen verwendet wird, muss es in der Formatzeichenfolge durch \e2C dargestellt werden (das Dezimaltrennzeichen wird anders gehandhabt). -
\\Fügt einen buchstäblichen \ ein.
Numerische Formate
lcd differs slightly from the standard printf conventions. One
significant difference is that width limits are strictly enforced to
prevent the LCD display wrapping and spoiling the layout. The field
width includes the sign character so that negative numbers will often
have a smaller valid range than positive. Numbers that do not fit in
the specified width are displayed as a line of asterisks (**********).
Jedes Format beginnt mit einem "%"-Symbol. (Für ein buchstäbliches % verwenden Sie "%%"). Unmittelbar nach dem %-Zeichen können die folgenden Modifikatoren verwendet werden:
-
" " (Leerzeichen) Füllt die Zahl in der angegebenen Breite mit Leerzeichen auf. Dies ist die Standardeinstellung und nicht unbedingt erforderlich.
-
"0" Die Zahl wird mit der Zahl 0 auf die angegebene Breite aufgefüllt.
-
"+" Erzwingt die Anzeige eines +-Zeichens vor positiven Zahlen. Dieses (wie auch das --Zeichen) erscheint bei einer Zahl mit Leerzeichen unmittelbar links von den Ziffern und bei einer Zahl mit 0 an der äußersten linken Position.
-
"1234567890" Eine numerische Eingabe (außer der führenden 0 oben) definiert die Gesamtzahl der anzuzeigenden Zeichen einschließlich des Dezimaltrennzeichens und des Vorzeichens. Diese Zahl kann so viele Ziffern wie nötig enthalten, die maximale Feldbreite beträgt jedoch 20 Zeichen. Die inhärente Präzision des Datentyps "double" bedeutet, dass bei mehr als 14 Ziffern Fehler in den niedrigstwertigen Ziffern auftreten können. Die ganzzahligen Datentypen füllen nie mehr als 10 Dezimalstellen.
Nach dem width specifier sollte der decimal specifier stehen. Dies kann nur ein Punkt (.) sein, da das Komma (,) als Instanzentrennzeichen verwendet wird. Derzeit greift lcd nicht auf die Lokalisierungs-Informationen zu, um das richtige Trennzeichen zu bestimmen, aber der HAL-Parameter B<decimal-separator> kann verwendet werden, um ein beliebiges Trennzeichen zu wählen.
Nach dem Dezimaltrennzeichen sollte eine Zahl stehen, die angibt, wie viele Dezimalstellen angezeigt werden sollen. Bei ganzzahligen Formaten wird dieser Eintrag ignoriert.
Alle oben genannten Modifikatoren sind optional, aber um eine Dezimalgenauigkeit anzugeben, muss der Dezimalpunkt vor der Genauigkeit stehen, z. B. wie in "%.3f". Die Standard-Dezimalpräzision ist 4.
Die unterstützten Zahlenformate sind:
-
%f %F (for example, %+09.3f): These create a floating-point type HAL pin. The example would be displayed in a 9-character field, with 3 places of decimals, as a decimal separator, padded to the left with 0s and with a sign displayed for both positive and negative. Conversely a plain %f would be 6 digits of decimal, variable format width, with a sign only shown for negative numbers. Both %f and %F create exactly the same format.
-
%i %d (For example %+ 4d): Creates a signed (s32) HAL pin. The example would display the value at a fixed 4 characters, space padded, width including the "+" giving a range of +999 to -999. %i and %d create identical output.
-
%u (for example %08u): Creates an unsigned (u32) HAL pin. The example would be a fixed 8 characters wide, padded with zeros.
-
%x, %X: Creates an unsigned (u32) HAL pin and displays the value in Hexadecimal. Both %x and %X display capital letters for digits ABCDEF. A width may be specified, though the u32 HAL type is only 8 hex digits wide.
-
%o: Creates an unsigned (u32) pin and displays the value in octal representation.
-
%c: Creates a u32 HAL pin and displays the character corresponding to the value of the pin. Values less than 32 (space) are suppressed. A width specifier may be used, for example %20c might be used to create a complete line of one character.
-
%b: This specifier has no equivalent in printf. It creates a bit (boolean) type HAL pin. The b should be followed by two characters and the display will show the first of these when the pin is true, and the second when false. Note that the characters follow, not precede the "b", unlike the case with other formats. The characters may be "escaped" Hex values. For example "%b\FF " will display a solid black block if true, and a space if false and "%b\7F\7E" would display right-arrow for false and left-arrow for true. An unexpected value of E indicates a formatting error.
Pages: The page separator is the "|" (pipe) character (if the actual character is needed then \7C may be used). A "Page" in this context refers to a separate format which may be displayed on the same display.
Instances: The instance separator is the comma. This creates a completely separate lcd instance, for example to drive a second lcd display on the second 7I73. The use of comma to separate instances is built in to the modparam reading code so not even escaped commas "\," can be used. A comma may be displayed by using the \2C sequence.
AUTOR
Andy Pugh
LIZENZ
GPL