自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

兩步精通VB.NET條形碼編程

開(kāi)發(fā) 后端
在我們的VB.NET項(xiàng)目中,經(jīng)常會(huì)遇到涉及到條形碼編程的問(wèn)題,VB.NET條形碼編程是很多程序員比較困惑的事,究竟什么是條形碼,如何在VB.NET中進(jìn)行條形碼編程?本文也許會(huì)給你一個(gè)答案。

現(xiàn)在的商品包裝、超市收銀等很多位置都會(huì)出現(xiàn)條形碼,在我們的VB.NET項(xiàng)目中也經(jīng)常會(huì)遇到涉及到VB.NET條形碼編程的工作,這里從條形碼的應(yīng)用和原理出發(fā),向大家介紹如何進(jìn)行VB.NET的條形碼編程。

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

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

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

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

  1. Option Explicit  
  2. Dim sData As String 
  3. Private Sub Form_Load()  
  4. With MSComm1   
  5.    .CommPort = 3 '設(shè)為COM3,試運(yùn)行的系統(tǒng)而定,你可提供一個(gè)Combox讓用戶選擇。  
  6.    .PortOpen = True '打開(kāi)通訊端口  
  7. End With 
  8. End Sub 
  9.     
  10. Private Sub MSComm1_OnComm()  
  11.     
  12.   Dim EndPos As Integer 
  13.   Select Case MSComm1.CommEvent  
  14.     Case comEvReceive '當(dāng)有數(shù)據(jù)傳送過(guò)來(lái)時(shí)  
  15.       sData = sData & Trim(MSComm1.Input)  
  16.       '檢索回車,通常讀卡機(jī)每組數(shù)據(jù)結(jié)尾都返回一個(gè)回車作為結(jié)束符  
  17.       EndPos = InStr(1, sData, Chr(13))  
  18.       If EndPos = 0 Then '如果未結(jié)束就繼續(xù)努力  
  19.       Else '讀完一組。  
  20.         lblBarCode.Caption = sData '顯示一組條形碼  
  21.         With lstBarCode  
  22.           .AddItem Mid(sData, 1, EndPos - 1) '添加一組條形碼到列表  
  23.         End With 
  24.         sData = "" '清空  
  25.       End If 
  26.   End Select 
  27. End Sub 
  28.  
  29.        
  30. Private Sub cmdEnd_Click()  
  31.   MSComm1.PortOpen = False '關(guān)閉端口  
  32.   End 
  33. End Sub 

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

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

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

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

模塊modGetScreen.bas代碼如下:

Option Explicit

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

  1. Public RegUser As Boolean    
  2. Sub GetObjImage1(Obj As Object, OwnerForm As PictureBox, Picture1 As PictureBox)  
  3.   'hDC  
  4.   Dim hWndDesk As Long 
  5.   Dim hDCDesk As Long 
  6.   '區(qū)域表達(dá)變量  
  7.   Dim x As Long 
  8.   Dim y As Long 
  9.   Dim w As Long 
  10.   Dim h As Long 
  11.        
  12.   x = Obj.Left  Screen.TwipsPerPixelX  
  13.   y = Obj.Top  Screen.TwipsPerPixelY  
  14.   w = Obj.Width  Screen.TwipsPerPixelX  
  15.   h = Obj.Height  Screen.TwipsPerPixelY  
  16.   hDCDesk = OwnerForm.hdc  
  17.   '取出圖像  
  18.   Call BitBlt(Picture1.hdc, 0, 0, w, h, hDCDesk, x, y, vbSrcCopy)  
  19.   Call ReleaseDC(hWndDesk, hDCDesk)  
  20.        
  21. End Sub 

主窗體frmMain.frm部分代碼如下:

  1. Private Sub cmdPrint_Click()  
  2. '生成條形碼圖像  
  3.   Dim r As Long, i As Integer, t As String,cfile As String '臨時(shí)變量  
  4.   t = BarCode  
  5.   For i = 0 To Val(Times) - 1  
  6.       
  7.     BarCode1.Value = BarCode + i  
  8.     DoEvents   
  9.     Picture1.Refresh  
  10.      
  11.     GetObjImage1 BarCode1, Conel, Picture1  
  12.       
  13.     If RegUser = False Then '如果未注冊(cè)添加MASK標(biāo)記  
  14.       Picture1.PaintPicture Picture2.Picture, 300, 300  
  15.     End If 
  16.       
  17.     If Dir(SavePath, vbDirectory) = "" Then MkDir SavePath  
  18.       
  19.     SavePath = SavePath & IIf(Right(SavePath, 1) <> """""")  
  20.       
  21.     cfile = SavePath & BarCode1.Value & ".bmp" 
  22.  
  23.     SavePicture Picture1.Image, cfile '將條形碼保存為圖像文件以便打印  
  24.   Next 
  25.   BarCode = t  
  26.        
  27. End Sub 

條形碼設(shè)置窗體frmOption.frm代碼如下:

