2012-08-02 39 views
-1

我必須要求從1周的SerialPort讀取數據的幾個用戶控件程序。一些程序我有包括:的SerialPort和用戶控件

  • 空速,聲納,緯度,經度等&在文本框中顯示的值
  • 對象避免顯示
  • GPS地圖

我在一個按鈕主窗體,當它被點擊時,它將打開串口並且用戶控件應該讀取數據並顯示它們,但是我不知道如何去做。

有誰知道我可以在我的用戶控件的不同可以從1周的SerialPort讀取數據?或者可能是一些我可以閱讀的網站鏈接。謝謝!

回答

1

如果你有一個源(串口),許多消費者(用戶控件)。然後你必須添加另一個間接層。寫一個類是串口類的所有者,並從它的所有數據讀入某種緩衝液(在DataReceived事件檢索反應,提出了新的數據到列表中,隊列等)。這個緩衝區將被從這個類中公佈,另外它自己也有一些事件(DataReceived?)。您的所有消費者現在都可以收聽此事件並查看緩衝區以查找所需的數據。

的主要問題是消除了數據的共享緩存,因爲它取決於你的消費者,如果他們需要整個緩衝區或僅某些部分。試想一下每個消費者如何告知生產者它只能在緩衝區中工作的概念,並且如果每個人都超出了緩衝區的開始,那麼讓生產者減少緩衝區。但請注意,您還必須重新告知您的消費者,指數現在已被更改。

您也可避免日益增長的共享緩存的問題,如果每個消費者創建自己的本地緩存由每個接收的一些數據,並在這種情況下,需要每一個消費者可以減少自己的緩衝區。

哪種策略更有意義,如果使整個應用程序更小的內存佔用,需要到期的第一種方法的複雜性視情況而定。