Slovan
Oct 28 2011, 09:52
Доброго времени суток.
Есть прибор, который должен общаться с компьютером по RS-422 на скорости 921600 б/с. В компьютере стоит МОХА, которая такую скорость обеспечивает.
Собственно сами по себе запись и чтение в СОМ порт работают. Но дальше требуется обеспечить обмен с частотой 1000 Гц.
То есть каждую милисекунду прибор отправляет 5 байт компьютеру, он их должен обработать и отправить ответ до прихода следующего сообщения.
Возможно ли в принципе решить эту задачу под виндос? Даже если я делаю отделный поток с реал тайм приоритетом который занят только чтением из порта, все равно даже близко нет требуемой точности.
Alex11
Oct 28 2011, 10:06
Под виндюками можно, а вот с Вашим драйвером COM'а - это вопрос. Я делал в свое время прием данных с частотой 8кГц по сотне байт еще на P3, но драйвер устройства был свой. Дальше прием данных в отдельном потоке.
Slovan
Oct 28 2011, 10:40
Цитата(Slovan @ Oct 28 2011, 13:52)

Даже если я делаю отделный поток с реал тайм приоритетом который...
Поток? тогда уж процессу приоритет поднимайте. Насколько я помню изменение приоритета пока влияет только на планировку управления в рамках процесса.
Slovan
Сделать можно. Но не нужно.
Лучше realtime задачи отдать на откуп подключенному между ПК и прибором недорогому микроконтроллеру.
Скорость передачи в ПК = 1000 (Гц) * 5 (байт) * 10 (бит) = 50 кБит. На стандартной скорости 115 200 через стандартный COM будет с запасом.
По своему опыту, это самое простое, дешёвое и надёжное решение.
Цитата
Поток? тогда уж процессу приоритет поднимайте. Насколько я помню изменение приоритета пока влияет только на планировку управления в рамках процесса.
ну да, имел ввиду процесс.
Цитата
Лучше realtime задачи отдать на откуп подключенному между ПК и прибором недорогому микроконтроллеру.
Через микроконтролер проблем нет, в боевых условиях так скорее всего и будет, просто хотелось для удобства и наглядности работать с ПК.
Serj78
Dec 11 2011, 17:01
Делал на ftdi ft232 прием с частотой 1 Кгц , по 10 байт, скорость порта пробовал до полмегабита. Пытался оценить задержки ответа. получилось около 2 мс.
Но это- под родными VCP драйверами FTDI. Под D2x - говорят- значительно лучше, но не пробовал.
C ком портом работал стандартными виндовыми API функциями.
Genadi Zawidowski
Dec 12 2011, 22:42
Скорость 3 МГц. Блоки по (примерно) 3.5 килобайта, загруженность канала где-то на 75%. При использовании VCP блоки иногда приходят битыми (внутренний контроль обнаруживал). Какая-то зависимость от загрузки компютера (без разницы, windows7 или xp). После редактирования программы для использования функций D2, проблемы исчезли. Использовался асинхронный режим обмена и через WinAPI и через D2.
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.