|
|
  |
FT232 помогите понять, программирование |
|
|
|
Aug 23 2007, 11:59
|
Участник

Группа: Участник
Сообщений: 27
Регистрация: 15-07-05
Пользователь №: 6 832

|
значит так. переходник собран на FT232RL на конце стоит ATMEGA168 со стороны компа написана программа на Delphi, использую прямое управление, т.е. работаю через DLL FTD2XX.DLL есть управление потоком через DTR/DSR.
все работает ровно и хорошо. но есть такой момент. запускаю я свою программу, а она не видит устройство, т.е. не получает от него данные, иногда, еще реже получает их как-то не корректно.
закрываю программу. запускаю любую терминальную программу. закрываю ее. запускаю свою программу, все работает стабильно.
есть подозрение что как-то нужно инициализировать порт после или перед открытием из программы. может кто что подскажет. заранее спасибо.
|
|
|
|
|
Aug 23 2007, 12:57
|

Участник

Группа: Свой
Сообщений: 67
Регистрация: 5-02-07
Пользователь №: 25 074

|
Цитата(showone @ Aug 23 2007, 17:59)  значит так. переходник собран на FT232RL на конце стоит ATMEGA168 со стороны компа написана программа на Delphi, использую прямое управление, т.е. работаю через DLL FTD2XX.DLL есть управление потоком через DTR/DSR.
все работает ровно и хорошо. но есть такой момент. запускаю я свою программу, а она не видит устройство, т.е. не получает от него данные, иногда, еще реже получает их как-то не корректно.
закрываю программу. запускаю любую терминальную программу. закрываю ее. запускаю свою программу, все работает стабильно.
есть подозрение что как-то нужно инициализировать порт после или перед открытием из программы. может кто что подскажет. заранее спасибо. Может не инициализируется скорость передачи-приёма и программа открывает порт со скоростью по умолчанию - сделайте так например: Код FT_Current_Baud:=FT_BAUD_9600; Open_USB_Device(); Set_USB_Device_BaudRate(); Purge_USB_Device_In(); Purge_USB_Device_Out();
Сообщение отредактировал VXDRV - Aug 23 2007, 12:58
|
|
|
|
|
Aug 24 2007, 06:48
|
Участник

Группа: Участник
Сообщений: 27
Регистрация: 15-07-05
Пользователь №: 6 832

|
Цитата(SasaVitebsk @ Aug 23 2007, 22:28)  Не хочется вас огорчать. Я тоже попробовал работать правда с ft245bm ч/з FTD2XX.DLL. Устройство у меня правда обнаруживалось всегда, но при работе столкнулся с некоторыми хомутами на приём. При передаче всё было класс, а вот при приёме иногда проскакивал лишний байт - 0. А потом всё работало как часы.
И ещё какие-то мелкие проблемы. Короче я отказался от затеи. При этом при работе ч/з VCP всё работало просто супер устойчиво. Работал с управлением потоком и всё-всё-всё. Гонял несколько суток напропалую. На максимальной скорости. Проблем небыло.
Конечно, это уже другой кристалл. Но что-то VCP дрова менялись 10 раз а FTD2XX по-моему не менялись. Может стоит отказаться от них и перейти на VCP? И прога универсальнее будет. да вот и я уже пришел к мысли что нужно переходить на VCP. скажите, а как вы настраиваете именно управление потоком. что-то не нашел я. т.е. инициализация порта средствами WIN API это у меня работает, но где там указать что я использую управление потоком, и как это настроить. или вы используете какой-то компонент для работы с портом. если можно киньте пиримерчик именно инициализации порта и управлением потока или может где почитать ? Заранее спасибо.
|
|
|
|
|
Aug 28 2007, 11:06
|
Участник

Группа: Участник
Сообщений: 30
Регистрация: 25-04-07
Пользователь №: 27 301

|
Могу подозревать, что VCP использует туже DLL FTD2xx и по этому если был открыт COM порт с помощью виндозы и не закрыт, то вы не получите доступ напрямую из DLL FTD2xx (исхожу из ваших тестов, лично я не проверял). Также с каждым подключением микрухи может меняться номер COM порта, что не всегда удобно (хотя есть возможность как это обойти, хотя не помню как). Попробуйте удалить VCP и попробуйте без неё. Я работал с FTDI232BM и не разу не было проблем с подключением, разве что устройство отваливалось раза 2 и лечилось только отключением и последующим подключением микрухи. А так работает девайс на этой микрухе каждый день.
|
|
|
|
|
Aug 29 2007, 13:23
|
Участник

Группа: Участник
Сообщений: 27
Регистрация: 15-07-05
Пользователь №: 6 832

|
Цитата(awtoap @ Aug 28 2007, 15:06)  Могу подозревать, что VCP использует туже DLL FTD2xx и по этому если был открыт COM порт с помощью виндозы и не закрыт, то вы не получите доступ напрямую из DLL FTD2xx (исхожу из ваших тестов, лично я не проверял). Также с каждым подключением микрухи может меняться номер COM порта, что не всегда удобно (хотя есть возможность как это обойти, хотя не помню как). Попробуйте удалить VCP и попробуйте без неё. Я работал с FTDI232BM и не разу не было проблем с подключением, разве что устройство отваливалось раза 2 и лечилось только отключением и последующим подключением микрухи. А так работает девайс на этой микрухе каждый день. если порт открыт, то его уже через DLL не откроешь. просто терминалка, сторонняя, инициализировала порт как нужно, в плане управления потоком. и потом все это работало дальше, до следующего отключения. а вот как мне это сделать из моей проги, через DLL, у меня так и не получилось. программа работала только после сторонней инициализации. перешел на управление через API т.е. работаю сейча с VCP все класс, запускается сразу же. конечно очень бы хотелось разобраться в чем же дело, но как всегда нет времени. всем спасибо.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|