二維碼產生與掃瞄
# Smart之二維碼產生與二維碼掃瞄
# 1. 說明
範例通過攝像頭掃瞄識別條形碼與二維碼,以及根據內容產生對應的二維碼。範例需要使用到攝像機進行二維碼的掃瞄,使用該範例的計算機需配備攝像機功能。
二維條碼/二維碼(2-dimensional bar code)是用某種特定的幾何圖形按一定規律在平面(二維方向上)分佈的、黑白相間的、記錄數據符號資訊的圖形;在程式碼編制上巧妙地利用構成計算機內部邏輯基礎的「0」、「1」位元流的概念,使用若干個與二進制相對應的幾何形體來表示文字數值資訊,通過圖像輸入設備或光電掃瞄設備自動識讀以實現資訊自動處理:它具有條碼技術的一些共性:每種碼制有其特定的字符集;每個字元佔有一定的寬度;具有一定的校驗功能等。同時還具有對不同行的資訊自動識別功能、及處理圖形旋轉變化點。
通過範例學習,可以掌握攝像機識別條形碼的方式,並進行二維碼的產生。
# 2. 設計明細
開啟Smart智慧控制平臺,分別加入下插圖之控制元件。或者通過點選功能表欄[檔案]
-[打開專案]
選擇範例專案檔案來打開該範例。
①:TImage元件,控制元件名稱為Image1
。
②:TLabel元件,控制元件名稱為Label1
。
③:TVideoServer元件,控制元件名稱為VideoServer1
。
④:TLabel元件,控制元件名稱為Label2
。
⑤:TSwitchButton元件,控制元件名稱為SwitchButton1
。
⑥:TMemo元件,控制元件名稱為Memo1
。
⑦:TBarCode元件,控制元件名稱為BarCode1
。
Main窗體屬性設定
BorderStyle
:設定邊界樣式=bsDialog
。Caption
:設定窗體顯示的標題=二維碼產生與一維、二維碼掃瞄
。ClientHeight
:設定客戶區窗體的高度=438
。ClientWidth
:設定窗體客戶區的寬度=465
。
①Image1屬性設定
Align
:設定控制元件對齊方式=alClient
。Stretch
:設定圖片拉伸適應于控制元件。Picture
:設定圖片。點選Picture
屬性右側的[...]
按鈕,打開檔案上傳界面,點選[Load...]
從檔案瀏覽器中選擇對應的圖片檔案上傳,返回該界面下,待顯示出圖片後點擊[OK]
載入圖片。
②Label1屬性設定
Caption
:設定標籤內容=窗體相互傳值 主界面
。Font
:設定字型,雙擊該屬性或者點選屬性右側的[...]
以打開字型設定界面。
③VideoServer1屬性設定
BarCode
:是否開啟一維、二維碼的識別功能=True
。BarCodeInterval
:設定條碼識別功能的間隔時間,單位為ms,兼顧精度與速度可以選擇1000
。Height
:設定控制元件高度=264
。Width
:設定控制元件寬度=465
。
④Label2屬性設定
Caption
:設定標籤內容=相機開關
。Font
:設定字型,雙擊該屬性或者點選屬性右側的[...]
以打開字型設定界面。
⑤SwitchButton1屬性設定
Height
:設定控制元件高度=48
。Width
:設定控制元件寬度=48
。Stretch
:設定圖片拉伸=True
。SwitchOff
:設定處於關閉狀態時顯示的圖片。點選屬性右側的[...]
按鈕,打開檔案上傳界面,點選[Load...]
從檔案瀏覽器中選擇對應的圖片檔案上傳,返回該界面下,待顯示出圖片後點擊[OK]
載入圖片。
SwitchOn
:設定處於開啟狀態時顯示的圖片。點選屬性右側的[...]
按鈕,打開檔案上傳界面,點選[Load...]
從檔案瀏覽器中選擇對應的圖片檔案上傳,返回該界面下,待顯示出圖片後點擊[OK]
載入圖片。
⑥Memo1屬性設定
Height
:設定高度=112
。Width
:設定控制元件寬度=245
。
⑦BarCode1屬性設定
Height
:設定控制元件高度=112
。Width
:設定控制元件寬度=120
。Properties
屬性中可修改的內容:FitMode
:條形碼的大小適應模式,更改為ifmFit
。ModuleWidth
:設定模組的寬度,設定為4
。ShowText
:是否在二維碼底部顯示文字,設定為False
。Symbology
:條形碼的型別。設定為QRCode
。
# 3. 程式設計
# 3.1. 程式初始設定
該程式無初始設定。
# 3.2. 事件設定
- ⑤SwitchButton1-OnSwitch事件
點選以切換相機開啟或者關閉。
procedure TMyHandler.SwitchButton1Switch;
//開啟關閉相機
begin
if FThis.SwitchButton1.IsChecked then
FThis.VideoServer1.StartDevice
else
FThis.VideoServer1.StopDevice;
end;
2
3
4
5
6
7
8
- ③VideoServer1-OnBarCode
當控制元件識別到條形碼時觸發事件。
procedure TMyHandler.VideoServer1BarCode;
//掃瞄結果識別
begin
FThis.Memo1.Lines.Add('識別結果:' + BarCode);
FThis.BarCode1.Text := BarCode;
end;
2
3
4
5
6
# 4. 運行結果
通過工具欄儲存,將程式儲存為 sdb 專案檔案。
使用滑鼠點選工具欄運行(Run),測試運行結果。在程式啟動后,選擇相機設備,選擇完成後右側的選框出現可用的解析度,選擇合適的解析度選項,點選相機開關按鈕至開狀態,相機啟動,將二維碼或者條形碼對準攝像機,影象中出現二維碼會自動識別並在下方的文字框中顯示識別的內容,右側的二維碼控制元件會根據識別的內容產生對應的二維碼。