2011-08-19 106 views
1

這可能嗎?如果是這樣,就軟件而言,行業標準是什麼?具體來說,我指的是.net控件。串流RS-232輸出到瀏​​覽器

謝謝

編輯: 這是我所需要的。我有一臺瘦客戶機,其中使用RS-232與瘦客戶機進行交互。目前,它是一個緊湊的框架應用程序。我想知道的是,是否可以在Web應用程序中設置相同的設置。所以那需要RS-232不是RS-232服務器 - 它是用戶的計算機RS-232 - RS-232在客戶端上。所以當RS-232吐出輸入時,它應該去瀏覽器。在Web應用程序中可能嗎?

+1

是一個比較模糊的要求,我懷疑這個過程有什麼非常規範的。如果你可以提供一些你想要的細節,我可以提供一些建議。 –

+0

正如你所描述的那樣,沒有;抱歉。客戶機需要將緩衝區更改發佈到服務器。服務器需要管理數據的訂戶列表。服務器需要將正確的數據返回給客戶端。一個可能的解決方案是捕獲整個端口的狀態,一旦完成,將它發送到服務器,然後你就有一個已知的開始/結束點,這可以實現可分組傳播。 –

+1

如果你可以描述你的整個問題域可能會有所幫助;這在軟件開發中並不是一個不尋常的問題 - 如果你可以告訴我們關於你的問題「域」,我們可能有一個不同的想法可行,這只是網絡方面的問題。 –

回答

-1

當然,你可以做到。您從System.IO.Ports.SerialPort實例讀取,並通過HttpListener輸出它。

訣竅會知道你想的是,HttpListener提供了網頁做什麼。由於數據將實時傳入COM端口,所以您可能需要在HTTP請求到服務器之間進行緩衝,否則,如果嘗試在沒有數據等待的情況下讀取端口,則會掛起偵聽器。如果您沒有定期讀取數據,並且它會填充SerialPort讀取緩衝區,您也可能會錯過數據。

+0

而且你需要知道請求的緩衝區與請求所請求的緩衝區是同一個緩衝區,並且它是同步的......因爲這樣的全部原因,.push並不是一個巨大的成功! –

0

我能想到的兩種方式;

  • 緩衝應用程序對象中的串行數據,然後使用定時器觸發的ajax調用來獲取並顯示最新數據。
  • 對於較短的數據流,您可以不使用asp.net控件本身,而是執行類似的操作;

    Response.ContentType = "text/plain"; 
    Response.Clear(); 
    
    String serialData; 
    
    while(serialData = getSerialData() { 
        Response.Write(serialData); 
        Response.Flush(); 
    } 
    

    這會將文本內容實時寫入網絡瀏覽器。儘管如此,你可能不想讓這個會話打開太久。

    如果您想在另一個頁面中顯示數據流,那麼只需將包含上述代碼的頁面放置在iFrame中即可。

    另請注意,上述最好在ashx處理程序中完成,而不是在aspx頁面中完成。

+0

如果您正在構建獨立應用程序,codekaizen對使用HttpListener有很好的建議。你可以結合我所顯示的沖洗技術和實現實時流。 –

+0

還有一個術語問題,但是Matt Tew封裝了我想回答的問題:您不容易將這些數據傳輸到客戶端,當然不是沒有自定義服務器控件和訂閱自定義控件的自定義客戶端並做任何它需要做的事情。我提到了術語,因爲我不完全清楚您是否想將新的RS-232更改推送到客戶端,或者如果訂閱/ act_on_changes模型合適 –

+0

謝謝,但是如何從RS-232客戶端機器捕獲輸出? – sarsnake