Riflettendo su cosa inserire nella GUI per l'MLAII sono arrivato a delle
conclusioni che prima di mettere in pratica vorrei sentire il vostro parere.
La GUI è divisa in due parti principali, sul lato destro il pannello comandi
e sul lato sinistro lo schermo visualizzazione dati, realizzato interamente
in C ANSI e Open GL, applicato come finestra sul form della GUI.
Lo schermo dati è totalmente definibile tramite un array di parametri, non è
un oggetto C++, in particolare si possono definire a piacere l'aspetto della
griglia, degli assi e delle traccie, il numero di traccie massime è 256
rapprensentabili sia nella stessa schermata che a scorrimento definendo a
piacere la spaziatura tra le traccie, le scale possono essere sia fisse che
scorrevoli.
Come comandi, almeno in prima versione, prevederei un selettore di modalità
(DSO, Analizzatore, Spettro) in base al quale viene modificato
opportunamente il pannello comandi, per il modo Analizzatore metterei tre
sezioni distinte, quella del trigger, quella della time base e quella per la
selezione numero traccie e tipo di segnali.
Per la sezione traccie metterei un selettore a quattro posizioni per
impostare 8,16,24 o 32 canali, un selettore tipo ingressi, TTL o CMOS (da
prevedersi sulla scheda d'input), comandi per lo zoom assi, controllo
spaziatura/dimensione tracce.
Tramite un menù di configurazione permetterei di scegliere quali tracce
visualizzare e in che ordine tra i canali attivi.
Per il trigger metterei un selettore per il canale da usare, un selettore
per il fronte (salita o discesa), una time base per il postrigger, il numero
di sample da leggere (max 32000 a 8 canali o 8000 a 32 canali) e il
programmatore per il trigger condizionale (stato di più ingressi), selettore
per modalità continua, multishot o oneshot.
La modalità multishot, presente solo in strumenti di alto livello, pochi la
conoscono, permette di fare una serie di acquisizioni che vengono poste in
diverse pagine di memoria, esempio leggo 8 canali per 256
sample ogni volta che si presenta una certa condizione di trigger, in questo
modo posso fare 128 letture consecutive distinte, è importante che ogni
insieme di sample possieda un header contente il riferimento temporale (in
base alla time base usata) in cui è stato registrato in modo da poter
ricostruire anche la timeline reale.
La modilità multishot è comodissima per analizzare linee dati, sia seriali
che parallele, dove per motivi di tempo tra i vari pacchetti l'analizzatore
andrebbe out of memory senza riuscire a registrare tutti gli eventi che ci
interessano, p.e. analisi dei dati presenti su un bus I2C o una seriale
asicnrona.
Per la sezione time base dovrebbe bastare una selettore per scegliere la
velocità di sampling, visualizzatori digitali vari da utilizzarsi per le
misure tramite cursori, i comandi di posizionamento dei cursori (manopole
multigiro dovrebbero essere l'idale).
Ciao
Marco d'Ambrosio