注册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等其他浏览器。下面是结合广大网友资料的总结,顺便记录下实现的过程和碰到的问题。
一、使...