2016-09-11 17 views
6

Если я создаю приложение в UWP, например, с помощью Template 10. Я использую C#Лучшая практика поместить GPIO-логику в UWP

Я хочу иметь логику GpioController в классе или где-нибудь, который будет обрабатывать все операции ввода и вывода, такие как все контакты и события.

Как пример, при нажатии кнопки он отправит запрос POST на сервер, это должно работать в любом представлении.

Если я иду на вид, и я хочу, чтобы получить статус булавки, чтобы показать, как «Дверь открыта»

Кроме того, если для примера датчик срабатывания булавки к высокому, если я изменить просмотрите его, не запускайте событие buttonPin_ValueChanged и установите его в положение LOW по любой причине, если датчик не является НИЗКОЙ.

Даже если штырьки Power-on Pull PullDown.

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

Я не думаю, что вы можете просто написать такой простой класс абстрагироваться использование штифтов GPIO. Электроника сложнее, чем при наличии контактов, способных делать разные вещи в зависимости от того, что вы подключаете. Было бы интересно посмотреть, какие ответы вы получите. –

+0

Я действительно не понимаю, в чем проблема? Вы просто хотите иметь возможность взаимодействовать с контроллером GPIO где бы вы ни находились, и получать уведомления о изменениях значений pin-value no-matter, просмотр которых в настоящее время отображается? Это верно? –

+0

Да @robinmanuelthiel, как фоновая работа или что-то в этом роде. Я регистрирую ~ 8 statechanges/sec. И я не могу пропустить одно изменение, даже если я переключу взгляд. –

ответ

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. 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^