RichardV Ответов: 1

Vb.net малина магазина контактный событий Пи GPIO с как я могу получить событие.


Я пытаюсь понять, как поймать человека. Pin.ValueChanged событие в городе VB.NET-да.
У меня есть PIR-переключатель, подключенный к контакту GPIO #21 на моем raspberry Pi 3B. При обнаружении движения PIR оно повышается до 3,3 В, а при отсутствии движения в течение заданного времени-понижается.

Я хочу, чтобы приложение включало светодиод, привязанный к контакту GPIO № 26, когда PIR обнаруживает движение и поднимается высоко и выключается, когда он опускается низко.

Я видел некоторые из них VB.NET примеры, которые используют таймер, чтобы проверить каждую секунду или около того, чтобы увидеть, является ли штырь высоким или низким, что я пробовал, и схема действительно работает, но легко пропустить события с помощью таймера. Я хотел бы использовать обработчик событий в VB.NET-да.

В моих поисковых системах google все, что я могу найти, - это Примеры C#, использующие строки, подобные этой.
buttonPin.ValueChanged += buttonPin_ValueChanged;

Затем процедура, чтобы сделать что - то, если событие произошло.
private void buttonPin_ValueChanged(GpioPin sender, GpioPinValueChangedEventArgs e)
{
    // toggle the state of the LED every time the button is pressed
    // Code removed
}

Но я понятия не имею, как это преобразовать в VB.NET. Все конверсионные сайты создают неверный код в VB.для строки -
buttonPin.ValueChanged += buttonPin_ValueChanged;


Что я уже пробовал:

Я попробовал следующее VB.NET код, но получил ошибку.
AddHandler PIR_Pin.ValueChanged, AddressOf test

Private Sub test(ByVal sender As GpioPin, ByVal args As GpioPinValueChangedEventArgs)
    If PIR_Pin.Read = GpioPinValue.High Then
        LED_Pin.Write(GpioPinValue.High)
    Else
        LED_Pin.Write(GpioPinValue.Low)
    End If
End Sub

Это ошибка, которую я получаю в VS 2017
System.ArgumentException
  HResult=0x80070057
  Message=Delegate to an instance method cannot have null 'this'.
  Source=System.Private.CoreLib
  StackTrace:
   at System.Delegate.DelegateConstruct(Object target, IntPtr slot)
   at PIR_Test.MainPage..ctor() in C:\Users\Richard\Documents\Visual Studio 2017\Projects\Raspberry Pi Tests\PIR Test\MainPage.xaml.vb:line 22

Может ли кто - нибудь пролить свет на то, как получить триггер события VB.NET для пин-кода GPIO на Raspberry Pi под управлением Windows 10 core IOT.

Заранее спасибо.

1 Ответов

Рейтинг:
0

RichardV

Мне удалось решить эту проблему.
теперь вот код. Он работает событие срабатывает, когда датчик PIR обнаруживает движение теплого тела.

AddHandler PIR_Pin.ValueChanged, AddressOf PIR_Pin_ValueChanged
Private Sub PIR_Pin_ValueChanged(ByVal sender As GpioPin, ByVal args As GpioPinValueChangedEventArgs)
    Debug.WriteLine("PIR detected heat movement")
    Dim PIR_Status As Boolean = False

    If PIR_Pin.Read = GpioPinValue.High Then
        PIR_Status = True
    Else
        PIR_Status = False
    End If

    Debug.WriteLine(PIR_Pin.Read.ToString & "    " & PIR_Status)
    If PIR_Status = True Then
        LED_Pin.Write(GpioPinValue.High)
    Else
        LED_Pin.Write(GpioPinValue.Low)
    End If
End Sub