Периодический последовательный порт не возвращает данные и время ожидания - PullRequest
0 голосов
/ 12 июня 2019

Не могу понять, как это работает правильно. Я протестировал оборудование с другими программами, и он работает, но в этом коде периодически возникает проблема, при которой данные не возвращаются, поэтому время ожидания истекает. Я пробовал ReadExisting с синхронным и асинхронным, тот же результат. Это связано с ReadExisting и я должен использовать что-то еще?

    private StringBuilder serialBuffer = new StringBuilder();
    private const string terminationSequence = "\r";
    private void DataReceived(object sender, SerialDataReceivedEventArgs e)
    {
        var data = Serial.ReadExisting();
        serialBuffer.Append(data);
        var bufferString = serialBuffer.ToString();
        int index;
        do
        {
            index = bufferString.IndexOf(terminationSequence, StringComparison.Ordinal);
            if (index <= -1) continue;
            IncomingData = bufferString.Substring(0, index);
            bufferString = bufferString.Remove(0, index + terminationSequence.Length);

        } while (index > -1);
        serialBuffer = new StringBuilder(bufferString);
    }

Я вставил несколько следов, и кажется, что событие не запускается ... Вот вывод и то, где событие не начинается до истечения времени ожидания.

  • Стартовое событие
  • Start do: bufferString - = 00
  • Завершение события
  • Стартовое событие
  • Запустить do: bufferString - = 007BAA
  • IncomingData = 007BAA
  • Start do: bufferString -
  • Завершение мероприятия
  • Исключение: «System.TimeoutException» в GS.SkyWatcher.dll
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...