iOS条形码高效扫描仪

时间:2011-12-07 10:48:28

标签: ios barcode barcode-scanner

我正在研究iOS应用程序,我有兴趣将一些已开发和测试的条形码扫描仪嵌入其中。我尝试了zxing,但这从未提取出数字。我的目标是扫描此图像并从中获取24个字符。

如果没有已开发的东西,我想自己建一个。我应该如何开始从头开始创建一维条码?

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 个答案:

答案 0 :(得分:3)

我首先尝试了ZXing SDK,但它没有用。然后我尝试了ZBar SDK,效果非常棒。

如果以后某人需要同样的东西我将发布帮助我使其工作的链接。

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

答案 1 :(得分:2)

如果这是" Code 128"条形码,注意代码的变体。

例如,如果使用zxing,您成功扫描了代码,但解码后的值与条形码下的数字不匹配,可能是因为zxing成功解码了条形码字节,但没有使用预期的字母表。

Code 128有三种变体:

  • Code 128 A,使用字母"!#$%&'()*+.-/0123456789:;<=>?@ ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_
  • Code 128 A使用更宽的字母"!#$%&'()*+.-/0123456789:;<=>?@ ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`` abcdefghijklmnopqrstuvwxyz{|}~
  • 代码128 C,编码数字0-9

也许zxing返回条形码的128-A或128-B解释而不是128-C变体?在这种情况下,这意味着扫描工作正常,但您可以强制使用条形码格式,以便正确解释。

答案 2 :(得分:1)

也许我错了,iphone的zxing代码库只允许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