Меню

+7 (495) 785-95-25
sale@lcard.ru
sale@lcard.ru
Страницы 1
Тема закрыта
|
||||
|
Конфликты между программой, lusbapi и драйверомПереустановил Windows, установил драйвер на модуль L-Card 14-440 с родного диска 2005г. Программа, написанная в те годы заработала прекрасно, а PowerGraph 3.3demo, который работал ранее работать отказался - скачал новый версии 3.3.8 и установил. Теперь не работает моя программа - пишет, что не может получить доступ к модулю. Меняю lusbapi.dll на v3.3, скачанную у вас - программа пишет, что неправильная версия dll. Возникает вопрос: "Что, при обновлении драйверов нужно переписывать старые программы?! Или новые нужно писать под старые драйвера?!" Неужели нельзя было оставить поддержку старых версий библиотеки lusbapi? |
|||
|
||||
|
Re: Конфликты между программой, lusbapi и драйвером1. При обновлении только USB драйвера переписывать старые программы не надо.
|
|||
|
||||
|
Re: Конфликты между программой, lusbapi и драйверомСпасибо за совет. Но здесь проблема в том, что программа написана в Buildere 6.0 а сейчас в 2006-м, а в переходе есть некоторые проблемы. Один раз мне пришлось полностью переделывать интерфейс и связи - трудоемкая процедура. |
|||
|
||||
|
Re: Конфликты между программой, lusbapi и драйверомВ смысле-сейчас пишу в 2006-м Buildere. |
|||
|
||||
|
Re: Конфликты между программой, lusbapi и драйверомНеобходимость пересобирать приложение с новой DLL связана со способом реализации интерфейса (через класс), т.е. lusbapi.h, с которым собрано приложением, должен соответствовать версии lusbapi.dll. Для этого и рекомендуется делать строгую проверку равенства версии. Но ничто не мешает прикладывать нужную DLL к своему приложению. Смена драйвера - тут, конечно, есть неудобство. В принципе можно держать и оба драйвера, например, в зависимости от того, в какой порт включено устройство (если так поставить драйверы). Или даже менять из .bat файла с помощью утилиты devcon (devcon updateni такой-то.inf "USB//VID_0471&PID_такой-то"). Но, может, проще найти, где пересобрать приложение? |
|||
|
||||
|
Re: Конфликты между программой, lusbapi и драйверомЯ, собственно, и кладу lusbapi.dll в папку с программой. Только при установке нового драйвера PowerGraphом у меня моя программа стала писать что не может получить доступ к модулю при подключении АЦП к любому разъему кроме одного. Я вначале и не мог понять в чем дело - такого никогда не было. Обнаружил что в оборудовании на этих USB LCARD находится в другом месте. На этом сайте посмотрел что вышла новая библиотека, заменил ей старую и получил сообщение о несоответствии версии. Попробую пересобрать в старой версии. В любом случае спасибо за все предложения. Будут еще - с радостью выслушаю, тем более, что я только начинающий программист на таком уровне. |
|||
|
||||
|
Re: Конфликты между программой, lusbapi и драйверомЕще смущает способ обращения к модулю - посмотрел новое пособие к программированию и смутили изменения.Не знаю - будет ли работать обращение по старому. |
|||
|
||||
|
Re: Конфликты между программой, lusbapi и драйверомНу все правильно: очевидно, у Вас был на одном из портов установлен старый драйвер.
Поясню еще насчет связи с портом USB. В наших устройствах на уровне USB не прописываются серийные номера, а в windows действует такое правило: если при установке USB-устройства у него нет уникального номера, то драйвер ассоциируется с номером порта, то есть драйвер применяется к "устройству VID xxxx PID yyyy на USB порту zz".
А что вызывает опасения в способе обращения к модулю? |
|||
|
||||
|
Re: Конфликты между программой, lusbapi и драйверомИз истории... К сожалению, в силу ряда причин, до 2006 года lusbapi работала через //'свой//' драйвер, а PCI и ISA платы через другой драйвер, что приводило к постоянной путанице и нареканиям. В 2006 году мы таки разрубили этот гордиев узел, перейдя на один драйвер (ldevusbu.sys). Извините, что так получилось, но совместимого решения не получилось. |
|||
|
||||
|
Re: Конфликты между программой, lusbapi и драйверомАлександру Е.
Владиславу.
|
|||
|
||||
|
Re: Конфликты между программой, lusbapi и драйверомМ-м... насчет старого руководства ничего сказать не могу, надеюсь - завтра Сергей посмотрит. Но в общем случае лучше отталкиваться не от примера, а от описания lusbapi. То, что удовлетворяет описанию, должно работать. Последовательность вызова управляющих функций от открытия модуля до пуска, по-моему, сильно не менялась (GetModuleName GetModuleDescription STOP_ADC SET_ADC_PARS START_ADC ... STOP_ADC), а что касается самого цикла сбора данных, то можно пользоваться новой функцией ReadData (там другой формат вызова, появилась структура IO_REQUEST_LUSBAPI), а можно, если хочется, вообще системным ReadFile() - только обязательно в режиме OVERLAPPED. Стандартная схема процесса чтения - поток, в котором крутится цикл с двумя буферами на событиях (один запрос overlapped всегда в очереди): WaitForSingleObject - GetOverlappedResult - ReadFile - смена индекса буфера - WaitForSingleObject...
Загрузка CPU должна быть очень низкая, если только в реальном времени не идет какой-то обсчет собранного сигнала. Практически все время поток сидит в каком-нибудь Wait. |
|||
|
||||
|
Re: Конфликты между программой, lusbapi и драйвером1. По поводу "скелета" программы из руководства...
|
|||
|
||||
|
Re: Конфликты между программой, lusbapi и драйверомСергей: насчет загрузки CPU.
Но:
Андрей: согласен с Вами, но в извинение можно сказать, что примеры такого рода не предполагают прямой перенос кода из примера в рабочее приложение. Они схематически иллюстрируют принцип работы и часто пишутся как можно короче и очевиднее. При этом могут опускаться и обязательные в реальном приложении вещи (например, проверки ошибок ввода-вывода). |
|||
|
||||
|
Re: Конфликты между программой, lusbapi и драйверомСергею.
Александру Е.
|
|||
|
||||
|
Re: Конфликты между программой, lusbapi и драйверомИ еще: в очередной раз спасибо поддержку. |
|||
|
||||
|
Re: Конфликты между программой, lusbapi и драйверомНа здоровье! Потоки Builder по идее не должны существенно отличаться, потому что их C++ная обертка наверняка в итоге вызывает те же функции API (а как еще создать поток?).
И раз уж о них зашла речь о TThread, там есть одна штука, которую я в свое время понял не сразу.
И еще - потокам можно раздавать разные приоритеты внутри процесса. |
|||
|
||||
|
Re: Конфликты между программой, lusbapi и драйверомВероятно вызывает. Но почему-то мне показалось напрямую через API работать удобнее. Может быть билдеровский интерпретатор часть процессорного времени берет на себя. К сожалению я уже не помню что у меня не заладилось с классом TThread, но помню что что-то было не так. А поток я, пробовал создавать по-разному, в том числе и спящим, но спасибо за подсказку.
|
Страницы 1
Тема закрыта