2.4 KiB
inventory
A demo inventory application for the Psion Workabout MX: scan UPC barcodes, and (Phase 2) keep stock counts in a database file, adding stock or consuming it by scanning.
Written in PLIB C, built with the TopSpeed compiler (tsc /m scan).
Phases
- Phase 1 (current): scan and validate. Read UPC barcodes from the integral
laser and display them.
Modules:
upc(validation),bcode(scanner input),scan(the demo). - Phase 2 (next): inventory database. A DBF file keyed on UPC holding a
quantity and a name. Scan to add stock, scan to consume by a quantity unit.
Built on the SIBO
Dbf*API (p_dbf.h).
Build
tsc /m scan
Produces scan.img. scan.pr compiles upc.c, bcode.c, scan.c and links
scan.img.
How the scanner is read (important)
The Workabout MX integral laser is an undecoded (HHLC) scanner: it emits a
raw bar/space signal, not decoded ASCII. The hardware serial decoder in the
RS232/Barcode module handles only wands and wand-emulation scanners — the HC
guide explicitly lists "Undecoded Laser Scanner (HHLC)" as unsupported there.
That is why reading TTY:D directly returned nothing even though the laser's
own good-read LED lit.
The decode is done in software by a barcode decoder LDD. The SDK ships
several in \SIBOSDK\LIB; each registers the device BAR::
| LDD | Symbology |
|---|---|
BAREAN.LDD |
EAN / UPC |
BARC39.LDD |
Code 39 |
BAR128.LDD |
Code 128 |
BARITF.LDD |
Interleaved 2 of 5 |
BARMPLES.LDD |
MSI Plessey |
BARRAW.LDD |
raw / undecoded |
So the flow is: p_loadldd("BAREAN") → p_open("BAR:") → read decoded
barcodes. BAREAN.LDD must be present on the device for p_loadldd to find
it (copy it from \SIBOSDK\LIB, or load it via the system config).
The current build is a diagnostic: it dumps every byte of each read
(n=<count>: <decimal bytes> "<printable>") so the exact decoded format — length,
any type/prefix byte, terminator — can be confirmed before the reader and the
Phase 2 database key are finalised.
The BAR: read protocol
The precise read semantics of BAR: (data format, any symbology configuration
via escape sequences) live in the I/O Devices Reference manual, which is not
among the committed docs. The diagnostic build exists to establish that format
empirically. Once a scan prints, the reader (terminator handling, UPC
validation via upc.c) and Phase 2 follow.