Меню

+7 (495) 785-95-25
sale@lcard.ru
sale@lcard.ru
|
||||
|
Re: E14-140M Режим покадровой синхронизацииВ первом же вызове так? |
|||
|
||||
|
Re: E14-140M Режим покадровой синхронизацииДа, при первом же вызове. Согласно идеологии, я делаю массив из двух Overlapped структур, двух приемных массивов, создаю и назначаю сигнальные события. До старта АЦП выполняю сначала Стоп, согласно рекомендаций, затем первый асинхронный запрос, первой структурой Overlapped, потом старт АЦП, выполняю второй асинхронный запрос второй структурой, жду события из первой структуры, дожидаюсь, GetOverlappedResult дает указанную ошибку. Значение lpNumberOfBytesTransferred возвращается 0, так же как и буфер в ReadFile тоже нулевой. unidir.cpp работает, я собственно на нее и смотрел, когда кодил. Сейчас попробую сделать без потока, но вряд ли в этом дело. |
|||
|
||||
|
Re: E14-140M Режим покадровой синхронизации
Вот такой последовательный прогон с указанной ошибкой. Не в потоке. |
|||
|
||||
|
Re: E14-140M Режим покадровой синхронизацииMdlHandle инициализирован? |
|||
|
||||
|
Re: E14-140M Режим покадровой синхронизацииДа, ранее со всеми инициализациями MdlHandle := pModule.GetModuleHandle(); Эту часть кода я с примера вашего взял и почти не трогал. Возвращает валидное значение. Все то же с использованием ReadData работает. Скорее всего как всегда какая-нибудь глупость, но пока я ее не найду. |
|||
|
||||
|
Re: E14-140M Режим покадровой синхронизацииТак, если приемный буфер объявить статическим массивом, то ошибки нет. Значит дело в ReadFile, но проявляется позднее из-за асинхронности. |
|||
|
||||
|
Re: E14-140M Режим покадровой синхронизацииНе пойму как отредактировать сообщения. В общем ошибка была в том, что для динамического массива при использовании WinAPI ReadFile нужна ссылка на его начало, в данном примере Buf[ind][0], ну и правильное определение его величины в байтах для передачи в функцию. |
|||
|
||||
|
Re: E14-140M Режим покадровой синхронизацииАх вот что! Это специфичная для Delphi штука. |