当前位置:编程学习 > VB >>

文件已生成 ,打印机为什么不打印?代码如下:

Public Function PrintBarcode(printstr As String) As String

        Dim m_port As String
        m_port = ReadIni("ZEBRA888T", "port")
    
        Dim arrPrint() As String
        arrPrint = Split(printstr, "^")
        
        Open App.Path & "\print.txt" For Output As #1
   
        '循环打印
        '外层循环
        Dim strPrint() As String
        strPrint = Split(printstr, "$")
        Dim arrLen As Integer
        arrLen = UBound(strPrint) - LBound(strPrint) + 1
        Dim printstring As String  '打印内容
        printstring = ""
        
        For k = 0 To arrLen - 1
            Dim strParam() As String
            strParam = Split(strPrint(k), "^")
            '内层循环
            '循环打印
            
            
            '打印运单上的标签
            Print #1, "#!A1"
            Print #1, "#IMSR65.02/55.03"   '标签宽、高
            Print #1, "#HV65"            '浓度
            Print #1, "#PR4/4/"         '打印速度
            Print #1, "#RX0"
            Print #1, "#N13"
            Print #1, "#ERN/1//0"
            
            '以下是打印内容
            Print #1, "#T09.91 #J04.06 #YN901/0U/42///" & strParam(3) & "#G"             '汉字
            Print #1, "#T07.96 #J39.20 #YN101/0/42///YN101#G"                      '字符
            Print #1, "#T06.52 #J35.48 #YL0/0/00.51/74.25"                          '划线
            Print #1, "#T07.20 #J16.00 #YB13/0P2.0M/13.46/4///12343578329-3124#G"    '条码
                        
            '打印
            Print #1, "#Q1#G"
            Print #1, "#!P1"
        Next
           
        Close #1
        On Error Resume Next
       
        '文件字符集转换
        Dim filename As String, b() As Byte, S As String
        Dim ADO_Stream As Object
        filename = App.Path & "\print.txt" '请修改为具体文件名
        'If Dir(FileName) = "" Then Exit Sub
        ReDim b(FileLen(filename))
        Open filename For Binary As #1
        Get #1, , b
        Close #1
        S = StrConv(b, vbUnicode)
        
        Set ADO_Stream = CreateObject("ADODB.Stream")
        
        With ADO_Stream
            .Type = 2
            .Mode = 3
            .Charset = "utf-8"
            .Open
            .WriteText S
            .SaveToFile filename, 2
        End With
        
        Set ADO_Stream = Nothing


        FileCopy App.Path & "\print.txt", m_port
        
        If Err.number <> 0 Then
            ZebraPrint = "请确认打印机端口设置正确" ''Err.Description
        Else
            ZebraPrint = ""
        End If
End Function



好像  FileCopy  不被识别 为啥呢? --------------------编程问答--------------------
引用楼主 weihualeiok 的回复:
Public Function PrintBarcode(printstr As String) As String

  Dim m_port As String
  m_port = ReadIni("ZEBRA888T", "port")
   
  Dim arrPrint() As String
  arrPrint = Split(printstr, "^")
   
……

LZ的代码是输出到文本文件的代码.
打印需要这样组织代码:
Private Sub Command1_Click()
Dim i As Integer
Open "LPT1" For Output As #1
Print #1, Chr(27); Chr(64) '清除原先的打印设置,即初始化
Print #1, Chr(28) & "@" '设置汉字状态
pnt1
Print #1, Chr(28) & "J" '设置汉字纵向打印
pnt1
Print #1, Chr(28) & "K" '设置汉字横向打印状态
Print #1, Chr(27); "3"; Chr(45) '设置换行量宽度
Print #1, Chr(27); "W"; Chr(1) '设置四倍放大
Print #1, Chr(27); "q"; Chr(3) '设置空心字
pnt1
Print #1, Chr(27); Chr(64) '清除原先的打印设置,即初始化
For i = 3 To 24 Step 3 '执行字符间隔调整
Print #1, Chr(28); "S"; Chr(0); Chr(i)
pnt1
Next
Print #1, Chr(28); "S"; Chr(0); Chr(3)
Print #1, Chr(27); "4"; '设置斜体
Print #1, Chr(27); "q"; Chr(3) '设置空心字
pnt1
'Print #1, Chr(28) & "." '切换回西文状态
Close #1
End Sub

