ECMDScript: Unterschied zwischen den Versionen
Habo (Diskussion | Beiträge) (→ECMD Scripting) |
Habo (Diskussion | Beiträge) (→ECMD Scripting) |
||
Zeile 17: | Zeile 17: | ||
# echo BELIEBIGER_TEXT | # echo BELIEBIGER_TEXT | ||
+ | * keiner der Werte für VERGLEICH, OPERATOR oder KONSTANTE darf Leerzeichen enthalten, da anhand der Leerzeichen der Ausdruck geparst wird | ||
* VERGLEICH kann eine VARIABLE oder ein ECMD sein | * VERGLEICH kann eine VARIABLE oder ein ECMD sein | ||
** zur Unterscheidung wird der VARIABLE ein % vorangestellt | ** zur Unterscheidung wird der VARIABLE ein % vorangestellt | ||
− | * OPERATOR kann folgendes sein: eq ne OK ! == != > < >= <= | + | * OPERATOR kann folgendes sein: "eq" "ne" "OK" "!" "==" "!=" ">" "<" ">=" "<=" |
− | ** Textvergleiche sind: eq und ne | + | ** Textvergleiche sind: "eq" und "ne" |
− | ** | + | ** Zahlenvergleiche sind: "==" "!=" ">" "<" ">=" "<=" |
+ | ** Logische Vergleiche sind: "OK" und "!" | ||
+ | *** bei logischen Vergleichen wird die KONSTANTE ignoriert, dort muss aber dennoch irgendwas angegeben werden (z.b. X) | ||
* DATEI muss aus dem Dateisystem kommen, komprimierte Dateien aus dem inline System ist aber nicht möglich | * DATEI muss aus dem Dateisystem kommen, komprimierte Dateien aus dem inline System ist aber nicht möglich | ||
* Die ZEILENNUMMER gibt eine Zeilennummer aus der DATEI an. Andere Werte oder Konstellationen sind unsinnig | * Die ZEILENNUMMER gibt eine Zeilennummer aus der DATEI an. Andere Werte oder Konstellationen sind unsinnig | ||
− | * Die Leerzeichen sind wichtig. Insbesondere bei 'if' | + | * Die Leerzeichen sind wichtig, sonst kann nicht richtig geparset werden. Insbesondere bei 'if' |
* Die Anzahl der VARIABLEN ist begrenzt, das kann aber in der Menuconfig geändert werden | * Die Anzahl der VARIABLEN ist begrenzt, das kann aber in der Menuconfig geändert werden | ||
* Die Länge einer Zeile ist begrenzt auf den ECMD Buffer. (ca 50 Zeichen) | * Die Länge einer Zeile ist begrenzt auf den ECMD Buffer. (ca 50 Zeichen) |
Version vom 28. Juni 2009, 17:55 Uhr
ECMD Scripting
Scripting soll dazu dienen ohne Änderung an der Firmware Scripte zu ermöglichen.
Dafür gibt es diese Befehle mit entsprechenden Parametern:
- wait MILLISEKUNDEN
- set VARIABLE WERT
- get VARIABLE
- inc VARIABLE
- dec VARIABLE
- if ( VERGLEICH OPERATOR KONSTANTE ) then ECMD
- call DATEI
- exit
- goto ZEILENNUMMER
- rem BELIEBIGER_TEXT
- echo BELIEBIGER_TEXT
- keiner der Werte für VERGLEICH, OPERATOR oder KONSTANTE darf Leerzeichen enthalten, da anhand der Leerzeichen der Ausdruck geparst wird
- VERGLEICH kann eine VARIABLE oder ein ECMD sein
- zur Unterscheidung wird der VARIABLE ein % vorangestellt
- OPERATOR kann folgendes sein: "eq" "ne" "OK" "!" "==" "!=" ">" "<" ">=" "<="
- Textvergleiche sind: "eq" und "ne"
- Zahlenvergleiche sind: "==" "!=" ">" "<" ">=" "<="
- Logische Vergleiche sind: "OK" und "!"
- bei logischen Vergleichen wird die KONSTANTE ignoriert, dort muss aber dennoch irgendwas angegeben werden (z.b. X)
- DATEI muss aus dem Dateisystem kommen, komprimierte Dateien aus dem inline System ist aber nicht möglich
- Die ZEILENNUMMER gibt eine Zeilennummer aus der DATEI an. Andere Werte oder Konstellationen sind unsinnig
- Die Leerzeichen sind wichtig, sonst kann nicht richtig geparset werden. Insbesondere bei 'if'
- Die Anzahl der VARIABLEN ist begrenzt, das kann aber in der Menuconfig geändert werden
- Die Länge einer Zeile ist begrenzt auf den ECMD Buffer. (ca 50 Zeichen)
Weitere Erläuterungen zu den Befehlen sind in der Ecmd Reference
Beispiele für ECMD Script Aufrufe
wait 100 ; wartet 100ms echo hello world ; gibt 'hallo welt' aus set 1 0 ; setzt Variable 1 auf 0 set 2 6 ; setzt Variable 2 auf 0 inc 1 ; incrementiert Variable 1 get 1 ; liefert den Wert von Variable 1 zurück get 2 ; liefert den Wert von Variable 2 zurück if ( whm eq 0:23 ) then echo hello ; führt das ECMD "whm" aus und vergleicht textuell mit "0:23", ; wenn wahr dann wird "echo hello" ausgeführt if ( %1 < 3 ) then date ; ist der Inhalt von Variable 1 kleiner als 3, dann wird "date" ausgeführt
Beispiele für ECMD Script in Dateien
Dazu auf einem "NICHT INLINE" Dateisystem ein Script ablegen z.b. test1.es
Hinweise:
- UNIX Zeilenumbruch in Dateien
- Dateiendung ".es"
- nicht im inline vfs ablegen, da die inline Dateien gezipped sind
- Aufruf mit "call <scriptdateiname>"
Beispiel 1:
echo run script! wait 100 echo do inc set 1 5 echo do get get 1 exit