HOME


Come usare Java per interfacciarsi al Nutchip

Nutchip e Java

un programma di Andrea Cimini

 

Semplice ed efficace

Java è un linguaggio moderno, libero e gratuito, progettato per funzionare su tutti i tipi di computer (compresi Windows, Mac, Linux....) e perfettamente integrato con il Web: ad esempio con Java è facile costruire delle applet, cioè dei programmi che si integrano in un Web browser (come Internet Explorer o Navigator). Queste ed altre eccellenti caratteristiche lo hanno fatto preferire da molte Scuole e Università. In questo articolo illustreremo un semplice programma scritto in Java che scrive sullo schermo del PC lo stato degli ingressi e delle uscite del Nutchip. Con lo stesso programma si può anche cotrollare il comportamento del Nutchip, nello stesso modo in cui lo si farebbe con un telecomando, solo che stavolta gli impulsi arrivano dal PC attraverso la porta seriale.
Il programma è utile anche per chi voglia semplicemente fare esperienza con i comandi seriali del Nutchip, senza scrivere nemmeno una riga di codice, perchè lo si può già usare anche così com'è!

Software necessario (gratis)

Il compilatore Java, completo di programmi di esempio e dei sorgenti e "runtime", si scarica gratuitamente dal sito della Sun: http://www.java.sun.com .
Per avere un ambiente di java funzionante, così come per eseguire il codice o per compilarlo occorre scaricare e installare l'SDK (Software Development Kit) di Java. Il file da scaricare/installare ha un nome simile a:  j2sdk-1_4_2_03-windows-i586-p.exe , dove i numeri esatti dipendono dalla versione al momento del download. Troverete anche versioni analoghe per Linux ed altri sistemi operativi. Si tratta di un file molto grosso (50 mega). Sullo stesso sito c'è anche una versione "enterprise", che non vi consigliamo perchè molto più complessa e molto più estesa (150 mega!).

Durante l'installazione prendete nota di dove viene installato il software: normalmente si tratta della cartella C:\j2sdk1.4.2_03. Infatti questo compilatore non utilizza nessuna icona (a parte il programma "Java web start", che non esamineremo) e deve essere lanciato da linea di comando. Il software in Java per il Nutchip invece si scarica dalla nostra pagina dei download e non richiede installazione: basta decomprimerlo in una cartella di vostro gradimento.

Hardware minimo

