Реклама на сайте DatasheetsDatasheets

KAZUS.RUN - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Книги и журналы
FAQ по электронике

  Datasheets
Поиск SMD
Онлайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Схемы и проекты
Принципиальные схемы
  Программы
Каталог сайтов
Калькуляторы
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы

Как программно организовать передачу и прием данных ft232

Непрочитано 22.03.2010, 22:26  
tusya83
Частый гость
 
Регистрация: 09.03.2010
Сообщений: 15
Сказал спасибо: 2
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
tusya83 на пути к лучшему
По умолчанию Как программно организовать передачу и прием данных ft232

Кто работал с встроенными функциями FTDI, подскажите пожалуйста.
Как правильно организовать постоянный мониторинг состояния порта, чтобы по приему байта выполнялись определенные действия?
При использовании FT_SetEventNotification(ftHandle,EventMask,hEvent) ; и WaitForSingleObject(hEvent,INFINITE); (как сказано в документации) возникает зависание программы до прихода байта. Как создать событие чтобы приложение не зависало в его ожидании?

Спасибо.
Реклама:

Последний раз редактировалось tusya83; 24.03.2010 в 12:49.
tusya83 вне форума  
Непрочитано 24.03.2010, 12:50  
tusya83
Частый гость
 
Регистрация: 09.03.2010
Сообщений: 15
Сказал спасибо: 2
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
tusya83 на пути к лучшему
По умолчанию Re: Как программно организовать передачу и прием данных ft232

Может кто-нибудь реализовывал подобные задачи с помощью API?
tusya83 вне форума  
Непрочитано 24.03.2010, 13:17  
DRFAUST
Временная регистрация
 
Регистрация: 15.06.2006
Сообщений: 56
Сказал спасибо: 0
Сказали Спасибо 1 раз в 1 сообщении
DRFAUST на пути к лучшему
По умолчанию Re: Как программно организовать передачу и прием данных ft232

Создайте дополнительный поток и в нем выполняйте ожидание события, либо посмотрите функцию RegisterWaitForSingleObject, кажется она должна подойти.
DRFAUST вне форума  
Непрочитано 24.03.2010, 13:29  
tusya83
Частый гость
 
Регистрация: 09.03.2010
Сообщений: 15
Сказал спасибо: 2
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
tusya83 на пути к лучшему
По умолчанию Re: Как программно организовать передачу и прием данных ft232

Вы имеете в виду реализацию посредством API функций? Я пробовала организовать отдельные потоки, единственное, что у меня не получилось, так это идентифицировать устройство. Это можно сделать с помощью функций библиотеки d2xx.dll, но при использовании в разных потоках эти функции не работают.
Как можно это сделать в API?

Или может кто-нибудь все-таик работал с функциями FTDI. Наверняка должно быть какое-то решение...
tusya83 вне форума  
Непрочитано 24.03.2010, 13:39  
Yurkin2007
Заблокирован
 
Регистрация: 27.03.2007
Сообщений: 1,327
Сказал спасибо: 12
Сказали Спасибо 576 раз(а) в 460 сообщении(ях)
Yurkin2007 на пути к лучшему
По умолчанию Re: Как программно организовать передачу и прием данных ft232

Используйте функцию FT_GetQueueStatus(), она возвращает число принятых байтов.
Пример на сайте FTDI:

FT_GetQueueStatus(ftHandle,&RxBytes);
if (RxBytes › 0)
{ ftStatus = FT_Read(ftHandle,RxBuffer,RxBytes,&BytesReceived);
if (ftStatus == FT_OK) { // FT_Read OK }
else { // FT_Read Failed }
}
Yurkin2007 вне форума  
Непрочитано 24.03.2010, 14:02  
tusya83
Частый гость
 
Регистрация: 09.03.2010
Сообщений: 15
Сказал спасибо: 2
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
tusya83 на пути к лучшему
По умолчанию Re: Как программно организовать передачу и прием данных ft232

А как сделать так, чтобы порт опрашивался постоянно. Если поместить FT_GetQueueStatus() в обработчик запуска формы, то он сработает один раз.
tusya83 вне форума  
Непрочитано 24.03.2010, 14:47  
urry
Почётный гражданин KAZUS.RUN
 
Аватар для urry
 
Регистрация: 06.02.2007
Сообщений: 1,340
Сказал спасибо: 3
Сказали Спасибо 107 раз(а) в 66 сообщении(ях)
urry на пути к лучшему
По умолчанию Re: Как программно организовать передачу и прием данных ft232

а таймер поставить - я так понимаю, миссион импосибел ?
__________________
warez
urry вне форума  
Непрочитано 24.03.2010, 14:49  
Yurkin2007
Заблокирован
 
Регистрация: 27.03.2007
Сообщений: 1,327
Сказал спасибо: 12
Сказали Спасибо 576 раз(а) в 460 сообщении(ях)
Yurkin2007 на пути к лучшему
По умолчанию Re: Как программно организовать передачу и прием данных ft232

1. Если у Вас медленный обмен - можно использовать Timer и опрашивать очередь приёмника по таймеру, например 10 раз в секунду.
2. Можно использовать собственный обработчик события Application.OnIdle и в нём опрашивать порт в фоновом режиме, то есть если пользователь не жмёт кнопки или не дёргает мышку, то порт будет опрашиваться постоянно.
3. Для быстрого обмена можно запустить отдельный Thread и в нём использовать Handle порта, открытого в основном потоке.
Yurkin2007 вне форума  
Непрочитано 24.03.2010, 15:42  
urry
Почётный гражданин KAZUS.RUN
 
Аватар для urry
 
Регистрация: 06.02.2007
Сообщений: 1,340
Сказал спасибо: 3
Сказали Спасибо 107 раз(а) в 66 сообщении(ях)
urry на пути к лучшему
По умолчанию Re: Как программно организовать передачу и прием данных ft232

Код:
2. Можно использовать собственный обработчик события Application.OnIdle и в нём опрашивать порт в фоновом режиме, то есть если пользователь не жмёт кнопки или не дёргает мышку, то порт будет опрашиваться постоянно.
а вот захочется винде окно перерисовать ? - в чужом приложении - и получится пауза 30 миллисекунд, как минимум.
Из области - вредных советов, имхо.
Второй поток, да, согласен... Но, как сказано выше, чревато.
Я бы на месте топикстартера ушел бы от этого фтди, если нужно быстро и срочно. Но - насколько быстро и на сколько срочно ?
В граммах, пожалуйста...
__________________
warez
urry вне форума  
Непрочитано 24.03.2010, 15:54  
tusya83
Частый гость
 
Регистрация: 09.03.2010
Сообщений: 15
Сказал спасибо: 2
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
tusya83 на пути к лучшему
По умолчанию Re: Как программно организовать передачу и прием данных ft232

Сообщение от urry Посмотреть сообщение
Я бы на месте топикстартера ушел бы от этого фтди, если нужно быстро и срочно. Но - насколько быстро и на сколько срочно ?
Что Вы имеете в виду? Скорость порядка 100кбит, то есть по таймеру не получается, уже об этом думали.

Хочется сделать по уму, то есть потоками. Но у меня проблема в том, что не получается программно определить номер ком-порта, на который встала микросхема, чтобы потом обрабатывать как ком-порт с помощью API.
tusya83 вне форума  
 
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Решено] Третье Послание Человечеству lelkanet Отвлекитесь, эмбеддеры! 201 06.01.2010 00:33


Часовой пояс GMT +4, время: 19:11.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.