麻烦各位给我看一下下面程序是否错误及有啥不合理的地方。
运行到Open "lpt1" For Output As #i的时候会报错,提示“文件未找到”是怎么回事
我这里没有打印机Private Sub Command4_Click()
On Error GoTo errors:  
    If BoxInfo.sPrintBill = 1 Then            
             If intChgMode = CHG_MODE_CENTER Then
             strSQL = "           收费凭据         " & Chr$(10) & Chr$(10) & _
                     "卡    号: " & lblInfo(0).Caption & Chr$(10) & _
                     "卡 类 型: " & lblInfo(1).Caption & Chr$(10) & _
                     "车牌号码: " & cboPrevCarNO(1).Text & tboxPrevCarNo(2).Text & Chr$(10) & _
                     "入场时间: " & lblInfo(4) & Chr$(10) & _
                     "收费时间: " & lblInfo(5) & Chr$(10) & _
                     "收费员名: " & LoginInfo.sUserName & Chr$(10) & _
                     "收费金额: " & tMoney(2).Text & "元" & Chr$(10) & _
                     Chr$(10)
             Else
             strSQL = "           收费凭据         " & Chr$(10) & Chr$(10) & _
                     "卡    号: " & lblInfo(0).Caption & Chr$(10) & _
                     "卡 类 型: " & lblInfo(1).Caption & Chr$(10) & _
                     "车牌号码: " & lblInfo(2).Caption & Chr$(10) & _
                     "入场时间: " & lblInfo(4).Caption & Chr$(10) & _
                     "收费时间: " & lblInfo(5).Caption & Chr$(10) & _
                     "收费员名: " & LoginInfo.sUserName & Chr$(10) & _
                     "收费金额: " & tMoney(2) & "元" & Chr$(10) & _
                     Chr$(10)
            End If
            
            Dim i As Integer
            i = Int(Rnd() * 10)
            Open "lpt1" For Output As #i
           Print #i, Chr$(27) + "@"                  '初始化打印机
           Print #i, Chr$(28) + Chr$(38)             '进入汉字方式
           Print #i, strSQL
           Print #i, Chr$(27) + Chr$(112) + Chr$(0) + Chr$(50) + Chr$(50)          '打开钱箱
           Close #i
            
        'End If
    End If
    Exit Sub
errors:
    Debug.Print Err.Description
End Sub

解决方案 »

  1.   

    i = freefile 
    Open "lpt1" For Output As #i
    ......
    close 如果没有打印机,好象通常要报错,甚至假死....
      

  2.   

    楼主可以试试用print对象写打印代码
      

  3.   

    因为是直接向lpt1发送打印信息,所以必须是并口打印机,这种方式的好处是无需安装打印机驱动,但是打印机必须是接上并口并且是待机状态,要防止死机,只有在发送打印信息前,先检测并口上的打印机状态,这个VB直接处理好象有难度....
      

  4.   

    此法能用在USB口上?
    那用再并口上能否成功呢?
      

  5.   

    看来是 POS 机,虽然它集成了打印机,连接的并不一定是 LPT1,也有可能是 COM 口。
    具体查一下技术手册。
      

  6.   

    网上有个c写的winIo.dll,不过那个东西我以前用过,权限问题比较麻烦
    好象记得沈善居上面有关于VB并口操作的源码,它也是用了一个c写的dll,你去找找吧....
      

  7.   

    楼主可以试试用print对象写打印代码同意2楼的说法
      

  8.   

    Printer.Print "金额:" & Text1(51).Text & "元"
      

  9.   

     准备打印机
    Dim prn As Printer
      For Each prn In Printers
         Combo3.AddItem prn.DeviceName & " on " & prn.Port
      Next prn
      SelectDefaultPrinter Combo3
      If Combo3.Text = "" Then MsgBox "请准备好打印机!", vbOKOnly, "提示"生成打印文件
     Open "c:\temp\yy.txt" For Output As #1
           Print #1,
           Print #1, Tab(28); "收据"
           Print #1, Tab(4); "单据号:" & Trim(djh.Caption)
           ....
    打印 Dim Submit As String
     Dim prn As Printer
     Submit = UCase(Trim("c:\temp\yy.txt"))
          If Not IsFile(Submit) Then
             MsgBox "找不到文件: " & Submit, vbExclamation, "文件错误"
             Exit Sub
          End If
          For Each prn In Printers
           If InStr(Combo3, prn.DeviceName) = 1 And Right(Combo3, Len(prn.Port)) = prn.Port Then
             'prn.CurrentX = 0
             'prn.CurrentY = 0
             'prn.Font = "宋体"
             'prn.FontSize = 14
             Call SpoolFile(Submit, prn.DeviceName)
             Exit For
            End If
           Next prn