mscomm32.ocx 注册 和 web 调用案例

 

注册mscomm32.ocx步骤:

1、把 mscomm32.ocx 移动到  windows/System32 或 System64 里 (看系统位数)

2、以管理员身份运行cmd,输入:regsvr32 mscomm32ocx     (mscomm32.ocx路径要对)

控件不能加载
   ie安全级别设置IE选项--安全--自定义级别--ActiveX控件和插件--均选“启用”或者“提示”。

注:如果成功注册了msccomm32.ocx, 并且 ie浏览器 配置OK,但 web就是无法调用,可考虑安装个visual studio。

 

附件:https://download.csdn.net/download/u011396080/10619796

 

下面是 html 测试代码

<html> 
 <head> 
<title>JavaScript串口测试</title>
   <meta http-equiv="Content-Type" content="text/html; charset=GB2312" />

    <SCRIPT   ID=clientEventHandlersJS   LANGUAGE=javascript> 
    <!--   
    function   MSComm1_OnComm()   
    {      
      alert();
       switch(MSComm1.CommEvent)
       {
         case 1:{ window.alert("Send OK!"); break;}  //发送事件
         case 2: { Receive();break;} //接收事件
         default: alert("Event Raised!"+MSComm1.CommEvent);;
       }       
  }  
  //--> 
  
  </SCRIPT>
  
   <SCRIPT   LANGUAGE=javascript   FOR=MSComm1   EVENT=OnComm> 
   <!--
   // MSComm1控件每遇到 OnComm 事件就调用 MSComm1_OnComm()函数
           MSComm1_OnComm()
    //--> 
   </SCRIPT>  
  
   <script   language="JavaScript"   type="text/JavaScript"> 
   <!-- 
 
 String.prototype.Blength = function(){  
     var arr = this.match(/[^\x00-\xff]/ig);  
     return  arr == null ? this.length : this.length + arr.length;  
 }  
 
    function OperatePort() {
	  if(MSComm1.PortOpen==true)
      {
       try{
		MSComm1.PortOpen=false;
        document.getElementById("OperateButton").value="打开串口";
       }catch(ex)
         {alert(ex.message);}       
      }
      else{
       try{ MSComm1.PortOpen=true;
        document.getElementById("OperateButton").value="关闭串口";
       }catch(ex)
         {alert(ex.message);}     
      }
   }
  
   function ConfigPort()
   {
    alert("xxxxxxxxxxxxxxxxx"+MSComm1.PortOpen);
     if(MSComm1.PortOpen==false)
     {   
       try{
         MSComm1.CommPort=document.getElementById("ComName").value;
		 alert(MSComm1.CommPort)
         MSComm1.Settings=document.getElementById("BaudRate").value.toString()+
                          ","+document.getElementById("CheckBit").value.toString()+
                          ","+document.getElementById("DataBits").value.toString()+
                          ","+document.getElementById("StopBits").value.toString(); 
         MSComm1.OutBufferCount =0;           //清空发送缓冲区
         MSComm1.InBufferCount = 0;           //滑空接收缓冲区                         
         alert("已配置串口COM"+MSComm1.CommPort+"\n 参数:"+MSComm1.Settings);       
         }catch(ex){alert(ex.message);}
     }
     else{ alert("请先关闭串口后再设置!");}
   }
  
   function Send()
   {
      //alert(document.getElementById("txtSend").value);
      var orgstr=document.getElementById("txtSend").value;     
      var newstr="";
      var hexflag=document.getElementById("isSendHex").checked;
      if(hexflag&&orgstr!="")
      {
        if(orgstr.substr(0,2)=="0x"||orgstr.substr(0,2)=="0X") orgstr=orgstr.substring(2,orgstr.length);
        if(orgstr.length%2!=0) orgstr="0"+orgstr; 
		// TODO  str2hex判断16进制的方法
		alert(str2hex(orgstr));
        if((newstr=str2hex(orgstr))=="") {alert("错误的16进制数");return false;}
      }
      try{
		 //MSComm1.Output=hexflag?newstr:orgstr;  
		MSComm1.Output = "AA 00 03 88 18 0A 99 BB";
	  }catch(ex)     
      {alert(ex.message);}
   }
  
   function Receive()
   {   
     //alert("InBufferCount::"+MSComm1.InBufferCount);
     document.getElementById("txtReceive").value += MSComm1.Input;   
     //alert("InBufferCount::"+MSComm1.InBufferCount);   
   }
  
   function ClearReceived()
   {
      document.getElementById("txtReceive").innerText="";
   } 
   // 转化成16进制
	function str2hex(s) {
		var a,b,d;
		var hexStr = '';
		for (var i=0; i < s.length; i++) {
		d = s.charCodeAt(i);
		a = d % 16;
		b = (d - a)/16;
		hexStr += '%' + "0123456789ABCDEF".charAt(b) + "0123456789ABCDEF".charAt(a);
		}
		return hexStr;
	}
	function charCode(v){
		return String.fromCharCode(v);
	}
  function checkInstallOCx() {
	 try{   
      		var   obj = new ActiveXObject("MSCOMMLib.MSComm.1"); 
      		alert("已经注册");
 	 }   
	  catch(e)   
	  {   
      alert(e);
	      alert("没有注册");
	  }  
	}
  --> 

