问高人:javascript操作串口的问题

jhdxhj 2009-03-16 12:56:52
问高人:javascript操作串口的问题,代码如下,串口用串口助手测试是好的,MSComm这东西也已经注册,但是下面的代码串口的读写一直没有执行,请高人看看为什么?
<html>
<head>
<title>JavaScript串口测试</title>
<meta http-equiv="Content-Type" content="text/html; charset=GB2312" />

</head>
<SCRIPT id="clientEventHandlersJS" LANGUAGE=javascript>
<!--

function MSComm1_OnComm()
{
alert(MSComm1.CommEvent);
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()函数
alert("555");
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()
{
if(MSComm1.PortOpen==false)
{
try{
MSComm1.CommPort=document.getElementById("ComName").value;
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;
if((newstr=str2hex(orgstr,16))=="") {alert("错误的16进制数");return false;}
}
try{
MSComm1.Output=hexflag?newstr:orgstr;
}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="";
}
-->

</script>

<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" selected >COM1</option>
<option value="2" >COM2</option>
<option value="3" >COM3</option>
<option value="4" >COM4</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="checked" />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" name="txtReceive" style="width:200px;height:160px"></textarea>
<br/>
<span><input id="isReceiveHex" name="isReceiveHex" type="checkbox" checked="checked" />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="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>


</body>
</html>
...全文
909 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
jhdxhj 2009-03-26
  • 打赏
  • 举报
回复
http://www.cnblogs.com/blodfox777/archive/2008/08/04/1259792.html
sxmonsy 2009-03-17
  • 打赏
  • 举报
回复
好复杂,为啥不用.net自带的SerialPort类
金大哈 2009-03-16
  • 打赏
  • 举报
回复
感觉复杂 学习来了
jhdxhj 2009-03-16
  • 打赏
  • 举报
回复
如何检查?
过河石头 2009-03-16
  • 打赏
  • 举报
回复
检查一下浏览器支持、插件要求呢

62,267

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