Libreria gestione periferiche (eLLabDevicesLib)

Questa libreria contiene un insieme di funzioni e blocchi funzione per la gestione di dispositivi commerciali.

MCReader, magnetic card reader

Type Library
FB eLLabDevicesLib_A000

image0

Questo blocco funzione gestisce l’acquisizione della traccia 2 o della traccia 3 da una carta magnetica tramite un lettore connesso a due ingressi digitali di un modulo CPU.

Sugli ingressi Strobe e Data occorre appoggiare lo stato dei due ingressi digitali di acquisizione dei rispettivi segnali in uscita dal lettore di carta magnetica

In BData ed in BDLength occorre definire l’indirizzo e la dimensione in bytes del buffer di appoggio dei dati letti dalla carta magnetica.

Inserendo la carta magnetica nel lettore si attiverà l’uscita CPresent ed al termine della lettura della carta, se lettura corretta si attiverà l’uscita Done. I dati letti dalla carta sono trasferiti nel buffer indirizzato da BData. Sull’uscita ByteNr viene ritornato il numero di bytes letti dalla carta.

In caso di errore di lettura si attiva una delle uscite di errore.

Strobe (BOOL) Stato dell’ingresso connesso al segnale strobe del lettore.
Data (BOOL) Stato dell’ingresso connesso al segnale data del lettore.
BData (@BYTE) Occorre definire l’indirizzo del buffer di appoggio dei dati letti.
BDLength (UDINT) Occorre definire l lunghezza del buffer di appoggio dati letti.
Connections (USINT) Numero di connessioni contemporanee gestite.
Done (BOOL) Si attiva al termine della lettura della carta magnetica.
CPresent (BOOL) Attivo se carta in lettura.
EParity (BOOL) Attivo se errore di parità in lettura.
ECheck (BOOL) Attivo se errore LRC sul dato in lettura.
ELength (BOOL) Attivo se errore lunghezza dato in lettura.
ByteNr (USINT) Numero di bytes dati letti da carta.

image1

Esempi

Nell’esempio viene gestito un lettore di carte a strisciamento della Magtek Connesso a due ingressi digitali di un modulo SlimLine compact.

Il programma è eseguito nella task Fast e come si vede è stato impostato il tempo di esecuzione della task a 100uS per permettere la lettura della carta anche quando viene strisciata molto velocemente.

Il dato letto dalla carta è appoggiato nell’array BData.

Definizione variabili

image2

Esempio ST (PTP140A000, ST_MCReader)

IF (SysFirstLoop) THEN
DInp.Address:=255; (\* Module address \*)
DInp.Mode:=DI_I_8_LL; (\* Acquisition mode \*)
i:=SysSetTaskLpTime(TaskID:=ID_TASK_FAST, Time:=100);
Reader.BData:=ADR(BData); (\* Buffer data \*)
Reader.BDLength:=SIZEOF(BData); (\* Buffer data length \*)
END_IF;
(\* Eseguo acquisizione ingressi, gli ingressi sono attivi FALSE. \*)
DInp(); (\* Digital inputs \*)
DInp.Value:=DInp.Value XOR 16#00000003; (\* Digital inputs \*)
(\* Gestione lettore card magnetica. \*)
Reader.Strobe:=TO_BOOL(DInp.Value AND 16#00000001); (\* Strobe bit \*)
Reader.Data:=TO_BOOL(DInp.Value AND 16#00000002); (\* Data bit \*)
Reader();
(\* [End of file] \*)