概述
二維碼、條形碼相信大家都非常熟悉了,條碼技術(shù)已經(jīng)廣泛應(yīng)用于我們生活當(dāng)中。微信掃二維碼、支付寶二維碼付款、商品條形碼、超市儲(chǔ)物柜條形碼等。但是由于二維碼復(fù)雜度,目前識(shí)別二維碼的設(shè)備還不夠豐富。對(duì)此本文檔利用帶浮點(diǎn)運(yùn)算的、大容量SRAM、高主頻芯片AT32F403A,調(diào)用雅特力提供的Artery_QR二維碼解碼庫(kù)在AT-START-F403A開(kāi)發(fā)板上來(lái)實(shí)現(xiàn)二維碼、CODE128CODE39I25EAN13條碼掃描識(shí)別。
一維條形碼、二維碼簡(jiǎn)介
一維條形碼
一維條碼是由一組規(guī)則排列的條、空以及對(duì)應(yīng)的字符組成的標(biāo)記,“條”指對(duì)光線(xiàn)反射率較低的部分,“空”指對(duì)光線(xiàn)反射率較高的部分,這些條和空組成的數(shù)據(jù)表達(dá)一定的信息,并能夠用特定的設(shè)備識(shí)讀,轉(zhuǎn)換成與計(jì)算機(jī)兼容的二進(jìn)制和十進(jìn)制信息。條形碼可以標(biāo)出物品的生產(chǎn)國(guó)、制造廠(chǎng)家、商品名稱(chēng)、生產(chǎn)日期、圖書(shū)分類(lèi)號(hào)、郵件起止地點(diǎn)、類(lèi)別、日期等許多信息,因而在商品流通、圖書(shū)管理、郵政管理、銀行系統(tǒng)等許多領(lǐng)域都得到廣泛的應(yīng)用。 一維條碼只是在一個(gè)方向(一般是水平方向)表達(dá)信息,而在垂直方向則不表達(dá)任何信息,雖然提高信息錄入的速度,減少差錯(cuò)率,但是其空間利用率較低,數(shù)據(jù)容量較小。
二維碼
二維碼(2-dimensional bar code)是用某種特定的幾何圖形按一定規(guī)律在平面(二維方向上)分布的黑白相間的圖形記錄數(shù)據(jù)符號(hào)信息的;在代碼編制上巧妙地利用構(gòu)成計(jì)算機(jī)內(nèi)部邏輯基礎(chǔ)的“0”、“1”比特流的概念,使用若干個(gè)與二進(jìn)制相對(duì)應(yīng)的幾何形體來(lái)表示文字?jǐn)?shù)值信息,通過(guò)圖象輸入設(shè)備或光電掃描設(shè)備自動(dòng)識(shí)讀以實(shí)現(xiàn)信息自動(dòng)處理。
二維碼由于自身設(shè)計(jì)特點(diǎn),可包含更多的信息量,編碼信息范圍更廣,并且由于二維碼具有一定的校 驗(yàn)功能等。同時(shí)還具有對(duì)不同行的信息自動(dòng)識(shí)別功能、以及處理圖形旋轉(zhuǎn)變化點(diǎn),二維碼譯碼更加準(zhǔn)確,其誤碼率為千萬(wàn)分之一。下圖為QR二維碼構(gòu)造框圖。
圖1. QR碼符號(hào)的結(jié)構(gòu)
1) 位置探測(cè)圖形、位置探測(cè)圖形分隔符:用于對(duì)二維碼的定位,對(duì)每個(gè)QR碼來(lái)說(shuō),位置都是固定存在的,只是大小規(guī)格會(huì)有所差異;這些黑白間隔的矩形塊很容易進(jìn)行圖像處理的檢測(cè)。
2) 定位圖形:這些小的黑白相間的格子就好像坐標(biāo)軸,在二維碼上定義了網(wǎng)格。 3) 格式信息:表示該二維碼的糾錯(cuò)級(jí)別,分為L(zhǎng)、M、Q、H; 4) 數(shù)據(jù)區(qū)域:使用黑白的二進(jìn)制網(wǎng)格編碼內(nèi)容。8個(gè)格子可以編碼一個(gè)字節(jié)。 5) 版本信息:即二維碼的規(guī)格,QR碼符號(hào)共有40種規(guī)格的矩陣(一般為黑白色),從21x21(版本1),到177x177(版本40),每一版本符號(hào)比前一版本每邊增加4個(gè)模塊。 6) 糾錯(cuò)碼字:用于修正二維碼損壞帶來(lái)的錯(cuò)誤。
QR二維碼解碼流程
了解了QR二維碼的構(gòu)造,下面我們來(lái)了解解碼流程,QR二維碼的解碼流程如下圖2所示。 圖2. QR碼譯碼步驟
1) 定位并獲取符號(hào)圖像。深色與淺色模塊識(shí)別為“0”與“1”的陣列。 2) 識(shí)讀格式信息(如果需要,去除掩模圖形并完成對(duì)格式信息模塊的糾錯(cuò),識(shí)別糾錯(cuò)等級(jí)與掩模圖形參考)。 3) 識(shí)讀版本信息,確定符號(hào)的版本。 4) 用掩模圖形參考,從格式信息中得出對(duì)編碼區(qū)的位圖進(jìn)行異或處理消除掩模。 5) 根據(jù)模塊排列規(guī)則,識(shí)讀符號(hào)字符,恢復(fù)信息的數(shù)據(jù)與糾錯(cuò)碼字。 6) 用與糾錯(cuò)級(jí)別信息相對(duì)應(yīng)的糾錯(cuò)碼字檢測(cè)錯(cuò)誤,如果發(fā)現(xiàn)錯(cuò)誤,立即糾錯(cuò)。 7) 根據(jù)模式指示符和字符計(jì)數(shù)指示符將數(shù)據(jù)碼字劃分成多個(gè)部分。 8) 最后,按照使用的模式譯碼得出數(shù)據(jù)字符并輸出結(jié)果。 二維碼的解碼流程具體實(shí)現(xiàn)的步驟和方法是比較復(fù)雜,涉及到了QR二維碼的標(biāo)準(zhǔn)規(guī)則及相對(duì)應(yīng)的算法,知識(shí)點(diǎn)很多,大家感興趣的話(huà)可以自己多去網(wǎng)上查閱資料了解。
QR decode快速使用方法
硬件資源
1) LCD 9341 2) 外接Buzzer(PE15) 3) Arduio 4) AT-START-F403A V1.0實(shí)驗(yàn)板 5) USB 6) Sensor BF3901 7) USER key 圖3. 硬件資源圖
注:1.該demo是基于AT32F403A的硬件條件,若使用者需要在AT32其他型號(hào)上使用,請(qǐng)修改相應(yīng)配置即可。
2.供電部分:使用電源供電,或USB線(xiàn)供電(勿使用Link單獨(dú)供電)。
QR USB HID keyboard Demo使用
1) 打開(kāi)QR decode project源程序,編譯后下載到實(shí)驗(yàn)板。 2) 由于該demo運(yùn)行占用了169K的SRAM,所以在使用demo前需開(kāi)啟芯片的擴(kuò)展SRAM功能(擴(kuò)展為224KB),為了方便用戶(hù)使用,demo已經(jīng)在啟動(dòng)文件中開(kāi)啟了此項(xiàng)功能。
3) 連接USB線(xiàn)到PC,通過(guò)上位機(jī)可以識(shí)別到該設(shè)備:HID Keyboard Device(標(biāo)準(zhǔn)鍵盤(pán)輸入模式,無(wú)須驅(qū)動(dòng)) 4) 根據(jù)LCD顯示信息,查看BF3901初始化是否成功,并按下USER key按鍵,開(kāi)啟QR解碼偵測(cè)。 5) 將攝像頭BF3901對(duì)準(zhǔn)二維碼,LCD顯示當(dāng)前抓取的攝像頭圖像,此時(shí)芯片一直在運(yùn)算QR解碼。 6) 若芯片一直沒(méi)有解析到二維碼,一維碼數(shù)據(jù),則會(huì)一直運(yùn)行下去,直到解析到數(shù)據(jù),如圖4所示。蜂鳴器會(huì)響一下,并且將解析到數(shù)據(jù)通過(guò)USB傳輸?shù)絇C,如圖5所示。 Ps. QR decode默認(rèn)只偵測(cè)二維碼,若要偵測(cè)全部圖碼等,需開(kāi)啟宏定義:Detect_all。 圖4. LCD顯示解析數(shù)據(jù)
圖5. USB傳到PC數(shù)據(jù)
審核編輯:湯梓紅
-
mcu
+關(guān)注
關(guān)注
146文章
17484瀏覽量
354628 -
二維碼
+關(guān)注
關(guān)注
7文章
440瀏覽量
26775 -
decode
+關(guān)注
關(guān)注
0文章
2瀏覽量
6421
原文標(biāo)題:AT32講堂015 | AT32 MCU實(shí)現(xiàn)QR Decode的應(yīng)用程序
文章出處:【微信號(hào):AT32 MCU 雅特力科技,微信公眾號(hào):AT32 MCU 雅特力科技】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
基于STM32的二維碼識(shí)別源碼+二維碼解碼庫(kù)lib
AN0006—AT32二維碼解碼(QR decode)和USB虛擬串口
二維碼是什么
如何識(shí)別單片機(jī)嵌入式二維碼解碼
單片機(jī)顯示二維碼的原理及實(shí)現(xiàn)
固定二維碼與變動(dòng)二維碼防偽標(biāo)簽的作用
二維碼技術(shù)的編譯規(guī)則分析

ATK QR二維碼和條碼識(shí)別庫(kù)的模塊資料和使用C語(yǔ)言代碼合集免費(fèi)下載

QR二維碼生成工具的詳細(xì)資料說(shuō)明

讀取二維碼掃描設(shè)備有哪些類(lèi)型
單片機(jī)顯示二維碼

評(píng)論