我正在使用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_DENSITY
和viewWillAppear
都更改为3,但这没有任何影响。
ZBarReaderViewController
和ZBarReaderView
的扫描机制有什么区别?我能做些什么来压制错误的结果?
由于
这里有一些相关的代码片段。
在.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];
}
答案 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];
我发现这样做可以让我得到更准确的结果(也更快)。