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

Форум

Вы не вошли.

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

#1 Re: Техническая поддержка » Не корректность работы драйверов для платы L-783M » 26.10.2016 20:45:11

Так, по пунктам.
1. То, что драйвер у вас один, мы уже поняли. И то, что работает он корректно только в х32 тоже поняли.
2. WinXP, как не сложно догадаться, работает на старых машинах. 8-10 лет им уже, поэтому Ваши отговорки по поводу "медленный компьютер" и "не поддерживает DMA" не проходят. На одном физическом ПК с разными ОС (XP и 7) разные результаты.
3. В версии Win7 x86 драйвер работает, хуже, чем в WinXP, но работает. Максимальная частота сбора снижается с 2,5 до 2 Мгц, но сбоев нет.
4. Суть проблемы остается - все ПО, которое мы нашли, включая Ваши LGraph'ы при установке нескольких каналов на частотах выше 600 кГц суммарно на все каналы НЕ РАБОТАЕТ. Происходит потеря данных.
Воспроизвести - легко. Запускаете свое ПО на компьютере с архитектурой x86-64 и соответствующей ОС, выставляете 16 каналов в дифференциальном режиме, включаете общую частоту 1500 кГц (будет выставлена 1533 или около того), подаете на вход синусоиды с генератора и наблюдаете полный хаос вместо данных. Причем, это прокатывает даже на 4 каналах в LGraph.
У Вас есть, что сказать по этому поводу?
P.S. Сменить железо, ОС или Ваши модули на более современные возможности нет, т.к. многие решения прописаны в ТУ.
P.P.S. Сбор с высокой частотой, но с большим межкадровым интервалом или сбор в режиме покадровой синхронизации работает нормально.

#2 Re: Техническая поддержка » Не корректность работы драйверов для платы L-783M » 23.10.2016 12:43:40

Доброго времени суток.
Включите, пожалуйста, 16 каналов, подайте на них разные сигналы. Задайте частоту сбора порядка 100-150 кГц на канал.
На каких драйверах это работает? На нашем стенде сбои идут уверенно и четко, как по расписанию. Используем разные программы, в том числе и Ваши LGraph.
Отвечая на Ваши вопросы:
1. Установлены.
2. На ВСЕХ, на которых мы пробовали.
3. И LGraph1 и LGraph2 (кстати, как там завести больше одного канала?), но даже не одном канале были пробои.
Повторяя вопросы:
1. Драйвер для Win10 x86-64 у вас имеется и подписан? Он готов к промышленному использованию?
2. Что на счет драйвера под Linux? Какие архитектуры поддерживает? Какую версию ядра требует? Нужна-ли дополнительная настройка ядра?
Вновь возникшие вопросы:
1. Вы проверили работу под Win7? Именно под Win7? Или нам теперь везде "десятку" ставить?
2. Предоставьте, пожалуйста, исходные коды программ, которыми Вы регистрировали сигнал. Если, конечно, вы не использовали свои демонстрационные программы, в 100 строк на C++ и консоль. От них толку ноль на практике.

#3 Re: Техническая поддержка » Переход с Windows XP на Windows7 x64 » 20.10.2016 20:13:10

Доброго времени суток.
У нас очень похожая проблема. Ответ очень простой - драйвера LCard не работают под ОС Windows7. Максимальная частота сбора с использованием lusbapi - порядка 100 кГц на все каналы. Для плат L7хх - порядка 300 кГц.
Простое решение - не переходите с WinXP.
Но сотрудник LCard пообещал мне, что они работают над этой проблемой. smile

#4 Re: Техническая поддержка » Многопоточная работа » 12.07.2016 21:28:39

Да, конечно, L-783M
Пример кода выслать не могу. Суть - один поток вызывает StartLDevice и завершается. Второй поток вызывает StopLDevice и получаем BSOD.
Задачу мы, конечно, решили, вынеся все работу с платой в отдельный поток и наладив вменяемое межпоточное взаимодействие, но проблема, тем не менее, осталась.
Забыл уточнить - BSOD ловим только если поток, который вызвал StartLDevice завершился. Если нет - все хорошо. Драйвер, что, указывает из ядра на память стека процесса в User-space?

#5 Техническая поддержка » Многопоточная работа » 10.07.2016 20:53:15

Алексей из Тулы
Ответов: 4

Доброго времени суток.
Работа с платой L783, ОС Win7, MS VisualStudio 2010 (C++), драйвер свежий.
Обнаружена странная (и страшная) проблема - последовательный вызов методов StartLDevice и StopLDevice из разных программных потоков (Thread) гарантированно приводит к BSOD (синий экран смерти) с ошибкой в драйвере от LCard.
Кстати, к BSOD также приводит попытка пошаговой отладки приложения после вызова StartLDevice, но не всегда.
Так было задумано?

