2016-09-11 11 views
6

में जीपीआईओ तर्क डालने का सर्वोत्तम अभ्यास यदि मैं यूडब्ल्यूपी में एक ऐप बनाता हूं उदाहरण के लिए Template 10 के साथ। मैं सी #यूडब्ल्यूपी

मैं कक्षा में GpioController तर्क या कहीं भी सभी इनपुट और आउटपुट व्यवसाय को संभालने की तरह सभी पिन और घटनाओं को सेट करना चाहता हूं।

उदाहरण के समान, जब कोई बटन दबाया जाता है तो यह सर्वर को एक POST अनुरोध भेज देगा, यह किसी भी दृश्य में काम करना चाहिए।

अगर मैं एक दृश्य पर जाकर मैं की तरह "दरवाजा खुला है"

इसके अलावा, अगर एक उदाहरण के लिए एक सेंसर उच्च करने के लिए एक पिन ट्रिगर कर रहा है, अगर मैं बदल दिखाने के लिए एक पिन की स्थिति प्राप्त करना चाहते हैं इसे buttonPin_ValueChanged ईवेंट ट्रिगर नहीं कर सकता है और किसी भी कारण से इसे कम करने के लिए सेट करें जब तक सेंसर कम न हो।

भले ही पिन पावर-ऑन पुल पुलडाउन है।

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

मुझे नहीं लगता कि आप सिर्फ GPIO पिन के उपयोग के सार को इस तरह के एक साधारण क्लास लिख सकते हैं। इलेक्ट्रॉनिक्स इससे अधिक जटिल है कि पिन जो आप कनेक्ट करते हैं उसके आधार पर अलग-अलग चीजों को करने में सक्षम हैं। यह देखने में रुचि होगी कि आपको क्या जवाब मिलते हैं। –

+0

मुझे वास्तव में आपकी समस्या क्या नहीं है? क्या आप बस अपने कोड में कहीं से भी जीपीआईओ नियंत्रक से बातचीत करने में सक्षम होना चाहते हैं और पिन-वैल्यू-चेंज के बारे में अधिसूचित हो सकते हैं इससे कोई फर्क नहीं पड़ता कि वर्तमान में कौन सा दृश्य दिखाया गया है? क्या वो सही है? –

+0

हां @robinmanuelthiel, एक पृष्ठभूमि कार्यकर्ता या कुछ की तरह। मैं ~ 8 स्टेटchanges/सेकंड लॉगिंग कर रहा हूँ। और अगर मैं दृश्य स्विच कर रहा हूं तो भी मैं एक बदलाव को याद नहीं कर सकता। –

उत्तर

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. 
} 
संबंधित मुद्दे