| Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
Переходники COM to USB
24.01.2008, 01:47
|
|
|
Временная регистрация
Регистрация: 28.03.2007
Сообщений: 78
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Переходники COM to USB
Помогите по следующему вопросу.
МК данные с АЦП и передает по USART на комп. Встала проблема что com порты отмирают, а на ноутах почти не встречаются. Выходом из данной ситуации было поставить переходник.
Со стороны компа управляющая программа написана на Delphi с использованием API функций. В общем проблема в следующем преобразователь (GEMEBIRD UAS 111/112) при восстановлении связи после обрыва (просто отключаю питание МК) отказвыется работать. Вызываю функцию ClearCommError(FHandle, CodeError, @Result); И определяю состояния буфера приема, а результат ноль. Без переходника все работает отлично.
Подскажите в чем проблема я в программировании портов под windows, типа новичек. Может это драйвер глючный или API функции некорректно работают с виртуальными портами.
Заранее спасибо, Сергей.
|
|
|
|
24.01.2008, 09:31
|
|
|
Временная регистрация
Регистрация: 28.03.2007
Сообщений: 78
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Драйвера на виртуальном сом Prolific. Еще пробовал сом снифером эффект тот же после восстановления связи данные не воспринимаютя.
Типа можно API исключить, но все равно не нонятно почему данные не воспринимаютя. Может кто сталкивался с подобно проблемой ? Или я чего то не понимаю просьба напишите ответ.
|
|
|
|
24.01.2008, 09:59
|
|
|
Гражданин KAZUS.RUN
Регистрация: 01.01.2007
Адрес: Таганрог
Сообщений: 571
Сказал спасибо: 26
Сказали Спасибо 213 раз(а) в 91 сообщении(ях)
|
В программе под Win сбоит сканирование виртуальных COM портов. У меня этот глюк тоже был. Попробуй посмотреть USB monitor-ом или COM toolkit-ом что твориться на порту. Конкретный выход из положения не могу подсказать, извини.
|
|
|
|
24.01.2008, 10:47
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 06.02.2007
Сообщений: 1,340
Сказал спасибо: 3
Сказали Спасибо 107 раз(а) в 66 сообщении(ях)
|
Ну если Вы порт не закрыли, то какие вопросы ? Его же нельзя открыть еще раз
|
|
|
|
24.01.2008, 23:00
|
|
|
Временная регистрация
Регистрация: 28.03.2007
Сообщений: 78
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Что значит порт не закрыл CloseHandle. Просто прекратилась передача с МК на на некотороевремя потом восстановилась, а буфер приема показывает что данных нет. Контроллер при этом данные железно передает. Есть догадка что после прекращения связи порт отключается по тайм-ауту или ошибка ноль на приемном выводе и функция ClearCommError(FHandle, CodeError, @Result) ошибку не сбрасывает. Может есть особенность в работе виртуально порта в отличии от аппаратного.
Вопрос: при ошибке Handle автоматически не закрывается.
|
|
|
|
24.01.2008, 23:17
|
|
|
Временная регистрация
Регистрация: 28.03.2007
Сообщений: 78
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Ни кто не смотрел данный ресурс http://www.rsdn.ru/Forum/Message.aspx?mid=2159292 в нем проблема более детально описано но конкретного решения нет. Ваши соображения по этому поводу.
|
|
|
|
25.01.2008, 00:52
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 27.06.2005
Сообщений: 1,387
Сказал спасибо: 19
Сказали Спасибо 210 раз(а) в 156 сообщении(ях)
|
Если драйвера - Prolific, то и нужно доставать разработчиков драйверов этой фирмы с назойливыми просьбами разобраться с ошибкой. Других путей решения проблемы я лично не вижу. Кроме как написать собственные драйвера - но это уже далеко выходит за рамки данной конференции.
|
|
|
|
25.01.2008, 01:43
|
|
|
Временная регистрация
Регистрация: 28.03.2007
Сообщений: 78
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
ТЕНЬ интересно твое мнение. Чтобы преобразовать сом в usb не обязательно брать Profilic. Рассматриваю вариант преобразователя на fdti 232bm. На их сайте есть примеры программ на Delphi и работа с портом на основании функций из dll библиотеки по названию очень напоминающие API. Не работал ли таким образом с портом. Если да то не возникало ли таких глюков.
|
|
|
|
25.01.2008, 10:56
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 06.02.2007
Сообщений: 1,340
Сказал спасибо: 3
Сказали Спасибо 107 раз(а) в 66 сообщении(ях)
|
Ну я делфи не знаю, но в вижуал - это все просто - если нет ожидаемого количества байтов за время, определенное в
|
Код:
|
rCommTimeouts.ReadTotalTimeoutConstant =4000; // 4000 миллисекунд
rCommTimeouts.ReadTotalTimeoutMultiplier = 1;
port.SetTimeouts(rCommTimeouts);
// бла-бла-бла
//----------------------------
// при приеме
if( port.Read(rBuf,4)!=4) // количество принятых байт (2) за время Timeout
//не соответствует ожидаемому
{
port.Close();
port.Open(kom, dwBaud, CSerialPort::NoParity, 8, CSerialPort::OneStopBit, CSerialPort::XonXoffFlowControl); |
Хотя, как говорит Тень, проблема именно в драйвере, то уже ниче не поможет.. Написать свой...
|
Код:
|
Вопрос: при ошибке Handle автоматически не закрывается. |
Нет, с чего бы это оно само закрылось...
|
|
|
|
25.01.2008, 14:45
|
|
|
Частый гость
Регистрация: 25.01.2008
Сообщений: 23
Сказал спасибо: 8
Сказали Спасибо 5 раз(а) в 3 сообщении(ях)
|
1 вариант аппаратный. Изменить как-то схему сопряжения,
чтобы при выключении питании на переходник USB-COM приходила 1. От постоянного 0 он видимо затыкается.
Что-то вроде подтяжки резистором.
2 вариант FTDI. Пробовал USB-485. Конечное устройство включалось и выключалось. Обмен восстанавливался без проблем.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 22:52.
|
|