</script>   
 
</head> 
<body>

<form name="form1">     


<fieldset style="width:200px;height:250px;text-align:center;">
<legend>配置串口</legend>
    <div style="float:left;width:200px">   
    <br/>   
    <span>串口号:</span>
    <select name="ComName" id="ComName" style="width:75px" >
    <option value="1"  >COM1</option>
    <option value="2"  >COM2</option>
    <option value="3"  >COM3</option>
    <option value="4" selected >COM4</option>
    <option value="5"  >COM5</option>
    <option value="6"  >COM6</option>   
    </select>   
    <br/>   
    <span>波特率:</span>
    <select name="BaudRate" id="BaudRate" style="width:75px" >
    <option value="9600" selected  >9600</option>
    <option value="57600"  >57600</option>
    <option value="115200" >115200</option>   
    </select>   
    <br/>
   
    <span>校验位:</span>
    <select name="CheckBit" id="CheckBit" style="width:75px" >
    <option value="N" selected  >无NONE</option>
    <option value="O"  >奇ODD</option>
    <option value="E" >偶EVEN</option>   
    </select>   
    <br/>   
   
    <span>数据位:</span>
    <input type=text id="DataBits" name="DataBits" value=8 style="width:75px;height:20px">
    <br/>
   
    <span>停止位:</span>
    <input type=text id="StopBits" name="StopBits" value=1 style="width:75px;height:20px">
    <br/>
    <br/>
    <input   type="button" id="ConfigButton" style="width:80px;height:30px;font-size:13px"   name="ConfigButton"   value="配置串口"   onClick="ConfigPort()">       
    <input   type="button" id="OperateButton" style="width:80px;height:30px;font-size:13px"   name="OperateButton"   value="打开串口"   onClick="OperatePort()">       
    </div> 
</fieldset>



<fieldset style="width:200px;height:250px;text-align:center;">
<legend>发送区域</legend>
<div style="float:left;">
    <textarea id="txtSend"  name="txtSend" style="width:200px;height:160px"></textarea> 
    <br/>
    <span><input id="isSendHex" name="isSendHex" type="checkbox" checked="0" />16进制</span>
    <input   type="button" id="SendButton" style="width:100px;height:30px"   name="SendButton"   value="发送"   onClick="Send()">   
</div> 
</fieldset>

<fieldset style="width:200px;height:250px;text-align:center;">
<legend>接收区域</legend>   
<div style="float:left;">
    <textarea id="txtReceive" READONLY=TRUE  name="txtReceive" style="width:200px;height:160px"></textarea>  
    <br/>
    <span><input id="isReceiveHex" name="isReceiveHex" type="checkbox" />16进制</span>
    <input  type="button" id="ClearButton" style="width:100px;height:30px"   name="ClearButton"   value="清空"   onClick="ClearReceived()">
</div>
</fieldset>   




</form> 
 
 <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="3"/> 
     <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>
    <input   type="button"   value="注册测试"   onclick="checkInstallOCx();"> 

</body> 
</html>  

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值