溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

VB.NET如何實(shí)現(xiàn)條形碼編程

發(fā)布時間:2021-12-02 09:53:05 來源:億速云 閱讀:221 作者:小新 欄目:編程語言

這篇文章給大家分享的是有關(guān)VB.NET如何實(shí)現(xiàn)條形碼編程的內(nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

條形碼技術(shù)廣泛應(yīng)用于各行各業(yè),你隨便拿起一本書、一包薯片都可以在外包裝上找到,利用條碼讀取機(jī)便可將這一條條黑白相間、粗細(xì)不同的垂直線條識別而轉(zhuǎn)換為具體的數(shù)值,并將這個數(shù)值返回到計(jì)算機(jī)中進(jìn)行處理。正是這樣,有了條形碼技術(shù),人們很方便就能取得該商品的有關(guān)信息如商品名稱、規(guī)格、價格等,因?yàn)槊糠N商品都有其對應(yīng)的條形碼,這個條形碼計(jì)算機(jī)(終端、服務(wù)器)中就可以迅速返回用戶,從數(shù)據(jù)庫中讀取約定的商品,信息使得銷售、進(jìn)貨、存貨等等管理更有效率,也對防止假冒偽劣又一定的抑制作用。

條碼的編碼方式有多種,不同行業(yè),不同國家標(biāo)準(zhǔn)也不盡相同。條形碼通過線條的粗細(xì)來表達(dá)其數(shù)值。至于接口方式一般也有多種,如鍵盤口的、串行口的。一般傳感裝置是光罩式的,也有筆式的。
上面籠籠統(tǒng)統(tǒng)地談了一些關(guān)于條形碼的知識,可幫助你更好地閱讀以下更深入的內(nèi)容。條形碼有關(guān)概念先說到這里,接著是詳細(xì)具體的編程實(shí)現(xiàn)方法。

一、VB.NET條形碼編程中的讀取

用過鍵盤口式的掃條碼工具的朋友就知道,它就如同在鍵盤上按下數(shù)字鍵一樣,基本不需任何編程和處理。但如果你使用的是其它接口的話,可能你就要為該設(shè)備編寫通訊代碼了。以下有一段簡單的25針串口的條碼讀取器通訊代碼。

Option Explicit  Dim sData As String Private Sub Form_Load()  With MSComm1      .CommPort = 3 '設(shè)為COM3,試運(yùn)行的系統(tǒng)而定,你可提供一個Combox讓用戶選擇。     .PortOpen = True '打開通訊端口  End With End Sub     Private Sub MSComm1_OnComm()        Dim EndPos As Integer   Select Case MSComm1.CommEvent      Case comEvReceive '當(dāng)有數(shù)據(jù)傳送過來時        sData = sData & Trim(MSComm1.Input)        '檢索回車,通常讀卡機(jī)每組數(shù)據(jù)結(jié)尾都返回一個回車作為結(jié)束符        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         Private Sub cmdEnd_Click()    MSComm1.PortOpen = False '關(guān)閉端口    End End Sub

二、VB.NET條形碼編程中的生成

看完以上關(guān)于條碼讀取的代碼是否覺得很容易呢?對,在VB上編程本來就不難。以下關(guān)于條形碼生成的代碼也是很容易理解,只需使用一個OFFICE的附帶的BarCode控件就可以輕松打印出11種不同標(biāo)準(zhǔn)的條形碼,足以滿足我們的要求。想起我書架上的一本書中的一篇用Turbo C編寫條形碼打印程序文章,長篇大論,那時不知看了n天,打了n小時字結(jié)果也不盡人意,現(xiàn)在真是幸福多了:)。廢話說完,得回歸正題。且看條形碼生成的代碼及有關(guān)說明。

源代碼主要由兩個窗體(frmMain主窗體和frmOption條碼設(shè)置窗體)和兩個模塊組成
(modGetScreen.bas、SysDLG32.bas)??紤]到篇幅,這里只列出部分較為關(guān)鍵的代碼。

