vb製作條形碼
1、怎樣用vb做出能輸入數字生成條形碼的程序
有一個控制項,忘了叫什麼了。網上搜!
2、用VB6怎樣製作一個列印條碼的簡單應用程序
上海啟邦條碼系統工程師馬天宇回答你:
編程製作條碼列印程序有幾種方法:
如果是普通激光列印機,可以使用條碼字體、條碼控制項、或調用第三方條碼編輯列印軟體。最復雜就是根據條碼的規則自己編寫程序直接繪制條碼。
如果是條碼列印機,除了以上幾種方法,還可以使用驅動里的條碼字體。
3、VB應用程序中列印條形碼的方法
條形碼作為一種機器可識別的圖形,它能快速、准確地標識某種產品或商品,在許多資料庫應用中起作很重要的作用,如超市收銀、車站售票等場合。當某件物品上帶有的條形碼被條碼掃描器正確解讀後,將會得到該物品的唯一標識字元串,通過檢索資料庫我們就可以很容易知道它的一些其它屬性並作相應處理。雖然在Internet上能找到許多免費和不免費的條形碼列印控制項,但是這些控制項除了使用不方便外,還有一個最大的缺點:它們的列印輸出不能和我們的程序共存在一個列印頁面上,比如說在一個過程中,我們先向系統 Printer 中輸出一些內容,然後再調用控制項的條形碼列印方法,最後列印的結果為兩頁!,如果現在我們要處理一張車票,上面不僅要列印條形碼,還要有終點站和票價等信息,那麼控制項就變得不可用。對程序員來說,可能還是希望能了解條形碼列印的原理,本文提出兩種列印方法與同行們探討。
一、直接利用有條形碼列印功能的列印機
有許多列印機能夠直接列印條形碼,但在 VB 中,我們在DOS時代熟悉的LPRINT語句已經不能再使用了,列印操作被Windows的Spool系統完全接管,輸出是以「頁」為單位,所有的列印輸出都被Windows轉換為圖形發送給列印驅動程序。而要使列印機列印條形碼就必須將對應的ESC序列直接發送給它,因此我們就要想辦法避開Windows的Spool系統,也就是說再程序中不能使用Printer對象和Printers集合處理列印輸出,在VB中要將ESC指令直接發送給列印機至少有三種方法,前兩種方法是調用Windows API 函數:Escape()和SpoolFile(),第三種是最容易的方法:打開列印機埠進行二進制存取,我們主要考慮這種方法。
即使在Windows時代,」LPT1:」和」PRN」仍然是可用的,下面我們先作一個試驗:打開一個DOS窗口,在提示符下輸入COPY CON LPT1:回車,然後隨便輸入一些字元,最後按F6鍵,列印機就開始工作了,它將列印出你輸入的那些字元!下面的代碼演示了直接將指令和字元發送給列印機:
Private Sub Command1_Click()
Dim strOut As String
StrOut = 「這是直接發送到列印機埠的字元串」
『 打開列印機埠,其中的」LPT1:」可能需要根據你的列印機設置而改變
Open 「LPT1:」 For Binary Access Write As #1
『 發送給列印機,注意語句的最後一個參數必須是變數
Put #1, ,strOut
『 關閉列印機埠
Close #1
End Sub
各種列印機列印條形碼的指令可能不同,比如將上面的變數 strOut賦值為:
strOut = Chr(28) & 「P」 & Chr(5) & Chr(2) & Chr(3) & Chr(3) & Chr(6) & 「012345」
將在 AR2400 列印機上列印出內容為」012345」的 CODE39 格式的條形碼。具體的列印控制指令請參考列印機手冊。
用這種方法的缺點:一是過份依賴列印機本身,而有條形碼列印功能的列印機通常要比普通列印機昂貴,這會使構造應用系統不夠經濟;二是所有的列印輸出都必須你自己處理,比如列印定位就很浪費時間。
二、利用畫圖方式輸出到普通列印機
條形碼的編碼規則不外乎是通過線條和線條間間隙的寬窄不同來表示二進制的1和0,只要我們了解了條形碼的編碼規則,完全可以用畫圖的方式在普通列印機上得到可以接受的效果。下面我們就使用最普遍的CODE39碼進行討論。
CODE39碼的編碼規則是:
1、 每五條線表示一個字元;
2、 粗線表示1,細線表示0;
3、 線條間的間隙寬的表示1,窄的表示0;
4、 五條線加上它們之間的四條間隙就是九位二進制編碼,而且這九位中必定有三位是1,所以稱為39碼;
5、 條形碼的首尾各一個*標識開始和結束
在我們的程序中,給常用的字元都進行編碼,解讀時先取線條粗細,再取間隙寬窄,如:
上圖中的字元*就可以解讀為 001101000,字元3解讀為 110000100
下面就是我們給出的子過程:
注釋: 將字元串 strBarCode 對應的條形碼輸出到預設列印機
Private Sub PrintBarCode( _
ByVal strBarCode As String, _
Optional ByVal intXPos As Integer = 0, _
Optional ByVal intYPos As Integer = 0, _
Optional ByVal intPrintHeight As Integer = 10, _
Optional ByVal bolPrintText As Boolean = True _
)
注釋: 參數說明:
注釋: strBarCode - 要列印的條形碼字元串
注釋: intXPos, intYPos - 列印條形碼的左上角坐標(預設為(0,0),坐標刻度為:毫米)
注釋: intHeight - 列印高度(預設為一厘米,坐標刻度為:毫米)
注釋: bolPrintText - 是否列印人工識別字元(預設為true)
注釋: "0"-"9","A-Z","-","%","$"和"*" 的條碼編碼格式,總共 40 個字元
Static strBarTable(39) As String
注釋: 初始化條碼編碼格式表
strBarTable(0) = "001100100" 注釋: 0
strBarTable(1) = "100010100" 注釋: 1
strBarTable(2) = "010010100" 注釋: 2
strBarTable(3) = "110000100" 注釋: 3
strBarTable(4) = "001010100" 注釋: 4
strBarTable(5) = "101000100" 注釋: 5
strBarTable(6) = "011000100" 注釋: 6
strBarTable(7) = "000110100" 注釋: 7
strBarTable(8) = "100100100" 注釋: 8
strBarTable(9) = "010100100" 注釋: 9
strBarTable(10) = "100010010" 注釋: A
strBarTable(11) = "010010010" 注釋: B
strBarTable(12) = "110000010" 注釋: C
strBarTable(13) = "001010010" 注釋: D
strBarTable(14) = "101000010" 注釋: E
strBarTable(15) = "011000010" 注釋: F
strBarTable(16) = "000110010" 注釋: G
strBarTable(17) = "100100010" 注釋: H
strBarTable(18) = "010100010" 注釋: I
strBarTable(19) = "001100010" 注釋: J
strBarTable(20) = "100010001" 注釋: K
strBarTable(21) = "010010001" 注釋: L
strBarTable(22) = "110000001" 注釋: M
strBarTable(23) = "001010001" 注釋: N
strBarTable(24) = "101000001" 注釋: O
strBarTable(25) = "011000001" 注釋: P
strBarTable(26) = "000110001" 注釋: Q
strBarTable(27) = "100100001" 注釋: R
strBarTable(28) = "010100001" 注釋: S
strBarTable(29) = "001100001" 注釋: T
strBarTable(30) = "100011000" 注釋: U
strBarTable(31) = "010011000" 注釋: V
strBarTable(32) = "110001000" 注釋: W
strBarTable(33) = "001011000" 注釋: X
strBarTable(34) = "101001000" 注釋: Y
strBarTable(35) = "011001000" 注釋: Z
strBarTable(36) = "000111000" 注釋: -
strBarTable(37) = "100101000" 注釋: %
strBarTable(38) = "010101000" 注釋: $
strBarTable(39) = "001101000" 注釋: *
If strBarCode = "" Then Exit Sub 注釋: 不列印空串
注釋: 保存列印機 ScaleMode
Dim intOldScaleMode As ScaleModeConstants
intOldScaleMode = Printer.ScaleMode
注釋: 保存列印機 DrawWidth
Dim intOldDrawWidth As Integer
intOldDrawWidth = Printer.DrawWidth
注釋: 保存列印機 Font
Dim fntOldFont As StdFont
Set fntOldFont = Printer.Font
Printer.ScaleMode = vbTwips 注釋: 設置列印用的坐標刻度為緹(twip=1)
Printer.DrawWidth = 1 注釋: 線寬為 1
Printer.FontName = "宋體" 注釋: 列印在條碼下方字元的字體和大小
Printer.FontSize = 10
Dim strBC As String 注釋: 要列印的條碼字元串
strBC = Ucase(strBarCode)
注釋: 將以毫米表示的 X 坐標轉換為以緹表示
Dim x As Integer
x = Printer.ScaleX(intXPos, vbMillimeters, vbTwips)
注釋: 將以毫米表示的 Y 坐標轉換為以緹表示
Dim y As Integer
y = Printer.ScaleY(intYPos, vbMillimeters, vbTwips)
注釋: 將以毫米表示的高度轉換為以緹表示
Dim intHeight As Integer
intHeight = Printer.ScaleY(intPrintHeight, vbMillimeters, vbTwips)
注釋: 是否在條形碼下方列印人工識別字元
If bolPrintText = True Then
注釋: 條碼列印高度要減去下面的字元顯示高度
intHeight = intHeight - Printer.TextHeight(strBC)
End If
Const intWidthCU As Integer = 30 注釋: 粗線和寬間隙寬度
Const intWidthXI As Integer = 10 注釋: 細線和窄間隙寬度
Dim intIndex As Integer 注釋: 當前處理的字元串索引
Dim i As Integer, j As Integer, k As Integer 注釋: 循環控制變數
注釋: 添加起始字元
If Left(strBC, 1) <> "*" Then
strBC = "*" & strBC
End If
注釋: 添加結束字元
If Right(strBC, 1) <> "*" Then
strBC = strBC & "*"
End If
注釋: 循環處理每個要顯示的條碼字元
For i = 1 To Len(strBC)
注釋: 確定當前字元在 strBarTable 中的索引
Select Case Mid(strBC, i, 1)
Case "*"
intIndex = 39
Case "$"
intIndex = 38
Case "%"
intIndex = 37
Case "-"
intIndex = 36
Case "0" To "9"
intIndex = CInt(Mid(strBC, i, 1))
Case "A" To "Z"
intIndex = Asc(Mid(strBC, i, 1)) - Asc("A") + 10
Case Else
MsgBox "要列印的條形碼字元串中包含無效字元!當前版本只支持字元 注釋:0注釋:-注釋:9注釋:,注釋:A注釋:-注釋:Z注釋:,注釋:-注釋:,注釋:%注釋:,注釋:$注釋:和注釋:*注釋:"
End Select
注釋: 是否在條形碼下方列印人工識別字元
If bolPrintText = True Then
Printer.CurrentX = x
Printer.CurrentY = y + intHeight
Printer.Print Mid(strBC, i, 1)
End If
For j = 1 To 5
注釋: 畫細線
If Mid(strBarTable(intIndex), j, 1) = "0" Then
For k = 0 To intWidthXI - 1
Printer.Line (x + k, y)-Step(0, intHeight)
Next k
x = x + intWidthXI
注釋: 畫寬線
Else
For k = 0 To intWidthCU - 1
Printer.Line (x + k, y)-Step(0, intHeight)
Next k
x = x + intWidthCU
End If
注釋: 每個字元條碼之間為窄間隙
If j = 5 Then
x = x + intWidthXI * 3
Exit For
End If
注釋: 窄間隙
If Mid(strBarTable(intIndex), j + 5, 1) = "0" Then
x = x + intWidthXI * 3
注釋: 寬間隙
Else
x = x + intWidthCU * 2
End If
Next j
Next i
注釋: 恢復列印機 ScaleMode
Printer.ScaleMode = intOldScaleMode
注釋: 恢復列印機 DrawWidth
Printer.DrawWidth = intOldDrawWidth
注釋: 恢復列印機 Font
Set Printer.Font = fntOldFont
End Sub
最理想的情況是將它做成一個控制項,在控制項中提供一個列印方法,該方法實現與上
那個過程大致相同,只是不能在控制項中直接使用VB的Printer對象,否則VB會將你在控制項中的列印輸出處理為一個單獨的頁面,而是應該將Printer.hDc傳給它,通過調用那些需要指定 HDC 的Windows API函數實現與容器的列印輸出在一個頁面上,比如我們可以這樣定義這個控制項的列印方法:
注釋: PrintIt 方法將對應的條形碼輸出到預設列印機
Public Sub PrintIt(ByVal PrintDC As Long, _
Optional ByVal intXPos As Integer = 0, _
Optional ByVal intYPos As Integer = 0, _
Optional ByVal intPrintHeight As Integer = 10)
既然不能使用Printer對象,那麼畫線和輸出文字也不能使用Printer對象的Line和Print方法,在我們的程序中至少要申明以下三個Windows API函數:
『 移動畫筆的位置
Private Declare Function MoveToEx Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, lpPoint As POINTAPI) As Long
『 從畫筆的當前位置到(x,y)畫一條線
Private Declare Function LineTo Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long) As Long
『 在(x,y)處輸出一個字元串
Private Declare Function TextOut Lib "gdi32" Alias "TextOutA" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal lpString As String, ByVal nCount As Long) As Long
『 MoveToEx() 函數需要的參數
Private Type POINTAPI
xp As Long
yp As Long
End Type
Dim papi As POINTAPI
畫線操作為(原來的Printer.Line函數):
MoveToEx PrintDC, x + k, y, papi
LineTo PrintDC, x + k, y + intHeight + 1
列印字元為(原來的Printer.Print函數):
TextOut PrintDC, x, y + intHeight, Mid(strBC, i + 1, 1), 1
4、如何在VB程序下生成二維條碼
如何在VB程序下生成二維條碼,包括PDF417、QrCode、DataMatrix和漢信二維條碼,具體步騶如下:
工具/原料
准備VB開發環境,VS6.0開發環境
方法/步驟
創建VB工程,COPY二維條碼動態鏈接庫到您的工程中。您需要引用的動態庫有:EnCodePdf.dll,EnCodeQr.dll,EnDataMatrix和EnHanxin.dll。
大家可以參照下圖放置DLL和INI的目錄位置。
『動態鏈接庫引用
(說明:下面是所有四種條碼的介面引用申明,讀者可以適當剪裁)
』串口介面
Private Declare FunctionInitRead Lib 「EnCodePdf.dll」 (ByVal hcallwnd As Long, ByVal pathnameAs String) As Long
Private Declare FunctionCloseRead Lib 「EnCodePdf.dll」 () As Long
『生成PDF417介面
Private Declare SubSetPdfConFile Lib 「EnCodePdf.dll」 (ByVal confile As String)
Private Declare FunctionEnPdfText Lib 「EnCodePdf.dll」 (ByVal txtData As String, ByVal outfileAs String) As String
Private Declare FunctionEnCodePdf Lib 「EnCodePdf.dll」 (ByVal txtfile As String, ByVal outfileAs String) As String
Private Declare FunctionMakePdf417 Lib 「EnCodePdf.dll」 (ByVal txtfile As String, ByValpictfile As String, ByVal otherfile As String, ByVal outfile As String) AsString
』生成QrCode介面
Private Declare SubSetQrConFile Lib 「EnCodeQr.dll」 (ByVal confile As String)
Private Declare FunctionEnQrText Lib 「EnCodeQr.dll」 (ByVal txtData As String, ByVal outfileAs String) As String
Private Declare FunctionEnCodeQr Lib 「EnCodeQr.dll」 (ByVal txtfile As String, ByVal outfileAs String) As String
Private Declare FunctionMakeQrCode Lib 「EnCodeQr.dll」 (ByVal txtfile As String, ByVal pictfileAs String, ByVal otherfile As String, ByVal outfile As String) As String
『生成DataMatrix介面
Private Declare SubSetDmConFile Lib 「EnDataMatrix.dll」 (ByVal confile As String)
Private Declare FunctionEnDmText Lib 「EnDataMatrix.dll」 (ByVal txtData As String, ByValoutfile As String) As String
Private Declare FunctionEnDataMatrix Lib 「EnDataMatrix.dll」 (ByVal txtfile As String, ByValoutfile As String) As String
Private Declare FunctionMakeDataMatrix Lib 「EnDataMatrix.dll」 (ByVal txtfile As String, ByValpictfile As String, ByVal otherfile As String, ByVal outfile As String) AsString
』生成HanXin介面
Private Declare SubSetHxConFile Lib 「EnHanXin.dll」 (ByVal confile As String)
Private Declare FunctionEnHxText Lib 「EnHanXin.dll」 (ByVal txtData As String, ByVal outfileAs String) As String
Private Declare FunctionEnCodeHx Lib 「EnHanXin.dll」 (ByVal txtfile As String, ByVal outfileAs String) As String
Private Declare FunctionMakeHanXin Lib 「EnHanXin.dll」 (ByVal txtfile As String, ByValpictfile As String, ByVal otherfile As String, ByVal outfile As String) AsString
'WAPI介面
Private Declare FunctionSetCurrentDirectory Lib 「kernel32」 Alias「SetCurrentDirectoryA」 (ByVal lpPathName As String) As Long
Private Declare Lib 「kernel32」 Alias「WritePrivateProfileStringA」 (ByVal lpApplicationName As String,ByVal lpKeyName As Any, ByVal lpString As Any, ByVal lpFileName As String) AsLong
Private Declare FunctionGetPrivateProfileInt Lib 「kernel32」 Alias「GetPrivateProfileIntA」 (ByVal lpApplicationName As String, ByVallpKeyName As String, ByVal nDefault As Long, ByVal lpFileName As String) AsLong
Private Declare Lib 「kernel32」 Alias「GetPrivateProfileStringA」 (ByVal lpApplicationName As String, ByVallpKeyName As Any, ByVal lpDefault As String, ByVal lpReturnedString As String,ByVal nSize As Long, ByVal lpFileName As String) As Long
Private Declare FunctionSetWindowLong Lib 「user32」 Alias 「SetWindowLongA」 (ByValhwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare FunctionSetParent Lib 「user32」 (ByVal hWndChild As Long, ByVal hWndNewParentAs Long) As Long
『生成圖像小波壓縮介面
'exports from nlcomp.dll 圖像壓縮函數
Private Declare FunctionSizeDIB Lib 「Wcomp.dll」 (ByVal oldmap As String, ByVal BmpHeight AsInteger, ByVal BmpWidth As Integer) As Long
Private Declare FunctionWcompress Lib 「Wcomp.dll」 (ByVal infile As String, ByVal outfile AsString, ByVal budget As Long) As Long
Private Declare FunctionWdecompress Lib 「Wcomp.dll」 (ByVal infile As String, ByVal outfile AsString) As Long
進行條形碼製作:
我們在引用API介面後,可以參照下面程序,實現介面調用
程序中txtfile表示文本文件名,binBmpFile表示輸入的圖像文件名
若需要裝載圖像可以採用Make開頭介面,若不需要則採用En開頭介面。
If (txtfile<> 「」 Or binBmpFile <> 「」) Then
If m_bWorkMode = 1 Then 'PDF417
SetPdfConFile (Edit_ConFileName.Text)
If (Edit_ImgFileName.Text <> 「」) Then
strBmpFile = MakePdf417(txtfile, binBmpFile,「」, 「」)
Else
strBmpFile = EnPdfText(Edit_Source.Text,「」)
End If
ElseIf m_bWorkMode = 2 Then 'Qr_Code
SetQrConFile (Edit_ConFileName.Text)
If (Edit_ImgFileName.Text <> 「」) Then
strBmpFile = MakeQrCode(txtfile, binBmpFile,「」, 「」)
Else
strBmpFile = EnQrText(Edit_Source.Text,「」)
End If
ElseIf m_bWorkMode = 3 Then ' DataMatrix
SetDmConFile (Edit_ConFileName.Text)
If (Edit_ImgFileName.Text <> 「」) Then
strBmpFile = MakeDataMatrix(txtfile,binBmpFile, 「」, 「」)
Else
strBmpFile = EnDmText(Edit_Source.Text,「」)
End If
Else
SetHxConFile (Edit_ConFileName.Text)
If (Edit_ImgFileName.Text <> 「」) Then
strBmpFile = MakeHanXin(txtfile, binBmpFile,「」, 「」)
Else
strBmpFile = EnHxText(Edit_Source.Text,「」)
End If
End If
打開關閉串口:
條碼編碼控制項一般自帶串口接收處理介面:
InitRead介面是初始化串口
CloseRead介面是關閉串口
If Cmd_OpenComm.Caption = 「連接串口」 Then
Call SetPdfConFile(Edit_ConFileName.Text)
If InitRead(Me.hwnd, App.Path + 「\」) = 1 Then
Cmd_OpenComm.Caption = 「斷開串口」
End If
Else 』關閉串口
If CloseRead() = 1 Then
Cmd_OpenComm.Caption = 「連接串口」
End If
End If
接收條碼識讀器內容:
串口收到識讀器信息後,以鍵盤消息的形式,觸發頁面消息。
我們調用FORM下,處理KeyDown事件。
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
Dim FileNo As Integer
Dim strTmp As String
Dim strBmpFile As String
strBmpFile = App.Path & 「\temp.bmp」
If KeyCode = 255 Then
FileNo = FreeFile()
Open App.Path & 「\temp.txt」 For Input As #FileNo
Edit_Source.Text = 「」
Do While Not EOF(FileNo)
strTmp = 「」
Input #FileNo, strTmp
Edit_Source.Text = Edit_Source.Text & strTmp & Chr(13) & Chr(10)
Loop
Close #FileNo
If Dir(strBmpFile) <> 「」 Then
Kill (strBmpFile)
End If
If Dir(App.Path & 「\temp.img」) <> 「」 Then
If FileLen(App.Path & 「\temp.img」) > 10 Then
Call Wdecompress(App.Path & 「\temp.img」, strBmpFile)
End If
End If
If Dir(strBmpFile) <> 「」 Then
Image_Bar.Picture = LoadPicture(strBmpFile)
Else
Image_Bar.Picture = LoadPicture(「」)
End If
Cmd_Print.Enabled = False
End If
End Sub
5、VB二維條碼生成
你學習的話
用一個OFFICE的附帶的BarCode控制項即可,輸出是圖像格式
http://www.programfan.com/blog/article.asp?id=2505
不過專業的條碼列印還專是用VB的Printer控制項Line函數屬以畫圖方式輸出最好
我曾開發過多種標準的條形碼控制項,不過是商業軟體不好開放
這里有個39碼的例子,你不妨看看
http://www.3800hk.com/Article/cxsj/vb/bcslvb/2005-08-06/Article_47920.html
6、vb實現一維條形碼例子
EAN是比較好實現的碼制,用微軟自帶的就可以,或者下載個EAN的條碼字體即可在一般的text中處理。連接ACCESS資料庫,因為是自己寫的程序,直連取記錄集,然後在記錄集中循環取值給條碼控制項,同時刷新控制項即可。你這個關鍵在於列印,用print 截屏即可 這樣最簡單。
7、VB里做條形碼是哪個控制項??
很遺憾vb沒有自帶的條形碼控制項(你說的條形碼應該是商品上貼著的條形碼吧)。ps網上可能找得到條形碼控制項,還有注意要下載的話確認一下是ocx文件。
8、怎樣用VB自動生成不重復的13位條形碼值?
Private Sub Command1_Click()
Dim I As Integer
Dim B, C As String
Randomize
Me.AutoRedraw = True
K = 1
For I = 1 To 100
B = Int(Rnd() * 10)
C = C & B
If Len(C) > 13 Then Exit For
Next I
Print C
End Sub
9、如何用VB做個簡單的條碼驗證器,,掃描槍輸入。。詳情見圖
我用過的掃描槍的輸入是用的com輸入,在VB里添加MSComm控制項即可。視設備管理器里識別為com幾就選com幾。
掃描的時候,MSComm控制項有comEvReceive事件,可以作為觸發事件的,比如控制項名是MSComm1
那這個MSComm1_OnComm()里,如果有這個觸發事件,就可以聲明一個字元型來接受MSComm1.input
這個輸入可能根據不同掃描槍不同要進行些處理以得到你需要的條碼實值
當然條碼槍具體給你什麼你可以去Windows自帶的Hyper Terminal里看到
有個了這個條碼值,在你圖里對應的第二個表裡其他的Textbox或者label控制項就可以寫相應的Caption了,無非是if,case判斷了
不加資料庫連接的話就沒那麼復雜了
空口說白話也不行,以下是基於Motolora Symbol P370/470型對條碼值的一些處理,直接寫在OnComm里了,process_no就是看到這個號碼做相應處理的判斷,可以另起爐灶寫一個到時候調用就是
Private Sub MSComm1_OnComm()
Dim st As String
If MSComm1.CommEvent = comEvReceive Then
st = MSComm1.Input
If st <> Chr(3) Then
st_all = st_all + st
Else
Txt_Pt.Text = Trim(Mid(st_all, InStr(st_all, Chr(2)) + 1, 10))
st_all = ""
Process_no
End If
End If
End Sub
以上只是com接收事件和取值的例子,判斷不必參考的,關鍵無非是把接收值讀入st,再對st_all這個全局變數賦值(不然你一會用那個條碼值可沒有個地方記錄了)
非com輸入恕在下暫時無能為力