Быстрая асинхронная последовательная связь

У меня есть приложение для разработки контроллера, в котором я получаю данные с 3 USB-устройств (которые рассматриваются как виртуальный com-порт под Windows), обрабатываю их и затем отправляю действие на 4-е USB-устройство (также виртуальный com-порт). Мне нужно обработать эти данные, как только я получу их с минимальной задержкой.
Я решил использовать C ++ на встроенных окнах и осуществлять последовательную связь с использованием событий .Net System :: IO :: Ports и DataReceived. Я проверил производительность своего кода, используя только одно USB-устройство, где USB-устройство отправляет один байт на компьютер, а затем компьютер отправляет его обратно. Я измеряю разницу во времени, и она была совершенно неопределенной. Иногда 2 мс, а иногда 20 мс.
Примечание: приоритет процесса установлен в реальном времени.

Это лучший способ получить детерминированную задержку, где максимальная задержка гарантирована? может быть другой API подходит для последовательной связи в реальном времени на окнах?

заранее спасибо

0

Решение

В Windows вы не можете получить детерминированную задержку. Вы не можете иметь никаких гарантий. Потому что это не ОС реального времени.

Если вам нужна гарантия, обязательная для вашего проекта, вы можете выслать часть в реальном времени на устройство меньшего размера, например Arduino (Открытый исходный код, некоторые пользователи сделали ОС реального времени с ней) или Чип Бек (коммерческий, поставляется с MiniOS в реальном времени); или вы можете установить RealTime Linux, что приносит некоторую гарантированную задержку.

0

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

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

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