请教高手,小弟要用vb写套POS系统,但不知如何操作小票打印机,哪位兄弟给我提供些技术支持,最好是vb源码范例,高分相送 !

解决方案 »

  1.   

    open "LPT1" for output as #1
    print #1,"pos打印"
    print #1,string(10,"=")
    print #1,""
    print #1,""
    close #1
      

  2.   

    得用MSCOMM打印.
    with mscomm1
    .portopen=true
    .handshaking=comRTS
    .handshaking=comNone
    .output=chr$(27)+"@"
    .output=chr$(27)+"z"+chr$(1)
    .output=chr$(27)+"d"+chr$(1)
    .output=打印内容+chr$(13)+chr$(10)
    .portopen=false
    end with
      

  3.   

    方法一:直接用printer
        Printer.ScaleMode = vbTwips
        Printer.Height = Prn_High * Ti
        Printer.Width = Prn_Weight * Ti
     
        Printer.FontSize = 10     Printer.CurrentX = 10
         Printer.CurrentY = 10
         Printer.Print "12345"
       
         Printer.NewPage
    /*******************************************************/
    方法2:采用ESC/P指令集打印
         
    Private Type DOCINFO
      pDocName As String
      pOutputFile As String
      pDatatype As String
    End Type
         
    Dim CR As String
          
    Private Declare Function ClosePrinter Lib "winspool.drv" (ByVal _
       hPrinter As Long) As Long
    Private Declare Function EndDocPrinter Lib "winspool.drv" (ByVal _
       hPrinter As Long) As Long
    Private Declare Function EndPagePrinter Lib "winspool.drv" (ByVal _
       hPrinter As Long) As Long
    Private Declare Function OpenPrinter Lib "winspool.drv" Alias _
      "OpenPrinterA" (ByVal pPrinterName As String, phPrinter As Long, _
      ByVal pDefault As Long) As Long
    Private Declare Function StartDocPrinter Lib "winspool.drv" Alias _
      "StartDocPrinterA" (ByVal hPrinter As Long, ByVal Level As Long, _
      pDocInfo As DOCINFO) As Long
    Private Declare Function StartPagePrinter Lib "winspool.drv" (ByVal _
      hPrinter As Long) As Long
    Private Declare Function WritePrinter Lib "winspool.drv" (ByVal _
      hPrinter As Long, pBuf As Any, ByVal cdBuf As Long, _
      pcWritten As Long) As Long
      
     Public Sub Print_axis(P1 As String, Str As String)
           Dim lhPrinter As Long
           Dim lReturn As Long
           Dim lpcWritten As Long
           Dim lDoc As Long
           Dim sWrittenData As String
           Dim MyDocInfo As DOCINFO
           CR = Chr(13) & Chr(10)
            
           lReturn = OpenPrinter(P1, lhPrinter, 0)
           If lReturn = 0 Then
             MsgBox "未正确安装打印机!"
             Exit Sub
           End If
           MyDocInfo.pDocName = "标签"
           MyDocInfo.pOutputFile = vbNullString
           MyDocInfo.pDatatype = vbNullString
           lDoc = StartDocPrinter(lhPrinter, 1, MyDocInfo)
           Call StartPagePrinter(lhPrinter)
           sWrittenData = Str
           lReturn = WritePrinter(lhPrinter, ByVal sWrittenData, _
           Len(sWrittenData), lpcWritten)
           lReturn = EndPagePrinter(lhPrinter)
           lReturn = EndDocPrinter(lhPrinter)
           lReturn = ClosePrinter(lhPrinter)
    End Sub       Tstr = Chr(27) & Chr(64) & _
                   Chr(27) & Chr(74) & Chr(23) & _
                   Chr(28) & Chr(38) & _
                   Chr(27) & Chr(43) & Chr(100) & _
                   Chr(28) & Chr(87) & Chr(0) & _
                   String(15, " ") & S1 & S2 & CR & _
                   Chr(27) & Chr(74) & Chr(5) & _
                   String(15, " ") & S3 & S4 & CR & _
                   Chr(27) & Chr(74) & Chr(7) & _
                   String(15, " ") & S5 & S6 & CR & _
                   CR & CR & CR & _
                   Chr(27) & Chr(106) & Chr(20)
                   Call Print_axis("Epson LQ-300K", Tstr)