1 25 package org.ofbiz.pos.device.impl; 26 27 import jpos.JposException; 28 import jpos.ScannerConst; 29 30 import org.ofbiz.base.util.Debug; 31 import org.ofbiz.pos.adaptor.DataEventAdaptor; 32 import org.ofbiz.pos.device.GenericDevice; 33 import org.ofbiz.pos.screen.PosScreen; 34 import org.ofbiz.pos.event.MenuEvents; 35 36 42 public class Scanner extends GenericDevice { 43 44 public static final String module = Scanner.class.getName(); 45 46 protected String deviceName = null; 47 protected int timeout = -1; 48 49 public Scanner(String deviceName, int timeout) { 50 super(deviceName, timeout); 51 this.control = new jpos.Scanner(); 52 } 53 54 protected void initialize() throws JposException { 55 Debug.logInfo("Scanner [" + control.getPhysicalDeviceName() + "] Claimed : " + control.getClaimed(), module); 56 final jpos.Scanner scanner = (jpos.Scanner) control; 57 58 scanner.setDecodeData(true); 60 61 scanner.addDataListener(new DataEventAdaptor() { 63 64 public void dataOccurred(jpos.events.DataEvent event) { 65 byte[] scanData = null; 66 int dataType = ScannerConst.SCAN_SDT_UNKNOWN; 67 68 try { 69 dataType = scanner.getScanDataType(); 70 scanData = scanner.getScanDataLabel(); 71 if (scanData == null || scanData.length == 0) { 72 Debug.logWarning("Scanner driver does not support decoding data; the raw result is used instead", module); 73 scanData = scanner.getScanData(); 74 } 75 76 scanner.clearInput(); 77 } catch (jpos.JposException e) { 78 Debug.logError(e, module); 79 } 80 81 processScanData(scanData, dataType); 82 } 83 }); 84 } 85 86 protected void processScanData(byte[] data, int dataType) { 87 if (data != null) { 88 if (!"main/pospanel".equals(PosScreen.currentScreen.getName())) { 90 PosScreen.currentScreen.showPage("pospanel"); 91 } 92 93 if (dataType == ScannerConst.SCAN_SDT_UNKNOWN) { 95 Debug.logWarning("Scanner type checking problems - check scanner driver", module); 96 } 97 98 PosScreen.currentScreen.getInput().clearInput(); 100 PosScreen.currentScreen.getInput().appendString(new String (data)); 101 102 MenuEvents.addItem(PosScreen.currentScreen, null); 105 } 106 } 107 } 108 109 | Popular Tags |