Differenze
Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.
Entrambe le parti precedenti la revisioneRevisione precedente | |||
software:qpaint:qpaint30 [2014/11/04 14:22] – [Il controllo del progetto] documentazione | software:qpaint:qpaint30 [2019/08/29 17:01] (versione attuale) – modifica esterna 127.0.0.1 | ||
---|---|---|---|
Linea 1: | Linea 1: | ||
+ | ====== QPAINT 3.0 ====== | ||
+ | ===== - Introduzione ===== | ||
+ | QPaint 3.0 é un ambiente di sviluppo grafico per la programmazione del terminale o del | ||
+ | sistema integrato. In questo documento sono riportate le caratteristiche principali del | ||
+ | programma QPaint. Esso é stato progettato per lavorare in stretta relazione con un sistema | ||
+ | QMove e per questo motivo durante la descrizione del prodotto si faranno molti riferimenti | ||
+ | ai concetti della programmazione in QCL.\\ | ||
+ | I due strumenti terminale e sistema integrato sono dispositivi in grado interagire con | ||
+ | applicativi diversi. Per questo essi devono conoscere le informazioni relative a ciascuna | ||
+ | delle variabili dell' | ||
+ | trovano in un particolare file (con estensione SYM) generato dalla compilazione dell' | ||
+ | QMove utilizzando l' | ||
+ | che una volta trasferite al terminale o al sistema integrato rendono possibile la connessione | ||
+ | con il programma QCL.\\ | ||
+ | I cablaggi e collegamenti dell' | ||
+ | rispettare la Normativa Europea EN60204-1. | ||
+ | |||
+ | {{software: | ||
+ | |||
+ | Con i termini " | ||
+ | " | ||
+ | interno" | ||
+ | Con il termine "font utente" | ||
+ | QTF e FNT. Con il termine "font file" si intendono i file QTF e FNT in cui sono memorizzate | ||
+ | le immagini dei font terminale o sistema integrato ed utente. | ||
+ | |||
+ | ===== - Installazione ===== | ||
+ | |||
+ | L' | ||
+ | InstallShield 5.0. Essa si occupa di creare una directory in cui depositare i files del programma, | ||
+ | creare una cartella in cui porre le varie icone di collegamento, | ||
+ | per la disinstallazione del pacchetto e associare il programma QPaint30.EXE ai file con | ||
+ | estensione QT3. Informazioni più dettagliate inerenti l' | ||
+ | README.TXT presente nel primo floppy disk del pacchetto. A fine installazione avremo per | ||
+ | default in C: | ||
+ | |||
+ | C: | ||
+ | qpaint3.0 exe eseguibile | ||
+ | readme txt documento | ||
+ | uninst isu informazioni per disinstallazione | ||
+ | |||
+ | C: | ||
+ | |||
+ | C: | ||
+ | tutorial qt3 progetto esempio uso QPaint | ||
+ | |||
+ | C: | ||
+ | qem system large font bmp file bitmap sorgente utilizzato per creare il font | ||
+ | qem system large font fnt font di Windows® per QPaint | ||
+ | qem system large font qtf font sistema integratoJ125501 per QPaint | ||
+ | qem system medium font bmp file bitmap sorgente utilizzato per creare il font | ||
+ | qem system medium font fnt font di Windows® per QPaint | ||
+ | qem system medium font qtf font sistema integratoJ125501 per QPaint | ||
+ | qem system small font bmp file bitmap sorgente utilizzato per creare il font | ||
+ | qem system small font fnt font di Windows® per QPaint | ||
+ | qem system small font qtf font sistema integratoJ125501 per QPaint | ||
+ | |||
+ | L' | ||
+ | progetto, tramite il doppio clic sull' | ||
+ | (Gestione Risorse nella versione italiana). | ||
+ | |||
+ | ===== - Avvio del programma ===== | ||
+ | |||
+ | L' | ||
+ | dei seguenti modi: | ||
+ | |||
+ | 1. tramite clic sull' | ||
+ | 2. tramite doppio clic sull?icona QPaint30.exe con Explorer in C: | ||
+ | 3. tramite linea di comando in una sessione MS-DOS o in Avvio > Esegui... | ||
+ | |||
+ | Quando si avvia QPaint tramite linea di comando é possibile specificare le seguenti opzioni: | ||
+ | |||
+ | / nosplash Disabilita la visualizzazione della finestra di Logo (splash screen). | ||
+ | |||
+ | < | ||
+ | |||
+ | Esempio da sessione MS-DOS: | ||
+ | |||
+ | C: | ||
+ | C: | ||
+ | |||
+ | Una volta avviato QPaint, sullo schermo apparirà la seguente finestra: | ||
+ | |Figura 1: desktop di QPaint| | ||
+ | |{{: | ||
+ | La finestra di Logo, comunemente chiamata splash screen, ha lo scopo di intrattenere | ||
+ | l' | ||
+ | un minimo fisso di 3 secondi ad un massimo che varia in funzione delle caratteristiche | ||
+ | hardware del PC utilizzato e dal numero di font da caricare. Inoltre se viene specificato | ||
+ | nella linea di comando anche il nome di un progetto, al normale tempo di avvio, viene | ||
+ | aggiunto anche il tempo di caricamento del progetto stesso. | ||
+ | |||
+ | ===== - Caratteristiche del programma ===== | ||
+ | Nella fase di stesura delle specifiche di programma si é cercato di delineare quali fossero | ||
+ | le caratteristiche funzionali indispensabili per rendere il QPaint un prodotto valido ed | ||
+ | efficiente. Grazie all' | ||
+ | si é giunti a definire la seguente lista di argomenti: | ||
+ | |||
+ | 1. Eventuali nuove versioni del programma dovranno assicurare la piena compatibilità dei | ||
+ | progetti sviluppati con le versioni precedenti. Per ottenere ciò si é adottato un nuovo | ||
+ | standard di memorizzazione delle informazioni in protocollo binario con cui risulta mol | ||
+ | to semplice gestire la compatibilitá di versione. | ||
+ | |||
+ | 2. Per rendere portabile e facilmente mantenibile un progetto non vi dovranno essere | ||
+ | collegamenti a file esterni. Lo standard di memorizzazione adottato permette di archiviare, | ||
+ | nello stesso file, dati di qualsiasi formato come ad esempio testi, immagini grafiche, | ||
+ | data base, etc. Il programma QPaint memorizza nel file di progetto QT3 tutto ció di cui | ||
+ | abbisogna. In questo modo per archiviare, trasportare su floppy o distribuire un pro | ||
+ | getto, sará sufficiente operare con il solo file QT3. | ||
+ | |||
+ | Per limitare significativamente la dimensione dei file di progetto si é ritenuto utile non | ||
+ | inserire nello stesso tutte le informazioni dei font utilizzati, perció bisogna assicurarsi | ||
+ | che nella directory C: | ||
+ | font file QT3 richiesti. I tre font distribuiti con il programma QPaint, QEM System Small, | ||
+ | Medium e Large Font, corrispondono ai font interni del terminale o del sistema | ||
+ | integrato per cui sono sempre disponibili ed utilizzabili. Ulteriori informazioni sui font | ||
+ | sono disponibili nella sezione dedicata. | ||
+ | |||
+ | 3. L' | ||
+ | soprattutto le convenzioni e gli standards dettati dai piú diffusi programmi per Windows®. | ||
+ | Un' | ||
+ | oggetti di costruzione standard ha reso il QPaint un programma dall' | ||
+ | immediata ed intuitiva. | ||
+ | |||
+ | 4. Il programma dovrá rappresentare con la maggior corrispondenza possibile il risultato | ||
+ | finale nel terminale o nel sistema integrato. In questo caso si potrebbe parlare | ||
+ | di "What You See is What You Get", ció che vedi é ció che ottieni. L'uso delle capacitá | ||
+ | grafiche fornite da Windows® combinate con gli algoritmi utilizzati nel terminale o nel | ||
+ | sistema integrato ha fatto sí che quanto visualizzato sul monitor sia perfettamente | ||
+ | corrispondente a quello che apparirá nel display del terminale o del sistema integrato. | ||
+ | Funzionalitá grafiche aggiuntive come zoom dell' | ||
+ | sfondo permettono inoltre di semplificare le operazioni di gestione del progetto. | ||
+ | |||
+ | 5. La funzionalitá del programma non dovrá essere vincolata dalle dimensioni dell' | ||
+ | display del terminale o del sistema integrato. Attualmente il terminale o il sistema inte | ||
+ | grato utilizzano un display grafico monocromatico da 240x128 pixel. In futuro vi potreb | ||
+ | bero essere nuove versioni con altri modelli di display. Il programma dovrá poter | ||
+ | essere facilmente modificato per lavorare con ognuno di essi. | ||
+ | |||
+ | ===== - Descrizione del programma ===== | ||
+ | |||
+ | Come si puó vedere nella figura, il desktop di QPaint é composto dalle seguenti componenti: | ||
+ | {{: | ||
+ | 1. Barra dei menú.\\ | ||
+ | 2. Barra di gestione della pagina.\\ | ||
+ | 3. Barra di impostazione della password di pagina.\\ | ||
+ | 4. Barra delle funzioni di progetto.\\ | ||
+ | 5. Barra delle funzioni di disegno.\\ | ||
+ | 6. Barra degli strumenti di disegno.\\ | ||
+ | 7. Barra di stato.\\ | ||
+ | 8. Area di disegno rappresentante il display del sistema integrato J125501. | ||
+ | |||
+ | ==== - Barra dei menú ==== | ||
+ | Tramite la barra dei menú é possibile accedere a gran parte delle operazioni disponibili in | ||
+ | QPaint. Segue ora una descrizione dettagliata delle funzionalitá fornite dalle voci presenti | ||
+ | nei vari menú. | ||
+ | |||
+ | === - File | New Project === | ||
+ | Con questa voce di menú si richiede a QPaint di abbandonare il progetto eventualmente | ||
+ | attivo per crearne uno di nuovo. Se durante la creazione del nuovo progetto si riscontra che | ||
+ | quello precedente é stato modificato verrá visualizzata una finestra di dialogo con il testo | ||
+ | "Save changes to //" | ||
+ | con " | ||
+ | "Save Project As..." | ||
+ | mentre " | ||
+ | " | ||
+ | |||
+ | === - File | Open Project... === | ||
+ | Con questa voce di menú si richiede a QPaint di aprire un progetto precedentemente salvato. | ||
+ | Per far ció viene richiesto di segnalare la posizione ed il nome del progetto tramite | ||
+ | l' | ||
+ | comparirá la seguente finestra di dialogo: | ||
+ | |Figura 2 : finestra di dialogo Open Project| | ||
+ | |{{: | ||
+ | Le funzionalitá espletate dalla finestra di dialogo sono quelle standard normalmente fornite | ||
+ | dallo stesso sistema operativo Windows®. In "Nome file:" comparirá il nome del progetto | ||
+ | attualmente in uso. A conferma dell' | ||
+ | specificato. Se durante il caricamento del progetto si riscontra che quello precedente é | ||
+ | stato modificato verrá visualizzata una finestra di dialogo con il testo "Save changes to | ||
+ | //" | ||
+ | verrá automaticamente richiamata la finestra di dialogo "Save Project" | ||
+ | As..." | ||
+ | abortirá l' | ||
+ | |||
+ | === - File | Save Project === | ||
+ | Con questa voce di menú si richiede a QPaint di salvare il progetto attualmente in uso. Se il | ||
+ | progetto non era mai stato salvato verrá automaticamente richiamata la finestra di dialogo | ||
+ | "Save Project As..." | ||
+ | |||
+ | === - File | Save Project As... === | ||
+ | Con questa voce di menú si richiede a QPaint di salvare il progetto attualmente in uso. Per | ||
+ | far ció viene richiesto di segnalare la posizione ed il nome del progetto tramite l' | ||
+ | della finestra di dialogo standard di Windows® per il salvataggio di files. Sul display comparirá | ||
+ | la seguente finestra di dialogo: | ||
+ | |Figura 3 : finestra di dialogo Save Project As| | ||
+ | |{{: | ||
+ | Le funzionalitá espletate dalla finestra di dialogo sono quelle standard normalmente fornite | ||
+ | dallo stesso sistema operativo Windows®. In "Nome file:" comparirá il nome del progetto | ||
+ | attualmente in uso. A conferma dell' | ||
+ | verrá salvato. | ||
+ | |||
+ | === - File | Create Project' | ||
+ | Con questa voce di menú si richiede a QPaint di fare una stampa della documentazione di | ||
+ | progetto che verrà poi utilizzata dal costruttore della macchina per fare il manuale di istruzioni. | ||
+ | Sul display comparirá la seguente finestra di dialogo: | ||
+ | |Figura 4 : finestra di dialogo Create Project' | ||
+ | |{{: | ||
+ | Nella finestra generale, il programma da la possibilità di stampare solamente su file le seguenti | ||
+ | informazioni: | ||
+ | - Immagini del display\\ | ||
+ | - Eventi e azioni di pagina\\ | ||
+ | - Eventi ed azioni globali\\ | ||
+ | - Disegni\\ | ||
+ | - Una combinazione tra le voci sopracitate oppure tutti | ||
+ | |Figura 5 : finestra di dialogo Create Project' | ||
+ | |{{: | ||
+ | Nella finestra di opzioni, il programma da la possibilità di inserire nel documento le immagini | ||
+ | del display con dimensioni grandi, medie oppure piccole inserite su sfondo bianco oppure | ||
+ | verde. Alla pressione del tasto Continue, il programma richiede la path dove salvare i file | ||
+ | contenenti i dati richiesti. | ||
+ | |Figura 6 : finestra di dialogo Save Project' | ||
+ | |{{: | ||
+ | Il comando creerà nella directory indicata una serie di file:\\ | ||
+ | * Un file *.jpg per ogni pagina contenente l' | ||
+ | * Elenco puntatoUn file *.htm per ogni pagina contenente i dati richiesti nella finestra generale.\\ | ||
+ | * Elenco puntatoUn file *.htm del progetto generale. | ||
+ | |||
+ | === - File | Recent Files 1, 2, 3 e 4 === | ||
+ | QPaint mantiene traccia degli ultimi quattro progetti aperti mettendo il loro nome, completo | ||
+ | di percorso nella barra dei menú subito sotto alla voce "File | Save Project As..." | ||
+ | operazione é chiamata gestione dei //" | ||
+ | adottate da tutti i programmi Windows® che la implementano. Selezionando e confermando, | ||
+ | con il mouse o la tastiera, un recent file, si richiede a QPaint di riaprire il progetto | ||
+ | associato. I recent files sono utili per velocizzare le operazioni di apertura dei progetti | ||
+ | usati piú frequentemente o ancora in fase di sviluppo. Nel caso si tenti di aprire un recent | ||
+ | file che non esiste piú o che é memorizzato su un disco non disponibile apparirá il messaggio | ||
+ | "Error in opening file //" | ||
+ | QPaint ritenterá l' | ||
+ | aprire il recent file selezionato, | ||
+ | modificato, verrá visualizzata una finestra di dialogo con il testo "Save changes to //" | ||
+ | file"// | ||
+ | automaticamente richiamata la finestra di dialogo "Save Project" | ||
+ | pressione di " | ||
+ | l' | ||
+ | |||
+ | === - File | Exit === | ||
+ | Con questa voce di menú si richiede a QPaint di concludere la propria esecuzione. Se si | ||
+ | riscontra che il progetto attualmente in uso é stato modificato verrá visualizzata una finestra | ||
+ | di dialogo con il testo "Save changes to //" | ||
+ | Se si conferma l' | ||
+ | dialogo "Save Project" | ||
+ | senza salvare niente, mentre " | ||
+ | |||
+ | === - Edit | New Object : Value === | ||
+ | Fare riferimento al paragrafo dedicato nella sezione "Barra degli strumenti di disegno" | ||
+ | |||
+ | === - Edit | New Object : String === | ||
+ | Fare riferimento al paragrafo dedicato nella sezione "Barra degli strumenti di disegno" | ||
+ | |||
+ | === - Edit | New Object : Valstring === | ||
+ | Fare riferimento al paragrafo dedicato nella sezione "Barra degli strumenti di disegno" | ||
+ | |||
+ | === - Edit | New Object : Image === | ||
+ | Fare riferimento al paragrafo dedicato nella sezione "Barra degli strumenti di disegno" | ||
+ | |||
+ | === - Edit | New Object : ValImage === | ||
+ | Fare riferimento al paragrafo dedicato nella sezione "Barra degli strumenti di disegno" | ||
+ | |||
+ | === - Edit | New Object : Box === | ||
+ | Fare riferimento al paragrafo dedicato nella sezione "Barra degli strumenti di disegno" | ||
+ | |||
+ | === - Edit | Copy === | ||
+ | Con questa voce di menú si richiede a QPaint di copiare gli oggetti selezionati nell' | ||
+ | disegno. Al termine della copia resteranno selezionati gli oggetti.\\ | ||
+ | __// | ||
+ | |||
+ | === - Edit | Paste === | ||
+ | Con questa voce di menú si richiede a QPaint di incollare gli oggetti copiati nell' | ||
+ | disegno. Al termine del comando verranno automaticamente selezionati gli oggetti incollati.\\ | ||
+ | __// | ||
+ | |||
+ | === - Edit | Delete Object === | ||
+ | Con questa voce di menú si richiede a QPaint di cancellare l' | ||
+ | disegno. Al termine della cancellazione, | ||
+ | selezionato l' | ||
+ | __// | ||
+ | |||
+ | === - Edit | Align Objects === | ||
+ | Con questa voce di menú si richiede a QPaint di allineare gli oggetti selezionati nell' | ||
+ | disegno secondo la legge impostata in figura 7. Al termine dell' | ||
+ | selezionati gli oggetti. Vi è la possibilità di allineare gli oggetti in orizzontale rispetto al lato | ||
+ | destro del primo oggetto selezionato, | ||
+ | selezionato, | ||
+ | di allineare gli oggetti in verticale rispetto alla parte alta del primo oggetto selezionato, | ||
+ | oppure rispetto alla parte bassa del primo oggetto selezionato, | ||
+ | centro del primo oggetto selezionato. Vi è inoltre la possibilità di allineare contemporaneamente | ||
+ | gli oggetti sia in verticale che in orizzontale utilizzando le combinazioni desiderate.\\ | ||
+ | N.B. Per selezionare più di un oggetto, si deve tener premuto il tasto shift e cliccare con il | ||
+ | tasto sinistro del mouse.\\ | ||
+ | __// | ||
+ | |Figura 7 : finestra di allineamento oggetti| | ||
+ | |{{: | ||
+ | |||
+ | === - Edit | Property Object === | ||
+ | Con questa voce di menú si richiede a QPaint di visualizzare l' | ||
+ | selezionato nell' | ||
+ | delle proprietá sono disponibili nella sezione dedicata.\\ | ||
+ | __// | ||
+ | |||
+ | === - Edit | Bring Up Object === | ||
+ | Con questa voce di menú si richiede a QPaint di portare ad un livello superiore di vista | ||
+ | l' | ||
+ | di disegno sono disponibili nella sezione dedicata.\\ | ||
+ | __// | ||
+ | 1/n ed almeno due oggetti nella pagina. | ||
+ | |||
+ | === - Edit | Bring Down Object === | ||
+ | Con questa voce di menú si richiede a QPaint di portare ad un livello inferiore di vista | ||
+ | l' | ||
+ | di disegno sono disponibili nella sezione dedicata.\\ | ||
+ | __// | ||
+ | n ed almeno due oggetti nella pagina. | ||
+ | |||
+ | === - Edit | Find Symbol === | ||
+ | Con questa voce di menù si richiede a QPaint di ricercare un simbolo all' | ||
+ | o del progetto intero. Per facilitare la ricerca, si può selezionare la ricerca di una parola | ||
+ | intera oppure controllando le lettere maiuscole/ | ||
+ | finestra di dialogo: | ||
+ | |Figura 8 : finestra di ricerca simbolo| | ||
+ | |{{: | ||
+ | Nel caso in cui la ricerca trovi in uno o più punti del programma il simbolo, si apre la finestra | ||
+ | sottoriportata: | ||
+ | |Figura 9 : finestra di report ricerca| | ||
+ | |{{: | ||
+ | Cliccando con il mouse sull' | ||
+ | à dell' | ||
+ | sono disponibili nella sezione dedicata.\\ | ||
+ | // | ||
+ | |||
+ | === - View | Zoom In === | ||
+ | Con questa voce di menú si richiede a QPaint di incrementare il fattore di zoom utilizzato per | ||
+ | la visualizzazione dell' | ||
+ | disegno risultasse essere piú grande dell' | ||
+ | parte visualizzata.\\ | ||
+ | __// | ||
+ | |||
+ | === - View | Zoom Out === | ||
+ | Con questa voce di menú si richiede a QPaint di decrementare il fattore di zoom utilizzato | ||
+ | per la visualizzazione dell' | ||
+ | di disegno risultasse essere piú grande dell' | ||
+ | parte visualizzata.\\ | ||
+ | __// | ||
+ | |||
+ | === - View | Previous Page === | ||
+ | Con questa voce di menú si richiede a QPaint di visualizzare la pagina precedente a quella | ||
+ | attualmente visualizzata. A cambio pagina avvenuto nessun oggetto comparirá selezionato | ||
+ | nell' | ||
+ | __// | ||
+ | |||
+ | === - View | Next Page === | ||
+ | Con questa voce di menú si richiede a QPaint di visualizzare la pagina successiva a quella | ||
+ | attualmente visualizzata. A cambio pagina avvenuto nessun oggetto comparirá selezionato | ||
+ | nell' | ||
+ | __// | ||
+ | |||
+ | === - View | Background Mode === | ||
+ | Con questa voce di menú si richiede a QPaint di cambiare il colore di sfondo utilizzato | ||
+ | nell' | ||
+ | sfondo ed il nero per i testi, rettangoli ed altro. Per migliorare le operazioni di composizione | ||
+ | delle pagine QPaint permette di scegliere il colore di sfondo utilizzabile tra bianco e | ||
+ | verde. Quando il colore di sfondo selezionato é il bianco la pagina visualizzata da QPaint | ||
+ | rispecchierá fedelmente ció che apparirá sul terminale o sul sistema integrato. Quando il | ||
+ | colore di sfondo é verde si potranno individuare piú facilmente gli oggetti depositati sulla | ||
+ | pagina. Il colore di sfondo utilizzato nell' | ||
+ | quanto inviato al terminale o al sistema integrato. Il colore di default all' | ||
+ | il verde. Questa informazione non viene memorizzata nel file del progetto e nelle impostazioni | ||
+ | del programma. Vediamo ora un esempio di Background Mode: | ||
+ | |Figura 10 : esempio Background Mode con risultato nel terminale dopo il download| | ||
+ | |{{: | ||
+ | Come si puó vedere nella fig.10, quando il Background Mode é verde, risulta molto piú facile | ||
+ | individuare il campo di competenza (area) di ogni singolo oggetto. In questo modo si possono | ||
+ | selezionare piú agevolmente gli oggetti, trascinarli, | ||
+ | Impostando il Background Mode su bianco si ha invece la rappresentazione di come apparirá | ||
+ | la pagina quando sará visualizzata sul terminale o sul sistema integrato. Si puó inoltre notare | ||
+ | che indipendentemente dal Background mode utilizzato, il risultato sul terminale o sul sistema | ||
+ | integrato sará lo stesso. | ||
+ | |||
+ | === - View | Report Window === | ||
+ | Con questa voce di menú si richiede a QPaint di visualizzare la finestra di Report, che é una | ||
+ | finestra di tool e quindi come tale presenta alcune caratteristiche intrinseche : ha una barra | ||
+ | del titolo ridotta, non puó essere ridotta ad icona o ingrandita a tutto schermo, é sempre | ||
+ | sovrapposta alla finestra principale del programma e condivide con essa il flusso di input della | ||
+ | tastiera e del mouse. All' | ||
+ | di default. Puó quindi essere visualizzata, | ||
+ | riattivazione la posizione e le dimensioni precedenti verranno ripristinate. Alla chiusura di un | ||
+ | progetto viene sempre ripulita del suo contenuto e nascosta. La posizione e le dimensioni | ||
+ | non vengono memorizzate nel file del progetto e nelle impostazioni del programma.\\ | ||
+ | In essa sono rappresentati i risultati ottenuti dalla procedura di controllo del progetto. | ||
+ | Ulteriori informazioni inerenti ai contenuti della Report Window sono disponibili nella | ||
+ | sezione dedicata al Check Project. | ||
+ | |||
+ | === - Project | Symbol Reference === | ||
+ | Con questa voce di menú si richiede a QPaint di aprire la finestra di dialogo Symbol Reference | ||
+ | dalla quale é possibile importare nel progetto un nuovo file simboli o visualizzare le informazioni | ||
+ | di quello attualmente caricato. Nella Symbol Reference é possibile visualizzare i valori | ||
+ | di checksum e l' | ||
+ | Nel caso di un progetto nuovo o di un progetto in cui non é mai stato importato un file simboli | ||
+ | la dialog visualizzata sará la seguente : | ||
+ | |Figura 11 : finestra di dialog Symbol Reference di un progetto senza file simboli| | ||
+ | |{{: | ||
+ | Come si puó vedere nella fig.11, nel gruppo " | ||
+ | i checksum registrati nel file simboli importato ed inerenti al progetto QView che lo ha | ||
+ | generato. Queste informazioni sono utili per verificare la validità del file simboli. Nel gruppo | ||
+ | " | ||
+ | prelevato. Per visualizzare il percorso bisogna portare e mantenere il puntatore mouse | ||
+ | sopra all' | ||
+ | originario del file simboli. La tool tip rimarrà visibile per circa un secondo. In questo caso, | ||
+ | non essendo mai stato importato un file simboli, i checksum avranno tutti valore zero, | ||
+ | mentre "Not loaded file !" verrá visualizzata sia nel nome che nel percorso dello stesso. | ||
+ | Nel caso di un progetto in cui é già stato importato un file simboli la dialog visualizzata sará | ||
+ | la seguente: | ||
+ | |Figura 12 : finestra di dialog Symbol Reference di un progetto con file simboli| | ||
+ | |{{: | ||
+ | La pressione del pulsante " | ||
+ | |Figura 13 : finestra di dialogo Import Symbol Reference| | ||
+ | |{{: | ||
+ | Le funzionalitá espletate dalla finestra di dialogo sono quelle standard normalmente fornite | ||
+ | dallo stesso sistema operativo Windows®. Se nel progetto é giá stato importato un file simboli, | ||
+ | la dialog tenterá di riposizionare il percorso ed il nome del file ai valori originari. A | ||
+ | conferma dell' | ||
+ | visualizzate le nuove informazioni nella dialog Symbol Reference. A questo punto il | ||
+ | pulsante " | ||
+ | |||
+ | ^Se si modificano solamente i moduli task MOD non é necessaria nessuna operazione di sincronizzazione!^ | ||
+ | |||
+ | Il file simboli contiene tutte le informazioni necessarie per poter eseguire le operazioni di | ||
+ | interfacciamento con l' | ||
+ | viene creato da QView nella fase di compilazione. Ogni compilazione comporta un aggiornamento | ||
+ | di tale file per cui é necessario effettuare un aggiornamento dei simboli ogni qual | ||
+ | volta si sono apportate delle modifiche al file di configurazione CNF dell' | ||
+ | struttura dell' | ||
+ | sincronizzati tra QView, QMove e QPaint é la seguente | ||
+ | - QView: modificare il file di configurazione CNF dell' | ||
+ | - QView: compilare l' | ||
+ | - QView: effettuare il download dell' | ||
+ | - QView: salvare l' | ||
+ | - QPaint: con " | ||
+ | |||
+ | === - Project | Check Project === | ||
+ | Con questa voce di menú si richiede a QPaint di eseguire il controllo del progetto. Vediamo | ||
+ | ora cosa si intende per controllo del progetto e perché sia necessaria questa operazione. | ||
+ | QPaint é stato progettato per lasciare ampia libertá nell' | ||
+ | vari oggetti presenti in un progetto, come eventi, azioni ed oggetti grafici. Ció a beneficio di | ||
+ | una maggiore flessibilitá nella realizzazione dello stesso. É infatti possibile impostare gli | ||
+ | oggetti con simboli ancora da definire, con immagini ancora da importare o creare ed altro | ||
+ | ancora. Puó anche accadere che simboli presenti inizialmente, | ||
+ | cambino di tipo, gruppo di appartenenza o vengano eliminati durante lo sviluppo stesso del | ||
+ | progetto. Bene, in qualsiasi momento é possibile eseguire un controllo su quanto scritto e | ||
+ | verificare che tutto sia coerente con le regole fissate. Tramite Check Project viene effettuato | ||
+ | un controllo su tutti gli oggetti di un progetto e creata nella Report Window una lista con | ||
+ | la descrizione dettagliata degli eventuali errori incontrati. Ogni linea identifica un errore | ||
+ | rilevato in un determinato oggetto. Lo stesso oggetto puó presentare piú linee di errore | ||
+ | consecutive. Ma questo non é tutto. Per semplificare le operazioni di correzione degli errori | ||
+ | la linea selezionata sulla lista della Report Window é sensibile alla pressione del tasto Enter | ||
+ | o al doppio clic sul tasto sinistro del mouse, di modo che venga aperto l' | ||
+ | dell' | ||
+ | sulla barra di stato del programma compare un estratto esplicativo dell' | ||
+ | Alla richiesta di controllo del progetto la Report Window viene posta automaticamente in | ||
+ | visualizzazione. Il controllo del progetto viene automaticamente eseguito anche durante la | ||
+ | fase di download. Ulteriori informazioni a riguardo sono disponibili nella sezione dedicata al | ||
+ | download del progetto.\\ | ||
+ | Nel caso in cui il controllo del progetto non riscontri alcun errore comparirá la seguente | ||
+ | finestra: | ||
+ | |Figura 14: finestra Report Window| | ||
+ | |{{: | ||
+ | Come si puó vedere in fig.14, nella lista della Report Window compare una sola linea che | ||
+ | notifica il buon esito del controllo sul progetto. La pressione del tasto Enter o il doppio clic | ||
+ | sul tasto sinistro del mouse su questa linea non comporterá alcun effetto. | ||
+ | |||
+ | Nel caso in cui il controllo del progetto riscontri degli errori comparirá la seguente finestra: | ||
+ | |Figura 15 : finestra Report Window con segnalazione di alcuni errori| | ||
+ | |{{: | ||
+ | Come si puó vedere nella fig.15, la Report Window é composta da una lista a scorrimento | ||
+ | verticale contenente gli errori rilevati dal controllo del progetto. Ad ogni linea corrisponde | ||
+ | un errore. Ogni oggetto puó avere piú errori e quindi piú linee. In ogni caso gli errori di un | ||
+ | determinato oggetto sono sempre raggruppati. Una linea della lista é composta delle seguenti | ||
+ | parti: | ||
+ | [<// | ||
+ | |||
+ | |// | ||
+ | |// | ||
+ | |::: | ||
+ | |::: | ||
+ | |::: | ||
+ | |::: | ||
+ | |::: | ||
+ | |//codice errore// | ||
+ | |::: | ||
+ | |::: | ||
+ | |::: | ||
+ | |::: | ||
+ | |::: | ||
+ | |::: | ||
+ | |::: | ||
+ | |::: | ||
+ | |::: | ||
+ | |::: | ||
+ | |::: | ||
+ | |::: | ||
+ | |::: | ||
+ | |::: | ||
+ | |::: | ||
+ | |::: | ||
+ | |::: | ||
+ | |::: | ||
+ | |::: | ||
+ | |::: | ||
+ | |::: | ||
+ | |::: | ||
+ | |::: | ||
+ | |::: | ||
+ | |::: | ||
+ | |::: | ||
+ | |// | ||
+ | Quando la Report Window é attiva, é possibile tramite i tasti cursore eseguire lo scroll | ||
+ | dell' | ||
+ | nella linea selezionata. Tramite il mouse si possono ottenere gli stessi risultati piú | ||
+ | agevolmente. Una volta attivato, l' | ||
+ | il fuoco sul campo dati che ha generato l' | ||
+ | le operazioni di correzione dello stesso. La Report Window modifica il contenuto della | ||
+ | lista errori solo sulla richiesta di un controllo del progetto, per cui anche quando un | ||
+ | errore viene corretto, la relativa linea di descrizione continuerá ad esistere. Lo stesso | ||
+ | vale se un oggetto con uno o piú errori o la pagina in cui é contenuto vengono rimossi. A | ||
+ | questo punto la Report Window si limita a segnalare che l'uno o l' | ||
+ | piú disponibili e che quindi sarebbe buona cosa ripetere il controllo del progetto per | ||
+ | lavorare con una lista errori aggiornata. Vedere la lista messaggi all' | ||
+ | dettagliata delle segnalazioni generate. Durante le operazioni di scaricamento del | ||
+ | progetto attivo, la Report Window verrá automaticamente nascosta e tutti i dati in essa | ||
+ | contenuta cancellati. | ||
+ | |||
+ | Nel caso in cui la larghezza della Report Window risulti essere insufficiente per la visualizzazione | ||
+ | completa dei messaggi presenti sulla lista, nella parte inferiore della finestra apparirá | ||
+ | la barra di scorrimento orizzontale o verticale. | ||
+ | |||
+ | // | ||
+ | simboli. | ||
+ | |||
+ | === - Project | Project Setup === | ||
+ | Con questa voce di menú si richiede a QPaint di aprire la finestra di dialogo Project Setup | ||
+ | dalla quale é possibile accedere ai parametri di configurazione del progetto in uso. La finestra | ||
+ | di dialogo visualizzata sará la seguente: | ||
+ | |Figura 16 : finestra di dialogo Project Setup| | ||
+ | |{{: | ||
+ | Ogni progetto ha la possibilitá di definire i seguenti parametri di configurazione: | ||
+ | |||
+ | **Title**: titolo dell' | ||
+ | lunga al massimo 25 caratteri. Viene memorizzato nel terminale durante la fase di download | ||
+ | ed é visualizzabile sullo stesso nella pagina INFO. | ||
+ | ^L' | ||
+ | **Scale A, Scale B e Scale C :** valori di scaling globali. Tramite la combinazione di tali valori si | ||
+ | ottiene un fattore di scala globale che permette la conversione tra diverse unitá di misura, | ||
+ | come ad esempio millimetri e pollici. Il fattore di scala risultante puó essere applicato | ||
+ | all' | ||
+ | visualizzazione del terminale con le variabili interne del QMove. La regola applicata é la | ||
+ | seguente:\\ | ||
+ | {{software: | ||
+ | dove: X é il contenuto della memoria CPU QMove indirizzata dall' | ||
+ | |||
+ | Nell' | ||
+ | ottenga il fattore di scala necessario per visualizzare un dato originario in mm nel suo corrispondente | ||
+ | in pollici. | ||
+ | |||
+ | **Message Languages: | ||
+ | griglia di edit sottostante, | ||
+ | testi che compariranno sul terminale. Per ogni lingua é possibile definire un nome identificativo | ||
+ | lungo al massimo 12 caratteri. Nomi uguali per piú lingue sono ammessi. Gli oggetti interessati | ||
+ | dalle lingue messaggi sono gli oggetti grafici " | ||
+ | essere sempre almeno una lingua attiva perció il pulsante " | ||
+ | arriverá ad avere una sola lingua. Le lingue consentite sono al massimo 10, per cui i bottoni | ||
+ | " | ||
+ | download verranno memorizzati nel terminale oltre a tutti i messaggi in lingua anche le loro | ||
+ | descrizioni. In questo modo tramite la pagina CONFIGURATION del terminale sará possibile | ||
+ | scorrere la lista lingue disponibili e scegliere quale rendere attiva sul display. Quando si | ||
+ | rimuove una lingua esistente, tramite il pulsante " | ||
+ | quella lingua in tutti gli oggetti String e ValString presenti nel progetto verranno automaticamente | ||
+ | rimossi. In QPaint é possibile definire quale lingua messaggi usare per le varie visualizzazioni | ||
+ | nell' | ||
+ | mouse sul numero posto a sinistra del nome identificativo della lingua interessata. Una | ||
+ | freccia rossa fará da segnaposto alla lingua selezionata.\\ | ||
+ | Il pulsante " | ||
+ | cui tutte le impostazioni effettuate non potranno essere annullate. | ||
+ | |||
+ | **Edit drawing mode:** tipo di visualizzazione in data entry. Se si imposta il modo " | ||
+ | quando si accede al data entry le cifre lampeggianti saranno nere su fondo bianco. Se si | ||
+ | imposta il modo " | ||
+ | bianche su sfondo nero.\\ | ||
+ | In questa sezione si é parlato delle pagine di terminale INFO e CONFIGURATION, | ||
+ | descriverne la modalitá di utilizzo. Tutte le informazioni a riguardo sono disponibili nel manuale | ||
+ | tecnico del terminale. | ||
+ | |||
+ | === - Project | Display Size === | ||
+ | Con questa voce di menú si richiede a QPaint di aprire la finestra di dialogo Display Size | ||
+ | Variables dalla quale é possibile selezionare le dimensioni del display che si stea | ||
+ | utilizzando.L' | ||
+ | prima della stesura delle pagine.\\ | ||
+ | Nel caso non venga ipostato alcun valore verrà selezionate la dimensione più grande come | ||
+ | standard. (240(width) x 128(height)) | ||
+ | |Figura 16a: finestra di dialogo Display Type| | ||
+ | |{{: | ||
+ | Con riferimento alla figura 16a\\ | ||
+ | **240(width) x 128(height)** = Impostazione standard per la selezione del display piu grande | ||
+ | e maggiormente diffuso.\\ | ||
+ | **128(width) x 64(height)** = Impostazione display di piccole dimensioni.\\ | ||
+ | **Custom Display** = Impostazione particolare , selezionata nel caso di pannello custom con | ||
+ | di dimensioni del display diverse da quelle standard riportate. | ||
+ | |||
+ | === - Project | Internal Variables === | ||
+ | Con questa voce di menú si richiede a QPaint di aprire la finestra di dialogo Internal | ||
+ | Variables dalla quale é possibile aggiungere, rimuovere e visualizzare le variabili interne. | ||
+ | Durante lo sviluppo di un progetto per il terminale sono disponibili tre diversi insiemi di | ||
+ | variabili : le variabili QMove, le variabili interne e le variabili di terminale. Le variabili QMove | ||
+ | sono quelle messe a disposizione del terminale tramite l' | ||
+ | Esse risiedono nella CPU del QMove a cui é collegato il terminale e vi si accede tramite la | ||
+ | comunicazione seriale. Le variabili interne sono variabili definite dall' | ||
+ | progetto terminale. Vengono ricreate nel terminale durante la fase di download e risultano | ||
+ | disponibili nello stesso per tutta la vita del progetto. Infine, le variabili di terminale | ||
+ | sono variabili messe a disposizione dal costruttore e rendono disponibili all' | ||
+ | specifiche del terminale come stato dei tasti e timers di esecuzione. Ulteriori | ||
+ | informazioni sui gruppi di variabili e sulla loro collocazione nei vari dispositivi hardware e | ||
+ | software sono disponibili nell' | ||
+ | n un progetto possono essere create tante variabili interne quanta é la memoria disponibile | ||
+ | nel terminale. Sono definibili solo i tipi di dati semplici flag, byte, word, long e single. | ||
+ | Vengono automaticamente azzerate ad ogni avvio del progetto. Non vi possono essere due | ||
+ | variabili con lo stesso nome. Ogni nome variabile é composto dal prefisso " | ||
+ | una stringa di 1 ÷ 11 caratteri ASCII in cui viene rilevata la differenza tra caratteri minuscoli | ||
+ | e maiuscoli. | ||
+ | |Figura 17 : finestra di dialog Internal Variables|Figura 18 : finestra di dialog Internal Variables| | ||
+ | |{{: | ||
+ | Nella fig.17 é possibile vedere lo stato della finestra di dialogo Internal Variables quando | ||
+ | nessuna variabile interna é stata definita. Il pulsante " | ||
+ | possibile definire una nuova variabile, mentre il pulsante " | ||
+ | vi é nessuna variabile da rimuovere. Nella fig.18, invece, é raffigurata la stessa dialog in cui | ||
+ | sono state definite svariate variabili interne di piú tipi di dato. Si puó notare che il pulsante | ||
+ | " | ||
+ | visualizzare tutte le variabili, ed é presente una linea di selezione per identificare la linea | ||
+ | soggetta all' | ||
+ | |Figura 19 : finestra di dialog Add Internal Variable| | ||
+ | |{{: | ||
+ | Premendo il pulsante " | ||
+ | pulsanti con i quali selezionare il tipo di dato desiderato: F = flag, B = byte, W = word, L = | ||
+ | long e S = single. I tipi di dati sono gli stessi presenti nel QMove. In "Name :" é possibile | ||
+ | impostare il nome della variabile. Il prefisso " | ||
+ | ogni variabile interna. Nel caso in cui si tenti di dichiarare una variabile interna con un | ||
+ | nome giá usato comparirá un box di messaggio con la scritta "Name //" | ||
+ | used by another Internal Variable !". Premendo il tasto " | ||
+ | figura 17. | ||
+ | |||
+ | === - Project | Global Events Editor === | ||
+ | Con questa voce di menú si richiede a QPaint di aprire la finestra di dialogo Global Events | ||
+ | Editor dalla quale é possibile visualizzare ed introdurre gli eventi attivi a livello globale. | ||
+ | |||
+ | Un evento é una particolare condizione che si verifica nel tempo e che viene rilevata dal | ||
+ | terminale o dal sistema integrato, come ad esempio la pressione di un tasto o il cambiamento | ||
+ | del valore di una variabile nella CPU del QMove. Ad un determinato evento é possibile | ||
+ | associare una lista di azioni che il terminale o il sistema integrato andranno a svolgere | ||
+ | quando l' | ||
+ | eventi globali ed eventi di pagina. Gli eventi globali vengono sempre elaborati prima di | ||
+ | quelli di pagina. Un evento definito sia negli eventi globali che negli eventi di pagina, vedrá | ||
+ | eseguite prima le azioni relative all' | ||
+ | La finestra di dialogo visualizzata sará la seguente: | ||
+ | |Figura 20 : finestra di dialogo Global Events Editor| | ||
+ | |{{: | ||
+ | Come si puó vedere nella fig.20, la dialog é divisa in tre aree principali: | ||
+ | - la zona di sinistra, dedicata alla gestione degli eventi. | ||
+ | - la zona di destra, dedicata alla gestione delle azioni associate agli eventi. | ||
+ | - l'area sottostante le due, riservata all' | ||
+ | ^In un progetto possono essere creati tanti eventi quanta é la memoria disponibile nel terminale.^ | ||
+ | |||
+ | == Definizione di un nuovo evento == | ||
+ | Nella zona di sinistra, dedicata alle operazioni sugli eventi, sono presenti i bottoni " | ||
+ | " | ||
+ | definire un nuovo evento vi sono due metodi :\\ | ||
+ | - utilizzare il pulsante " | ||
+ | - selezionare nella casella di riepilogo la posizione ove inserire il nuovo evento. Utilizzare il pulsante " | ||
+ | Alla pressione del pulsante " | ||
+ | |Figura 21 : finestra di selezione Select Event| | ||
+ | |{{: | ||
+ | Come si puó vedere nella fig.21, la finestra Select Event é completamente occupata dalla | ||
+ | casella di riepilogo contenente le definizioni degli eventi disponibili a livello globale. La | ||
+ | selezione avviene come per una normale casella di riepilogo : effettuando un doppio clic con | ||
+ | il tasto sinistro del mouse sulla voce interessata o selezionandola con i tasti UP & DOWN | ||
+ | seguiti da una conferma con ENTER. Una volta confermato l' | ||
+ | compariranno i campi di impostazione dei parametri dell' | ||
+ | |||
+ | == OnKey == | ||
+ | ^L' | ||
+ | L' | ||
+ | associato risulta premuto. Il tempo di ripetizione dell' | ||
+ | della pagina attiva. Piú sono gli oggetti dinamici visualizzati, | ||
+ | generazione di un evento e l' | ||
+ | tasto del terminale basta fare clic con il pulsante sinistro del mouse sul pulsante rappresentante | ||
+ | tale tasto nel pannello impostazioni. L' | ||
+ | ai tasti PGUP, PGDN e INS per cui i corrispettivi pulsanti sul pannello impostazioni risulteranno | ||
+ | sempre disabilitati. | ||
+ | |Figura 22: pannello impostazioni evento OnKey| | ||
+ | |{{: | ||
+ | Se un tasto del terminale é giá stato utilizzato o non é disponibile poiché giá definito dal | ||
+ | sistema, il suo pulsante rappresentante, | ||
+ | disabilitato. | ||
+ | |||
+ | == OnPress == | ||
+ | L' | ||
+ | valgono le stesse procedure di impostazione descritte nell' | ||
+ | L' | ||
+ | corrispettivi pulsanti sul pannello impostazioni risulteranno sempre disabilitati. | ||
+ | |||
+ | == OnRelease == | ||
+ | L' | ||
+ | valgono le stesse procedure di impostazione descritte nell' | ||
+ | L' | ||
+ | corrispettivi bottoni sul pannello impostazioni risulteranno sempre disabilitati. | ||
+ | |||
+ | == OnAlways == | ||
+ | L' | ||
+ | caso trattandosi di eventi di livello globale verrá generato in continuazione. Il tempo di | ||
+ | ripetizione dell' | ||
+ | della CPU QMove visualizzate, | ||
+ | L' | ||
+ | uno per ogni pagina. A questo scopo QPaint fará sí che l' | ||
+ | finestra di selezione Select Event. | ||
+ | |||
+ | == OnPageIn == | ||
+ | L' | ||
+ | campi di impostazione e ne puó essere definito solo uno a livello globale, ed uno per ogni | ||
+ | pagina. A questo scopo QPaint fará si che il nome dell' | ||
+ | finestra di selezione Select Event. | ||
+ | |||
+ | == OnTime == | ||
+ | L' | ||
+ | comparazione impostati. L' | ||
+ | l' | ||
+ | valori corrispondenti. Ció significa, inoltre, che se il terminale viene spento quando l' | ||
+ | OnTime é soddisfatto, | ||
+ | in cui l' | ||
+ | |Figura 23 : pannello impostazioni evento OnTime| | ||
+ | |{{: | ||
+ | Nell' | ||
+ | di ogni ora del giorno 3 di ogni mese. Come si puó vedere é possibile definire il mese, giorno, | ||
+ | ora e minuto di occorrenza dell' | ||
+ | introduzione di mese, giorno, ora e minuto ne abilita o disabilita la comparazione. Se tale | ||
+ | casella é disabilitata si intente che l' | ||
+ | campo in esame. Almeno un campo deve essere impostato per assicurare la correttezza | ||
+ | dell' | ||
+ | |||
+ | == OnChangeVar == | ||
+ | ^Nel documento é presente il capitolo " | ||
+ | L' | ||
+ | pannello delle impostazioni, | ||
+ | |Figura 24: pannello impostazioni evento OnChangeVar| | ||
+ | |{{: | ||
+ | Nell? | ||
+ | variazione della variabile di terminale $PAGE. | ||
+ | |||
+ | == OnVar == | ||
+ | L' | ||
+ | ai parametri di comparazione impostati. Tali parametri sono composti da due campi: | ||
+ | |||
+ | - Compare Mode, la modalitá di comparazione. | ||
+ | - Compare Value, il valore in comprazione. | ||
+ | //Compare Mode// puó avere i seguenti valori | ||
+ | - < less than minore di | ||
+ | - > greater than maggiore di | ||
+ | - < = less or equal minore o uguale a | ||
+ | - > = greater or equal maggiore o uguale a | ||
+ | - = equal uguale a | ||
+ | |||
+ | //Compare Value// puó contenere solamente valori interi compresi tra -2147483648 e 2147483647. | ||
+ | |Figura 25 : pannello impostazioni evento OnVar| | ||
+ | |{{: | ||
+ | Nell' | ||
+ | di terminale $PAGE assume il valore 10. | ||
+ | |||
+ | == Definizione di una nuova azione == | ||
+ | ^In un progetto possono essere create tante azioni quanta é la memoria disponibile nel terminale.^ | ||
+ | Nella zona di destra della finestra di dialogo " | ||
+ | sulle azioni, sono presenti i bottoni " | ||
+ | contenente la lista delle azioni giá definite. Ogni evento, rappresentato nella casella di | ||
+ | riepilogo a sinistra, é collegato ad una lista di azioni che verranno eseguite quanto l' | ||
+ | stesso viene generato. Non vi puó essere una lista di azioni senza che vi sia un evento collegato. | ||
+ | Per questo motivo quando non vi sono eventi definiti non sará possibile definire alcuna | ||
+ | azione e i bottoni " | ||
+ | ricordare che la lista di azioni visualizzata é quella relativa all' | ||
+ | casella di riepilogo degli eventi e come tale cambia il suo contenuto ogni volta che si cambia | ||
+ | l' | ||
+ | |||
+ | - utilizzare il pulsante " | ||
+ | - selezionare nella casella di riepilogo la posizione ove inserire la nuova azione. Utilizzare il pulsante " | ||
+ | |||
+ | Alla pressione del pulsante " | ||
+ | |Figura 26 : finestra di selezione Select Action| | ||
+ | |{{: | ||
+ | Come si puó vedere nella fig.26, la finestra Select Action é completamente occupata dalla | ||
+ | casella di riepilogo contenente le definizioni delle azioni disponibili a livello globale. La | ||
+ | selezione avviene come per una normale casella di riepilogo : effettuando un doppio clic con | ||
+ | il tasto sinistro del mouse sulla voce interessata o selezionandola con i tasti UP & DOWN | ||
+ | seguiti da una conferma con ENTER. Una volta confermata l' | ||
+ | compariranno i campi di impostazione dei parametri dell' | ||
+ | |||
+ | == Goto Page == | ||
+ | Tramite l' | ||
+ | pagina specificata. In QPaint vi sono due modi per identificare univocamente una pagina : | ||
+ | tramite il suo numero ordinale e tramite il nome. Tutte le pagine hanno un numero che le | ||
+ | identifica all' | ||
+ | avremo che la prima pagina della lista avrá il numero 1, la seconda il 2 e cosí via fino | ||
+ | all' | ||
+ | lista ed acquisirá il numero successivo all' | ||
+ | pagina, per esempio, in dodicesima posizione, tutte le pagine dalla 12 all' | ||
+ | il loro numero di una unitá e la nuova pagina prenderá il numero 12. Da questo si | ||
+ | capisce che riferirsi ad una determinata pagina tramite il numero puó risultare pericoloso. | ||
+ | Se inizialmente alla pagina 12 abbiamo le visualizzazioni di produzione, non é detto che in | ||
+ | futuro, dopo inserimenti o rimozioni di altre pagine prima di quella interessata, | ||
+ | sia ancora la dodicesima nella lista delle pagine. Ció comporterebbe quindi un continuo | ||
+ | riaggiustamento delle azioni che utilizzano il numero 12 per identificare la pagina. Per | ||
+ | semplificare le operazioni di identificazione di una pagina c'é la possibilitá di associare ad | ||
+ | essa anche un nome che la rappresenti in modo univoco per tutto il progetto. Il nome di | ||
+ | una pagina é una stringa ASCII da 1 ÷ 20 caratteri in cui le lettere maiuscole sono ritenute | ||
+ | diverse dalle minuscole. Una pagina ha sempre un numero, ma puó non avere un nome. | ||
+ | Questo avviene quando il nome della pagina é composto da soli caratteri spazio. Quando si | ||
+ | usa il nome per identificare una pagina, questo renderá valida la sua identificazione per | ||
+ | tutta la durata dello sviluppo senza dover mai riaggiornare gli oggetti che la usano. L' | ||
+ | Goto Page permette di specificare la pagina a cui eseguire il salto sia con una variabile | ||
+ | di riferimento che con un nome scelto dalla lista dei nomi delle pagine disponibili. Nel | ||
+ | primo caso la variabile potrebbe contenere una costante per il numero della pagina o una | ||
+ | variabile QMove o di terminale in cui sia contenuto il numero della pagina desiderata. | ||
+ | Questo rende possibile decidere la pagina a cui saltare direttamente da linguaggio QCL | ||
+ | sulla CPU del QMove collegato al terminale. Nel secondo caso sará utilizzato il nome stesso | ||
+ | della pagina desiderata scelto dalla lista dei nomi pagina rilevati nel progetto. | ||
+ | |Figura 27 : pannello impostazioni azione Goto Page| | ||
+ | |{{: | ||
+ | Come si puó vedere nella fig.27, selezionando il pulsante di opzione "Page Number" | ||
+ | l' | ||
+ | In questo caso si tratta di una variabile QCL di nome sbPage presente nella CPU del | ||
+ | QMove collegato al terminale o al sistema integrato.. | ||
+ | |||
+ | Nel documento é presente il capitolo //" | ||
+ | descritte in dettaglio tutte le operazioni necessarie per definire una variabile di riferimento. | ||
+ | |Figura 28: pannello impostazioni azione Goto Page| | ||
+ | |{{: | ||
+ | Come si puó vedere nella fig.28, selezionando il pulsante di opzione "Page Name" si abilita | ||
+ | l' | ||
+ | combinata contenente la lista dei nomi delle pagine del progetto. | ||
+ | |||
+ | Nel caso in cui una pagina con nome venga rimossa, per esempio " | ||
+ | una o piú azioni Goto Page che la indirizzavano tramite il campo Page Name, accadrá che : | ||
+ | nella casella di riepilogo della zona di destra, dedicata alle operazioni sulle azioni, comparirá | ||
+ | la linea **Goto Page: " Available Chars "**. Sebbene " | ||
+ | agevolare le operazioni di correzione dell' | ||
+ | il nome della pagina in cui veniva richiesto il salto. Diversamente, | ||
+ | pannello impostazioni apparirá vuota e scomparirá ogni riferimento alla pagina " | ||
+ | Chars" | ||
+ | |||
+ | == Next Page == | ||
+ | Tramite l' | ||
+ | quella attualmente attiva. Nel caso in cui la pagina attiva sia l' | ||
+ | progetto, l' | ||
+ | |||
+ | == Previous Page == | ||
+ | Tramite l' | ||
+ | a quella attualmente attiva. Nel caso in cui la pagina attiva sia la prima della lista pagine di | ||
+ | progetto, l' | ||
+ | |||
+ | == Begin Data Entry == | ||
+ | Tramite l' | ||
+ | dati. Tale modalitá si abiliterá solamente se sono presenti nella pagina attiva oggetti grafici | ||
+ | di tipo Value o ValString con la proprietá " | ||
+ | |||
+ | == Send Command == | ||
+ | Tramite l' | ||
+ | presente nella CPU del QMove. In questo caso le fasi eseguite sono : recupero informazioni | ||
+ | azione, invio comando al QMove tramite comunicazione seriale, verifica corretta ricezione | ||
+ | comando con eventuali ritentativi, | ||
+ | analisi prossima azione presente nella lista azioni del terminale. Da quanto appena visto si | ||
+ | capisce che il terminale non attende la reale esecuzione del comando inviato. Infatti il | ||
+ | QMove si limiterá a bufferizzarlo per poi eseguirlo nel momento piú opportuno. Il tempo di | ||
+ | ritardo nell' | ||
+ | device. | ||
+ | |Figura 29: pannello impostazioni azione Send Command| | ||
+ | |{{software: | ||
+ | Come si puó vedere nella fig.29, l' | ||
+ | comando START al device AsseX. Per semplificare le operazioni di impostazione dei parametri | ||
+ | dell' | ||
+ | La dialog puó essere richiamata premendo il tasto F5 quando il fuoco é sul campo di introduzione | ||
+ | " | ||
+ | |Figura 30 : finestra di dialogo Symbol Object Selection| | ||
+ | |{{software: | ||
+ | Come si puó vedere nella fig.30, la dialog Symbol Object Selection é divisa in due aree | ||
+ | distinte. Quella di sinistra raggruppa in una struttura ad albero i vari device disponibili nella | ||
+ | sezione INTDEVICE / EXTDEVICE del file simboli importato. Quella di destra é invece occupata | ||
+ | dalla lista completa di tutti i comandi disponibili. Per confermare un comando é sufficiente | ||
+ | eseguire un doppio clic con il tasto sinistro del mouse o premere il tasto ENTER sulla voce | ||
+ | desiderata. | ||
+ | |||
+ | == Set Variable == | ||
+ | Tramite l' | ||
+ | riferimento Source nella variabile di riferimento Destination. | ||
+ | |Figura 31 : pannello impostazioni azione Set Variable| | ||
+ | |{{software: | ||
+ | Come si puó vedere nella fig.31, l' | ||
+ | contenuto della variabile terminale $HOUR nella variabile del QMove slOre. | ||
+ | |||
+ | Nel documento é presente il capitolo //" | ||
+ | descritte in dettaglio tutte le operazioni necessarie per definire una variabile di riferimento. | ||
+ | |||
+ | == Led On == | ||
+ | Tramite l' | ||
+ | funzione disponibili nella tastiera dello stesso. | ||
+ | |Figura 32 : pannello impostazioni azione Led On| | ||
+ | |{{software: | ||
+ | Come si puó vedere nella fig.32, l' | ||
+ | associato al tasto funzione F4. | ||
+ | |||
+ | == Led Off == | ||
+ | Tramite l' | ||
+ | funzione disponibili nella tastiera dello stesso. | ||
+ | |Figura 33 : pannello impostazioni azione Led Off| | ||
+ | |{{software: | ||
+ | Come si puó vedere nella fig.33, l' | ||
+ | associato al tasto funzione F4. | ||
+ | |||
+ | == Led Blink == | ||
+ | Tramite l' | ||
+ | associati ai tasti funzione disponibili nella tastiera dello stesso. | ||
+ | |Figura 34 : pannello impostazioni azione Led Blink| | ||
+ | |{{software: | ||
+ | Come si puó vedere nella fig.34, l' | ||
+ | modalitá di blink (lampeggio) il led associato al tasto funzione F4. | ||
+ | |||
+ | == Backup == | ||
+ | Tramite l' | ||
+ | dati. Durante l' | ||
+ | completamento dell' | ||
+ | |||
+ | == Restore == | ||
+ | ^L' | ||
+ | Tramite l' | ||
+ | dati. Durante l' | ||
+ | completamento dell' | ||
+ | |||
+ | == Object Blink == | ||
+ | Tramite l' | ||
+ | VALUE indicato (vedi fig.35). Questa azione è possibile eseguirla solamente come evento di | ||
+ | pagina e non come evento globale. | ||
+ | |Figura 35 : pannello impostazioni azione Object Blink| | ||
+ | |{{software: | ||
+ | |||
+ | == Object No Blink == | ||
+ | Tramite l' | ||
+ | dinamico VALUE indicato (vedi fig.36). Questa azione è possibile eseguirla solamente come | ||
+ | evento di pagina e non come evento globale. | ||
+ | |Figura 36 : pannello impostazioni azione Object No Blink| | ||
+ | |{{software: | ||
+ | |||
+ | == Object Reverse == | ||
+ | Tramite l' | ||
+ | VALUE indicato (vedi fig.37) con le cifre bianche su sfondo nero. Questa azione è possibile | ||
+ | eseguirla solamente come evento di pagina e non come evento globale. | ||
+ | |Figura 37 : pannello impostazioni azione Object Reverse| | ||
+ | |{{software: | ||
+ | |||
+ | == Object No Reverse == | ||
+ | Tramite l' | ||
+ | VALUE indicato (vedi fig.38) con le cifre nere su sfondo bianco (default). Questa azione è | ||
+ | possibile eseguirla solamente come evento di pagina e non come evento globale. | ||
+ | |Figura 38 : pannello impostazioni azione Object No Reverse| | ||
+ | |{{software: | ||
+ | |||
+ | == Increment Contrast == | ||
+ | Tramite l' | ||
+ | visualizzazione del display LCD. | ||
+ | |||
+ | Nella condizione di temperatura ottimale (vedere caratteristiche terminale) il tempo di | ||
+ | warm-up del display é dell' | ||
+ | almeno 5 minuti dall' | ||
+ | contrasto. | ||
+ | |||
+ | == Decrement Contrast == | ||
+ | Tramite l' | ||
+ | visualizzazione del display LCD. | ||
+ | |||
+ | Nella condizione di temperatura ottimale (vedere caratteristiche terminale) il tempo di | ||
+ | warm-up del display é dell' | ||
+ | almeno 5 minuti dall' | ||
+ | contrasto. | ||
+ | |||
+ | Attenzione !\\ | ||
+ | Quando il terminale é in modalitá introduzione dati sono disabilitati gli eventi On Press, On | ||
+ | Key e On Release sia a livello globale che di pagina. Inoltre sono disabilitate anche le azioni | ||
+ | Goto Page, Next Page e Previous Page. Nel caso in cui si volesse realizzare un campo introduzione | ||
+ | che permetta di impostare il numero della pagina in cui saltare, é consigliato l'uso | ||
+ | dell' | ||
+ | **On Out Data Enrty No Confirn** | ||
+ | |||
+ | L' | ||
+ | campo di introduzione dati senza confermare il dato che si è introdotto. | ||
+ | L' | ||
+ | essere definito per ogni pagina. A questo scopo QPaint fará si che il nome dell' | ||
+ | é giá in uso, scompaia dalla finestra di selezione Select Event. | ||
+ | |||
+ | == On Out Data Enrty Confirn == | ||
+ | L' | ||
+ | introduzione dati confermando il dato che si è introdotto.\\ | ||
+ | L' | ||
+ | essere definito per ogni pagina. A questo scopo QPaint fará si che il nome dell' | ||
+ | é giá in uso, scompaia dalla finestra di selezione Select Event. | ||
+ | |||
+ | === - Page | Insert Page === | ||
+ | Con questa voce di menú si richiede a QPaint di inserire una nuova pagina nel progetto | ||
+ | incrementando il numero della pagina di quelle comprese tra quella attualmente visualizzata | ||
+ | e l' | ||
+ | una volta raggiunto tale limite la voce verrá disabilitata.\\ | ||
+ | __// | ||
+ | |||
+ | === - Page | Add Page === | ||
+ | Con questa voce di menú si richiede a QPaint di aggiungere una nuova pagina alla fine del | ||
+ | progetto. In un progetto vi possono essere al massimo 999 pagine, per cui una volta | ||
+ | raggiunto tale limite la voce verrá disabilitata.\\ | ||
+ | __// | ||
+ | |||
+ | === - Page | Copy Page === | ||
+ | Con questa voce di menú si richiede a QPaint di copiare la pagina attiva del progetto. La | ||
+ | copia manterrà tutti i collegamenti con le variabili.\\ | ||
+ | __// | ||
+ | |||
+ | __//Page | Paste Page//__ | ||
+ | Con questa voce di menú si richiede a QPaint di incollare la pagina copiata precedentemente. | ||
+ | Prima di fare l' | ||
+ | |Figura 38 : pannello impostazioni Paste Page| | ||
+ | |{{: | ||
+ | Prima di incollare la pagina è possibile assegnarle un nome e decidere se si vuole incollare | ||
+ | o al posto di quella visualizzata o come precedente a quella visualizzata o come successiva | ||
+ | a quella visualizzata o alla fine del progetto. In ogni caso manterrà tutti i collegamenti con | ||
+ | le variabili.\\ | ||
+ | __// | ||
+ | |||
+ | === - Page | Delete Page === | ||
+ | Con questa voce di menú si richiede a QPaint di rimuovere la pagina attiva dal progetto. | ||
+ | Prima di effettuare la rimozione verrá visualizzata una finestra di dialogo con il testo "Page | ||
+ | will be lost ! Are you sure of to want to continue ?". Se si conferma l' | ||
+ | la pagina verrá rimossa, mentre " | ||
+ | __// | ||
+ | |||
+ | === - Page | Import Page === | ||
+ | Con questa voce di menù si richiede a Qpaint di importare una pagina esportata da un altro | ||
+ | progetto. La pagina importata manterrà tutti i collegamenti con le variabili della pagina | ||
+ | esportata e gli eventi di pagina. Prima di fare l' | ||
+ | finestra di dialogo: | ||
+ | |Figura 39 : pannello impostazioni Import Page| | ||
+ | |{{: | ||
+ | Una volta selezionata la pagina da importare, viene visualizzata la finestra di dialogo di fig. | ||
+ | 38, grazie alla quale, prima di importare la pagina, è possibile assegnarle un nome e decidere | ||
+ | se si vuole incollare o al posto di quella visualizzata o come precedente a quella | ||
+ | visualizzata o come successiva a quella visualizzata o alla fine el progetto.\\ | ||
+ | __// | ||
+ | |||
+ | === - Page | Export Page === | ||
+ | Con questa voce di menù si richiede a Qpaint di esportare la pagina visualizzata dal progetto | ||
+ | aperto. La pagina esportata manterrà tutti i collegamenti con le variabili e gli eventi di | ||
+ | pagina. Prima di fare l' | ||
+ | |Figura 40 : pannello impostazioni Export Page| | ||
+ | |{{: | ||
+ | |||
+ | === - Page | Data Entry Sequence Editor === | ||
+ | Con questa voce di menú si richiede a QPaint di ordinare in modo manuale la sequenza del | ||
+ | data entry nella pagina visualizzata. Prima di fare l' | ||
+ | finestra di dialogo: | ||
+ | |Figura 41 : pannello Data Entry Sequence Editor| | ||
+ | |{{: | ||
+ | Nella finestra in alto a sinistra viene visualizzata la pagina che si intende modificare; evidenziato | ||
+ | in rosso il campo di data entry attualmente in modifica.\\ | ||
+ | Nella finestra in basso viene visualizzata una tabella contenente: | ||
+ | * Nella prima colonna il numero dell' | ||
+ | * Nella seconda colonna viene visualizzato il nome dell' | ||
+ | * Nella terza colonna viene data la possibilità di modificare il data entry (di default disabilitata); | ||
+ | * Nella quarta colonna viene visualizzato il nome dell' | ||
+ | * Nella quinta colonna viene visualizzato il nome dell' | ||
+ | * Nella sesta colonna viene visualizzato il nome dell' | ||
+ | * Nella settima colonna viene visualizzato il nome dell' | ||
+ | * Nell' | ||
+ | * Se si desidera riprogrammare totalmente l' | ||
+ | Nella finestra in alto a destra viene visualizzata la mappatura della tastiera. Premendo i | ||
+ | tasti a freccia o il tasto enter, viene evidenziato in blu il campo dove andrà il data entry alla | ||
+ | pressione del tasto relativo. Per modificare il campo di destinazione, | ||
+ | con il mouse il campo desiderato dalla finestra di sinistra al simbolo del tasto voluto. | ||
+ | Nel caso un campo abbia disabilitata la funzione del tasto ENTER nel data entry sequence, si | ||
+ | esce dal data entry quando si preme il tasto (per gli altri campi si può uscire con il tasto | ||
+ | " | ||
+ | |||
+ | === - Page | Toggle Lock Page === | ||
+ | Con questa voce di menú si richiede a QPaint di abilitare o disabilitare l' | ||
+ | //" | ||
+ | sulla sezione riguardante la //" | ||
+ | |||
+ | === - Page | Page Events Editor === | ||
+ | Con questa voce di menú si richiede a QPaint di aprire la finestra di dialogo Page Events | ||
+ | Editor dalla quale é possibile visualizzare ed introdurre gli eventi relativi alla pagina di | ||
+ | progetto attiva. Sostanzialmente gli eventi di pagina sono eguali a quelli globali per cui | ||
+ | quanto descritto nella sezione " | ||
+ | "Page | Page Events Editor" | ||
+ | * nel titolo della finestra di dialogo compare il numero, ed eventualmente anche il nome, della pagina interessata. | ||
+ | * negli eventi On Key, On Press e On Release é possibile creare una lista di azioni anche per i tasti INS, PG DN e PG UP. | ||
+ | * sono stati aggiunti gli eventi di On OUT Data Entry Confirm e On OUT Data Entry No Confirm | ||
+ | La finestra di dialogo visualizzata sará la seguente: | ||
+ | |Figura 42 : finestra di dialogo Page Events Editor| | ||
+ | |{{: | ||
+ | Come si puó vedere in fig.42, l' | ||
+ | per gli eventi globali e differisce solamente per il testo visualizzato nel titolo della finestra | ||
+ | di dialogo.\\ | ||
+ | Gli eventi aggiunti rispetto a quelli globali sono: | ||
+ | |||
+ | == On OUT Data Entry Confirm == | ||
+ | L' | ||
+ | con conferma del dato. | ||
+ | |Figura 43 : Pannello di impostazioni evento On OUT Data Entry Confirm| | ||
+ | |{{: | ||
+ | |||
+ | == On OUT Data Entry No Confirm == | ||
+ | L' | ||
+ | campo senza aver confermato il dato. | ||
+ | |Figura 44 : Pannello di impostazioni evento On OUT Data Entry Confirm| | ||
+ | |{{: | ||
+ | |||
+ | == Transfer | Download == | ||
+ | Con questa voce di menú si richiede a QPaint di effettuare il download del progetto nel | ||
+ | terminale. La procedura di download si divide in cinque fasi: | ||
+ | |||
+ | - Il controllo del progetto. | ||
+ | - La connessione seriale con il terminale. | ||
+ | - La compilazione del progetto. | ||
+ | - La cancellazione della memoria nel terminale. | ||
+ | - Il download del progetto nel terminale. | ||
+ | - Lo start del progetto scaricato nel terminale. | ||
+ | |||
+ | == Il controllo del progetto == | ||
+ | Durante questa fase il QPaint esegue un controllo del progetto per verificare che lo stesso sia coerente con le regole fissate. Ció permette di evitare che vengano effettuati trasferimenti nel terminale di progetti non corretti, impedendo quindi malfunzionamenti e comportamenti indesiderati. | ||
+ | La procedura seguita é la stessa utilizzata per la voce di menú " | ||
+ | Unica differenza tra il controllo di progetto effettuato durante il download e quanto fatto durante il Check Project di " | ||
+ | Se durante questa fase viene riscontrato un errore la procedura di download termina é sará possibile uscire dalla dialog Download Project tramite il pulsante " | ||
+ | |||
+ | == La connessione seriale con il terminale == | ||
+ | Durante questa fase il QPaint verifica la comunicazione seriale con il terminale. I parametri | ||
+ | di comunicazione sono quelli impostati in " | ||
+ | ulteriori informazioni. Se durante questa fase viene riscontrato un errore la procedura di | ||
+ | download termina e sará possibile uscire dalla dialog Download Project tramite il pulsante | ||
+ | " | ||
+ | |||
+ | == La compilazione del progetto == | ||
+ | Durante questa fase il QPaint effettua la compilazione del progetto e crea il file da trasferire | ||
+ | al terminale. Se durante questa fase viene riscontrato un errore la procedura di download | ||
+ | termina é sará possibile uscire dalla dialog Download Project tramite il pulsante " | ||
+ | |||
+ | == La cancellazione della memoria nel terminale == | ||
+ | Durante questa fase il QPaint effettua l' | ||
+ | verrá memorizzato il progetto compilato. Se durante questa fase viene riscontrato un errore | ||
+ | la procedura di download termina é sará possibile uscire dalla dialog Download Project tramite | ||
+ | il pulsante " | ||
+ | |||
+ | == Il download del progetto nel terminale == | ||
+ | Durante questa fase il QPaint effettua il download del progetto compilato nella memoria del | ||
+ | terminale. A questo punto nella dialog Download Project comparirá un indicatore che | ||
+ | visualizzerá la progressione dei dati trasferiti istante per istante. Se durante questa fase | ||
+ | viene riscontrato un errore la procedura di download termina é sará possibile uscire dalla | ||
+ | dialog Download Project tramite il pulsante " | ||
+ | non verranno annullate. | ||
+ | |||
+ | == Lo start del progetto scaricato nel terminale == | ||
+ | Durante questa fase il QPaint invia al terminale il comando di start progetto. Tramite questo | ||
+ | comando il terminale avvierá il progetto scaricato uscendo dalla modalitá " | ||
+ | Configuration" | ||
+ | termina é sará possibile uscire dalla dialog Download Project tramite il pulsante " | ||
+ | operazioni effettuate nel terminale non verranno annullate. | ||
+ | |||
+ | === - Graphics | Font Report === | ||
+ | ^Ulteriori informazioni riguardo ai font e la loro impementazione nel sistema QPaint/ | ||
+ | Con questa voce di menú si richiede a QPaint di aprire la finestra di dialogo Font Report dalla | ||
+ | quale é possibile visualizzare e stampare un rapporto dettagliato sui font disponibili, | ||
+ | l' | ||
+ | sará la seguente: | ||
+ | |Figura 45 : finestra di dialogo Font Report| | ||
+ | |{{: | ||
+ | Come si puó vedere nella fig.45, per ogni font viene visualizzato il nome, lo stato di utilizzo | ||
+ | nel corrente progetto e la quantitá di memoria terminale che impegnerá se utilizzato. I font | ||
+ | con il campo " | ||
+ | per cui non vengono scaricati durante la fase di download e sono sempre disponibili in | ||
+ | qualsiasi progetto. | ||
+ | |||
+ | === - Graphics | New Font From | Bitmap File === | ||
+ | Con questa voce di menú si richiede a QPaint di creare un nuovo font utente a partire da un | ||
+ | file Bitmap monocromatico. La finestra di dialogo visualizzata sará la seguente: | ||
+ | |Figura 46 : finestra di dialogo New Font From Bitmap File| | ||
+ | |{{: | ||
+ | Come si puó vedere nella fig.46, nella dialog sono presenti tre campi di introduzione dati e | ||
+ | rispettivamente : la casella " | ||
+ | Bitmap comprensivo di percorso ed estensione (es: " | ||
+ | Font\Display 7 segmenti.BMP" | ||
+ | nome del font utente in creazione (es: " | ||
+ | nella quale si imposta il valore di spacing carattere desiderato. Tramite il pulsante " | ||
+ | avvia l' | ||
+ | presente, inoltre, il pulsante " | ||
+ | la finestra di dialog standard di Windows® per la selezione delle immagini. | ||
+ | |||
+ | Alla pressione del pulsante " | ||
+ | Tali controlli verificheranno la bontá dei dati nei campi di introduzione e le caratteristiche | ||
+ | del file Bitmap specificato. In caso vengano riscontrate irregolaritá QPaint visualizzerá un | ||
+ | box di dialogo con le indicazioni del caso. | ||
+ | |||
+ | === - Graphics | New Font From |True Type Font === | ||
+ | Con questa voce di menú si richiede a QPaint di creare un nuovo font utente a partire da un | ||
+ | font True Type® di Windows®. La finestra di dialogo visualizzata sará la seguente: | ||
+ | |Figura 47 : finestra di dialogo Rights to True Type® Font Conversion| | ||
+ | |{{: | ||
+ | Come si puó vedere nella fig.47, prima di poter creare un nuovo font utente a partire da un | ||
+ | font True Type® di Windows® é necessario leggere attentamente le istruzioni per i diritti di | ||
+ | autore inerenti l' | ||
+ | É piena responsabilitá dell' | ||
+ | pressione del pulsante " | ||
+ | abortirá l' | ||
+ | |Figura 48 : finestra di dialogo New Font From True Type® Font| | ||
+ | |{{: | ||
+ | Come si puó vedere nella fig.48, la dialog é composta dai seguenti oggetti : la casella di | ||
+ | riepilogo " | ||
+ | quale derivare il nuovo font utente, la casella " | ||
+ | il nome del font utente in creazione (es: " | ||
+ | nella quale si definisce la larghezza in pixel dei caratteri nel font in creazione e la casella | ||
+ | "Char Spacing", | ||
+ | pulsante " | ||
+ | procedura. É presente, inoltre, il pulsante " | ||
+ | un file Bitmap monocromatico con il font risultante dalle impostazioni effettuate. Quest' | ||
+ | operazione risulta utile quando si intende generare la Bitmap di un font partendo da un | ||
+ | font True Type® di Windows®, modificare tale Bitmap con un editor grafico quale il PaintBrush | ||
+ | di Windows® e creare il nuovo font utente con la Bitmap modificata tramite la voce di menú | ||
+ | " | ||
+ | |||
+ | == Attenzione ! == | ||
+ | La qualitá del font utente creato tramite la dialog "New Font From True Type Font" dipende | ||
+ | da molti aspetti tecnici che di solito non sono visibili ad un normale utente. Di regola si puó | ||
+ | peró assumere che, maggiore é la dimensione in pixel del carattere definita tramite il parametro | ||
+ | " | ||
+ | Type® utilizzato in quanto maggiore é la presenza di piccoli dettagli grafici nel font, minore | ||
+ | é la qualitá del font utente ottenibile. | ||
+ | |||
+ | Alla pressione del pulsante " | ||
+ | Tali controlli verificheranno la bontá dei dati nei campi di introduzione. In caso vengano | ||
+ | riscontrate irregolaritá QPaint visualizzerá un box di dialogo con le indicazioni del caso. | ||
+ | |||
+ | === - Graphics | Image Manager === | ||
+ | Con questa voce di menú si richiede a QPaint di aprire il gestore immagini. Nel terminale é | ||
+ | stato implementato un oggetto grafico, chiamato Image, con il quale é possibile visualizzare, | ||
+ | su di una pagina, immagini monocromatiche. Le immagini visualizzate possono avere | ||
+ | qualsiasi dimensione entro la grandezza del display in uso. Al fine di ridurre la quantità di | ||
+ | memoria utilizzata dal terminale per mantenere i dati delle immagini, si é pensato di adottare | ||
+ | un' | ||
+ | i dati dell' | ||
+ | e ad ogni immagine verrá assegnato un nome identificativo composto da una stringa ASCII di | ||
+ | lunghezza massima 16 caratteri. Tale nome sará utilizzato dall' | ||
+ | quale immagine della libreria si vuole visualizzare. Se si pensa che normalmente un' | ||
+ | appare in piú pagine si capisce immediatamente l' | ||
+ | con questo sistema. Inoltre durante la procedura di download verranno trasferite nel terminale | ||
+ | solo le immagini utilizzate dagli oggetti Image. La libreria immagini del terminale viene | ||
+ | creata per mezzo del gestore di immagini Image Manager. Con esso l' | ||
+ | libreria inserendo, rimuovendo e rinominando le immagini in formato BMP che verranno | ||
+ | incorporate nel progetto. Il fatto di incorporare le immagini direttamente nel file del progetto | ||
+ | permette di eliminare ogni collegamento con i file BMP originali, facilitando le operazioni | ||
+ | di trasporto dello stesso su altri computer o media di archiviazione. | ||
+ | |||
+ | Nel caso in cui nel progetto non siano mai state inserite immagini comparirá la seguente | ||
+ | finestra: | ||
+ | |Figura 49 : finestra di dialogo Image Manager di un progetto senza immagini| | ||
+ | |{{: | ||
+ | Come si puó vedere in fig.49, nella finestra di dialogo Image Manager abbiamo : una casella | ||
+ | di riepilogo in cui vengono visualizzati i nomi delle immagini presenti in libreria, il box | ||
+ | " | ||
+ | dei campi Width e Height per le dimensioni in pixel della stessa, piú i pulsanti | ||
+ | " | ||
+ | selezionata e " | ||
+ | " | ||
+ | immagini di progetto.\\ | ||
+ | La pressione del pulsante " | ||
+ | |Figura 50: finestra di dialogo Add Bitmap File| | ||
+ | |{{: | ||
+ | Le funzionalitá espletate dalla finestra di dialogo sono quelle standard normalmente fornite | ||
+ | dallo stesso sistema operativo Windows®. A conferma dell' | ||
+ | Image Manager analizzerá le caratteristiche del file bitmap BMP selezionato. Nel caso in cui | ||
+ | venga rilevata una bitmap non monocromatica comparirá un box di messaggio con la scritta | ||
+ | "The BMP can be only monochrome !". Premendo il tasto " | ||
+ | immagine verrá abortita. Nel caso in cui venga rilevata una bitmap di dimensioni non compatibili | ||
+ | con il display in uso comparirá un box di messaggio con la scritta " | ||
+ | Premendo il tasto " | ||
+ | verificato che le caratteristiche dell' | ||
+ | in fondo alla lista immagini di progetto e le verrá assegnato un nome di default. Nella | ||
+ | dialog Add Bitmap File non é possibile selezionare piú di un' | ||
+ | volta. Questo comunque non é un problema poiché é sufficiente ripetere l' | ||
+ | con il pulsante " | ||
+ | |Figura 51 : finestra di dialogo Image Manager di un progetto con tre immagini| | ||
+ | |{{: | ||
+ | Come si puó vedere nella fig.37, abbiamo un esempio in cui sono state inserite tre immagini | ||
+ | nella lista immagini di progetto. Image Manager ha impostato per default il loro nome in: | ||
+ | Picture1, Picture2 e Picture3. Per semplificare l' | ||
+ | Image Manager rende possibile modificarne il nome tramite il pulsante " | ||
+ | |||
+ | La pressione del pulsante " | ||
+ | |Figura 52: finestra di dialogo Insert New Name| | ||
+ | |{{: | ||
+ | Tramite la dialog Insert New Name é possibile introdurre un nuovo nome per l' | ||
+ | selezionata. Vi sono peró alcune regole da rispettare. Il nome deve avere una lunghezza | ||
+ | compresa tra 1 e 16 caratteri ASCII. Le lettere minuscole sono considerate differenti da | ||
+ | quelle maiuscole. Non vi possono essere due immagine con lo stesso nome. Image Manager si | ||
+ | occuperá di controllare che quanto introdotto sia corretto, attivando un opportuno box di | ||
+ | messaggio nel caso non si rispetti quanto appena descritto. | ||
+ | |Figura 53: finestra di dialogo Image Manager di un progetto con tre immagini| | ||
+ | |{{: | ||
+ | Come si puó vedere nella fig.53, i nomi delle tre immagini " | ||
+ | sono stati modificati in " | ||
+ | diventerá piú semplice identificarli quando usati nell' | ||
+ | |||
+ | Quando si esce da Image Manager tramite il pulsante " | ||
+ | apportate comporteranno il riallineamento di alcuni oggetti Image presenti nel progetto. In | ||
+ | questo caso comparirá un box di messaggio con la scritta "The acceptance of the changes | ||
+ | will involve the realignment of some objects image of the project ! Are you sure of to want | ||
+ | to continue ?" e i bottoni " | ||
+ | Image verranno riallineati e tutte le impostazioni fatte con Image Manager confermate, | ||
+ | mentre " | ||
+ | |||
+ | === - Options | Communication === | ||
+ | ^L' | ||
+ | COM1, COM2, etc.^ | ||
+ | Con questa voce di menú si richiede a QPaint di visualizzare la finestra di impostazione dei | ||
+ | parametri di comunicazione seriale. Il QPaint utilizza la comunicazione seriale, durante la | ||
+ | procedura di download, per trasferire il progetto al terminale utilizzando il ponte fornito dal | ||
+ | QMove. Ulteriori informazioni inerenti i collegamenti e le configurazioni hardware sono disponibili | ||
+ | nel manuale tecnico del terminale e del QMove. Tramite la finestra di dialogo Serial | ||
+ | Port Settings é possibile effettuare tutte le impostazioni necessarie ad ottenere il collegamento | ||
+ | seriale con il terminale. | ||
+ | |Figura 54: finestra di dialogo Serial Port Settings| | ||
+ | |{{: | ||
+ | Come si puó vedere nella fig.54, la finestra di dialogo presenta due pagine di impostazione: | ||
+ | Communication e Timeout. Con la prima si definiscono la porta di comunicazione seriale e la | ||
+ | velocitá di trasferimento dei dati. Con seconda si definiscono i tempi di timeout per le varie | ||
+ | fasi del download. | ||
+ | |Figura 55 : finestra di dialogo Serial Port Settings| | ||
+ | |{{: | ||
+ | Come si puó vedere in fig.55, nella pagina Timeout sono presenti due gruppi di tempi | ||
+ | timeout. Il gruppo Times1 é da utilizzarsi quando si effettua un collegamento diretto tra | ||
+ | PC, QMove e terminale. Il gruppo Times2 é da utilizzarsi quando si effettua un collegamento | ||
+ | remotato tra PC, modem con QModem, QMove e terminale. Nel secondo caso sono | ||
+ | necessari tempi di timeout maggiori dovuti ai ritardi di trasferimento introdotti dalla comunicazione | ||
+ | con modem. La possibilitá di modificare i tempi di timeout, permette all' | ||
+ | di adattare il trasferimento dei dati alle proprie condizioni di utilizzo. Segue ora una | ||
+ | breve descrizione dei parametri di timeout: | ||
+ | |CPU|Answer timeout sulla risposta del terminale| | ||
+ | |Char|timeout fra carattere e carattere| | ||
+ | |Com Ok|timeout sulla verifica di connessione seriale| | ||
+ | |Flush|timeout su invio richiesta al terminale| | ||
+ | |Download|timeout su conclusione procedura download al terminale| | ||
+ | |Pack Ok|timeout ricezione pacchetto informazioni| | ||
+ | |||
+ | === - Help | Technical Info === | ||
+ | Con questa voce di menú si richiede a QPaint di visualizzare la finestra delle informazioni | ||
+ | tecniche. In essa sono elencati tutti gli oggetti o le, librerie dinamiche e drivers utilizzati | ||
+ | dal QPaint per il proprio funzionamento. Puó essere utilizzata, su richiesta della QEM srl, | ||
+ | nell' | ||
+ | |Figura 56: finestra di dialogo Technical Info| | ||
+ | |{{: | ||
+ | Come si puó vedere in fig.56, nella dialog é presente il pulsante " | ||
+ | potranno stampare le informazioni tecniche visualizzate. Prima di avviare la procedura di | ||
+ | stampa assicurarsi che in Windows® vi sia installata almeno una stampante. | ||
+ | |||
+ | === - Help | About === | ||
+ | Con questa voce di menú si richiede a QPaint di visualizzare la finestra di About. In essa sono | ||
+ | presenti le informazioni inerenti il prodotto, la QEM srl e gli indirizzi internet disponibili | ||
+ | all' | ||
+ | e commerciali sui prodotti QEM. La casella soft@qem.it puó essere utilizzata per richiedere | ||
+ | informazioni ed assistenza al supporto tecnico QEM. | ||
+ | |Figura 57 : finestra di dialogo About QPaint| | ||
+ | |{{: | ||
+ | |||
+ | ==== - Barra di gestione della pagina ==== | ||
+ | Tramite la barra di gestione della pagina é possibile: | ||
+ | - Scegliere la pagina da attivare specificandone il numero. | ||
+ | - Scegliere la pagina da attivare scegliendola dalla lista pagine di progetto. | ||
+ | - Modificare il nome associato alla pagina attiva. | ||
+ | |||
+ | |Figura 58: barra di gestione della pagina| | ||
+ | |{{: | ||
+ | Come si puó vedere in fig.58, nella barra di gestione della pagina sono presenti un campo di | ||
+ | introduzione numerico ed una casella combinata. Nel campo di introduzione viene visualizzato | ||
+ | il numero della pagina attiva, mentre nella casella combinata compare il nome ad essa | ||
+ | associato. Nel campo di introduzione é possibile specificare il numero della pagina che si | ||
+ | desidera attivare. Se viene introdotto un valore inferiore a 1 o maggiore del numero complessivo | ||
+ | delle pagine verrá attivata l' | ||
+ | é possibile indicare il nome della pagina che si vuole attivare scegliendola dalla lista dei | ||
+ | nomi pagine di progetto. Con essa si puó inoltre modificare il nome associato alla pagina | ||
+ | attiva. | ||
+ | |||
+ | N.B: Ulteriori informazioni riguardo la gestione delle pagine sono reperibili nella sezione dedicata | ||
+ | all' | ||
+ | |||
+ | ==== - Barra di impostazione della password di pagina ==== | ||
+ | Quando si realizza un' | ||
+ | come la velocitá massima di lavoro attrezzo o le impostazioni degli assi di movimento, il cui | ||
+ | accesso deve essere consentito solo a determinati operatori (tecnico manutenzione, | ||
+ | ecc...) in modo da evitare che un inserimento di dati errati possa portare ad alterazioni | ||
+ | delle caratteristiche di funzionamento o influire sulla sicurezza stessa della macchina. | ||
+ | Per la protezione dei dati critici il terminale rende possibile attivare una password che | ||
+ | impedisca l' | ||
+ | Tale password é composta da una stringa di lunghezza massima 8 caratteri compresi nel set | ||
+ | alfanumerico 0 ÷ 9 e A ÷ Z. Ogni pagina del progetto ha la possibilitá di richiedere una propria | ||
+ | password. Quando l' | ||
+ | una speciale pagina di richiesta della password. Se l' | ||
+ | il terminale visualizza la pagina protetta, altrimenti resta nella pagina speciale di richiesta | ||
+ | password. Per uscire dall' | ||
+ | ritorno alla pagina precedente. Quando vi sono piú pagine collegate con la stessa password | ||
+ | di protezione l' | ||
+ | tra le varie pagine protette senza altre introduzioni di password. | ||
+ | |||
+ | Tramite la barra di impostazione della password di pagina é possibile: | ||
+ | - Abilitare / disabilitare la password di pagina. | ||
+ | - Impostare la password della pagina. | ||
+ | |||
+ | |Figura 59 : barra di impostazione della password di pagina| | ||
+ | |{{: | ||
+ | Come si puó vedere in fig.59, nella barra di impostazione della password di pagina sono | ||
+ | presenti un pulsante ed un campo di introduzione. Il pulsante puó assumere due stati stabili. | ||
+ | Lo stato ON abilita l' | ||
+ | non contiene alcun carattere il terminale non esegue nessuna richiesta di introduzione | ||
+ | password. Lo stato OFF é utilizzato durante lo sviluppo del progetto per agevolare il debug | ||
+ | dello stesso. Infatti, in questo stato il valore della password rimane impostato ma il terminale | ||
+ | non ne richiede l' | ||
+ | pulsante é in stato di OFF. Nella sezione esempi é presentate una dimostrazione di come | ||
+ | utilizzare la password di pagina. | ||
+ | |||
+ | ==== - Barra delle funzioni di progetto ==== | ||
+ | Tramite la barra delle funzioni di progetto é possibile: | ||
+ | - Salvare il progetto aperto. | ||
+ | - Richiamare la finestra di dialogo " | ||
+ | - Richiamare la finestra di dialogo "Page Events Editor" | ||
+ | - Avviare la procedura di download del progetto nel terminale. | ||
+ | |||
+ | |Figura 60 : barra delle funzioni di progetto| | ||
+ | |{{: | ||
+ | |||
+ | {{software: | ||
+ | {{software: | ||
+ | {{software: | ||
+ | {{software: | ||
+ | |||
+ | ==== - Barra delle funzioni di disegno ==== | ||
+ | Tramite la barra delle funzioni di disegno é possibile: | ||
+ | - Aumentare il fattore di zoom dell' | ||
+ | - Diminuire il fattore di zoom dell' | ||
+ | - Portare ad un livello superiore di vista l' | ||
+ | - Portare ad un livello inferiore di vista l' | ||
+ | - Cambiare il colore di sfondo utilizzato nell' | ||
+ | |||
+ | |Figura 61: barra delle funzioni di disegno| | ||
+ | |{{: | ||
+ | |||
+ | {{software: | ||
+ | {{software: | ||
+ | {{software: | ||
+ | {{software: | ||
+ | {{software: | ||
+ | |||
+ | ==== - Barra degli strumenti di disegno ==== | ||
+ | La barra degli strumenti di disegno é utilizzata dall' | ||
+ | pagine di un progetto. Con essa é possibile depositare nell' | ||
+ | contenuto della pagina attiva, oggetti quali campi di visualizzazione/ | ||
+ | alfanumerici, | ||
+ | nella pagina attiva é un' | ||
+ | barra degli strumenti di disegno, facendo click con il tasto sinistro del mouse, il tipo di | ||
+ | oggetto che si intende aggiungere. Poi basta fare di nuovo click con il mouse sull' | ||
+ | disegno nella zona dove si intende depositare il nuovo oggetto. A questo punto alcuni oggetti | ||
+ | visualizzano automaticamente la pagina delle loro proprietá, mentre altri come i rettangoli | ||
+ | non richiedono alcun dato aggiuntivo. Appena aggiunto il nuovo oggetto sulla pagina, il pulsante | ||
+ | precedentemente attivo sulla barra degli strumenti di disegno ritorna in posizione di | ||
+ | disattivazione e viene selezionato il //Pointer Object//. Questo non é propriamente un oggetto | ||
+ | di disegno bensí un strumento di manipolazione degli oggetti giá presenti sulla pagina. Con | ||
+ | esso é infatti possibile spostare, ridimensionare, | ||
+ | sull' | ||
+ | dover riselezionare ogni volta il corrispondente pulsante, é sufficiente mantenere premuto il | ||
+ | tasto SHIFT sinistro della tastiera. In questo modo al termine dell' | ||
+ | oggetto nella pagina non verrá attivato il //Pointer Object// ma rimmará attivo il pulsante | ||
+ | precedentemente selezionato.\\ | ||
+ | In una pagina vi sono due tipi di oggetti depositabili: | ||
+ | Per oggetti statici si intendono tutti quegli oggetti che vengono disegnati sul display solamente | ||
+ | una volta al cambio della pagina attiva. Per oggetti dinamici si intendono tutti quegli | ||
+ | oggetti che sono in continuo aggiornamento sul display. Oltre alla modalitá di aggiornamento | ||
+ | tra gli oggetti statici e dinamici esiste un' | ||
+ | per la propria visualizzazione una area grafica ben definita. Quando due oggetti statici | ||
+ | sovrappongono le loro aree di ingombro, anche se parzialmente, | ||
+ | visualizzato sopra all' | ||
+ | ciascuno una proprietá detta livello che identifica l' | ||
+ | oggetto con livello 3 viene sempre visualizzato sotto ad un oggetto di livello 4. Gli oggetti | ||
+ | dinamici invece sono sempre prioritari rispetto a quelli statici percui verranno sempre | ||
+ | visualizzati ad un livello superiore. Nel QPaint sono presenti due voci di menú che permettono | ||
+ | di modificare il livello di disegno di un oggetto statico e piú precisamente "Bring Up | ||
+ | Object" | ||
+ | oggetto statico, sará presente nella Status Bar l' | ||
+ | associato.\\ | ||
+ | La barra degli strumenti di disegno é composta dai seguenti pulsanti:\\ | ||
+ | {{software: | ||
+ | {{software: | ||
+ | {{software: | ||
+ | {{software: | ||
+ | {{software: | ||
+ | {{software: | ||
+ | {{software: | ||
+ | |||
+ | === - Pulsante | Pointer Object === | ||
+ | Questo é l' | ||
+ | inserire un nuovo oggetto nella pagina attiva ma bensí é utilizzato per la selezione di un | ||
+ | oggetto giá presente nella pagina. L' | ||
+ | ridimensionato, | ||
+ | |||
+ | === - Pulsante | Value Object === | ||
+ | Con questo pulsante si richiede a QPaint di depositare sulla pagina attiva un oggetto | ||
+ | dinamico di tipo Value. Tramite l' | ||
+ | valore numerico o alfanumerico in una variabile di riferimento. Le proprietá impostabili | ||
+ | sono le seguenti:\\ | ||
+ | N.B: VR significa " | ||
+ | ^Proprietá^Descrizione^Limiti e condizioni^ | ||
+ | |Dec.Point (Decimal Point)|VR per la posizione del punto decimale|Se non definita disabilita la funzionalitá di punto decimale.| | ||
+ | |Variable|VR per la variabile CPU QMove o terminale da visualizzare / introdurre|Se viene selezionata una variabile del gruppo DEVPAR a sola lettura la proprietá Enable Modify Mode dovrá essere OFF.| | ||
+ | |Max Variable|VR per il controllo del limite superiore in introduzione|Se non definita non viene effettuato alcun controllo sul limite superiore.| | ||
+ | |Min Variable|VR per il controllo del limite inferiore di introduzione|Se non definita non viene effettuato alcun controllo sul limite inferiore.| | ||
+ | |Enable Lead Zero Blank Mode|Flag che se ON sostituisce tutti i caratteri spazio non rappresentativi presenti in testa alla visualizzazione con il carattere ' | ||
+ | |Enable Sign Mode|Flag che se ON abilita l' | ||
+ | |Enable Alpha Mode|Flag che se ON abilita l' | ||
+ | |-|-|La proprietá Variable potrá selezionare solamente simboli del gruppo ARRSYS e ARRGBL di tipo BYTE.| | ||
+ | |Enable Modify Mode|Flag che se ON abilita la modifica del valore indirizzato dalla proprietá Variable|Se il flag é ON la proprietá Enable Sign Mode viene abilitata.| | ||
+ | |Length|Definisce il numero di caratteri che compone l' | ||
+ | |Symbol list|Da la possibilità di accedere a tutte le variabili che sono state dichiarate nel file di configurazione riconosciute dal pannello tramite il file con estensione .SYM| | ||
+ | |Scaling Mode|Definisce il tipo di scaling utilizzato dall' | ||
+ | |Scale A|Valore di scale A|La correzione di scaling viene ottenuta con la seguente formula:\\ Y = (Scale A / Scale B) · X + Scale C\\ Range = -2< | ||
+ | |Scale B|Valore di scale B|La correzione di scaling viene ottenuta con la seguente formula:\\ Y = (Scale A / Scale B) · X + Scale C\\ Range = -2< | ||
+ | |Scale C|Valore di scale C|La correzione di scaling viene ottenuta con la seguente formula:\\ Y = (Scale A / Scale B) · X + Scale C\\ Range = -2< | ||
+ | |Length|Definisce il numero di caratteri che compone l' | ||
+ | |Left|Attributo posizione lato sinistro oggetto|Range = 0 ÷ 239 pixel| | ||
+ | |Top|Attributo posizione lato superiore oggetto|Range = 0 ÷ 127 pixel| | ||
+ | |Font Name|Nome del font utente o terminale in uso| | ||
+ | |Spacing|Spacing di visualizzazione del font|Il range di valori dipende dal font in uso| | ||
+ | |Reverse Mode|Flag che se ON inverte il campo di visualizzazione dell' | ||
+ | |Blink|Flag che se ON abilita il lampeggio del campo di visualizzazione dell' | ||
+ | |||
+ | === - Pulsante | ValString Object === | ||
+ | Con questo pulsante si richiede a QPaint di depositare sulla pagina attiva un oggetto dinamico | ||
+ | di tipo ValString. Tramite l' | ||
+ | in lingua indicizzati da una variabile di riferimento. Le proprietá impostabili sono le seguenti: | ||
+ | ^Proprietá^Descrizione^Limiti e condizioni^ | ||
+ | |First Message|Definisce l' | ||
+ | |Max Messages|Definisce il numero di messaggi presenti nell' | ||
+ | |Active Language|Definisce la lingua messaggi in uso nella griglia di introduzione messaggi| | ||
+ | |Active Message|Definisce l' | ||
+ | |Length|Definisce il numero di caratteri che compone l' | ||
+ | |Variable|VR per la variabile CPU QMove o terminale da visualizzare / introdurre|Range = 0 ÷ 239 pixel| | ||
+ | |Enable Modify Mode|Flag che se ON abilita la modifica del valore indirizzato dalla proprietá Variable|Range = 0 ÷ 127 pixel| | ||
+ | |Left|Attributo posizione lato sinistro oggetto| | ||
+ | |Top|Attributo posizione lato superiore oggetto|Il range di valori dipende dal font in uso| | ||
+ | |Font Name|Nome del font utente o terminale in uso| | ||
+ | |Spacing|Spacing di visualizzazione del font|Il range di valori dipende dal font in uso| | ||
+ | |Reverse Mode|Flag che se ON inverte il campo di visualizzazione dell' | ||
+ | |Blink|Flag che se ON abilita il lampeggio del campo di visualizzazione dell' | ||
+ | Nella finestra di dialogo " | ||
+ | e " | ||
+ | Facendo click sul primo si abilita l' | ||
+ | che nella griglia di introduzione messaggi vi sono tutti i messaggi disponibili per la lingua | ||
+ | selezionata nella casella di riepilogo " | ||
+ | tutti i messaggi disponibili per la lingua attiva. Quando si crea un oggetto nuovo questa | ||
+ | é la modalitá di introduzione impostata di default. Premendo il pulsante " | ||
+ | abilitá l' | ||
+ | messaggio alla volta ma in tutte le lingue disponibili. In cooperazione con i pulsanti appena | ||
+ | citati sulla dialog compaiono alternativamente i campi " | ||
+ | Nella dialog é presente anche il pulsante " | ||
+ | di sbloccare il controllo della lunghezza messaggio in introduzione e porla alla massima | ||
+ | dimensione visualizzabile. In questo modo é possibile introdurre dei messaggi senza preoccuparsi | ||
+ | anticipatamente della lunghezza in caratteri che occuperanno. Inoltre nella dialog è | ||
+ | presente il pulsante di " | ||
+ | messaggio in introduzione su tutte le lingue disponibili. La traduzione verrà fatta successivamente | ||
+ | dal programmatore. | ||
+ | |||
+ | === - Pulsante | String Object === | ||
+ | Con questo pulsante si richiede a QPaint di depositare sulla pagina attiva un oggetto statico | ||
+ | di tipo String. Tramite l' | ||
+ | proprietá impostabili sono le seguenti: | ||
+ | ^Proprietá^Descrizione^Limiti e condizioni^ | ||
+ | |Length|Definisce il numero di caratteri che compone l' | ||
+ | |Left|Attributo posizione lato sinistro oggetto|Range = 0 ÷ 239 pixel| | ||
+ | |Top|Attributo posizione lato superiore oggetto|Range = 0 ÷ 127 pixel| | ||
+ | |Font Name|Nome del font utente o terminale in uso| | ||
+ | |Spacing|Spacing di visualizzazione del font|Il range di valori dipende dal font in uso| | ||
+ | |Transparent Mode|Flag che se ON abilita la trasparenza dello sfondo di visualizzazione dell' | ||
+ | |Reverse Mode|Flag che se ON inverte il campo di visualizzazione dell' | ||
+ | Nella finestra di dialogo " | ||
+ | o " | ||
+ | in introduzione e porla alla massima dimensione visualizzabile. In questo modo é possibile | ||
+ | introdurre dei messaggi senza preoccuparsi anticipatamente della lunghezza in caratteri che | ||
+ | occuperanno. Inoltre nella dialog è presente il pulsante di " | ||
+ | ha il compito di trascrivere la stringa in introduzione su tutte le lingue disponibili. La traduzione | ||
+ | verrà fatta successivamente dal programmatore. | ||
+ | |||
+ | === - Pulsante | Image Object === | ||
+ | Con questo pulsante si richiede a QPaint di depositare sulla pagina attiva un oggetto statico | ||
+ | di tipo Image. Tramite l' | ||
+ | monocromatica. Le proprietá impostabili sono le seguenti: | ||
+ | ^Proprietá^Descrizione^Limiti e condizioni^ | ||
+ | |Image Name|Definisce l' | ||
+ | voce di menú " | ||
+ | default.| | ||
+ | |Left|Attributo posizione lato sinistro oggetto|Range = 0 ÷ 239 - Width immagine.| | ||
+ | |Top|Attributo posizione lato superiore oggetto|Range = 0 ÷ 239 - Width immagine.| | ||
+ | |||
+ | === - Pulsante | Box Object === | ||
+ | Con questo pulsante si richiede a QPaint di depositare sulla pagina attiva un oggetto | ||
+ | statico di tipo Box. Tramite l' | ||
+ | Le proprietá impostabili sono le seguenti: | ||
+ | ^Proprietá^Descrizione^Limiti e condizioni^ | ||
+ | |Left|Attributo posizione lato sinistro oggetto|Range = 0 ÷ 239 - Width| | ||
+ | |Top|Attributo posizione lato superiore oggetto|Range = 0 ÷ 127 - Height| | ||
+ | |Width|Attributo larghezza oggetto|Range = 5 ÷ 240| | ||
+ | |Height|Attributo altezza oggetto|Range = 5 ÷ 128| | ||
+ | |Back Color|Attributo colore sfondo oggetto| | ||
+ | |Color|Attributo colore disegno bordo oggetto| | ||
+ | |Style|Attributo modalitá disegno bordo oggetto| | ||
+ | |||
+ | === - Pulsante | ValImage Object === | ||
+ | Tramite ValImage è possibile realizzare animazioni in modo piú semplice che in | ||
+ | passato. L' | ||
+ | e gestito tramite il menú Graphics-> | ||
+ | associate ad un range di valori di una variabile presente in QMove o nel terminale | ||
+ | stesso. | ||
+ | |||
+ | Differentemente dalla tecnica dei font utente con immagini + oggetto ValString, | ||
+ | ValImage è piú veloce da implementare, | ||
+ | semplice da gestire. ValImage è un oggetto di tipo dinamico (come Value e | ||
+ | ValString) percui verrá visualizzato sempre sopra ad oggetti statici quali Image, | ||
+ | Box, e String. I parametri di un oggetto ValImage sono I seguenti: | ||
+ | * Left | ||
+ | * Top | ||
+ | * First Image | ||
+ | * Max Images | ||
+ | * Blink mode | ||
+ | * Reverse mode | ||
+ | * Modify mode | ||
+ | * Variable | ||
+ | |||
+ | ^Proprietá^Descrizione^Limiti e condizioni^ | ||
+ | |Left|Attributo posizione lato sinistro oggetto|Range = 0 ÷ 239 - Width| | ||
+ | |Top|Attributo posizione lato superiore oggetto|Range = 0 ÷ 127 - Height| | ||
+ | |First Image|Valore della variabile di riferimento associato alla prima immagine|Range = -32767÷ 32767| | ||
+ | |Max Image|Numero massimo di immagini visualizzabili|Range = 1÷ 256| | ||
+ | |Blink Mode|Stato di blink dell' | ||
+ | |Reverse Mode|Stato di reverse dell' | ||
+ | |Modify Mode|Stato di Modify dell' | ||
+ | |Variabile|Variabile di riferimento| | ||
+ | |Image Number|Numero dell' | ||
+ | |Image Name|Nome dell' | ||
+ | |Width|Attributo larghezza oggetto|Range = 5 ÷ 240| | ||
+ | |Height|Attributo altezza oggetto|Range = 5 ÷ 128| | ||
+ | Nella finestra di dialogo "Image Object Property Editor" | ||
+ | o " | ||
+ | di riferimento/ | ||
+ | possono introdurre immagini di qualunche dimensione.\\ | ||
+ | Viene lasciata libera possibilità di impostare immagini di qualunque dimensione, ma durante | ||
+ | la fase di check del progetto (manuale o durante download) viene verificato se in un | ||
+ | oggetto ValImage vi sono riferimenti ad immagini di dimensioni diverse generando quindi un | ||
+ | opportuno messaggio di errore. Vengono descritte ora alcune regole inerenti l' | ||
+ | ValImage: | ||
+ | * L' | ||
+ | * Se l' | ||
+ | * Se per un determinato valore della variabile di riferimento non si vuole avere un' | ||
+ | * Quando si apre l' | ||
+ | |||
+ | N.B: le immagini memorizzate nell' | ||
+ | non verranno mai trasferite al terminale e perció non occupano memoria. | ||
+ | |||
+ | |||
+ | |||
+ | ===== - I font del terminale ===== | ||
+ | |||
+ | Il terminale é stato progettato per lavorare con due gruppi di font: i font di sistema e i font | ||
+ | utente. I font di sistema risiedono nella ROM del terminale e sono sempre disponibili. I font | ||
+ | utente risiedono nella directory " | ||
+ | trasferiti nel terminale durante la procedura di download. Anche i font di sistema hanno | ||
+ | i loro file QTF e FNT nella directory " | ||
+ | le operazioni interne di visualizzazione ed introduzione dati. L' | ||
+ | nuovi tipi di font partendo da file Bitmap o derivandone di nuovi direttamente dai font TTF | ||
+ | di Windows®. La possibilitá di creare un font utente prelevando le informazioni direttamente | ||
+ | da un file Bitmap espande notevolmente le possibilitá grafiche del terminale stesso. Infatti é | ||
+ | possibile realizzare delle animazioni realizzando un font in cui i caratteri sono in realtá le | ||
+ | varie parti dell' | ||
+ | effettuate tramite font utente sono disponibili negli esempi allegati. | ||
+ | |||
+ | I font utente disponibili sono presenti sotto forma di file QTF e FNT nella directory " | ||
+ | del QPaint. Quando si trasporta un progetto che utilizza font utente in un altro PC é necessario | ||
+ | copiare nella directory " | ||
+ | progetto. Una volta copiato il progetto e i file QTF e FNT dei font utente richiesti é necessario | ||
+ | uscire da QPaint e riaprirlo nuovamente. | ||
+ | |||
+ | La rimozione di un font utente é una operazione che deve essere fatta solo in caso di reale | ||
+ | necessitá. Le operazioni da eseguire sono le seguenti: | ||
+ | - Chiudere tutte le applicazioni avviate. | ||
+ | - Con il Gestore risorse eliminare i file QTF e FNT del font da rimuovere. | ||
+ | - Uscire da Windows®. | ||
+ | - Riavviare il computer. | ||
+ | |||
+ | ===== - Le variabili di riferimento ===== | ||
+ | |||
+ | Tramite le variabili di riferimento QPaint permette all' | ||
+ | variabili disponibili nella CPU del QMove e nel terminale. Una variabile di riferimento é | ||
+ | composta da tre campi introduzione : il campo Base, il campo First Index ed il campo Second | ||
+ | Index. Il campo Base ha lo scopo di definire il nome stesso della variabile a cui si vuole | ||
+ | accedere. Il campo First Index ha lo scopo di definire il primo indice mentre Second Index | ||
+ | definisce il secondo. Avremo quindi che: | ||
+ | ^Data Types^Base^First Index^Second Index^ | ||
+ | |SYSTEM\\ GLOBAL\\ ARRSYS\\ ARRGBL\\ TIMER\\ STATIC\\ INDEX |variabile CPU QMove\\ variabile CPU QMove\\ array CPU QMove\\ array CPU QMove\\ timer CPU QMove\\ datagroup CPU QMove\\ datagroup CPU QMove\\ parametri device CPU QMove\\ input/ | ||
+ | I campi introduzione per variabili di riferimento sono presenti in molti oggetti come Value e | ||
+ | ValString, eventi ed azioni. I valori introducibili per tali oggetti sono regolati da apposite | ||
+ | tabelle specificate in dettaglio nell' | ||
+ | operazioni di introduzione dei campi Base, First Index e Second Index, QPaint mette a disposizione | ||
+ | un' | ||
+ | F5 quando l' | ||
+ | |Figura 62 : campi introduzione variabile di riferiemento| | ||
+ | |{{: | ||
+ | |||
+ | ===== - Appendice 1: Variazioni rispetto QPaint 2.0 ===== | ||
+ | |||
+ | Le differenze peculiari rispetto al QPaint2.0 sono principalmente: | ||
+ | |||
+ | * L' | ||
+ | |||
+ | * È stato inserito un nuovo oggetto di disegno chiamato ValImage. Tramite ValImage è possibile realizzare animazioni in modo piú semplice che in passato. L' | ||
+ | piú semplice da gestire. ValImage è un oggetto di tipo dinamico (come Value e ValString) percui verrá visualizzato sempre sopra ad oggetti statici quali Image, Box, e String. | ||
+ | |||
+ | * Sono stati aggiunti altri nuovi 20 tasti leds funzione con le rispettive azioni ed eventi | ||
+ | |||
+ | * È stata introdotta la gestione dell' | ||
+ | dente selezione. Questo avviene anche con le operazioni di Copia/ | ||
+ | |||
+ | * Modificato il default value di timeout COM OK da 10ms a 400 ms. Se vi è già una precedente installazione di QPaint30 bisognerà modificare manualmente il valore una volta installato il nuovo QPaint30 build 006. | ||
+ | |||
+ | * Rimosse le azioni ObjBlink, ObjNoBlink, ObjReverse, ObjNoReverse dagli eventi globali.Ora le azioni ObjBlink, ObjNoBlink, ObjReverse, ObjNoReverse sono abilitate su tutti gli oggetti dinamici (Value & ValString & ValImage) indipendentemente dal fatto che abbia no lo stato di Modify ON o OFF. In QPaint 2.0 era necessario avere lo stato di Modify ad ON. | ||
+ | |||
+ | ===== - Appendice 2: Compatibilità con versioni precedenti ===== | ||
+ | |||
+ | Per semplificare l' | ||
+ | l' | ||
+ | percuí non sará possibile da QPaint 2.x o QPaint 1.x caricare un progetto creato | ||
+ | con il QPaint 3.0. Sará invece possibile caricare qualunque progetto (QPaint 1.x, | ||
+ | QPaint 2.x) nel QPaint 3.0 (compatibilitá verso l' | ||
+ | evidenzierá l' | ||
+ | |||
+ | ===== - Appendice 3: Codici e segnalazioni ===== | ||
+ | |||
+ | ==== - Tabelle riassuntive regole variabile di riferimento ==== | ||
+ | In queste tabelle sono riportate le regole da applicare per la costruzione delle variabili di | ||
+ | riferimento. Ad ogni tabella é associato un numero che dovrá essere utilizzato per riferirsi | ||
+ | all' | ||
+ | ^Oggetto Value^^ | ||
+ | | Dec.Point | ||
+ | | Variable | ||
+ | | Max Variable | ||
+ | | Min Variable | ||
+ | ^Oggetto ValString^^ | ||
+ | |Variable|tabella 1| | ||
+ | | //Evento OnChangeVar// | ||
+ | | //Evento OnVar// | ||
+ | | //Azione GotoPage// | ||
+ | | Azione SetVariable\\ | ||
+ | |||
+ | ^Data Types^1^F^B^W^L^S^2^F^B^W^L^S^3^F^B^W^L^S^4^F^B^W^L^S^5^F^B^W^L^S^6^F^B^W^L^S^7^F^B^W^L^S^8^F^B^W^L^S^ | ||
+ | |SYSTEM | ||
+ | |GLOBAL | ||
+ | |ARRSYS | ||
+ | |ARRGBL | ||
+ | |TIMER | ||
+ | |STATIC | ||
+ | |INDEX | ||
+ | |DEVPAR | ||
+ | |IO |::: | ||
+ | |INTERNAL|::: | ||
+ | |TERMINAL|::: | ||
+ | |CONST | ||
+ | |||
+ | ==== - Stati funzionali visualizzati tramite interfaccia standard ==== | ||
+ | Per semplificare l' | ||
+ | programma comunica all' | ||
+ | dividono in 5 gruppi: | ||
+ | - // | ||
+ | - //Richiesta dati// Tramite questo tipo di stato il QPaint richiede all' | ||
+ | - // | ||
+ | - //Errore// Tramite questo tipo di stato il QPaint indica all' | ||
+ | - //Errore fatale// Tramite questo tipo di stato il QPaint indica all' | ||
+ | Viene ora descritta l' | ||
+ | |Figura 63 : interfaccia standard messaggi| | ||
+ | |{{: | ||
+ | |:::|Codice messaggio| | ||
+ | |::: | ||
+ | |:::|Azione intrapresa| | ||
+ | Come si puó vedere nella fig.63, l' | ||
+ | di dialogo di Windows® opportunatamente organizzato. Vi sono 4 campi di testo che servono | ||
+ | per la descrizione delle varie informazioni, | ||
+ | l' | ||
+ | |||
+ | |Tipo messaggio|Descrive il tipo di stato in cui é entrato QPaint. Puó valere:| | ||
+ | |:::|**!!! INFORMATION !!!** per un stato informazione.| | ||
+ | |:::|**!!! QUESTION !!!** per un stato di richiesta dati.| | ||
+ | |:::|**!!! WARNING !!!** per un stato di pericolo.| | ||
+ | |:::|**!!! ERROR !!!** per un stato d' | ||
+ | |:::|**!!! FATAL ERROR !!!** per un stato d' | ||
+ | |Codice messaggio|Contiene il numero identificativo del messaggio intervenuto.\\ Tramite questo numero é possibile accedere alla documentazione approfondita dello stato presente in questa appendice.| | ||
+ | |Descrizione messaggio|Descrive in modo sintetico lo stato intervenuto.| | ||
+ | |Azione intrapresa|Viene descritta l' | ||
+ | |Operazioni possibili|Sono disponibili uno o piú bottoni per le scelte dell' | ||
+ | |||
+ | Nella sezione a seguire sono riportati e dettagliatamente descritti tutti i messaggi visualizzati | ||
+ | da QPaint tramite il box di dialogo. | ||
+ | |||
+ | |**Codice messaggio**|10000| | ||
+ | |**Tipo messaggio**|QUESTION| | ||
+ | |**Descrizione**|Do you really want rename current page?| | ||
+ | |**Azione**| | | ||
+ | |Si entra in questo stato quando l' | ||
+ | |||
+ | |**Codice messaggio**|10001| | ||
+ | |**Tipo messaggio**|WARNING| | ||
+ | |**Descrizione**|Label < | ||
+ | |**Azione**|Introduce a new name| | ||
+ | |Si entra in questo stato quando l' | ||
+ | |||
+ | |**Codice messaggio**|10002| | ||
+ | |**Tipo messaggio**|QUESTION| | ||
+ | |**Descrizione**|Page will be lost !| | ||
+ | |**Azione**|Are you sure of to want to continue?| | ||
+ | |Si entra in questo stato quando l' | ||
+ | |||
+ | |**Codice messaggio**|10003| | ||
+ | |**Tipo messaggio**|FATAL ERROR| | ||
+ | |**Descrizione**|Unrecoverable internal error !| | ||
+ | |**Azione**|Program will be terminate| | ||
+ | |Si entra in questo stato quando internamente il programma esegue un operazione non valida. Il programma Qpaint viene chiuso. Tutte le modifiche apportate al progetto successive all' | ||
+ | |||
+ | |**Codice messaggio**|10004| | ||
+ | |**Tipo messaggio**|ERROR| | ||
+ | |**Descrizione**|Error in file creation !| | ||
+ | |**Azione**| | | ||
+ | |Si entra in questo stato quando QPaint non riesce a salvare il file di progetto. Nella maggior parte dei casi, questo errore, é dovuto al tentativo di scrivere un file protetto in scrittura o dall' | ||
+ | |||
+ | |**Codice messaggio**|10005| | ||
+ | |**Tipo messaggio**|ERROR| | ||
+ | |**Descrizione**|Error in opening file !| | ||
+ | |**Azione**| | | ||
+ | |Si entra in questo stato quando QPaint non riesce a leggere il file di progetto. Nella maggior parte dei casi, questo errore, é dovuto al tentativo di leggere un progetto inesistente o dall' | ||
+ | |||
+ | |**Codice messaggio**|10006| | ||
+ | |**Tipo messaggio**|INFORMATION| | ||
+ | |**Descrizione**|Invalid project file !| | ||
+ | |**Azione**|Project will not be loaded !| | ||
+ | |Si entra in questo stato quando QPaint rileva che il file di progetto in lettura non é valido.|| | ||
+ | |||
+ | |**Codice messaggio**|10007| | ||
+ | |**Tipo messaggio**|INFORMATION| | ||
+ | |**Descrizione**|Project file corrupted !| | ||
+ | |**Azione**|Project will not be loaded !| | ||
+ | |Si entra in questo stato quando QPaint tenta di caricare un progetto che non é stato precedentemente salvato correttamente o inopportunamente modificato manualmente.|| | ||
+ | |||
+ | |**Codice messaggio**|10008| | ||
+ | |**Tipo messaggio**|INFORMATION| | ||
+ | |**Descrizione**|Project file doesn' | ||
+ | |**Azione**|Project will not be loaded !| | ||
+ | |Si entra in questo stato quando QPaint rileva che la versione del file di progetto in apertura non é compatibile. Nella maggior parte dei casi, questo errore è dovuto al tentativo di apertura di un progetto realizzato con una versione di QPaint successiva a quella utilizzata per l' | ||
+ | |||
+ | |**Codice messaggio**|10009| | ||
+ | |**Tipo messaggio**|FATAL ERROR| | ||
+ | |**Descrizione**|Error in sistem Font loading !| | ||
+ | |**Azione**|Try to reinstall QPaint ! Program will be termate !| | ||
+ | |Si entra in questo stato quanto QPaint, durante la procedura di avvio, rileva la mancanza dei file font terminale nella directory Fonts. In questo caso si consiglia di reinstallare QPaint nella stessa directory in cui era stato precedentemente installato.|| | ||
+ | |||
+ | |**Codice messaggio**|10013| | ||
+ | |**Tipo messaggio**|QUESTION| | ||
+ | |**Descrizione**|New setting could truncate exceeding text for some languages !| | ||
+ | |**Azione**|Do you confirm this operation ?| | ||
+ | |Si entra in questo stato quando QPaint rileva la necessitá di troncare il testo in eccesso di alcuni messaggi in lingua. Tale condizione si verifica durante la modifica della lunghezza testo o delle proprietá font degli oggetti String e ValString.|| | ||
+ | |||
+ | |**Codice messaggio**|10014| | ||
+ | |**Tipo messaggio**|QUESTION| | ||
+ | |**Descrizione**|New setting could change Left and Top coordinate of the object!| | ||
+ | |**Azione**|Do you confirm this operation ?| | ||
+ | |Si entra in questo stato quando QPaint rileva la necessitá di modificare le proprietá Left e Top dell' | ||
+ | |||
+ | |**Codice messaggio**|10019| | ||
+ | |**Tipo messaggio**|WARNING| | ||
+ | |**Descrizione**|Invalid font name !\\ Value empty or present invalid chars ' < > : " / \'| | ||
+ | |**Azione**|Introduce a valid name !| | ||
+ | |Si entra in questo stato quando QPaint rileva che il nome del font utente appena introdotto é vuoto o presenta uno o piú caratteri non validi.|| | ||
+ | |||
+ | |**Codice messaggio**|10020| | ||
+ | |**Tipo messaggio**|WARNING| | ||
+ | |**Descrizione**|Font name already exist in Windows fonts !| | ||
+ | |**Azione**|Introduce a new name !| | ||
+ | |Si entra in questo stato quando QPaint rileva che il nome del font utente appena introdotto é giá utilizzato da un font di Windows®.|| | ||
+ | |||
+ | |**Codice messaggio**|10021| | ||
+ | |**Tipo messaggio**|WARNING| | ||
+ | |**Descrizione**|Font name already used !| | ||
+ | |**Azione**|Introduce a new name !| | ||
+ | |Si entra in questo stato quando QPaint rileva che il nome del font utente appena introdotto é giá presente nella lista dei nomi font utente.|| | ||
+ | |||
+ | |**Codice messaggio**|10022| | ||
+ | |**Tipo messaggio**|FATAL ERROR| | ||
+ | |**Descrizione**|Dinamic cast error !| | ||
+ | |**Azione**|Program will be terminate !| | ||
+ | |Si entra in questo stato quando internamente il programma esegue un operazione non valida. Il programma Qpaint viene chiuso. Tutte le modifiche apportate al progetto successive all' | ||
+ | |||
+ | |**Codice messaggio**|10023| | ||
+ | |**Tipo messaggio**|ERROR| | ||
+ | |**Descrizione**|Invalid BMP file !| | ||
+ | |**Azione**|Image will not be added !| | ||
+ | |Si entra in questo stato quando QPaint rileva che il file grafico in lettura non é di tipo bitmap BMP.|| | ||
+ | |||
+ | |**Codice messaggio**|10024| | ||
+ | |**Tipo messaggio**|ERROR| | ||
+ | |**Descrizione**|Invalid BMP size !| | ||
+ | |**Azione**|Image will not be added !| | ||
+ | |Si entra in questo stato quando QPaint rileva che le dimensioni in altezza e/o larghezza del file grafico in lettura superano le misure dell' | ||
+ | |||
+ | |**Codice messaggio**|10025| | ||
+ | |**Tipo messaggio**|ERROR| | ||
+ | |**Descrizione**|The BMP can be only monochrome !| | ||
+ | |**Azione**|Image will not be added !| | ||
+ | |Si entra in questo stato quando QPaint rileva che il file grafico in lettura non é di tipo monocromatico.|| | ||
+ | |||
+ | |**Codice messaggio**|10026| | ||
+ | |**Tipo messaggio**|WARNING| | ||
+ | |**Descrizione**|Invalid empty name !| | ||
+ | |**Azione**|Introduce a valid name !| | ||
+ | |Si entra in questo stato quando QPaint rileva che il nome dell' | ||
+ | |||
+ | |**Codice messaggio**|10027| | ||
+ | |**Tipo messaggio**|WARNING| | ||
+ | |**Descrizione**|Label < | ||
+ | |**Azione**|Introduce a new name !| | ||
+ | |Si entra in questo stato quando QPaint rileva che il nome dell' | ||
+ | |||
+ | |**Codice messaggio**|10028| | ||
+ | |**Tipo messaggio**|QUESTION| | ||
+ | |**Descrizione**|The acceptance of the chenges will involve the reallignment of some objects image of the project !| | ||
+ | |**Azione**|Are you sure of to want to continue ?| | ||
+ | |Si entra in questo stato quando QPaint rileva che la modifica di una o piú immagini nella finestra di dialogo "Image Manager" | ||
+ | |||
+ | |**Codice messaggio**|10029| | ||
+ | |**Tipo messaggio**|QUESTION| | ||
+ | |**Descrizione**|Do you really want rename password page ?| | ||
+ | |**Azione**| | | ||
+ | |Si entra in questo stato quando l' | ||
+ | |||
+ | |**Codice messaggio**|10030| | ||
+ | |**Tipo messaggio**|INFORMATION| | ||
+ | |**Descrizione**|Currently at least 256 system color are necessary to perform this program !| | ||
+ | |**Azione**|Program will be terminate !| | ||
+ | |Si entra in questo stato quanto QPaint, durante la procedura di avvio, rileva che la configurazione video di Windows® é impostata a meno di 256 colori di sistema.|| | ||
+ | |||
+ | |**Codice messaggio**|10031| | ||
+ | |**Tipo messaggio**|ERROR| | ||
+ | |**Descrizione**|Project file < | ||
+ | |**Azione**| | | ||
+ | |Si entra in questo stato quando QPaint, durante la procedura di avvio, rileva che il nome del file di progetto impostato nella linea di comando non corrisponde ad un file realmente esistente.|| | ||
+ | |||
+ | |**Codice messaggio**|10032| | ||
+ | |**Tipo messaggio**|WARNING| | ||
+ | |**Descrizione**|Invalid empty name !| | ||
+ | |**Azione**|Introduce a valid name !| | ||
+ | |Si entra in questo stato quando QPaint rileva che il nome della variabile interna appena introdotto é vuoto.|| | ||
+ | |||
+ | |**Codice messaggio**|10033| | ||
+ | |**Tipo messaggio**|WARNING| | ||
+ | |**Descrizione**|Label < | ||
+ | |**Azione**|Introduce a new name !| | ||
+ | |Si entra in questo stato quando QPaint rileva che il nome della variabile interna appena introdotto é giá presente nella lista dei nomi variabili interne.|| | ||
+ | |||
+ | |**Codice messaggio**|10034| | ||
+ | |**Tipo messaggio**|QUESTION| | ||
+ | |**Descrizione**|Save changes to < | ||
+ | |**Azione**| | | ||
+ | |Si entra in questo stato quando QPaint rileva che si sta chiudendoun progetto nuovo e modificato e richiede all' | ||
+ | |||
+ | |**Codice messaggio**|10035| | ||
+ | |**Tipo messaggio**|FATAL ERROR| | ||
+ | |**Descrizione**|Invalid function parameters !| | ||
+ | |**Azione**|Program will be terminate !| | ||
+ | |Si entra in questo stato quando internamente il programma esegue un operazione non valida. Il programma Qpaint viene chiuso. Tutte le modifiche apportate al progetto successive all' | ||
+ | |||
+ | |**Codice messaggio**|10036| | ||
+ | |**Tipo messaggio**|INFORMATION| | ||
+ | |**Descrizione**|Can' | ||
+ | |**Azione**|Execute "Check project" | ||
+ | |Si entra in questo stato quando si seleziona un item della report Window riferito ad una pagina che é stata rimossa.|| | ||
+ | |||
+ | |**Codice messaggio**|10037| | ||
+ | |**Tipo messaggio**|INFORMATION| | ||
+ | |**Descrizione**|Can' | ||
+ | |**Azione**|Execute "Check project" | ||
+ | |Si entra in questo stato quando si seleziona un item della report Window riferito ad una pagina che é stata rimossa.|| | ||
+ | |||
+ | |**Codice messaggio**|10038| | ||
+ | |**Tipo messaggio**|INFORMATION| | ||
+ | |**Descrizione**|Can' | ||
+ | |**Azione**|Execute "Check project" | ||
+ | |Si entra in questo stato quando si seleziona un item della report Window riferito ad una pagina che é stata rimossa.|| | ||
+ | |||
+ | |**Codice messaggio**|10039| | ||
+ | |**Tipo messaggio**|INFORMATION| | ||
+ | |**Descrizione**|Can' | ||
+ | |**Azione**|Execute "Check project" | ||
+ | |Si entra in questo stato quando si seleziona un item della report Window riferito ad una pagina che é stata rimossa.|| | ||
+ | |||
+ | |**Codice messaggio**|10040| | ||
+ | |**Tipo messaggio**|ERROR| | ||
+ | |**Descrizione**|QPaint has detected unavailable terminal fonts on this project !\\ Requered fonts have following type name:| | ||
+ | |**Azione**|Project will not be loaded !| | ||
+ | |Si entra in questo stato quando QPaint rileva che il progetto in lettura necessita di uno o piú font utente non disponibili nel computer. Nella dialog vengono riportate le caratteristiche di ogni font mancante comprensive di nome font, altezza, larghezza e spacing carattere.|| | ||
+ | |||
+ | |**Codice messaggio**|10042| | ||
+ | |**Tipo messaggio**|ERROR| | ||
+ | |**Descrizione**|Bitmap font file < | ||
+ | |**Azione**|Select a valid file name !| | ||
+ | |Si entra in questo stato quando QPaint non riesce a trovare il file bitmap specificato.|| | ||
+ | |||
+ | |**Codice messaggio**|10043| | ||
+ | |**Tipo messaggio**|ERROR| | ||
+ | |**Descrizione**|Invalid bitmap font size ! The bitmap font type must be monochrome| | ||
+ | |**Azione**| | | ||
+ | |Si entra in questo stato quando QPaint rileva che il file bitmap in lettura non é monocromatico.|| | ||
+ | |||
+ | |**Codice messaggio**|10044| | ||
+ | |**Tipo messaggio**|ERROR| | ||
+ | |**Descrizione**|Invalid bitmap font size ! Valid bitmap width range is 96 ÷ 512 pixels. Valid bitmap height range is 84 ÷ 784 pixels| | ||
+ | |**Azione**| | | ||
+ | |Si entra in questo stato quando QPaint rileva che la dimensione del file bitmap in lettura non é entro i limiti consentiti.|| | ||
+ | |||
+ | |**Codice messaggio**|10045| | ||
+ | |**Tipo messaggio**|INFORMATION| | ||
+ | |**Descrizione**|Bitmap font file saved as| | ||
+ | |**Azione**| | | ||
+ | |Si entra in questo stato quando QPaint termina la creazione del file bitmap per il font.|| | ||
+ | |||
+ | |**Codice messaggio**|10046| | ||
+ | |**Tipo messaggio**|INFORMATION| | ||
+ | |**Descrizione**|Clipboard doesn' | ||
+ | |**Azione**|Clipboard will not be used !| | ||
+ | |Si entra in questo stato quando QPaint rileva che gli appunti che si cerca di incollare non sono compatibili con il progetto utilizzato.|| | ||
+ | |||
+ | |**Codice messaggio**|10047| | ||
+ | |**Tipo messaggio**|INFORMATION| | ||
+ | |**Descrizione**|Invalid page file !| | ||
+ | |**Azione**|Page will not be added !| | ||
+ | |Si entra in questo stato quando QPaint rileva che la pagina richiesta per l' | ||
+ | |||
+ | |**Codice messaggio**|10048| | ||
+ | |**Tipo messaggio**|INFORMATION| | ||
+ | |**Descrizione**|Page file doesn' | ||
+ | |**Azione**|Page will not be added !| | ||
+ | |Si entra in questo stato quando QPaint rileva che la pagina richiesta per l' | ||
+ | |||
+ | |**Codice messaggio**|10049| | ||
+ | |**Tipo messaggio**|ERROR| | ||
+ | |**Descrizione**|QPaint has detected unavailable terminal fonts on this page !\\ Required fonts have following type name| | ||
+ | |**Azione**|Page will not be loaded !| | ||
+ | |Si entra in questo stato quando QPaint rileva che nella pagina è stato importato un oggetto del quale non esiste il font nella cartella.|| | ||
+ | |||
+ | |**Codice messaggio**|10050| | ||
+ | |**Tipo messaggio**|INFORMATION| | ||
+ | |**Descrizione**|All available informations selected for default !| | ||
+ | |**Azione**| | | ||
+ | |Si entra in questo stato quando QPaint rileva che è stata richiesta la creazione della documentazione senza aver selezionato nessun argomento di stampa; il QPaint esegue la stampa della documentazione di default.|| | ||
+ | |||
+ | |**Codice messaggio**|10051| | ||
+ | |**Tipo messaggio**|INFORMATION| | ||
+ | |**Descrizione**|Loaded an old version project !| | ||
+ | |**Azione**|Save operations will save it with new file format !| | ||
+ | |Si entra in questo stato quando QPaint rileva che Il progetto aperto è stato realizzato con una versione precedente di QPaint e che in caso di salvataggio, | ||
+ | |||
+ | ==== - Messaggi di compilazione ==== | ||
+ | |||
+ | Durante la fase di compilazione del progetto (richiesta tramite il comando apposito o in fase di download) il QPaint visualizza una finestra di dialogo dove mostra il report degli errori intervenuti. L' | ||
+ | Gli errori che possono comparire sono i seguenti: | ||
+ | |||
+ | |**Codice messaggio**|12000| | ||
+ | |**Descrizione**|Check project complete. No error found !| | ||
+ | |Si entra in questo stato quando QPaint non rileva nessun errore in compilazione|| | ||
+ | |||
+ | |**Codice messaggio**|12001| | ||
+ | |**Descrizione**|Undefined key in "On Key" event !| | ||
+ | |Si entra in questo stato quando QPaint rileva che non è stato definito nessun tasto nell' | ||
+ | |||
+ | |**Codice messaggio**|12002| | ||
+ | |**Descrizione**|Undefined key in "On Press" event !| | ||
+ | |Si entra in questo stato quando QPaint rileva che non è stato definito nessun tasto nell' | ||
+ | |||
+ | |**Codice messaggio**|12003| | ||
+ | |**Descrizione**|Undefined key in "On Release" | ||
+ | |Si entra in questo stato quando QPaint rileva che non è stato definito nessun tasto nell' | ||
+ | |||
+ | |**Codice messaggio**|12004| | ||
+ | |**Descrizione**|Undefined time in "On Time" event !| | ||
+ | |Si entra in questo stato quando QPaint rileva che non è stato definito nessun valore di tempo nell' | ||
+ | |||
+ | |**Codice messaggio**|12005| | ||
+ | |**Descrizione**|Undefined page in "Goto Page" action!| | ||
+ | |Si entra in questo stato quando QPaint rileva che non è stata definita nessuna pagina dove saltare nell' | ||
+ | |||
+ | |**Codice messaggio**|12006| | ||
+ | |**Descrizione**|Invalid page in "Goto Page" action !| | ||
+ | |Si entra in questo stato quando QPaint rileva che è stata definita una pagina inesistente dove saltare nell' | ||
+ | |||
+ | |**Codice messaggio**|12007| | ||
+ | |**Descrizione**|Undefined comand in "Send Comand" | ||
+ | |Si entra in questo stato quando QPaint rileva che non è stato definito nessun comando nell' | ||
+ | |||
+ | |**Codice messaggio**|12008| | ||
+ | |**Descrizione**|Invalid comand in "Send Comand" | ||
+ | |Si entra in questo stato quando QPaint rileva che è stato definito un comando non valido nell' | ||
+ | |||
+ | |**Codice messaggio**|12009| | ||
+ | |**Descrizione**|Undefined led in "Led On" action !| | ||
+ | |Si entra in questo stato quando QPaint rileva che non è stato definito un led nell' | ||
+ | |||
+ | |**Codice messaggio**|12010| | ||
+ | |**Descrizione**|Undefined led in "Led Off" action !| | ||
+ | |Si entra in questo stato quando QPaint rileva che non è stato definito un led nell' | ||
+ | |||
+ | |**Codice messaggio**|12011| | ||
+ | |**Descrizione**|Undefined led in "Led Blink" action !| | ||
+ | |Si entra in questo stato quando QPaint rileva che non è stato definito un led nell' | ||
+ | |||
+ | |**Codice messaggio**|12012| | ||
+ | |**Descrizione**|Undefined symbol for Base !| | ||
+ | |Si entra in questo stato quando QPaint rileva che non è stato definito un simbolo nella base della variabile.|| | ||
+ | |||
+ | |**Codice messaggio**|12013| | ||
+ | |**Descrizione**|Unknown symbol for Base !| | ||
+ | |Si entra in questo stato quando QPaint rileva che non è riconosciuto un simbolo nella base della variabile.|| | ||
+ | |||
+ | |**Codice messaggio**|12014| | ||
+ | |**Descrizione**|Invalid symbol group for Base !| | ||
+ | |Si entra in questo stato quando QPaint rileva che non è valido il gruppo di appartenenza di un simbolo nella base della variabile.|| | ||
+ | |||
+ | |**Codice messaggio**|12015| | ||
+ | |**Descrizione**|Invalid symbol type for Base !| | ||
+ | |Si entra in questo stato quando QPaint rileva che non è valido il tipo di simbolo nella base della variabile.|| | ||
+ | |||
+ | |**Codice messaggio**|12016| | ||
+ | |**Descrizione**|Invalid read-only symbol group for Base !| | ||
+ | |Si entra in questo stato quando QPaint rileva che non è possibile scrivere nel simbolo della base della variabile.|| | ||
+ | |||
+ | |**Codice messaggio**|12017| | ||
+ | |**Descrizione**|Undefined symbol for First Index !| | ||
+ | |Si entra in questo stato quando QPaint rileva che non è stato definito un simbolo nel primo indice della variabile.|| | ||
+ | |||
+ | |**Codice messaggio**|12018| | ||
+ | |**Descrizione**|Unknown symbol for First Index !| | ||
+ | |Si entra in questo stato quando QPaint rileva che non è riconosciuto un simbolo nel primo indice della variabile.|| | ||
+ | |||
+ | |**Codice messaggio**|12019| | ||
+ | |**Descrizione**|Invalid symbol group for First Index!| | ||
+ | |Si entra in questo stato quando QPaint rileva che non è valido il gruppo di appartenenza di un simbolo nel primo indice della variabile.|| | ||
+ | |||
+ | |**Codice messaggio**|12020| | ||
+ | |**Descrizione**|Invalid symbol type for First Index !| | ||
+ | |Si entra in questo stato quando QPaint rileva che non è valido il tipo di simbolo nel primo indice della variabile.|| | ||
+ | |||
+ | |**Codice messaggio**|12021| | ||
+ | |**Descrizione**|Not required symbol for First Index !| | ||
+ | |Si entra in questo stato quando QPaint rileva che non è richiesto un simbolo nel primo indice della variabile.|| | ||
+ | |||
+ | |**Codice messaggio**|12022| | ||
+ | |**Descrizione**|Undefined symbol for Second Index !| | ||
+ | |Si entra in questo stato quando QPaint rileva che non è stato definito un simbolo nel secondo indice della variabile.|| | ||
+ | |||
+ | |**Codice messaggio**|12023| | ||
+ | |**Descrizione**|Unknown symbol for SecondIndex !| | ||
+ | |Si entra in questo stato quando QPaint rileva che non è riconosciuto un simbolo nel secondo indice della variabile.|| | ||
+ | |||
+ | |**Codice messaggio**|12024| | ||
+ | |**Descrizione**|Invalid symbol group for Second Index!| | ||
+ | |Si entra in questo stato quando QPaint rileva che non è valido il gruppo di appartenenza di un simbolo nel secondo indice della variabile.|| | ||
+ | |||
+ | |**Codice messaggio**|12025| | ||
+ | |**Descrizione**|Invalid symbol type for Second Index !| | ||
+ | |Si entra in questo stato quando QPaint rileva che non è valido il tipo di simbolo nel secondo indice della variabile.|| | ||
+ | |||
+ | |**Codice messaggio**|12026| | ||
+ | |**Descrizione**|Not required symbol for Second Index !| | ||
+ | |Si entra in questo stato quando QPaint rileva che non è richiesto un simbolo nel secondo indice della variabile.|| | ||
+ | |||
+ | |**Codice messaggio**|12027| | ||
+ | |**Descrizione**|Undefined object in "On Out Data Entry Confirm" | ||
+ | |Si entra in questo stato quando QPaint rileva che non è stato definito nessun oggetto nell' | ||
+ | |||
+ | |**Codice messaggio**|12028| | ||
+ | |**Descrizione**|Invalid object in "On Out Data Entry Confirm" | ||
+ | |Si entra in questo stato quando QPaint rileva che è stato definito un oggetto non valido nell' | ||
+ | |||
+ | |**Codice messaggio**|12029| | ||
+ | |**Descrizione**|Undefined object in "On Out Data Entry No Confirm" | ||
+ | |Si entra in questo stato quando QPaint rileva che non è stato definito nessun oggetto nell' | ||
+ | |||
+ | |**Codice messaggio**|12030| | ||
+ | |**Descrizione**|Invalid object in "On Out Data Entry No Confirm" | ||
+ | |Si entra in questo stato quando QPaint rileva che è stato definito un oggetto non valido nell' | ||
+ | |||
+ | |**Codice messaggio**|12031| | ||
+ | |**Descrizione**|Undefinied object in " | ||
+ | |Si entra in questo stato quando QPaint rileva che non è stato definito un oggetto nell' | ||
+ | |||
+ | |**Codice messaggio**|12032| | ||
+ | |**Descrizione**|Invalid object in " | ||
+ | |Si entra in questo stato quando QPaint rileva che è stato definito un oggetto non valido nell' | ||
+ | |||
+ | |**Codice messaggio**|12033| | ||
+ | |**Descrizione**|Undefinied object in " | ||
+ | |Si entra in questo stato quando QPaint rileva che non è stato definito un oggetto nell' | ||
+ | |||
+ | |**Codice messaggio**|12034| | ||
+ | |**Descrizione**|Invalid object in " | ||
+ | |Si entra in questo stato quando QPaint rileva che è stato definito un oggetto non valido nell' | ||
+ | |||
+ | |**Codice messaggio**|12035| | ||
+ | |**Descrizione**|Undefinied object in " | ||
+ | |Si entra in questo stato quando QPaint rileva che non è stato definito un oggetto nell' | ||
+ | |||
+ | |**Codice messaggio**|12036| | ||
+ | |**Descrizione**|Invalid object in " | ||
+ | |Si entra in questo stato quando QPaint rileva che è stato definito un oggetto non valido nell' | ||
+ | |||
+ | |**Codice messaggio**|12037| | ||
+ | |**Descrizione**|Undefinied object in " | ||
+ | |Si entra in questo stato quando QPaint rileva che non è stato definito un oggetto nell' | ||
+ | |||
+ | |**Codice messaggio**|12038| | ||
+ | |**Descrizione**|Invalid object in " | ||
+ | |Si entra in questo stato quando QPaint rileva che è stato definito un oggetto non valido nell' | ||
+ | |||
+ | ==== - Messaggi durante il download progetto ==== | ||
+ | Durante la fase di download del progetto il QPaint visualizza una finestra di dialogo dove | ||
+ | mostra il report degli errori intervenuti.\\ | ||
+ | Gli errori che possono comparire sono i seguenti:\\ | ||
+ | |||
+ | |**Codice messaggio**|20000| | ||
+ | |**Descrizione**|Terminal not in download configuration| | ||
+ | |Si entra in questo stato quando QPaint rileva che il terminale non è in download. Il download viene abortito.|| | ||
+ | |||
+ | |**Codice messaggio**|20001| | ||
+ | |**Descrizione**|Error in String adding| | ||
+ | |Si entra in questo stato quando QPaint rileva che il terminale ha avuto problemi durante la comunicazione seriale. Il download viene abortito.|| | ||
+ | |||
+ | |**Codice messaggio**|20002| | ||
+ | |**Descrizione**|Error in Box adding| | ||
+ | |Si entra in questo stato quando QPaint rileva che il terminale ha avuto problemi durante la comunicazione seriale. Il download viene abortito.|| | ||
+ | |||
+ | |**Codice messaggio**|20003| | ||
+ | |**Descrizione**|Error in erasing memory| | ||
+ | |Si entra in questo stato quando QPaint rileva che il terminale ha avuto problemi durante la cancellazione della flash memory. Il download viene abortito.|| | ||
+ | |||
+ | |**Codice messaggio**|20004| | ||
+ | |**Descrizione**|Error in downloading project| | ||
+ | |Si entra in questo stato quando QPaint rileva che il terminale ha avuto problemi durante il download del progetto. Il download viene abortito.|| | ||
+ | |||
+ | |**Codice messaggio**|20005| | ||
+ | |**Descrizione**|Starting application failed| | ||
+ | |Si entra in questo stato quando QPaint rileva che il terminale ha avuto problemi durante la fase di start dell' | ||
+ | |||
+ | |**Codice messaggio**|20006| | ||
+ | |**Descrizione**|Serial comunication error| | ||
+ | |Si entra in questo stato quando QPaint rileva che il terminale ha avuto problemi durante la comunicazione seriale. Il download viene abortito.|| | ||
+ | |||
+ | |**Codice messaggio**|20007| | ||
+ | |**Descrizione**|Download operations stopped by user| | ||
+ | |Si entra in questo stato quando QPaint rileva che il terminale ha ricevuto un comando di interuzione dall' | ||
+ | |||
+ | |**Codice messaggio**|20008| | ||
+ | |**Descrizione**|Error in Image adding| | ||
+ | |Si entra in questo stato quando QPaint rileva che il terminale ha riscontrato un errore nel caricamento di immagini . Il download viene abortito.|| | ||
+ | |||
+ | |**Codice messaggio**|20009| | ||
+ | |**Descrizione**|Error in ValImage adding| | ||
+ | |Si entra in questo stato quando QPaint rileva che il terminale ha riscontrato un errore nel caricamento di immagini ValImage. Il download viene abortito.|| | ||
+ | |||
+ | ==== - Variabili interne del terminale ==== | ||
+ | Nel terminale esistono una serie di variabili interne che possono essere visualizzate dal terminale oppure possono essere utilizzate dal sistema Qmove.\\ | ||
+ | Di seguito viene presentata una lista.\\ | ||
+ | |||
+ | |**Nome**|$CONTRAST| | ||
+ | |**Dimensione**|Word| | ||
+ | |**Lettura / Scrittura**|Lettura / Scrittura| | ||
+ | |Attraverso questa variabile è possibile regolare il contrasto dell' | ||
+ | |||
+ | |**Nome**|$DATAENTRYON| | ||
+ | |**Dimensione**|Flag| | ||
+ | |**Lettura / Scrittura**|Lettura| | ||
+ | |Attraverso questa variabile è possibile controllare se il terminale è in data entry. 1 = Terminale in data entry 0 = Terminale non in data entry|| | ||
+ | |||
+ | |**Nome**|$DAY| | ||
+ | |**Dimensione**|Byte| | ||
+ | |**Lettura / Scrittura**|Lettura| | ||
+ | |Attraverso questa variabile è possibile visualizzare il giorno del datario del terminale.|| | ||
+ | |||
+ | |**Nome**|$DEOBJ| | ||
+ | |**Dimensione**|Word| | ||
+ | |**Lettura / Scrittura**|Lettura / Scrittura| | ||
+ | |Attraverso questa variabile è possibile visualizzare o assegnare numero dell' | ||
+ | |||
+ | |**Nome**|$DIRECTDE| | ||
+ | |**Dimensione**|Flag| | ||
+ | |**Lettura / Scrittura**|Lettura / Scrittura| | ||
+ | |Attraverso questa variabile è possibile decidere se quando si entra in data entry attraverso un tasto numerico, esso debba essere considerato semplicemente come accesso al data entry (funzionamento tasto INS) oppure se deve fare l' | ||
+ | |||
+ | |**Nome**|$HLDE| | ||
+ | |**Dimensione**|Flag| | ||
+ | |**Lettura / Scrittura**|Lettura / Scrittura| | ||
+ | |Attraverso questa variabile è possibile decidere se quando si entra in data entry le cifre sono nere su sfondo bianco oppure le cifre sono bianche su sfondo nero (highlight mode) 1 = Data entry in highlight mode 0 = Data entry normale|| | ||
+ | |||
+ | |**Nome**|$HOUR| | ||
+ | |**Dimensione**|Word| | ||
+ | |**Lettura / Scrittura**|Lettura| | ||
+ | |Attraverso questa variabile è possibile visualizzare l'ora del datario del terminale.|| | ||
+ | |||
+ | |**Nome**|$KEY| | ||
+ | |**Dimensione**|Long| | ||
+ | |**Lettura / Scrittura**|Lettura| | ||
+ | |Attraverso questa variabile è possibile visualizzare il codice del tasto premuto nel terminale. Per la codifica dei tasti consultate il manuale firmware dell' | ||
+ | |||
+ | |**Nome**|$KEYF| | ||
+ | |**Dimensione**|Long| | ||
+ | |**Lettura / Scrittura**|Lettura| | ||
+ | |Attraverso questa variabile è possibile visualizzare il codice del tasto funzione premuto nel terminale. Per la codifica dei tasti consultate il manuale firmware dell' | ||
+ | |||
+ | |**Nome**|$LANGUAGE| | ||
+ | |**Dimensione**|Byte| | ||
+ | |**Lettura / Scrittura**|Lettura / Scrittura| | ||
+ | |Attraverso questa variabile è possibile visualizzare o assegnare la lingua messaggi del terminale.|| | ||
+ | |||
+ | |**Nome**|$LOWBATTQMOVE| | ||
+ | |**Dimensione**|Flag| | ||
+ | |**Lettura / Scrittura**|Lettura| | ||
+ | |Attraverso questa variabile è possibile visualizzare lo stato della batteria del Qmove. 1 = Batteria Qmove esaurita 0 = Batteria Qmove OK|| | ||
+ | |||
+ | |**Nome**|$LOWBATTTERM| | ||
+ | |**Dimensione**|Flag| | ||
+ | |**Lettura / Scrittura**|Lettura| | ||
+ | |Attraverso questa variabile è possibile visualizzare lo stato della batteria del terminale. 1 = Batteria terminale esaurita 0 = Batteria terminale OK|| | ||
+ | |||
+ | |**Nome**|$MIN| | ||
+ | |**Dimensione**|Byte| | ||
+ | |**Lettura / Scrittura**|Lettura| | ||
+ | |Attraverso questa variabile è possibile visualizzare il valore dei minuti del datario del terminale.|| | ||
+ | |||
+ | |**Nome**|$MONTH| | ||
+ | |**Dimensione**|Byte| | ||
+ | |**Lettura / Scrittura**|Lettura| | ||
+ | |Attraverso questa variabile è possibile visualizzare il mese del datario del terminale.|| | ||
+ | |||
+ | |**Nome**|$PAGE| | ||
+ | |**Dimensione**|Word| | ||
+ | |**Lettura / Scrittura**|Lettura| | ||
+ | |Attraverso questa variabile è possibile visualizzare la pagina visualizzata del terminale.|| | ||
+ | |||
+ | |**Nome**|$SCALEA| | ||
+ | |**Dimensione**|Long| | ||
+ | |**Lettura / Scrittura**|Lettura / Scrittura| | ||
+ | |Attraverso questa variabile è possibile visualizzare o assegnare il fattore di scala A del terminale. Vedi paragrafo dedicato.|| | ||
+ | |||
+ | |**Nome**|$SCALEB| | ||
+ | |**Dimensione**|Long| | ||
+ | |**Lettura / Scrittura**|Lettura / Scrittura| | ||
+ | |Attraverso questa variabile è possibile visualizzare o assegnare il fattore di scala B del terminale. Vedi paragrafo dedicato.|| | ||
+ | |||
+ | |**Nome**|$SCALEC| | ||
+ | |**Dimensione**|Long| | ||
+ | |**Lettura / Scrittura**|Lettura / Scrittura| | ||
+ | |Attraverso questa variabile è possibile visualizzare o assegnare il fattore di scala C del terminale. Vedi paragrafo dedicato.|| | ||
+ | |||
+ | |**Nome**|$SEC| | ||
+ | |**Dimensione**|Byte| | ||
+ | |**Lettura / Scrittura**|Lettura| | ||
+ | |Attraverso questa variabile è possibile visualizzare il valore dei secondi del datario del terminale.|| | ||
+ | |||
+ | |**Nome**|$SINGLEDE| | ||
+ | |**Dimensione**|Flag| | ||
+ | |**Lettura / Scrittura**|Lettura / Scrittura| | ||
+ | |Attraverso questa variabile è possibile decidere se, alla conferma con ENTER o alla pressione dei tasti a freccia, il data entry debba continuare all' | ||
+ | |||
+ | |**Nome**|$STATUSLED| | ||
+ | |**Dimensione**|Flag| | ||
+ | |**Lettura / Scrittura**|Lettura| | ||
+ | |Attraverso questa variabile è possibile visualizzare lo stato del led status del terminale. 1 = Led status lampeggiante 0 = Led status spento|| | ||
+ | |||
+ | |**Nome**|$YEAR| | ||
+ | |**Dimensione**|Word| | ||
+ | |**Lettura / Scrittura**|Lettura / Scrittura| | ||
+ | |Attraverso questa variabile è possibile visualizzare o assegnare l'anno del datario del terminale.|| | ||
+ | |||
+ | |**Nome**|$DOWNBATTQMOVE| | ||
+ | |**Dimensione**|Flag| | ||
+ | |**Lettura / Scrittura**|Lettura| | ||
+ | |Attraverso questa variabile è possibile visualizzare il preallarme di batteria in fase di scarica (batteria del Qmove). 1 = Batteria Qmove quasi scarica 0 = Batteria Qmove OK|| | ||
+ | |||
+ | |**Nome**|$STATUSTER| | ||
+ | |**Dimensione**|Flag| | ||
+ | |**Lettura / Scrittura**|Lettura| | ||
+ | |Attraverso questa variabile é possibile visualizzare lo stato del terminale. Per particolari terminali fare riferimento al manuale Firmware specifico dello strumento.|| | ||
+ | |||
+ | |**Nome**|$LEDS| | ||
+ | |**Dimensione**|Flag| | ||
+ | |**Lettura / Scrittura**|Lettura \ Scrittura| | ||
+ | |Attraverso questa variabile è possibile visualizzare lo stato led dei tasti del terminale. La variabile viene anche usata per forzare lo stato dei led stessi permettendone una gestione rapida e versatile.|| | ||
+ | |||
+ | |**Nome**|$BLINKLEDS| | ||
+ | |**Dimensione**|Flag| | ||
+ | |**Lettura / Scrittura**|Lettura \ Scrittura| | ||
+ | |Attraverso questa variabile è possibile visualizzare lo stato blink o meno dei led legati ai tasti del terminale. La variabile viene anche usata per forzare lo stato Blink stesso permettendone una gestione rapida e versatile.|| | ||
+ | |||
+ | |||
+ | ===== - Appendice 4: Esempi ===== | ||
+ | |||
+ | In questo documento sono riportati alcuni esempi applicativi. | ||
+ | |||
+ | ==== - Scroll personalizzato pagine di visualizzazione ==== | ||
+ | |||
+ | Per default il terminale utilizza i tasti PGUP e PGDN per cambiare la pagina di visualizzazione. | ||
+ | Se il progetto prevede molte pagine questi tasti forniscono uno scroll sequenziale e | ||
+ | ordinato di tutte le pagine appartenenti al progetto.\\ | ||
+ | Molte volte esiste la necessitá di vincolare lo scroll all' | ||
+ | esempio le pagine di parametrizzazione e le pagine di taratura. Inoltre in alcuni casi si deve | ||
+ | proteggere l' | ||
+ | realizzare tutto questo. | ||
+ | |||
+ | Supponiamo di avere un progetto composto da 4 pagine di visualizzazione normale, 3 pagine | ||
+ | di parametrizzazione e 2 pagine di taratura. Supponiamo inoltre che la posizione delle pagine | ||
+ | di parametrizzazione e taratura non coincida con l' | ||
+ | eseguiamo un " | ||
+ | |{{software: | ||
+ | |||
+ | Vogliamo che una volta entrati nella pagina nr.03 " | ||
+ | PGUP eseguano lo scroll solo tra le pagine di parametrizzazione cioé le nr.03 , nr.04 e nr.05. | ||
+ | Se invece si entra nella pagina nr.07 i tasti PGDN e PGUP devono eseguire lo scroll solo tra le | ||
+ | pagine di taratura cioé la nr.07 e nr.08. Su questo gruppo di pagine vogliamo inoltre che la | ||
+ | successione sia circolare cioé che raggiunta l' | ||
+ | alla prima e viceversa.\\ | ||
+ | Per fare questo é sufficiente " | ||
+ | pagine in cui si intende modificare il funzionamento di default descritto in precedenza. In | ||
+ | questo caso le pagine in cui si deve modificare il funzionamento sono: la pagina nr.03 perché | ||
+ | il tasto PGUP non deve eseguire nulla, la pagina nr.05 perché tasto PGDN deve essere disabilitato, | ||
+ | la pagina nr.07 perché il tasto PGUP deve richiamare la nr.08 e la pagina nr.08 perché | ||
+ | il tasto PGDN deve richiamare la nr.07. Per sovraccaricare il funzionamento si imposta nella | ||
+ | pagina interessata un evento di pagina di tipo **"On Key"** al quale si associa una azione **" | ||
+ | Page" | ||
+ | di pagina senza associare nessuna azione. La programmazione degli eventi diventa cosí: | ||
+ | |{{software: | ||
+ | |||
+ | Per uscire dalle pagine di parametrizzazione o taratura bisogna programmare un tasto apposito | ||
+ | che esegua un salto alle pagine di visualizzazione.\\ | ||
+ | Se si vuole mantenere una sequenza ordinata di scroll tra le pagine di visualizzazione (che | ||
+ | invece non hanno una disposizione ordinata), bisogna " | ||
+ | tasti PGUP e PGDN nel seguente modo: | ||
+ | |{{software: | ||
+ | |||
+ | É importante ricordare che nella definizione dell' | ||
+ | anche il nome della pagine anziché il numero in modo da non dover modificare l' | ||
+ | caso di inserimento o rimozione di una pagina. | ||
+ | |||
+ | Nel caso in cui si voglia controllare l' | ||
+ | taratura con password bisogna procedere nel seguente modo: per tutte le pagine apparteneti | ||
+ | al gruppo (nr.03, 04 e 05 per la parametrizzazione) bisogna abilitare e introdurre lo stesso | ||
+ | valore di password nell' | ||
+ | essa rimane valida per tutte le pagine in cui la password é uguale. Vediamo come dovrebbe | ||
+ | essere programmato il campo password per il nostro esempio: | ||
+ | |{{software: | ||
+ | |||
+ | ==== - Scelta della lingua ==== | ||
+ | |||
+ | Quando un progetto viene realizzato utilizzando piú lingue esistono vari modi per eseguire la | ||
+ | scelta sul terminale.\\ | ||
+ | Il modo piú semplice e immediato é quello di entrare nelle pagine di " | ||
+ | e scegliere il nome della lingua utilizzata. Questa procedura é in genere consigliata per | ||
+ | l' | ||
+ | configurazioni che se erroneamente toccate (vedi velocitá seriale) possono interrompere il | ||
+ | normale funzionamento del sistema e richiedere l' | ||
+ | lingua é peró selezionabile anche direttamente nella normale applicazione utente. Esiste la | ||
+ | variabile terminale $LANGUAGE il cui valore rappresenta il numero della lingua attualmente | ||
+ | selezionata.\\ | ||
+ | Si consideri il seguente progetto di esempio che é stato sviluppato con 3 lingue: | ||
+ | |{{software: | ||
+ | |||
+ | per la lingua " | ||
+ | assume valore 2, per la lingua " | ||
+ | Per realizzare la scelta della lingua da applicazione, | ||
+ | basta creare un oggetto VALUE assegnando la variabile $LANGUAGE con limiti di introduzione | ||
+ | minimo 1 e massimo 3. Per questa soluzione si deve in qualche modo peró indicare la relazione | ||
+ | tra nome lingua e valore numerico che non é immediata per l' | ||
+ | piú elegante e funzionale é quella di definire un oggetto VALSTRING con proprietá " | ||
+ | Modify Mode" attiva dove i messaggi corrispondono ai nomi assegnati alla lingua. In questo | ||
+ | modo l' | ||
+ | il tasto **" | ||
+ | |||
+ | Vediamo un esempio: | ||
+ | |{{software: | ||
+ | É importante introdurre i testi per tutte le lingue esistenti nel progetto magari con le appropriate traduzioni. | ||
+ | |||
+ | ==== - Cambio pagina forzato da QCL ==== | ||
+ | |||
+ | In molte applicazioni é consueto che una determinata condizione verificatasi nell' | ||
+ | QCL debba segnalare un' | ||
+ | riserva una determinata pagina per segnalare all' | ||
+ | il cambio pagina in corrispondenza di tale condizione. Per fare questo il QCL deve poter | ||
+ | modificare la pagina corrente nel terminale. Facciamo un esempio: un determinato ingresso | ||
+ | del sistema segnala la mancanza olio nella macchina. In tale condizione il ciclo di lavoro si | ||
+ | arresta ed il terminale visualizza la pagina numero 25 di avviso controllo olio. Vediamo come | ||
+ | implementare questo: si definisce in QCL la variabile gbNewPage di tipo GLOBAL e dimensione | ||
+ | BYTE. Si definisce nel terminale un evento globale di tipo " | ||
+ | variabile gbNewPage. A tale evento si definisce l' | ||
+ | stessa variabile gbNewPage. Cosí facendo ad ogni variazione della variabile gbNewPage | ||
+ | corrisponderá il salto alla pagina definita dal valore della variabile stessa. In altre parole, | ||
+ | per il QCL, basterá scrivere il nuovo valore nella variabile ed il terminale cambierá pagina | ||
+ | automaticamente senza dover separare i comandi di cambio pagina e numero nuova pagina. | ||
+ | In QCL si dovrá implementare il seguente codice: | ||
+ | < | ||
+ | .. | ||
+ | .. | ||
+ | IF (ioMancaOlio) | ||
+ | sbStopCiclo = 1 ;Arresto del ciclo automatico | ||
+ | gbNewPage = 25 ;Terminale in pagina nr.25! | ||
+ | ENDIF | ||
+ | .. | ||
+ | .. | ||
+ | </ | ||
+ | |||
+ | dove ioMancaOlio é la variabile di tipo INPUT che rappresenta il valore dell' | ||
+ | programmazione non modifica il comportamento dei tasti PGUP e PGDN.\\ | ||
+ | In altre applicazioni é invece necessario il trasferimento opposto e ció si verifica quando | ||
+ | l' | ||
+ | pagina che il terminale sta visualizzando. Per fare questo é il terminale che ad ogni cambio | ||
+ | pagina deve aggiornare l' | ||
+ | come fare questo: si definisce in QCL la variabile gbTerPage di tipo GLOBAL e dimensione | ||
+ | BYTE. Si definisce nel terminale un evento globale di tipo " | ||
+ | variabile di terminale $PAGE. A tale evento si definisce l' | ||
+ | variabile $PAGE come source e gbTerPage come destination. Cosí facendo ad ogni variazione | ||
+ | della variabile $PAGE corrisponderá la scrittura del nuovo valore nella variabile dell' | ||
+ | gbTerPage. | ||
+ | |||
+ | N.B. Se l' | ||
+ | essere di dimensione WORD anziché BYTE. | ||
+ | |||
+ | ==== - Introduzione dati in pollici o millimetri (esempio) ==== | ||
+ | |||
+ | In alcune applicazioni esiste la necessitá di visualizzare i valori numerici in diverse unitá di | ||
+ | misura. Ad esempio in una pagina di terminale il cliente potrebbe scegliere se utilizzare la | ||
+ | rappresentazione in millimetri oppure in pollici oppure in metri anziché decimetri. Tutte le | ||
+ | rappresentazioni numeriche del progetto dovrebbero cosí commutare i valori ed adeguarsi | ||
+ | alla nuova scelta. Il terminale mette a disposizione una serie di strumenti per permettere | ||
+ | questa possibilitá. Come premessa bisogna dire che esistono molti modi per realizzare la | ||
+ | conversione, | ||
+ | originale del dato e introducendo un fattore di scala tale da eseguire la conversione dell' | ||
+ | di misura.\\ | ||
+ | Supponiamo di voler sviluppare un progetto terminale dove alcune visualizzazioni/ | ||
+ | possono essere effettuate sia in valori metrici che in valori anglosassoni. Supponiamo | ||
+ | che la parametrizzazione della macchina sia stata effettuata per rappresentare il decimo di | ||
+ | millimetro e che si voglia visualizzare un punto decimale per facilitare la lettura del valore. | ||
+ | Consideriamo anche che per la rappresentazione in unitá anglosassone bisogna rappresentare | ||
+ | il valore in pollici senza peró perdere precisione. Cosí é necessario modificare la posizione | ||
+ | del punto decimale (ad esempio 100.4mm permette una precisione del decimo di mm,ma | ||
+ | 4.6inch significa una precisione di 2.54mm!).\\ | ||
+ | Procediamo per passi: tutte le introduzioni numeriche dove vogliamo ottenere due rappresentazioni | ||
+ | fanno capo ad oggetti VALUE in cui bisogna abilitare la voce " | ||
+ | " | ||
+ | fattore di scala composto dai valori ScaleA, | ||
+ | dal menú " | ||
+ | tramite la scrittura nelle variabili di terminale $SCALEA, $SCALEB e $SCALEC. Inoltre | ||
+ | definiamo la variabile interna @PPDec di dimensione BYTE. Tutti gli oggetti VALUE sopra | ||
+ | indicati devono avere associata la variabile @PPDec nel campo Dec.Point. Supponiamo che la | ||
+ | parametrizzazione sia stata eseguita perché l' | ||
+ | di millimetro e quindi per questa unitá di misura si visualizzano i valori con un punto decimale. | ||
+ | Per ottenere la visualizzazione metrica bisogna impostare nel terminale i seguenti valori: | ||
+ | |||
+ | $SCALEA = 1\\ | ||
+ | $SCALEB = 1\\ | ||
+ | $SCALEC = 0\\ | ||
+ | @PPDec = 1\\ | ||
+ | Per la rappresentazione anglosassone: | ||
+ | $SCALEA = 393700\\ | ||
+ | $SCALEB = 100000\\ | ||
+ | $SCALEC = 0\\ | ||
+ | @PPDec = 3 | ||
+ | |||
+ | Con questa impostazione si intende visualizzare il millesimo di pollice che corrisponde a | ||
+ | 0.0393700 mm e quindi mantiene la precisione del decimo di millimetro. Per convertire da | ||
+ | decimo di millimetro a millesimo di pollice si deve moltiplicare per:\\ | ||
+ | {{software: | ||
+ | siccome la variabile $SCALEA é di dimensione LONG puó contenere solamente valori interi. | ||
+ | Allora si moltiplica il valore per 100000 per renderlo intero e si programma $SCALEB. | ||
+ | |||
+ | Ora sará sufficiente realizzare una pagina di scelta unitá di misura come in figura: | ||
+ | |{{software: | ||
+ | |{{software: | ||
+ | |{{software: | ||
+ | |||
+ | Fare attenzione perché le variabili interne all' | ||
+ | mentre le variabili $SCALEA, $SCALEB e $SCALEC hanno il valore fissato nell' | ||
+ | " | ||
+ | QPaint. | ||
+ | |||
+ | ==== - Introduzione dati guidata ==== | ||
+ | |||
+ | In questo esempio si vuole dare tutti gli strumenti che il Qpaint 3.0 mette a disposizione | ||
+ | relativamente all' | ||
+ | da terminale. L' | ||
+ | * attivazione del Data Entry senza l' | ||
+ | * attivazione del Data Entry in un particolare campo, | ||
+ | * uscita dal Data Entry confermando il valore introdotto senza l' | ||
+ | * uscita dal Data Entry senza confermare il valore introdotto senza l' | ||
+ | * sequenza di Data Entry diversa da quella di default, | ||
+ | * Data Entry immediato alla pressione dei tasti numerici, | ||
+ | * eventi dati dall' | ||
+ | La pagina che utilizzeremo è la seguente: | ||
+ | |{{software: | ||
+ | |||
+ | ci sono 12 campi inseribili suddivisi in 3 gruppi A, B e C. | ||
+ | |||
+ | === - Attivazione del Data Entry senza l' | ||
+ | |||
+ | Per iniziare l' | ||
+ | Data Entry" associata ad un evento particolare si può far iniziare il Data Entry. L' | ||
+ | potrebbe essere dato da un particolare valore assunto da una variabile o da uno stato assunto | ||
+ | da un ingresso, per esempio. | ||
+ | |{{software: | ||
+ | Nell' | ||
+ | primo campo modificabile in alto a sinistra (A1). | ||
+ | |||
+ | Attivazione del Data Entry in un particolare campo. | ||
+ | |||
+ | Se si vuole far iniziare il Data Entry da un campo particolare diverso da quello di default, | ||
+ | allora si dovrà utilizzare la variabile del terminale $DEOBJ assegnando ad essa il numero | ||
+ | identificativo del primo campo che si vuole introdurre quando inizia il Data Entry. Per conoscere | ||
+ | tali numeri identificativi si deve selezionare la voce " | ||
+ | (Ctrl+D). Apparirà la seguente finestra: | ||
+ | |{{software: | ||
+ | Se si vuole far iniziare il Data Entry dal campo C1 per esempio si dovrà fare doppio click nella | ||
+ | finestra precedente sopra il campo numerico C1 e quindi scrivere: | ||
+ | |{{software: | ||
+ | |||
+ | === - Uscita dal Data Entry confermando il valore introdotto senza l' | ||
+ | |||
+ | Se si vuole far finire il Data Entry confermando il valore appena scritto, ma senza utilizzare | ||
+ | il tasto di default ENTER, si può utilizzare l' | ||
+ | può essere associata solo ad eventi "On Var" e "On Change Var"__ quindi per esempio si può | ||
+ | associare ad un flag del Qmove: | ||
+ | |{{software: | ||
+ | |||
+ | === - Uscita dal Data Entry senza confermare il valore introdotto senza l' | ||
+ | |||
+ | Se invece si vuole sospendere un Data Entry senza neanche confermare l' | ||
+ | perché si vuole visualizzare una pagina particolare immediatamente (per esempio | ||
+ | con un messaggio di allarme) allora si dovrà utilizzare la seguente programmazione: | ||
+ | |{{software: | ||
+ | |||
+ | === - Sequenza di Data Entry diversa da quella di default === | ||
+ | |||
+ | Potrebbe essere necessario eseguire un ordine di inserimento dei dati diverso da quello di | ||
+ | default che è dall' | ||
+ | all' | ||
+ | |||
+ | A1, A2, A3, B1, A4, B2, B3, C1, B4, C2, C3, C4. | ||
+ | |||
+ | Se per esempio si volesse inserire prima tutti gli elementi del gruppo A, poi quelli del B e poi | ||
+ | del C bisogna utilizzare il "Data Entry Sequence Editor" | ||
+ | |{{software: | ||
+ | |||
+ | Si vede per esempio che dal Value3 (A3) premendo il tasto ENTER si va al Value4 (A4) e non | ||
+ | al Value5 (B1) come sarebbe per default. | ||
+ | |||
+ | === - Data entry immediato alla pressione dei tasti numerici === | ||
+ | |||
+ | Se si vuole cominciare ad inserire un valore senza dover premere per forza il tasto INS, ma | ||
+ | cominciando subito ad inserire i valori con i tasti numerici si deve programmare la pressione | ||
+ | di __ognuno dei tasti numerici__ nel seguente modo: | ||
+ | |{{software: | ||
+ | |||
+ | Il significato di tale programmazione è:\\ | ||
+ | alla pressione di ognuno dei tasti numerici si imposta quale sarà il campo da introdurre | ||
+ | ($DEOBJ = 1), si imposta la modalità di inserimento diretto ($DIRECTDE = 1) e si avvia il Data | ||
+ | Entry (Begin Data Entry).\\ | ||
+ | Una volta usciti dal Data Entry la modalità di inserimento diretta viene disabilitata automaticamente, | ||
+ | tale funzione ha lo scopo di considerare la pressione del tasto numerico 1 (per | ||
+ | esempio), oltre che l' | ||
+ | inserire. | ||
+ | |||
+ | === - Eventi dati dall' | ||
+ | |||
+ | Esistono due eventi basati sull' | ||
+ | del valore introdotto o senza conferma dello stesso. A tale eventi si può associare qualsiasi | ||
+ | azione disponibile. | ||
+ | |{{software: | ||
+ | Nell' | ||
+ | un flag. | ||
+ | |||
+ | ==== - Segnalazione di batteria ==== | ||
+ | |||
+ | Nel terminale e nel sistema Qmove si trova una batteria tampone per la memorizzazione dei | ||
+ | dati ritentivi. In caso di esaurimento di tale componente esiste una segnalazione nelle | ||
+ | apparecchiature. Per il terminale la segnalazione si trova nella pagina Info, per il sistema | ||
+ | Qmove esiste una spia luminosa sul frontalino. In molti casi peró questa segnalazione non | ||
+ | puó essere sufficiente perché non é direttamente accessibile all' | ||
+ | sistema Qmove si trova all' | ||
+ | richiamata la pagina di set-up. Per questi motivi é utile segnalare l' | ||
+ | sulla pagina di terminale in modo che l' | ||
+ | necessari. Esistono tre variabili di terminale $DOWNBATTTERM, | ||
+ | $LOWBATTQMOVE rispettivamente che rappresentano la batteria in fase di esaurimento, | ||
+ | batteria esurita nel terminale e nel Qmove.\\ | ||
+ | In questo esempio vediamo come realizzare un applicativo in cui il terminale, se una batteria | ||
+ | é esaurita, segnala all' | ||
+ | Nella prima pagina di terminale inseriamo i seguenti eventi di pagina: | ||
+ | |{{software: | ||
+ | |{{software: | ||
+ | La pagina "LOW batt QMOVE" deve essere: | ||
+ | |{{software: | ||
+ | La pagina "LOW batt Ter" deve essere: | ||
+ | |{{software: | ||
+ | Naturalmente la stessa operazione può essere compiuta per gestire la batteria in fase di | ||
+ | esaurimento ,creando quindi un messaggio di preallarme.\\ | ||
+ | I passi di realizzazione per la gestione sono quindi gli stessi. | ||
+ | |||
+ | ==== - Controllo comunicazione attiva ==== | ||
+ | |||
+ | Nel terminale esiste la possibilitá di segnalare una anomalia durante la comunicazione tra il | ||
+ | terminale e il sistema Qmove. Tale anomalia puó essere di origine hardware (mancanza di | ||
+ | collegamento, | ||
+ | dell' | ||
+ | del led " | ||
+ | errore di questo tipo é opportuno verificare quale é stata la causa che lo ha prodotto; ció | ||
+ | puó essere fatto semplicemente entrando nella "Info Page" del Setup alla voce " | ||
+ | Status" | ||
+ | solamente allo spegnimento del terminale o dopo che si é usciti dal Setup per ritornare | ||
+ | all' | ||
+ | |||
+ | Questa segnalazione puó essere ottenuta anche da programma tramite l'uso della variabile | ||
+ | di terminale $STATUSLED; in questo esempio vediamo come realizzare un applicativo in cui il | ||
+ | terminale, se avviene un errore di status, segnala questo all' | ||
+ | pagina dedicata. | ||
+ | |||
+ | Il nostro esempio ha 4 pagine: la pagina iniziale in cui non vi é alcuna comunicazione con | ||
+ | il Qmove ma si visualizza una variabile di terminale, due pagine in cui si vanno a fare delle | ||
+ | operazioni di lettura di variabili Qmove, e infine la pagina di allarme. Ció che vogliamo | ||
+ | ottenere dall' | ||
+ | errore di comunicazione tra terminale e Qmove. | ||
+ | |||
+ | La cosa piú semplice é quella di definire un evento globale OnVar sulla variabile di terminale | ||
+ | $STATUSLED, verificando quando questa assume il valore 1 (che indica l' | ||
+ | ed effettuando il salto alla pagina di allarme. Questo peró ha un inconveniente: | ||
+ | infatti quando si arriva alla pagina di allarme, l' | ||
+ | var $STATUSLED, é ancora attivo e quindi il salto alla pagina di allarme si effettua sempre. | ||
+ | Questo implica il continuo rinfresco della pagina di allarme, e questo produce uno sfarfallio | ||
+ | fastidioso, e non é esattamente quello che si voleva. | ||
+ | |||
+ | Bisogna procedere in altro modo; definiamo una variabile interna @errcomm, che utilizzeremo | ||
+ | per il salto pagina e solo quando c'é un cambiamento nel suo valore, in modo da non | ||
+ | saltare nuovamente alla pagina di allarme una volta avvenuto l' | ||
+ | $STATUSLED assume il valore 1 allora anche la var @errcomm verrá impostata ad 1. Quindi si | ||
+ | crea un evento OnChangeVar sul cambio di valore della variabile @errcomm con azione | ||
+ | collegata Goto Page "Error Communication" | ||
+ | che il suo numero, perché questo ci rende completamente indipendenti da eventuali | ||
+ | modifiche nella posizione della pagina di allarme.\\ | ||
+ | Quindi la pagina degli Eventi Globali appare cosí: | ||
+ | |{{software: | ||
+ | |{{software: | ||
+ | Per far sí che una volta verificato l' | ||
+ | ancora sensibili ad un nuovo errore di comunicazione, | ||
+ | nella pagina iniziale, in quanto una volta usciti dalla Info di Setup Page si entra in questa | ||
+ | pagina. Allora si definisce un evento di pagina OnPageIn in questo modo | ||
+ | |{{software: | ||
+ | Infine, per fare in modo di non accedere direttamente alla pagina di allarme con l'uso dei | ||
+ | tasti PGUP o PGDN occorre sovraccaricare il tasto PGDN nella pagina precedente e sovraccaricare | ||
+ | il tasto PGUP nella pagina successiva. Nel nostro caso la pagina di allarme é l' | ||
+ | quindi si lavora solo sulla pagina precedente. | ||
+ | |{{software: | ||
+ | La pagina di allarme, che abbiamo chiamato "Error Communication", | ||
+ | disegnata: | ||
+ | |{{software: | ||
+ | Anche nella pagina di allarme occorre sovraccaricare i tasti PGUP e PGDN per fare in modo | ||
+ | che l' | ||
+ | errore che si é verificato. | ||
+ | |{{software: | ||
+ | |||
+ | ==== - Introduzione alfanumerica ==== | ||
+ | |||
+ | In questo esempio vediamo come poter trattare dati alfanumerici in maniera dinamica usando | ||
+ | una variabile QCL Array di tipo byte. In particolare simuleremo un piccolo archivio di testi | ||
+ | (45 stringhe di 20 caratteri ciascuna) usando un array di 900 elementi. Vedremo come poter | ||
+ | selezionare uno qualsiasi di questi testi, modificarlo, | ||
+ | |||
+ | Il modo in cui vogliamo gestire l' | ||
+ | disegno seguente: | ||
+ | |{{software: | ||
+ | Creiamo un oggetto VALUE in cui definiamo come variabile associata proprio la abARRS e in | ||
+ | cui usiamo come First Index una variabile QCL, nel nostro esempio swWord che é una variabile | ||
+ | SYSTEM di tipo WORD; questo per poterlo modificare da QMove, cosí ci possiamo | ||
+ | spostare lungo l' | ||
+ | eventi su tasti funzione in modo da poter scorrere la lista dei testi contenuti nell' | ||
+ | saranno due tasti di scorrimento rapido e due tasti che si spostano di un testo alla volta. | ||
+ | E' da sottolineare che la suddivisione dell' | ||
+ | quanto in realtá i caratteri si susseguono uno dopo l' | ||
+ | programma nel terminale l'idea che ci si fa é quella di stare trattando realmente un | ||
+ | archivio di stringhe, perfettamente separate tra di loro. Ed é ció che vogliamo ottenere | ||
+ | con questo esempio. | ||
+ | |||
+ | Vediamo come é organizzata la pagina del terminale: | ||
+ | |{{software: | ||
+ | Vediamo piú in particolare l' | ||
+ | queste proprietá: | ||
+ | |{{software: | ||
+ | E' stata usata la variabile QCL abARRS, in quanto l'uso dei Value alfanumerici é possibile solo | ||
+ | con array a byte, l' | ||
+ | tale indice di inizio é modificabile dall' | ||
+ | Alpha Mode, per poter trattare i valori dei singoli elementi dell' | ||
+ | Modify Mode, che ci consente di poter introdurre il testo direttamente dalla pagina di terminale. | ||
+ | Infine nel campo Length abbiamo specificato che la lunghezza dell' | ||
+ | 20 caratteri.\\ | ||
+ | Per la visualizzazione della posizione si é usato un oggetto VALUE con variabile gbPosStr, che | ||
+ | rappresenta il numero d' | ||
+ | |||
+ | Vediamo anche come sono stati definiti i tasti funzione e come sono stati usati Eventi e | ||
+ | Azioni: | ||
+ | |{{software: | ||
+ | |{{software: | ||
+ | L' | ||
+ | per poter implementare lo scorrimento veloce della lista, verso l'alto e verso il basso. Per | ||
+ | questo usiamo i due tasti F1 e F2, che semplicemente impostano le due variabili di tipo Flag | ||
+ | sfF1 e sfF2, che poi verranno gestite dall' | ||
+ | maniera, nel senso che impostano analogamente le due variabili sfF1 e sfF2, solo che l' | ||
+ | é OnPress, che viene generato una sola volta alla pressione del tasto, e affinché sia | ||
+ | generato di nuovo é necessario che il tasto venga rilasciato per poi essere ripremuto. E | ||
+ | questo é proprio ció che ci serve per scorrere la lista passo passo, spostandoci di un elemento | ||
+ | per volta. Questo é tutto per quanto riguarda il terminale. Vediamo ora invece come interviene | ||
+ | il codice QCL. Nel file .CNF dobbiamo definire: | ||
+ | <code QCL> | ||
+ | ; | ||
+ | ; Definizione Variabili SYSTEM | ||
+ | ; | ||
+ | SYSTEM | ||
+ | |||
+ | ... | ||
+ | swWord W ; | ||
+ | sfF1 F ; | ||
+ | sfF2 F ; | ||
+ | ... | ||
+ | ; | ||
+ | ; Definizione Variabili GLOBAL | ||
+ | ; | ||
+ | GLOBAL | ||
+ | |||
+ | ... | ||
+ | gbStep B ; | ||
+ | gbPosStr B ; | ||
+ | ... | ||
+ | ; | ||
+ | ; Definizione Variabili ARRSYS1 | ||
+ | ; | ||
+ | ARRSYS | ||
+ | |||
+ | abARRS B 900 ; | ||
+ | ... | ||
+ | </ | ||
+ | Mentre nel codice task .MOD abbiamo: | ||
+ | <code QCL> | ||
+ | ; | ||
+ | ; Programma Principale | ||
+ | ; | ||
+ | MAIN: | ||
+ | |||
+ | ;gestisce l' | ||
+ | ;sfF1 = 1 significa premuto F1 o F3 | ||
+ | |||
+ | IF ((sfF1 EQ 1) AND (gbPosStr LT 45)) | ||
+ | gbStep = gbStep + 1 | ||
+ | swWord = gbStep * 20 + 1 ;calcola l' | ||
+ | ENDIF | ||
+ | |||
+ | ;gestisce l' | ||
+ | ;sfF2 = 1 significa premuto F2 o F4 | ||
+ | |||
+ | IF ((sfF2 EQ 1) AND (gbPosStr GT 1)) | ||
+ | gbStep = gbStep - 1 | ||
+ | swWord = gbStep * 20 + 1 ;calcola l' | ||
+ | ENDIF | ||
+ | |||
+ | ; resetta i tasti | ||
+ | sfF1 = 0 | ||
+ | sfF2 = 0 | ||
+ | |||
+ | ; aggiorna la posizione del testo selezionato | ||
+ | gbPosStr = gbStep + 1 | ||
+ | </ | ||
+ | Si vede come la cosa venga fatta semplicemente: | ||
+ | dell' | ||
+ | inizio swWord pari a 1. swWord contiene l' | ||
+ | assume solo i valori 1, 21, 41, 61, ....881. La pressione dei tasti funzione modifica il valore di | ||
+ | sbStep e quindi di swWord; infine viene impostata anche gbPosStr che rappresenta la posizione | ||
+ | del testo nelle lista in modo " | ||
+ | |||
+ | Come detto il testo selezionato puó essere modificato dal terminale: questo é dovuto al | ||
+ | fatto che abbiamo selezionato Modify Mode nell' | ||
+ | testo dalla pagina terminale é sufficiente premere il tasto INS, e confermare l' | ||
+ | con il tasto ENTER, che fa uscire dalla fase di Data Entry. Vediamo come si presenta il | ||
+ | terminale durante il funzionamento: | ||
+ | |{{software: | ||
+ | |||
+ | Se andiamo a verificare i valori dell' | ||
+ | |{{software: | ||
+ | Questo significa che anche da QCL potremmo modificare quanto appare nel terminale. Se | ||
+ | ad esempio scriviamo il valore 49 nell' | ||
+ | é " | ||
+ | dimostrata la grande flessibilità e interoperabilitá tra terminale e QMove. | ||
+ | |||
+ | ==== - Gestione eventi temporali ==== | ||
+ | |||
+ | Vediamo con questo esempio come generare degli eventi a scadenze prefissate, facendo uso | ||
+ | dell' | ||
+ | determinati interventi, ad esempio di manutenzione o di controllo, che devono essere eseguiti | ||
+ | a scadenze o a date fisse. | ||
+ | |||
+ | Supponiamo, per semplificare le cose, di avere una sola pagina del terminale che descrive il | ||
+ | funzionamento in corso, e di avere invece 3 pagine di avviso su operazioni da compiere; | ||
+ | queste pagine saranno attivate in determinati momenti. Una pagina (1) indica di provvedere | ||
+ | ad operazioni di ingrassaggio motore, una (2) indica di eseguire operazioni di manutenzione | ||
+ | e pulizia filtri, la (3) ricorda di effettuare un backup dei dati di lavoro della macchina. | ||
+ | Vogliamo che queste pagine vengano attivate rispettivamente: | ||
+ | al giorno 15, alle ore 12; per la pagina (2) ogni mese 1, 4, 7 e 10 (operazioni trimestrali), | ||
+ | la pagina (3) ogni giorno alle ore 17:30. Tutte le operazioni che coinvolgono l' | ||
+ | fanno riferimento al timer del terminale, che é possibile impostare nella pagina Info, ed é | ||
+ | possibile leggere usando le variabili terminale $YEAR, $MONTH, $DAY, $HOUR, $MIN, $SEC. | ||
+ | |||
+ | Vediamo come poter fare tutto questo. La pagina di lavoro é cosí strutturata: | ||
+ | |{{software: | ||
+ | Per visualizzare la data e l'ora abbiamo usato 5 oggetti di tipo VALUE in cui come Base si sono | ||
+ | definite rispettivamente le variabili terminale $DAY, $MONTH per la data e $HOUR, $MIN, | ||
+ | $SEC per l'ora. La pagina delle proprietá di una di queste appare cosí: | ||
+ | |{{software: | ||
+ | E' stata abilitata la modalitá " | ||
+ | con una cifra dallo zero. In questo modo la data viene rappresentata ad es. 15/07 al posto di | ||
+ | 15/7 come sarebbe invece se tale modo non fosse stato abilitato. Analogamente si procede | ||
+ | per le altre variabili. Questa indicazione ci serve per poi testare il funzionamento del terminale | ||
+ | e verificare se quanto abbiamo programmato viene effettivamente eseguito.\\ | ||
+ | Il passaggio alle varie pagine di avviso viene impostato usando eventi globali: questo perché | ||
+ | potrebbero esserci piú pagine che descrivono il normale funzionamento della nostra macchina | ||
+ | e noi vogliamo essere sicuri che gli eventi temporali vengano segnalati sempre, in qualsiasi | ||
+ | punto ci troviamo. Vediamo come si presenta la finestra degli eventi globali: | ||
+ | |{{software: | ||
+ | Vediamo che ci sono solo eventi di tipo OnTime; nella figura é rappresentato l' | ||
+ | attiva la pagina " | ||
+ | OnTime; esse sono: Month, Day, Hour e Minute. Se nessuna di queste é selezionata, | ||
+ | non viene mai generato, é come se non esistesse. Se invece é selezionato qualcosa, l' | ||
+ | accade quando la proprietá in esame assume per la prima volta il valore impostato. Se vi | ||
+ | sono piú proprietá selezionate, | ||
+ | valori delle proprietá stesse. In questo esempio quando Day assume il valore 15 e quando | ||
+ | Hour assume il valore 12 l' | ||
+ | pagina " | ||
+ | possiamo gestire una qualsiasi temporizzazione, | ||
+ | ribadire é che é il valore della proprietá che determina la generazione dell' | ||
+ | vogliamo generare degli eventi che cadono mensilmente, | ||
+ | Month, come potrebbe sembrare a prima vista, ma su Day, in quanto l' | ||
+ | ogni volta che tale proprietá assume il valore da noi specificato (e questo vuol dire allo | ||
+ | stesso giorno di ogni mese). Cosí dicasi se vogliamo degli eventi giornalieri: | ||
+ | non selezionata la proprietá Day e lavorare invece su Hour e Minute, in modo che alla | ||
+ | stessa ora di ogni giorno si verifichi l' | ||
+ | di salvataggio dati viene fatto, come si vede, ogni volta che la var H (Hour) assume il valore | ||
+ | 17 e la var M (Minute) il valore 30; ció vuol dire che ogni giorno, alle ore 17:30 apparirá | ||
+ | l' | ||
+ | filtri, che avviene ogni 3 mesi, come si vede dalle impostazioni della variabile MM (Month); | ||
+ | l' | ||
+ | inoltre che l' | ||
+ | non si rileva questo passaggio (es. il terminale é spento) l' | ||
+ | Nell' | ||
+ | servirà nelle pagine di avviso per indicare quale tasto funzione premere dopo aver eseguito | ||
+ | l' | ||
+ | una pagina di avviso (le altre sono analoghe e non verranno descritte in dettaglio): | ||
+ | |{{software: | ||
+ | Gli eventi di pagina vengono cosí impostati: | ||
+ | |{{software: | ||
+ | Premendo il tasti F1, il cui led lampeggia, si torna alla pagina di funzionamento e si spegne | ||
+ | il led F1. Inoltre, dato che questa é una pagina di avviso a cui vi si arriva solo a scadenze | ||
+ | fissate, sono stati sovrascritti i tasti PGUP e PGDN, in modo che l' | ||
+ | quello di usare il tasto funzione. Lo stesso succede per le altre pagine di avviso, di cui | ||
+ | vediamo la rappresentazione | ||
+ | |{{software: | ||
+ | |||
+ | ==== - Pagina di presentazione ==== | ||
+ | |||
+ | Con questo esempio vediamo come realizzare una pagina iniziale di presentazione temporizzata | ||
+ | (ad es. con un logo) in modo che l' | ||
+ | sincronizzino. Ció che vogliamo ottenere é che la partenza dei due programmi sia contemporanea, | ||
+ | indipendentemente dall' | ||
+ | la nostra pagina con il logo; essa potrebbe essere: | ||
+ | |{{software: | ||
+ | Vogliamo che all' | ||
+ | poi passi alla pagina successiva, dove inizia il normale funzionamento del nostro applicativo | ||
+ | terminale; nel nostro esempio vi sará solo una pagina che non fa niente (appare solo un | ||
+ | testo), ma la cosa é assolutamente ininfluente sul funzionamento della pagina temporizzata. | ||
+ | Intanto vediamo come inserire un' | ||
+ | progetto .QT3 c'é la possibilitá di creare una galleria di immagini che possono essere | ||
+ | utilizzate nel progetto stesso e che vengono scaricate nel terminale durante la fase di | ||
+ | download. Per costruire questa raccolta occorre utilizzare la funzionalitá offerta dal menu | ||
+ | " | ||
+ | |{{software: | ||
+ | Image Manager, come dice il nome stesso, permette di gestire la libreria di immagini legate | ||
+ | al progetto QT3 in esame. Inizialmente tale libreria é vuota ed é abilitato il solo pulsante | ||
+ | Add, che permette di aggiungere una immagine .BMP alla lista; tale immagine deve essere | ||
+ | monocromatica, | ||
+ | una dialog box in cui si puó scegliere un file .BMP; una volta selezionato il file la dialog box | ||
+ | si chiude e la finestra Image Manager appare cosí modificata: | ||
+ | |{{software: | ||
+ | Come si vede, a sinistra appare la lista delle immagini presenti; ad ogni immagine viene dato | ||
+ | un nome di default (Picturennn dove nnn é un numero relativo alla prima posizione libera | ||
+ | nella lista) che é possibile modificare usando il pulsante Rename. Al centro appare il Preview | ||
+ | dell' | ||
+ | funzioni possibili; abbiamo giá visto Add e Rename, Delete effettua la rimozione dalla lista | ||
+ | dell' | ||
+ | lista. Una volta fatto questo, per poter effettivamente aggiungere l' | ||
+ | prescelta, occorre selezionare un Image Object e posizionare l' | ||
+ | nel punto desiderato della pagina. Appare quindi questa finestra: | ||
+ | |{{software: | ||
+ | in cui é possibile selezionare dalla lista di immagini costruita con Image Manager, quella | ||
+ | che ci interessa. E' possibile anche impostare la posizione indicando il valore di Left e Top | ||
+ | che corrispondono alle coordinate dell' | ||
+ | |||
+ | Quindi abbiamo completato la nostra pagina aggiungendo un box per lo sfondo e un paio di | ||
+ | oggetti String per I testi. | ||
+ | |||
+ | Per ottenere la sincronizzazione del funzionamento di terminale e Qmove, dobbiamo avere | ||
+ | alcune variabili che contengano lo stato in cui si trovano i due dispositivi. Vediamo come va | ||
+ | scritto l' | ||
+ | Usiamo variabili GLOBAL, in modo che ad ogni restart dell' | ||
+ | Qmove vengano inizializzate a zero. | ||
+ | <code QCL> | ||
+ | ; | ||
+ | ; Definizione Variabili GLOBAL | ||
+ | ; | ||
+ | ... | ||
+ | gfTerminale F ;Verifica la presenza del terminale | ||
+ | gfRun F ;Indica che il terminale non é nella pagina di presentazione | ||
+ | gfQMove F ;Utilizzata per l' | ||
+ | ... | ||
+ | |||
+ | ; | ||
+ | ; Definizione Variabili TIMER | ||
+ | ; | ||
+ | ... | ||
+ | tmLogo | ||
+ | ... | ||
+ | </ | ||
+ | E viene anche definita una variabile TIMER tmLogo che ci servirá per impostare il timeout di | ||
+ | cambio pagina.\\ | ||
+ | Nel codice task avremo le seguenti istruzioni | ||
+ | <code QCL> | ||
+ | ; | ||
+ | ; Operazioni di Inizializzazione TASK | ||
+ | ; | ||
+ | |||
+ | WAIT gfTerminale | ||
+ | tmLogo = 5000 ;imposta la temporizzazione della | ||
+ | ; | ||
+ | |||
+ | ; | ||
+ | ; Programma Principale | ||
+ | ; | ||
+ | MAIN: | ||
+ | |||
+ | IF (tmLogo AND NOT gfRun) | ||
+ | gfQMove = 1 ;serve per il cambio pagina in QPaint | ||
+ | gfRun = 1 ;evita di rientrare in questa parte dopo il tempo tmLogo | ||
+ | ENDIF | ||
+ | |||
+ | IF (gfRun EQ 1) ;una volta scaduto il timeout | ||
+ | tmLogo = 5000 ;serve per tenere tmLogo a zero e poter effettivamente vedere il cambio di gfQMove | ||
+ | ENDIF | ||
+ | |||
+ | IF (gfRun EQ 1) ;Condizione per stabilisce se il terminale ha terminato la presentazione | ||
+ | ... | ||
+ | ... ;Codice task sincronizzato con il terminale | ||
+ | |||
+ | ENDIF | ||
+ | |||
+ | WAIT 1 | ||
+ | JUMP MAIN | ||
+ | END | ||
+ | </ | ||
+ | Durante la fase di inizializzazione l' | ||
+ | di presentazione verificando il valore di gfTerminale. Vedremo che il valore di questa variabile | ||
+ | viene impostato a 1 da un evento OnAlways sulla pagina iniziale; quindi si imposta la | ||
+ | variabile TIMER tmLogo con valore di 5000 (5 sec) che é quello che abbiamo scelto prima di | ||
+ | passare alla pagina successiva. Nel programma principale poi avviene il controllo sia sullo | ||
+ | scadere del timeout sia sullo stato dell' | ||
+ | se é giá stato fatto una volta. All' | ||
+ | quindi dato che il controllo é fatto sul suo valore negato, l' | ||
+ | valore di tmLogo, che diventa 1 solo quando il timeout é scaduto, cioé dopo 5 sec dall' | ||
+ | del terminale. Una volta scaduto il timeout viene impostata a 1 la variabile gfQMove, | ||
+ | che determina il cambio pagina nel terminale, e anche la var gfRun in modo che al ciclo | ||
+ | successivo non si entri piú in questo ramo dell' | ||
+ | terminale non sia piú in pagina di presentazione. Poi si deve sempre impostare tmLogo | ||
+ | finché gfRun é a 1, in modo da essere pronti nel caso in cui si faccia il Restart dell' | ||
+ | e si spenga il terminale. (Nota: non é possibile impostare una variabile TIMER da QPaint, per | ||
+ | questo lo abbiamo fatto qui). | ||
+ | |||
+ | Vediamo ora come il terminale gestisce queste variabili. Le condizioni che si verificano sono: | ||
+ | gfQMove = 0 quando il terminale si trova nella pagina " | ||
+ | si trova in un' | ||
+ | CPU é stata reinizializzata) si vuole che il terminale si riporti alla pagina " | ||
+ | timeout e si ricominci. | ||
+ | |||
+ | Nella pagina " | ||
+ | |{{software: | ||
+ | |{{software: | ||
+ | |{{software: | ||
+ | All' | ||
+ | il timeout e l' | ||
+ | terminale alla pagina successiva. Quando invece si entra nella pagina " | ||
+ | valori di gfQMove e gfRun, in modo da verificare lo scadere del timeout e poter far scattare | ||
+ | il cambio pagina con il cambio di valore di gfQMove. Infine l' | ||
+ | gfTerminale sempre a 1 quando ci si trova nella pagina iniziale; questo dá il segnale all' | ||
+ | QCL che il terminale é OK e si puó far partire il timeout. Nella pagina di lavoro, e in | ||
+ | tutte le pagine da cui si vuole uscire per tornare alla pagina " | ||
+ | restart della CPU, occorre verificare il cambio valore della variabile gfQMove e associare un | ||
+ | salto pagina alla pagina " | ||
+ | pagina di logo con il tasto PgUp basta soprascrivere la pressione del tasto PGUP non | ||
+ | associando alcuna azione. Cosí l' | ||
+ | o ad ogni restart della CPU. | ||
+ | |{{software: | ||
+ | Vediamo ora il comportamento in alcune condizioni: | ||
+ | * Accensione del sistema Qmove prima del terminale. In questo caso il task rimane in attesa | ||
+ | dell' | ||
+ | scadere dei 5 sec. la variabile gfRun viene impostata e l' | ||
+ | essere eseguita. | ||
+ | * Accensione del terminale prima del sistema Qmove. In questo caso il terminale non | ||
+ | potendo comunicare con il sistema, continua a tentare la connessione. Non appena il | ||
+ | sistema viene acceso il terminale trovando la connessione attiva esegue la scrittura della | ||
+ | variabile gfTerminale e poi il funzionamento rimane quello descritto precedentemente. | ||
+ | * Durante il normale funzionamento il sistema viene spento e riacceso. In questo caso il | ||
+ | terminale torna nella pagina di presentazione perché la variabile gfQMove si trova ad | ||
+ | assumere il valore zero. Poi il comportamento rimane il medesimo. | ||
+ | * Durante il normale funzionamento il terminale viene spento e riacceso. Alla riaccensione | ||
+ | del terminale la variabile gfRun viene posta a zero interrompendo ogni operazione nell' | ||
+ | (o segnalando all' | ||
+ | terminale si porta nella pagina di funzionamento. | ||
+ | |||
+ | ==== - Animazione ==== | ||
+ | |||
+ | === - Animazione utilizzando VALSTRING e VALUE === | ||
+ | |||
+ | Con questo esempio vediamo come realizzare una semplice animazione, sfruttando gli | ||
+ | oggetti VALSTRING e VALUE (con Array a Byte) e nuovi font creati appositamente, | ||
+ | a partire da copie dei file bitmap contenenti i font di sistema esistenti. Inoltre sfrutteremo | ||
+ | alcune immagini bitmap create ad hoc. L' | ||
+ | in dettaglio uno per uno. Ció che si vuole ottenere é un semplice sinottico, che | ||
+ | visualizza il funzionamento di 2 pompe che, alternativamente, | ||
+ | di raccolta. L' | ||
+ | liquido attraverso le tubazioni, l' | ||
+ | subito come risulta l' | ||
+ | |{{software: | ||
+ | |{{software: | ||
+ | |{{software: | ||
+ | La realizzazione dell' | ||
+ | mentre in QPaint c'é soltanto la gestione dei tasti F1, F2 e F3, insieme, ovviamente, all' | ||
+ | dei vari oggetti sia statici che dinamici che compongono questa pagina. | ||
+ | |||
+ | Vediamo ora come appare la pagina nel progetto QPaint, indicando quali oggetti sono stati | ||
+ | utilizzati per creare l' | ||
+ | si vede in fase di esecuzione! | ||
+ | |{{software: | ||
+ | Per ottenere un' | ||
+ | |||
+ | **Pompa:** é stato utilizzato un oggetto Valstring che, si ricorda, é un oggetto dinamico che ha | ||
+ | la possibilitá di visualizzare stringhe di testo diverse in funzione del valore posseduto dalla | ||
+ | variabile collegata all' | ||
+ | Rispettivamente le variabili associate ai due oggetti ValString rappresentanti le pompe si | ||
+ | chiamano gfPump01ON e gfPump02ON, sono di tipo Flag e dovranno essere definite nell? | ||
+ | QCL. Per ottenere il movimento della pompa si associano 2 caratteri diversi ai 2 | ||
+ | valori che decidiamo potrá assumere la variabile collegata e in fase di esecuzione si assegnano | ||
+ | alternativamete questi due valori. Come si vede peró questi 2 caratteri sono in realtá due | ||
+ | simboli grafici. Come fare per ottenere ció ? Occorre definire un proprio font personalizzato, | ||
+ | dove al posto dei soliti caratteri alfanumerici di tastiera possiamo sostituire dei disegni, | ||
+ | come appunto in questo caso. La posizione in cui saranno introdotti nel font, determinerá | ||
+ | quale carattere della tastiera premere affinché siano visualizzati.\\ | ||
+ | Vediamo intanto la finestra delle proprietá dell' | ||
+ | identico per la pompa 2 a parte la variabile collegata), con il carattere per il valore 0 | ||
+ | e per il valore 1.\\ | ||
+ | Durante l' | ||
+ | alternando il valore tra 0 e 1 della variabile gfPump01ON, si visualizzano alternativamente i | ||
+ | due " | ||
+ | |{{software: | ||
+ | Come detto sopra, per far sí che al posto di un carattere appaia un simbolo grafico, occorre | ||
+ | usare un font personalizzato, | ||
+ | caratteri. Per la pompa 1 sono stati " | ||
+ | 2 i caratteri " | ||
+ | partiamo da un file bitmap. Utilizziamo la copia di uno di quelli che si trovano nella directory | ||
+ | Fonts di QPaint30, e scegliamo "QEM System Large Font.bmp" | ||
+ | di dimensione 24 x 27 pixel. Se volessimo utilizzare un altro bitmap, con dimensione dei | ||
+ | caratteri diversa e magari di nostra ideazione, possiamo farlo a patto di suddividere il | ||
+ | bitmap in 14 righe e 16 colonne, perché questo é il formato richiesto dalla funzione di | ||
+ | menú " | ||
+ | rappresenta un carattere. Inoltre dobbiamo ricordarci che il bitmap deve essere | ||
+ | monocromatico (bianco e nero). Ad esempio, se volessimo costruire un font con caratteri | ||
+ | di dimensione 12 x 15 pixel dovremmo creare un bitmap di larghezza 12*16 (n. colonne) = | ||
+ | 192 e di altezza 15 x 14 (n. righe) = 210. | ||
+ | |||
+ | Il bitmap rappresentante i Large Font, che utilizzeremo per creare i caratteri visti sopra | ||
+ | appare cosí: | ||
+ | |{{software: | ||
+ | C'é infine da dire che i caratteri sono disposti nel bitmap in ordine di codice, a partire dal | ||
+ | codice 32 che corrisponde allo spazio bianco, fino al codice 255 che corrisponde a ÿ. Questo | ||
+ | codice ci sará utile in seguito. Creiamo il nostro font personalizzato partendo da questo | ||
+ | bitmap. Ne facciamo una copia e lo chiamiamo "Icon Font.bmp"; | ||
+ | al posto dei caratteri !, #, $ e % i nostri nuovi simboli. Il bitmap alla fine apparirá cosí: | ||
+ | |{{software: | ||
+ | Abbiamo anche aggiunto due simboli che ci serviranno in seguito per il deviatore della | ||
+ | tubazione. Una volta creato il bitmap occorre includerlo nel progetto QPaint tramite la | ||
+ | funzione " | ||
+ | |{{software: | ||
+ | Nella casella " | ||
+ | nuovo Font. Il tasto a destra " | ||
+ | Windows. Nella casella " | ||
+ | font e che apparirá sempre in questo progetto nella lista dei font disponibili. Una volta | ||
+ | scelto OK viene fatta la conversione e da questo momento in poi ogni volta che apriremo la | ||
+ | finestra "Font Properties", | ||
+ | QPaint. " | ||
+ | dimensione del font e lo spacing impostato.\\ | ||
+ | Ritornando alla finestra " | ||
+ | il font scelto per la stringa é proprio il nostro " | ||
+ | il carattere di tastiera " | ||
+ | |||
+ | **Tubazione in mandata delle pompe:** per ottenere l' | ||
+ | nel visualizzare il fluido che si sposta, utilizziamo invece un oggetto Value, con una | ||
+ | variabile Array byte con proprietá Alpha Mode attiva. Questo ci permette di visualizzare una | ||
+ | stringa di caratteri variabile durante l' | ||
+ | anche un solo carattere. Trattandosi di una var array, il valore del singolo elemento rappresenta | ||
+ | il carattere che sará visualizzato. Ad esempio il valore 32 visualizzerá uno spazio, il | ||
+ | valore 48 il carattere " | ||
+ | font, partendo dal bitmap "QEM System Small Font.bmp" | ||
+ | vista sopra. Il bitmap del nuovo font sará questo (é stato ingrandito per maggiore chiarezza): | ||
+ | |{{software: | ||
+ | Si vede che i primi caratteri sono stati sostituiti da quelli che ci serviranno per realizzare | ||
+ | l' | ||
+ | 32 a 37 compresi. Creiamo il nuovo font, partendo da questo bitmap, nel modo giá visto e lo | ||
+ | chiamiamo " | ||
+ | 8x9s0" | ||
+ | |{{software: | ||
+ | Per visualizzare la tubazione, come giá detto, si crea un oggetto Value, e lo si collega ad una | ||
+ | variabile QCL di tipo Array Byte (in questo caso abFlx1) e si imposta la proprietá Alpha Mode. | ||
+ | Il font prescelto é " | ||
+ | Per la tubazione in uscita dalla pompa 2 si userá in maniera analoga un altro oggetto Value | ||
+ | legato alla variabile abFlx2 dell' | ||
+ | dal codice task QCL, che analizzeremo tra breve. Infine anche la tubazione orizzontale | ||
+ | che confluisce nel serbatoio é fatta nello stesso modo, utilizzando la variabile abFlx3. | ||
+ | |||
+ | **Deviatore: | ||
+ | rappresentare un raccordo che colleghi la pompa che sta funzionando alla tubazione verticale. | ||
+ | In questo caso si ottiene con un oggetto Value, con la modalitá Alpha Mode, di dimensione | ||
+ | 1 e che é collegato alla variabile QCL abDev, che é un Array Byte. Il font utilizzato é " | ||
+ | e i valori che assegnati alla variabile abDev saranno 39 per la pompa 1 e 38 per la pompa 2. | ||
+ | Questi visualizzeranno I due " | ||
+ | le due posizioni del deviatore. | ||
+ | |||
+ | **Tubazione verticale: | ||
+ | ValString, disposti uno sull' | ||
+ | tipo array a byte che si chiama abTuboV. Il font usato é " | ||
+ | carattere "tubo vuoto" (codice 34) mentre il valore 1 rappresenta il carattere "tubo pieno" | ||
+ | (codice 35). La scelta di utilizzare un array deriva dal fatto che facilita la gestione dell' | ||
+ | da parte del codice task QCL. In tutto si tratta di 7 oggetti ValString; per il primo | ||
+ | oggetto, il piú in basso nel disegno, si associa un carattere " | ||
+ | in modo da visualizzare la situazione di impianto in Stop. | ||
+ | |||
+ | Con questo abbiamo creato e impostato tutti gli oggetti responsabili dell' | ||
+ | ora come usare eventi ed azioni per dare il via all' | ||
+ | lo start alla pompa1 e posizionare il deviatore, F2 per dare lo start alla pompa 2 e posizionare | ||
+ | il deviatore, F3 per fermare l' | ||
+ | |{{software: | ||
+ | |{{software: | ||
+ | |{{software: | ||
+ | Come si vede vengono impostate 3 variabili QCL per lo Start delle 2 pompe e per lo Stop | ||
+ | dell' | ||
+ | |||
+ | Innanzitutto occorre definire le variabili necessarie nel file .CNF | ||
+ | <code QCL> | ||
+ | ; | ||
+ | ; Definizione Variabili GLOBAL | ||
+ | ; | ||
+ | GLOBAL | ||
+ | ... | ||
+ | ... | ||
+ | gfPump01ON F ; | ||
+ | gfPump02ON F ; | ||
+ | gfStart01 F ;Pompa 1 in funzione | ||
+ | gfStart02 F ;Pompa 2 in funzione | ||
+ | gfStop F ;Stop impianto | ||
+ | gbStep B ;Var ausiliaria per cicli FOR | ||
+ | glSecondi L ;Var per temporizzazione | ||
+ | ... | ||
+ | ... | ||
+ | |||
+ | ; | ||
+ | ; Definizione Variabili GLOBAL | ||
+ | ; | ||
+ | ARRGBL | ||
+ | .... | ||
+ | .... | ||
+ | |||
+ | abDev B 5 ;Deviatore | ||
+ | abFlx1 B 10 ;Tubo in mandata pompa 1 | ||
+ | abFlx2 B 10 ;Tubo in mandata pompa 2 | ||
+ | abFlx3 B 10 ;Tubo collettore serbatoio | ||
+ | abTuboV B 10 ;Tubo verticale | ||
+ | .... | ||
+ | .... | ||
+ | |||
+ | ; | ||
+ | ; Definizione Variabili TIMER | ||
+ | ; | ||
+ | TIMER | ||
+ | ... | ||
+ | ... | ||
+ | tmSecondi | ||
+ | ... | ||
+ | ... | ||
+ | </ | ||
+ | Sono stati usati degli array di dimensione maggiore a quella utilizzata dagli oggetti QPaint; | ||
+ | questo non provoca alcuna conseguenza nel loro uso. Nel task vengono anche utilizzate | ||
+ | due variabili (tmSecondi e glSecondi) per realizzare un contatore dei secondi di esecuzione | ||
+ | dell' | ||
+ | |||
+ | Nel task .MOD avremo invece: | ||
+ | <code QCL> | ||
+ | ..... | ||
+ | ;ANIMAZIONE POMPA 1 | ||
+ | IF (gfStart01 AND (abDev[1] EQ 39)) ;se la pompa1 é ON e " | ||
+ | ;il deviatore | ||
+ | gfPump02ON = 0 | ||
+ | gfPump01ON = glSecondi%2 | ||
+ | ;imposta il valore di gfPump01ON a 0 e | ||
+ | ;1, con ciclo di 1 secondo. Questo | ||
+ | ;porta al refresh dell' | ||
+ | ;ValString rappresentante la pompa1, | ||
+ | ;ogni volta con 2 caratteri diversi. | ||
+ | ; questo ciclo fa in modo che gli array | ||
+ | ; | ||
+ | ;valori corrispondenti a caratteri | ||
+ | ;"tubo vuoto" | ||
+ | FOR (gbStep = 1, gbStep LE 10, 1) | ||
+ | abFlx1[gbStep] = 32 ; | ||
+ | abFlx2[gbStep] = 32 ; | ||
+ | abFlx3[gbStep] = 32 ; | ||
+ | abTuboV[gbStep] = 0 ; | ||
+ | NEXT | ||
+ | abFlx1[1+glSecondi%5] = 33 | ||
+ | ;imposta quale elemento dell' | ||
+ | abFlx3[5-glSecondi%5] = 33 | ||
+ | ;imposta quale elemento dell' | ||
+ | abTuboV[1+glSecondi%8] = 1 | ||
+ | ;imposta quale elemento dell' | ||
+ | abFlx2[1] = 36 | ||
+ | ;imposta la visualizzazione della valvola nella parte di tubazione: | ||
+ | |||
+ | ENDIF | ||
+ | ; GESTIONE DI UN CONTASECONDI | ||
+ | IF tmSecondi ;Timer da 1 Sec. terminato ? | ||
+ | tmSecondi = 1000 ;Reload timer | ||
+ | IF glSecondi LT 59 ;Controllo secondi | ||
+ | glSecondi = glSecondi + 1 ;Incremento secondi | ||
+ | ELSE | ||
+ | glSecondi = 0 | ||
+ | ENDIF | ||
+ | ENDIF | ||
+ | ..... | ||
+ | </ | ||
+ | Per simulare lo scorrere del liquido nella tubazione occorre impostare in maniera sequenziale | ||
+ | e ciclica, in questo caso ogni secondo, un elemento diverso dell' | ||
+ | il carattere "tubo pieno", | ||
+ | Quindi prima si effettua un ciclo FOR, che serve per " | ||
+ | impostare il solo elemento che contiene il carattere di "tubo pieno" | ||
+ | 1+glSecondi%5 usata come indice di abFlx1, ad esempio, ad ogni secondo si incrementa di 1 | ||
+ | il valore dell' | ||
+ | visualizzato e questo fa sí che una volta che il fluido é arrivato alla destra del tubo, non | ||
+ | riparta subito da sinistra, ma attenda un altro secondo. Questo rende migliore l' | ||
+ | Dato che il fluido di questo tratto di tubo deve andare da sinistra verso destra, l' | ||
+ | dell' | ||
+ | fluido deve viaggiare da destra verso sinistra e quindi l' | ||
+ | ecco che per abTuboV la sequenza di aggiornamento sará: 5, 4, 3, 2, 1. Anche in questo caso | ||
+ | l' | ||
+ | qui occorre avere un ciclo di lunghezza 8, dato che il tubo é composto da 7 oggetti | ||
+ | ValString. Si noti che non si imposta il codice del carattere, ma il valore che la variabile deve | ||
+ | assumere; 0 = tubo vuoto, 1 = tubo pieno. L'uso dell' | ||
+ | l' | ||
+ | pompa 2 e non utilizzato, si imposta il codice 36 che corrisponde appunto al carattere | ||
+ | " | ||
+ | |||
+ | Analogamente per il funzionamento della pompa2. | ||
+ | <code QCL> | ||
+ | ;ANIMAZIONE POMPA 2 | ||
+ | IF (gfStart02 AND (abDev[1] EQ 38)) | ||
+ | ;se la pompa2 é ON e " | ||
+ | | ||
+ | | ||
+ | ;Animazione pompa2: alternativamente imposta il valore di gfPump02ON a | ||
+ | ;0 e 1, con ciclo di 1 secondo. Questo porta al refresh dell' | ||
+ | ;ValString rappresentante la pompa2, ogni volta con i 2 caratteri | ||
+ | ;diversi. | ||
+ | ;questo ciclo fa in modo che gli array rappresentanti le tubazioni | ||
+ | ;assumano valori corrispondenti a caratteri "tubo vuoto" | ||
+ | |||
+ | FOR (gbStep = 1, gbStep LE 10, 1) | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | NEXT | ||
+ | | ||
+ | | ||
+ | ;imposta quale elemento dell' | ||
+ | ;"tubo pieno" nella tubazione pompa2 | ||
+ | | ||
+ | ;imposta quale elemento dell' | ||
+ | ;"tubo pieno" nella tubazione serbatoio | ||
+ | | ||
+ | ;imposta quale elemento dell' | ||
+ | ;"tubo pieno" nella tubazione verticale | ||
+ | | ||
+ | ;imposta la visualizzazione della valvola nella parte di tubazione | ||
+ | ;pompa1 (va nell' | ||
+ | ENDIF | ||
+ | |||
+ | |||
+ | Infine quando l' | ||
+ | |||
+ | ; STOP IMPIANTO | ||
+ | IF (gfStop) | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | FOR (gbStep = 1, gbStep LE 10, 1) | ||
+ | abFlx1[gbStep] = 32 | ||
+ | abFlx2[gbStep] = 32 | ||
+ | abFlx3[gbStep] = 32 | ||
+ | abTuboV[1+glSecondi%8] = 0 | ||
+ | NEXT | ||
+ | |||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | ENDIF | ||
+ | </ | ||
+ | |||
+ | === - Animazione utilizzando VALIMAGE === | ||
+ | |||
+ | È stato inserito un nuovo oggetto di disegno chiamato ValImage. Tramite ValImage è possibile | ||
+ | realizzare animazioni in modo piú semplice che in passato. L' | ||
+ | l' | ||
+ | >Image Manager per visualizzare un set di immagini associate ad un range di valori di una | ||
+ | variabile presente in QMove o nel terminale stesso.\\ | ||
+ | Differentemente dalla precedente tecnica dei font utente con immagini + oggetto | ||
+ | ValString, ValImage è piú veloce da implementare, | ||
+ | piú semplice da gestire.\\ | ||
+ | Con questo esempio vediamo come realizzare una semplice animazione, sfruttando l' | ||
+ | VALIMAGE. Inoltre sfrutteremo alcune immagini bitmap create ad hoc. L' | ||
+ | richiede alcuni passi, che descriveremo in dettaglio uno per uno. Ció che si vuole ottenere | ||
+ | é la semplice visualizzazione di un indicatore analogico la cui lancetta si porta a vari | ||
+ | valori a seconda del valore assunto dalla variabile associata.\\ | ||
+ | Ecco come risulta l' | ||
+ | |{{software: | ||
+ | Vediamo ora come operare per creare l' | ||
+ | **GAUSS:** Inanzitutto bisogna creare un numero di immagini bitmap pari al numero di valori | ||
+ | che si ritiene di visualizzare , nel nostro caso sono state create solo 5 immagini , quindi | ||
+ | solo 5 valori della variabile di riferimento avranno il loro valore visualizzato ,per tutti i valori | ||
+ | intermedi non si visualizzerà alcuna immagine.\\ | ||
+ | In realtà le immagini sarebbero 101 per visualizzare lo scorrere dell' | ||
+ | scala ma per motivi di spazio non sono state riportate tutte. | ||
+ | |{{software: | ||
+ | |||
+ | Nel campo di introduzione "First image" viene inserito il valore della variabile corrispondente | ||
+ | alla prima immagine che si vuole visualizzare.\\ | ||
+ | Se il valore è zero come nel nostro caso quando la variabile di riferimento assume il valore | ||
+ | zero viene visualizzata la figura legata a quel valore.\\ | ||
+ | Nel campo di introduzione "Max Images" | ||
+ | visualizzare , naturalmente questo valore risulterà essere uguale o minore al numero di | ||
+ | immagini bitmap generate per la visualizzazione.\\ | ||
+ | Se infatti le immagini sono in numero minore rispetto al massimo valore assumibile dalla | ||
+ | variabile di riferimento , al posto dell' | ||
+ | immagine. | ||
+ | |||
+ | Agendo sui tastini " | ||
+ | introduzione "Image Number" | ||
+ | di riferimento ai quali viene associata un' | ||
+ | Per associare l' | ||
+ | agire sul tasto freccia presente in corrispondenza del campo introduzione "Image | ||
+ | Name" e selezionare il nome della variabile che interessa.\\ | ||
+ | L' | ||
+ | Naturalmente le immagini dovranno essere state create con apposita procedura in GRAFIC | ||
+ | Image Manager come descritto a pagina 50 del presente manuale. | ||
+ | |{{software: | ||
+ | Nella zona della finestra definita " | ||
+ | visualizzata e le coordinate della posizione dell' | ||
+ | |||
+ | Per selezionare la variabile di riferimento basterà cliccare con il mouse su " | ||
+ | |{{software: | ||
+ | Entrati nella pagina presente su " | ||
+ | visualizzazione delle immagini o per l' | ||
+ | Una volta generato il programma sul terminale non resta che gestire la variabile nel progetto | ||
+ | QView per poter visualizzare la lancetta dell' | ||
+ | |||
+ | ==== - Backup e Restore ==== | ||
+ | |||
+ | In questo esempio vediamo come realizzare una semplice pagina in cui poter eseguire le | ||
+ | operazioni di Backup e Restore dei dati ritentivi di QMove. L' | ||
+ | l' | ||
+ | fino a che non si effettua un nuovo download dell' | ||
+ | un errore. Questo viene segnalato dal terminale con il lampeggio del led " | ||
+ | l' | ||
+ | poter fare il Restore dopo un download deriva dal fatto che potremmo aver scaricato un | ||
+ | applicativo diverso da quello cui si riferiscono i dati salvati con il Backup, che quindi potrebbero | ||
+ | non avere piú senso con la nuova situazione. Detto questo costruiamo una semplice | ||
+ | pagina, con alcuni oggetti VALUE che servono per verificare la correttezza delle operazioni: | ||
+ | |{{software: | ||
+ | I 3 oggetti VALUE hanno tutti la proprietá " | ||
+ | modificare da terminale; esaminiamo in particolare solo la variabile asARRS[2], perché si | ||
+ | tratta di un array di tipo Single, in cui vediamo come visualizzare variabili con decimali. | ||
+ | |{{software: | ||
+ | Come si vede é stato impostato il valore relativo al decimal point che rappresenta il numero | ||
+ | di cifre decimali che vogliamo visualizzare per la variabile. E' stato abilitato il segno e, come | ||
+ | giá anticipato, la possibilitá di poter modificare il valore. Ora dobbiamo associare opportunamente | ||
+ | le azioni di Backup e Restore a due tasti funzione.\\ | ||
+ | La cosa é veramente semplice: nella finestra relativa agli eventi locali creiamo degli eventi | ||
+ | OnPress sui tasti F1 e F2 ed associamo rispettivamente le azioni di Backup e Restore. Il | ||
+ | passaggio alla fase di Data Entry con il tasto INS é invece di default e quindi non serve alcun | ||
+ | evento collegato a tale tasto. | ||
+ | |{{software: | ||
+ | |{{software: | ||
+ | Una volta scaricata l' | ||
+ | INS per entrare in Data Entry; il valore relativo a swWord lampeggia e ció indica che | ||
+ | é possibile modificarlo. Con il tasto ENTER si conferma l' | ||
+ | successivo, e cosí fino all' | ||
+ | maniera ciclica. E' possibile spostarsi tra i vari campi di inserimento anche con i tasti cursore: | ||
+ | in questo caso peró i dati inseriti vengono persi. Una volta completata l' | ||
+ | variabili, possiamo salvarli effettuando un Backup, con il tasto F1. Quindi li modifichiamo | ||
+ | nuovamente, impostando dei nuovi valori; a questo punto premendo il tasto F2, viene eseguito | ||
+ | il Restore e i dati ritorneranno quelli impostati in precedenza.\\ | ||
+ | Sia per l' | ||
+ | viene segnalata dal terminale con il lampeggio del led " | ||
+ | ripetitivamente " | ||
+ | status" | ||
+ | Il comando di restore trova la sua giusta utilitá in caso di sprogrammazione dati nel sistema | ||
+ | QMove. In questa situazione infatti il comando restore permette di ripristinare il normale | ||
+ | funzionamento del sistema (se ovviamente era stato fatto preventivamente il bakup). |