Файловая система .Net Core 2.1 GPIO на Raspberry Pi - PullRequest
0 голосов
/ 19 мая 2018

Я написал приложение .Net Core 2.1 для моего raspberry pi, но у меня есть проблема с файловой системой, которая не вызывает обработчик событий, когда GPIO управляется высоким / низким с помощью кнопки.

static void Main(string[] args)
{
    Console.WriteLine("Hello World!");

    GPIO.PinMode(21, GPIO.Direction.Input, GPIO.Edge.Both);


    var fileSystemWatcher = new FileSystemWatcher();

    // Associate event handlers with the events
    fileSystemWatcher.Created += FileSystemWatcher_Created;
    fileSystemWatcher.Changed += FileSystemWatcher_Changed;
    fileSystemWatcher.Deleted += FileSystemWatcher_Deleted;
    fileSystemWatcher.Renamed += FileSystemWatcher_Renamed;

    // tell the watcher where to look
    fileSystemWatcher.Path = "/sys/devices/platform/soc/3f200000.gpio/gpiochip0/gpio/gpio21";

    // You must add this line - this allows events to fire.
    fileSystemWatcher.EnableRaisingEvents = true;


    Console.ReadLine();

}

private static void FileSystemWatcher_Renamed(object sender, RenamedEventArgs e)
{
    Console.WriteLine($"A new file has been renamed from {e.OldName} to {e.Name}");
}

private static void FileSystemWatcher_Deleted(object sender, FileSystemEventArgs e)
{
    Console.WriteLine($"A new file has been deleted - {e.Name}");
}

private static void FileSystemWatcher_Changed(object sender, FileSystemEventArgs e)
{
    Console.WriteLine($"A new file has been changed - {e.Name}");
}

private static void FileSystemWatcher_Created(object sender, FileSystemEventArgs e)
{
    Console.WriteLine($"A new file has been created - {e.Name}");
}

Мне известно, что файловая система не работает с символическими ссылками в данный момент времени, поэтому используется полный системный путь.

В принципе, ни одно из событий не вызывается, когда GPIO 21 физически изменяет состояние.

Я подтвердил, что значение изменяется с помощью:

cat /sys/devices/platform/soc/3f200000.gpio/gpiochip0/gpio/gpio21/value

Однако вышеупомянутые событияменя вызывают, когда я редактирую файлы в этом каталоге, например, когда я запускаю команды из другого терминала bash:

echo out > /sys/devices/platform/soc/3f200000.gpio/gpiochip0/gpio/gpio21/direction

Я получаю из своей работающей программы:

A new file has been changed - direction

Так что кто-нибудь получилВходы GPIO для вызова события filesystemwatcher?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...