Private Sub Form_Load()
Text1 = ""
Open "LPT1" For Output As #1
Print #1, Chr(27); Chr(64) '清除原先的打印设置,即初始化
Close
End Sub

Public Sub pnt1()
Print #1, , "LPT1:" & "带有心脏的中英文打印机"
End Sub

或者使用Printer对象实施打印. --------------------编程问答-------------------- 我要的是从自动生成的Print.txt中读取的内容发送到打印机打印。

 '打印运单上的标签
  Print #1, "#!A1"
  Print #1, "#IMSR65.02/55.03" '标签宽、高
  Print #1, "#HV65" '浓度
  Print #1, "#PR4/4/" '打印速度
  Print #1, "#RX0"
  Print #1, "#N13"
  Print #1, "#ERN/1//0"

这一段是标签内容被存到啦Print.txt中
 发送到打印机出来就是 条形码。

现在我要的是从这个Print.txt中
读取内容发送到打印机进行打印。

Dim m_port As String
m_port = ReadIni("ZEBRA888T", "port")
这个是打印机的端口读取的配置文件。

我想着用FileCopy App.Path & "\print.txt", m_port  可以调用打印机但是 没效果。
--------------------编程问答-------------------- --------------------编程问答-------------------- 我已经搞定啦 谢谢,我原来是想着吧 要打印的内容输入到 一个txt 文本中 在 从文本中调用,
现在直接打印 可以啦 --------------------编程问答--------------------
引用 4 楼 weihualeiok 的回复:
我已经搞定啦 谢谢,我原来是想着吧 要打印的内容输入到 一个txt 文本中 在 从文本中调用,
现在直接打印 可以啦

自己能解决问题是最好的实践经验.
--------------------编程问答--------------------        Dim arrPrint() As String
        arrPrint = Split(printstr, "^")
        
        ''Open App.Path & "\print.txt" For Output As #1
        Open "LPT1:" For Output As #1   ///////我把上面那一句替换成这一句,可以打数字字母,但是不能打印中文,如果我按原来的还是把它写到一个txt文件中用dos命令使用打印机却可以打印中文,打印机编码已经调为UTF-8
   
        '循环打印
        '外层循环
        Dim strPrint() As String
        strPrint = Split(printstr, "$")
        Dim arrLen As Integer
        arrLen = UBound(strPrint) - LBound(strPrint) + 1 --------------------编程问答-------------------- 修改成com1 端口,还是先吧内容存到一个 print。txt文件中 在转换格式 搞定然后输送到打印机 搞定 --------------------编程问答-------------------- Print #1, Chr(28) & "@" '设置汉字状态

--------------------编程问答-------------------- 我用的是 艾丽打印机  不是斑马的 --------------------编程问答--------------------
            Print #1, "A15,15,0,8,1,1,N," & Chr(34) & "合同:" & Chr(34)
            Print #1, Chr(13) + Chr(10)
            Print #1, "A100,20,0,4,1,1,N," & Chr(34) & arrPrint(0) & Chr(34)
            Print #1, Chr(13) + Chr(10)


你能 给我说说 "A15,15,0,8,1,1,N," & Chr(34)中的每个字符代表是啥吗? 这个是斑马打印机上的,打印机还没
拿到,没法 看效果, 所以只能先问问你 我好先调调 --------------------编程问答--------------------
引用楼主 weihualeiok 的回复:
Public Function PrintBarcode(printstr As String) As String

  Dim m_port As String
  m_port = ReadIni("ZEBRA888T", "port")
   
  Dim arrPrint() As String
  arrPrint = Split(printstr, "^")
   
……


为什么不使用Printer对象? --------------------编程问答--------------------
引用 10 楼 weihualeiok 的回复:
  Print #1, "A15,15,0,8,1,1,N," & Chr(34) & "合同:" & Chr(34)
  Print #1, Chr(13) + Chr(10)
  Print #1, "A100,20,0,4,1,1,N," & Chr(34) & arrPrint(0) & Chr(34)
  Print #1, Chr(……

我贴出的代码是EPSON针打的,各种打印机控制命令可能有不同,需要看产品说明书. --------------------编程问答-------------------- 哦 谢谢啊, 你们主要是做的什么业务啊?不会是主要是用vb吧 
补充:VB ,  数据库(包含打印,安装,报表)
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,