Основанный на событиях ввод UART на Raspberry с Linux - PullRequest
0 голосов
/ 15 марта 2019

Я хочу перенести свой проект в новый технологический стек.

Текущий стек:

  • C #
  • UWP
  • Windows IoT
  • Raspberry Pi 3

Новый стек

  • C ++
  • WiringPi
  • Linux (может быть Raspbean)
  • Raspberry Pi 3

Одна из причин, по которой я хочу это сделать: цикл, который мне нужно использовать для прослушивания UART:

private async Task<byte> getByte()
{
    uint loaded = 0;

    do
    {
        loaded = await dataReaderObject.LoadAsync(1);
        Task.Delay(-1).Wait(10);
    } while (loaded == 0);

    return dataReaderObject.ReadByte();
}

Однако то, что я нашел вWiringPi выглядит примерно так:

int serialGetchar (int fd) ;

Возвращает следующий символ, доступный на последовательном устройстве.Этот вызов будет блокироваться на срок до 10 секунд, если данные недоступны (когда он вернет -1)

Получено от здесь

Есть что-то вродеследовать коду?

WiringPiCPPLib.UARTDataReceived += OnDataReceived;
void OnDataReceived(byte[] data) { ... }

Я хочу обработку UART на основе событий, а не while(true) стиль.

...