KB Van Rijn Coating - Zebra DS2208 Handscanner¶
Terug naar klant: Van Rijn Coating Om het voorraadbeheer process te versimpelen, is er bij Van Rijn Coating een handscanner aangesloten op de weegschaal computer. Hierdoor is het mogelijk om direct producten en mutaties te scannen, zonder dat je iets hoeft in te voeren op de computer.
Handscanner Zebra DS2208¶
Handleiding¶
De handleiding voor de Zebra DS2208 handscanner is hier terug te vinden in Google Drive.
Instellingen¶
Om ervoor te zorgen dat de handscanner correct werkt met de applicatie, moeten er een aantal instellingen aangepast worden.
Het aanpassen van instellingen gaat door middel van speciale barcodes die vanuit de handleiding komen. Als deze gescanned worden, zal hij die configuratie aanpassen.
Correcte instellingen
Volgorde specifiek
Scan de barcodes die met rood remarkeerd zijn en ook in deze volgorde, anders bestaat er de kans dat de configuratie niet zoals verwacht is en hij niet correct kan functioneren.
QR-codes¶
Formaat¶
Er is gekozen voor QR-code's omdat deze meer data kunnen bewaren dan puur barcodes. De QR-code bevat plain text data, die in dit geval gebruikt wordt om JSON data op te slaan.
Omdat de ruimte op een QR-code gelimiteerd is, zijn er afkortingen gebruikt waarin mogelijk. Ook bevat de QR-code vaak fallback data, hierdoor is het mogelijk om bijvoorbeeld informatie over een product te tonen, ook al bestaat deze niet meer in de applicatie. (Zie "Stock" QR type)
Een QR-code moet altijd t en d bevatten, anders wordt hij als invalid beschouwd.
| Key | Afkorting voor | Voorbeeld waarde |
|---|---|---|
t |
type |
s |
d |
data |
{"c_id":205,"f_id":1,"fn":"9005","ff":"Zijdeglans"} |
De t wordt gebruikt om te achterhalen wat voor QR het is, en d bevat de data die relevant is voor die type.
Dit kan dus bijvoorbeeld de kleur en finish ID zijn voor een stock QR-code.
Scanner events luisteren¶
Omdat de afkortingen lastig te onthouden zijn, is er een abstractie laag toegevoegd door middel van ScannerEvent classes.
Iedere QR-type is een eigen class, die ScannerEvent extend.
Deze zijn vervolgens weer geregistreerd in de registeredEvents array van ScannerEventDetector.js.
Hierdoor is het mogelijk om makkelijk te zien wat voor soort QR er gescanned is door te checken met een instanceof, en de class zelf zet de afkorting weer om tot een logische naam voor de developer.
Code voorbeeld
const emitter = inject("emitter");
emitter.on("scannerEvent", (scannerEvent) => {
if (scannerEvent instanceof StockEvent) {
alert(`We scanned a product with color ID ${scannerEvent.colorId} (${scannerEvent.fallbackColorName}) and finish ID ${scannerEvent.finishId} (${scannerEvent.fallbackFinishName})`);
return;
}
if (scannerEvent instanceof MutationEvent) {
alert(`We scanned a mutation of ${scannerEvent.action} (${scannerEvent.fallbackActionName})`);
return;
}
// ...
});
Beschikbare QR-types¶
Op het moment bestaan er de volgende QR-types:
| Type | Afkorting | Voorbeeld use case |
|---|---|---|
ButtonEvent |
b |
Een knop kunnen drukken, zonder de handscanner los te laten |
MutationEvent |
m |
Een mutatie actie, bijvoorbeeld opboeken en afboeken |
StockEvent |
s |
Een doos scannen om dat product te selecteren |









