Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Proteus 9.4
Proteus 9.4
4: Nuove funzionalità
La versione 9.4 di Proteus presenta numerose varianti rispetto alle
versioni precedenti di Proteus, rimanendo comunque compatibile
con i programmi sviluppati con tutte le versioni precedenti.
Le funzionalità aggiunte riguardano sia l’ edit del codice sorgente
che il compositor grafico delle finestre del progetto.
Word Wrap:
Premendo il bottone D è possibile passare dalla visualizzazione a linea intera a quella con a capo se
fuori schermo (word wrap) e viceversa.
Per creare una nuova pagina grafica selezionare l’ opzione nel menu principale: File->New
File Page e
scegliere un nome per la pagina. In assenza di una scelta llee pagine verranno nominate
successivamente Page1, Page2 …
Verranno creati contemporaneamente per la nuova pagina i files pageX.v10 (form grafico), pageX.c
e pageX.h
Dopo aver selezionato un oggetto cliccandovi con il tasto sinistro del mouse è
possibile aggiungere altri oggetti alla selezione cliccandovi con il tasto sinistro
del mouse tenendo premuto il tasto Ctrl.
Tutti gli oggetti selezionati saranno evidenziati con un bordo rosso mentre l’
oggetto MASTER sarà evidenziato da un doppio bordo rosso. rosso
L’ oggetto MASTER non è necessariamente il primo oggetto che abbiamo
selezionato, bensì l’ oggetto con il numero più ba
basso in ordine di creazione.
creazione
Un’
n’ altra maniera per selezionare più oggetti è quella di
selezionare un primo oggetto e quindi aprire il menu
Group.. Per selezionare oggetti dello stesso gruppo (dentro
lo stesso pannello) oppure dello stesso tipo (label, edit,
edi
button …) oppure oggetti con lo stesso font (escluso
bitmaps e panels, che non hanno un proprio font) o altro.
Ad esempio, nel disegno della pagina riportato sopra, gli oggetti invisibili sono:
label2
checkbox2
il bitmap di warning più a destra
il pannello verde più a sinistra
il bitmap di warning
rning in alto nel pannello a sinistra
label5
la creazione di uno schedario (o multipanel) è una procedura complicata, per cui è stata creata una
funzione semplificata per creare uno schedario con un singolo click:
Questa procedura può essere usata anche per aggiungere nuove pagine ad uno schedario
esistente, partendo dall secondo punto della procedura. In questo caso però non dobbiamo
assolutamente cambiare il nome della variabile.
Proteus dispone di un numero ridotto di oggetti, mediante i quali è comunque possibile comporre
progetti con pagine grafiche di qualunque tipo. Oltre a questi oggetti è possibile utilizzare dei
componenti, ovvero delle strutture complesse
complessei, costituite da più oggetti posti su un pannello di base.
Proteus ha circa un centinaio di componenti predefiniti
predefiniti,, che si trovano nella directory
C:\COMMONS\C\OBJECTS,
OBJECTS, ed il programmatore può crearne altri usando una procedura assistita
che può creare la base di un nuovo componente (il pannello di base panel1) mediante un semplice
click del mouse.
// ==========================================================
char WindowName[]="Component_Pippo";
int WindowWidth=320;
int WindowHeight=240;
int refresh_time=10;
extern int Lang;
// ==========================================================
#include <mswindows.h>
#include <math.h>
#include "icone.h"
#define REAL float
#define STRING char *
// ==========================================================
#define PROVA
#define huge
#include "object.c"
void mainloop(void)
{
_doubleclick=1;
_tastiera=1;
_touch=1;
v_color(4,4);
v_cls();
go();
}
// ==========================================================
///Component
//TByte
Friend char val;
#include "object.h"
#include "..\commons\hdcopy.h"
// -------------------------------+
// form Pippo
// -------------------------------+
void form_Pippo(void)
{
object(TPage,(void **)&Pippo,Pippo_Body,0,0,&Null,None,1,0,"Pippo");
}
void go(void) {gopage(Pippo);}
///EndComponent
void Event(onentry)()
{
///Test
// ================ hardcopy ============================
HardCopy("c:\\commons\\c\\objects\\catalog\\");
// ======================================================
///EndTest
}
// -------------------------------
// methods:
// -------------------------------
Inserendo il componente in un progetto Proteus, nell' object inspector al campo var sarà assegnato
un nome di variabile casuale ma unico, con ' iniziale minuscola. Possiamo cambiare tale nome
con un altro di nostra scelta, purché non coincida con il nome di una variabile già presente nel
progetto. Tale nome coinciderà con la variabile Friend char val del componente.
Possiamo aggiungere
altre variabili Friend al
componente. Tali
variabili saranno
accessibili dal progetto
che usa il componente
tramite il puntatore della
struttura del componente.
Il puntatore della struttura
del componente ha il
nome della variabile var
ma con l' iniziale
maiuscola.
Ad esempio, per il componente visto sopra, inserito in un progetto Proteus, alla variabile var del
componente è stata assegnato il nome pi1 (che possiamo cambiare con un altro nome).
La variabile val del componente coincide con la variabile pi1 del progetto, ovvero alla variabile
Pi1->val.
La struttura contiene tutte le variabili definite come Friend e i puntatori a tutti gli oggetti
presenti nel componente.
Pi1->label1->color=RED;
Pi1->label2->caption="abcd"
ecc..
Nel source del componente potremo usare i valori dei campi caption e tag del progetto.
Possiamo in ogni momento modificare un componente caricandolo e compilandolo come un
normale progetto Proteus. Anche in questo caso dobbiamo partire da una nuova istanza di Proteus.
Inserendo un nuovo oggetto su una pagina del progetto, ad esso sarà associata inizialmente una
variable secondo i seguenti criteri:
Una variabile di tipo NULL significa “nessuna variabile associata”, nel qual caso è possibile ad
esempio premere un bottone senza che tutti gli altri con lo stesso nome di variabile ne risentano.
È compito del programmatore assegnare il nome ed il tipo di variabile qualora serva.
Ad un bottone con tipo di variabile NULL è possibile comunque associare metodi on_click,
on_mousedown ecc. La sola differenza è che non c’ è una variabile associata ( e quindiI il valore
della variabile VAR1 non viene cambiato).
Gli oggetti di tipo Page (l’ oggetto 0), panel e label non hanno mai bisogno di un nome o tipo di
variabile.
Gli oggetti di tipo Bitmap ne hanno bisogno solo nel caso di multi-bitmaps, per selezionare l’
immagine da visualizzare, nel qual caso il programmatore deve specificare la variabile associata.
Gli oggetti di tipo Edit e Checkbox debbono comunque essere associati ad una variabile, altrimenti
non hanno senso, per cui viene loro temporaneamente assegnato il tipo NULL e la variabile di
default VAR1, non essendo possibile stabilire se in tutto il progetto ed eventuali librerie incluse,
altre variabili di default (MB1, MB2 …) siano già usate per altri scopi..
È compito del programmatore in questo caso quello di assegnare all’ oggetto il giusto nome e
tipo di variabile.
Nel caso in cui il nome della variabile di un oggetto venga cambiato da VAR1 ad un altro nome, il
tipo dell’ oggetto passa automaticamente da NULL a char, e potrà essere cambiato nel tipo voluto,
salvo il caso di assegnazione automatica del tipo di variabile:
Se il nome della variabile è del tipo MBx alla variabile sarà assegnato automaticamente il tipo char.
Se il nome della variabile è del tipo MWx alla variabile sarà assegnato automaticamente il tipo short int.
Se il nome della variabile è del tipo MDx alla variabile sarà assegnato automaticamente il tipo long int.
Se il nome della variabile è del tipo MFx alla variabile sarà assegnato automaticamente il tipo float.
Questa procedura funziona correttamente solo se tutti i flies .c e .h del progetto sono correttamente
giustificati a livello di parentesi (vedi funzione justify)
Con un doppio click con il cursore posizionato su una parentesi (aperta o chiusa, tonda, quadra o
graffa),il cursore si sposta sulla corrispondente parentesi.
Se è premuto Ctrl il cursore evidenzia la parentesi, altrimenti il assume la forma di default (barra
verticale).
Se la parentesi corrispondente non entra nella finestra di edit, la finestra si sposta fino a mostrare l’
occorrenza della parentesi associata: in prima linea se l’ occorrenza è più in alto nel listato del
source (ad es. se la parentesi selezionata è una parentesi chiusa), altrimenti in ultima linea.
Ad esempio, se viene fatto Ctrl + doubleclick sulla parentesi graffa di inizio del codice di una
funzione il cui intero codice non rientra nella finestra di edit, la finestra si sposterà fino alla fine del
codice della funzione e il cursore sarà sulla parenesi graffa di fine della funzione.
Con un successivo click o dlubleclick il cursore torna alla posizione iniziale.
Traduzione delle lingue
Qualora sia prevista la traduzione dei testi di un progetto in lingue diverse, è consigliato di usare per
i testi da tradurre il font ARIAL MULTICODE, che possiede i caratteri necessari per gli alfabeti
Greco, Cirillico, Lingue nordiche, Turco ed altre lingue.
Esistono però delle lingue che non possono essere tradotte con lettere tratte da un generatore di
caratteri, perché le scritte vanno da destra a sinistra o perché i caratteri sono troppo numerosi.
Fanno parte di questo gruppo:
Cinese
Giapponese
Coreano
Arabo
Ebraico
Altre lingue …
In questo caso le scritte vengono sostituite con dei bitmaps.
Le scritte possono però essere uguali ma con fonts di dimensioni diverse.
Nelle versioni precedenti di Proteus in tal caso occorreva diversificare il testo delle scritte.
In Proteus 9.4 questo non è più necessario:
Se infatti sarà attivato il check di All Alphabets sulla barra principale, le scritte con testo uguale
ma con dimensioni diverse saranno diversificate automaticamente.
Questo comporta un maggior numero di linee nel testo da tradurre, quindi tale opzione deve essere
attivata solo quando sia previsto l’ uso di lingue che richiedano di essere tradotte con bitmaps (vedi
sopra).
Può capitare durante la stesura di un programma di voler escludere una parte di codice sorgente
ponendolo tra /* e */ , temporaneamente o definitivamente.
In tal caso se la parte di codice esclusa contiene dei commenti tra /* e */ si ha una nidificazione di
commenti, non ammessa dai compilatori C e C++.
Se si fa un justify del codice vengono automaticamente eliminati i commenti nidificati, sostituendo
/* con |* e */ con *|. In tal modo il codice risulta corretto.
Qualora reintegrassimo il codice precedentemente escluso, facendo un successivo justify del
codice, vengono ripristinati automaticamente i commenti tra /* e */ prima esclusi e adesso non più
nidificati.
Specifiche della piattaforma Proteus
Proteus è uno strumento RAD IDE creato per sviluppare applicazioni che possano
essere eseguite su supporti hardware e sistemi operativi diversi.
Gli strumenti RAD, o strumenti di sviluppo rapido di applicazioni, aumentano la velocità di
sviluppo delle applicazioni abilitando la funzionalità punta e clicca o trascina e rilascia, in alcuni
casi, abbastanza semplice da consentire a un utente senza esperienza di codifica di utilizzare e
modificare un applicazione creata da un'app esistente, personalizzandola in base alle proprie
esigenze, o partendo da zero, potendo anche utilizzare componenti predefiniti.
Gli strumenti IDE o gli strumenti dell'ambiente di sviluppo integrato, come Microsoft Visual Studio
o Eclipse, sono progettati principalmente per migliorare la produttività degli sviluppatori di
software fornendo un'unica piattaforma per scrivere, modificare, compilare, creare e distribuire
codice. Gli sviluppatori possono utilizzare un IDE per riunire/ottenere l'accesso a più strumenti di
sviluppo software come gestione dei requisiti, controllo della versione, rilevamento dei problemi,
test in un unico programma/interfaccia utente.
(*) Creato per funzionare con il Syel T-BOX, funziona su ogni scheda ARM-Linux con desktop
Debian o Ubuntu con server grafico XWin (non è supportato Wayland) oppure senza desktop,
purché sia accessibile il framebuffer. Testato con Raspberry PI2,PI3 e PI4 con sistema operativo
Debian e Ubuntu 16.04. Testato anche su schede Olimex con CPU Allwinner A20.
Riconoscimento e selezione automatica fra tastiera-mouse e touch-screen.
(**) Creato per funzionare sui PC industriali Syel, funziona su ogni computer con sistema operativo
Windows XP o successivo.
Riconoscimento e selezione automatica fra tastiera-mouse e touch-screen.
Limiti di Proteus:
numero massimo di pagine di un progetto 1000
numero massimo di bitmaps di un progetto 2000
numero massimo di oggetti per pagina 1024
larghezza massima di una pagina 1024 pix.
altezza massima di una pagina 1024 pix.
profondità di colore 8 bit/16 bit RGB 565/24 bit RGB 888
numero massimo di fonts TTF diversi 32
numero massimo di lingue da tradurre 64
dimensione massima di codice C/C++ di un programma 10 MBytes
dimensione massima di dati dei bitmaps no limits
dimensione massima di dati dei fonts TTF no limits
dimensione massima dell' eseguibile 1 GByte