FEIG rende disponibili agli sviluppatori diversi SDK per lo sviluppo software sulle piattaforme più diffuse, per permettere l’integrazione dei suoi apparati con la maggior parte dei sistemi operativi più utilizzati, sia in ambiente desktop che mobile. Ecco come sono composte gli SDK FEIG, per utilizzarli al meglio all’interno della propria applicazione.
Tecnologia |
RFID HF & UHF passiva | |
Data/Revisione |
Febbraio 2014 / rev. 1.0 | |
Riferimenti |
Apparati RFID passivi HF FEIG Apparati RFID passivi UHF FEIG |
Sono disponibili diversi SDK FEIG che consentono di supportare più sistemi operativi e linguaggi di programmazione. In particolare, oltre alle librerie native in linguaggio C, è possibile usufruire di librerie di classi ad alto livello per i linguaggi C++, .NET e Java.
è comunque sempre possibile l’integrazione a basso livello , che può essere realizzato senza l’utilizzo delle librerie, in quanto, per ogni Controller RFID è presente una documentazione esaustiva del protocollo e di tutti i comandi. Per questo tipo di integrazione, fare riferimento a questo articolo.
La struttura delle librerie FEIG può essere vista in figura.
[learn_more caption=”Sistemi operativi supportati – Clicca qui” state=”close”]
Le librerie C e C++ sono disponibili per diversi S.O.. Una panoramica può essere vista in figura:
I linguaggi di programmazione Java e .NET sono supportati tramite SDK dedicati. Queste librerie sono compilate per framework a 32 bit, ma possono essere utilizzate su sistemi operativi a 64 bit tramite il Runtime a 32 bit.
Non sono attualmente disponibili librerie native a 64 bit per questi linguaggi di programmazione.
▲[/learn_more]
[learn_more caption=”Librerie C di base per la comunicazione – Clicca qui” state=”close”]
Al livello base dello stack degli SDK sono presenti le librerie base per la comunicazione, in linguaggio C. E’ presente una diversa dll per ogni interfaccia di comunicazione:
-
FECOM per la comunicazione tramite RS232 e Bluetooth.
- FEUSB per la comunicazione tramite USB.
- FETCP per la comunicazione in TCP/IP per interfacce Ethernet e WiFi.
La loro funzione principale è quella di interagire con i driver dei diversi sistemi operativi, per consentire la comunicazione fra l’host e l’apparato RFID. L’utilizzo del linguaggio C rende compatibili queste librerie con i più importanti linguaggi di programmazione ed ambienti di sviluppo.
La programmazione con questo tipo di librerie richiede comunque buona dimestichezza con il protocollo a basso livello (costruzione e decodifica dei pacchetti, calcolo della lunghezza e del CRC). Le librerie .NET e Java non hanno accesso diretto a questo livello.
▲[/learn_more]
[learn_more caption=”Libreria C di base per l’invio dei comandi FEIG – Clicca qui” state=”close”]
L’invio dei comandi FEIG al lettore (livello del protocollo) è realizzato tramite la dll FEISC. La funzione principale è quella di implementare i comandi FEIG da inviare al lettore e riceverne le risposte, tramite l’utilizzo delle dll al livello di trasporto. Come per le precedenti dll, l’utilizzo della FEISC richiede la conoscenza e l’utilizzo del protocollo di basso livello.
Questa libreria viene utilizzata principalmente per lo sviluppo in Pascal, Delphi o VB6, e permette di implementare la comunicazione con il lettore, principalmente in Host Mode. La programmazione per le modalità Buffered Read Mode e Notification Mode è più complessa.
▲[/learn_more]
[learn_more caption=”Libreria C di base per l’invio dei comandi alle ‘Function Units’ (Multiplexer, DAT) – Clicca qui” state=”close”]
La libreria FEFU consente l’invio di comandi anche a dispositivi di collegamento alle antenne quali Multiplexer e DAT. La logica di utilizzo è la stessa della dll FEISC, in quanto la FEFU è collegata ad essa.
Gli sviluppatori C++ hanno la possibilità di utilizzare questa libreria o la classe specializzata C++ presente all’interno della libreria di classi FEDM, in quanto non ci sono differenze sostanziali fra le due.
▲[/learn_more]
[learn_more caption=”Libreria C di base per l’invio dei comandi APDU – Clicca qui” state=”close”]
La dll FETCL consente l’invio dei comandi APDU (Application Protocol Data Unit). Questa libreria dipende dalla FEISC, ed utilizza la stessa logica.
I comandi APDU sono inviati tramite campo RF con il protocollo T=CL e sono utilizzati con i transponder RFID compatibili con lo standard ISO/IEC 14443 livello 4.
In alternativa, per l’invio di questo tipo di comandi, è possibile utilizzare la classe TagHandler presente all’interno delle librerie di classi C++, Java e .NET
▲[/learn_more]
[learn_more caption=”Librerie di classi ad alto livello C++, Java, .NET – Clicca qui” state=”close”]
A un livello superiore rispetto alle librerie di base, FEIG ha sviluppato delle librerie di classi per la programmazione ad alto livello, quali:
-
la libreria FEDM per il linguaggio C++
- la libreria OBIDISC4J per il linguaggio Java
- la libreria OBIDISC4NET per il linguaggio .NET
Queste librerie supportano tutti gli apparati FEIG. Le librerie Java e .NET sono sostanzialmente dei wrapper realizzati sulla base della libreria C++ FEDM, ed hanno la stessa struttura.
I metodi ad alto livello nella classe di gestione del Controller RFID semplificano la comunicazione con il lettore, mentre la nuova classe TagHandler fornisce un efficiente modello di programmazione per l’interazione con il transponder in Host Mode, grazie all’utilizzo di diverse classi ad-hoc per i diversi standard di transponder (ISO/IEC 14443, ISO/IEC 15693, EPC Class 1 Gen 2) e per i diversi tipi di chip.
Le librerie mettono a disposizione funzioni per la gestione delle varie modalità (ISO Host Mode, Buffered Read Mode, Notification Mode) tramite strutture a tabelle e dati in una forma ben precisa, ricalcando l’operatività dei controller.
E’ inoltre implementata una semplice modalità di serializzazione dei dati per la configurazione dei lettori. Ciò è possibile per memorizzare la completa configurazione in un file XML, e per il caricamento e la memorizzazione dello stesso all’interno del controller.
▲[/learn_more]
[learn_more caption=”Sicurezza a livello di Thread – Clicca qui” state=”close”]
In generale, tutte le librerie FEIG non sono completamente thread-safe. Tuttavia, utilizzando alcuni accorgimenti, la sicurezza fra thread può essere realizzata permettendo l’esecuzione parallela di diversi task di comunicazione. Bisogna però tenere presente che i controller FEIG lavorano in maniera sincrona, e possono processare comandi solo in sequenza.
La comunicazione a livello di trasporto con le varie interfacce deve essere sincronizzata in quanto i lettori lavorano in maniera sincrona. E’ possibile interagire con più lettori su porte differeti da più thread in modo simultaneo, in quanto gli oggetti interni afferenti alle porte di comunicazione agiscono indipendentemente gli uni dagli altri. Non è tuttavia possibile comunicare indipendentemente da thread differenti con diversi controller su una stessa porta seriale del tipo RS485 o RS422.
Un’altra limitazione riguarda le funzioni di Scan della libreria FEUSB. La scansione completa delle porte USB non può essere thread-safe, in quanto richiede un’interazione con il kernel del S.O. a libello globale. In generale, l’apertura e la chiusura della comunicazione fra più dispositivi su USB o interfaccia seriale deve essere sincronizzato a livello di applicazione.
Al livello superiore (protocol layer), il parallelismo può essere realizzato solo quando a ogni oggetto Reader corrisponde esattamente un controller RFID fisico, individuabile tramite la sua propria interfaccia di comunicazione.
La libreria FEFU non è thread-safe, e solo un thread alla volta può richiamare le funzioni di questa libreria. La sicurezza e la sincronizzazione in questo caso devono essere implementate a livello applicativo.
La libreria FETCL è thread-safe; tuttavia, lo è solo nel caso in fui ogni oggetto Transponder fa riferimento ad un diverso oggetto Reader, e solo un’APDU è scambiato fra i diversi lettori allo stesso tempo. Anche in questo caso le chiamate devono essere inviate in modo sincrono.
Le librerie di classi FEDM, OBIDISC4J e OBIDISC4NET seguono la stessa logica delle dll a cui si appoggiano per le funzioni corrispondenti.
▲[/learn_more]
[learn_more caption=”Gestione degli errori – Clicca qui” state=”close”]
All’interno dei messaggi inviati dal controller all’Host tramite il protocollo FEIG, è sempre presente un byte di stato (Status byte) che indica il risultato dell’ultima operazione eseguita.
Questo stato, dalla libreria FEISC fino alle librerie di alto livello, è sempre ritornato da ogni funzione, e deve essere verificato all’interno dell’applicazione. I possibili valori dello Status byte sono:
- zero, nel caso in cui l’operazione sia stata effettuata correttamente;
- maggiore di zero, nel caso in cui l’operazione non sia stata effettuata correttamente e non siano avvenuti errori a livello di libreria. Questi valori sono illustrati all’interno del manuale dei comandi di ogni singolo lettore.
- minore di zero, nel caso in cui sia avvenuto un errore di libreria. Questi errori sono elencati all’interno della documentazione delle singole dll a cui si riferiscono.
I codici di errore delle librerie di classi e delle dll di livello base sono organizzate in range diversi in modo da permettere un’identificazione immediata. I diversi range possono essere visti in figura:
▲[/learn_more]
[learn_more caption=”SDK : Best Practice – Clicca qui” state=”close”]
Il modo migliore per iniziare lo sviluppo software tramite gli SDK FEIG, è quello di effettuare i seguenti passi:
- Nel caso in cui si abbia a disposizione il controller, collegarlo all’Host e testarlo/configurarlo tramite il software demo ISOStart, in modo da capire la differenza fra le varie modalità di funzionamento.
- Individuare la modalità di funzionamento da utilizzare con il lettore. Nel caso in cui sia necessario effettuare la lettura dei dati e la scrittura sulla memoria del transponder, allora deve essere obbligatoriamente utilizzata l’Host mode. Nel caso in cui sia sufficiente leggere o collezionare, può essere utilizzata una delle modalità automatiche (Scan Mode, Buffered Read Mode, Notification Mode). Lo Scan Mode si utilizza nel caso in cui il lettore sia in emulazione di tastiera, oppure con interfacce di comunicazine Seriale o USB, in cui non è necessario bufferizzare il dato. La modalità Buffered Read Mode è da preferirsi nel caso in cui si debbano collezionare o contare una grande quantità di dati in un breve lasso di tempo. La modalità Notification Mode si può utilizzare solamente con interfaccia Ethernet, ed è consigliabile nel caso in cui non sia necessaria un’interazione con il dispositivo.
- E’ vivamente consigliato utilizzare il tutorial presente all’interno di ogni SDK FEIG per capire velocemente la struttura delle librerie e iniziare a sviluppare rapidamente.
- Fare riferimento agli esempi presenti all’interno dell’SDK per iniziare a sviluppare la propria applicazione; in particolare, utilizzare l’esempio corrispondente alla modalità di funzionamento individuata.
▲[/learn_more]
You must be logged in to post a comment.