реклама на сайте
подробности

 
 
> Событие в d2xx.dll
tans1
сообщение Mar 24 2010, 08:46
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 26
Регистрация: 24-03-10
Пользователь №: 56 173



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

Спасибо.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 4)
Седой
сообщение Mar 24 2010, 09:02
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 244
Регистрация: 21-02-05
Из: Урал
Пользователь №: 2 806



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

Спасибо.


Magic word - thread.
Организовать ожидание в отдельном потоке.
Go to the top of the page
 
+Quote Post
tans1
сообщение Mar 24 2010, 10:05
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 26
Регистрация: 24-03-10
Пользователь №: 56 173



Просто функции FTDI у меня почему-то не работают в разных потоках (дескриптор порта не переносится в другой поток, пишет NULL)
Go to the top of the page
 
+Quote Post
Nuts_
сообщение Mar 30 2010, 12:10
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 23
Регистрация: 1-07-09
Пользователь №: 50 799



тут уже похоже вопрос програмирования а не конкретно 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);
    }
...............
}
}


--------------------
Go to the top of the page
 
+Quote Post
IWG
сообщение May 21 2010, 04:49
Сообщение #5





Группа: Участник
Сообщений: 11
Регистрация: 7-09-07
Из: Омск
Пользователь №: 30 350



Дескриптор можно продублировать через функцию DuplicateHandle
http://www.vsokovikov.narod.ru/New_MSDN_AP...icatehandle.htm
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 21:07
Рейтинг@Mail.ru


Страница сгенерированна за 0.01362 секунд с 7
ELECTRONIX ©2004-2016