Bar Code Scanner, SPI protocol

Hello,

I'm trying to read bar codes whit my Arduino Uno, USB shield and LCD. I've choose thisSPI protocol program because the Uno Board isn't indedet for Usb/hid librarys.

At the moment, the bar code, which appears on the display, scip the most of the numbers and letters. (same bar code show everytime same code on display)

Doesn't I have to set the serial clock and communication Pin for the SPI connection anywhere?

It would be gread if someone could help me.

Tanks in advance

#include <usbhid.h>
#include <usbhub.h>
#include <hiduniversal.h>
#include <hidboot.h>
#include <SPI.h>

class MyParser : public HIDReportParser {
  public:
    MyParser();
    void Parse(USBHID *hid, bool is_rpt_id, uint8_t len, uint8_t *buf);
  protected:
    uint8_t KeyToAscii(bool upper, uint8_t mod, uint8_t key);
    virtual void OnKeyScanned(bool upper, uint8_t mod, uint8_t key);
    virtual void OnScanFinished();
};

MyParser::MyParser() {}

void MyParser::Parse(USBHID *hid, bool is_rpt_id, uint8_t len, uint8_t *buf) {
  // If error or empty, return
  if (buf[2] == 1 || buf[2] == 0) return;

  for (uint8_t i = 7; i >= 2; i--) {
    // If empty, skip
    if (buf[i] == 0) continue;

    // If enter signal emitted, scan finished
    if (buf[i] == UHS_HID_BOOT_KEY_ENTER) {
      OnScanFinished();
    }

    // If not, continue normally
    else {
      // If bit position not in 2, it's uppercase words
      OnKeyScanned(i > 2, buf, buf[i]);
    }

    return;
  }
}

uint8_t MyParser::KeyToAscii(bool upper, uint8_t mod, uint8_t key) {
  // Letters
  if (VALUE_WITHIN(key, 0x04, 0x1d)) {
    if (upper) return (key - 4 + 'A');
    else return (key - 4 + 'a');
  }

  // Numbers
  else if (VALUE_WITHIN(key, 0x1e, 0x27)) {
    return ((key == UHS_HID_BOOT_KEY_ZERO) ? '0' : key - 0x1e + '1');
  }

  return 0;
}

void MyParser::OnKeyScanned(bool upper, uint8_t mod, uint8_t key) {
  uint8_t ascii = KeyToAscii(upper, mod, key);
  Serial.print((char)ascii);
}

void MyParser::OnScanFinished() {
  Serial.println(" - Finished");
}

USB          Usb;
USBHub       Hub(&Usb);
HIDUniversal Hid(&Usb);
MyParser     Parser;

void setup() {
  Serial.begin( 115200 );
  Serial.println("Start");

  if (Usb.Init() == -1) {
    Serial.println("OSC did not start.");
  }

  delay( 200 );

  Hid.SetReportParser(0, &Parser);
}

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

Error message is as follow:

C:\Users\Tom\Documents\Arduino\sketch_SPI\sketch_SPI.ino: In member function 'virtual void MyParser::Parse(USBHID*, bool, uint8_t, uint8_t*)':

C:\Users\Tom\Documents\Arduino\sketch_SPI\sketch_SPI.ino:35:38: warning: invalid conversion from 'uint8_t* {aka unsigned char*}' to 'uint8_t {aka unsigned char}' [-fpermissive]

       OnKeyScanned(i > 2, buf, buf[i]);

                                      ^

C:\Users\Tom\Documents\Arduino\sketch_SPI\sketch_SPI.ino:13:18: note: initializing argument 2 of 'virtual void MyParser::OnKeyScanned(bool, uint8_t, uint8_t)'

     virtual void OnKeyScanned(bool upper, uint8_t mod, uint8_t key);

                  ^

The second argument to OnKeyScanned() is NOT an array. Why are you calling it with an array?

How would you call it?