2013-03-04 142 views
4

这里是我先到了迄今为​​止代码:从阅读的serialport并显示结果

protected void Page_Load(object sender, EventArgs e) 
{ 
    try { 
    serialPort1.PortName = "COM4"; 
    serialPort1.BaudRate = 9600; 
    serialPort1.Open(); 
    this.serialPort1.DataReceived += new  
     System.IO.Ports.SerialDataReceivedEventHandler(this.serialPort1_DataReceived); 
    Label1.Text = "Connected"; 
    UpdatePanel1.Update(); 
    } 
    catch (Exception ex) { 

    } 
} 

string x = ""; 
private void serialPort1_DataReceived(object sender, 
     System.IO.Ports.SerialDataReceivedEventArgs e){ 

    x = serialPort1.ReadExisting(); 
    TextBox1.Text = x; 
    UpdatePanel1.Update(); 
} 

问题是代码运行后的文本框为空...(IM使用AJAX更新面板刷新文本框文本)的事情是当我在调试期间设置断点时,从串行端口收到的数据是在变量中,并设置为新的文本框文本,但是当代码完成时没有显示.... I很确定updatepanel的工作原理,因为我测试了它。

PS一个串口连接到RFID读取器和IM试图读取标签。我已经成功地编写了一个Windows窗体应用程序做我想要什么,但我需要将它迁移到ASP.NET

在ASP.NET应用程序的串行端口
+0

为什么你需要将它迁移到ASP.NET? – Rawling 2013-03-04 11:36:16

+0

@打好我制作的窗体表单应用实际上只是一种练习/测试。需要使用asp工作的项目。 现在即时思考,给予Knagis的答案,使用服务以某种方式之间的沟通windowsform应用程序读取rfid数据通过串口和asp.net应用程序将处理信息读取... 我是我在这里正确的轨道上球员? – user2127755 2013-03-05 01:12:43

+0

哪位读者与你一起工作?它必须是必要的串行通信吗? – BrOSs 2013-03-05 16:44:30

回答

1

读取数据只会工作,如果阅读器连接到服务器(不运行浏览器的机器)。它似乎只是因为你正在本地测试而工作。后的初始页面渲染完成

serialPort1对象将被销毁。 ASP.NET页面只能在页面呈现之前存在。然后它被销毁。下一个请求再次重新创建所有对象。因此,每次浏览器进入服务器时,串口都会一次又一次地打开。

UpdatePanel只改变了传统浏览器请求到AJAX - 它不会改变ASP.NET服务器处理是如何工作的。它仍然是由客户端浏览器触发的请求响应操作。在你的情况下,UpdatePanel将不得不在定时器上查询服务器。

最好的办法是创建一个基于Windows窗体的代码ActiveX控制和嵌入在您的网站。