如题:
最好有源代码。谢谢各位。
最好有源代码。谢谢各位。
解决方案 »
- 怎么让一个软件只能在5台电脑上使用,超过5台就提示不能使用了
- 请问怎么知道当前是星期几?
- 又有问题了
- 由于commondialog的使用改变了路径,如何改回来,或如何设定VB程序执行路径?谢谢。
- 局域网内数据访问?
- TabStrip控件,气坏我也!
- 水晶报表是否支持异地打印,即sql服务器在异地,应用程序在本地.如支持,应如何设置
- 苦苦不能解决的简单问题,众位高手帮帮忙(谢谢!)。
- 如何设置文本框中,某些行的字的颜色,或是某些字的颜色,而不是整个文本框中字的颜色
- 各位老大!谁能告诉我如何在我的程序用vb上加一个注册号来保护她?
- 请问关于MSHFlexGrid的属性TextMatrix的问题,谢谢了!
- VB如何执行 AddressOf 指向的函数?
office 提供了一个条码控件BarCodeCtrl.
在VB下
工程-》部件-》浏览-》你的OFFICE安装目录-》MSBCODE9.OCX-》打开-》确定
你的工具箱就有条码控件BarCodeCtrl.
用法很简单。
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
一维条码所携带的信息量有限,如商品上的条码仅能容纳13位(EAN-13码)阿拉伯数字,更多的信息只能依赖商品数据库的支持,离开了预先建立的数据库,这种条码就没有意义了,因此在一定程度上也限制了条码的应用范围。基于这个原因,在90年代发明了二维条码。二维条码除了具有一维条码的优点外,同时还有信息量大、可靠性高,保密、防伪性强等优点。
目前二维条码主要有PDF417码、Code49码、Code 16K码、Data Matrix码、MaxiCode码等,主要分为堆积或层排式和棋盘或矩阵式两大类。
二维条码作为一种新的信息存储和传递技术,从诞生之时就受到了国际社会的广泛关注。经过几年的努力,现已应用在国防、公共安全、交通运输、医疗保健、工业、商业、金融、海关及政府管理等多个领域。
二维条码依靠其庞大的信息携带量,能够把过去使用一维条码时存储于后台数据库中的信息包含在条码中,可以直接通过阅读条码得到相应的信息,并且二维条码还有错误修正技术及防伪功能,增加了数据的安全性。
二维条码可把照片、指纹编制于其中,可有效地解决证件的可机读和防伪问题。因此,可广泛应用于护照、身份证、行车证、军人证、健康证、保险卡等。
美国亚利桑纳州等十多个州的驾驶证、美国军人证、军人医疗证等在几年前就已采用了PDF417技术。将证件上的个人信息及照片编在二维条码中,不但可以实现身份证的自动识读,而且可以有效的防止伪冒证件事件发生。菲律宾、埃及、巴林等许多国家也已在身份证或驾驶证上采用了二维条码,我国香港特区护照上也采用了二维条码技术。
另外在海关报关单、长途货运单、税务报表、保险登记表上也都有使用二维条码技术来解决数据输入及防止伪造、删改表格的例子。
在我国部分地区注册会计师证和汽车销售及售后服务等方面,二维条码也得到了初步的应用。
我现在要打的是二维条码是Data Matrix码,你知道要怎么在VB中实现吗?
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