2013-03-04 72 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控制和嵌入在您的網站。