tans1 0 24 марта, 2010 Опубликовано 24 марта, 2010 · Жалоба Кто работал с встроенными функциями FTDI, подскажите пожалуйста. Как правильно организовать постоянный мониторинг состояния порта, чтобы по приему байта выполнялись определенные действия? При использовании FT_SetEventNotification(ftHandle,EventMask,hEvent); и WaitForSingleObject(hEvent,INFINITE); (как сказано в документации) возникает зависание программы до прихода байта. Как создать событие чтобы приложение не зависало в его ожидании? Спасибо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Седой 0 24 марта, 2010 Опубликовано 24 марта, 2010 · Жалоба .. Как создать событие чтобы приложение не зависало в его ожидании? Спасибо. Magic word - thread. Организовать ожидание в отдельном потоке. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
tans1 0 24 марта, 2010 Опубликовано 24 марта, 2010 · Жалоба Просто функции FTDI у меня почему-то не работают в разных потоках (дескриптор порта не переносится в другой поток, пишет NULL) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Nuts_ 0 30 марта, 2010 Опубликовано 30 марта, 2010 · Жалоба тут уже похоже вопрос програмирования а не конкретно 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 0 21 мая, 2010 Опубликовано 21 мая, 2010 · Жалоба Дескриптор можно продублировать через функцию DuplicateHandle http://www.vsokovikov.narod.ru/New_MSDN_AP...icatehandle.htm Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться