Re[9]: чтение из FTDI-устройства
От: grom555 Беларусь  
Дата: 12.07.07 06:21
Оценка:
Здравствуйте, cr lf, Вы писали:

CL>>>Я читаю данные из USB, которые и описывают состояние датчика.

CL>>>Датчик является тем самым устройством, которое замыкает/размыкает цепь, подающую сигнал на вход микросхемы FTDI, а она в свою очередь
CL>>> переправляет его в USB.
G>>Тогда вопрос: в какой момент начинать считывать инфу? Сейчас? Через минуту? Через 10 минут?
CL>Считывать сразу же, как только начинаем запись.

G>>Ведь для функции чтения есть TimeOut.

CL>Кстати, я не совсем понимаю что это такое ;(
Это время, в течение которого функция будет ждать прихода данных в порт.
CL>И чем Time Out отличается от Latency.
Я тоже не знаю что такое Latency(лучше не пользуй). Нужно читать справку по API для FTDI.

G>>Прочитав все, могу спросить: Что будет, если машины совсем не поедут?

CL>Да ничего не будет — загорится зеленый и устройство будет ждать получения сигнала от фотоэлемента стоящего на старте.
Да. И их проги выйти поможет только диспетчер задач.

CL>>>WaitForSingleObject в данном случае вешает программу навечно:

CL>>>
CL>>>hEvent := CreateEvent(0,false,false,'');
CL>>>FT_SetEventNotification(h,FT_EVENT_RXCHAR,@hEvent);
CL>>>WaitForSingleObject(hEvent,Infinite);
CL>>>FT_GetStatus(h,@RxBytes,@TxBytes,@EventDWord);
CL>>>if RxBytes > 0 then begin
CL>>>  FT_Read(h,@Buf,1,@Count);
CL>>>  WriteLn('buf = ',IntToBin(buf));
CL>>>end;
CL>>>

G>>Навечно она останавливается из-за вызова WaitForSingleObject с параметром Infinite.
CL>Если я указываю определенный интервал, WaitForSingleObject заканчивается с результатом WAIT_TIMEOUT, хотя сигнал был и, стало быть, hEvent должен быть Signalled
Значит так и есть. Поставь интервал 1000мс или 10000мс. Или проверь второй параметр, может не того ждешь. Нет доков по FTDI... протерял где-то... не нахожу..
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.