TONAL 0 1 июня, 2009 Опубликовано 1 июня, 2009 · Жалоба Hi all! Решил на базе моста USB->COM соорудить передатчик для DMX512. Из особенностей протокола DMX512 следует отметить нестандартную скорость (250Кбит/с) и наличие маркера начала пакета BREAK (импульс низкого уровня t=88мкс). С нестандартной скоростью проблем не возникло, мой мост (ОTI6858) поддерживает такую скорость. А вот с передачей маркера BREAK возникла проблемка, длительность передачи байта на скорости 250Кбит/с составляет 44мкс, то есть BREAK так не передать... Я решил на время передачи BREAK снизить скорость передачи до 115,2Кбит/с через SetCommState, но SetCommState жестко тормознутая функция(выполняется 30мс!). Таким образом для передачи пакета 2-а вызова SetCommState занимают 60мс!, это ни куда не годиться. Вопрос к тем кто заморачивался с СОМ портами и DMX512, как малой кровью без тормозов передать BREAK? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Седой 0 2 июня, 2009 Опубликовано 2 июня, 2009 · Жалоба Hi all! Решил на базе моста USB->COM соорудить передатчик для DMX512. ..... Таким образом для передачи пакета 2-а вызова SetCommState занимают 60мс!, это ни куда не годиться. Вопрос к тем кто заморачивался с СОМ портами и DMX512, как малой кровью без тормозов передать BREAK? Вопрос. Лучшее средство от головной боли? Ответ. АПСТЕНУ!! Так и здесь, выкинуть мост - поставить МК. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
TONAL 0 2 июня, 2009 Опубликовано 2 июня, 2009 · Жалоба Вопрос. Лучшее средство от головной боли? Ответ. АПСТЕНУ!! Так и здесь, выкинуть мост - поставить МК. Ничего не скажешь, хороший совет. До такого и сам додуматься могу. Дело не в том что мне сложно поставить МК, передатчик DMX512 для МК у меня написан и работает. Просто я считаю глупо ставить целый контроллер для передачи одного импульса. Вобщем вопрос остается в силе. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
TONAL 0 3 июня, 2009 Опубликовано 3 июня, 2009 · Жалоба Решил вопрос использованием EscapeCommFunction, выполняется ~1мс, сигнал подмешал в линию через К155ЛА3 =) Теперь BREAK передается так: EscapeCommFunction(hComPort,SETRTS); EscapeCommFunction(hComPort,CLRRTS); Всю работу с СОМ портом вынес в отдельный поток, полет нормальный. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ReAl 0 3 июня, 2009 Опубликовано 3 июня, 2009 · Жалоба Решил вопрос использованием EscapeCommFunction, выполняется ~1мс, сигнал подмешал в линию через К155ЛА3 =) Теперь BREAK передается так: EscapeCommFunction(hComPort,SETRTS); EscapeCommFunction(hComPort,CLRRTS); А SetCommBreak(hComPort)/ClearCommBreak(hComPort) пробовали? А EscapeCommFunction(hComPort,SETBREAK) / EscapeCommFunction(hComPort,CLRBREAK)? У меня эта пара работала. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
TONAL 0 3 июня, 2009 Опубликовано 3 июня, 2009 · Жалоба А SetCommBreak(hComPort)/ClearCommBreak(hComPort) пробовали? А EscapeCommFunction(hComPort,SETBREAK) / EscapeCommFunction(hComPort,CLRBREAK)? У меня эта пара работала. Попробовал, так не работает. :( Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
TONAL 0 4 июня, 2009 Опубликовано 4 июня, 2009 · Жалоба ReAl А на каком мосте работало? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ReAl 0 4 июня, 2009 Опубликовано 4 июня, 2009 · Жалоба ReAl А на каком мосте работало? На "обычных" портах и на FT232B-мосте Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Седой 0 6 июня, 2009 Опубликовано 6 июня, 2009 · Жалоба Просто я считаю глупо ставить целый контроллер для передачи одного импульса. Просто для данной задачи "целый контроллер" будет и дешевле и надежней, да и несколько каналов сделать можно простым "ногодрыжеством". Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться