b/s 中怎么利用javascript 引用MSComm32.ocx操作客户端串口。 我在网上找了许多资料,发现基本上雷同,但是我根据步骤任无法实现。我是在网上下载了一个标准的MSComm32.ocx的串口插件,在命令行使用regsvr32 MSComm32.ocx进行注册。然后在web页面中利用ActiveX控件的方式在本地操作串口。但是无论怎么测试,任无法触发 OnComm事件。请各位看看我代码或操作方式是否有误,非常感激。代码贴出如下,如有朋友做过类似开发的,请加我QQ:136898234。(我的目的是要连接客户端的一个串口方式的读卡器获取RFID卡片的卡号)。
<html>
<head>
<title>****************************</title>
<SCRIPT ID=clientEventHandlersJS LANGUAGE=javascript>
//重写mscomm控件的唯一事件处理代码
function MSComm1_OnComm()
{
var len=0;
//window.alert("happy");
if(MSComm1.CommEvent==1)//如果是发送事件
{
window.alert("ok");//这句正常,说明发送成功了
}
else if(MSComm1.CommEvent==2)//如果是接收事件
{
//window.alert(MSComm1.CommEvent);//
//window.alert(MSComm1.Input);//
document.form1.txtReceive.value=document.form1.txtReceive.value + MSComm1.Input;
}
return false;
}
</SCRIPT>
<SCRIPT LANGUAGE=javascript FOR=MSComm1 EVENT=OnComm>
// MSComm1控件每遇到OnComm事件就调用MSComm1_OnComm()函数
alert("event");
MSComm1_OnComm() ; </SCRIPT>
<script language="JavaScript">
//打开端口并发送命令程序
function OpenPort()
{
alert(MSComm1.PortOpen);
if(MSComm1.PortOpen == true)
{
window.alert("true");
}
if(MSComm1.PortOpen==false)
{
MSComm1.PortOpen=true;
MSComm1.Output="AA 00 03 88 18 0A 99 BB";//发送命令
}
else
{
window.alert ("已经开始接收数据!");
}
} </script>
</head>
<OBJECT CLASSID="clsid:648A5600-2C6E-101B-82B6-000000000014" id=MSComm1 codebase="MSCOMM32.OCX" type="application/x-oleobject" style="LEFT:54px; TOP:14px">
<PARAM NAME="CommPort" VALUE="1">
<PARAM NAME="DTREnable" VALUE="1">
<PARAM NAME="Handshaking" VALUE="0">
<PARAM NAME="InBufferSize" VALUE="1024">
<PARAM NAME="InputLen" VALUE="0">
<PARAM NAME="NullDiscard" VALUE="0">
<PARAM NAME="OutBufferSize" VALUE="512">
<PARAM NAME="ParityReplace" VALUE="0">
<PARAM NAME="RThreshold" VALUE="1">
<PARAM NAME="RTSEnable" VALUE="1">
<PARAM NAME="SThreshold" VALUE="2">
<PARAM NAME="EOFEnable" VALUE="0">
<PARAM NAME="InputMode" VALUE="0">
<PARAM NAME="DataBits" VALUE="8">
<PARAM NAME="StopBits" VALUE="1">
<PARAM NAME="BaudRate" VALUE="9600">
<PARAM NAME="Settings" VALUE="9600,N,8,1">
</OBJECT>
<body>
<form name="form1">
<input type="button" name="Submit" value="提交" onClick="OpenPort()">
<input type="text" name="txtReceive" value="">
</form>
</body>
</html>
<html>
<head>
<title>****************************</title>
<SCRIPT ID=clientEventHandlersJS LANGUAGE=javascript>
//重写mscomm控件的唯一事件处理代码
function MSComm1_OnComm()
{
var len=0;
//window.alert("happy");
if(MSComm1.CommEvent==1)//如果是发送事件
{
window.alert("ok");//这句正常,说明发送成功了
}
else if(MSComm1.CommEvent==2)//如果是接收事件
{
//window.alert(MSComm1.CommEvent);//
//window.alert(MSComm1.Input);//
document.form1.txtReceive.value=document.form1.txtReceive.value + MSComm1.Input;
}
return false;
}
</SCRIPT>
<SCRIPT LANGUAGE=javascript FOR=MSComm1 EVENT=OnComm>
// MSComm1控件每遇到OnComm事件就调用MSComm1_OnComm()函数
alert("event");
MSComm1_OnComm() ; </SCRIPT>
<script language="JavaScript">
//打开端口并发送命令程序
function OpenPort()
{
alert(MSComm1.PortOpen);
if(MSComm1.PortOpen == true)
{
window.alert("true");
}
if(MSComm1.PortOpen==false)
{
MSComm1.PortOpen=true;
MSComm1.Output="AA 00 03 88 18 0A 99 BB";//发送命令
}
else
{
window.alert ("已经开始接收数据!");
}
} </script>
</head>
<OBJECT CLASSID="clsid:648A5600-2C6E-101B-82B6-000000000014" id=MSComm1 codebase="MSCOMM32.OCX" type="application/x-oleobject" style="LEFT:54px; TOP:14px">
<PARAM NAME="CommPort" VALUE="1">
<PARAM NAME="DTREnable" VALUE="1">
<PARAM NAME="Handshaking" VALUE="0">
<PARAM NAME="InBufferSize" VALUE="1024">
<PARAM NAME="InputLen" VALUE="0">
<PARAM NAME="NullDiscard" VALUE="0">
<PARAM NAME="OutBufferSize" VALUE="512">
<PARAM NAME="ParityReplace" VALUE="0">
<PARAM NAME="RThreshold" VALUE="1">
<PARAM NAME="RTSEnable" VALUE="1">
<PARAM NAME="SThreshold" VALUE="2">
<PARAM NAME="EOFEnable" VALUE="0">
<PARAM NAME="InputMode" VALUE="0">
<PARAM NAME="DataBits" VALUE="8">
<PARAM NAME="StopBits" VALUE="1">
<PARAM NAME="BaudRate" VALUE="9600">
<PARAM NAME="Settings" VALUE="9600,N,8,1">
</OBJECT>
<body>
<form name="form1">
<input type="button" name="Submit" value="提交" onClick="OpenPort()">
<input type="text" name="txtReceive" value="">
</form>
</body>
</html>
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货