Befehlssyntax
Alle Befehle sind gleich aufgebaut:
Start |
Befehlscode |
Parameter |
Abschluss |
Hinweis |
# |
XXX |
123, $52, %01101010, "Hello"; R0 |
LF |
Nach Strings mit ; trennen, sonst mit , oder ; |
ASCII : 35 (0x23) UniCode: 35 (0x23 0x00) |
3-stellige Buchstabenfolge |
Angabe der Parameter |
ASCII : 10 (0x0A) UniCode: 10 (0x0A 0x00) |
CR 13 (0x0D) ist optional |
Alle Befehle beginnen mit "#", gefolgt von Buchstaben, Ziffern und Kommas bzw. Semikolon. Übertragen werden diese als ASCII- or Uni-Codes.
Manchmal ist es sinnvoll einzelne Parameter hexadezimal oder binär zu übertragen (siehe "Parameter").
Auf jeden Fall werden alle Befehle und Daten zusätzlich in ein ShortProtokoll bzw.SmallProtokoll verpackt. Für erste "Gehversuche" empfiehlt es sich dieses vorübergehend abzuschalten (Pin DPROT auf GND).
Parameter
Zahlen |
||
123 |
dezimale Übergabe als ASCII-Zeichen |
|
$5A |
hexadezimale Übergabe als ASCII Zeichen |
|
%1010001 |
binäre Übergabe als ASCII Zeichen |
|
5-8 |
Übergabe eines Bereichs. Befehle die Eigenschaften mehrerer Objekte beeinflussen können als Objektbereich übergeben werden. In diesem Fall Objekt-ID 5,6,7,8 |
|
?x |
Code von einem Zeichen (Unicode/ASCII) |
|
R0 ... R499 |
Übergabe des Registerwertes |
|
Q0 ... Q499 |
Indizierte Übergabe des Registerwertes (Pointer) → R (R0 ... R499) |
|
(....) |
Kalkulationsstring Ergebnis übernehmen |
|
G len32 data.... |
Übergabe von binären Daten: len32 gibt die Datenlänge an (bereits als binärer 32-Bit Wert) |
|
!index! |
Werte des Indexes aus einem Stringfile übernehmen |
|
A0..A499I0..maxindex |
Zugriff auf Array: A3I42 or A(R0)I(R5+1) |
|
Strings |
||
"string" oder 'string' |
normale Stringübergabe |
|
"str" 32 "str" |
Normaler String mit beliebigen Codes, welche mit in den Gesamtstring eingetragen werden |
|
"str1"; "str2" |
Semikolon bildet den Stringabschluss, wichtig bei der Übergabe zweier Strings oder wenn andere Parameter folgen. |
|
S0 ... S499 |
Stringregister übernehmen |
|
T0 ... T499 |
Stringregister aus Registernummer übernehmen S(R0 ... R499) |
|
U"Hello" |
Zeichen nach dem U als 16 Bit Unicode (bis zum nächsten # oder V auch CR + LF) |
|
V"Hello" |
Zeichen nach dem V als 8 Bit ASCII (bis zum nächsten # oder U auch CR + LF) |
|
!index! |
String des Indexes aus einem Stringfile übernehmen |
|
A0..A499I0..maxindex |
Zugriff auf Array: A3I42 or A(R0)I(R5+1) |
|
X0 = Zuletzt gefundene RegEx; X1..X9 =Subranges der Regular Expressions |
Die einzelnen Parameter werden mit Leerzeichen (' '), Komma (','), Semikolon (';') oder Punkt ('.') getrennt. Für die Trennung von Strings ist ein Semikolon zwingend erforderlich.
Befehlsabschluss
Der Befehlsabschluss ist immer ein LF (0x0A). Ein vorangestelltes CR (0x0D) ist erlaubt und wird ignoriert.
Kommentare
- Display/direkte Kommunikation
In Makrofiles können Kommentarzeilen eingefügt werden. Ein Kommentar beginnt mit #- und gilt bis zum Zeilenende / Befehlsabschluss (LF). Gilt für die direkte Kommunikation über eine der seriellen Schnittstellen zur Laufzeit. - uniTFTDesigner
Hier beginnt ein Kommentar mit /** und gilt bis zum Ende der Zeile. Um Speicherplatz im Display zu sparen, werden diese Kommentare nicht im Display abgelegt. Kommentar erscheinen im uniTFTDesigner in grau.
Kalkulationen
Jeder numerische Parameter kann durch eine Kalkulation ersetzt werden. Die Kalkulation muss in Klammern () eingeschlossen als Parameter übergeben werden. Unter den Kalkulationsbefehle finden Sie eine Auflistung aller Operationen, darunter mathematische und logische, aber auch Modul-bezogene, wie zum Beispiel Uhrzeit oder Objekteigenschaften auslesen sowie Portfunktionen.
Pfadangaben
Es gibt drei Arten eine Datei mit/ohne Pfadangabe zu lokalisieren. Achtung: Die Groß- und Kleinschreibung ist bei der Pfad- und Dateiangabe zu berücksichtigen.
Absolute Pfadangabe |
</Ordner/Ordner/Ordner/Projekt/picture/Test.epg> |
#PPP 1,</Ordner/Ordner/Ordner/Projekt/picture/Test.epg>,100,100 |
|
Relative Pfadangabe |
<p:/picture/Test.epg> |
#PPP 1,<p:/picture/Test.epg>,100,100 |
|
Standard Pfad |
"Test.epg" |
#PPP 1,"Test.epg";100,100 (Achtung: Semikolon nach dem Text) |
- Die absolute Pfadangabe sollte verwendet werden, um mit Dateien außerhalb des gesetzten Projektpfades zu arbeiten.
- Der Projektpfad, welcher durch den Befehl #XPS definiert wird, dient der Vereinfachung. Es entfällt die Angabe der übergeordneten Verzeichnisse. Durch die Eingabe von "p:" vor der Pfadangabe wird der Projektpfade automatisch eingefügt.
- Weiterhin gibt eine Reihe von Standard Ordner, die automatisch unterhalb des Projektordners erstellt werden und nie verändert werden dürfen. Sonst kann es passieren, dass Befehlsparameter, die automatisch auf diese Ordner zugreifen, nicht mehr funktionieren! Unterordner sind in diesem Bereich nicht erlaubt.
Winkel, Definition
Winkel werden im mathematischen Drehsinn angegeben, d.h. gegen den Uhrzeigersinn.
Die Eingabe von negativen Winkeln ist möglich.
Objektbereich, Ansprechen von mehreren Objekten gleichzeitig
Bei Befehlen, welche die Eigenschaft besitzen ein oder mehrere Objekte (gekennzeichnet durch: Object-id...) zu beeinflussen, kann die Angabe des Objektbereichs durch einen Bindestrich "-" angegeben werden. So löscht z.B. der Befehl #ODI 1-99 alle Objekte mit den IDs 1 bis 99.
Alternativ kann auch eine Liste mehrerer Objekte im Befehl übergeben werden. z.B. #ODI 1,2,5,100
Normalerweise erwartet das Display alle Daten/Parameter als ASCII Zeichen, also z.B. für den Wert 4242 die 4 Ziffern 0x34 0x32 0x34 0x32.
Für Mikrokontrolleranwendungen bedeutet es jedoch einen erhöhten Aufwand, 8-, 16- oder 32-Bit Werte für die Übertragung in ASCII-Darstellung umzuwandeln. Mit der Anweisung "G len32 data...." können diese Werte direkt übergeben werden. Im folgenden Beispiel soll das Register 27 auf den Wert 4242 gesetzt werden.
Nach den Befehlsbuchstaben (in gelb) folgt die Kennung "G" für binäre Daten. Die Länge errechnet sich wie folgt: Register ID (16 Bit) + Registerinhalt (32 Bit) = 6 Byte. Die Übertragung der Daten erfolgt jeweils im little-endian Format (Intel):
Da zusammen mit dem Schalter "G" eine Längenangabe der binären Daten erfolgt, kann danach die Übertragung in ASCII fortgesetzt werden.