Go Down

Topic: PS/2 lettore barcode (Read 3 times) previous topic - next topic

ianselmi

Ciao a tutti,
sto utilizzando un arduino duemilanove a cui ho attaccato un lettore di barcode ps2.
Come libreria sto utilizzando questa: http://www.arduino.cc/playground/Main/PS2Keyboard alla versione 2.3

Il pin di clock è stato collegato al pin 3 di un input digitale e il pin data al pin 2

Ora, il tutto sembra funzionare, ma quando leggo un barcode, arduino mi ritorna codici che hanno poco senso. Come numero di caratteri ci siamo (il codice è composto da 9 caratteri e me ne vengono restituiti altrettanti), ma come valore proprio no.
Ho provato anche a cercare scancode per tastiere italiane, ma nulla.
Se provo ad utilizzarlo con un pc, il lettore funziona correttamente.

Un codice di esempio formato 123456789 ritorna A.$5&*B8   
Sapreste darmi l'imbeccata corretta, per superare il blocco??

grazie mille a tutti per l'aiuto

Testato

l'ascii sembra non essere il problema,
ma hai ripetitivita' dei valori ? cioe' il numero 1 e' sempre tradotto con A ?

cmq nel tuo esempio non e' vero che ti ritorna la quantita' giusta perche' sono solo 8 caratteri non 9
- [Guida] IDE - http://goo.gl/ln6glr
- [Lib] ST7032i LCD I2C - http://goo.gl/GNojT6
- [Lib] PCF8574+HD44780 LCD I2C - http://goo.gl/r7CstH

ianselmi

Ciao e grazie per la risposta,
nel copia e incolla mi sono perso lo spazio tra il carattere * e B, oppure io carattere del forum non lo visualizza correttamente...comunque non è un problema.

Si, i caratteri sono sempre tradotti nello stesso modo, In questo esempio il carattere 1 è sempre A.

uwefed

Se attacchi al posto del lettore barcde una tastiera PS2 cosa succede?
Collegando il lettore a un PC cosa succede?
Ciao Uwe

ianselmi

Ciao uwefed , se connetto il lettore al pc, funziona correttamente...
non ho provato con la tastiera ps2 perchè al momento non l'ho in casa, ma se dici che è una prova importante cerco di recuperarla

ianselmi

Posto anche il codice dello sketch nel caso fosse utile:
Code: [Select]

#include <PS2Keyboard.h>

const int DataPin = 2;
const int IRQpin =  3;

PS2Keyboard keyboard;

void setup() {
  delay(1000);
  keyboard.begin(DataPin, IRQpin, PS2Keymap_Italiano);
  Serial.begin(9600);
  Serial.println("Keyboard Test:");
}

void loop() {
  if (keyboard.available()) {
   
    // read the next key
    char c = keyboard.read();
   
    // check for some of the special keys
    if (c == PS2_ENTER) {
      Serial.println();
    }
     
      // otherwise, just print all normal characters
      Serial.print(c);
    //Serial.print(' ');
  }
}


Ho provato anche a impostato il charset come in questo post: http://arduino.cc/forum/index.php/topic,82987.30.html
ma nulla...

uwefed

Hai invertito i 2 Pin? Prova ad invertirle.
Ciao Uwe

cyberhs

Credo che sia un problema elettrico.

I lettori di codice a barre in emulazione tastiera prevedono due connettori, uno collegato alla tastiera ed uno al PC.

Nel tuo caso il PC è Arduino: hai collegato anche la tastiera?

ianselmi

@uwefed: Si ho provato a invertire e il risultato è che non leggo nessun carattere.
@cyberhs: Il lettore che utilizzo, ha un unico connettore ps/2 a cui connetto i pin che escono dall'harduino (5v, GND, clock e data). Tu cosa intendi per due connettori?

grazie
Ciao

cyberhs

Ok, il tuo lettore non prevede il bypass.

Che tipo di codice stai leggendo? EAN13, Code39 o cosa?

ianselmi

Ho fatto prove con code-128, code-39 ed EAN-13, ma nulla da fare

cyberhs

Forse dovresti provare altre versioni della libreria...

Che versione delle libreria usi?

uwefed


@uwefed: Si ho provato a invertire e il risultato è che non leggo nessun carattere.
@cyberhs: Il lettore che utilizzo, ha un unico connettore ps/2 a cui connetto i pin che escono dall'harduino (5v, GND, clock e data). Tu cosa intendi per due connettori?

grazie
Ciao

Normalmente attacchi la tastiera sul lettore e questo nella porta PS2 del PC. Cosí le cose lette dal lettore vengono prese come se venissero dalla tastiera e non c'é bisogno di driver.
Ciao Uwe

ianselmi

@cyberhs: Adesso sto provando l'ultima la 2.3, ma ho provato anche versioni precedenti con svariati risultati, dal non legge nulla a caratteri ancora più strani.

Magari provo a cambiare lettore, anche se mi sembra strano perchè altrimenti su pc dovrebbe avere lo stesso risultato.

cyberhs

Per caso il lettore è un CueCat?

Go Up