2016-09-11 57 views
6

如果我在UWP中創建應用程序,例如使用Template 10。我使用C#在UWP中放置GPIO邏輯的最佳實踐

我想在一個類或某個地方有GpioController邏輯處理所有輸入和輸出業務,如設置所有引腳和事件。

就像一個例子,當一個按鈕被按下時,它會發送一個POST請求到服務器,這必須在任何視圖中工作。

如果我去一個觀點,我希望得到一個引腳的狀態,顯示如「大門是敞開的」

而且如果一個例子的傳感器被觸發引腳爲高電平,如果我改變查看它不能觸發buttonPin_ValueChanged事件,或者由於任何原因將其設置爲LOW,除非傳感器爲LOW。

即使引腳上電拉是PullDown。

pin = gpio.OpenPin(12); 
pin.SetDriveMode(GpioPinDriveMode.InputPullUp); 
pin.Write(GpioPinValue.Low); 
pin.ValueChanged += buttonPin_ValueChanged; 
+0

我不認爲你可以寫這樣一個簡單的類抽象使用GPIO引腳。電子設備比所有可以根據連接方式做不同事情的引腳都要複雜。有興趣看看你能得到什麼答案。 –

+0

我真的不明白你的問題是什麼?您是否希望能夠從您的代碼中的任何位置與GPIO控制器進行交互,並獲得有關引腳值更改的通知,而無需考慮當前顯示哪個視圖?那是對的嗎? –

+0

是@robinmanuelthiel,就像背景工作者或其他人一樣。我正在記錄~8個statechanges /秒。即使我正在切換視圖,我也不會錯過任何更改。 –

回答

1

您可以創建在初始類GpioController對象,並把它作爲一個對象的其他類。

如:

class BaseClass { 
    GpioController gpio; 

    void createGpioController(){ 
     gpio = new GpioController(/*Constuctor arguments here.*/); 
    } 

    void moveToNextClass(NextClass next){ 
     //Instantiate next class with any special constructors. 
     next.gpio = this.gpio; 
     //Launch next class with same gpio member values. 
    } 
} 

class NextClass: BaseClass { 
    GpioController gpio; //Will be assigned by last class. 
}