Artery在AT32微控制器上实现QR Decode应用程序的控制方法

1 一维条形码、二维码简介

1.1 一维条形码

一维条码是由一组规则排列的条、空以及对应的字符组成的标记,“条”指对光线反射率较低的部分,“空”指对光线反射率较高的部分,这些条和空组成的数据表达一定的信息,并能够用特定的设备识读,转换成与计算机兼容的二进制和十进制信息。条形码可以标出物品的生产国、制造厂家、商品名称、生产日期、图书分类号、邮件起止地点、类别、日期等许多信息,因而在商品流通、图书管理、邮政管理、银行系统等许多领域都得到广泛的应用。

一维条码只是在一个方向(一般是水平方向)表达信息,而在垂直方向则不表达任何信息,虽然提高信息录入的速度,减少差错率,但是其空间利用率较低,数据容量较小。

 

1.2 二维码

二维码(2-dimensional bar code)是用某种特定的几何图形按一定规律在平面(二维方向上)分布的黑白相间的图形记录数据符号信息的;在代码编制上巧妙地利用构成计算机内部逻辑基础的“0”、“1”比特流的概念,使用若干个与二进制相对应的几何形体来表示文字数值信息,通过图象输入设备或光电扫描设备自动识读以实现信息自动处理。

二维码由于自身设计特点,可包含更多的信息量,编码信息范围更广,并且由于二维码具有一定的校验功能等。同时还具有对不同行的信息自动识别功能、以及处理图形旋转变化点,二维码译码更加准确,其误码率为千万分之一。下图为QR二维码构造框图。

图 1. QR 码符号的结构

 

 

1)  位置探测图形、位置探测图形分隔符:用于对二维码的定位,对每个QR码来说,位置都是固定存在的,只是大小规格会有所差异;这些黑白间隔的矩形块很容易进行图像处理的检测。

2)  定位图形:这些小的黑白相间的格子就好像坐标轴,在二维码上定义了网格。

3)  格式信息:表示该二维码的纠错级别,分为L、M、Q、H;

4)  数据区域:使用黑白的二进制网格编码内容。8个格子可以编码一个字节。

5)  版本信息:即二维码的规格,QR码符号共有40种规格的矩阵(一般为黑白色),从21x21(版本1),到177x177(版本40),每一版本符号比前一版本每边增加4个模块。

6)  纠错码字:用于修正二维码损坏带来的错误。



 2 QR 二维码解码流程

了解了QR二维码的构造,下面我们来了解解码流程, QR二维码的解码流程如下图2所示。

图 2. QR 码译码步骤

 

 

1)  定位并获取符号图像。深色与浅色模块识别为“ 0”与“1”的阵列。

2)  识读格式信息(如果需要,去除掩模图形并完成对格式信息模块的纠错,识别纠错等级与掩模图形参考)。

3)  识读版本信息,确定符号的版本。

4)  用掩模图形参考,从格式信息中得出对编码区的位图进行异或处理消除掩模。

5)  根据模块排列规则,识读符号字符,恢复信息的数据与纠错码字。

6)  用与纠错级别信息相对应的纠错码字检测错误,如果发现错误,立即纠错。

7)  根据模式指示符和字符计数指示符将数据码字划分成多个部分。

8)  最后,按照使用的模式译码得出数据字符并输出结果。

二维码的解码流程具体实现的步骤和方法是比较复杂,涉及到了QR二维码的标准规则及相对应的算法,知识点很多,大家感兴趣的话可以自己多去网上查阅资料了解。



3 QR decode 快速使用方法



3.1 硬件资源

1)  LCD 9341

2)  外接Buzzer(PE15)

3)  Arduio

4)  AT-START-F403 V1.2  实验板

5)  Sensor BF3901

6)  USB

7)  USER key

8)  UART4_TX(PC10)

图 3.  硬件资源图

 

 

Note:        

1.该demo是基于AT32F403的硬件条件,若使用者需要在AT32其他型号上使用,请修改相应配置即可。

2.供电部分:使用电源供电,或USB线供电(勿使用Link单独供电)。

 

 

3.2 QR decode demo 使用

1)  打开QR decode project源程序,选择相应的target(如下图,提供支持F403与F403A的target),编译后下载到实验板。

 

2)  由于该demo运行占用了169K的SRAM,所以在使用demo前需开启芯片的扩展SRAM功能(扩展为224KB),为了方便用户使用,demo已经在启动文件中开启了此项功能。

3)  连接USB线到PC,通过上位机可以识别到该设备:Artery Virtual COM Port.  注意需要安装USB驱动:Artery_VirtualCOM_DriverInstall.exe

4)  根据LCD显示信息,查看BF3901初始化是否成功,并按下USER key按键,开启QR  解码侦测。

5)  将摄像头BF3901对准二维码,  LCD显示当前抓取的摄像头图像,此时芯片一直在运算QR解码。

6)  若芯片一直没有解析到二维码,一维码数据,则会一直运行下去,直到解析到数据,如图4所示。蜂鸣器会响一下,并且将解析到数据通过USB传输到上位机,如图5所示。

7)  若芯片未解析到图码数据,串口此时会打印Not detect!,若解析到图码数据,则会将解析到的数据一并打印下来,如图7所示。后续BF3901会连续侦测二维码图像,并会计数重复扫描到的信号。若想将BF3901捕获到的信号显示在LCD上,可以再次按下USER key按键。

Ps. QR decode  默认只侦测二维码,若要侦测全部图码等,需开启宏定义:Detect_all。  

图 4. LCD 显示解析数据

 

 

图 5. USB 传到上位机数据

 

 

图 6. UART4 打印结果

 

 

技术文档

类型标题档案
硬件Application Note_AN0006_QR_Decode_to_VirtualComPort

★博文内容参考自 网站,与平台无关,如有违法或侵权,请与网站管理员联系。

★文明上网,请理性发言。内容一周内被举报5次,发文人进小黑屋喔~

评论