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


E440 + Lusbapi.dll + Delphi 5 = Странная проблема

Вы не вошли.

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

Антон Волков
19.03.2003 11:12:29
#1

Гость

E440 + Lusbapi.dll + Delphi 5 = Странная проблема

Уважаемые сотрудники отдела техподдержки.
Столкнулся со следующей проблемой:
В собственной софтине на Delphi 5, используя lusbapi, производится опрос Е440. С опросом, можно сказать, все нормально. А вот при инициализации модуля, конкретно после (в процессе?) выполнения функции ILE440.GET_LBIOS_VERSION(...), возникает AV с попыткой записи по адресу хххх, который разнится с каждым запуском программы. При этом до сравнения версии биос все проходит на ура, и LOAD_LBIOS(...) и MODULE_TEST.
Это еще не все, AV всплывает не всегда. Если, скажем, прогонять по шагам, никаких AV и никаких проблем. Иногда, самопроизвольно, все начинает работать, но при условии включения в программу отладочной информации, но это происходит редко.
Пересборка lusbapi.dll в "безотладочном" режиме ничего не дала. Задержка после GET_LBIOS_VERSION(...) также к результатам не приводит.
Подскажите, пожалуйста, где могут быть грабли?

Спасибо заранее.
С уважением,
Волков А. А.

19.03.2003 13:22:56
#2

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

Re: E440 + Lusbapi.dll + Delphi 5 = Странная проблема

А штатная программка USB//E440//D4//LoadLBios//LoadLBios.exe с нашего CD-ROM работает без сбоев?

Антон Волков
20.03.2003 09:43:02
#3

Гость

Re: E440 + Lusbapi.dll + Delphi 5 = Странная проблема

Да, в том-то все и дело. Ничего не могу понять. Работает и L-Graph, и LoadLBios.exe, а вот когда я пытаюсь проверить версию биос, хана, AV. Код инициализации уже "слизал" точно с LoadLBios, за исключением реакции на ошибки. При желании могу процитировать код, хотя, уверяю никаких отличий, могущих (логически) вызвать AV нет. Что меня смущает больше всего, так это то, что если сделать "старт до курсора", когда курсор на строке с GET_LBIOS_VERSION и, к примеру тут же нажать F9 (в смысле, запустить на выполнение дальше) все прекрасно работает. К сожалению нельзя провернуть подобный фокус без debug info.
Присутствие случайного характера в проблеме позволяет усомниться в ошибочности логики.

Если это может помочь, то проблема возникла не мгновенно, а после некоторой "нагрузки" приложения компонентами (стандартные элементы управления, TChart и достаточно надежный и рабочий компонент для записи файлов в формате Excel). Ни один из них не упоминается даже до инициализации E440.

Сам процесс инициализации, а потом запуска потока для чтения, производится в обработчике OnCreate главной формы.