L o. Stefano Sanna http://www.gerdavax.it



Documenti analoghi
Macchine Virtuali. Docente: Fabio Tordini

Un applicazione client per la localizzazione via Bluetooth e Wi-Fi di dispositivi Smartphone Anno Accademico 2005/2006

VPN RETI PRIVATE VIRTUALI: ACCESSO REMOTO

MODULO SMS MANUALE UTENTE PER KONNEXION COD. KNX-SMS VERSIONE 2.0.2

Il sistema di I/O. Hardware di I/O Interfacce di I/O Software di I/O. Introduzione

MODEM USB MDC525UP Guida Rapida LINUX

Acronis Universal Restore

Il Sistema Operativo. Introduzione di programmi di utilità. Elementi di Informatica Docente: Giorgio Fumera

Il web server Apache Lezione n. 3. Introduzione

Panoramica: che cosa è necessario

Premessa Le indicazioni seguenti sono parzialmente tratte da Wikipedia ( e da un tutorial di Pierlauro Sciarelli su comefare.

Realtà Virtuali Prof. Raffaella Folgieri, aa 2013/2014

Sistemi Mobili e Wireless Android Primi passi

Procedura di aggiornamento del firmware Display Remoto IntellyGreenPV

Sommario. Modulo 8: Applicativi. Parte 3: Terminale remoto. Premessa Telnet SSH XWindows VNC RDP. Gennaio Marzo 2007

I Socket. Laboratorio Software M. Grotto R. Farina

Come configurare l accesso ad Internet con il tuo telefonino GPRS EDGE* UMTS* (Sistema Operativi Microsoft Win95 e Win98).

Manuale d'uso del Connection Manager

MoniThor di IDC-Informatica Centralizzazione di controlli per apparati eterogenei

INFO TECNICA SATO Italia

GUIDA RAPIDA. Installazione di Nokia Connectivity Cable Drivers

per(il(corso(di(architetture(dei(sistemi(di(elaborazione(

Mono per sistemi embedded

Tecniche di progettazione e sviluppo di applicazioni mobile

Sistemi Operativi IMPLEMENTAZIONE DEL FILE SYSTEM. D. Talia - UNICAL. Sistemi Operativi 9.1

Estensione di un servizo di messaggistica per telefonia mobile (per una società di agenti TuCSoN)

Istruzioni per l installazione del software per gli esami ICoNExam (Aggiornate al 15/01/2014)

Prima Esercitazione. Unix e GNU/Linux. GNU/Linux e linguaggio C. Stefano Monti smonti@deis.unibo.it

developed by Emanuele De Carlo

I Sistemi Operativi. Installazione Ubuntu Linux su Macchina Virtuale

BMSO1001. Virtual Configurator. Istruzioni d uso 02/10-01 PC

SMS-GPS MANAGER. Software per la gestione remota ed automatizzata dei telecontrolli gsm con e senza gps

Programmazione Orientata agli Oggetti in Linguaggio Java

Mida Directory. Introduzione. Mida Directory

Guida all installazione degli Hard Disk SATA ed alla configurazione del RAID

Tutorial per l installazione del J2SE 6 e configurazione del sistema operativo

Sistemi Operativi II Corso di Laurea in Ingegneria Informatica

Indice generale. Introduzione...xiii. Breve storia di Raspberry Pi...1. Fuori dalla scatola...5

MODULO TECNOALARM MANUALE UTENTE COD. KNX-TALM VERSIONE PER LA GESTIONE INTEGRATA DI CENTRALI ANTIFURTO IN KONNEXION

Sistemi Operativi IMPLEMENTAZIONE DEL FILE SYSTEM. Implementazione del File System. Struttura del File System. Implementazione

Modelli architetturali di infrastruttura. Diego Feruglio Direzione Progettazione Infrastrutture CSI-Piemonte

Protezione del Kernel Tramite Macchine Virtuali

Lezione 9. Applicazioni tradizionali

IRSplit. Istruzioni d uso 07/10-01 PC

DigiSiS. Manuale di installazione di una postazione Workstation per l utilizzo di Digital Sign Server

Protezione. Protezione. Protezione. Obiettivi della protezione

11/02/2015 MANUALE DI INSTALLAZIONE DELL APPLICAZIONE DESKTOP TELEMATICO VERSIONE 1.0

VIA USB 2.0. Versione 1.0

FIREWALL: LA PROTEZIONE PER GLI ACCESSI ESTERNI

Hardware delle reti LAN

Il tuo manuale d'uso. SONY ERICSSON W200I

Il software impiegato su un computer si distingue in: Sistema Operativo Compilatori per produrre programmi

Corso App modulo Android. Antonio Gallo

LE POSSIBILITA' DI ACCESSO DA REMOTO ALLE RETI DI CALCOLATORI

Scheda di Notifica Manuale d'uso

Introduzione alle tecnologie informatiche. Strumenti mentali per il futuro

Introduzione alle applicazioni di rete

Esercitazione 05. Sommario. Packet Filtering [ ICMP ] Esercitazione Descrizione generale. Angelo Di Iorio (Paolo Marinelli)

Guida al servizio wireless dell'univda

TITOLO ESPERIENZA: Progetto Arduino GPS OBIETTIVO: Realizzare tramite Arduino un sistema di localizzazione GPS

Definizione Parte del software che gestisce I programmi applicativi L interfaccia tra il calcolatore e i programmi applicativi Le funzionalità di base

CONVERTITORE SERIALE ASINCRONO RS485 / USB

PROTOS GESTIONE DELLA CORRISPONDENZA AZIENDALE IN AMBIENTE INTRANET. Open System s.r.l.

Sistemi Operativi MECCANISMI E POLITICHE DI PROTEZIONE. D. Talia - UNICAL. Sistemi Operativi 13.1

MECCANISMI E POLITICHE DI PROTEZIONE 13.1

MI/ICCA Manuale Installazione Workstation Utente nell ambito del progetto FIPAV

Sistemi avanzati di gestione dei Sistemi Informativi

Gestione di una UART SOFTWARE.

Installazione dell'adattatore di IBM SPSS Modeler Server

FAQ RISPOSTE A DOMANDE FREQUENTI

Approccio stratificato

Manuale per l utente di Ethernet

Motorola Phone Tools. Guida rapida

WebFax- manuale utente

Software di sistema e software applicativo. I programmi che fanno funzionare il computer e quelli che gli permettono di svolgere attività specifiche

SmartGPS Satellite Information System Guida all utilizzo del programma Sviluppato da Fabio e Marco Adriani Versione 1.0.0

NEC USB 2.0. Versione 1.0

Ho chleica SmartNet ItalPoS

MICRO USB OTG TO SERIAL Adattatore da Micro USB OTG a Seriale RS232 per Tablet & Smartphone

Contenuto del pacchetto

MT2 e MT3: Schede e sistemi di controllo motori passo passo

Guida Google Cloud Print

Interfaccia KNX/IP Wireless GW Manuale Tecnico

ACE SL7000 Lettura remota con interfaccia Ethernet Nota Applicativa

Marchio di identificazione per marcatura laser

FLEET MONITORING SCHEMA DI FUNZIONAMENTO

Il Sistema Operativo (1)

Il sistema operativo TinyOS

CONVERTITORE SERIALE ASINCRONO RS232/USB, TTL/USB e RS485/USB CONFIG BOX PLUS

Corso Linux Base informatica Open source

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011

Guida Google Cloud Print

Guida alla registrazione on-line di un DataLogger

Reti di Calcolatori PROTOCOLLO FTP. File. File Transfer Protocol Modello FTP Operazioni FTP Comandi del protocollo Esempi di Client FTP avanzati

Manuale Istruzioni TELEPESCA. Sommario

Guida Rapida. NOTA: Accendere sempre prima il modem e poi il Personal Computer.

MANUALE D USO MANUALE D USO

IBM SPSS Statistics per Mac OS - Istruzioni di installazione (Licenza per sito)

Reti di Calcolatori PROTOCOLLO FTP

Altri tipi di connessione

Transcript:

L JavaComm: o controllare dispositivi seriali in Java Stefano Sanna http://www.gerdavax.it 1

Parliamo di... Porte seriali: tante applicazioni interessanti! L'API JavaComm La libreria Uso in ambiente Linux e Windows Applicazioni Trucchetti... :-) Conclusioni 2

Porte seriali L'interfaccia seriale RS-232 è uno standard molto diffuso. Alcune delle applicazioni più conosciute: Connessione remota attraverso modem wired e wireless GPS, Loran, bussole Programmazione microcontrolli Controllo motori passo-passo Strumenti di misura (multimetri, sensori...) Registratori di cassa, POS, controllo accessi (RFID) Lettura dati stazioni meteorologiche Interfaccia economica per giocattoli costosi (LEGO Mindstorm RIS 1.0-2.0) 3

Ancora porte seriali! :-) L'adozione di nuovi standard di connettività wired (USB) e wireless (IrDA, Bluetooth) non ha reso obsoleta la porta seriale! Appositi layer di emulazione permettono di riciclare protocolli, driver e applicazioni sui nuovi sistemi di trasporto: USBSerial: emulazione seriale su bus USB IrCOMM: emulazione seriale su link infrarosso RFCOMM: emulazione seriale su link Bluetooth 4

JavaComm E' una libreria opzionale che fornisce una API per l'accesso completo alle porte seriali (RS-232) e parziale alle parallele (IEEE-1284) Principali caratteristiche: Astrazione rispetto all'api del sistema operativo Discovery delle porte disponibili Modello ad eventi per dati disponibili e ownership Accesso a basso livello: Segnali EIA232 standard DTR, CD, CTS, RTS, DSR Opzioni hardware e software flow-control 5

Piattaforme supportate Implementazione ufficiale Sun: 2.X: Solaris e Windows (e Linux???) 3.0: Solaris e Linux (e Windows???) Implementazioni di terze parti per Windows, Linux, PocketPC (Windows CE), Mac OS, SCO Open Server, BSD, HP-UX, Unixware, Digital/UNIX: RXTX: http://www.rxtx.org (open source, multipiattaforma) SerialIO: http://www.serialio.com (26 piattaforme!) 6

Architettura JavaComm Applicazione JavaComm API Java Virtual Machine Native Library Sistema operativo Hardware 7

Installazione di JavaComm Una generica distribuzione è costituita da tre elementi principali: Uno o più file jar contenenti il bytecode dell'api Java Una o più librerie contenenti il codice nativo utilizzato dalla VM per accedere alle porte seriali rese disponibili dal sistema operativo Un file di property contenente i riferimenti al driver da utilizzare, alla libreria nativa nonché altri parametri utili al funzionamento dell'interfaccia 8

Installazione su Linux Il pacchetto è costituito da tre file principali: comm.jar: contiene le classi Java. Deve essere incluso del CLASSPATH dell'applicazione liblinuxserialparallel.so: è il file della libreria nativa. Deve essere copiato nella directory /usr/lib/ oppure caricato dalla VM attraverso il parametro -Djava.library.path (percorso ove si trova il file) javax.comm.properties: è il file contente le property. Deve essere copiato nella directory lib/ del JRE o nella stessa directory contenente il file comm.jar 9

Installazione su Windows Il pacchetto (versione 2.X) è costituito da tre file: comm.jar: contiene le classi Java. Deve essere copiato nella directory lib\ext del JRE comm.dll: è la libreria a caricamento dinamico nativa. Deve essere copiata nella directory bin\ del JRE javax.comm.properties: è il file contenente le property. Deve essere copiato nella directory lib\ del JRE 10

Seriali in ambiente Java ME E' possibile accedere alle porte seriali anche in ambiente Java ME. In particolare: CDC/PersonalProfile (+ PersonalJava): grazie a JNI è possibile utilizzare librerie di terze parti (ad esempio, Telio/SerialCE per PocketPC) con modalità analoghe alla versione standard CLDC/MIDP: il Generic Connection Framework fornisce lo schema comm:com0;baudrate=19200... e l'interfaccia CommConnection non tutti i dispositivi supportano l'accesso alle porte seriali! Esistono estensioni per PocketPC e PalmOS 11

Panoramica sulla libreria javax.comm CommPortIdentifier: fornisce funzionalità ad alto livello per l'enumerazione delle porta disponibili CommPort, SerialPort, ParallelPort: forniscono una astrazione e le relative specializzazioni per l'accesso alle porte CommPortOwnershipListener, SerialPortEventListener, ParallelPortEventListener forniscono un meccanismo asincrono per la gestione dello stato delle porte e data buffering 12

Gestione eventi CommPortOwnershipListener riceve eventi sull'assegnazione esclusiva di una porta di comunicazione. SerialPortEventListener, ParallelPortEventListener ricevono eventi (SerialPortEvent, ParallelPortEvent) sui dati in arrivo nelle rispettive porte: cambio stato delle linee, presenza di dati nel buffer...), compresa l'informazione sulle transizioni di stato: SerialPortEvent(SerialPort src, int eventtype, boolean oldvalue, boolean newvalue) 13

Tipo eventi (SerialPortEvent) BI: Break interrupt CD: Carrier detect CTS: Clear to send DATA_AVAILABLE: Data available at the serial port DSR: Data set ready FE: Framing error OE: Overrun error OUTPUT_BUFFER_EMPTY: Output buffer is empty PE: Parity error RI: Ring indicator Permette di scrivere un driver asincrono per la ricezione dei dati 14

Elencare le porte disponibili La classe CommPortIdentifier fornisce una enumerazione delle porte disponibili nel sistema: Enumeration en = CommPortIdentifier.getPortIdentifiers(); while (en.hasmoreelements()) { CommPortIdentifier id = (CommPortIdentifier) en.nextelement(); System.out.println("Port found: " + id.getname()); } 15

Aprire una porta seriale... La classe SerialPort modella una porta seriale, della quale è possibile avere controllo pressoché completo: CommPortIdentifier portid = CommPortIdentifier.getPortIdentifier( /dev/ttys0 ); SerialPort port = (SerialPort) portid.open( MyApplication, 5000); Nome convenzionale della applicazione che chiede la porta Tempo massimo di attesa per avere ownership della porta 16

Impostare i parametri di porta Attraverso il metodo setserialparams() è possibile impostare la velocità e il formato dei dati: bit di dati, bit di stop, bit di parità Le velocità valide sono quelle standard: 300, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200 Gli altri parametri sono identificati da costanti: DATABITS_5, DATABITS_6, DATABITS_7, DATABITS_8 PARITY_EVEN, PARITY_MARK, PARITY_NONE, PARITY_ODD, PARITY_SPACE STOPBITS_1, STOPBITS_1_5, STOPBITS_2 17

Applicazioni JavaComm permette di implementare alcune interessanti funzionalità nelle applicazioni Java: Lettura posizione da GPS Invio/ricezione di SMS attraverso cellulare Accesso alla rubrica del cellulare Interfacciamento a display LCD Interfaccia multifunzione I/O 18

Lettura posizione da GPS I ricevitori GPS dotati di interfaccia RS-232, USB o Bluetooth inviano stringhe di testo contenenti le informazioni di localizzazione Lo standard NMEA 0183 stabilisce il formato delle sentence inviate al calcolatore: GPRMC GPGGA GPGSV Recommended Minimum Specific GPS/TRANSIT Data Global Positioning System Fix Data GPS Satellites in View 19

Stampa delle sentence NMEA port.setserialportparams(4800, SerialPort.DATABITS_8, SerialPort.STOPBITS_1, SerialPort.PARITY_NONE); BufferedReader buffer = new BufferedReader( new InputStreamReader(port.getInputStream())); String sentence; while((sentence = buffer.readline())!= null) { } System.out.println(sentence); 20

Un questione di parsing... $GPGGA,164922.982,3859.4108,N,00856.1785,E,1,04,3.4,127.9,M,47.6,M,0.0,0000*7A Latitudine Longitudine Altitudine $GPGSA,A,3,20,23,11,24,,,,,,,,,4.4,3.4,2.8*3A $GPGSV,3,1,10,11,83,014,42,20,59,273,44,01,52,071,47,19,36, 172,45*71 $GPGSV,3,2,10,23,24,192,35,14,20,041,40,17,19,316,41,24,17, 299,35*7F $GPGSV,3,3,10,25,14,103,35,28,10,272,00*72 Satelliti $GPRMC,164922.982,A,3859.4108,N,00856.1785,E,0.068674,,2701 06,,*17 21

Trucchetti... [per Linux] :-) JavaComm è efficace per il controllo di porte seriali standard. La libreria risulta insufficiente per: controllare periferiche connesse via USB e Bluetooth accedere alle porte seriali su piattaforme per le quali non sia stato fatto il porting della libreria nativa Come fare TM? Con alcuni accorgimenti è possibile avere: Accesso a dispositivi Bluetooth senza JSR 82 Accesso a dispositivi USB senza Java-USB... accesso a seriali senza JavaComm! :-) 22

javax.comm.properties Il file di property contiene le informazioni sulle porte seriali alle quali la VM ha accesso:... # Implementation specific driver driver=com.sun.comm.linuxdriver # Paths to server-side serial port devices serpath0 = /dev/ttys0 serpath1 = /dev/ttys1... Se il sistema operativo esporta altre interfacce seriali... è sufficiente aggiungerle nella lista! 23

javax.comm.properties Aggiungiamo due porte rfcomm e una usbserial:... # Implementation specific driver driver=com.sun.comm.linuxdriver # Paths to server-side serial port devices serpath0 = /dev/ttys0 serpath1 = /dev/ttys1 serpath2 = /dev/rfcomm0 serpath3 = /dev/rfcomm1 serpath4 = /dev/ttyusb0... 24

RFCOMM senza JSR 82 Utilizzando Bluez, lo stack Bluetooth ufficiale in ambiente Linux, è possibile avere il binding di porte seriali rfcomm su specifici servizi SPP: rfcomm bind 0 00:11:22:AA:BB:CC 1 Sul file /etc/bluetooth/rfcomm.conf si può avere il binding automatico: rfcomm0 { bind yes; device 00:11:22:AA:BB:CC; channel 1; } 25

Seriali senza JavaComm (Linux) Nel caso non sia possibile installare JavaComm (o non si voglia installare), è possibile utilizzare le utility native del sistema operativo e sfruttare il filesystem di Unix: creare il device opportuno (ttysx, rfcomm, usbserial) impostare i parametri con setserial accedere al device seriale come ad un normale file Da verificare per device non standard... 26

Conclusioni JavaComm permette di scrivere applicazioni Java che si interfacciano ad hardware specializzato: GPS, modem, controller, sensori... Con qualche accorgimento è possibile accedere a porte USB, IrDA e Bluetooth: in ambiente Linux, con un po' di tuning, è possibile avere accesso in modo semplice a porte USBSerial e RFCOMM L'altalena del supporto ai diversi sistemi operativi non facilita l'attività di porting... 27

Bibliografia JavaComm API Sun Microsystems http://java.sun.com/products/javacomm Java Cookbook Ian F. Darwin O'Reilly (ISBN: 0-596-00701-9) JavaComm: introduzione alla libreria; interfacciare un display LCD e un telefono cellulare Stefano Sanna DEV n. 113 e 114, Gruppo Editoriale Infomedia 28

JavaComm controllare dispositivi seriali in Java (Versione 1.1) (C) 2006 Stefano Sanna (gerdavax@tiscali.it) è garantito il permesso di copiare, distribuire e/o modificare questo documento seguendo i termini della Licenza per Documentazione Libera GNU, Versione 1.1 o ogni versione successiva pubblicata dalla Free Software Foundation. Una copia della licenza in lingua italiana è disponibile presso: http://www.softwarelibero.it/gnudoc/fdl.it.html Realizzato in ambiente Linux con OpenOffice 2.0 Tutti i marchi commerciali sono di proprietà dei rispettivi titolari e sono stati citati in questa presentazione a solo scopo illustrativo. 29