新建一個標(biāo)準(zhǔn)工程,添加一個名為(Microsoft Access BarCode Control9)的條形碼部件,并添加一個條碼控件到窗口,并將窗口改名為frmMain,如圖所示。由于控件比較多,這里不便細(xì)說,詳細(xì)內(nèi)容請看源代碼。

模塊modGetScreen.bas代碼如下:

Option Explicit

聲明BitBlt、GetDesktopWindow、GetWindowDC、ReleaseDC這幾個API函數(shù)略

Public RegUser As Boolean    Sub GetObjImage1(Obj As Object, OwnerForm As PictureBox, Picture1 As PictureBox)    'hDC    Dim hWndDesk As Long   Dim hDCDesk As Long   '區(qū)域表達(dá)變量    Dim x As Long   Dim y As Long   Dim w As Long   Dim h As Long          x = Obj.Left  Screen.TwipsPerPixelX    y = Obj.Top  Screen.TwipsPerPixelY    w = Obj.Width  Screen.TwipsPerPixelX    h = Obj.Height  Screen.TwipsPerPixelY    hDCDesk = OwnerForm.hdc    '取出圖像    Call BitBlt(Picture1.hdc, 0, 0, w, h, hDCDesk, x, y, vbSrcCopy)    Call ReleaseDC(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 '如果未注冊添加MASK標(biāo)記        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代碼如下:

Option Explicit

'條形碼設(shè)置模塊

Private Sub cboBig_Click()    BarCode1.Style = cboBig.ListIndex '改變標(biāo)準(zhǔn)  End Sub         Private Sub cboDirection_Click()    BarCode1.Direction = cboDirection.ListIndex '改變方向  End Sub         Private Sub cboLine_Click()    BarCode1.LineWeight = cboLine.ListIndex '改變線寬  End Sub         Private Sub cboSmall_Click()    BarCode1.SubStyle = cboSmall.ListIndex '改變樣式  End Sub         Private Sub Check1_Click()    BarCode1.ShowData = Check1.Value '是否顯示數(shù)據(jù)  End Sub         Private Sub cmdChange_Click()  '設(shè)置長、寬大小  BarWidth = BarCode1.Height  BarHeight = BarCode1.Width  cmdRefresh_Click  End Sub         Private Sub cmdOK_Click()  '傳送條形碼設(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 End Sub         Private Sub cmdRefresh_Click()    BarCode1.Width = BarWidth    BarCode1.Height = BarHeight  End Sub         Private Sub Form_Load()  LoadBarInfo  BarWidth = BarCode1.Width  BarHeight = BarCode1.Height  End Sub         Sub LoadBarInfo() '初始化選項(xiàng)  LoadBigClass cboBig  LoadSmallClass cboSmall  LoadLineSize cboLine  LoadDirection cboDirection  End Sub Sub LoadBigClass(cbo As ComboBox) '條碼標(biāo)準(zhǔn)    With cbo      .AddItem "UPC-A"     .AddItem "UPC-E"     .AddItem "EAN-13"     .AddItem "EAN-8"     .AddItem "Case Code"     .AddItem "Codabar (NW-T)"     .AddItem "Code-39"     .AddItem "Code-128"     .AddItem "U.S. Postnet"     .AddItem "U.S. Postal FIM"     .AddItem "JP Post"     .ListIndex = 2    End With End Sub Sub LoadSmallClass(cbo As ComboBox) '條碼樣式    With cbo      .AddItem "Standard"     .AddItem "2-Digit Supplement"     .AddItem "5-Digit Supplement"     .AddItem "POS Case Code"     .ListIndex = 0    End With  End Sub

許多人在編寫數(shù)據(jù)庫應(yīng)用程序時,都想要加上條形碼功能加強(qiáng)工作效率,尤其是銷售管理,圖書館管理這類流量大的應(yīng)用軟件,但由于條形碼技術(shù)難以掌握、標(biāo)誰又多以及過去的技術(shù)種種原因,使得許多人望而卻步

感謝各位的閱讀!關(guān)于“VB.NET如何實(shí)現(xiàn)條形碼編程”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學(xué)到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI