Я написал приложение .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?