Différencier 2 lecteurs de code barres sur USB (niveau origine des données)
Bonjour,
Je cherche à differencier 2 lecteurs de code barres sur une meme appli, j'mexplique :
Je doire faire une appli utilisant 2 lecteur de code-barres USB, sachant que la lecture du premier doit être traité d'une facon et celle de l'autre lecteur d'une autre façon.
Quelqu'un aurait il une piste ?
Pour l'instant, pour intercepter la saisie du lecteur, je me base sur la vitesse de saisie avec ce code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
| BOOL DlScanner::PreTranslateMessage(MSG* pMsg)
{
if ( pMsg->message == WM_KEYDOWN ) // evenement = pression d'une touche
{
// Ecart maximal de 1 seconde entre chaque touche sinon on vide le buffer
CTime tNow = CTime::GetCurrentTime();
if ( (tNow - p_tLastInput) > 1 ){
p_KeyInput.reset();
p_tLastInput = tNow;
}
if ( (pMsg->wParam >= 0x30) && (pMsg->wParam <= 0x39 )) // chiffre [0] [1] ... [9]
{
// conversion du nombre en nombre :) ex : 0x34 -> 4
p_KeyInput.set((int)(pMsg->wParam - 0x30));
return TRUE; // fin de l'analyse du message
}
else if (pMsg->wParam == VK_RETURN) // touche [ ENTER ]
{
if (p_KeyInput.isValid())
{
AnalyseCodeBarre(p_KeyInput.getCodeBarre());
}
// réinitialisation de la saisie
p_KeyInput.reset();
return TRUE; // fin de l'analyse du message
}
else if (pMsg->wParam != VK_SHIFT) // [ SHIFT ] necessaire pour les chiffres via la douchette
{
// toute autre touche réinitialise la saisie
p_KeyInput.reset();
}
}
return CDigiDialog::PreTranslateMessage(pMsg); // retransmission du message si non traité
} |
differenciation lecteur code barre.
au vu de ce que tu as posté, tu utilises une emulation clavier.
pour un lecteur, j'aurais dit, oui, ca reste utilisable, pour deux, c'est une erreur, surtout si tu veux leur donner un comportement differencié.
donc, question, es tu obligé de les avoir en emulation clavier.?
si non, alors ton probleme est en passe d'être résolu.
utilise les comme des periphériques sur port série. ne pas oublier que les ports USB sont des ports série à la base..
tu pourras les configurer en fonction de leur numéro de port, une routine de controle du port série, pour chacun, et hop.
si tu as absolument besoin d'une emulation clavier, tu peux toujours reinjecter les codes caracteres dans le buffer clavier aprés récupération par la routine port série.
pour mémoire, farscape a posté une trés bonne routine de controle des ports série..
merci encore farscape. :king: