如题:
最好有源代码。谢谢各位。

解决方案 »

  1.   

    普通打印机能打印条码。
    office 提供了一个条码控件BarCodeCtrl.
    在VB下
    工程-》部件-》浏览-》你的OFFICE安装目录-》MSBCODE9.OCX-》打开-》确定
    你的工具箱就有条码控件BarCodeCtrl.
    用法很简单。
      

  2.   

    '条码相关参数
    Public SngLineWidth As Integer, SngSpaceWidth As Integer, SngDetWidth As Integer
    为条码打印时线宽,间白宽和码与码之间的宽度,其它参数有参照上面Public Sub PrintCode(mObjPic As Object, strCode As String, OffsetX As Integer, OffsetY As Integer, blnHaveText As Boolean)
    Dim strBC As String, ChrBC As String, BCCode As String, X As Integer, Y As Integer, h As Integer
    Dim i As Integer, j As Integer, k As Integer
    Static strBarTable(39)   As String    '注释:    初始化条码编码格式表
        strBarTable(0) = "101001101101"  '注释:  0
        strBarTable(1) = "110100101011"  '注释:  1
        strBarTable(2) = "101100101011"  '注释:  2
        strBarTable(3) = "110110010101"  '注释:  3
        strBarTable(4) = "101001101011"  '注释:  4
        strBarTable(5) = "110100110101"  '注释:  5
        strBarTable(6) = "101100110101"  '注释:  6
        strBarTable(7) = "101001011011"  '注释:  7
        strBarTable(8) = "110100101101"  '注释:  8
        strBarTable(9) = "101100101101"  '注释:  9
         
        strBarTable(10) = "110101001011" '注释:  A
        strBarTable(11) = "101101001011" '注释:  B
        strBarTable(12) = "110110100101" '注释:  C
        strBarTable(13) = "101011001011" '注释:  D
        strBarTable(14) = "110101100101" '注释:  E
        strBarTable(15) = "101101100101" '注释:  F
        strBarTable(16) = "101010011011" '注释:  G
        strBarTable(17) = "110101001101" '注释:  H
        strBarTable(18) = "101101001101" '注释:  I
        strBarTable(19) = "101011001101" '注释:  J
        strBarTable(20) = "110101010011" '注释:  K
        strBarTable(21) = "101101010011" '注释:  L
        strBarTable(22) = "110110101001" '注释:  M
        strBarTable(23) = "101011010011" '注释:  N
        strBarTable(24) = "110101101001" '注释:  O
        strBarTable(25) = "101101101001" '注释:  P
        strBarTable(26) = "101010110011" '注释:  Q
        strBarTable(27) = "110101011001" '注释:  R
        strBarTable(28) = "101101011001" '注释:  S
        strBarTable(29) = "101011011001" '注释:  T
        strBarTable(30) = "110010101011" '注释:  U
        strBarTable(31) = "100110101011" '注释:  V
        strBarTable(32) = "110011010101" '注释:  W
        strBarTable(33) = "100101101011" '注释:  X
        strBarTable(34) = "110010110101" '注释:  Y
        strBarTable(35) = "100110110101" '注释:  Z
        
        strBarTable(36) = "100101011011"  '注释:  -
        strBarTable(37) = "101001001001"  '注释:  %
        strBarTable(38) = "100100100101"  '注释:  $
        strBarTable(39) = "100101101101"  '注释:  *
        
        X = OffsetX
        Y = OffsetY
        h = sngBarHeight
    '    X = mObjPic.ScaleX(OffsetX, vbMillimeters, vbTwips)
    '    Y = mObjPic.ScaleY(OffsetY, vbMillimeters, vbTwips)
    '    h = mObjPic.ScaleY(intHeight, vbMillimeters, vbTwips)    strBC = UCase(strCode)
        If Left(strBC, 1) <> "*" Then strBC = "*" & strBC
        If Right(strBC, 1) <> "*" Then strBC = strBC & "*"
        
        If blnHaveText = True Then h = h - mObjPic.TextHeight(strBC) '条码打印高度要减去下面的字符显示高度
        
        With mObjPic
            .ScaleMode = vbTwips
            .DrawWidth = 1
            .FontName = "宋体"
            .FontSize = 8
        End With
        
        For i = 0 To Len(strBC) - 1
        
            ChrBC = Mid(strBC, i + 1, 1)
            BCCode = strBarTable(GetBarCode(ChrBC))
            
            '当前字符
            If blnHaveText = True Then
                mObjPic.CurrentX = X
                mObjPic.CurrentY = Y + h
                mObjPic.Print ChrBC
            End If        For j = 0 To Len(BCCode) - 1
                '窄
                If Mid(BCCode, j + 1, 1) = "0" Then
                    X = X + SngSpaceWidth
                '宽
                Else
                    For k = 0 To SngLineWidth - 1
                        mObjPic.Line (X + k, Y)-Step(0, h)
                    Next k
                    X = X + SngLineWidth
                End If
            Next
            '字间距
            X = X + SngDetWidth
        Next
        
        Exit SubEnd SubPrivate Function GetBarCode(ChrBC As String) As Integer    Select Case Left(ChrBC, 1)
            Case "*": GetBarCode = 39
            Case "$": GetBarCode = 38
            Case "%": GetBarCode = 37
            Case "-": GetBarCode = 36
            Case "0" To "9": GetBarCode = CInt(Left(ChrBC, 1))
            Case "A" To "Z": GetBarCode = Asc(Left(ChrBC, 1)) - Asc("A") + 10
            Case Else: MsgBox "要打印的条形码字符串中包含无效字符!"  '当前版本只支持字符  注释:0注释:-注释:9注释:,注释:A注释:-注释:Z注释:,注释:-注释:,注释:%注释:,注释:$注释:和注释:*注释:"
        End SelectEnd Function
      

  3.   

    BarCodeCtrl1.Value的值是12位或者13位。
      

  4.   

    谢谢各位的热心帮忙,一维条形码的打印我是知道的,而且条形码打印机也有,牌子是TEC的。但是我现在要的是二维条形码的打印编码,在VB中怎么编程?
      

  5.   

    二维条码:
         一维条码所携带的信息量有限,如商品上的条码仅能容纳13位(EAN-13码)阿拉伯数字,更多的信息只能依赖商品数据库的支持,离开了预先建立的数据库,这种条码就没有意义了,因此在一定程度上也限制了条码的应用范围。基于这个原因,在90年代发明了二维条码。二维条码除了具有一维条码的优点外,同时还有信息量大、可靠性高,保密、防伪性强等优点。
         目前二维条码主要有PDF417码、Code49码、Code 16K码、Data Matrix码、MaxiCode码等,主要分为堆积或层排式和棋盘或矩阵式两大类。
         二维条码作为一种新的信息存储和传递技术,从诞生之时就受到了国际社会的广泛关注。经过几年的努力,现已应用在国防、公共安全、交通运输、医疗保健、工业、商业、金融、海关及政府管理等多个领域。
         二维条码依靠其庞大的信息携带量,能够把过去使用一维条码时存储于后台数据库中的信息包含在条码中,可以直接通过阅读条码得到相应的信息,并且二维条码还有错误修正技术及防伪功能,增加了数据的安全性。
         二维条码可把照片、指纹编制于其中,可有效地解决证件的可机读和防伪问题。因此,可广泛应用于护照、身份证、行车证、军人证、健康证、保险卡等。
         美国亚利桑纳州等十多个州的驾驶证、美国军人证、军人医疗证等在几年前就已采用了PDF417技术。将证件上的个人信息及照片编在二维条码中,不但可以实现身份证的自动识读,而且可以有效的防止伪冒证件事件发生。菲律宾、埃及、巴林等许多国家也已在身份证或驾驶证上采用了二维条码,我国香港特区护照上也采用了二维条码技术。
         另外在海关报关单、长途货运单、税务报表、保险登记表上也都有使用二维条码技术来解决数据输入及防止伪造、删改表格的例子。
         在我国部分地区注册会计师证和汽车销售及售后服务等方面,二维条码也得到了初步的应用。
      

  6.   

    To  Feather2005(飞逸) 
    我现在要打的是二维条码是Data Matrix码,你知道要怎么在VB中实现吗?
      

  7.   

    Private Function LblPrint_MD() As String
        Dim i As Integer
        Dim Bar(50) As String
        '-----------------for 4308 的打印機
        Bar(1) = Chr$(2) + "L" + Chr$(13)
        Bar(2) = "H01" + Chr$(13)
        Bar(3) = "D11" + Chr$(13)
        Bar(4) = "H18D11C0001R0001" + Chr$(13)
        Bar(5) = "1a83" + "030" + "0521" + "0034" + Text1(0).Text + Chr$(13)  '箱號
        Bar(6) = "1911" + "S010" + "506" + "0074" + "P012P012" + Text1(0).Text + Chr$(13)
        Bar(7) = "1911A1405530034" + "BOX NO:" + Chr$(13)
        Bar(8) = "1911A1405530294" + "QTY" + Chr$(13)
        Bar(9) = "1aA403205190270" + Str(GA_COUNT) + Chr$(13)
        Bar(10) = "1911S0105040298P012P012" + Str(GA_COUNT) + Chr$(13)
        Bar(11) = "1a52" + "024" + "0374" + "0034" + Text1(1).Text + Chr$(13)
        Bar(12) = "1911S0103590040P012P012" + Text1(1).Text + Chr$(13)
        Bar(13) = "1a5202403110034" + Text1(2).Text + Chr$(13)
        Bar(14) = "1911S0102960040P012P012" + Text1(2).Text + Chr$(13)
        Bar(15) = "1a5202402520034" + Text1(3).Text + Chr$(13)
        Bar(16) = "1911S0102370040P012P012" + Text1(3).Text + Chr$(13)
        Bar(17) = "1a5202401890034" + Text1(4).Text + Chr$(13)
        Bar(18) = "1911S0101740040P012P012" + Text1(4).Text + Chr$(13)
        Bar(19) = "1a5202401220034" + Text1(5).Text + Chr$(13)
        Bar(20) = "1911S0101070040P012P012" + Text1(5).Text + Chr$(13)
        Bar(21) = "1a5202403740219" + Text1(6).Text + Chr$(13)
        Bar(22) = "1911S0103590225P012P012" + Text1(6).Text + Chr$(13)
        Bar(23) = "1a5202403110219" + Text1(7).Text + Chr$(13)
        Bar(24) = "1911S0102960225P012P012" + Text1(7).Text + Chr$(13)
        Bar(25) = "1a5202402520219" + Text1(8).Text + Chr$(13)
        Bar(26) = "1911S0102370225P012P012" + Text1(8).Text + Chr$(13)
        Bar(27) = "1a5202401890219" + Text1(9).Text + Chr$(13)
        Bar(28) = "1911S0101740225P012P012" + Text1(9).Text + Chr$(13)
        Bar(29) = "1a5202401220219" + Text1(10).Text + Chr$(13)
        Bar(30) = "1911S0101070225P012P012" + Text1(10).Text + Chr$(13)
        Bar(31) = "1a5201804420034" + PACK_MODEL_C + Chr$(13)  'TOSHIBA 料號
        Bar(32) = "1911S0104270038P012P012" + PACK_MODEL_C + Chr$(13)
        Bar(33) = "1911S0104740034P012P008" + "TIH P/N :" + Chr$(13)
        Bar(34) = "1911S0104550219P013P007" + "PCB VER." + Chr$(13)
        Bar(35) = "1a5201804340219" + PCB_VER + Chr$(13)
        Bar(36) = "1911S0104190227P012P012" + PCB_VER + Chr$(13)
        Bar(37) = "1911S0100540239P007P007" + "Date:" + sDate + Chr$(13)
        Bar(38) = "1911S0100300239P007P007" + "Time:" + sTime + Chr$(13)
        Bar(39) = "1911S0104550317P013P007" + "PWB VER." + Chr$(13)
        Bar(40) = "1a5201804340317" + PWB_VER + Chr$(13)
        Bar(41) = "1911S0104190325P012P012" + PWB_VER + Chr$(13)
        Bar(42) = "1911S0100300034P007P007" + "ARIMA (HZ) MFG." + Chr$(13)
        Bar(43) = "1911S0100550034P009P006" + "Arima P/N :" + PACK_MODEL + Chr$(13)
        Bar(44) = "Q001" + Chr$(13)
        Bar(45) = "E" + Chr$(13)
        Bar(46) = Chr$(2) + "O0220"
        Bar(47) = Chr$(2) + "f262"
        
        Open "c:\LPT.txt" For Output As #1
              For i = 1 To 47
                  Print #1, Bar(i)
              Next i
        Close #1
        For i = 1 To 10         ' 清除 已列印資料
            Text1(i).Text = ""
        Next i
        Text1(0).Text = ""
        GA_COUNT = 0
        Shell ("C:\WINNT\SYSTEM32\COMMAND.COM /C COPY C:\LPT.TXT LPT1")
    End Function