Option Explicit

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

  1. Private Sub cboBig_Click()  
  2.   BarCode1.Style = cboBig.ListIndex '改變標(biāo)準(zhǔn)  
  3. End Sub 
  4.  
  5.        
  6. Private Sub cboDirection_Click()  
  7.   BarCode1.Direction = cboDirection.ListIndex '改變方向  
  8. End Sub 
  9.  
  10.        
  11. Private Sub cboLine_Click()  
  12.   BarCode1.LineWeight = cboLine.ListIndex '改變線寬  
  13. End Sub 
  14.  
  15.        
  16. Private Sub cboSmall_Click()  
  17.   BarCode1.SubStyle = cboSmall.ListIndex '改變樣式  
  18. End Sub 
  19.  
  20.        
  21. Private Sub Check1_Click()  
  22.   BarCode1.ShowData = Check1.Value '是否顯示數(shù)據(jù)  
  23. End Sub 
  24.  
  25.        
  26. Private Sub cmdChange_Click()  
  27. '設(shè)置長(zhǎng)、寬大小  
  28. BarWidth = BarCode1.Height  
  29. BarHeight = BarCode1.Width  
  30. cmdRefresh_Click  
  31. End Sub 
  32.  
  33.        
  34. Private Sub cmdOK_Click()  
  35. '傳送條形碼設(shè)定到主界面  
  36.   With frmMain.BarCode1  
  37.     .LineWeight = BarCode1.LineWeight  
  38.     .Style = BarCode1.Style  
  39.     .SubStyle = BarCode1.SubStyle  
  40.     .Direction = BarCode1.Direction  
  41.     .Width = BarCode1.Width  
  42.     .Height = BarCode1.Height  
  43.     .ShowData = BarCode1.ShowData  
  44.     Me.Hide  
  45.   End With 
  46.   With frmMain  
  47.     .Picture1.Width = .BarCode1.Width  
  48.     .Picture1.Height = .BarCode1.Height  
  49.     .Conel.Width = .BarCode1.Width  
  50.     .Conel.Height = .BarCode1.Height  
  51.   End With 
  52. End Sub 
  53.  
  54.        
  55. Private Sub cmdRefresh_Click()  
  56.   BarCode1.Width = BarWidth  
  57.   BarCode1.Height = BarHeight  
  58. End Sub 
  59.  
  60.        
  61. Private Sub Form_Load()  
  62. LoadBarInfo  
  63. BarWidth = BarCode1.Width  
  64. BarHeight = BarCode1.Height  
  65. End Sub 
  66.  
  67.        
  68. Sub LoadBarInfo() '初始化選項(xiàng)  
  69. LoadBigClass cboBig  
  70. LoadSmallClass cboSmall  
  71. LoadLineSize cboLine  
  72. LoadDirection cboDirection  
  73. End Sub 
  74. Sub LoadBigClass(cbo As ComboBox) '條碼標(biāo)準(zhǔn)  
  75.   With cbo  
  76.     .AddItem "UPC-A" 
  77.     .AddItem "UPC-E" 
  78.     .AddItem "EAN-13" 
  79.     .AddItem "EAN-8" 
  80.     .AddItem "Case Code" 
  81.     .AddItem "Codabar (NW-T)" 
  82.     .AddItem "Code-39" 
  83.     .AddItem "Code-128" 
  84.     .AddItem "U.S. Postnet" 
  85.     .AddItem "U.S. Postal FIM" 
  86.     .AddItem "JP Post" 
  87.     .ListIndex = 2  
  88.   End With 
  89. End Sub 
  90. Sub LoadSmallClass(cbo As ComboBox) '條碼樣式  
  91.   With cbo  
  92.     .AddItem "Standard" 
  93.     .AddItem "2-Digit Supplement" 
  94.     .AddItem "5-Digit Supplement" 
  95.     .AddItem "POS Case Code" 
  96.     .ListIndex = 0  
  97.   End With 
  98.  
  99. End Sub 

許多人在編寫數(shù)據(jù)庫(kù)應(yīng)用程序時(shí),都想要加上條形碼功能加強(qiáng)工作效率,尤其是銷售管理,圖書館管理這類流量大的應(yīng)用軟件,但由于條形碼技術(shù)難以掌握、標(biāo)誰(shuí)又多以及過(guò)去的技術(shù)種種原因,使得許多人望而卻步。本文介紹的一套簡(jiǎn)單實(shí)用的條形碼解決方法,希望能幫助各位完善軟件系統(tǒng)的功能。

 

【編輯推薦】

  1. 淺談VB.NET語(yǔ)言與.NET開(kāi)發(fā)語(yǔ)言關(guān)系
  2. 淺析VB.NET語(yǔ)言到底帶來(lái)了什么
  3. 講解VB.NET語(yǔ)言學(xué)習(xí)經(jīng)驗(yàn)
  4. 簡(jiǎn)單講述VB.NET多重繼承
  5. VB.NET調(diào)用Window API經(jīng)驗(yàn)總結(jié)
責(zé)任編輯:佚名 來(lái)源: IT傳媒網(wǎng)
相關(guān)推薦

2009-11-03 13:02:28

VB.NET Wind

2009-10-21 16:40:43

Oracle用戶表空間

2011-07-07 16:53:56

iOS 條形碼掃描

2009-10-20 09:42:16

VB.NET編程

2009-10-28 15:38:30

VB.NET網(wǎng)絡(luò)

2024-09-30 10:18:51

2009-10-23 17:03:18

VB.NET事件編程

2012-06-14 13:09:50

PHP

2009-11-02 15:16:07

VB.NET編程

2015-10-28 13:33:50

二維碼條形碼掃描源碼

2023-08-15 19:24:37

Python條形碼

2010-01-14 17:11:17

VB.NET枚舉

2009-11-02 15:08:58

VB.NET Obje

2009-10-14 15:34:29

VB.NET窗體編程模

2009-11-10 13:08:13

VB.NET編程技巧

2009-10-30 13:12:40

VB.NET創(chuàng)建類

2009-11-02 14:55:52

VB.NET Obje

2009-11-10 15:30:46

VB.NET編程原則

2009-10-21 09:46:13

VB使用ArrayLi

2009-10-29 11:41:27

VB.NET寫Obje
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)