0

我在我的 iPhone 应用程序中成功使用了 ZBarSDK。唯一的问题是:有时扫描仪无法读取条形码。我没有找到如何设置超时(如果代码栏在 5 秒内无法读取,则中止扫描)。

有隐藏选项吗?还是诡计?

在此先感谢您的帮助。

4

1 回答 1

0

@le_jax ZBarSDk 配置为一组特定的符号,如此处所述

" ZBar 是一个开源软件套件,用于从各种来源读取条形码,例如视频流、图像文件和原始强度传感器。它支持许多流行的符号(条形码类型),包括 EAN-13/UPC-A、UPC- E、EAN-8、Code 128、Code 39、Interleaved 2 of 5 和 QR 码。 "

您可以使用诸如此类的 Web 资源测试应用程序的功能。

您在此处查询的内容为您尚未设置所需的符号系统

[scanner setSymbology: ZBAR_I25 config: ZBAR_CFG_ENABLE to: 0];

或与配置设置有关的东西。您可以从 zbar.h(ZBar SDK 的一部分)检查完整的支持符号集。

typedef enum zbar_symbol_type_e {
    ZBAR_NONE        =      0,  /**< no symbol decoded */
    ZBAR_PARTIAL     =      1,  /**< intermediate status */
    ZBAR_EAN2        =      2,  /**< GS1 2-digit add-on */
    ZBAR_EAN5        =      5,  /**< GS1 5-digit add-on */
    ZBAR_EAN8        =      8,  /**< EAN-8 */
    ZBAR_UPCE        =      9,  /**< UPC-E */
    ZBAR_ISBN10      =     10,  /**< ISBN-10 (from EAN-13). @since 0.4 */
    ZBAR_UPCA        =     12,  /**< UPC-A */
    ZBAR_EAN13       =     13,  /**< EAN-13 */
    ZBAR_ISBN13      =     14,  /**< ISBN-13 (from EAN-13). @since 0.4 */
    ZBAR_COMPOSITE   =     15,  /**< EAN/UPC composite */
    ZBAR_I25         =     25,  /**< Interleaved 2 of 5. @since 0.4 */
    ZBAR_DATABAR     =     34,  /**< GS1 DataBar (RSS). @since 0.11 */
    ZBAR_DATABAR_EXP =     35,  /**< GS1 DataBar Expanded. @since 0.11 */
    ZBAR_CODE39      =     39,  /**< Code 39. @since 0.4 */
    ZBAR_PDF417      =     57,  /**< PDF417. @since 0.6 */
    ZBAR_QRCODE      =     64,  /**< QR Code. @since 0.10 */
    ZBAR_CODE93      =     93,  /**< Code 93. @since 0.11 */
    ZBAR_CODE128     =    128,  /**< Code 128 */

    /** mask for base symbol type.
     * @deprecated in 0.11, remove this from existing code
     */
    ZBAR_SYMBOL      = 0x00ff,
    /** 2-digit add-on flag.
     * @deprecated in 0.11, a ::ZBAR_EAN2 component is used for
     * 2-digit GS1 add-ons
     */
    ZBAR_ADDON2      = 0x0200,
    /** 5-digit add-on flag.
     * @deprecated in 0.11, a ::ZBAR_EAN5 component is used for
     * 5-digit GS1 add-ons
     */
    ZBAR_ADDON5      = 0x0500,
    /** add-on flag mask.
     * @deprecated in 0.11, GS1 add-ons are represented using composite
     * symbols of type ::ZBAR_COMPOSITE; add-on components use ::ZBAR_EAN2
     * or ::ZBAR_EAN5
     */
    ZBAR_ADDON       = 0x0700,
} zbar_symbol_type_t;

我不太确定是否有诸如超时时间之类的东西来检查 ZBar 是否无法解码符号,但是可以肯定你有委托方法可以使用

- (void) readerView: (ZBarReaderView*) readerView didReadSymbols: (ZBarSymbolSet*) symbols
          fromImage: (UIImage*) image;

我可以建议的(我之前遇到的第二次进入扫描仪屏幕时无法扫描代码的问题)是您可以按照 SDK 中提供的示例重新配置 SDK,或者您可以确认支持的符号(以防万一您正在尝试解码一些不受支持的格式)。

如果您遇到任何设置超时期限的标准方法,请在 SO 上分享。

干杯!!

于 2012-10-20T12:04:01.010 回答