3 Stimmen

Inkonsistente Barcode-Ergebnisse bei Verwendung von ZBarReaderViewController in iOS

Ich mache eine iOS-App, in der ich die Barcodes scannen muss. Ich habe ZBarReaderViewController zum Scannen der Barcodes verwendet. Manchmal liefert es das Ergebnis genau, aber manchmal liefert es einen unbekannten Wert wie diesen &7&#,Ac9. Mein Bild ist Geben Sie hier eine Bildbeschreibung ein Mein Code ist

 -(IBAction)scanBarCode:(id)sender
{
reader = [ZBarReaderViewController new];
     reader.readerDelegate = self;
     reader.supportedOrientationsMask = ZBarOrientationMaskAll;
    reader.cameraFlashMode = UIImagePickerControllerCameraFlashModeOff;  

if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone && [UIScreen mainScreen].bounds.size.height * [UIScreen mainScreen].scale >= 1136)
    [reader.readerView setScanCrop:(CGRect){ { 0.25, 0.08 }, { 0.07, 0.84} }];//.25
else
    [reader.readerView setScanCrop:(CGRect){ { 0.23, 0.08 }, { 0.09, 0.84} }];

 ZBarImageScanner *scanner = reader.scanner;
 // TODO: (optional) zusätzliche Reader-Konfiguration hier

 // BEISPIEL: Deaktivieren von selten verwendeten I2/5 zur Leistungssteigerung
 /*[scanner setSymbology: ZBAR_I25
 config: ZBAR_CFG_ENABLE
 to: 0];*/

//swetha test
[scanner setSymbology: 0
               config: ZBAR_CFG_ENABLE
                   to: 0];
// EAN 13 aktivieren
[scanner setSymbology: ZBAR_EAN13
               config: ZBAR_CFG_ENABLE
                   to: 1];
// UPC-A aktivieren
[scanner setSymbology: ZBAR_UPCA
               config: ZBAR_CFG_ENABLE
                   to: 1];
// Code 128 aktivieren
[scanner setSymbology: ZBAR_CODE128
               config: ZBAR_CFG_ENABLE
                   to: 1];
 [self presentViewController:reader animated:YES completion:nil];
 [reader release];

}

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
     id results =
     [info objectForKey: ZBarReaderControllerResults];
     ZBarSymbol *symbol = nil;
     for(symbol in results)
     // BEISPIEL: nur den ersten Barcode erfassen
     break;

     // BEISPIEL: etwas Nützliches mit den Barcode-Daten machen
     serialnumber.text = symbol.data;

     // BEISPIEL: etwas Nützliches mit dem Barcode-Bild machen
     //resultImage.image =
     //[info objectForKey: UIImagePickerControllerOriginalImage];

     // HINZUFÜGEN: Controller schließen (Achtung! Vom *Reader* schließen!)
     barcodeClicked = 0;

     [picker dismissViewControllerAnimated:YES completion:nil];
}

Bitte lassen Sie mich wissen, wenn ich nicht deutlich genug bin. Vielen Dank im Voraus.

0voto

JoeGalind Punkte 3022

Meine imagepickerControll-Funktion sieht wie folgt aus:

- (void) imagePickerController: (UIImagePickerController*)reader didFinishPickingMediaWithInfo: (NSDictionary*) info {
  @try {
    id results = [info objectForKey: ZBarReaderControllerResults];
    for(id obj in results) {
      ZBarSymbol *symbol = obj;
      serialnumber.text = [symbol data];
    }
  }
  @catch (NSException *ex) {
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Fehler" message:[NSString stringWithFormat:@"%@",ex]
                                                delegate:self cancelButtonTitle:@"OK" otherButtonTitles: nil];
    [alert show];
  }
  barcodeClicked = 0;
  [reader dismissViewControllerAnimated:YES completion:nil];  
}

Ich würde dringend empfehlen, try-catch zu verwenden und alle Ergebnisse durchzugehen, da es möglicherweise 2 verschiedene Barcodes interpretiert, wenn sie nah beieinanderliegen, und das Objekt als ZBarSymbol zu interpretieren.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X