Protocollo di comunicazione seriale μFR per dispositivi della serie μFR
I dispositivi della serie μFR possono stabilire una comunicazione tramite la porta COM virtuale di FTDI, quindi i dispositivi sono visti come hardware standard della porta COM.
Parametri di comunicazione #
Lettori con interfaccia seriale FTDI #
Lettori μFR Classic e μFR Advance con connessione USB:
Comunicazione seriale: 1 Mbps, 8-N-1, Controllo di flusso: Nessuno;
Il pin RTS viene utilizzato per reimpostare il dispositivo. Quando l'RTS è impostato, il dispositivo è in uno stato di ripristino. Quando l'RTS è chiaro, il dispositivo è in uno stato normale.
Lettori μFR BaseHD con firmware "μFR support" installato (es. lettori XR e μFR XRc):
Comunicazione seriale (utilizzando driver VCOM FTDI): 250 kbps, 8-N-1, Controllo di flusso: Nessuno;
Lettori senza interfaccia seriale FTDI #
RS485 (connessione senza convertitore USB/RS-485):
Il baud rate variabile può essere impostato tramite uno strumento software. Il baud rate corrente deve essere noto quando si modifica il baud rate. La velocità in baud predefinita è 250 kbps.
μFR Classic Nano RS232 e formato scheda RS232:
UART / TTL: 115200 bps, 8-N-1, Controllo del flusso: Nessuno.
115200 bps è il baud rate predefinito. Il baud rate variabile può essere impostato tramite lo strumento software.
Il PIN 4 sul connettore viene utilizzato per reimpostare il dispositivo. Se la tensione su questo pin è alta (3,3 V), il dispositivo è nello stato di ripristino. Se la tensione è bassa (0 V), il dispositivo è in uno stato di funzionamento normale.
Se il dispositivo è collegato al nostro convertitore da RS232 a TTL, il livello di tensione sul pin 4 controlla su RTS. Quando l'RTS è chiaro, il dispositivo è in uno stato di ripristino. Quando l'RTS è impostato, il dispositivo è in uno stato normale.
Durante l'aggiornamento del firmware, il pin RTS deve essere collegato al pin 4 del dispositivo.
La piedinatura per il modello UART / TTL è presentata di seguito:
Ai fini della comunicazione tra i dispositivi di lettura e il PC host, viene creato il protocollo proprietario di D-Logic chiamato "seriale μFR".
Tutte le comunicazioni vengono avviate dall'host (PC o altre piattaforme) a cui è collegato il dispositivo.
Il numero massimo di dati trasferiti da un singolo comando o ricevuti da una risposta del dispositivo, dalla versione firmware 3.9.44 è di 256 byte e prima è di 192 byte.
Generalmente, ci sono due tipi di pacchetti:
- CMD – comando inviato dall'host al dispositivo
- ANS – risposta inviata dal dispositivo all'host
CMD può essere un set corto o lungo. Il set breve CMD è sempre lungo 7 byte mentre il set lungo CMD – chiamato CMD_EXT può avere una lunghezza variabile.
Le risposte sono:
- ACK – Riconoscimento, tutto è OK, il dispositivo è in attesa del prossimo CMD o CMD EXT
- ERR – Si è verificato un errore, il byte di errore definisce ERR_TYPE
- RSP – Risposta dal dispositivo su CMD o CMD_EXT
Byte di costanti di comunicazione definiscono il tipo di pacchetto, che può essere visualizzato nei primi tre byte di ciascun pacchetto.
Il primo byte di ogni pacchetto è il byte HEADER. Il secondo byte è sempre CMD_CODE. Il terzo byte è il byte TRAILER.
Tabella1. Costanti di comunicazione
CMD_HEADER | 0x55 | CMD_TRAILER | 0xAA |
ACK_HEADER | 0xAC | ACK_TRAILER | 0xCA |
RESPONSE_HEADER | 0xDE | RESPONSE_TRAILER | 0xED |
ERR_HEADER | 0xEC | ERR_TRAILER | 0xCE |
CHECKSUM #
Tutti i checksum in questo documento sono calcolati nello stesso modo: una riga di byte viene utilizzata per il calcolo del checksum, ogni byte è XOR-ed con quello successivo fino alla fine della riga. Il valore finale viene incrementato con 0x07.
Ad esempio, un pacchetto CMD ha 7 byte, dove il settimo byte è il checksum dei 6 byte precedenti:
CHECKSUM = (Byte1 XOR Byte2 XOR Byte3 XOR Byte4 XOR Byte5 XOR Byte6) + 0x07
Codici CMD #
Ogni comando ha il suo valore corrispondente – guarda PANORAMICA DEI COMANDI.
Codici di errore #
Se si verifica un errore, il dispositivo risponderà con il pacchetto ERR. Ogni errore ha il suo valore corrispondente che può essere trovato nella tabella in Appendice: CODICI DI ERRORE.
Pacchetto CMD #
Il pacchetto CMD può essere breve – 7 byte di lunghezza o EXT-ended con lunghezza variabile. Nel caso del pacchetto EXT CMD, il quarto byte del pacchetto CMD è maggiore di 0, contenente il valore intero – lunghezza del pacchetto CMD_EXT. Quando si emettono CMD_EXT, il pacchetto cmD principale lungo 7 byte va per primo. Se tutto come previsto, il dispositivo risponderà con il pacchetto ACK, in attesa del pacchetto CMD_EXT. In caso di errore, il dispositivo risponderà con il pacchetto ERR. CMD_EXT è costituito da vari parametri diversi, a seconda del tipo di comando, quindi CMD_EXT non ha una lunghezza e un ordine fissi di parametri.
Il pacchetto CMD ha la seguente struttura:
Il pacchetto CMD ha la seguente struttura:
Struttura obbligatoria dei pacchetti CMD a 7 byte |
||||||
---|---|---|---|---|---|---|
Byte 1 | Byte 2 | Byte 3 | Byte 4 | Byte 5 | Byte 6 | Byte 7 |
CMD_HEADER | CMD_CODE | CMD_TRAILER | CMD_EXT_Length | CMD_Par0 | CMD_Par1 | CHECKSUM |
- Byte 1: CMD_HEADER come definito in Table1.Costanti di comunicazione, 0x55
- Byte 2: CMD_CODE come definito in Table2. CMD_CODE valori
- Byte 3: CMD_TRAILER come definito in Table1.Costanti di comunicazione, 0xAA
- Byte 4: CMD_EXT_Length: Se 0 allora il "CMD EXT" non viene utilizzato); Il valore ELSE è la lunghezza dell'intero pacchetto CMD_EXT
- Byte 5: CMD_Par0: parametro di comando0, assume valori diversi a seconda del comando
- Byte 6: CMD_Par1: parametro di comando1, assume valori diversi a seconda del comando
- Byte 7: CHECKSUM – Checksum di byte da 1 a 6 come spiegato sopra
CMD_EXT pacchetto ha la seguente struttura:
CMD_EXT pacchetto ha la seguente struttura:
CMD_EXT struttura dei pacchetti | |||
Byte 1 | … | Byte N | Byte N+1 |
Byte di parametro da 1 a N |
CMD_EXT_CHECKSUM |
Parametri byte da 1 a N – parametri diversi, i valori dipendono dal tipo di comando
- CMD_EXT_CHECKSUM – Checksum di byte da 1 a N
- CMD_EXT_Length è il numero di tutti i byte, inclusi i CMD_EXT_CHECKSUM; ad esempio la lunghezza è N + 1
Tipi di pacchetti ANSWER #
Il dispositivo può rispondere con i seguenti tipi di pacchetti:
ACK – Pacchetto di riconoscimento
Se il comando e il pacchetto CMD sono configurati correttamente (struttura e checksum) e deve essere inviato un pacchetto CMD_EXT aggiuntivo, il dispositivo risponderà con un pacchetto ACK.
ERR – Pacchetto di errore
Se si è verificato un errore, il dispositivo risponderà con il pacchetto ERR. Alcuni comandi possono restituire il set di ERR_EXT.In tal caso, il pacchetto ERR_EXT viene immediatamente dopo il pacchetto ERR.
RSP – Pacchetto di risposta
Se viene inviato un pacchetto CMD o CMD_EXT correttamente configurato, il dispositivo risponderà con RSP o RSP_EXT pacchetto, che dipende dal comando emesso. Ad esempio, se CMD ha bisogno di una risposta abbastanza breve per il pacchetto RSP, non ci sarà alcun pacchetto RSP_EXT. Altrimenti, se CMD o CMD_EXT ha bisogno di una risposta con più byte, RSP_EXT arriverà immediatamente dopo il pacchetto RSP. Una situazione comune è quando si leggono i dati con il comando LinearRead, in cui il dispositivo risponderà con una riga di byte di dati della scheda.
ACK – Pacchetto di riconoscimento #
Il pacchetto ACK ha la seguente struttura:
Il pacchetto ACK ha la seguente struttura:
Struttura dei pacchetti ACP |
||||||
Byte 1 | Byte 2 | Byte 3 | Byte 4 | Byte 5 | Byte 6 | Byte 7 |
ACK_HEADER | CMD_CODE | CMD_TRAILER | Irrilevante, non utilizzato nel pacchetto ACK | CHECKSUM |
- Byte 1: ACK_HEADER come definito in Table1.Costanti di comunicazione, 0x55
- Byte 2: CMD_CODE come definito in Table2. CMD_CODE valori. Device ACKnowledges che il comando precedente è stato inviato correttamente
- Byte 3: ACK_HEADER come definito in Table1.Costanti di comunicazione, 0x55
- Byte 4: Byte 5, Byte 6: non utilizzato nel pacchetto ACK, i valori vengono 0x00
- Byte 7: CHECKSUM – Checksum di byte da 1 a 6 come spiegato sopra
ERR – pacchetto di errore #
Il pacchetto ERR ha la seguente struttura:
ERR obbligatorio a 7 byte |
||||||
Byte 1 | Byte 2 | Byte 3 | Byte 4 | Byte 5 | Byte 6 | Byte 7 |
ERR_HEADER | ERROR_CODE | ERR_TRAILER | ERR_EXT_Length | Err_Val0 | Err_Val1 | CHECKSUM |
- Byte 1: ERR_HEADER come definito in Table1.Costanti di comunicazione, 0xEC
- Byte 2: ERR_CODE come definito in Table3. CODICI DI ERRORE.
- Byte 3: ERR_TRAILER come definito in Table1.Costanti di comunicazione, 0xCE
- Byte 4: se esiste ERR_EXT, questo byte contiene la lunghezza del pacchetto ERR_EXT (incluso ERR_EXT checksum)
- Byte 5: Possibili informazioni aggiuntive sull'errore possono essere definite in ERR_Val0
- Byte 6: Possibili informazioni aggiuntive sull'errore possono essere definite in ERR_Val1
- Byte 7: CHECKSUM – Checksum di byte da 1 a 6 come spiegato sopra
ERR_EXT e ha la seguente struttura:
ERR_EXT struttura dei pacchetti | |||
Byte 1 | .. | Byte N | Byte N+1 |
Byte di errore da 1 a N | ERR_EXT_CHECKSUM |
- Byte 1: Primo byte di ERR_EXT
- …
- Byte N: N-ennesimo byte di ERR_EXT
- Byte N+1: ERR_EXT_CHECKSUM, checksum di byte da 1 a N, calcolato come spiegato in precedenza.
RSP – pacchetto di risposta #
Il pacchetto RSP ha la seguente struttura:
RSP obbligatorio a 7 byte |
||||||
Byte 1 | Byte 2 | Byte 3 | Byte 4 | Byte 5 | Byte 6 | Byte 7 |
RSP_HEADER | CMD_CODE | RSP_TRAILER | RSP_EX_length | RSP_Val0 | RSP_Val1 | CHECKSUM |
- Byte 1: RSP_HEADER come definito in Table1.Costanti di comunicazione, 0xED
- Byte 2: CMD_CODE come definito in Table2. CMD_CODE valori
- Byte 3: ERR_TRAILER come definito in Table1.Costanti di comunicazione, 0xDE
- Byte 4: se esiste RSP_EXT, questo byte contiene la lunghezza del pacchetto RSP_EXT (incluso RSP_EXT checksum)
- Byte 5: Possibili informazioni aggiuntive su RESPONSE possono essere definite in RSP_Val0
- Byte 6: Possibili informazioni aggiuntive su RESPONSE possono essere definite in RSP_Val1
- Byte 7: CHECKSUM – Checksum dei byte da 1 a 6 come spiegato sopra.
T
RSP_EXT struttura dei pacchetti | |||
Byte 1 | .. | Byte N | Byte N+1 |
Byte RSP da 1 a N | RSP_EXT_CHECKSUM |
- Byte 1: Primo byte di RSP_EXT
- …
- Byte N: N-ennesimo byte di RSP_EXT
- Byte N+1: RSP_EXT_CHECKSUM, checksum di byte da 1 a N, calcolato come spiegato in precedenza.