Javascript: Comment lire un scanner de code à barres tenu dans la main le mieux?
J'aimerais être capable de scanner les codes-barres via un tenu dans la main de scanner et de traiter les résultats avec Javascript.
Un barcode-scanner fonctionne presque comme un clavier. Elle renvoie l'image numérisée/traduit par code à barres->nombre) données brutes (à droite?). En fait j'ai juste besoin de prendre la sortie et continuer. Mais comment?
Voici quelques pseudo-code, j'aimerais faire le travail:
$(document).on("scanButtonDown", "document", function(e) {
//get scanned content
var scannedProductId = this.getScannedContent();
//get product
var product = getProductById(scannedProductId);
//add productname to list
$("#product_list").append("<li>" + product.name + "</li>");
});
- Toutes les idées (cadres, des plugins, des fragments de code)?
- Tout barcode-scanner (matériel) recommandation?
Merci d'avance!
J'ai trouvé cette et cette de bonnes questions, mais j'aimerais avoir plus d'informations sur la manipulation. Juste pour se concentrer un textarea peut être pas assez dans mon cas.
source d'informationauteur Mr. B.
Vous devez vous connecter pour publier un commentaire.
Votre pseudo code ne fonctionne pas, parce que vous n'avez pas accès au scanner à capturer des événements comme
scanButtonDown
. Votre seule option est HID scanner, qui se comporte exactement comme un clavier. Pour différencier le scanner d'entrée de clavier d'entrée, vous avez deux options: Minuterie ou préfixe.Temporisation
Le scanner est susceptible d'entrer des caractères beaucoup plus rapide qu'un utilisateur peut (raisonnablement) avec un clavier. Calculez rapidement frappes sont en cours de réception et le tampon de l'entrée rapide dans une variable à transmettre à votre
getProductsId
fonction. @Vitall a écrit un réutilisable jQuery solution pour la capture de scanner de code à barres d'entréevous auriez juste besoin de rattraper le onbarcodescanned événement.Préfixe de base de
La plupart des scanners peuvent être configurés pour préfixe toutes les données numérisées. Vous pouvez utiliser le préfixe pour démarrer l'interception de toutes les entrées et une fois que vous avez obtenu votre code-barres vous arrêter interception d'entrée.
Divulgation complète: je travaille comme consultant pour Socket Mobile, Inc. qui font des scanners portatifs.
Après beaucoup de recherches et de tests, ce qui a fonctionné le mieux pour moi était de capturer l'entrée à partir d'un scanner de codes barres sans mise au point d'un formulaire de saisie. Écouter la
keydown
ettextInput
événements.La
textInput
événement agit comme unpaste
événement. Il dispose alors d'un ensemble de données de code à barres. Dans mon cas, je suis à la recherche pour les codes-barres UPC. Lee.preventDefault()
empêche les données de code à barres d'être inséré dans un formulaire de saisie:J'ai testé sur Android 4.4 et 7.0 avec un CipherLab IR scanner.
Exemple pour écouter de la
keydown
événement. Dans mon cas, je suis en mesure de supposer que tant que le formulaire n'est pas ciblé, l'utilisateur est en scannant un code-barres.Bien sûr, plutôt que de la vérification de la longueur de la chaîne pour déterminer un scan, vous pouvez écouter de la
e.keyCode === 13
dans lekeydown
écouteur d'événement.Pas tous les IR scanners de déclencher la
textInput
événement. Si votre appareil n'est pas, alors vous pouvez vérifier pour voir si elle dégage quelque chose de similaire avec:Trouvé cette surveillance astuce ici: Comment vous connectez-vous tous les événements déclenchés par un élément en jQuery?
Cela dépend du modèle. Tous les une que j'ai utilisé fonctionne exactement comme un clavier (au moins autant que l'ordinateur est concerné)
Il génère des codes de touche.
Vous voulez probablement
keypress
passcanButtonDown
.Regarder l'objet d'événement pour déterminer la "clé" qui a été pressé.
Pour déterminer quand l'ensemble du code a été scanné, vous risquez d'obtenir une "fin des données de la clé" (peut-être un espace ou un retour) ou vous pourriez avoir à compter le nombre de caractères saisie.
OK, donc voici comment j'ai fait. - Je configurer le scanner, pour ajouter un préfixe (Dans mon cas, j'ai utilisé Ctrl+2 ou le code ascii 002 (un code de contrôle) de sorte qu'il ne pouvait pas facilement être entré à l'aide du clavier), et une ENTRÉE, (n'hésitez pas à la changer pour utiliser quelque chose comme Ctrl+3 ou code ascii 003 après chaque code-barres scanner, si vos données de code à barres peut contenir entre). En jQuery, j'ai fait une capture de l'événement keypress, et regarder pour le préfixe. Je puis, de capture, le tout dans une chaîne de caractères, et puis le feu d'un événement personnalisé, que mon application puisse écouter. Parce que je suis la prévention de l'événement keypress, l'utilisateur peut être dans un champ de texte, et de scanner un code-barres, ce qui peut déclencher un événement sans affecter tout ce qu'ils font.
En outre, chaque code-barres a 1 chiffres préfixe que nous utilisons pour identifier le type de code-barres scanné. Exemples:
À cause de ce préfixe, je peux maintenant identifier le type de code-barres, et de voir si elle doit être traitée sur cette page. Exemple:
J'ai juste commencé à travailler sur un plugin qui gère les codes à barres de numérisation de carte de crédit et de numérisation (basé sur jQuery):
https://github.com/ericuldall/jquery-pos
Simple de mise en œuvre:
Jusqu'à présent, ce plugin est testé uniquement avec un type de scanner et de codes contenant uniquement des chiffres, mais si vous avez d'autres exigences qui ne sont pas à travailler avec elle, je serais heureux de les adapter à vos besoins. S'il vous plaît consulter la page github et lui donner un tourbillon. Les Contributions sont les bienvenues.
E
Ici est une simple copie + paster pour toute personne intéressée.
Ce ne cesse de se concentrer sur un (hackily cachée) zone de texte et vérifie dans une boucle. Peu de potentiel pour un remplissage partiel de l'erreur, mais devrait fonctionner très bien avec le genre de scanners qui agissent comme des claviers.