Обнаружить разрыв как начало последовательного фрейма данных (Windows IoT, последовательное устройство)

Мне нужно поймать начало фрейма данных через последовательный интерфейс (FTDI) в приложении UWP (C ++ / CX).

Начало этого кадра определяется только сигналом прерывания.

Вызывая функции LoadAsync / ReadBuffer / ReadBytes из dataReader в «виде цикла»,
Как и в SerialSample, доступном в Git Windows IOT, я могу получить полный кадр, но не могу найти первый байт.

Например :

Что я хочу: [0] [1] [2] […] [n-2] [n-1] [n]

Что я получаю: [55] [56] […] [n-1] [n] [0] [1] […] [54]

или если я перезапущу программу: [22] [23] […] [n-1] [n] [0] [1] […] [21]

Начало зависит только от того, когда я начну общение.
Более того, номер «n» байта в кадре заранее неизвестен.

Я пытался использовать событие PinChanged, чтобы обнаружить сигнал обрыва, и они действительно обнаружены,
но только во время асинхронной операции «LoadAsync».

После возврата этой функции данные загружаются, и я не могу точно знать, между какими байтами произошел разрыв.

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

К сожалению, событие также асинхронное и, похоже, имеет небольшую задержку: у меня есть смещение, и это, кажется, всегда одинаково во время моей первой «триггеры».

После загрузки нескольких кадров появляется случайное смещение (и я не знаю почему …).

Более того, если я хочу запустить после N кадров, смещение не будет таким, как раньше, поэтому я не могу просто «исправить индексы» полученных байтов.

Подвести итоги :
Есть ли способ точно узнать, между какими байтами происходит разрыв?

Благодарю.

2

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]