'-------------------------------------------------------------
'  Brevi istruzioni per Theremino Automation
'  Leggete il file completo Theremino_Automation_Help_ITA.pdf
'-------------------------------------------------------------

' ESEGUIRE IL PROGRAMMA
' Premere il pulsante EDIT e regolare "Speed" e "Zoom".
' Usare una Speed bassa per controllare la esecuzione del programma.
' Alzare Speed a 1000 istruzioni per secondo per una esecuzione "normale".
' Con Speed al massimo il consumo di CPU aumenta.

' PAROLE CHIAVE USABILI
' Nella barra di stato inferiore vengono visualizzate le parole usabili.
' Mentre si compone la riga di istruzioni le parole cambiano.

' ERRORI
' Gli errori vengono visualizzati con una riga rossa.
' La barra di stato inferiore mostra alcune informazioni sull'errore.

' CORREGGERE GLI ERRORI
' Cancellare partendo da destra.
' Cancellare fino a che la riga di stato inferiore non inizi piu' con ERROR.
' Riscrivere seguendo le istruzioni della riga di stato.

' LE ISTRUZIONI UNA PER UNA
' Beep                  - Emette un breve suono.
' Button N Slot         - Pulsante premuto se il valore dello Slot supera 500.
' Button N Text         - Si usa per cambiare testo ai pulsanti.
' Button N Enabled      - Abilita il pulsante "N" (con N da 1 a 32).
' Button N Disabled     - Disabilita il pulsante "N" (con N da 1 a 32).
' Controls OpenTextBox  - Apre la casella di testo da usare con "Print".
' Controls CloseTextBox - Chiude la casella di testo.
' Controls ClearTextBox - Svuota la casella di testo.
' For v1 = 1 To 5       - Esegue cinque volte le istruzioni tra FOR e NEXT.
'                          (si può anche aggiungere la parola Step alla fine)
' Next                  - La esecuzione torna alla riga FOR
' Exit					- La esecuzione esce dal ciclo ForNext
' GoSub  LABEL          - La esecuzione salta alla LABEL (e torner con Return).
' GoTo   LABEL          - La esecuzione salta alla LABEL.
' If CONDIZIONE         - Se la condizione è vera la esecuzione prosegue.
' Else                  - Se la condizione è falsa le esecuzione prosegue qui.
' EndIf                 - Fine della esecuzione condizionale.
' Key k GoSub LABEL     - La esecuzione salta alla LABEL (e tornerà con Return).
' Key k GoTo LABEL      - La esecuzione salta alla LABEL (k è un tasto).
' PressKeys KEYS        - I tasti vengono premuti (anche con SHIFT CTRL e ALT)
' Label                 - Etichetta destinazione di GoSub, GoTo e pulsanti.
' Load Slots            - Carica tutti gli Slot(da 0 a 999) dal file "_Slots"
' Load Vars             - Carica le variabili (V1..V99 e S1..S99) dal file "_Vars"
' Load nomeDelFile      - Carica immagini, video, suoni, pagine WEB o programmi.
' Load Pause            - Ferma suoni e video in pausa.
' Load Play             - Fa ripartire suoni e video che erano in pausa.
' Load Position SEC.    - Nuova posizione per suoni e video in secondi e frazioni.
' Load Stop             - Chiude definitivamente suoni e video.
' Load Hide             - Torna alla normale visualizzazione del programma.
' Option GlobalKeys En. - Con "Enabled" si abilita la tastiera anche senza "focus"
' Option GlobalKeys Di. - Con "Disabled" si disabilita la tastiera senza "focus"
' Option Speed 1..9     - Velocità di esecuzione da 1 a 100 000 righe per secondo.
' Print ESPRESSIONE     - Il testo viene scritto nella riga di stato inferiore.
' Return                - Ritorna alla riga dell'ultimo Gosub o pulsante premuto.
' Save Slots            - Salva tutti gli Slot(da 0 a 999) nel file "_Slots"
' Save Vars             - Salva le variabili (V1..V9 e S1..S9) nel file "_Vars"
' Select ESPRESS.       - Inizia il costrutto Select/Case
' Case ESPRESSIONE      - Confronta con la espressione del Select
' CaseElse              - Parte da eseguire se tutti i Case precedenti falliscono
' EndSelect             - Fine del costrutto Select/Case
' Slot(N) = ESPRESS.    - Il numero o il valore calcolato viene scritto nello Slot N
' Slot N = ESPRESS.     - Un modo alternativo di scriverlo (senza parentesi).
' Slot N = COMMAND      - SlotZero commands are: Sleep Reset Recognize Calibrate.
' SlotText(N) = "abcd"  - I caratteri "abcd" vengono scritti nello SlotText N
' SlotText N = "abcd"   - Un modo alternativo di scriverlo (senza parentesi).
' Stop                  - Ferma il programma fino a che non si preme un pulsante.
' End                   - Esce definitivamente dalla esecuzione del programma.
' Wait CONDIZIONE       - Ferma il programma fino a che la condizione diventa vera.
' Wait Seconds N        - Ferma il programma per N secondi (anche numeri decimali).
' Wait Key NOME-TASTO   - Ferma il programma fino a che viene premuto il tasto.
' Variable Numeric nn   - Dichiarazione di variabile numerica definita dall'utente
' Variable String str   - Dichiarazione di variabile stringa definita dall'utente
' V1..V99 = ESPRESS.    - Variabili che possono contenere numeri per i calcoli.
' S1..S99 = ESPRESS.    - Variabili che possono contenere stringhe di testo.
' V1..V99 = Input       - Richiesta all'utente di immettere un numero.
' S1..S99 = Input       - Richiesta all'utente di immettere una stringa di testo.
' Window Sizable        - Finestra con dimensioni variabili
' Window Maximized      - Finestra massimizzata
' Window FullScreen     - Finestra a schermo intero

