1

iPhone 用のプロジェクトで ZBarSDK を使用しています。

埋め込みリーダーとして 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次に、メソッドでand ZBAR_CFG_Y_DENSITYboth を 3 に変更しようとしましたviewWillAppearが、影響はありませんでした。

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];
}
4

1 に答える 1

1

Interleaved 2 of 5 コードを無効にしているようです。スキャンするタイプを知っていますか、それとも実際には I25 以外のすべてをスキャンしますか? その場合は、コード 39 のみなど、1 つのシンボル タイプのみを有効にしてみてください。

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

そうすることで、より正確な結果が得られることがわかりました(はるかに迅速にも)。

于 2013-01-25T21:19:47.043 に答える