相关文章推荐
急躁的毛巾  ·  科研机构·  2 年前    · 
腹黑的高山  ·  奥迪Q4 ...·  2 年前    · 

注册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 测试代码

<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) 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) 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;} //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() { var obj = new ActiveXObject("MSCOMMLib.MSComm.1"); alert("已经注册"); catch(e) alert(e); alert("没有注册"); </script> </head> <form name="form1"> <fieldset style="width:200px;height:250px;text-align:center;"> <legend>配置串口</legend> <div style="float:left;width:200px"> <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> <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> <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> <span>数据位:</span> <input type=text id="DataBits" name="DataBits" value=8 style="width:75px;height:20px"> <span>停止位:</span> <input type=text id="StopBits" name="StopBits" value=1 style="width:75px;height:20px"> <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()"> </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> <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()"> </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> <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()"> </fieldset> <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> 一键 注册 Mscomm 32. ocx 控件工具Reg Mscomm 32.exe 1.支持Windows XP、Win7、Win8、Win10等Windows32位和64位操作系统,兼容中英操作系统,其他Windows操作系统应该也支持(没有测试)。 2.如果需要安装较新版本的 MSCOMM 控件,请更新目录下的 MSCOMM 32. OCX MSCOMM 32.DEP、 MSCOMM .SRG文件。 3.如果 注册 失败,请尝试“以管理员身份运行”程序。 其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题,如果是新手第一时间会认为是软件或游戏出错了,其实并不是这样,其主要原因就是你电脑系统的该dll文件丢失了或没有安装一些系统软件平台所需要的动态链接库,这时你可以下载这个 mscomm 32. ocx 文件(挑选合适的版本文件)把它放入到程序或系统目录中,当我们执行某一个.exe程序时,相应的DLL文件就会被 调用 ,因此将缺失的文件放回到原目录之后就能打开你的软件或游戏了.那么出现 mscomm 32. ocx 丢失要怎么解决? 具体步骤: 1.将文件 MSComm 32. ocx 复制粘贴到C:\Windows\system32目录下,如果是64位的系统,则放在C:\Windows\sysWOW64目录下; 2.打开命令行,执行命令:regsvr32 C:\Windows\system32\ MSComm 32. ocx , 如果是64位操作系统,则是运行代码 regsvr32 C:\Windows\sysWOW64\MSCo 最近项目要用到js串口 调用 ,网上找了许久发现目前 调用 MSComm 32 ocx 控件的例子很多但是有好多坑啊,所以自己总结了一下 串口的知识我就不普及了,自己百度。首先我们下载 MSCOMM 32. OCX 以及一些测试的工具 点击这里下载 提取码:mfop。 下载完后解压并且按里面的安装步骤进行安装。 话不多说直接上代码 //初始化控件,网上好多少了这一步骤 try { msComm 1 = new ... 一根串口线,两个串口转USB口,一台电脑完成硬件串口通信测试。 用一个电脑链接串口数据线测试发送和接收,一台电脑9针串口有限,所以需要转USB口,我的台式机主机前面的两个USB口是相通的,都插入从设备管理器看到只有一个COM口硬件,将另一端串口转USB口插入电脑主机后面的USB口,出现了另一个COM口,可以先开启两个串口助手程序,分别配置两个COM进行通讯,发现接发信息无误,测试成功。下面以CO... MSComm 控件通过串行端口传输和接收数据,为应用程序提供串行通讯功能。 MSComm 控件在串口编程时非常方便,程序员不必去花时间去了解较为复杂的API函数,而且在VC、VB、Delphi等语言中均可使用。 Microsoft Communications Control(以下简称 MSComm )是Microsoft公司提供的简化Windows下串行通信编程的ActiveX控件,它为应用程序提供了通 其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题,如果是新手第一时间会认为是软件或游戏出错了,其实并不是这样,其主要原因就是你电脑系统的该dll文件丢失了或者损坏了,这时你只需下载这个 mscomm 32. ocx 文件进行安装(前提是找到适合的版本),当我们执行某一个.exe程序时,相应的DLL文件就会被 调用 ,因此安装好之后就能重新打开你的软件或游戏了.那么出现 mscomm 32. ocx 丢失要怎么解决? 直接用JS 调用 MSComm . ocx 老是会出现IE不支持的情况,所以决定做个用户控件,用C#做,然后在IE中 调用 ,为了实现这个想法,遇到一个问题就是OnComm事件不会触发,后来比较下之前JS时设置的参数,需要把RTHreshold设置为1,RTSEnable为True。之后就可以读到数据。但愿明天到客户那里顺利。上帝保佑! 转载于:https://www.cnblogs.com/deng... 在一些应用场景中, Web 应用程序需要获取访问者电脑上连接的硬件设备,即浏览器和串口通信。通常的做法是为这些硬件设备开发ActiveX控件,并将其嵌入到HTML网页中供InternetExplorer浏览器访问这些设备信息。而采用ActiveX控件要求浏览器必须为InternetExplorer,不兼容Chrome等其他浏览器。下面是结合广大网友资料的总结,顺便记录下实现的过程和碰到的问题。 一、使...