Здравствуйте, 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... протерял где-то... не нахожу..