Форум ZETLAB

Архив обсуждений, технических вопросов и ответов по оборудованию, программному обеспечению и внедрению измерительных систем.

Страницы: 1
RSS
Каково назначение некоторых команд ZetLab Studio?
 
Здравствуйте! Я хочу использовать в своей программе виртуальные приборы ZetLab (модуль Unit AxInterop.UnitLib.1.0). У меня есть руководство разработчика ZetLab Studio (ЗТМС.00068-01 34), но оно устарело, и я не могу понять назначение некоторых команд, а именно: InitUnit() - что инициалирует и когда используется? UnitParam(int , ...) - возвращает ошибку -62. Что это означает? UnitWrite(int, ...) WriteNet(int, ...) IamActive() IsReady() - что возвращает? IsReadyParam() Может быть у вас есть электронный вариант документации (рук-во разработчика)? На Вашем сайте я его не нашел, поэтому приходится гадать. На данный момент у меня такая загвоздка. Создаю из программы нужные приборы, вручную устанавливаю нужные значения параметров, а затем хочу программно опросить эти значения, чтобы сохранить их и в следующем сеансе установить автоматически. Как получить программно значение параметра прибора? Заранее благодарен. Юрий.
 
Добрый день. О функциях UNIT.ocx.
1. long InitUnit();
Функция, которая в существующей весии Unit.ocx ничего не делает. Оставлена для совместимости со старым ПО. Возвращаемое значение всегда 0.
2. long UnitParam(LONG* param, DOUBLE* value);
Функция UNIT-сервера. Чтение параметра, пришедшего в программу из Unit.ocx. param - номер пришедшего параметра; value - значение пришедшего параметра. Возвращаемое значение: 0 - успешное выполнение; -32 - нет не прочитанных пришедших параметров.
3. long UnitWrite(long size, float * data, long param);
Функция UNIT-сервера. Посылка в Unit.ocx массива данных. size - размер массива; data - указатель на массмв; param - номер параметра. Возвращаемое значение: 0 - успешное выполнение; -2 - ошибка при инициализации Unit.ocx; -12 - нет процесса, принимающего массив; -41 - ошибка при передаче массива; -53 - размер меньше или равен 0; -100 - нулевой указатель массива;
4. long WriteNet(...);
Функция, которая в существующей весии Unit.ocx ничего не делает. Оставлена для совместимости со старым ПО. Возвращаемое значение всегда 0.
5. void IamActive();
Функция, которая в существующей весии Unit.ocx ничего не делает. Оставлена для совместимости со старым ПО.
6. long IsReady();
Функция UNIT-клиента. Функция проверяет наличие новых данных, пришедних от Unit.ocx. Предназначена для разработки UNIT-клиентов в средах разработки, которые не поддерживают работу с оконными сообщениями, например: Borland. Возвращаемое значение: 0 - нет непрочитанных данных; 1 - есть непрочитанные данные.
7. long IsReadyParam();
Функция UNIT-сервера. Функция проверяет наличие новых параметров, пришедних от Unit.ocx. Предназначена для разработки UNIT-серверов в средах разработки, которые не поддерживают работу с оконными сообщениями, например: Borland. Возвращаемое значение: 0 - нет непрочитанных параметров; 1 - есть непрочитанные параметры. При разроботке программ, являющихся UNIT-сервером, в среде Borland для получения параметров следует по таёмеру выполнять следующий код: if (IsReadyParam() == 1) { long param(0); double value(0.); if (UnitParam(&param, &value) == 0) { // Обработка параметра с номером "param" и значением "value" } } С уважением, отдел технической поддержки ООО "ЭТМС"
 
Здравствуйте! Большое спасибо за оперативную и обстоятельную консультацию. Я пытался использовать функцию UnitParam, но постоянно получаю возвращаемое значение -62. Что оно означает? Программа компилируется без ошибок, исполняется без прерываний, но нужного результата пока не могу добиться. Подскажите, в чем может быть дело. С уважением. Юрий.
 
Добрый день, Юрий. К сожалению, в описании функции UnitParam вкралась опечатка. Пункт 2 следует читать в следующей редакции: 2. long UnitParam(LONG* param, DOUBLE* value); Функция UNIT-сервера. Чтение параметра, пришедшего в программу из Unit.ocx. param - номер пришедшего параметра; value - значение пришедшего параметра. Возвращаемое значение: 0 - успешное выполнение; -62 - нет не прочитанных пришедших параметров.. Не -32, а -62. //---------------------------------------------------------------------------------------------------------- Возможные причины того, что функция UnitParam "постоянно возвращает -62": 1. Программа была запущена программой, не являющейся программой UNIT-клиентом. 2. Если программа запущена с помощью UNIT-клиента, то либо этот клиент не посылает программе параметры, либо при посылке параметров происходит какая-то ошибка. //--------------------------------------------------------------------------------------------------------- При разработке программ, являющихся UNIT-сервером, в среде Borland для получения параметров следует по таймеру выполнять следующий код: CUnitCtrl unitServer; .... if (unitServer.IsReadyParam() == 1) { long param(0); double value(0.); if (unitServer.UnitParam(&param, &value) == 0) { // Обработка параметра с номером "param" и значением "value" } } С уважением, отдел технической поддержки ООО "ЭТМС"
Страницы: 1
Читают тему