Public flagezt 
Private Sub Command1_Click() 
    If Text1.Text = "" Then 
        MsgBox "请输入数据" 
    Else 
        flagezt = 1 
        Call print_jc  '调用打印函数 
        Delay (110) 
        If flagezt = 1 Then 
            MsgBox "打印机异常" 
        End If 
    End If 
End Sub 
Public Sub Delay(mSec As Long) 
  On Error Resume Next 
          Dim TStart  As Single 
          TStart = Timer 
          While (Timer - TStart) < (mSec / 1000) 
                  DoEvents 
          Wend 
End Sub 
Private Function print_jc() As String 
    Dim i As Integer 
    Dim str3 As String 
    Dim sj() As Byte 
    Dim sj_Txt As String 
    ''1B40100401 
    
    sj_Txt = "1B40100401" 
        
    ReDim sj(Len(sj_Txt) / 2 - 1) 
    
    For i = 0 To Len(sj_Txt) - 1 Step 2 
        sj(i / 2) = Val("&H" & Mid(sj_Txt, i + 1, 2)) 
    Next 
    
    MSComm1.Output = sj '向串口发数据 
End Function Private Function print_pt() As String 
    Dim i As Integer 
    Dim str3 As String 
    Dim sj() As Byte 
    Dim sj_Txt As String 
    ''1B40100401 
    Dim chr_str As String 
    Dim hex_str As String 
    chr_str = Text1.Text 
    Text1.Text = "" 
    hex_str = chr_hex(chr_str) '将字符串转为十六进制表示的字符串 
    hex_str = Replace(hex_str, "2F6E", "0D0A")  ''将回车换行的asc码DA转换转换成ODOA 
  
    Dim pt_dy As String 
    pt_dy = hex_str 
    sj_Txt = "1b40161b6coa1D28460400010001011d0c1b6405" + pt_dy + "0a1d5601100401" 
        
    ReDim sj(Len(sj_Txt) / 2 - 1) 
    
    For i = 0 To Len(sj_Txt) - 1 Step 2 
        sj(i / 2) = Val("&H" & Mid(sj_Txt, i + 1, 2)) 
    Next 
    
    MSComm1.Output = sj '向串口发数据 
End Function 
Private Function chr_hex(a As String) 
    Dim b As String 
    Dim i As Integer 
    
    For i = 1 To Len(a) 
      b = b & Hex(Asc(Mid(a, i, 1))) 
    Next i 
    chr_hex = b 
End Function 
Private Sub Form_Load() 
    flagezt = 1 
    With MSComm1 
        .CommPort = 1 
        .Settings = "9600,N,8,1" 
        .InBufferSize = 1024 
        .OutBufferSize = 1024 
        .InputLen = 0 
        .RThreshold = 1 
        .RTSEnable = True 
        .InputMode = comInputModeBinary 
        .InBufferCount = 0 
        .OutBufferCount = 0 
        On Error GoTo Err: 
    'Exit Sub 
Err: 
If Err.Number = 8005 Then 
      MsgBox "打开端口1失败" 
      
  Else 
        MSComm1.PortOpen = True '打开通讯端口 
          Exit Sub 
          
  End If 
  
  End With 
  
End Sub Private Sub MSComm1_OnComm() 
    Dim DataRead() As String 
    Dim bytData() As Byte  '用来从接收缓冲区读取数据 
    Dim i As Integer 
    Dim leng As Integer 
    Dim ccount As Integer 
    Dim readmsg As String 
    flagezt = 2 
    With MSComm1 
        Select Case .CommEvent 
        Case comEvReceive 
        
            .RThreshold = 0 '关闭串口事件响应 
            
            Do 
                ccount = .InBufferCount 
                Delay (100) 
            Loop Until .InBufferCount = ccount 
            
            bytData = .Input 
            ReDim DataRead(UBound(bytData)) As String 
            
            For i = 0 To UBound(bytData) '读串口缓冲区 
                DataRead(i) = Chr(bytData(i)) 
                readmsg = readmsg & DataRead(i) 
            Next i 
            Select Case readmsg 
            Case Chr(&H0) 
                MsgBox "装纸成功" 
            Case Chr(&H4) 
                MsgBox "打印机缺纸,请重新装纸" 
            Case Chr(&H1E) 
                MsgBox "打印机缺纸,请重新装纸" 
            Case Chr(&HFE) 
                MsgBox "打印机加电正常" 
            Case Chr(&HFC) 
                MsgBox "打印机加电正常" 
            Case Chr(&HFF) 
                MsgBox "打印机加电正常" 
            Case Chr(&H0) 
                MsgBox "打印机异常" 
            Case Chr(&H16) 
                  If Text1.Text <> "" Then 
                    Call print_pt 
                Else 
                    MsgBox "打印成功" 
                End If 
            End Select 
            
          Text3.Text = Text3.Text + readmsg 
            'Text3.Text = readmsg 
            .RThreshold = 1 '恢复串口事件响应 
        End Select 
    End With 
End Sub 
ps: php是用事件调用 
<HTML> 
<HEAD> 
<TITLE>(第二步) </TITLE> 
<SCRIPT  LANGUAGE="javascript"  FOR="com_fp"  EVENT="ScanOK">  
  <!--  
  read_card_scanok();  
  -->  
</SCRIPT> <script language="JavaScript"> 
function timeout_jy() 

    document.all.pos_td.innerHTML="等待用户操作超时!"; 
setTimeout('myrefresh()',3000); 
document.all.Submit1.disabled=true; 
} function myrefresh() 

      
    window.location="first.php"; 
} function timeout() 

    document.all.pos_td.innerHTML="发票打印机状态异常,请检查打印机是否正常!"; 
setTimeout('myrefresh()',5000); 

setTimeout('timeout()',15000); //指定10秒后返回(可认为打印机不正常,无电源或通讯线路不正常) 
</script>    
</HEAD> <BODY> 
  <OBJECT ID="com_fp" CLASSID="CLSID:AEEC6FEF-??????-A2B2-E56C90FD6B46" width="0" height="0"> </OBJECT> 
  <table width="100%"> 
    <tr> 
      <td align="center" height="120" id="pos_td">&nbsp; </td> 
    </tr> 
<form name="form1" method="post" action="third.php"> 
<tr> 
      <td align="center" height="20" > 
  
    <input type="hidden" name="name" value=" <? echo $name; ?>" > 
<input type="hidden" name="id" value=" <? echo $id; ?>" > 
<input type="submit" name="Submit1" value="确认打印" disabled> 
&nbsp;&nbsp;&nbsp;&nbsp; 
<input type="submit" name="Submit2" value=" 返 回 " onClick="myrefresh()">      </td> 
    </tr> 
</form> 
  </table> 
</BODY> <SCRIPT  ID="clientEventHandlersJS"  LANGUAGE="javascript">  
  
  function  read_card_scanok()          //响应事件函数 
  {  
    var str; 
str=com_fp.card_number;              //从控件中取得返回值 if(str.length>0) 

    document.all.pos_td.innerHTML="打印机状态正常,可以交易!"; 
document.all.Submit1.disabled=false; 
setTimeout('timeout_jy()',10000); 

  }  
    
  function  read_card_init()  
  { 
    com_fp.com_port="1";                //串口号  
com_fp.com_conf="9600,N,8,1";        //串口参数 
com_fp.init();            //初始化串口 
    com_fp.print_jc();        // 
  } 
  
  read_card_init();      //查询pos机状态 
</script>  </HTML>