Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Событие в d2xx.dll
Форум разработчиков электроники ELECTRONIX.ru > Интерфейсы > Форумы по интерфейсам > RS232/LPT/USB/PCMCIA/FireWire
tans1
Кто работал с встроенными функциями FTDI, подскажите пожалуйста.
Как правильно организовать постоянный мониторинг состояния порта, чтобы по приему байта выполнялись определенные действия?
При использовании FT_SetEventNotification(ftHandle,EventMask,hEvent); и WaitForSingleObject(hEvent,INFINITE); (как сказано в документации) возникает зависание программы до прихода байта. Как создать событие чтобы приложение не зависало в его ожидании?

Спасибо.
Седой
Цитата(tans1 @ Mar 24 2010, 13:46) *
.. Как создать событие чтобы приложение не зависало в его ожидании?

Спасибо.


Magic word - thread.
Организовать ожидание в отдельном потоке.
tans1
Просто функции FTDI у меня почему-то не работают в разных потоках (дескриптор порта не переносится в другой поток, пишет NULL)
Nuts_
тут уже похоже вопрос програмирования а не конкретно FTDI
хендл содержащий дескриптор порта обьявлен как глобальный?
может его чего то портит?

вот мой пример прада для COM
Код
в начале текта
HANDLE hPortThr;
DWORD PortThreadID;
HANDLE hPort;
HANDLE port;
int Nport


main ()
{
    hPort=OpenCP(Nport);
    if (hPort== INVALID_HANDLE_VALUE) Nport=0;
    if (Nport)
    {
    hPortThr=CreateThread (NULL,0,(LPTHREAD_START_ROUTINE)PortThreadProc,0,CREATE_SUSPENDED,&PortThreadID);
    SetThreadPriority (hPortThr,THREAD_PRIORITY_NORMAL);
    ResumeThread(hPortThr);
    }

}

void PortThreadProc(void)
{

while (1)
{
charsRead=0;
while (!charsRead)
    {
    ReadFile (hPort, &recb, 1, &charsRead, NULL);
    Sleep (1);
    }
...............
}
}
IWG
Дескриптор можно продублировать через функцию DuplicateHandle
http://www.vsokovikov.narod.ru/New_MSDN_AP...icatehandle.htm
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.