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


E-440 и драйвера

Вы не вошли.

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

Николай
26.10.2001 11:47:27
#1

Гость

E-440 и драйвера

Здравствуйте.
Пытаюсь разобраться с программированием модуля
E-440.
Возникли следующие вопросы:
скачал архив e440.exe, попытался откомпилировать
пример DynLoad (компилятор VC++ 6.0).
После запуска программы вылетает исключение "access violation". Просмотрел исходники Lusbapi.dll и увидел, что в функции
CreateInstance(char *DeviceName)
следующий код
DeviceName = strupr(DeviceName);
а передается этой функции указатель на "e440",
т.е. указатель на константу, про попытке модификации которой и происходет вылет.
Это еще не вопрос.
Вопрос в следующем:
в программе DynLoad и Lusbapi.dll есть функция
GetModuleName(char *ModuleName), но драйвер возвращает ошибку. В данной версии драйвера эта функция реализована или это планируется на будущее? Когда планируется поддержка E-440 программой lgraph?

Николай
26.10.2001 12:08:57
#2

Гость

Re: E-440 и драйвера

Да, еще не работают остальные программы из архива
e440.exe с сообщениями GetModuleName() --> Bad.
Причина, та же наверное.

26.10.2001 14:27:50
#3

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

Re: E-440 и драйвера

Можно попробовать вместо:
  DeviceName = strupr(DeviceName);
  if(!strcmp(DeviceName, "E440"))
записать одной строчкой:
  if(!strcmp(strupr(DeviceName), "E440"))
Что касается GetModuleName(), то самые первые экземпляры модулей данную функцию не поддерживали. В принципе можно подъехать к нам и подправить эту фичу.
Поддержка модуля E-440 программой L-Graph уже осуществленна. Можно скачать с нашего сайта из раздела /'Библиотека файлов/' архив lgraph.zip.

Николай
29.10.2001 05:35:46
#4

Гость

Re: E-440 и драйвера

Здравствуйте!
Подъехать очень проблематично, поэтому придется обойтись без этой функции.
Еще у меня вопрос, взял пример ReadData, сделал опрос одного канала Fd=100kHz, подал сигнал с генератора и сохранил в файл. Просмотр сигнала показал, что во-первых есть пропуски, т.е. не все отсчеты приняты/сохранены, во вторых на сигнале есть узкие выбросы (просечки). С чем бы это связано? Каким образом происходит передача данных из модуля в компьютер, возможны ли здесь пропуски из-за несвоевременного считывания fifo модуля? Можно ли получить исходные тексты драйвера модуля?
Спасибо.

Николай
29.10.2001 08:47:59
#5

Гость

Re: E-440 и драйвера

Попробовал новый Lgraph, та же история: при запуске выдает "Не могу получить имя модуля" и соответственно работает в режиме "Гляделка".
Неужели нельзя реализовать в драйвере отработку этой функции для старых экземпляров модуля?

29.10.2001 13:51:42
#6

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

Re: E-440 и драйвера

А Вы в проекте еще что-нибудь, кроме частоты работы АЦП и кол-ва активных каналов, меняли? А использование прерывания контроллеру USB в Setup компьютера разрешили?
Lgraph без GetModuleName() можно скачать с  ftp.lcard.ru/pub/users/lgraph/ архив lgraph.arj

Николай
29.10.2001 14:09:09
#7

Гость

Re: E-440 и драйвера

Здравствуйте.
1) Использование прерывания контроллеру USB в Setup компьютера разрешил.
2) Менял только частоту дискретизации и число каналов, соответственно заполнял в ControlTable
один первый элемент.
Какие требования к процессору для гарантированного считывания/записи на диск сигналов без пропусков на максимальной частоте дискретизации?

29.10.2001 16:31:45
#8

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

Re: E-440 и драйвера

С похожими проблемами мы столкнулись при работе под Win//'98 (так уж эта операционная система внутренне устроена). Под Win//'2000 все должно работать корректно.

Николай
30.10.2001 11:57:30
#9

Гость

Re: E-440 и драйвера

Мне кажется, что дело не в Windows, т.к. Lgraph
работает без пропусков.
Я использую компилятор Visual C++ 6.0;
Lgraph работает нормально и с "родной" Lusbapi.dll, и со скомпилированной под
Visual C++.
Что я увидел, работая с функцией ReadData:
она возвращает всегда 0 и число прочитанных отсчетов, тоже 0??? Это так надо?
Также я не могу использовать Ваши примеры
Read/WriteData и т.д. так как в драйвере (модуле)
не реализована функция GetModuleName и соответственно они вываливаются с ошибкой.
Повторю свой вопрос: Можно ли получить исходные тексты драйвера модуля? Я сам там сделаю заглушку на эту функцию.

30.10.2001 22:04:22
#10

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

Re: E-440 и драйвера

1. Функции ReadData()/WriteData() в прилагаемых примерах вызываются асинхронно, а потому сами функции могут возвращают 0 и число прочитанных отсчетов тоже может быть 0 (см. хелп на API-ф. ReadFile()/WriteFile() для асинхронного режима).
2. Собственно в драйверах ничего не делается. Все реализовано в DLL. Для Ваших целей можно немного изменить ф. GetModuleName(). Ну что-нибудь типа:
bool WINAPI TLE440::GetModuleName(char *ModuleName)
{
   if(hDevice == INVALID_HANDLE_VALUE) {   LastErrorNumber = 1; return false; }

   strcpy(ModuleName, "E440");
   return true;
}

Евгений Луценко
12.03.2008 21:17:38
#11

Гость

Re: E-440 и драйвера

Не могли бы Вы подсказать как использовать E-440 из программы, написанной на CLIPPER 5.01+TOOLS II (DOS-программа, запускаемая под Windows)? Где взять драйвер, запускаемый как внешняя DOS-программа и дающая данные в текстовый файл?

Был бы очень благодаен за ответ.

13.03.2008 08:20:35
#12

Сотрудник "Л Кард"
Здесь с 17.04.2014
Сообщений: 674

Re: E-440 и драйвера

Вообще-то говоря, DOS программа с USB работать не может. Как вариант, запустить LGraph 2.0, ввести данные и сохранить их в текстовом формате.

13.03.2008 10:06:49
#13

Сотрудник "Л Кард"
Здесь с 23.04.2014
Сообщений: 237

Re: E-440 и драйвера

Вообще-то, есть программки типа USB под DOS, но как это себя поведет с Е-440, да еще не из-под DOS'а, а в досовском окне - работа экспериментальная, и результат, мягко говоря, не очевиден.