Per provare questo progetto basta un qualsiasi circuito funzionante con Nutchip collegato alla seriale: noi abbiamo usato la scheda BOENUT della Artek che è molto comoda per gli esperimenti (l'interfaccia è incorporata e ci sono pulsanti e LED pronti per essere collegati alla breadboard a molla). In alternativa, il classico circuito di test o quello dei relè comandati da PC andranno benissimo.
Collegate la vostra scheda al PC con il cavo seriale, proprio come fareste se doveste programmare il Nutchip, quindi alimentatela.

   

Primi comandi

Create una cartella C:\javanut ed usatela per decomprimere i file del programma Java per il Nutchip. Per fare partire il programma Java è necessario aprire un finestra DOS (cercate l'icona nel menù Start di Windows). Per portarvi nella cartella in cui avete espanso i file (nel nostro caso li abbiamo messi in C:\javanut) digitate il comando:

   

CD C:\javanut <enter>

A questo punto possiamo digitare il comando che ci interessa. Per ottenere un rapporto che elenchi lo stato di tutti i piedini, sia di ingresso che di uscita, ed anche lo stato interno del Nutchip, digitiate:

java .;nutchip.jar;comm.jar sendCmd KEY? COM1 <enter>

Questo è il modo per trasmettere il comando KEY? sulla porta seriale COM1. Ecco cosa apparirà sullo schermo:

Il rapporto si legge così: in questo caso, il Nutchip si trova nello stato 0 (st0, lo stato iniziale) della tabella della verità. Tutti i suoi ingressi sono a 1 (true=vero, cioè stato logico 1), mentre le sue uscite sono a zero (false=stato logico 0) esclusa la numero 1, che si trova a 1.

La figura mostra anche un secondo comando:

java .;nutchip.jar;comm.jar sendCmd INFR COM1 <enter>

dove al posto del comando KEY? abbiamo usato il comando INFR, che serve per ottenere il codice dell'ultimo comando ricevuto Nutchip attraverso il ricevitore a raggi infrarossi. In questo caso si trattava del codice 0 (=nessun dato ricevuto).

Il programma gestisce anche i comandi RADI (analogo al comando INFR, ma nel caso in cui si utilizzi un telecomando via radio) e KEY1, KEY2, KEY3, KEY4, KEY5, KEY6, che oltre a ritornare lo stato del chip e dei suoi pin, hanno lo stesso effetto di premere i tasti da 1 a 6 sul telecomando. Perciò, se programmerete il Nutchip con la tavola della verità del telecomando a tre canali, vedrete le uscite del Nutchip cambiare stato ogni volta che riceve un comando KEY1 o KEY2 ecc., proprio come accade quando si premono i tasti su un telecomando vero. Questo stesso pricnipio è usato dal telecomando virtuale Nutchip Commander per estrarre i dati e interagire con il Nutchip.

SUGGERIMENTO   

I comandi vanno inseriti in lettere MAIUSCOLE, così come il nome della porta seriale COM1 (oppure COM2, COM3, COM4... fino a COM9) a cui avete collegato il Nutchip.

 

Struttura del programma sendCmd.class

Il programma è articolato su più file. Per ottenere il programma sendCmd.class abbiamo compilato il file sorgente sendCmd.java, che è di sole 65 righe. Questo perchè le funzioni per la lettura e scrittura del Nutchip e per l'accesso alla seriale sono incapsulate all'interno di librerie esterne. In questo modo il programma effettivo è più semplice e più breve, e può essere modificato ed adattato più facilmente. Le librerie sono "moduli" che svolgono un compito ben definito che si possono riutilizzare per molti programmi diversi. Nel nostro caso, il modulo è Nutchip.jar ed il suo compito è di stabilire una connessione seriale con il Nutchip ed impartire un comando.

Queste librerie devono essere sempre presenti nella stessa directory di sendCmd.java al momento della compilazione e dell'esecuzione. Si tratta dei seguenti file:

file
descrizione
origine
sendCmd.class
Applicazione principale ottenuta compilando il programma sorgente sendCmd.java (che fa uso della libreria nutchip.jar) per inviare comandi e interpretare facilmente la relativa risposta.
Scritto da Andrea Cimini

nutchip.jar

In questo file "nutchip.jar" sono raccolte delle librerie (che fanno uso delle Librerie Java Communications) che semplificano la comunicazione con il Nutchip.
Scritto da Andrea Cimini
comm.jar
Librerie Java Communications per l'accesso alla porta seriale. Sono utilizzate da nutchip.jar per accedere alla porta seriale.
Scaricate da www.java.sun.com
javax.comm.properties
File dove memorizzato il nome del driver di Windows che accede alla seriale.
Scaricate da www.java.sun.com
win32com.dll
DLL utilizzata dalle Librerie Java Communications per comunicare con la seriale del sistema Windows.
Scaricate da www.java.sun.com

Come si vede, ogni file richiama il file sottostante, che gli è necessario per eseguire le proprie funzioni interne.

Modificare e compilare il programma sendCmd.java

Se vi intendete almeno un pò di programmazione, potete apportare le vostre modifiche al programma. Il file sorgente principale è sendCmd.java, e potete modificarlo aprendolo con il Blocco Note di Windows o con un qualsiasi altro editor di testo. Per ottenere il file sendCmd.class dovremo compilare il nuovo sorgente. Per farlo, aprite una finestra MS-DOS e portatevi nella cartella che contiene il file sorgente:

cd c:\javanut <enter>

Ricordiamoci anche di digitare:

set path=%path%;C:\j2sdk1.4.2_03\bin <enter>

per dire al sistema operativo in quale cartella si trova il compilatore Java (il nome esatto dipende dal numero di versione del software, eventualmente cambiatelo in accordo con la versione che avete scaricato dal sito della Sun). Questa operazione va fatta solo la prima volta e resta attiva finchè non si richiude la finestra di MS-DOS.

Siamo pronti per lanciare la compilazione. Digitate:

javac -classpath .;comm.jar;nutchip.jar sendCmd.java <enter>

 

Questo comando lancia il compilatore javac sul file sendCmd.java, e crea il programma sendCmd.class facendo uso delle librerie comm.jar e nutchip.jar.
Se le modifiche che avete fatto al programma sono corrette, a questo punto avrete ottenuto una nuova versione del file sendCmd.class, pronta per essere eseguita. Nel caso aveste commesso degli errori nello scrivere le modifiche del programma, il compilatore scriverà sullo schermo i propri messaggi indicando in quale file e in quale riga ha trovato le istruzioni non valide.

La creazione di un modulo di libreria .jar, come nel caso del file nutchip.jar, è riservata ai più esperti che sapranno come fare: per loro (e per chi volesse semplicemente curiosare) forniamo anche i file sorgenti di questo modulo, che si trovano nel file "nutchip_src.zip", oltre ad informazioni dettagliate sui comandi seriali.del Nutchip.

Comandare il Nutchip dal Web

Uno dei punti di forza di Java è la sua integrazione con il Web. I piccoli sorgenti descritti in questo articolo possono diventare il punto di partenza per controllare il Nutchip via WEB, perchè con si può costrire un programma che "gira" all'interno di un browser, chiamato in gergo una "applet". Scrivendo una "applet", il programma userà il browser presente sul computer per visualizzare ad esempio dei pulsanti con i quali commutare le uscite del Nutchip, oppure delle immagini di LED che illustrano lo stato degli ingressi.

Il passo successivo consiste nel collegare il Nutchip ad un PC, e monitorare gli ingressi e le uscite da un PC differente, collegato al primo attraverso una connessione Internet. Per fare questo ci sono due soluzioni:


Nutchip
SERIALE

PC con
programma Server

SOCKET

Internet
(oppure
rete locale)
SOCKET


il browser del PC
lancia il programma Client
che visualizza gli ingressi
e le uscite del Nutchip

Come si vede, si tratta di programmi complessi riservati a programmatori esperti. Noi li riportiamo solo per dare un'idea di cosa sia possibile fare oggi con un chip semplice come il Nutchip, grazie alla sinergia con le tecnologie Internet. Se avete l'esperienza per scrivere un programma di questo tipo e volete condividerlo con altri lettori, contattateci!

Progetti correlati e link

 

 
   

JAVA E LA PORTA SERIALE

Il Java SDK non include nativamente le librerie che occorrono per
controllare la seriale. Questo perchè l'implementazione cambia da macchina a macchina e a seconda del sistema operativo usato.
Le librerie per il controllo della seriale si chiamano Java Communications e si scaricano separatamente da http://java.sun.com/products/javacomm/downloads/index.html

Per sistemi Windows su processori Intel compatibili (x86) si usa il file javacomm20-win32.zip

Voi non avrete bisogno di scaricarli perchè i file necessari sono già inseriti nel file che contiene i sorgenti per il Nutchip.