// Treat all UPC and EAN variants as UPCs, in the sense that they are all product barcodes. public override ParsedResult parse(Result result) { BarcodeFormat format = result.BarcodeFormat; if (!(format == BarcodeFormat.UPC_A || format == BarcodeFormat.UPC_E || format == BarcodeFormat.EAN_8 || format == BarcodeFormat.EAN_13)) { return(null); } string rawText = getMassagedText(result); int length = rawText.Length; for (int x = 0; x < length; x++) { char c = rawText[x]; if (c < '0' || c > '9') { return(null); } } // Not actually checking the checksum again here string normalizedProductID; // Expand UPC-E for purposes of searching if (format == BarcodeFormat.UPC_E) { normalizedProductID = UPCEReader.convertUPCEtoUPCA(rawText); } else { normalizedProductID = rawText; } return(new ProductParsedResult(rawText, normalizedProductID)); }
/// <summary> /// Returns the zxing reader class for the current specified ScanMode. /// </summary> /// <returns></returns> internal static com.google.zxing.Reader GetReader(BarcodeFormat format) { Dictionary <object, object> zxingHints = new Dictionary <object, object>() { { DecodeHintType.TRY_HARDER, true } }; com.google.zxing.Reader r; switch (format.Name) { case "CODE_128": r = new com.google.zxing.oned.Code128Reader(); break; case "CODE_39": r = new com.google.zxing.oned.Code39Reader(); break; case "EAN_13": r = new com.google.zxing.oned.EAN13Reader(); break; case "EAN_8": r = new com.google.zxing.oned.EAN8Reader(); break; case "ITF": r = new com.google.zxing.oned.ITFReader(); break; case "UPC_A": r = new com.google.zxing.oned.UPCAReader(); break; case "UPC_E": r = new com.google.zxing.oned.UPCEReader(); break; case "QR_CODE": r = new com.google.zxing.qrcode.QRCodeReader(); break; case "DATAMATRIX": r = new com.google.zxing.datamatrix.DataMatrixReader(); break; case "ALL_1D": r = new com.google.zxing.oned.MultiFormatOneDReader(zxingHints); break; //Auto-Detect: case "UPC_EAN": default: r = new com.google.zxing.oned.MultiFormatUPCEANReader(zxingHints); break; } return(r); }
// Treat all UPC and EAN variants as UPCs, in the sense that they are all product barcodes. public static ProductParsedResult parse(Result result) { BarcodeFormat format = result.BarcodeFormat; if (!(BarcodeFormat.UPC_A.Equals(format) || BarcodeFormat.UPC_E.Equals(format) || BarcodeFormat.EAN_8.Equals(format) || BarcodeFormat.EAN_13.Equals(format))) { return(null); } // Really neither of these should happen: System.String rawText = result.Text; if (rawText == null) { return(null); } int length = rawText.Length; for (int x = 0; x < length; x++) { char c = rawText[x]; if (c < '0' || c > '9') { return(null); } } // Not actually checking the checksum again here System.String normalizedProductID; // Expand UPC-E for purposes of searching if (BarcodeFormat.UPC_E.Equals(format)) { normalizedProductID = UPCEReader.convertUPCEtoUPCA(rawText); } else { normalizedProductID = rawText; } return(new ProductParsedResult(rawText, normalizedProductID)); }
/// <summary> /// Returns the zxing reader class for the current specified ScanMode. /// </summary> /// <returns></returns> internal static com.google.zxing.Reader GetReader(BarcodeFormat format) { Dictionary<object, object> zxingHints = new Dictionary<object, object>() { { DecodeHintType.TRY_HARDER, true } }; com.google.zxing.Reader r; switch (format.Name) { case "CODE_128": r = new com.google.zxing.oned.Code128Reader(); break; case "CODE_39": r = new com.google.zxing.oned.Code39Reader(); break; case "EAN_13": r = new com.google.zxing.oned.EAN13Reader(); break; case "EAN_8": r = new com.google.zxing.oned.EAN8Reader(); break; case "ITF": r = new com.google.zxing.oned.ITFReader(); break; case "UPC_A": r = new com.google.zxing.oned.UPCAReader(); break; case "UPC_E": r = new com.google.zxing.oned.UPCEReader(); break; case "QR_CODE": r = new com.google.zxing.qrcode.QRCodeReader(); break; case "DATAMATRIX": r = new com.google.zxing.datamatrix.DataMatrixReader(); break; case "ALL_1D": r = new com.google.zxing.oned.MultiFormatOneDReader(zxingHints); break; //Auto-Detect: case "UPC_EAN": default: r = new com.google.zxing.oned.MultiFormatUPCEANReader(zxingHints); break; } return r; }
/// <summary> /// Returns the zxing reader class for the current specified ScanMode. /// </summary> /// <returns></returns> public static com.google.zxing.Reader GetReader() { com.google.zxing.Reader r; switch (WP7BarcodeManager.ScanMode.Name) { case "CODE_128": r = new com.google.zxing.oned.Code128Reader(); break; case "CODE_39": r = new com.google.zxing.oned.Code39Reader(); break; case "EAN_13": r = new com.google.zxing.oned.EAN13Reader(); break; case "EAN_8": r = new com.google.zxing.oned.EAN8Reader(); break; case "ITF": r = new com.google.zxing.oned.ITFReader(); break; case "UPC_A": r = new com.google.zxing.oned.UPCAReader(); break; case "UPC_E": r = new com.google.zxing.oned.UPCEReader(); break; case "QR_CODE": r = new com.google.zxing.qrcode.QRCodeReader(); break; case "DATAMATRIX": r = new com.google.zxing.datamatrix.DataMatrixReader(); break; //Auto-Detect: case "UPC_EAN": r = new com.google.zxing.oned.MultiFormatUPCEANReader(zxingHints); break; case "ALL_1D": r = new com.google.zxing.oned.MultiFormatOneDReader(zxingHints); break; default: r = null; if (LastCaptureResults != null) { LastCaptureResults.ExceptionThrown = new ArgumentException("Error: Unknown barcode type"); } throw new ArgumentException("Error: Unknown barcode type"); } return r; }