Эффективный сканер штрих-кода iOS - PullRequest
0 голосов
/ 07 декабря 2011

Я работаю над приложением для iOS, и мне интересно встроить в него уже разработанный и протестированный сканер штрих-кода. Я пытался ZXING, но это никогда не извлекает цифры из него. Моя цель - отсканировать это изображение и вытащить из него 24 символа.

Если что-то еще не разработано, я бы сам хотел его построить. Как начать, чтобы изначально создать его для 1D штрих-кодов?

enter image description here

Используя zxing, я сейчас использую этот кусок кода.

- (IBAction)scanPressed:(id)sender {

    ZXingWidgetController *widController = [[ZXingWidgetController alloc] initWithDelegate:self showCancel:YES OneDMode:YES];

    zxing::oned::Code128Reader *code128Reader = new zxing::oned::Code128Reader();
    MultiFormatOneDReader *mfReader = [[MultiFormatOneDReader alloc] initWithReader:code128Reader];
    NSSet *readers = [[NSSet alloc ] initWithObjects:mfReader,nil];
    [mfReader release];

    widController.readers = readers;
    [readers release];

    NSBundle *mainBundle = [NSBundle mainBundle];
    widController.soundToPlay =
    [NSURL fileURLWithPath:[mainBundle pathForResource:@"beep-beep" ofType:@"aiff"] isDirectory:NO];
    [self presentModalViewController:widController animated:YES];
    [widController release];
}

Ответы [ 3 ]

3 голосов
/ 08 декабря 2011

Сначала я попробовал ZXing SDK, но это не сработало. Затем я попробовал ZBar SDK, который работал просто потрясающе.

Если в будущем кому-то понадобится то же самое, я опубликую ссылку, которая помогла мне заставить его работать.

http://zbar.sourceforge.net/iphone/sdkdoc/tutorial.html

2 голосов
/ 07 декабря 2011

Если это штрих-код «Код 128», обратите внимание на вариант кода.

Например, если вы используете zxing, вы успешно отсканировали код, но декодированные значения не совпадают с числами под штрих-кодом.Вероятно, это связано с тем, что zxing успешно декодировал байты штрих-кода, но не отображал результат с использованием ожидаемого алфавита.

Код 128 существует в трех вариантах:

  • Код 128 A, который используеталфавит "!#$%&'()*+.-/0123456789:;<=>?@ ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_
  • код 128 A, который использует более широкий алфавит "!#$%&'()*+.-/0123456789:;<=>?@ ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`` abcdefghijklmnopqrstuvwxyz{|}~
  • код 128 C, который кодирует цифры 0-9

Возможно, zxing возвращает 128-А или 128-B интерпретация штрих-кода, а не 128-C вариант?В таких случаях это будет означать, что сканирование работает правильно, но вы можете принудительно настроить формат штрих-кода, чтобы он мог правильно его интерпретировать.

1 голос
/ 08 декабря 2011

Может быть, я ошибаюсь по этому поводу базы кодов zxing для iphone допускает только QR-коды.С сайта сайта http://code.google.com/p/zxing/

Есть также дополнительные модули, которые добавляются и / или периодически поддерживаются:

zxing.appspot.com: The source behind our web-based barcode generator
csharp: Partial C# port
cpp: Partial C++ port
**iphone: iPhone client + port to Objective C / C++ (QR code only)**
jruby: Ruby wrapper
actionscript: partial port to Actionscript
...