求 ActiveX控件 发送命令获取端口值!! 或者修改一下下面的javascript 打开com口

ynwxyuan 2009-12-16 03:50:34
最近遇到一个asp.net串口连接, 一开始的时候使用了SerialPort, 但是在实施的时候发现了问题, 程序在服务器上,客户端使用是,打开的是服务器端的com口, 现在想实现客户端打开客户端的com口.

初步使用了一下js里的mscomm,可是获取不到数据,com口没能打开, 现求Acticex实现客户端使用本机com口获取数据的 纤细步骤 及代码实现, 谢谢高人啦!!


MScomm 是这样使用的,获取不到数据: 大家看看是不是错误了什么:
<object classid="clsid:648A5600-2C6E-101B-82B6-000000000014" id="MSComm1" name="MSComm1" codebase="../bin/Interop.MSCommLib.dll" type="application/x-oleobject" style="left: 54px; top: 14px " >
<param name="CommPort" value='<%=CommPort %>' />
<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="63" />
<param name="RThreshold" value="2" />
<param name="RTSEnable" value="1" />
<param name="BaudRate" value="2400" />
<param name="ParitySetting" value="0" />
<param name="DataBits" value="7" />
<param name="StopBits" value="1" />
<param name="SThreshold" value="1" />
<param name="EOFEnable" value="0" />
<param name="InputMode" value="0" />
<param name="EOFEnable " value="true" />
</object>
function MSComm1_OnComm(id)
{
if(MSComm1.CommEvent==2)//如果是接收事件
{

var s=MSComm1.Input;

if(s!="")
{
self.document.getElementById(id).value=s
}


}
}



function OpenPort(id)
{ MSComm1.commport="com1";
if(MSComm1.PortOpen==true) // MSComm1.PortOpen
{
window.alert ("com口已经打开,已经开始接收数据!请不要重复打开");

}
else
{
try
{
MSComm1.PortOpen=true;
}
catch(e)
{
alert("com口打开失败,com被其他程序占用请检查!!!!!\r如果你确认已将他关闭,请点击确定!!!\r然后五秒后重试!!!!,如果串口总被占用请到web.config\r中更改CommPort的值,然后改变POS机后接的接口!!!!");
setTimeout("document.execCommand('Refresh') ",5000);
}
MSComm1_OnComm(id);
MSComm1.Output="S";//发送命令
MSComm1.CommEvent=2;
MSComm1_OnComm(id);
MSComm1.PortOpen=false;
}

}
...全文
288 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
linhuijun100 2011-07-18
  • 打赏
  • 举报
回复
求後續解決方法。。。。。。
ynwxyuan 2009-12-16
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 silentwins 的回复:]
先打开com口再说吧……
[/Quote]
MSComm1.PortOpen=true 这应该就是打开com口吧.但是用mode命令查看到com口没有被打开
ynwxyuan 2009-12-16
  • 打赏
  • 举报
回复
[Quote=引用楼主 ynwxyuan 的回复:]
最近遇到一个asp.net串口连接, 一开始的时候使用了SerialPort, 但是在实施的时候发现了问题, 程序在服务器上,客户端使用是,打开的是服务器端的com口, 现在想实现客户端打开客户端的com口.

初步使用了一下js里的mscomm,可是获取不到数据,com口没能打开,  现求Acticex实现客户端使用本机com口获取数据的 纤细步骤 及代码实现,  谢谢高人啦!!


MScomm 是这样使用的,获取不到数据: 大家看看是不是错误了什么:
<object classid="clsid:648A5600-2C6E-101B-82B6-000000000014" id="MSComm1" name="MSComm1" codebase="../bin/Interop.MSCommLib.dll" type="application/x-oleobject" style="left: 54px; top: 14px " >
<param name="CommPort" value=' <%=CommPort %>' />
<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="63" />
<param name="RThreshold" value="2" />
<param name="RTSEnable" value="1" />
<param name="BaudRate" value="2400" />
<param name="ParitySetting" value="0" />
<param name="DataBits" value="7" />
<param name="StopBits" value="1" />
<param name="SThreshold" value="1" />
<param name="EOFEnable" value="0" />
<param name="InputMode" value="0" />
<param name="EOFEnable " value="true" />
</object>
function MSComm1_OnComm(id)
{
if(MSComm1.CommEvent==2)//如果是接收事件
{

var s=MSComm1.Input;

if(s!="")
{
self.document.getElementById(id).value=s
}
                       
                       
                    }
                }   
             
             

            function OpenPort(id)   
            {  MSComm1.commport="com1";
                if(MSComm1.PortOpen==true)  // MSComm1.PortOpen
                {   
                      window.alert ("com口已经打开,已经开始接收数据!请不要重复打开");
                   
                }   
                else   
                { 
                  try
                    {
                    MSComm1.PortOpen=true;         
                  }
                  catch(e)
                  {
                  alert("com口打开失败,com被其他程序占用请检查!!!!!\r如果你确认已将他关闭,请点击确定!!!\r然后五秒后重试!!!!,如果串口总被占用请到web.config\r中更改CommPort的值,然后改变POS机后接的接口!!!!");
                  setTimeout("document.execCommand('Refresh') ",5000);
                  }
                  MSComm1_OnComm(id);   
                  MSComm1.Output="S";//发送命令
                  MSComm1.CommEvent=2;
                  MSComm1_OnComm(id);
                  MSComm1.PortOpen=false;
              }
             
            } 

[/Quote]

self.document.getElementById(id).value=s
这是REPERT 里input的ID号想把获取的相应数据放在相应的input里面,这里应该没有问题
ynwxyuan 2009-12-16
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 rjbb123 的回复:]
新注册用户  希望大家多多关注 
为大家介绍个软件网    软件巴巴网  网址:www.rj88.net 
[/Quote]

现在就是com口没有打开
silentwins 2009-12-16
  • 打赏
  • 举报
回复
先打开com口再说吧……
ynwxyuan 2009-12-16
  • 打赏
  • 举报
回复
self.document.getElementById(id).value=s
这是REPERT 里input的ID号想把获取的相应数据放在相应的input里面,这里应该没有问题
tzs2304 2009-12-16
  • 打赏
  • 举报
回复
up
Lovely_baby 2009-12-16
  • 打赏
  • 举报
回复
这去哪找错误??
self.document.getElementById(id).value=s ;
楼主 调试一下呗~~

62,254

社区成员

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

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

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

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