/* * scan.c - Phase 1 barcode diagnostic for the Workabout MX integral laser. * * Loads the EAN/UPC decoder LDD (BAREAN.LDD), opens the decoder device (BAR:), * and dumps every byte of each read so the decoded format (length, any prefix * or type byte, terminator) can be confirmed. * * The load and open results are printed and then a key is waited for BEFORE * anything else, so the numbers stay on screen even if the open fails (a failed * open would otherwise return instantly and the System screen would wipe the * message). Blocking I/O throughout; exit via the System screen. */ #include #include "bcode.h" GLDEF_C INT main(VOID) { VOID *chan; UBYTE buf[64]; INT loadErr, openErr, n, i; loadErr = bcodeLoad(); openErr = bcodeOpen(&chan); /* Show both results and hold the screen until a key is pressed. */ p_printf("load %s.LDD : %d\n", BCODE_LDD, loadErr); p_printf("open %s : %d\n", BCODE_DEV, openErr); p_printf("\n(0 = ok; for load, an 'already loaded' error is also ok)\n"); p_printf("Press a key to continue...\n"); p_getch(); if (openErr < 0) return 1; p_printf("\n%s open. Scan a barcode. Exit via the System screen.\n\n", BCODE_DEV); for (;;) { n = p_read(chan, buf, sizeof(buf)); if (n < 0) { p_printf("read err %d\n", n); continue; } if (n == 0) continue; p_printf("n=%d:", n); for (i = 0; i < n; i++) p_printf(" %d", buf[i]); p_printf(" \""); for (i = 0; i < n; i++) p_putch(buf[i] >= ' ' ? buf[i] : '.'); p_printf("\"\n"); } }