Olá
Estou tentando enviar um código de barra de um Mega para um nodeMCU esp8266. Eu já consigo ler dados corretamente com o nodemcu, o meu problema é como enviar esse código de barras do mega de forma correta. Eu estou usando o mega com um shield usb acoplado para conectar o leitor de código de barras, este código chega para mim em decimal da tabela ASCII, por isso aquela condição "if(key>=48 && key <=57)". Quando escrevo Serial1.write(key) o mega simplesmente transforma meu código de barras que estava sendo lido certo em números "1". Se alguém puder me ajudar ficarei extremamente grato, é para meu TCC.
CÓDIGO:
#include <Usb.h>
#include <usbhub.h>
#include <hidboot.h>
USB Usb;
//USBHub Hub(&Usb);
HIDBoot<HID_PROTOCOL_KEYBOARD>
Keyboard(&Usb);
class KbdRptParser : public KeyboardReportParser
{
protected:
virtual void OnKeyDown (uint8_t mod, uint8_t key);
virtual void OnKeyPressed(uint8_t key);
};
void KbdRptParser::OnKeyDown(uint8_t mod, uint8_t key)
{
uint8_t c = OemToAscii(mod, key);
if (c)
OnKeyPressed(c);
}
/* what to do when symbol arrives */
void KbdRptParser::OnKeyPressed(uint8_t key)
{
static uint32_t next_time = 0; //watchdog
static uint8_t current_cursor = 0; //tracks current cursor position
next_time = millis() + 200; //reset watchdog
if(key>=48 && key <=57)
//Serial.print(key - 48);
Serial1.write(key-48);
Serial.print(Serial1.write(key-48));
};
KbdRptParser Prs;
void setup()
{
Serial.begin( 115200 );
Serial.println("Start");
Serial1.begin (115200);
if (Usb.Init() == -1) {
Serial.println("OSC did not start.");
}
delay( 200 );
Keyboard.SetReportParser(0, (HIDReportParser*)&Prs);
delay( 200 );
}
void loop()
{
Usb.Task();
}