栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

ZBar源码分析:zbar

ZBar源码分析:zbar

2021SC@SDUSC

decoder.c,config.c分析

zbar_decoder_set_config方法,将指示符号的配置(0表示全部)设置为指定值,成功返回0,失败返回非0(配置不适用于指定的符号,或值超出范围)。

int zbar_decoder_set_config (zbar_decoder_t *dcode,
                             zbar_symbol_type_t sym,
                             zbar_config_t cfg,
                             int val)
{
    if(sym == ZBAR_NONE) {
        static const zbar_symbol_type_t all[] = {
	    ZBAR_EAN13, ZBAR_EAN2, ZBAR_EAN5, ZBAR_EAN8,
            ZBAR_UPCA, ZBAR_UPCE, ZBAR_ISBN10, ZBAR_ISBN13,
            ZBAR_I25, ZBAR_DATABAR, ZBAR_DATABAR_EXP, ZBAR_CODABAR,
	    ZBAR_CODE39, ZBAR_CODE93, ZBAR_CODE128, ZBAR_QRCODE, 
	    ZBAR_PDF417, 0
        };
        const zbar_symbol_type_t *symp;
        for(symp = all; *symp; symp++)
            zbar_decoder_set_config(dcode, *symp, cfg, val);
        return(0);
    }

    if(cfg >= 0 && cfg < ZBAR_CFG_NUM)
        return(decoder_set_config_bool(dcode, sym, cfg, val));
    else if(cfg >= ZBAR_CFG_MIN_LEN && cfg <= ZBAR_CFG_MAX_LEN)
        return(decoder_set_config_int(dcode, sym, cfg, val));
    else
        return(1);
}

zbar_decoder_parse_config方法,包含zbar_parse_config方法和zbar_decoder_set_config方法,使用zbar_parse_config解析配置字符串,并使用zbar_decoder_set_config应用于解码器,成功返回0,失败返回非0。

static inline int zbar_decoder_parse_config (zbar_decoder_t *decoder,
                                             const char *config_string)
{
    zbar_symbol_type_t sym;
    zbar_config_t cfg;
    int val;
    return(zbar_parse_config(config_string, &sym, &cfg, &val) ||
           zbar_decoder_set_config(decoder, sym, cfg, val));
}

 zbar_parse_config方法(位于config.c)分析格式为“[symbology.]config[=value]”的配置字符串。需满足配置必须与识别的名称之一匹配。符号(如果存在)必须与一个可识别的名称匹配。如果未指定符号,则将其设置为0。如果未指定该值,则将其设置为1。如果配置解析成功,则返回0,否则返回1。由于方法代码数过多不做展示。

int zbar_parse_config (const char *cfgstr,
                       zbar_symbol_type_t *sym,
                       zbar_config_t *cfg,
                       int *val)

zbar_decoder_set_handler方法,设置数据处理程序回调,在zbar_decode_width()返回非零值之前,解码器将调用已注册的函数,传递NULL值以禁用回调,返回结果为以前注册的处理程序。

zbar_decoder_handler_t *
zbar_decoder_set_handler (zbar_decoder_t *dcode,
                          zbar_decoder_handler_t *handler)
{
    zbar_decoder_handler_t *result = dcode->handler;
    dcode->handler = handler;
    return(result);
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/581894.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号