Rfid usb su host shield 2.0

Saluti a tutti, sto combattendo con un lettore rfid emulazione tastiera collegato all' host shield usb ed un mega 2560. Troncando alcune linee di programma, che non servivano, leggo i tags correttamente ma solo dopo una o due acquisizioni di badge, la prima anche a vuoto o mancante del primo ascii. Sto cercando di realizzare un "one time access rtc ed sd" antifrode, che pubblicherò certamente come open.... bye

codice per favore. Ciao Uwe

Salve Uwefed, il codice è qello di esempio che si trova sull’ IDE di Arduino a meno di alcune righe che ho tagliato.per il momento devo leggere solo il codice RFID, ho escluso anche qualche printata del display. Mi muovo a fatica dopo qualche decennio di inattività… codice copiato dall’IDE:

#include <avr/pgmspace.h>

#include <avrpins.h>
#include <max3421e.h>
#include <usbhost.h>
#include <usb_ch9.h>
#include <Usb.h>
#include <usbhub.h>
#include <avr/pgmspace.h>
#include <address.h>
#include <hidboot.h>

#include <printhex.h>
#include <message.h>
#include <hexdump.h>
#include <parsetools.h>

char code[30];

class KbdRptParser : public KeyboardReportParser
{
void PrintKey(uint8_t mod, uint8_t key);

protected**:**
virtual void OnControlKeysChanged(uint8_t before, uint8_t after);

virtual void OnKeyDown (uint8_t mod, uint8_t key);
virtual void OnKeyUp (uint8_t mod, uint8_t key);
virtual void OnKeyPressed(uint8_t key);
};

void KbdRptParser::PrintKey(uint8_t m, uint8_t key)
{
MODIFIERKEYS mod;
((uint8_t)&mod) = m;
Serial.print((mod.bmLeftCtrl == 1) ? “C” : " ");
Serial.print((mod.bmLeftShift == 1) ? “S” : " ");
Serial.print((mod.bmLeftAlt == 1) ? “A” : " ");
Serial.print((mod.bmLeftGUI == 1) ? “G” : " ");

// Serial.print(" >");
D_PrintHex<uint8_t>(key, 0x80);
// Serial.print("< ");

Serial.print((mod.bmRightCtrl == 1) ? “C” : " ");
Serial.print((mod.bmRightShift == 1) ? “S” : " ");
Serial.print((mod.bmRightAlt == 1) ? “A” : " ");
Serial.println((mod.bmRightGUI == 1) ? “G” : " ");
};

void KbdRptParser::OnKeyDown(uint8_t mod, uint8_t key)
{
//Serial.print("DN ");
// PrintKey(mod, key);
uint8_t c = OemToAscii(mod, key);

if (c)
OnKeyPressed(c);
}

void KbdRptParser::OnControlKeysChanged(uint8_t before, uint8_t after) {

MODIFIERKEYS beforeMod;
((uint8_t)&beforeMod) = before;

MODIFIERKEYS afterMod;
((uint8_t)&afterMod) = after;

}

void KbdRptParser::OnKeyUp(uint8_t mod, uint8_t key)
{
// Serial.print("UP ");
if (0)
PrintKey(mod, key);
}

void KbdRptParser::OnKeyPressed(uint8_t key)

{
//Serial.print("ASCII: ");
Serial.println((char)key);
// Serial.println(code);

};

USB Usb;
//USBHub Hub(&Usb);
HIDBoot<HID_PROTOCOL_KEYBOARD> HidKeyboard(&Usb);

uint32_t next_time;

KbdRptParser Prs;

void setup()
{
Serial.begin( 9600 );
Serial.println(“Sistema Avviato”);

if (Usb.Init() == -1)
Serial.println(“Premere il tasto rosso”); // reset

delay( 200 );

next_time = millis() + 5000;

HidKeyboard.SetReportParser(0, (HIDReportParser*)&Prs);
}

void loop()
{
Usb.Task();
}

/* -------------------------------------------------*/

Ciao

Ho abbandonato per il momento l’host usb e mi sono dedicato alla pur non semplice uart, che mi ha dato buoni risultati leggendo correttemente i badge RFID, e quindi sono stato in grado, in modo esclusivo, di accendere e spegnere una utenza in modo predominante…( un’errore su un print… correzione alla prossima). Non nascondo che ho, nonostante tanti anni di software alle spalle (fermo da decennio), qualche difficoltà, in quanto molti schetchs proposti sono delle bufale(forse, o sono io che non capisco?). Il mio intento, che citerò in seguito, sarà vero open. Adesso leggo i badge, allego foto, ma combatto con RTC, i codici on_line, sono off. Saluti (ho perso una “n” su Benvenuto)