ASP.net 读客户端串口值 B/S

cc850107 2009-01-19 12:56:59
各位好,
现在想在ASP.net中实现这样一个功能。在浏览器打开网页,需要读取本机串口的值。

如何实现?
我查了相关的资料,但比较少。现在查到大约有两种办法:
1.制作ActiveX控件,网页打开时安装一次。但怎么做这个控件呢?没有思路。
2.单开线程读取,也不清楚。

如何实现功能呢?各位请帮忙。
...全文
424 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
dongxin63 2010-09-06
  • 打赏
  • 举报
回复
学习了
phinex93 2010-03-23
  • 打赏
  • 举报
回复
还是csdn强大啊!
zheng797 2010-03-13
  • 打赏
  • 举报
回复
学习一下,给我看看吧
Robin 2009-01-20
  • 打赏
  • 举报
回复
首先把Textbox2 修饰符改成public 的

用javasript 取就是这样的 试试
ActiveXTest.Textbox2.Text;
vlysses 2009-01-20
  • 打赏
  • 举报
回复
这个不能直接取!应该间接获得。比如,activX中有一个label1来显示一个值,你想用js脚本读取它,应该在activX代码中声明一个公共属性,public string str1{return label1.Text;},然后在js里用text1.value=ActiveXTest.str1;即可实现。
Teng_s2000 2009-01-20
  • 打赏
  • 举报
回复
学习...
cc850107 2009-01-19
  • 打赏
  • 举报
回复
也就是怎样实现JavaScript获得activeX 上某控件的值。
cc850107 2009-01-19
  • 打赏
  • 举报
回复
我觉得只能用JS实现了,可我写的怎么都不行,下面是:
1.asp.net页面加了<input type="hidden" runat="server" id="inhidden" />
和一个button <asp:Button ID="Button1" runat="server" OnClientClick="GetValue()" OnClick="Button1_Click" Text="Button" />
2.js是这样写的
<script type="text/javascript">
function GetValue()
{
alert("Hello");
var data;
data= ActiveXTest.GetData();
document.getElementById("inhidden").Value= data;
alert(data);
}
</script>

GetData()是我在控件里实现的一个函数,获得控件第二个textbox的值。

3.然后在页面的后台代码中:
string strvalue = this.inhidden.Value;
可这样不行,哪里有问题?
cc850107 2009-01-19
  • 打赏
  • 举报
回复
先谢谢各位,我刚才做了一个简单的ActiveX,这个控件上有两个TextBox,
当第一个内的字符超过某长度时,去读串口的值,将值显示在第二个TextBox上。

然后在网页这样:
<object id="ActiveXTest" classid="clsid:9d336520-829f-41d5-909d-7433b440cb8d" codebase="Bin/ActiveXTest.dll" style="width: 459px; height: 252px" >

可是我怎么才能在处理时读到控件第二个TextBox的值呢?试了一些方法没有实现。请各位继续关注。谢谢。
会加分的。

lambober 2009-01-19
  • 打赏
  • 举报
回复
不懂,坐下看看
奔跑的蜗牛007 2009-01-19
  • 打赏
  • 举报
回复
学习一下二楼的样例
Jerry_hu 2009-01-19
  • 打赏
  • 举报
回复
学习
Robin 2009-01-19
  • 打赏
  • 举报
回复
this.port = new System.IO.Ports.SerialPort(this.components);

/// <summary>
/// 初始化串口
/// </summary>

public bool InitialCom()
{



//port.InputLen = 0;
try
{

port.PortName = cbCOM.Text;
//port.ReadBufferSize = 1024;
//port.WriteBufferSize = 8912;
port.BaudRate = Convert.ToInt32(cbBaudRate.Text);
port.Open();
return true;

}
catch (Exception e)
{
MessageBox.Show(e.Message.ToString(), "Error");
return false;
}
}
public void CloseOnComm()//关闭串口触发事件
{

//this.port.RThreshold = 0;
//this.port.InputMode = MSCommLib.InputModeConstants.comInputModeText;
}
public void OpenOnComm()//开启串口触发事件
{
//this.port.RThreshold = 1;
//this.port.InputMode = MSCommLib.InputModeConstants.comInputModeBinary;
}
private void btnLinkModem_Click(object sender, EventArgs e)
{
CloseOnComm();
bool open = InitialCom();
bool Connected = false;
if (!open)
{
port.WriteLine("AT\r");//模块信息



if (Connected == true)
{
btnLinkModem.Enabled = false;
//this.button_Send.Enabled = true;
btnCloseLink.Enabled = true;
//this.button_TextSend.Enabled = true;
//this.button_RecUnRead.Enabled = true;
//this.button_RecAllSMS.Enabled = true;
//this.button_Clear.Enabled = true;
btnExit.Enabled = false;
OpenOnComm();
}
else
{
btnLinkModem.Enabled = true;
//this.button_Send.Enabled = false;
btnCloseLink.Enabled = false;
//this.button_TextSend.Enabled = false;
//this.button_RecUnRead.Enabled = false;
//this.button_RecAllSMS.Enabled = false;
//this.button_Clear.Enabled = false;
}
}
}

private void btnCloseLink_Click(object sender, EventArgs e)
{
try
{
if (port.IsOpen)
{
port.Close();
//this.button_Send.Enabled = false;
btnLinkModem.Enabled = true;
//btnbutton_CloseLink.Enabled = false;
//this.button_TextSend.Enabled = false;
//this.button_RecUnRead.Enabled = false;
//this.button_RecAllSMS.Enabled = false;
//this.button_Clear.Enabled = false;
//this.button_Exit.Enabled = true;
lblLinkStatus.Text = "未连接";
}
}
catch (Exception m)
{
MessageBox.Show(m.Message.ToString(), "Error");
}
}

private void port_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
string rec = "";
rec = port.ReadLine();
if (rec.Length > 0) //转化为char型
{
if (rec.IndexOf("RING") > -1)
{
txtRecSMS.AppendText("有电话打进来!\r\n");
txtRecSMS.AppendText(rec + "\r\n");
}
else if (rec.IndexOf("CMTI") > -1)
{
txtRecSMS.AppendText("有新的短消息,请查收!\r\n");
txtRecSMS.AppendText(rec + "\r\n");
}
else
{
MessageBox.Show(rec);
txtRecSMS.AppendText(rec + "\r\n");
}
if (rec.IndexOf('>')>-1)//判断是否返回">"
{
string decodedSMS = sms.smsDecodedsms("+861380010050", "13811235237", "你好吗");
char str = (char)26;//"CTRL+Z发送"
port.WriteLine(decodedSMS + str.ToString());
txtRecSMS.AppendText(rec + "发送成功!\r\n");
}
}
}
PDUcoding sms = new PDUcoding();
private void btnSend_Click(object sender, EventArgs e)
{

port.WriteLine( "AT+CMGF=0\r");
string decodedSMS = sms.smsDecodedsms("+861380010050" ,"13811235237", "你好吗");
port.WriteLine( "AT+CMGS=" + sms.nLength + "\r\n");




}

可以参考一下
用C#编写ActiveX控件
http://blog.xunbin.com/Article/1.aspx
wuyq11 2009-01-19
  • 打赏
  • 举报
回复
获取客户端串口值,应该用ActiveX

62,269

社区成员

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

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

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

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