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 FunctionPrivate 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 SubPrivate 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>