Barcode Scanner
Добавлено: 29 май 2019, 11:06
				
				нужна помощь засунуть код в пользовательский блок
на выходе должна быть строка считаная баркодом и импульс обновления коротковременая идиница
код который посылает на сом работает
библиотека: https://github.com/felis/USB_Host_Shield_2.0
USB_Host_Shield_2.0-master
Железа : USB Host Shield 2.0 for Arduino
пример
https://github.com/felis/USB_Host_Shield_2.0/issues/323
			на выходе должна быть строка считаная баркодом и импульс обновления коротковременая идиница
код который посылает на сом работает
библиотека: https://github.com/felis/USB_Host_Shield_2.0
USB_Host_Shield_2.0-master
Железа : USB Host Shield 2.0 for Arduino
пример
https://github.com/felis/USB_Host_Shield_2.0/issues/323
Код: Выделить всё
#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();
} Сколько по граблям ходить будем?
  Сколько по граблям ходить будем? ты же сам ссылку давал ,качай по твоей ссылке библу
 ты же сам ссылку давал ,качай по твоей ссылке библу