#6 Re: Техническая поддержка » Особенности E14-440 » 11.04.2016 20:28:40

А вот с этого момента поподробнее. По ТЗ синхроимпульс идет с маховика (ручка, вращаемая оператором). Это может влиять на результат?
И еще - по тому-же самому ТЗ управляющий сигнал идет на TTL и один из каналов АЦП (зачем так сделали, не знаю, этот сигнал все равно нигде не фигурирует).
Про таблицу каналов в Ваших программах не скажу, надо будет проконтролировать.
Спасибо.

#7 Re: Техническая поддержка » Особенности E14-440 » 09.04.2016 13:00:11

Доброго времени суток.
Код написан как раз на основе консольного примера. При этом проблема воспроизводится на трех модулях различных ревизий (D, E и F). В процессе отладки удалось выяснить, что:
1. Мусор в таблице каналов на прием данных, судя по всему, влияния не оказывает. Похоже, что драйвер использует ее только на чтение.
2. Проблема с покадровой синхронизацией срабатывает при двух условиях: первый импульс был получен штатным путем (потом кабель можно отъсоединять) и, что является определяющим, код соответствует  Вашему примеру - два буфера, циклическое отложенное (overlapped) чтение. Если использовать упрощенный код, при котором используется один буфер с отложенным чтением (бесконечный цикл, пока буфер не заполнится), то сбор данных проходит "на ура", вообще без каких-либо проблем.
Сложность в том, что, по условию ТЗ, я должен считать импульсы синхронизации в ручном режиме, отображая прогресс пользователю. Я знаю их изначальное количество, поэтому могу выделить буфер ровно под нужное количество отсчетов (их порядка 300-400), но вот прогресс в таком режиме я отображать не могу. При попытке многократно использовать один маленький буфер размером 0x80 слов (8 каналов, 16 отсчетов, грубый прогресс лучше, чем никакого) начинается неконтролируемый прием "синхроимпульса", даже если оборудование физически отключить от модуля АЦП.
Используемый мною код отличается от приведенного в примерах только размером буфера и количеством каналов. Ну и еще условием выхода из цикла (в примере счетчик в цикле for, у меня достижение определенного количества импульсов в while smile ).
Может быть у Вас имеется более актуальный пример кода (C++ Builder 2010 + lusbapi 3.4)?
Заранее спасибо за ответ.

#8 Re: Техническая поддержка » Особенности E14-440 » 05.04.2016 20:45:22

1. Функция завершается успешно. Все остальные параметры, кроме таблицы каналов, правильные, включая те, которые расчитываются на основе других (межкадровая задержка на основе частоты, например).
2. Серийный номер не помню, ревизия платы "Е".
3. Lusbapi версии 3.4

#9 Техническая поддержка » Особенности E14-440 » 04.04.2016 20:42:34

Алексей из Тулы
Ответов: 9

Доброго времени суток.
В процессе работы с модулем E14-440 через lusbapi были обнаружены следующие особенности:
1. Если после вызова метода ADC_START() вызвать метод _GET_ADC_PARAMS(), то таблица каналов будет заполнена "мусором", т.е. случайными значениями. Нормально ли такое поведение и можно ли вообще вызывать GET_ADC_PARAMS после вызова ADC_START() до ADC_STOP()?
2. При определенных условиях запись в режиме покадровой синхронизации начинает работать аналогично синхронизации старта - запись начинает производиться непрерывно, вне зависимости от поступления синхроимпульса на вход модуля. Собственно, условие синхронизации "выполняется" (не знаю, как по другому сказать) даже на модуле, который никуда не подключен вообще. В чем может быть дело, в какую сторону рыть?
Заранее спасибо за ответы.

#10 Re: Техническая поддержка » Покадровая синхронизация » 22.12.2015 16:17:49

Проблема решена.
1. Скачал свежую версию библиотеки lusbapi.dll 3.4 вместо 3.2;
2. Задал размер буфера AdcFifoLength равным размеру буфера, которым оперирует ReadData. Равным, а не кратным.

#11 Re: Техническая поддержка » Покадровая синхронизация » 18.12.2015 23:05:56

1. Естественно, сама функция возвращает управление сразу. 24 секунды ждет WaitForSingleObject. Я, наверное, не очень точно изложил основную мысль.
2. Частота сбора влияния на результат не оказывает. Выставлял от 100 до 400 кГц - результат тот-же.
3. Все верно.

#12 Re: Техническая поддержка » Покадровая синхронизация » 17.12.2015 21:43:43

Вы правильно понимаете.
Версия библиотеки 3.2. Ошибок никаких нет. Мы просто очень долго ждем. Ждем именно первый кадр. Все последующие кадры идут без задержки.

Контакты

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

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

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

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