多语言展示
当前在线:953今日阅读:84今日分享:32

如何在VB程序下生成二维条码

如何在VB程序下生成二维条码,包括PDF417、QrCode、DataMatrix和汉信二维条码,具体步驺如下:
工具/原料

准备VB开发环境,VS6.0开发环境

方法/步骤
1

创建VB工程,COPY二维条码动态链接库到您的工程中。您需要引用的动态库有:EnCodePdf.dll,EnCodeQr.dll,EnDataMatrix和EnHanxin.dll。大家可以参照下图放置DLL和INI的目录位置。

2

'动态链接库引用(说明:下面是所有四种条码的接口引用申明,读者可以适当剪裁)'串口接口Private Declare FunctionInitRead Lib 'EnCodePdf.dll' (ByVal hcallwnd As Long, ByVal pathnameAs String) As LongPrivate 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 StringPrivate Declare FunctionEnCodePdf Lib 'EnCodePdf.dll' (ByVal txtfile As String, ByVal outfileAs String) As StringPrivate 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 StringPrivate Declare FunctionEnCodeQr Lib 'EnCodeQr.dll' (ByVal txtfile As String, ByVal outfileAs String) As StringPrivate 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 StringPrivate Declare FunctionEnDataMatrix Lib 'EnDataMatrix.dll' (ByVal txtfile As String, ByValoutfile As String) As StringPrivate 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 StringPrivate Declare FunctionEnCodeHx Lib 'EnHanXin.dll' (ByVal txtfile As String, ByVal outfileAs String) As StringPrivate 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 LongPrivate Declare FunctionWritePrivateProfileString Lib 'kernel32' Alias'WritePrivateProfileStringA' (ByVal lpApplicationName As String,ByVal lpKeyName As Any, ByVal lpString As Any, ByVal lpFileName As String) AsLongPrivate Declare FunctionGetPrivateProfileInt Lib 'kernel32' Alias'GetPrivateProfileIntA' (ByVal lpApplicationName As String, ByVallpKeyName As String, ByVal nDefault As Long, ByVal lpFileName As String) AsLongPrivate Declare FunctionGetPrivateProfileString 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 LongPrivate Declare FunctionSetWindowLong Lib 'user32' Alias 'SetWindowLongA' (ByValhwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As LongPrivate 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 LongPrivate Declare FunctionWcompress Lib 'Wcomp.dll' (ByVal infile As String, ByVal outfile AsString, ByVal budget As Long) As LongPrivate Declare FunctionWdecompress Lib 'Wcomp.dll' (ByVal infile As String, ByVal outfile AsString) As Long

3

进行条形码制作: 我们在引用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

4

打开关闭串口:条码编码控件一般自带串口接收处理接口:InitRead接口是初始化串口CloseRead接口是关闭串口If Cmd_OpenComm.Caption = '连接串口' Then    Call SetPdfConFile(Edit_ConFileName.Text)    If InitRead(Me.hwnd, App.Path + '\') = 1 Then        Cmd_OpenComm.Caption = '断开串口'    End IfElse    '关闭串口    If CloseRead() = 1 Then        Cmd_OpenComm.Caption = '连接串口'    End IfEnd If

5

接收条码识读器内容:串口收到识读器信息后,以键盘消息的形式,触发页面消息。我们调用FORM下,处理KeyDown事件。Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)Dim FileNo As IntegerDim strTmp As StringDim strBmpFile As StringstrBmpFile = 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 = FalseEnd IfEnd Sub

推荐信息