Salve a tutti
sto creando un progetto in c++ sotto Linux(Debian), sul mio PC è collegato un lettore di Barcode che ha la funzione di emulazione di tastiera,premetto che il programma girerà in background quindi non c'è nessuna interazione grafica con l'utente, apparte il lettore, quindi mi servirebbe sapere come fare a gestire correttamente la lettura del barcode.
Ho già fatto una porzione di codice ma mi sembra che non sia propriamente corretta, tutto il codice gira in un thread parallelo al main:
int fd;
bool b_UpperCase = false;
char c;
string strLog;
struct input_event ev;
while(1)
{
fd = open("/dev/input/event0", O_RDONLY);//____Apertura del file eventi del Lettore di barcode.
//cout << "Apro il file di tastiera \n";
if(!fd)
{
//std::cout << "File non aperto \n";
}
else
{
//std::cout << "File aperto \n";
while (1)
{
read(fd, &ev, sizeof(struct input_event));
if(ev.type == 1)
{
if(ev.value == 1)
{
if(ev.code == 42 || ev.code == 54 || b_UpperCase == true) //_____Se viene vista la pressione di Shift destro o Sinistro si procederà con Upper case
{
if(b_UpperCase == false)
{
b_UpperCase = true;
}
else
{
c = (char)(i_EncodASCII(ev.code) - 32);
strLog += c ;
cout << endl;
//cout << "\r";
b_UpperCase = false;
}
}
else
{
c = (char)i_EncodASCII(ev.code);
strLog += c ;
cout << endl;
//cout << "\r";
}
}
if(ev.code == 28)
{
str_LogUser = strLog; //_____Assegnamento della stringa letta, il carattere di fine stringa è CR o 28 in Linux
break;
}
}
}
}