|
|
E20-10: консультация программиста
Здравствуйте!
Мы пишем собственное ПО под DELPHI/WinXP используя модуль Е20-10 (ревизия В)
Можно ли приехать в Ваш офис для консультации у программистов по модулю Е20-10 ?
Нужна ли персональная предварительная договоренность ?
Заранее спасибо
|
|
- Сотрудник "Л Кард"
- Откуда: Москва
- Здесь с 23.04.2014
- Сообщений: 3,727
|
Re: E20-10: консультация программиста
позвоните предвариительно. а так почти в любое рабочее время. только уточните с какой библиотекой работает lcomp или lusbapi. Это разные программисты...
|
|
|
Re: E20-10: консультация программиста
Отлично!
Мы работаем с LUSBAPI
И конечно предварительно позвоним
Спасибо
|
|
- Сотрудник "Л Кард"
- Здесь с 24.04.2014
- Сообщений: 1,495
|
Re: E20-10: консультация программиста
А какие трудности возникли при работе с библиотекой Lusbapi?
|
|
|
Re: E20-10: консультация программиста
Не сказал бы - ТРУДНОСТИ... Скорее - уточнения.
Например:
1) Если вызываю функцию ReadData, то как отличить случаи:
- тайм-аут
от
- ИНОЙ/РЕАЛЬНОЙ ошибки чтения
2) Можно ли задать БЕСКОНЕЧНОЕ ожидание внешнего сигнала старта АЦП (без тайм-аута) ?
3) Еще вопрос: а можно ли работать с блоком Е20-10 НЕ из потоков (синхронных/асинхронных) ?
Хорошо бы пример такой работы (чтение)
Если я непонятно сформулировал вопросы - уточните
Заранее спасибо
|
|
- Сотрудник "Л Кард"
- Здесь с 24.04.2014
- Сообщений: 1,495
|
Re: E20-10: консультация программиста
1. Тайм-аут используется совместно с WinAPI функциями типа WaitForSingleObject() и предназначен для задания временных рамок ожидания выполнения запроса. Проверить были ли ошибки (например, переполнение внутреннего буфера модуля) в процессе сбора данных можно с помощью функции GET_DATA_STATE().
2. Так в модуле и нет никаких тайм-аутов на ожидание внешнего сигнала старта. Модуль не начинает сбор данных до тех пор, пока не придет внешний синхросигнал.
3. Не совсем понятно, что означает "можно ли работать с блоком Е20-10 НЕ из потоков".
|
|
|
Re: E20-10: консультация программиста
Спасибо за разъяснения!
С 1) - вроде понятно.
По 2): перед вызовом функции ReadData я заполняю параметры вызова, где есть параметр TimeOut. Что тогда он означает ? АЦП стартован (Start_ADC), затем я читаю с него данные. Как можно понять (программно), что АЦП уже был запущен ВНЕШНИМ сигналом старта и уже подготовил данные ? Т.е что я не раньше времени вызову ф-ю ReadData ?
Ну а 3) - вроде сам понял, "туплю" (:-))
Очень жду Ваших пояснений!
Еще раз спасибо за ответы и оперативность!
|
|
- Сотрудник "Л Кард"
- Здесь с 24.04.2014
- Сообщений: 1,495
|
Re: E20-10: консультация программиста
1. Согласно руководству программиста, поле TimeOut используется только в синхронном режиме (см. п.4.5.6 //'Получение данных АЦП//'). И опять же TimeOut предназначен для задания временных рамок ожидания выполнения запроса.
2. В асинхронном режиме функция ReadData() всего лишь поручает системе (ядру Windows) истребовать из модуля заданное кол-во данных. И этот запрос будет активным до тех пор, пока модуль не отдаст ВСЕ затребованные данные. А вот отслеживать завершенность запроса можно с помощью различных WinAPI функий: WaitForSingleObject, GetOverlappedResult, HasOverlappedIoCompleted и т.д. Как написано в руководстве программиста, функция ReadData() вполне можно вызывать заранее, т.е. до START_ADC().
Ваш алгоритм, схематично, можно представить так: а. предварительный асинхронный запрос ReadData();
б. запуск АЦП START_ADC();
в. периодическая проверка завершения запроса. Соответственно запрос завершится как только придет внешний синхросигнал и модуль передаст в РС затребованное кол-во данных.
|
|
|
Re: E20-10: консультация программиста
Спасибо!
Вроде как разобрался...
Попробую все воплотить/проверить в кодах !
Еще раз - СПАСИБО ! Толковый, внятный, оперативный форум (самосвал камней в огороды других АЦП-шных компаний).
Теперь наверное можно обойтись и без личного визита (:-))
|