ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Пятница
29 марта
1057290 Топик полностью
fk0, легенда (02.12.2020 00:39, просмотров: 241) ответил POV_ на Потребовалось отладить DMX512 не имея контроллера, который бы формировал протокол. С винды...
Код виндовый покажи. А то смысл набрасывать на вентилятор каждый раз? Потом там BREAK в начале каждого пакета. У тебя случайно паузы не "между байтами", а не перед каждым пакетом (из нескольких байт) ? И есть специфическая проблема любой операционки и драйвера ком-порта: ты короткий BREAK во-первых не факт, что сформируешь. Во-вторых... 

В виндах, например, есть отдельные SetComBreak и ClearComBreak. И ты должен вызвать обе перед посылкой пакета, и между ними ещё функцию задержки (sleep). Сколько, думаешь, в тактах или микросекундах весит три системных вызова?


В unix всё куда запутанней, там аж четыре функции iotcl для этого: TCSBRK, TCSBRKP, TIOCSBRK, TIOCCBRK. Последние два аналогичны виндовым функциям. Первый имеет фиксированную и очень большую длину BREAK, а вот второй позволяет её задавать вручную какую удобно. Что казалось бы удобно. Но начинаются нюансы: разные драйверы компорта могут не поддерживать некоторые iotcl...


Кроме того, перед посылкой BREAK на любой платформе нужно убедитья, что буфер отправки пуст (WaitCommEvent, ещё сисколл)... или ждать если не пуст (сисколл).

[ZX]