本发明涉及pos机扫描技术领域,尤其涉及用于提升使用android系统的pda和pos机调用机器中的相机模组和软解码头进行快速扫码的方法。
背景技术:
现今,pos及pda类产品使用camera或者扫码头广泛应用于移动支付、外场扫码、内场盘点等多个领域。尤其在快递仓储物流等高频率使用pda及pos进行扫码的场景中,即点即扫是趋势。这个对整个扫码软件系统的设计和兼顾功耗有很大的挑战。
目前大部分的pos机及pda使用的是google基于linux内核开发的android系统,软件开发者会使用系统中标准框架来开发使用相机模组及不含解码模块单元的扫码头(后称软解码头)进行扫码的功能,系统层的软件api接口存在明文规定的执行顺序,环环相扣的设计初衷是为了更容易的实现手机的拍照/录像功能,可以让开发者不需要明白具体的底层逻辑就能开发出应用程序,但是对于扫码类产品来说这套框架显得格外的臃肿,无法满足目标场景对扫码的使用要求。
目前被大量使用的方案是从点击扫码按键开始依次启动camera/软扫码头,初始化芯片寄存器,芯片输出帧数据,再根据每一帧数据进行自动曝光调整并逐帧进行条码识别,当识别成功后关闭camera/软扫码头。通常以pos类产品使用13m,5m,1m像素摄像头为例从点击扫码按键到取到第一帧大约为300ms,再加上芯片的自动曝光算法逐帧进行调节到能够成功的解码的帧数据时整个过程会在400ms左右,完成一次扫码动作的时间会在500ms左右。该方案再搭配解码效果不好的算法或者camera帧率较低的产品上会好更长的时间,在高频场景的使用过程中会出现明显的卡顿现象,严重影响使用者的体验。
技术实现要素:
本发明的目的在于提出一种功耗低,扫码快的扫码方法。
为达到上述目的,本发明提出一种用于pos机产品的快速扫码方法,包括以下步骤:
步骤1:开启扫码设备;
步骤2:摄像头模组初始化;初始化cmos寄存器与对焦马达,初始化时关闭图像数据流进入低功耗状态;
步骤3:触发扫码;开启图像数据流,获取图像;
步骤4:调整曝光;
步骤5:扫描条码;
步骤6:结束扫码;关闭图像数据流,进入低功耗模式;等待下一次触发扫码,触发时执行步骤3,关闭扫码应用时执行步骤7;
步骤7:关闭扫码应用。
进一步的,在步骤1中,所述开启扫码设备为:android启动activity后,加载资源的时候对camera模组或软解码头模组进行上电。
进一步的,在步骤2中,初始化cmos寄存器与对焦马达,通过i2c总线写入对应cmos型号需要的初始化寄存器列表后执行;软件关闭图像的数据流,此时芯片会进入低功耗状态,并将工作模式配置成固定曝光时间和增益的方式;对焦马达设置为定焦模式。
进一步的,在步骤3中,开启图像数据流,通过系统回调取得芯片输出的数据帧送入解码库。
进一步的,在步骤4中,所述调整曝光为:根据当前图像调整下一帧(或n帧)图像的曝光参数。
与现有技术相比,本发明的优势之处在于:本发明的方法简单实用,成本低。该方法是通过改造扫码应用的逻辑,在扫码应用启动且未点击扫码按钮前会完成相机/软扫码头的开启,初始化芯片寄存器,通过软件手段实现摄像头不输出数据流。整个过程会随着扫码应用自启动过程中资源和配置的加载同时进行,在未触发扫码前芯片处在的状态不会造成额外的功耗,当外部触发扫码动作时,打开摄像头的数据流,这时候从按键到取得第一帧的时间近似等于芯片的帧率(30帧输出时约等于33ms,60帧输出时约等于16ms),当扫码结束时候关闭图形数据流使得camera或者软扫码头模组进入低功耗状态,用这种方法在未退出扫码应用前可以实现软件上最快时间取得图形数据帧和低功耗。当关闭扫码的程序或者机器进入休眠状态,执行关闭相机的动作。
本发明的扫码方法在触发扫码时不需要进行开启摄像头的动作,只需要开启图像数据流即可获得图像数据,大大减少了获取图像的时间;对cmos芯片进行及时准确的调整,使下一帧即可获取理想的图像;可兼顾快速扫码与低功耗;省去对焦过程,使其更快识别景深范围内的条码。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将对本发明的技术方案作进一步地说明。
本发明提出一种用于pos机产品的快速扫码方法,包括以下步骤:
步骤1:开启扫码设备;android启动activity后,加载资源的时候对camera模组或软解码头模组进行上电。
步骤2:摄像头模组初始化;摄像头模组初始化:初始化cmos寄存器与对焦马达,通过i2c总线写入对应cmos型号需要的初始化寄存器列表后执行。软件关闭图像的数据流,此时芯片会进入低功耗状态,并将工作模式配置成固定曝光时间和增益的方式。对焦马达设置为定焦模式。
步骤3:触发扫码;开启图像数据流,通过系统回调取得芯片输出的数据帧送入解码库。
步骤4:调整曝光;根据当前图像调整下一帧(或n帧)图像的曝光参数。
步骤5:扫描条码;对图片进行条码识别。
步骤6:结束扫码;关闭图像数据流,进入低功耗模式;等待下一次触发扫码,触发时执行步骤3,关闭扫码应用时执行步骤7。
步骤7:关闭扫码应用;退出扫码应用,对camera模组或扫码头模组下电。
本发明的方法简单实用,成本低。该方法是通过改造扫码应用的逻辑,在扫码应用启动且未点击扫码按钮前会完成相机/软扫码头的开启,初始化芯片寄存器,通过软件手段实现摄像头不输出数据流。整个过程会随着扫码应用自启动过程中资源和配置的加载同时进行,在未触发扫码前芯片处在的状态不会造成额外的功耗,当外部触发扫码动作时,打开摄像头的数据流,这时候从按键到取得第一帧的时间近似等于芯片的帧率(30帧输出时约等于33ms,60帧输出时约等于16ms),当扫码结束时候关闭图形数据流使得camera或者软扫码头模组进入低功耗状态,用这种方法在未退出扫码应用前可以实现软件上最快时间取得图形数据帧和低功耗。当关闭扫码的程序或者机器进入休眠状态,执行关闭相机的动作。
上述仅为本发明的优选实施例而已,并不对本发明起到任何限制作用。任何所属技术领域的技术人员,在不脱离本发明的技术方案的范围内,对本发明揭露的技术方案和技术内容做任何形式的等同替换或修改等变动,均属未脱离本发明的技术方案的内容,仍属于本发明的保护范围之内。
1.一种用于pos机产品的快速扫码方法,其特征在于,包括以下步骤:
步骤1:开启扫码设备;
步骤2:摄像头模组初始化;初始化cmos寄存器与对焦马达,初始化时关闭图像数据流进入低功耗状态;
步骤3:触发扫码;开启图像数据流,获取图像;
步骤4:调整曝光;
步骤5:扫描条码;
步骤6:结束扫码;关闭图像数据流,进入低功耗模式;等待下一次触发扫码,触发时执行步骤3,关闭扫码应用时执行步骤7;
步骤7:关闭扫码应用。
2.根据权利要求1所述的用于pos机产品的快速扫码方法,其特征在于,在步骤1中,所述开启扫码设备为:android启动activity后,加载资源的时候对camera模组或软解码头模组进行上电。
3.根据权利要求1所述的用于pos机产品的快速扫码方法,其特征在于,在步骤2中,初始化cmos寄存器与对焦马达,通过i2c总线写入对应cmos型号需要的初始化寄存器列表后执行;软件关闭图像的数据流,此时芯片会进入低功耗状态,并将工作模式配置成固定曝光时间和增益的方式;对焦马达设置为定焦模式。
4.根据权利要求1所述的用于pos机产品的快速扫码方法,其特征在于,在步骤3中,开启图像数据流,通过系统回调取得芯片输出的数据帧送入解码库。
5.根据权利要求1所述的用于pos机产品的快速扫码方法,其特征在于,在步骤4中,所述调整曝光为:根据当前图像调整下一帧(或n帧)图像的曝光参数。
技术总结