摘 要:條形碼功能強(qiáng)大,輸入方式具有速度快、準(zhǔn)確率高、可靠性強(qiáng)等特點(diǎn)特點(diǎn)在商品流通、工業(yè)生產(chǎn)上、倉貯標(biāo)證管理、信息服務(wù)等領(lǐng)域獲得了廣泛的應(yīng)用,介紹如何用VB輕松實(shí)現(xiàn)條形碼編程的方法。
關(guān)鍵詞:條形碼;編程接口;控件;窗體
中圖分類號(hào):TP文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):1672-3198(2008)10-0360-01
1 條形碼的讀取
用過鍵盤口式的掃條碼工具的朋友就知道,它就如同在鍵盤上按下數(shù)字鍵一樣,基本不需任何編程和處理。但如果你使用的是其它接口的話,可能你就要為該設(shè)備編寫通訊代碼了。以下有一段簡(jiǎn)單的25針串口的條碼讀取器通訊代碼。
Dim sData As String
Private Sub Form_Load()
With MSComm1
.CommPort = 3 '設(shè)為COM3,試運(yùn)行的系統(tǒng)而定。
.PortOpen = True'打開通訊端口
End With
End Sub
Private Sub MSComm1_OnComm()
Dim EndPos As Integer
Select Case MSComm1.CommEvent
Case comEvReceive '當(dāng)有數(shù)據(jù)傳送過來時(shí)
sData = sData Trim(MSComm1.Input)
EndPos = InStr(1, sData, Chr(13)) '檢索回車
If EndPos = 0 Then '如果未結(jié)束就繼續(xù)
Else '讀完一組。
lblBarCode.Caption = sData '顯示一組條形碼
With lstBarCode
.AddItem Mid(sData, 1, EndPos - 1) '添加一組條形碼到列表
End With
sData = “” '清空
End If
End Select
End Sub
2 條形碼的生成
關(guān)于條形碼生成的代碼也是很容易理解,只需使用一個(gè)OFFICE的附帶的BarCode控件就可以輕松打印出11種不同標(biāo)準(zhǔn)的條形碼,足以滿足我們的要求。
源代碼主要由兩個(gè)窗體(frmMain主窗體和frmOption條碼設(shè)置窗體)和兩個(gè)模塊組成(modGetScreen.bas、SysDLG32.bas)??紤]到篇幅,這里只列出部分較為關(guān)鍵的代碼。
新建一個(gè)標(biāo)準(zhǔn)工程,添加一個(gè)名為(Microsoft Access BarCode Control9)的條形碼部件,并添加一個(gè)條碼控件到窗口,并將窗口改名為frmMain。由于控件比較多,這里不便細(xì)說,詳細(xì)內(nèi)容請(qǐng)看源代碼。
模塊modGetScreen.bas部分代碼如下:
Option Explicit
Public RegUser As Boolean
Sub GetObjImage1(Obj As Object, OwnerForm As PictureBox, Picture1 As PictureBox)
Dim hWndDesk As Long
Dim hDCDesk As Long
'x,y,w,h為區(qū)域表達(dá)變量
x = Obj.Left Screen.TwipsPerPixelX
y = Obj.TopScreen.TwipsPerPixelY
w = Obj.WidthScreen.TwipsPerPixelX
h = Obj.HeightScreen.TwipsPerPixelY
hDCDesk = OwnerForm.hdc
Call BitBlt(Picture1.hdc, 0,0,w,h,hDCDesk,x,y, vbSrcCopy)'取出圖像
CallReleaseDC(hWndDesk,hDCDesk)
End Sub
主窗體frmMain.frm部分代碼如下:
Private Sub cmdPrint_Click()
'生成條形碼圖像
Dim r As Long, i As Integer, t As String,cfile As String
t = BarCode
For i = 0 To Val(Times) -1
BarCode1.Value=BarCode+i
DoEvents
Picture1.Refresh
GetObjImage1 BarCode1,Conel,Picture1
If RegUser=False Then
Picture1.PaintPicture Picture2.Picture, 300, 300
End If
If Dir(SavePath, vbDirectory)=“”Then MkDir SavePath
SavePath = SavePath IIf(Right(SavePath, 1) <> “”, “”, “”)
cfile = SavePath BarCode1.Value “.bmp”
SavePicture Picture1.Image, cfile '將條形碼保存為圖像文件以便打印
Next
BarCode = t
End Sub
條形碼設(shè)置窗體frmOption.frm代碼如下:
'條形碼設(shè)置模塊代碼
BarCode1.Style = cboBig.ListIndex '改變標(biāo)準(zhǔn)
BarCode1.Direction = cboDirection.ListIndex '改變方向
BarCode1.LineWeight = cboLine.ListIndex '改變線寬
BarCode1.SubStyle = cboSmall.ListIndex '改變樣式
BarCode1.ShowData = Check1.Value '是否顯示數(shù)據(jù)
'傳送條形碼設(shè)定到主界面
With frmMain.BarCode1
.LineWeight = BarCode1.LineWeight
.Style = BarCode1.Style
.SubStyle = BarCode1.SubStyle
.Direction = BarCode1.Direction
.Width = BarCode1.Width
.Height = BarCode1.Height
.ShowData = BarCode1.ShowData
Me.Hide
End With
With frmMain
.Picture1.Width = .BarCode1.Width
.Picture1.Height = .BarCode1.Height
.Conel.Width = .BarCode1.Width
.Conel.Height = .BarCode1.Height
End With
'初始化選項(xiàng)
LoadBarInfo
BarWidth = BarCode1.Width
BarHeight = BarCode1.Height
當(dāng)計(jì)算機(jī)配置了網(wǎng)絡(luò)控制器之類的接口軟、硬件時(shí),這個(gè)簡(jiǎn)單的條形碼系統(tǒng)就能讀入條形碼信息并根據(jù)要求生成條形碼打印或顯示出來。以上程序在VB6.0下調(diào)試通過。