Российский производитель и разработчик сертифицированного измерительного оборудования с 1987 года

АЦП E14-440 NumberOfWordsPassed структуры IO_REQUEST_LUSBAPI всегда 0

Вы не вошли.

 Поиск | Регистрация | Вход 

Николай1983
17.10.2020 19:27:46
#1

Гость

АЦП E14-440 NumberOfWordsPassed структуры IO_REQUEST_LUSBAPI всегда 0

1. При чтении данных с АЦП(E14-440) в асинхронном режиме поле NumberOfWordsPassed структуры IO_REQUEST_LUSBAPI всегда
равно нулю даже когда данные реально переданы в буфер ПК, хотя по документации оно вроде должно заполняться.
2. При отключении USB провода во время сбора дынных событие(в смысле объекта синхронизации) , которое ожидает данные
всегда находится в сигнальном состоянии, хотя данных реально нет. Это ситуация воспроизводится в примере см(...\lusbapi34\E14-440\Examples\MicroSoft Visual C++ 6.0\ReadData).

18.10.2020 15:04:12
#2

Сотрудник "Л Кард"
Здесь с 24.04.2014
Сообщений: 1,486

Re: АЦП E14-440 NumberOfWordsPassed структуры IO_REQUEST_LUSBAPI всегда 0

1. В  руководстве программиста модуля E14-440 в  п.1.5.6.6. "Получение массива данных с АЦ" в описании параметра NumberOfWordsPassed прямо говорится, что  "Для асинхронного режима работы данной функции (см. ниже поле Overlapped) в этом параметре вполне может вернуться число 0, что не является ошибкой, учитывая специфику данного режима".
2. Да, действительно, Winapi функция WaitForSingleObject() несколько некорректно отслеживает момент отключения модуля от USB шины. Попробуйте задействовать функцию WaitingForReadRequestCompleted() из примера ReadWrite или WriteData. Там используется другая Winapi фукнция GetOverlappedResult(), которая вроде бы правильно отрабатывает подобную ситуацию.

Контакты

Адрес: 117105, Москва, Варшавское шоссе, д. 5, корп. 4, стр. 2

Многоканальный телефон:
+7 (495) 785-95-25

Отдел продаж: sale@lcard.ru
Техническая поддержка: support@lcard.ru

Время работы: с 9-00 до 19-00 мск