Indice
Informazioni Generali
Ringraziamenti
Cose Da Fare e problemi Noti
Menu
Area Comandi
Hot Keys
Tabs
Area Terminale
Status Bar
Programmazione
Modo Comandi
Risposte Automatiche
BeanShell
Aggiornamenti
Installazione
Informazioni Generali
SerialAnalyzer
è un programma nato principalmente per monitorare i dati
scambiati sulla linea seriale. Una prima evoluzione ha permesso anche
l'invio di dati come un normale terminale. Infine il prodotto si
è evoluto fino a comprendere la connessione TCP/IP con anche
la funzionalità di Server.
Le caratteristiche principali sono:
- Programma sviluppato in Java che, con differenti librerie
per la connessione seriale,
ne permette l'utilizzo con diversi sistemi operativi (Windows, Linux e MacOsX);
- Connessione di tipo "Client" con connessione Seriale, Tcp/IP, UDP e MULTICAST con opzione bind;
- Visualizzazione e impostazione segnali di controllo della
linea seriale;
- Varie modalità di visualizzazione dei dati
ricevuti/trasmessi:
- ASCII visualizza dati con codifica Ascii. In questa
modalità eventuali caratteri di controllo (tipo CR o LF)
vengono
interpretati visualmente secondo le loro caratterstiche (ad esempio il
CR manda a capo);
- HEX visualizza dati con codifica esadecimale;
- DECIMAL visualizza dati con codifica decimale;
- CTRL -->HEX i dati compresi tra 0x20 (spazio) e
0x7E (~) sono visualizzati con codifica Ascii, gli altri dati sono
visualizzati con codifica esadecimale;
- ASCII & HEX i dati sono visualizzati sia con
codifica esadecimale che Ascii (i dati minori di 0x20 e maggiori di
0x7E sono visualizzati come uno spazio);
- Dalla versione 2.7.1 è possibile sostituire i caratteri di controllo (da 0x00 a 0x1F) con il nome usato nella tabella ASCII. Ad esempio il carattere 0x02 può essere visualizzato come STX;
- Differente colorazione per i dati trasmessi e quelli ricevuti;
- Riconoscimento, opzionale, di due diversi "frame header" in
modo da facilitare l'interpretazione dei dati. Il messaggio di "Nuovo
frame" è visualizzato con un diverso colore, inoltre si
può scegliere se visualizzare anche la data e ora o la
differenza in ms dal frame precedente o il tempo assoluto in ms;
- Risposta automatica ad un frame identificato con un frame
definibile dall'utente che può includere anche parte dei
dati ricevuti. Dalla versione 2.7.0 è possibile definire tante risposte automatiche riconoscendo i dati ricevuti;
- Dodici campi dove impostare sequenze di dati da trasmettere
semplicemente premendo il relativo tasto di funzione. Dalla versione 2.7.0 è possibile associare una sequenza ad ogni tasto abilitando la Modalità Comandi (Command Mode);
- Salvataggio su file di tutto quello che viene ricevuto e trasmesso;
- Ricerca testuale nell'area terminale;
- Copia di dati dall'area termiale nella ClipBoard;
- Trasmissione dei dati contenuti nella ClipBoard;
- Blocco scorrimento visualizzazione;
- Funzionalità come Server Tcp/Ip o Udp, dall'elenco
dei client connessi è possibile escludere specifiche connessioni tramite check box.
Per il server Tcp/Ip sono previste tre differenti modalità:
- TERMINAL lo stesso Server funge anche da terminale (la
connessione client viene disabilitata) e i dati trasmessi vengono inviati a tutti i client connessi;
- ECHO, come il modo TERMINAL solo che i dati ricevuti da un client vengono inviati anche a tutti gli altri client connessi;
- BRIDGE, come il modo ECHO con in più la possibilità di effettuare anche una connessione client.
In questo modo è possibile effettuare un bridge tra un server Tcp/Ip e una connessione seriale.
Per il server Udp è previsto solo il modo TERMINAL che funziona come per il server Tcp/Ip;
- Tabella codifica Ascii integrata;
- Tutte le impostazioni sono salvate su un file di properties;
- Modalità programmazione per facilitare operazioni ripetitive;
- Interfacciamento con BeanShell che permette di creare dei veri e propri programmi
in Java da eseguire da "HotKeys" o da apposito menu.
Di seguito alcune tipiche applicazioni:
- Calcolo del checksum del frame dati da inviare;
- Verifica del calcolo del checksum dei dati ricevuti;
- Programma per l'upload/download di dati;
- Connessione client Tcp/Ip in bridge con una connessione seriale;
- Opzione "Line Mode" per inviare i dati solo dopo aver premuto l'Enter;
Ringraziamenti
Si ringrazia Mario Gambino (mario.gambino-sr77@poste.it)
per i consigli, il debug
e per il tool di installazione da lui configurato.
Cose da Fare e Problemi Noti
Cose da fare:
- implementare una struttura a plug-in;
- poter cambiare i parametri della connessione dagli script in BeanShell;
Problemi Noti:
-
Dalla versione 2.6.0 è stata introdotta la possibilità di selezionare
il Look&Feel da un elenco che riporta i Look&Feel installati nel sistema.
L'elenco dei Look&Feel installati viene fatto analizzando tutti i file
"jar" presenti nella cartella "JAVA_HOME/lib/ext" e questo,
su computer particolarmente vecchi, può richiedere molto tempo
all'avvio del SerialAnalyzer.
Se avete la necessità di velocizzare l'avvio potete cancellare la libreria
"JcLafChooser.jar" presente nella cartella "lib" dove è
installato il SerialAnalyzer.
Togliendo questa libreria non viene più effettuata la ricerca dei
Look&Feel e si potrà scegliere solo tra i Look&Feel automaticamente
riconosciuti dal Java.
-
premedo il tasto "F10" da tastiera si apre il menu "File".
Credo sia un problema del Java;
Menu
Funzionalità
dei menu:
- FILE:
- LOAD per caricare il file di configurazione;
- LOAD LAST PROPS per caricare l'ultimo file di properties utilizzato nella precedente sessione;
- SAVE per salvare il file di configurazione;
- NEW INSTANCE per avviare una nuova istanza del SerialAnalyzer;
- EXIT esce dal programma;
- EDIT:
- FIND per effettuare la ricerca testuale sui dati visualizzati (abilitato solo a connessione chiusa);
- HIGHLIGHT per effettuare la ricerca testuale sui dati visualizzati evidenziandoli tutti e scegliendo i colori (abilitato solo a connessione chiusa);
- COPY per copiare nella ClipBoard la selezione precedentemente effettuati dei dati visualizzati;
- SELECT ALL & COPY per selezionare e copiare nella ClipBoard tutti i dati visualizzati;
- PASTE per inviare i dati contenuti nella ClipBoard;
- LINE MODE per inviare i dati solo dopo aver premuto l'Enter;
- COMMAND:
- COMMAND MODE check box per abilitare il Modo Comandi;
- STOP SCROLL check box per interrompere lo scorrimento dell'area dati;
- Open/Close CLIENT pulsante per aprire/chiudere la connessione di tipo client;
- Start/Stop SERVER pulsante per avviare/fermare il Server Tcp/Ip;
- Start/Stop LOG pulsante per avviare/fermare la registrazione su file dei dati monitorati. Quando si avvia il log viene chiesto il nome del file dove salvare il log stesso;
- CLEAR pulsante per cancellare i dati visualizzati;
- SEND BREAK per inviare il segnale di BREAK sulla linea seriale;
- PROGRAM:
- START per avviare il programma;
- STOP per arrestare il programma;
- OPEN per caricare il file di programma;
- SAVE per salvare il file di programma;
- COMPILE per compilare il file di programma;
- TOOLS:
- ASCII TABLE visualizza la tabella di codifica Ascii;
- STD OUT/ERR WINDOW apre una finestra dove viene rediretto sia
lo Standard Output che lo Standard Error (utile per lo sviluppo/debug degli
script in BeanShell);
- STOP SCRIPT per arrestare l'esecuzione di uno script in BeanShell;
- MENU PERSONALIZZATO vengono automaticamente creati dei menu personalizzati
con i nomi delle cartelle e dei file contenuti per richiamare gli script
in BeanShell;
- SELECT PROGRAM SCRIPT per selezionare uno script in BeanShell da usare in
programmazione. Una volta selezionato nella clipboard di sistema viene incollata
la stringa che permette di richiamare lo script da HotKeys o da Programmazione;
- REFRESH SCRIPT MENU per aggiornare l'elenco degli scrip senza riavviare il programma;
- VIEW:
-
Borders, visualizza i bordi dei pulsanti;
-
Buttons, visualizza i pulsanti delle connessioni, del log e della pulizia area terminale;
-
Hot Keys, visualizza i pulsanti degli "Hot Keys";
-
Status Bar, visualizza la barra di stato con i parametri di connessione e il nome del file;
-
Tx Data, abilita la visualizzazione nell'area terminale dei dati trasmessi,
opzione utile nel caso di connessione con dispositivi che effettuano
automaticamente l'echo dei dati ricevuti;
-
Text Dimension per selezionare la dimensione del font usato nell'area terminale (parametro salvato nel file "ini" globale);
-
TX Text Color per selezionare il colore del testo dei dati trasmessi (parametro salvato nel file "ini" globale);
-
RX Text Color per selezionare il colore del testo dei dati ricevuti (parametro salvato nel file "ini" globale);
-
System Text Color per selezionare il colore del testo dei messaggi di sistema (parametro salvato nel file "ini" globale);
-
Background Text Color per selezionare il colore dello sfondo dell'area terminale (parametro salvato nel file "ini" globale);
-
External HotKeys Panel per visualizzare un pannello, staccato dal frame principale, con i 12 pulsanti relativi agli HotKeys. Ogni pulsante prende il nome del commento;
-
External Modem Status Panel per visualizzare il pannello con lo stato del modem non più nei tab ma staccato dal frame principale;
-
Always On Top per visualizzare il programma sempre in primo piano;
-
Look & Feel per selezionare il LookAndFeel da utilizzare (parametro salvato nel file "ini" globale);
-
Control Dimension per disabilitare il controllo della dimensione minima del frame principale;
- HELP:
- HELP IT visualizza questo file in lingua italiana;
- HELP IT visualizza questo file in lingua inglese;
- SYSTEM INFO visualizza una serie di parametri di sistema;
- ABOUT visualizza data e versione del rilascio e la licenza;
Area Comandi
Funzionalità
dell'area comandi:
- STOP SCROLL check box per interrompere lo scorrimento
dell'area dati;
- COMMAND MODE check box per abilitare il Modo Comandi;
- Open/Close CLIENT pulsante per aprire/chiudere la
connessione di tipo client;
- Start/Stop SERVER pulsante per avviare/fermare il Server
Tcp/Ip;
- Start/Stop LOG pulsante per avviare/fermare la
registrazione su file dei dati monitorati. Quando si avvia il log viene chiesto il nome del file dove salvare il log stesso;
- CLEAR pulsante per cancellare i dati visualizzati;
Hot Keys
In questa sezione ci
sono i dodici
tasti di funzione richiamabili da tastiera e da mouse per l'invio di
stringhe predefinite. Ad ogni tasto è associato anche un
commento visualizzato automaticamente lasciando, per alcuni secondi, il
cursore del mouse sul relativo tasto di funzione.
È possibile richiamare uno script in BeanShell inserendo la stringa "bsh(cartella/nomefile)".
Tabs
In questa sezione ci
sono i Tabs per selezionare varie schermate:
- Terminal: Area terminale dove vengono visualizzati i dati
trasmessi in colore "Magenta", i dati ricevuti in colore "Blu" e i
messaggi di nuovo frame in colore "Rosso";
- ModemStatus: in questa finestra è possibile
vedere lo
stato dei segnali di controllo della linea seriale e forzare RTS e DTR
come si vuole. Questi dati non sono salvati nel file di properties;
- ServerStatus: in questa finestra è possibile vedere l'elenco dei client
connessi al server.
Nella modalità tcp/ip selezionando la check box "Exclude" il client selezionato
viene escluso dallo scambio dati pur mantenendo attiva la connessione.
Se almeno una connessione risulta "esclusa", ogni nuova connessione viene
automaticamente esclusa dallo scambio dati.
Nella modalità udp selezionando la check box "Exclude" alla successiva trasmissione
la connessione selezionata viene cancellata dall'elenco dei client connessi.
- Hot-Keys 1: (tasti di funzione da 1 a 6): Si può
inserire una stringa che poi viene trasmessa con il relativo tasto di
funzione. È possibile inserire direttamente caratteri Ascii
"A",
caratteri in formato decimale "<065>" e caratteri in
formato
esadecimale "[41]".
- I caratteri in formato decimale sono racchiusi tra il
simbolo
di minore "<" e di maggiore ">" e il numero è
sempre da
digitare con tre caratteri;
- I caratteri in formato esadecimale sono racchiusi tra il
simbolo di parentesi quadra aperta "[" e di parentesi quadra chiusa "]"
e il numero è sempre da digitare con due caratteri;
- Hot-Keys 2: (tasti di funzione da 7 a 12): come Hot-Keys 1;
- Setup: Finestra di configurazione paramentri di conessione
e visualizzazione:
- CLIENT impostazione parametri di connessione tipo client
seriale Tcp/Ip;
- SERVER impostazione parametri modalità server;
- VIEW MODE impostazione paramentri modalità di
visualizzazione e definizione/abilitazione delle due stringhe che
caratterizzano il "Frame Header" di un protocollo. La stringa
è
definibile solo in caratteri decimali o esadecimali (con la stessa
modalità per definire gli Hot-Keys) e la lunghezza massima
è di 10 caratteri;
- Il riconoscimento del "Frame Header" funziona solamente sui dati
ricevuti. Per i dati trasmessi è stato messa una abilitazione dedicata e
viene automaticamente considerato "New Frame" ogni volta che si effettua la
trasmissione da "HotKeys" o da "Programmazione". I dati inviati tramite i singoli
tasti dall'area "Terminale" non concorrono al riconoscimento del "New Frame";
- La conversione dei caratteri di controllo serve per convertire un carattere in un nome ed è possibile per i caratteri compresi tra 0x00 e 0x1F.
Il nome è lo stesso presente nella colonna "note" della tabella Ascii e non è modificabile.
Nel campo "CTRL char:" inserire i caratteri (nel formato decimale o esadecimale usato nel Serial Analyzer) che si vogliono convertire in nomi.
Ad esempio, inserendo [02][03] quando si riceve il carattere 0x02 viene visualizzato il nome STX e quando si riceve il carattere 0x03 viene visualizzato il nome ETX.
- AUTO ANSWER per impostare i parametri per la risposta
automatica. Occorre definire la stringa per riconoscere la fine del
frame del protocollo (come la stringa per riconoscere il "frame
header") ed è possibile indicare anche quanti caratteri
considerare dopo il riconoscimento della fine del frame prima di
inviare la risposta automatica. Poi occorre definire anche la stringa
di risposta che può essere composta come gli "Hot-Keys" con
in
più la possibilità di rispondere con caratteri
ricevuti
nel frame (ad esempio l'indirizzo di un dispositivo) indicando la
posizione del carattere nel frame racchiusa tra parentesi graffe {}. Ad
esempio se vogliamo inserire nella risposta il 2' byte ricevuto
dovremmo scrivere {001}. Viene scritto 001 in quanto si inizia a
contare da zero. Attenzione, per funzionare correttamente la risposta
automatica è anche necessario settare i parametri per il
riconoscimento del frame header;
- PROGRAM CODE è l'editor per la programmazione;
Area Terminale
In questa sezione
vengono visualizzati tutti i dati ricevuti e quelli trasmessi
tramite HotKeys/Programmazione oppure digitati direttamente in questa
area. Inoltre è possibile
inviare direttamente dalla tastiera anche tutti i caratteri Ascii con
codice da 0 a 31 semplicemente
combinandoli con il tasto "control" (come identificati nella tabella
Ascii). Ad esempio, per inviare il
carattere con codice 3 (che equivale al CTRL-C) premere il tasto "CTRL"
+ il tasto "c".
Dalla versione 2.7.0 è stata introdotta l'opzione "Modo Comandi" (Command Mode) che permette di associare ad ogni tasto una sequenza di dati da inviare.
Ovviamente, quando questa opzione è attiva, quanto descritto precedentemente, per i soli dati trasmessi, non è più valido.
Status Bar
Nella Status Bar sono visualizzate le seguenti informazioni:
- led che indica se è in esecuzione un "Programma" o uno "Script" in BeanSheel;
- stringa che riassume i dati della connessione di tipo Client;
- nome del file di configurazione caricato, se visualizzato in colore rosso significa che è stato modificato e non è ancora stato salvato;
Programmazione
Dalla versione 1.7.0
è stata
introdotta la possibilità di creare un programma in modo da
eseguire automaticamente delle operazioni ripetitive.
Dopo aver scritto le righe di codice è necessario eseguire
la "compilazione", sia per verificare eventuali errori sia per rendere
effettive le modifiche apportate al programma.
Quando viene caricato il
programma da file, questo viene compilato automaticamente.
Per la programmazione ci sono alcune regole da rispettare:
- Possono essere presenti delle righe vuote o con commenti che devono
iniziare con "//";
- Le righe che iniziano con il carattere ">" si riferiscono alla associazione tasto=comando del "Modo Comandi" introdotto dalla versione 2.7.0;
- Le righe che iniziano con il testo ">aa=" si riferiscono alle "risposte automatiche" (AutoAnswer) introdotte dalla versione 2.7.0;
- Tutte le righe contenenti codice devono iniziare con un
numero di
linea (crescente) composto da un minimo di una cifra fino ad un massimo
di 5 cifre;
- Dopo il numero di riga occorre mettere il carattere ":" per
separare l'istruzione;
- È ammessa una sola istruzione per linea;
- Ogni istruzione deve essere chiusa dai caratteri ");" e
successivamente non sono ammessi commenti. Di conseguenza nel campo
parametri non è possibile mettere la sequenza ");" che
eventualmente deve essere sostituita con la codifica decimale e/o
esadecimale;
- I campi che compongono le istruzioni devono essere separati
dal carattere ",";
- Sono disponibili dieci variabili numeriche intere (quindi 4
byte
con segno) sulle quali è possibile effettuare somme,
confronti e
invio. Queste variabili sono identificate, nelle istruzioni che ne
prevedono l'uso, da un numero da 1 a 10;
- add(x,y); somma alla variabile numerica una costante.
- x = numero variabile 1-10;
- y = dato numerico costante da sommare;
- enableSendDisplay(x); per abilitare (x = true) o
disabilitare
(x = false) la visualizzazione dei dati trasmessi. Di default la
visualizzazione è abilitata. Questa istruzione è
stata
introdotta in quanto la visualizzazione (quando ci sono molti dati)
impegna molto la CPU e in alcuni casi questo può disturbare;
- enableRxDisplay(x); per abilitare (x = true) o
disabilitare
(x = false) la visualizzazione dei dati ricevuti. Di default la
visualizzazione è abilitata. Questa istruzione è
stata
introdotta in quanto la visualizzazione (quando ci sono molti dati)
impegna molto la CPU e in alcuni casi questo può disturbare;
- enableStep(x); per abilitare (x = true) o disabilitare (x = false) l'esecuzione
passo passo del programma;
- end(); identifica la fine del programma e deve sempre
essere
presente. Può essere utile durante le prove per terminare il
programma prima della vera fine;
- goto(x); salta alla linea x;
- if (x,y,z); confronta una variabile numerica x con una
costante
z applicando il confronto y. Se il confronto è vero la riga
successiva viene eseguita, altrimenti la riga successiva non viene
eseguita.
- x = numero variabile 1-10;
- y = tipo di confronto <, >, <=,
>=, ==, != ;
- z = dato numerico costante da confrontare;
- ifVar(x,y,z); confronta una variabile numerica x con
un'altra
variabile numerica z applicando il confronto y. Se il confronto
è vero la riga successiva viene eseguita, altrimenti la riga
successiva non viene eseguita;
- x = numero variabile 1-10;
- y = tipo di confronto <, >, <=,
>=, ==, != ;
- z = numero variabile 1-10;
- set(x,y); setta una variabile numerica x con una costante
y.
- x = numero variabile 1-10;
- y = dato numerico costante settato nella variabile;
- send(stringa); invia la stringa. Come per gli HotKeys
è
possibile inviare anche dati in formato decimale <001>
e/o
esadecimale [02] insieme ai normali caratteri ascii;
È possibile richiamare uno script in BeanShell inserendo la stringa "bsh(cartella/nomefile)".
- sendHK(x); invia la stringa memorizzata nell'HotKeys x;
- sendK(x); invia la stringa associata al tasto "x" del "Modo Comandi".
Dalla versione 2.7.0
- sendVar(x,y,z); invia il dato della variabile numerica x
nella
modalità y con il numero di byte/caratteri z. In pratica
vengono
offerte varie modalità per convertire il dato della
variabile in
modo da rendere flessibile la gestione e l'invio della variabile.
- x = numero variabile 1-10;
- y = modalità di conversione:
- ASCII il dato numerico viene inviato come una
stringa. Ad esempio se la variabile vale 65 la stringa inviata
è "65";
- ASCII_HEX il dato numerico viene convertito in
esadecimale
e inviato come una stringa. Ad esempio se la variabile vale 65 la
stringa inviata è "41"; altro esempio, se la variabile vale
2748
la stringa inviata è "ABC";
- BIN il dato numerico viene inviato a byte come vero
dato
numerico. Ad esempio se la variabile vale 2 il dato inviato
è 2
binario;
- Z = numero di byte/caratteri inviati. Questo parametro
permette, a seconda della modalità, di determinare la
lunghezza
del dato inviato:
- Modo ASCII determina di quanti caratteri è
composta la stringa:
- 0 = numero di caratteri automatico;
- 1-10 = determina il numero di caratteri esatto,
eventuali
caratteri mancanti vengono inviati come '0', i caratteri in
più
non vengono inviati;
- modo ASCII_HEX determina quanti byte saranno inviati:
- 0 = numero di byte automatico;
- 1-4 = determina il numero di byte esatto, i byte in
più non vengono inviati;
- modo BIN determina quanti byte saranno inviati:
- 1-4 = determina il numero di byte esatto;
- setSleep(x); imposta il tempo in mS (da 10 a 60000)
dello
sleep del thread. Di default ogni istruzione viene eseguita ogni 100mS;
- sub(x,y); sottrae alla variabile numerica una costante:
- x = numero variabile 1-10;
- y = dato numerico costante da sottrarre;
- wait(x); attende x mS (da 10 a 60000);
- waitOk(messaggio); visualizza una message dialog con il
messaggio dell'utente che può sceglire se continuare o
annullare
il programma;
Esempio di programmazione (invia 10 volte la stringa "ciao x"
sostituendo a x il numero sequenziale da 1 a 10):
// setta la variabile 1 a 1
10:set(1,1);
// invia la stringa ciao
20:send(ciao );
// invia il dato convertito in ASCII della variabile 1
30:sendVar(1,ASCII,0);
// invia un CR LF in esadecimale
35:send([0D][0A]);
// incrementa la variabile 1
40:add(1,1);
// confronta se la variabile 1 è <= a 10
50:if(1,<=,10);
// confronto vero, torna alla linea 20
60:goto(20);
// confronto falso, fine programma
100:end();
Modo Comandi
Dalla versione 2.7.0 del SerialAnalyzer è stata aggiunta la modalità Modo Comandi (Command Mode) selezionabile tramite la check box CmdMode o dal menu Command.
La modalità di default è Modo Terminale (Terminal Mode), in questa modalità premendo un tasto viene visualizzato e inviato alla connessione aperta il carattere relativo al tasto premuto.
Selezionando la modalità Modo Comandi (Command Mode) è possibile associare ad ogni tasto una sequenza di caratteri da inviare alla connessione aperta come avviene per la definizione dei tasti di funzione Hot Keys. In questo modo è possibile espandere quasi all'infinito un elenco di sequenze richiamabili con la semplice pressione di un tasto.
La definizione della associazione tasto=comando si effettua nell'editor di Programmazione con le stesse regole di base utilizzate per la programmazione, compilazione compresa.
Le differenze sono le seguenti:
- è possibile avere un unico file di programma contenente sia il programma che le definizioni del Modo Comandi che le definizioni delle Risposte Automatiche;
- la riga deve iniziare con il carattere ">" seguito dalla lettera che identifica il tasto e dal carattere "=";
- dopo il carattere "=" si definisce la sequenza di caratteri associata al tasto precedentemente definito;
- i caratteri ammessi per l'associazione al tasto sono tutti quelli presenti sulla tastiera compreso la distinzione tra maiuscolo e minuscolo. Non sono ammessi i tasti di funzione, i tasti di spostamento cursore, le sequenze con il CTRL o ALT;
- la definizione delle associazioni deve terminare con l'istruzione end(); come per la normale programmazione;
- dopo la modifica delle definizioni occorre compilare il programma. Quando il Modo Comandi è abilitato la compilazione viene effettuata automaticamente selezionando il TAB Terminal;
Esempio file di programma con la definizione di due comandi associati ai tasti a e A:
>a=sequenza associata al tasto a minuscolo
>A=sequenza associata al tasto A maiuscolo
100:end();
Risposte Automatiche
Dalla versione 2.7.0 del SerialAnalyzer è stata aggiunta la possibilità di inviare automaticamente delle risposte analizzando i dati ricevuti. In realtà questa funzione era già presente (ed è rimasta) ma non permetteva la flessibilità introdotta ora.
In pratica si deve definire esattamente la sequenza di dati da riconoscere e la relativa risposta.
Queste definizioni si effettuano nell'editor di Programmazione con le stesse regole di base utilizzate per la programmazione, compilazione compresa e utilizzano anche la definizione dei tasti del Modo Comandi.
Le differenze sono le seguenti:
- è possibile avere un unico file di programma contenente sia il programma che le definizioni del Modo Comandi che le definizioni delle Risposte Automatiche;
- la riga deve iniziare con i caratteri ">aa=" seguito dalla lettera che identifica il tasto associato alla risposta e dal carattere "=";
- dopo il carattere "=" si definisce la sequenza di caratteri da riconoscere per poter inviare la risposta associata al tasto precedentemente definito;
- vedere Modo Comandi per le altre informazioni;
Esempio file di programma con la definizione di due risposte differenti associate ai tasti a e A:
>a=sequenza associata al tasto a minuscolo
>aa=a=ricevuto carattere a, rispondo con sequenza associata al tasto a
>A=sequenza associata al tasto A maiuscolo
>aa=A=ricevuto carattere A, rispondo con sequenza associata al tasto A
100:end();
BeanShell
Dalla versione 2.1.0 del SerialAnalyzer si è gestito
l'interfacciamento con il programma, sempre in Java, BeanShell che permette di
costruire degli script in Java interfacciabili con il SerialAnalyzer in modo
da permettere di integrare funzionalità personalizzate al SerialAnalyzer.
Un esempio molto semplice è il calcolo del checksum. Tutti i protocolli di
comunicazione prevedono un campo con il checksum del frame. Dal SerialAnalyzer
è possibile inserire questo dato, ma va calcolato manualmente e se variamo un
solo byte del frame dobbiamo aggiornare anche il dato del checksum.
Con l'interfacciamento ad uno script in BeanShell è possibile automatizzare questa
operazione in maniera molto semplice.
Per le istruzioni relative all'utilizzo di BeanShell si può consultare il
relativo sito all'indirizzo http://www.beanshell.org/
Durante la fase di sviluppo/debug di uno script in BeanShell, si consiglia di
aprire anche la finestra dove viene rediretto sia lo Standard Output che lo
Standard Error (Menu -> Tools -> StdOut/Err Window) in modo da verificare tutti
gli eventuali messaggi di errore che BeanShell restituisce.
Ora analizziamo l'interfacciamento con il SerialAnalyzer.
Innanzitutto occorre specificare che ci sono due modalità per eseguire uno
script: dal menu "Tools" o da "HotKeys" (si può richiamare anche dal tool di
programmazione integrato nel SerialAnalyzer e lavora come gli HotKeys).
Si è fatta questa distinzione per coprire esigenze diverse.
Nella cartella dove è installato il SerialAnalyzer viene creata una cartella
"bsh" che a sua volta si divide in "menu" e "prog" per differenziare gli script
richiamabili da menu e quelli da programmazione/HotKeys. Da queste cartelle
si devono obbligatoriamente creare delle proprie cartelle per dividere in
categorie i diversi script. Ad esempio si può creare una cartella "Checksum",
sia sotto la cartella "menu" che sotto la cartella "prog", e qui metterci il
file contenente lo scrip il quale deve avere l'estensione "bsh".
Sotto la cartella "menu" può essere creato un solo livello di cartelle, mentre
sotto la cartella "prog" possono essere creati più livelli di cartelle che
ovviamente devono essere scritti quando si richiama lo script.
Le cartelle, e gli script, creati sotto la cartella "menu" vengono
automaticamente visualizzati come voce nel menu "Tools" del SerialAnalyzer (se
si aggiungono nuove cartelle o file occorre riavviare il SerialAnalyzer per
vedere aggiornate le voci del menu).
Io, ad esempio, ho inserito uno script per il calcolo del checksum che legge i
dati che ho precedentemente selezionato dalla finestra "Terminal" e mi
visualizza il risultato in un JOptionPane.
Al contrario delle cartelle e degli script creati sotto la cartella "menu", le
cartelle e gli script creati sotto la cartella "prog" non sono visualizzati nel
menu, ma sono richiamabili solamente da "HotKeys" inserendo la parola chiave
"bsh(cartella/script)". Come "cartella" si intende il primo, o più livelli, dopo
la cartella "prog" (che quindi non va scritta), mentre per "script" si intende
il nome del file dello script senza estensione. Attenzione a rispettare le
lettere maiuscole e minuscole come il nome del file. Per il separatore del file
"/" si può usare indiferentemente "/" o "\", viene poi automaticamente adattato
al sistema operativo utilizzato.
Dalla versione 2.2.0 è possibile chiamare degli script presenti nella stessa
cartella del file di properties.
Gli script devono essere messi in una cartella "SaBsh" dove devono essere presenti
le due solite cartelle "menu" e "prog". Nella cartella "menu", al contrario di quella
presente nella cartella del SerialAnalyzer, non possono essere create altre cartelle,
tutti gli script richiamabili da menu devono essere in questa cartella.
Quando si carica un file di properties da una cartella diversa da quella di avvio
del SerialAnalyzer, il programma automaticamente cerca gli script e, se presenti,
abilita nel menu "Tools" la voce "PropertiesPathScript" che a sua volta conterrà
l'elenco degli script.
Per gli script chiamabili da programmazione/HotKeys si deve mettere il simbolo
"@" prima del nome dello script, ad esempio bsh(@cartella/script);
Attenzione, con il sistema operativo Linux ho notato che se il SerialAnalyzer viene
eseguito da shell con il comando "java -jar SerialAnalyzer.jar" tutto funziona
correttamente e la proprietà di sistema (Java) "user.dir" punta correttamente
alla cartella dove è presente il file "SerialAnalyzer.jar" e quindi il programma
vede correttamente la cartella "bsh" dove sono presenti gli script in BeanSheel.
Se invece il file "SerialAnalyzer.jar" viene eseguito con un doppio click dal
file browser, Konqueror, Nautilus, ecc. ecc., la proprietà di sistema (Java)
"user.dir" punta sempre alla home dell'utente e quindi il programma non trova
la cartella "bsh" e di conseguenza gli script in BeanShell.
Per verificare l'impostazione della proprietà "user.dir" dal SerialAnalyzer
bisogna selezionare la voce "System Info" presente nel menu "Help".
Per facilitare la scelta dello script, nel menu Tools è stata inserita una voce
"Select Program Script" che permette di navigare nella directory "prog" degli
script e di selezionare uno script. Una volta selezionato lo script viene
automaticamente incollato nella Clipboard la stringa per richiamare lo script
selezionato, ad esempio "bsh(Checksum/Crc16)".
Quando viene invocato uno script, il SerialAnalyzer mette a disposizione dei
riferimenti a variabili e dei metodi che ora andremo ad analizzare.
Riferimenti a variabili:
- parent = rappresenta la classe "BeanShellCaller" utilizzata dal
SerialAnalyzer per invocare lo script. Occorre fare riferimento a "parent"
per chiamare tutti i metodi che il SerialAnalyzer mette a disposizione;
- parent.jFrame = rappresenta il riferimento al JFrame del SerialAnalyzer per
utilizzare le GUI nello script (ad esempio per centrare il JOptionPane);
Riferimenti a metodi:
- String getSelectedText() = ritorna in una stringa i dati selezionati nella
finestra "Terminal";
- Vector stringToIntDataVect(String) = ritorna in un vettore di Integer i
dati in binario convertiti dalla stringa di testo ascii con le convenzioni
per rappresentare i dati usate dal SerialAnalyzer ([02] per i dati
esadecimali e <002> per quelli decimali);
- String intToString(int) = ritorna una stringa ascii, nel formato
CTRL -->HEX, del dato int binario;
- Vector getApplicationDataVect() = restituisce un vettore di Integer di dati
in binario messi a disposizione dal SerialAnalyzer. In particolare sono quei
dati inseriti prima della chiamata allo script. Ad esempio se definiamo il
tasto "F1" con la seguente stringa "[02]provabsh(Checksum/8bit)", chiamando
questo metodo dallo script mi verrà restituito, in forma binaria,
"0x02 0x70 0x72 0x6f 0x76 0x61".
- String getApplicationDataString() = restituisce una stringa ascii,
nel formato CTRL -->HEX, dei dati messi a disposizione dal SerialAnalyzer.
In particolare sono quei dati inseriti prima della chiamata allo script.
Ad esempio se definiamo il tasto "F1" con la seguente stringa "[02]provabsh(Checksum/8bit)", chiamando
questo metodo dallo script mi verrà restituita esattamente la stessa stringa
"[02]prova".
Presente dalla versione 2.6.1
- setScriptDataVect(Vector) = serve per restituire al SerialAnalyzer un
vettore di Integer contenente i dati in binario da inviare a seguito della
chiamata allo script da HotKeys. Rifacendosi all'esempio di prima, è stato
invocato lo script per calcolare il checksum, lo script lo calcola e deve
restituire un vettore con i dati originali più il dato del checksum;
- boolean isStopThread() = serve per capire se il SerialAnalyzer richiede di
interrompere il Thread dello script;
- sendData(String) = serve per inviare una stringa di dati ascii, con le
convenzioni per rappresentare i dati usate dal SerialAnalyzer, sul canale
di comunicazione aperto. I dati inviati vengono visualizzati nella finestra
"Terminal";
- sendData(Vector) = serve per inviare un vettore di Integer di dati binari
sul canale di comunicazione aperto. I dati inviati non vengono visualizzati
nella finestra "Terminal";
- enableRxData(boolean) = serve per abilitare la gestione dei dati ricevuti.
Questo comporta che lo script si occupi di leggere (tramite un Thread) i
dati dal pipedInputStream messo a disposizione, altrimenti si rischia il
blocco del SerialAnalyzer;
- enableSendDisp(boolean) = serve per abilitare la visualizzazione dei
dati trasmessi;
- enableRxDisp(boolean) = serve per abilitare la visualizzazione dei
dati ricevuti;
- endScript() = serve per segnalare la fine dello script.
È una chiamata obbligatoria da aggiungere alla fine dello script!
- int getRxData() = serve per leggere eventuali dati ricevuti.
Ritorna -1 in caso di dato non disponibile, altrimenti ritorna il dato.
- clearTerminalArea() = serve per cancellare l'area terminale.
- boolean clientIsOpen() = serve per verificare se la connessione client è aperta.
Ritorna true se è aperta, false se è chiusa.
- boolean clientOpen() = serve per aprire la connessione client.
Ritorna true se è stata aperta, false in caso di errori.
- clientClose() = serve per chiudere la connessione client.
- setLastBshFilePath(String) = permette di memorizzare il path di un file gestito nello script.
Questo può risultare comodo alla successiva esecuzione dello script per indicare al JFileChooser la cartella usata precedentemente. Il dato rimane memorizzato fino alla chiusura del Serial Analyzer.
Presente dalla versione 2.7.0
- String getLastBshFilePath() = restituisce il path precedentemente memorizzato con setLastBshFilePath.
Presente dalla versione 2.7.0
- setLastBshFileName(String) = permette di memorizzare il nome di un file gestito nello script.
Questo può risultare comodo alla successiva esecuzione dello script per indicare al JFileChooser il file usato precedentemente. Il dato rimane memorizzato fino alla chiusura del Serial Analyzer.
Presente dalla versione 2.7.0
- String getLastBshFileName() = restituisce il nome del file precedentemente memorizzato con setLastBshFileName.
Presente dalla versione 2.7.0
Nella cartella bsh sono forniti alcuni esempi di script.
Aggiornamenti
Di seguito vengono
riassunti tutti gli aggiornamenti del SerialAnalyzer:
- Versione 2.7.1 del 04/12/2011:
- Aggiunto opzione per sostituire i caratteri di controllo (da 0x00 a 0x1F) con il nome usato nella tabella ASCII. Ad esempio il carattere 0x02 può essere visualizzato come STX;
- Aggiunto opzione per evidenziare, personalizzando i colori, tutte le sequenze di caratteri corrispondenti alla sequenza di ricerca;
- Modificato font definizione HotKeys e dell'editor di programmazione usando un font monospazio al posto del proporzionale;
- Corretto errore inizializzazione personalizzazione colori. Quando si avviava il Serial Analyzer veniva impostato solo il colore di background;
- Corretto errore gestione server UDP in modo Programmazione;
- Corretto errore gestione server UDP, venivano visualizzati i dati ricevuti dalle connessioni escluse (impostato nel tab Server Status);
- Versione 2.7.0 del 11/04/2011:
-
Aggiunto connessione client di tipo MULTICAST.
-
Aggiunto la possibilità di cambiare il colore dei caratteri dei dati trasmessi, ricevuti e dei messaggi di sistema;
-
Aggiunto la possibilità di cambiare il colore di sfondo dell'area terminale;
-
Aggiunto voce nel menu File per caricare l'ultimo file di properties usato nella precedente sessione;
-
Modificato gestione file di log. Adesso ogni volta che si avvia il log si deve selezionare il file dove salvare il log stesso (viene proposto automaticamente l'ultimo file usato).
Per questo motivo è stato tolto il pulsante "NewLog";
-
Aggiunto la modalità "Modo Comandi". Cliccare sul link per avere una spiegazione;
-
Aggiunto la gestione delle "Risposte Automatiche". Cliccare sul link per avere una spiegazione;
-
Messo a disposizione degli script in BeanShell i seguenti metodi:
- setLastBshFilePath;
- getLastBshFilePath;
- setLastBshFileName;
- getLastBshFileName;
I nuovi metodi vengono spiegati qui;
-
Sostituite le vecchie e non più supportate librerie JavaComm con le librerie RXTX.
Questo permette di utilizzare il Serial Analyzer anche su computer Apple con Max Os X (solo x86 no ppc).
Vedere la sezione Installazione per ulteriori dettagli sui file di questa libreria.
-
Modificato filtro sul tipo di file quando si carica un file di properties o di programma (.sap) non facendo distinzione tra maiuscolo e minuscolo;
-
Modificato la definizione e la gestione del FrameHeader e FrameTail in modo da poter scrivere direttamente in caratteri ASCII (prima bisognava usare la codifica decimale/esadecimale usata nel SerialAnalyzer) e di lunghezza indefinita (prima era limitata a 10 caratteri).
-
Modificato la gestione dei parametri di configurazione in modo da permettere alcuni cambiamenti senza dover ristabilire la connessione client/server;
-
Modificato la gestione dei parametri di configurazione client e server non pemettendo la modifica quando è attiva una connessione;
-
Aggiunto in Programmazione l'istruzione "sendK" per inviare la stringa associata ad un tasto del "Modo Comandi";
-
Corretto errore parametri client: all'avvio con selezionata una connessione seriale si poteva modificare anche l'indirizzo ip e la porta;
-
Corretto errore: all'avvio non veniva impostato il font con la dimensione memorizzata nel file ini;
-
Corretto errore: poteva capitare che all'avvio la dimensione della finestra del programma era più grande di quella di default o addirittura più grande dello schermo stesso bloccando il programma.
L'errore si presentava in presenza di un testo molto lungo assegnato ad un tasto di funzione e salvato nel file di properties di default o in quello indicato dalla riga di comando.
- Versione 2.6.2 del 01/10/2010:
-
Corretto errore nella gestione del led di run nel caso di programma che richiama uno script. Il led rimaneva spento.
-
Corretto errore gestione salvataggio configurazione e programma quando si chiude il Serial Analyzer.
Se si entrava nel dialogo del salvataggio file e si annullava l'operazione il Serial Analyzer si chiudeva.
-
Aggiunto opzione per non interpretare la codifica decimale nei dati inviati. Utile nel caso di dati in formato xml.
-
Aggiunto opzione "Line Mode" per inviare i dati solo dopo aver premuto l'Enter. Utile per inviare i comandi AT al modem, in questo modo è possibile correggere la stringa con il backspace.
Funziona solo per i dati immessi da tastiera.
-
Aggiunto comando per inviare il segnale di "break" sulla linea seriale.
- Versione 2.6.1 del 17/07/2009:
-
Corretto errore nella gestione delle dimensioni minime della finestra
principale.
Questo non permetteva il corretto ridimensionamento quando, ad esempio,
si decideva di non visualizzare più i bordi o la StatusBar.
-
Corretto errore sulla apertura della connessione client da uno script
in BeanShell.
In pratica veniva aperta la connessione ma non venivano gestiti i dati
inviati e ricevuti.
-
Corretto errore nella interpretazione della codifica dati codificati
in decimale e in esadecimale.
Una stringa "<abc>" veniva sempre interpretata come dato codificato
in decimale e la stringa non veniva trasmessa.
Ovviamente la stringa "<065>" viene sempre convertita in "A".
Lo stesso errore era presente anche per la codifica esadecimale, la
stringa "[1K]" non veniva trasmessa.
-
Corretto errore nella finestra "StdOut/Err" che non permetteva
di selezionare e copiare il testo;
-
Aggiunto selezione BaudRate linea seriale 230400, 460800 e 921600
(attenzione, non tutti i sistemi supportano questi BaudRate).
-
Aggiunto visualizzazione messaggi nell'area terminale quando cambia
lo stato dei segnali di controllo del modem.
Questi messaggi sono registrati anche nel file di log.
-
Aggiunto opzione per visualizzare i messaggi di sistema nell'area
terminale (che al momento sono solo i segnali di controllo del modem).
-
Messo a disposizione degli script in BeanShell il metodo
"getApplicationDataString".
Il nuovo metodo viene spiegato qui;
- Versione 2.6.0 del 11/02/2009:
-
Modificato radicalmente la logica della funzione server in modo da
creare facilmente un bridge tra connessioni differenti.
Le nuove caratteristiche vengono spiegate qui;
-
Modificato gestione connessione client tcp/ip per riconoscere quando
il server chiude la connessione;
-
Aggiunto nella StatusBar un led per indicare quando è in esecuzione
un Programma o uno script in BeanShell;
-
Aggiunto nel menu View l'opzione per selezionare il LookAndFeel da
applicare al programma.
La gestione del LookAndFeel è affidata al programma JcLafChooser utilizzato
come libreria. Per aggiungere altri LookAndFeel fare riferimento alle
istruzioni relative al JcLafChooser.
L'informazione del LookAndFeel usato viene salvata in modo da riavviare
il programma con l'ultimo utilizzato;
-
Aggiunto nel menu View la la selezione della dimensione del font utilizzato
nell'area terminale.
Questa informazione viene salvata in modo che anche riavviando il programma
viene usata l'ultima dimensione di font selezionata;
-
Aggiunto un pannello, da affiancare al principale, contenente i dodici
HotKeys con il nome preso dal commento. Il pannello si visualizza attraverso il menu View;
-
Aggiunto nel menu View l'opzione per mantenere il programma sempre in primo piano;
-
Aggiunto al menu View una opzione per disabilitare il controllo automatico
della dimensione minima del frame in modo da poterlo ridurre più di quanto consentito;
-
Aggiunto al menu Tools la voce "Refresh Script Menu" per aggiornare
il menu degli script in BeanShell senza dover riavviare il SerialAnalyzer;
-
Abilitato funzionamento dei tasti di funzione (quindi l'invio dei dati)
quando è selezionato uno dei due tab HotKeys;
-
Aggiunto nella finestra About le informazioni sulla licenza;
-
Modificato gestione dimensioni minime del frame in modo da adattarle
automaticamente al LookAndFeel utilizzato;
-
La gestione della finestra SystemInfo è affidata al programma
JcProperties
utilizzato come libreria;
-
Rifatto completamente tutti i layout in modo da non utilizzare più la libreria layouts.jar;
-
Aggiunto un bordo colorato di rosso a tutte le finestre di impostazione parametri;
-
Aggiunto un bordo colorato di verde alla finestra dello stato del modem e del server;
-
Aggiunto un pannello, da affiancare al principale, contenente lo stato
del modem. Il pannello è lo stesso del tab Modem Status.
La visualizzazione si attiva attraverso il menu View;
-
Modificato gestione "Nuova Istanza" per renderla compatibile anche con Windows Vista;
-
Corretto messaggio di errore visualizzato quando la versione di Java
non e' compatibile. Veniva riportato il nome di un altro programma ... JcRename!;
- Versione 2.5.2 del 16/09/2008:
-
Ottimizzato conversione dati nel formato di visualizzazione selezionato;
-
Corretto errore nel metodo intToString messo a disposizione degli
script in BeanShell.
Il metodo convertiva il dato intero in stringa ascii nella modalità
di visualizzazione selezionata nei parametri del SerialAnalyzer invece
di convertirla sempre nel formato CTRL -->HEX.
Questo errore portava a trasmettere dati non corretti se nelle impostazioni
non era selezionato il formato CTRL -->HEX in quanto
erroneamente convertiti, ad esempio selezionando il formato DECIMALE
0x02 veniva trasmesso come 30 32;
- Versione 2.5.1 del 01/07/2008:
-
Quando si esegue uno script in BeanShell viene verificata se è attiva
l'opzione "AutoAnswer", se è attiva viene chiesto se si vuole disabilitare.
Questo perché la funzione "AutoAnswer" può portare ad alterare il
funzionamento dello script in BeanShell;
-
Quando si chiude l'applicativo o quando si carica un nuovo file di
configurazione/programma oltre alle opzioni di salvare i file è
stata aggiunta l'opzione di "Annulla";
-
Corretto errore nella sezione "Program".
Quando si eseguiva un programma che richiamava uno script in BeanShell,
ad esempio per il calcolo del checksum, si manifestavano i seguenti errori:
-
il cursore non rimaneva nel modo occupato;
-
le istruzioni enableSendDisplay e enableRxDisplay non
funzionavano, i dati venivano sempre visualizzati;
- Versione 2.5.0 del 18/03/2008:
-
Implementato client/server udp.
La dimensione massima di un pacchetto udp è stata fissata in 2048 byte
considerando che a livello mondiale il parametro Maximum Transmission Unit (MTU)
è fissato a 1500 bytes. Per informazioni vedere http://it.wikipedia.org/wiki/Unit%C3%A0_massima_di_trasmissione
Nella tabella "Server Status" vengono registrate tutte le connessioni udp,
i pacchetti udp vengono inviati a tutti i client che si sono connessi. Per
eliminare un client selezionare la check box "Exclude" e alla prima trasmissione
questo client viene eliminato dall'elenco.
-
Rifatto completamente la gestione del riconoscimento del Frame Header.
Questo per risolvere i seguenti problemi:
-
Corretto errore nel riconoscimento del Frame Header dove non era possibile riconoscere un
frame composto da caratteri Ascii visualizzabili (quindi da 0x20 a 0x7E
compresi) e da caratteri non visualizzabili (quindi > di 0x20 e < 0x7E).
In realtà il riconoscimento funzionava, ma poi la scritta
==== NEW FRAME === non compare nella posizione giusta;
-
Corretto errore nella scrittura del file di log quando erano
da riconoscere due differenti Frame Header con differente
lunghezza che causava una eccezione.
-
Corretto dimensione della finestra delle proprietà di sistema;
-
Corretto errore gestione tastiera quando si scrive direttamente nell'area
terminale dove non venivano accettati i caratteri che sulla tastiera
sono da digitare in combinazione con il tasto "Alt Gr"
(come ad esempio @ e # nella tastiera Italiana).
-
Corretto errore che si manifesta quando viene aggiornata
la Java Virtual Machine.
Nelle precedenti versioni, il Serial Analyzer non si avviava e
non venivano segnalati errori. Adesso viene visualizzato un messaggio
di errore che indica come risolvere il problema.
Questo accade perché quando si installa il Serial Analyzer vengono
installate le librerie per la gestione delle linee seriali nella
cartella della Java Virtual Machine utilizzata in quel momento,
installando una nuova Java Virtual Machine queste librerie non
ci sono.
Per risolvere il problema occorre avviare il programma di installazione
del Serial Analyzer e selezionare di installare solo le
"System Library".
Nelle precedenti versioni, per verificare se il problema è lo stesso,
si può avviare il SerialAnalyzer da shell/dos con il comando
"java -jar SerialAnalyzer.jar" se viene visualizzata la seguente eccezione:
"Exception in thread "main" java.lang.NoClassDefFoundError: javax/comm/CommPortIdentifier"
il problema è lo stesso.
- All'avvio aggiunto controllo sulla versione del Java, nel caso di
versioni non supportate (< 1.5) viene visualizzato un messaggio
di errore;
- Versione 2.4.3 del 12/02/2008:
-
Aggiunto menu "View" con i comandi per scegliere quali componenti
visualizzare e se visualizzare i dati trasmessi.
Di default tutti le voci sono abilitate e di conseguenza tutti i componenti sono visualizzati.
Se si vogliono ridurre le dimensioni minime della finestra del programma
si può decidere di disabilitare la visualizzazione di qualche componente.
Unica eccezione, se la risoluzione verticale del display è minore di
480 pixel i bordi dei pulsanti vengono disabilitati di default.
Questa modifica è stata studiata per eseguire il "SerialAnalyzer" sul
"Eee PC" della Ausus che ha una ridotta risoluzione verticale del display.
-
Modifiche minori al layout per ridurre le dimensioni minime dell'applicativo.
Inoltre, per ottimizzare le dimensioni minime dell'applicativo, si consiglia
di installare (opzione prevista nel programma di installazione) il
LookAndFeel "Liquid";
-
Modifiche minori per ottimizzare la gestione server tcp/ip;
- Versione 2.4.2 del 13/12/2007:
-
La stringa dei parametri di connessione, visualizzata in basso a sinistra,
visualizza i parametri della connessione attiva, quindi quella client o quella
server, prima venivano visualizzati solo i dati della connessione client.
I parametri si distinguono dalla lettera che precede i dati: "S" per la connessione
server e "C" per la connessione client.
Nel caso il server venga utilizzato in una modalità che permette di attivare
anche una connessione client, i dati visualizzati si riferiscono alla connessione client;
-
Aggiunto alla connessione client tcp/ip l'opzione per la modalità "bind" dove si
dichiara la porta utilizzata dal client per la connessione;
-
Aggiunto compilazione del programma prima dell'esecuzione. Questo risulta utile
nel caso di piccole modifiche da eseguire rapidamente;
-
In programmazione è stato modificato il tempo minimo impostabile per le istruzioni
setSleep e wait da 100 a 10mS.
Il tempo di default per l'istruzione setSleep rimane da 100mS;
-
All'interfaccia BeanShell sono stati aggiunti i seguenti metodi:
- clearTerminalArea per cancellare l'area terminale;
- clientIsOpen per verificare se la connessione client è aperta;
- clientOpen per aprire la connessione client;
- clientClose per chiudere la connessione client;
-
Corretto errore sulla risposta automatica. Quando il timer di ritardo era
impostato a zero poteva capitare che la risposta automatica non funzionasse
più. Per ripristinarne il funzionamente era necessario riavviare il Serial Analyzer;
- Versione 2.4.1 del 01/10/2007:
-
Corretto errore sulla chiusura dell'applicativo dal menu File -> Exit che
non chiedeva il salvataggio del file di properties e di programma, se questi
erano stati modificati;
-
Corretto il nome ..... da SerialAnalizer a SerialAnalyzer!
- Versione 2.4.0 del 15/06/2007:
- Messo a disposizione degli script in BeanShell i metodi enableSendDisp e
enableRxDisp che permettono di abilitare o disabilitare la visualizzazione
dei dati trasmessi e ricevuti;
- Aggiunto alla Programmazione l'istruzione enableRxDisplay per abilitare o
disabilitare la visualizzazione dei dati ricevuti;
- Aggiunto alla Programmazione l'istruzione enableStep per abilitare o
disabilitare l'esecuzione passo passo del programma;
- Versione 2.3.0 del 23/05/2007:
- Implementato la possibilità di gestire da script in BeanShell anche
i dati ricevuti nella modalità server tcp/ip;
- Aggiunto alla finestra "std Out/Err" il posizionamento automatico sull'ultimo
messaggio visualizzato;
- Versione 2.2.0 del 09/05/2007:
- Implementato la possibilità di chiamare script in BeanShell presenti
nella cartella del file di properties;
- Aggiunto icona alla finestra "std Out/Err";
- Corretto errore nella funzione "Stop Scroll" che non funzionava con i dati
trasmessi ma solo con quelli ricevuti;
- Versione 2.1.0 del 16/04/2007:
- Implementato BeanShell per eseguire script personalizzati;
- Implementato finestra dove viene rediretto sia lo Standard Output che
lo Standard Error (utile per lo sviluppo/debug degli script in BeanShell);
- Implementato riconoscimento nuovo frame anche per i dati trasmessi,
abilitabile attraverso apposito CheckBox;
- Implementato scrittura su file di log anche dei dati trasmessi;
- Aggiunto colore di sfondo ai parametri di configurazione;
- Aggiunto nel menu File la possibilità di avviare una nuova istanza del SerialAnalyzer;
- I file di libreria non vengono più copiati nella cartella del JRE ma in una cartella
locale "lib". Questo è comodo per evitare conflitti con altre applicazioni e per
evitare di dover copiare le librerie quando viene installata una nuova
versione di JRE. Purtroppo le librerie legate alla connessione seriale devono
essere installate nella directory del JRE, oltre ad essere differenti in base
al sistema operativo utilizzato, quindi nel caso di aggiornamento del JRE occorre
copiare questi file nella nuova versione o reinstallare il SerialAnalyzer ricordandosi
di abilitare solo la voce che installa le librerie della seriale;
- Corretto errore in Programmazione. Se un nuovo programma non specificava
il tempo di sleep veniva mantenuto quello del programma precedente e non
veniva impostato il tempo di default;
- Corretto errore di visualizzazione nome del file di properties modificato
(il nome viene visualizzato in rosso). L'errore consisteva nel settare in
colore nero il nome del file dopo aver aperto/chiuso la connessione client, mentre
il nome dell file doveva rimanere in rosso;
- Versione 2.0.0 del 13/01/2007:
- All'apertura della connessione seriale vengono settati i
segnali di controllo RTS e DTR come da impostati nel Tab Modem Status,
prima bisognava impostarli manualmente;
- la tabella ascii non viene più creata tutte le
volte ma viene letta da un file html;
- aggiunta la possibilità di visualizzare un
titolo personalizzato per ogni istanza;
- rifatti i layout in modo da ridimensionare i campi degli
hot keys e dell'editor di programma insieme alla finestra principale;
- Per questo motivo è stata modificata anche
la libreria layouts.jar che quindi va sostituita
- ottimizzato dimensionamento verticale in modo da
visualizzare
due istanza contemporaneamente allineate in verticale con shermi da
1024 pixel in altezza;
- rifatto help per renderlo più leggibile;
- aggiunto help in lingua inglese;
- corretto errore menu "Edit" e "Program" che non erano
selezionabili da tastiera;
- aggiunto menu "Command" che replica le funzioni dell'area
comandi;
- aggiunta opzione per sincronizzare la directory del file
di programma con la directory del file di properties;
- aggiunto icone alle finestre tabella ascii, help e system info;
- aggiunto controllo, prima di uscire dal programma o prima di
caricare nuovi file, per salvare file properties e di programma
modificati;
- Versione 1.7.3 del 19/07/2006:
- Adesso è possibile eseguire una sequenza
"Programma"
anche nella modalità "server". Prima funzionava solo se era
aperta una connessione di tipo client;
- Versione 1.7.2 del 27/03/2006:
- Corretto errore nella creazione del file di log dove
mancava il
separatore tra il path e il nome del file con il risultato che il file
veniva creato nella directory superiore con la prima parte del nome
composta dalla nome della directory.
- Esempio: file "prova.log" nella directory
"c:\Programmi\SerialAnalyzer" veniva creato come
"c:\Programmi\SerialAnalyzerprova.log";
- Corretto errore che nel caso di molte connessioni
simultanee al server generava delle eccezioni;
- Aggiunto cancellazione elenco client connessi all'avvio
del server;
- Aggiunto timer, programmabile, sulla gestione della
risposta
automatica in modo da generare una seconda risposta automatica solo
dopo che è scaduto il timer;
- Aggiunto la possibilità di inviare una stringa
al client che si è appena connesso al server;
- Versione 1.7.1 del 09/11/2005:
- Il LookAndFeel non è più forzato
nel programma in
modo da poterne assegnare uno differente dalla linea di comando o come
default nel JRE. Per cambiare il LookAndFeel seguire queste istruzioni:
- Da linea di comando : java
-Dswing.defaultlaf=nomeLookAndFeel -jar SerialAnalyzer.jar
- Come default di java occorre creare o modificare il
file
Swing.properties che si trova in j2re1.4.1_02\lib inserendo la seguente
linea : swing.defaultlaf=nomeLookAndFeel
- Nei punti a e b sostituire la parola nomeLookAndFeel
con il nome della classe relativa al LookAndFeel desiderato:
- Ad esempio un LookAndFeel in stile Apple
può essere "com.birosoft.liquid.LiquidLookAndFeel";
- Oppure quello di default di java è
"javax.swing.plaf.metal.MetalLookAndFeel";
- Versione 1.7.0 del 26/07/2005:
- Gestito il filtro sull'estensione del file di
configurazione;
- Aggiunto script di programmazione;
- Versione 1.6.2 del 27/05/2005:
- Modificato gestione tabella elenco connessioni server in
modo che si ridimensioni insieme al programma principale;
- Versione 1.6.1 del 24/05/2005:
- Aggiunta la possibilità di inviare i dati
contenuti nella ClipBoard (paste);
- Aggiunta la possibilità di selezionare tre
differenti
modalità di visualizzazione legate al riconoscimento del
nuovo
frame:
- Visualizza Data e Ora;
- Visualizza delta ms dal frame precedente;
- Visualizza ms assoluti;
- Versione 1.6.0 del 04/04/2005:
- Nella funzionalità di riconoscimento frame
è
stata introdotta la possibilità di visualizzare o l'ora e la
data (default) o la differenza in mS dal frame precedentemente ricevuto
selezionando l'apposita check-box nel tabs di Setup -> View Mode;
- Introdotto la possibilità di generare in
automatico delle risposte ai frame di dati ricevuti;
- Modificato l'elenco delle connessioni Tcp-Ip al server in
modo
da poter escludere una connessione dallo scambio dati pur mantenendo
attiva la connessione;
- Versione 1.5.3 del 04/08/2004:
- corretto errore che non era stato completamente risolto
con la
modifica della versione 1.5.1. L'errore si verifica quando con la
connessione in GPRS è il provider che resetta la
connessione. In
questo caso il SerialAnalyzer non gestiva l'eliminazione dall'elenco
dei client connessi e quindi si verificava un errore in scrittura dello
stream, oltre a mantenere nell'elenco dei client connessi un sacco di
connessioni inesistenti;
- Versione 1.5.2 del 19/07/2004:
- quando dalla linea seriale veniva decodificata la
combinazione
del "BREAK", questa non veniva registrata nel file di log ma solo a
video;
- Versione 1.5.1 del 28/06/2004:
- corretto errore che, in caso di eccezione in scrittura
stream
su client connesso al server del SerialAnalyzer, la socket del client
stesso viene chiusa;
- Versione 1.5.0 del 11/05/2004:
- modalità server;
- salavataggio dell'abilitazione al riconoscimento del
frame header;
- Versione 1.4.1 del 06/04/2004:
- Introdotto menu di Edit dove è possibile
effetuare le seguenti operazioni:
- "Find" ricerca di testo nell'area dati. Attenzione, la
ricerca funziona solo con la connessione chiusa;
- "Copy" copia il testo selezionato dall'area dati;
- "Select All & Copy" seleziona tutto il testo
dell'area dati e lo copia;
- Versione 1.4.0 del 19/03/2004:
- Sistemata definitivamente la gestione dei tasti di
funzione e
della tastiera che, in particolare con il JDK1.4, quando si cambiava
applicativo ritornando al Serial Analyzer era necessario selezionare
con il mouse l'area di trasmissione dati o i tasti di funzione;
- Eliminate le due aree per i dati ricevuti e trasmessi.
Ora i
dati sono su una sola area e i dati ricevuti e trasmessi sono
visualizzati con colori differenti;
- Aggiunto pulsante "Copy" per copiare la selezione
effettuata sull'area dei dati trasmessi/ricevuti;
- Aggiunto alla status bar il nome del file di
configurazione caricato;
- Versione 1.3.2 del 29/02/2004:
- Aggiunto alla segnalazione di "NEW FRAME" la data e ora
dell'evento;
- Versione 1.3.1 del 16/02/2004:
- Implementato connessione di tipo Tcp/Ip;
- Versione 1.3.0 del 10/02/2004:
- Modifiche per gestire i tasti di funzione anche con il
JRE 1.4;
- Versione 1.2.2 del 10/11/2003:
- Introdotto CheckBox per bloccare lo scrolling automatico
dei dati ricevuti;
- Versione 1.2.1:
- Introdotto il test del Frame Header su due stringhe
differenti
abilitabili singolarmente o contemporaneamente. Questo è
utile
quando oltre al protocollo in esame si vogliono distinguere i comandi
"AT" diretti ad un modem. Attenzione! Questo ha comportato la modifica
del file di properties. Se viene caricata una versione "vecchia" viene
segnalato un errore. In questo caso occorre editare manualmente il file
".properties", cercare la stringa "frameHeader=" e rinominarla in
"frameHeader_1=" poi creare una nuova stringa "frameHeader_2=";
- Versione 1.2.0:
- Ai tasti di funzione è stato associato un
commento al comando, questo commento è salvato sul file di
properties;
- Il commento associato ai tasti di funzione viene
visualizzato
come toolTips degli stessi tasti, il toolTips viene aggiornato quando
si salva o si carica il file di properties;
- I tasti di funzione sono disabilitati quando la
connessione è chiusa;
- Versione 1.1.2:
- Memorizzato ultimo path e nome file sia per file di log
che per file di properties;
- Aggiunto gestione baudRate a 1200 bps;
- Versione 1.1.1:
- non veniva aggiornata la stringa che riassumeva la
configurazione della linea seriale nel caso che i cambiamenti fossero
effettuati con la connessione aperta;
- I segnali del modem RTS e DTR sono settabili solo se nel
setup
seriale il "Controllo di flusso In e Out" è impostato a
"None",
prima li cambiava sempre;
Installazione
Il SerialAnalyzer
è un
programma sviluppato in Java e quindi necessita di avere già
installato sul PC la Java Virtual Machine (JRE) della SUN. Può
funzionare con il JRE dalla versione 1.5 in avanti.
Le ultime versioni sono fornite di un apposito tool di installazione
(sempre in Java) che automatizza tutta la procedura.
Per una installazione manuale procedere nel seguente modo:
- Il JRE di java dalla versione 1.5 in avanti oppure tutto il JDK sempre dalla versione 1.5 in avanti (si consiglia di installare l'ultima versione di java);
- Dalla versione 2.7.0 ho sostituito le vecchie e non più supportate librerie JavaComm con le librerie RXTX. La libreria (differente in base al sistema operativo utilizzato) per la gestione delle linee seriali è composta da due file che vanno copiati come elencato (trovate tutti i file nella cartella /lib e lib/rxtx_native dove è installato il Serial Analyzer):
- Comune a tutti i sistemi operativi: copiare il file "RXTXcomm.jar" nella cartella "lib" dove è installato il Serial Analyzer. In alternativa può essere copiato in jre\lib\ext
- Windows: copiare il file "rxtxSerial.dll" nella stessa cartella dove è installato il Serial Analyzer.
Il file è differente in base all'architettura del sistema a 32 o 64 bit. Nel caso di architettura a 64 bit occorre verificare che la Java Virtual Machine sia effettivamente a 64 bit, altrimenti bisogna usare la libreria a 32 bit.
In alternativa può essere copiato in jre\bin
- Linux:
- copiare il file "librxtxSerial.so" nella cartella /jre/lib/[machine type] (i386 per esempio)
- il file è differente in base all'architettura del sistema a 32 o 64 bit. Nel caso di architettura a 64 bit occorre verificare che la Java Virtual Machine sia effettivamente a 64 bit, altrimenti bisogna usare la libreria a 32 bit
- controllare i permessi del file, se avete problemi impostate questi permessi "chmod 755 librxtxSerial.so"
- in alternativa è possibile copiare il file "librxtxSerial.so" anche in altre cartelle indipendenti dal Java, come ad esempio /lib. Per verificare in quali cartelle è possibile copiare questo file si può usare il programma "JcProperties" (lo trovate dove avete installato il Serial Analyzer nella cartella lib e lo si esegue con "java -jar JcProperties) e vedere le cartelle associate alla propietà "java.library.path"
- Mac Os X (solo x86): copiare il file "librxtxSerial.jnilib" nella cartella /Library/Java/Extensions.