' SCRIVERE SU UN FILE
' Save StringToFile s1 s2   - Appende una riga con la stringa s1 al file s2
' Save DeleteFile s2        - Elimina il file s2
' I nomi dei file non contengono il percorso (esempio: "TestFile.txt")
' Il percorso dei file è sempre nella cartella "Files"
' La cartella "Files" viene creata automaticamente accanto a "Automation.exe"

' LE ESPRESSIONI
' Le espressioni possono contenere funzioni, operatori, variabili e costanti.

' LE FUNZIONI
' Slot(number) DecodeCommandSlot(n)
' Sin(v) Cos(v) Asin(v) Acos(v) Tan(v) Atan(v) Atan2(v, v) Sqrt(v)
' Abs(v) Sign(v) Min(v, v) Max(v, v) Mod(v, mod)
' Pow(v, v) Exp(v) Exp2(v) Exp10(v) Log(v) Log2(v) Log10(v) Int(v) Round(v)
' Mid(string, index) Mid(string, index, len) Len(string) Trim(string)
' Left(string, len) Right(string, len) PadLeft(str, places) PadRight(str, places)
' Replace(str, oldStr, newStr) UCase(string) LCase(string) WCase(string)
' Chars(string, number)
' Now() Today() Date(year, month, day) ElapsedTime Rnd
' COM_Status COM_Received COM_Portnames MouseX MouseY MouseXP MouseYP MouseButtons
' GetCursorPixelColor GetPixelColor(x,y) GetColorRed(c) GetColorGreen(c) GetColorBlue(c) 
' GetColorHue(c) GetColorSaturation(c) GetColorLightness(c) GetColorIndex(c) 
' GetSaturatedColorName(c) GetNearestColorName(c) CommandText()
' GetSeparatedStringCount(str) GetSeparatedStringCount(str, separator)
' GetSeparatedString(str) GetSeparatedString(str, separator)
' Key(str) DecodeXML(str) FormatXML(str) FormatXML(str,n)
' Limit(n, Min, Max) LimitReached()

' LE FUNZIONI DI CONVERSIONE
' Chr(n) Asc(str) Bin(n) FromBin(Str) Hex(n) FromHex(Str)
' Format(v, style) Format(v) Str(v, style) Str(v)

' GLI OPERATORI E LE COSTANTI
' And Or False True CRLF CR LF CLS NBSP TAB Math_PI Math_E Infinity

' VARIABILI DEFINITE DALL'UTENTE - ESEMPI
' Variable Numeric number
' Variable Numeric Pippo
' Variable String  Pluto

' LE VARIABILI PREDEFINITE
' v1 v2 v3 ... v98 v99   - Variabili numeriche con decimali
' s1 s2 s3 ... s98 s99   - Variabili stringa (usare "" per il testo)

' LE CONDIZIONI
' Le condizioni sono espressioni che terminano con Vero o Falso.
' Vero o Falso viene determinato da confronti (> < = >= <= <>).
' In alcuni casi si considera falso lo ZERO e vero ogni altro numero.

' GLI EVENTI
' Label EventStop               - Chiamata quando il programma si ferma
' Label EventTimer              - Chiamata dieci volte al secondo
' Label Event_CommandsFromCobot 
'  - Chiamato quando c'è un comando nello "Slot_CommandsFromCobot"
'  - Il testo del comando si legge con la funzione "CommandText"

' L'ISTRUZIONE "Key"
' L'esecuzione salta a una Label quando si preme un tasto della tastiera.
' I tasti validi sono:
' 0..9 / A..Z / F1..F12 / Left / Right / Up / Down / Space / Esc

' LE ISTRUZIONI "Option GlobalKeys Enable" e "Option GlobalKeys Disable"
' Normalmente l'istruzione Key e la funzione Key() ricevono i tasti
'  solamente se la applicazione Automation è selezionata e non minimizzata.
' Con "Option GlobalKeys Enable" i tasti funzonano sempre.
' Con "Option GlobalKeys Disable" si torna al funzionamento normale.

' L'ISTRUZIONE "Option Speed n"
' Le regolazioni normali sono:
' Option Speed 0 = la velocità viene reimpostata come indica il cursore regolatore
' Option Speed 5 = 20 istruzioni al secondo (esecuzione lenta di prova)
' Option Speed 7 = 1000 istruzioni al secondo (esecuzione veloce)
' Option Speed 8 e 9 incrementano il lavoro della CPU (usare solo per cicli brevi)

' AZZERARE IL CONSUMO DI CPU ANCHE CON SPEED 9
' Aggiungere "Wait 0.001" alla fine di ogni loop.
' Minimizzare la finestra principale.
' Oppure caricare una immagine statica (con: Load xxx.jpg)

' CONSIGLI
' Premere RUN per eseguire le righe seguenti.
' Usare lo "Slot Viewer" per vedere e modificare i valori degli Slot.

' ESEMPIO DI ESECUZIONE CONDIZIONALE
Label 1
	If Slot(1) < 500
		Gosub 2
	Else
		Gosub 3
	EndIf
Goto 1

' ESEMPIO CHE COPIA IN CONTINUAZIONE LO SLOT 1 NELLO SLOT 2
Label 2
	v1 = Slot(1)
	Slot 2 = v1
Return

' ESEMPI di copia, con o senza parentesi, e senza passare da una variabile
Label 3
	Slot(3) = Slot(1)
	Slot 4 = Slot(3)
Return


