ZBAR SDK示例中的条形码解码错误

时间:2013-01-08 11:46:17

标签: objective-c ios6 zbar-sdk zbar

我正在使用ZBarSDK和iPhone项目。

我使用ZBar作为嵌入式阅读器。基本上在Interface Builder中连接UIView。将班级更改为ZBarReaderView并实施委托方法-(void)readerView: (ZBarReaderView*) view didReadSymbols: (ZBarSymbolSet*) syms fromImage: (UIImage*) img

大部分时间都可以正常使用。然而,条形码显然无法正确扫描。第一个块被解释错误。下次收到5008914...后,我会收到类似7001814...的内容,然后我会得到正确的4001954...

我回到了SDK中的“EmbedReader”示例,并查看是否可以找到可能需要进行的任何调整,并发现它也产生了相同的错误。如果我查看示例“ReaderSample”,则不会发生错误,但是这会使用ZBarReaderViewController的实例。

然后我尝试在我的ZBAR_CFG_X_DENSITY方法中将ZBAR_CFG_Y_DENSITYviewWillAppear都更改为3,但这没有任何影响。

ZBarReaderViewControllerZBarReaderView的扫描机制有什么区别?我能做些什么来压制错误的结果?

由于

这里有一些相关的代码片段。

在.h

@interface ScanVC:UIViewController<ZBarReaderViewDelegate>
{
    IBOutlet ZBarReaderView *readerView;
    ...
}
...
@property (nonatomic, retain) IBOutlet ZBarReaderView *readerView;
...

在.m

@synthesize readerView;
...
-(void) viewDidAppear: (BOOL) animated
{
    [[readerView scanner] setSymbology:0 config:ZBAR_CFG_X_DENSITY to: 3];
    [[readerView scanner] setSymbology:0 config:ZBAR_CFG_Y_DENSITY to: 3];
    [[readerView scanner] setSymbology:ZBAR_I25 config:ZBAR_CFG_ENABLE to:0];
    [readerView start];
}
...
- (void) readerView: (ZBarReaderView*) view didReadSymbols: (ZBarSymbolSet*) syms fromImage: (UIImage*) img
{
    for(ZBarSymbol *sym in syms) {
    ...
    }
    ...
}
...
-(void)viewDidLoad
{
    [readerView setDelegate: self];
}

1 个答案:

答案 0 :(得分:1)

我注意到您正在禁用Interleaved 2 of 5代码。你知道你将要扫描哪种类型,或者你实际上会扫描除了I25之外的所有类型吗?如果是这样,您可能希望尝试仅启用一种符号类型 - 例如,仅启用代码39:

[[readerView scanner] setSymbology:0 config:ZBAR_CFG_ENABLE to:0];
[[readerView scanner] setSymbology:ZBAR_CODE39 config:ZBAR_CFG_ENABLE to:1];

我发现这样做可以让我得到更准确的结果(也更快)。