Barcode scannen und Gewicht in SQL Datenbank speichern
In einer SQL-Datenbank sollen- Auftragsnummer
- Palettennummer
- Bruttogewicht
Die BEMABOX ist per RS232-Kabel mit der Basisstation BC9030 eines Datalogic PM9500 Funk-Barcode-Scanners verbunden.
Die Waage ist über einen COM-Server mit dem Ethernet verbunden.
Der Scanner ist so konfiguriert, dass er als Präfix das Steuerzeichen STX und als Suffix das Steuerzeichen ETX sendet.
Auf der BEMABOX wird zunächst die Tabelle PALETTE mit folgenden Feldern definiert:
Dann wird die Regel PALETTE erstellt, die alle Meldungen verarbeitet, die mit dem Steuerzeichen STX beginnen und mit ETX enden.
Dazwischen befinden sich maximal 20 Ziffern oder Buchstaben:
Zuerst wird die Auftragsnummer gescannt und von der Regel PALETTE im Kontext auftrag zwischengespeichert.
Danach wird die Palettennummer gescannt. Die Regel PALETTE ermittelt dann das Gewicht und speichert dieses zusammen mit der Auftragsnummer aus dem Kontext auftrag, der Palettennummer und einem Zeitstempel (Datum und Uhrzeit) in der Tabelle PALETTE.
Das erfolgreiche Scannen der Auftragsnummer wird mit zwei Signaltönen quittiert, das erfolgreiche Scannen der Palettennummer und das anschließende Speichern der Daten wird mit 3 Signaltönen quittiert.
Im Fehlerfall werden 3 kurze, 3 lange und anschließend 3 kurze Signaltöne ausgegeben.
Der spezielle Barcode RESET setzt die Schrittfolge zurück und kann zum Initialisieren der Schnittstelle verwendet werden.
Das Initialisieren wird mit vier Signaltönen bestätigt.
XGETSID( $sid , $role , $master , $sysloglevel , $syslogdays ) XTTYOPN( 0 ) if ($barcode == 'RESET') { XSETC( 'auftrag' , '' ) for ($i=0;$i<4;$i++) { usleep(200000); XTTYSND( chr(7) ) } return $syserror; } XGETC( 'auftrag' , $auftrag ) if (strlen($auftrag) == 0) { XSETC( 'auftrag' , $barcode ) for ($i=0;$i<2;$i++) { usleep(200000); XTTYSND( chr(7) ) } return $syserror; } XSETC( 'auftrag' , '' ) $cmd = 'READ' . chr(13) . chr(10); $regex = '~^(ST|US|OL|UL),(GS|NT), *([0-9\.\-]{1,8}),(kg|lb)\r\n~i'; XTCP( '192.168.178.27' , 8000 , $cmd , $regex , &$data ) if (!empty($syserror)) { XLOGW( $syserror ) XTTYSND( 'D' ) usleep(500000); for ($i=0;$i<3;$i++) { XTTYSND( chr(7) ) usleep(100000); } for ($i=0;$i<3;$i++) { XTTYSND( chr(7) ) usleep(500000); } for ($i=0;$i<3;$i++) { XTTYSND( chr(7) ) usleep(100000); } XTTYSND( 'E' ) return $syserror; } $weight = $sysmatch[3]; $unit = $sysmatch[4]; $info = "Auftrag: $auftrag Palette: $barcode Gewicht: $weight $unit"; XLOGW( $info ) XDBOPEN( 'palette' ) XCHECKREPLY( $syserror , "" ) $dattimb = date('Y-m-d H:i:s'); XDBPUT( $dattimb , $auftrag , $barcode , $weight , $unit ) XCHECKREPLY( $syserror , "" ) for ($i=0;$i<3;$i++) { usleep(200000); XTTYSND( chr(7) ) } $sysreply = '';
Zur Fehleranalyse kann das Protokoll der Kommunikation in eine Protokolldatei ausgegeben werden:
Die Daten können später über einen Browser ausgewertet werden:
Über einen Filter kann nach Datum, Auftragsnummer oder Palettennummer gesucht werden:
Anschließend können die Datensätze nach
- Stunde
- Tag
- Monat
- Jahr
Die Daten können über die Drucken-Funktionalität des Browsers ausgedruckt werden.
Alternativ können die exportieren Daten über Excel importiert und analysiert werden:
zurück zur BEMACON Process-Engine
Alle Namen von Produkten und Dienstleistungen sind Marken der jeweiligen Firmen.