2012-01-13 2 views
0

У меня есть приложение, которое использует Zbar SDK У меня все работает и он отлично сканирует QR-коды. Однако, когда я пытаюсь сканировать штрих-коды UPC-A (продукты Grocery), он возвращается с совершенно другим номером, чем на штрих-код.ZBAR iPhone SDK вопрос.

Например: Я просматриваю 03800051156 я получаю в результате: 156749328

Как вы можете видеть совершенно разные!

- (IBAction)scanButtonTapped 
{ 
    // ADD: present a barcode reader that scans from the camera feed 
    ZBarReaderViewController *reader = [ZBarReaderViewController new]; 
    reader.readerDelegate = self; 

    ZBarImageScanner *scanner = reader.scanner; 
    // TODO: (optional) additional reader configuration here 

    // EXAMPLE: Set UPC-A 
    [scanner setSymbology: ZBAR_UPCA 
        config: ZBAR_CFG_ENABLE 
         to: 1]; 

    // present and release the controller 
    [self presentModalViewController: reader 
          animated: YES]; 
    [reader release]; 
} 


- (void) imagePickerController: (UIImagePickerController*) reader 
didFinishPickingMediaWithInfo: (NSDictionary*) info 
{ 
    // ADD: get the decode results 
    id<NSFastEnumeration> results = 
    [info objectForKey: ZBarReaderControllerResults]; 
    ZBarSymbol *symbol = nil; 
    for(symbol in results) 
     // EXAMPLE: just grab the first barcode 
     break; 

    //URL 
    NSString *urlString = symbol.data; 
    NSURL *url = [NSURL URLWithString:urlString]; 
    [scanWebView loadRequest:[NSURLRequest requestWithURL:url]]; 

    NSLog(@"Type UPC %d", symbol.type); 

    NSLog(@"Reader UPC %d", urlString); 
    AppDataObject* theDataObject = [self theAppDataObject]; 
    theDataObject.UPC = urlString; 

    // EXAMPLE: do something useful with the barcode data 
    resultText.text = symbol.data; 
    // ADD: dismiss the controller (NB dismiss from the *reader*!) 
    [reader dismissModalViewControllerAnimated: YES]; 

    // ADD Load the ProductInfo view after a slight delay to let the other VC resign. 
    [self performSelector:@selector(loadProduct) withObject:nil afterDelay:1.0]; 
} 
+0

Это странно, какое устройство вы читаете с? Возможно, вы захотите вытащить строку «setSymbology», когда вы настроите читателя (не уверен, что это будет иметь отрицательный эффект). По умолчанию UPCA включен. Кроме того, попробуйте запустить «symbol.typeName» в методе «didFinishPickingMedia ....», чтобы узнать, распознан ли тип кода. –

+0

iPhone 4, EAN-13 по умолчанию я включил UPC-A, но он по-прежнему дает мне такой же странный результат. Я удалил setSymbology и NADA. Также я регистрирую файл symbol.type (см. Код), и я получаю UPC 12, который является UPC-A: (до того, как он возвращался EAN-13 – KDM

ответ

1

Вы вход urlString как десятичные, поэтому вы печатаете значение указателя на urlString, а не значение фактической строки.

Try:

NSLog(@"Reader UPC %@", urlString); 
+0

Я решил, что это один из LONG-времени назад. Я скопировал и вставил NSlog не изменяя этого. Глупая ошибка. – KDM

Смежные вопросы