Buongiorno a tutti.
Intanto ringrazio tutti quelli che mi sapranno aiutare...
Sto realizzando una macchina con Arduino Mega, attualmente funzionante, che dovrà leggere da una fotocellula il passaggio di alcuni elementi etc.. che non sto qui a spiegare.
L'avvio della macchina è caratterizzato dalla lettura di un codice a barre mediante un lettore ottico, il quale riconosce ovviamente il codice a barre e fa partire il programma. Purtroppo questo lettore ottico non va più bene per quello che la macchina richiede e quindi, cercando in rete e contattando varie azienda sono giunto alla soluzioni finale di un lettore 3-in-1 smart/memory/magnetic card reader (EMV Card Reader For Smart Phone, Encrypted Card Reader, Card Reader For IOS, Chip And Pin Card Reader - Singular Technology Co. Ltd. - Mobile Payment Card Reader, F2F IC, F2F Decoder)
Ho acquistato il lettore e purtroppo non riesco ad interfacciarlo con Arduino.
Il lettore ha una connessione USB HID, nel link sopra sono definite tutte le caratteristiche.
Io vorrei al momento inserire la tessera sanitaria e leggere la banda 1 (contenente codice fiscale, cognome e nome del proprietario).
Ho collegato una USB Host Shield per Arduino Mega 2560, ma non so proprio dove mettere le mani.
Nel vecchio progetto con il lettore ottico facevo cosi :
//Includo le librerie per la gestione e la lettura dei dispositivi USB
#include <usbhid.h>
#include <hiduniversal.h>
#include <Usb.h>
#include <usbhub.h>
#include <hidboot.h>
#include "keyboard.h"
//Inizializzo il lettore di codice a barre
USB Usb;
USBHub Hub(&Usb);
HIDUniversal Hid(&Usb);
HIDBoot<USB_HID_PROTOCOL_KEYBOARD> Keyboard(&Usb);
//Funzione relativa al task di lettura del codice a barre
void Task_CodBarre(void* pvParameters) {
(void)pvParameters;
Serial.println("Avvio lettura codice a barre");
if (Usb.Init() == -1)
{
Serial.println(C_G_S.code06());
}
else
{
Hid.SetReportParser(0, (HIDReportParser*)&Prs);
Serial.println(C_G_S.code101());
//Leggo di continuo dalla porta USB
while (1) {
Usb.Task();
}
}
}
questo è il codice che gestisce la lettura del codice a barre.
Questo lettore necessita però di una comunicazione, Arduino deve inviare una stringa in HEX e il lettore risponde con dei pacchetti a cascata da 64byte a pacchetto.
Dal manuale dei comandi :
Command Set
2.1 Command List
Description | Command Code | Response Code
1 Give Up Action | 1B 25 20 4D | OK: 1B 00 00 Edc(1B) Fail: 1B 01 00 Edc(1A)
2 Reset Reader | 1B 25 21 4D | “Version String”
3 Get Ack | 1B 25 22 4D | 1B 00 00 Edc(1B)
.....
....
....
etc...
spero si capisca...
A questo punto, come faccio ad inviare il comando, per esempio, 1B 25 20 4D e poi intercettare la riposta ?
Spero di essere stato chiaro con la descrizione del mio problema e di essere nella sezione giusta del Forum.
Grazie a tutti