реклама на сайте
подробности

 
 
> СОМ порт, тормозит SetCommState., передача DMX512 серез СОМ порт
TONAL
сообщение Jun 1 2009, 10:26
Сообщение #1


Участник
*

Группа: Новичок
Сообщений: 19
Регистрация: 16-10-07
Пользователь №: 31 405



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?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
TONAL
сообщение Jun 3 2009, 17:12
Сообщение #2


Участник
*

Группа: Новичок
Сообщений: 19
Регистрация: 16-10-07
Пользователь №: 31 405



Решил вопрос использованием EscapeCommFunction, выполняется ~1мс, сигнал подмешал в линию через К155ЛА3 =)
Теперь BREAK передается так:
CODE
EscapeCommFunction(hComPort,SETRTS);
EscapeCommFunction(hComPort,CLRRTS);

Всю работу с СОМ портом вынес в отдельный поток, полет нормальный.
Go to the top of the page
 
+Quote Post
ReAl
сообщение Jun 3 2009, 17:59
Сообщение #3


Нечётный пользователь.
******

Группа: Свой
Сообщений: 2 033
Регистрация: 26-05-05
Из: Бровари, Україна
Пользователь №: 5 417



Цитата(TONAL @ Jun 3 2009, 20:12) *
Решил вопрос использованием EscapeCommFunction, выполняется ~1мс, сигнал подмешал в линию через К155ЛА3 =)
Теперь BREAK передается так:
Код
EscapeCommFunction(hComPort,SETRTS);
EscapeCommFunction(hComPort,CLRRTS);
А SetCommBreak(hComPort)/ClearCommBreak(hComPort) пробовали?
А EscapeCommFunction(hComPort,SETBREAK) / EscapeCommFunction(hComPort,CLRBREAK)? У меня эта пара работала.


--------------------
Ну, я пошёл… Если что – звоните…
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 27th July 2025 - 23:20
Рейтинг@Mail.ru


Страница сгенерированна за 0.06197 секунд с 7
ELECTRONIX ©2004-2016