大家好,我现在在JS中用MSComm32,利用COM串口与一个银行读卡器(EMV)通信。
在打开串口(MSComm1.PortOpen=true)后,在OnComm触发事件中得到的CommEvent=3,大概几秒钟就会有这样一个事件触发。用提示查看CTSHolding和DSRHolding属性均为False,查了一下,说是Clear To Send线电平一直为低,也就是与COM连接的读卡器还没有准备好接收。有用过com接口编程的没,帮忙看一下,卡在这里动不下去,紧急求救!=======================
控件注册和事件方法如下:<OBJECT id=MSComm1 CLASSID="clsid:648A5600-2C6E-101B-82B6-000000000014" codebase="MSCOMM32.OCX" 
  type="application/x-oleobject"  style="LEFT:54px;TOP:14px" >
      <PARAM   NAME="CommPort"   VALUE="1"/> 
     <PARAM   NAME="DataBits"   VALUE="8"/> 
     <PARAM   NAME="StopBits"   VALUE="1"/> 
     <PARAM   NAME="BaudRate"   VALUE="9600"/> 
     <PARAM   NAME="Settings"   VALUE="9600,N,8,1"/>          <PARAM   NAME="RTSEnable"   VALUE="1"/> 
     <PARAM   NAME="DTREnable"   VALUE="1"/> 
     <PARAM   NAME="Handshaking"   VALUE="0"/> 
     <PARAM   NAME="NullDiscard"   VALUE="0"/> 
     <PARAM   NAME="ParityReplace"   VALUE="?"/>
 
     <PARAM   NAME="EOFEnable"   VALUE="0"/>       
     <PARAM   NAME="InputMode"   VALUE="0"/>    
     <PARAM   NAME="InBufferSize"   VALUE="1024"/>       
     <PARAM   NAME="InputLen"   VALUE="0"/>     
     <PARAM   NAME="OutBufferSize"   VALUE="512"/> 
     
     <PARAM   NAME="SThreshold"   VALUE="0"/> 
     <PARAM   NAME="RThreshold"   VALUE="1"/> </OBJECT>
<SCRIPT   LANGUAGE=javascript   FOR=MSComm1   EVENT=OnComm> 
  <!--
  // MSComm1控件每遇到 OnComm 事件就调用 MSComm1_OnComm()函数
          MSComm1_OnComm()
   //--> 
</SCRIPT>  <SCRIPT   ID=clientEventHandlersJS   LANGUAGE=javascript> 
  <!--   
  function   MSComm1_OnComm()   
  {      
      switch(MSComm1.CommEvent)
      {
        case 1:{ window.alert("Send OK!"); break;}  //发送事件
        case 2: { Receive();break;} //接收事件
        default: alert("Event Raised!"+MSComm1.CommEvent);alert(MSComm1.CTSHolding + "-" + MSComm1.DSRHolding);alert(MSComm1.DTREnable + "-" + MSComm1.RTSEnable);
      }       
 }  
 //--> 
 </SCRIPT>

解决方案 »

  1.   

    我自己在用scommtest.exe工具打开任何一个COM端口,发送报文,都没有问题,而且还有正常的返回信息。走过路过的,帮忙分析一下,为什么用JS配置使用MSComm32 ActiveX的方式就无法与外设建立通信连接。CommEvent=3的事件,是指外设长时间不能应答,不允许接收COM串口发出信息的意思吧?如果是这样,又会是什么原因引起的呢,不得其解啊。
      

  2.   

    这边看过请忽略:
    http://blog.csdn.net/xuing/article/details/6688306
      

  3.   

    http://anole1982.iteye.com/blog/905403
      

  4.   

    没办法,这个控件好像不好用,没有试成功,也没有个过来人能指点一二。还是换用Applet实现,有点眉目了。