• Автор
    Тема
  • #75376

    Юрий
    Участник

    Здравствуйте!

    Я хочу использовать в своей программе виртуальные приборы ZetLab (модуль Unit AxInterop.UnitLib.1.0). У меня есть руководство разработчика ZetLab Studio (ЗТМС.00068-01 34), но оно устарело, и я не могу понять назначение некоторых команд, а именно:
    InitUnit() — что инициалирует и когда используется?
    UnitParam(int , …) — возвращает ошибку -62. Что это означает?
    UnitWrite(int, …)
    WriteNet(int, …)
    IamActive()
    IsReady() — что возвращает?
    IsReadyParam()
    Может быть у вас есть электронный вариант документации (рук-во разработчика)? На Вашем сайте я его не нашел, поэтому приходится гадать.
    На данный момент у меня такая загвоздка. Создаю из программы нужные приборы, вручную устанавливаю нужные значения параметров, а затем хочу программно опросить эти значения, чтобы сохранить их и в следующем сеансе установить автоматически. Как получить программно значение параметра прибора?
    Заранее благодарен.
    Юрий.

Просмотр 3 ответов - с 1 по 3 (всего 3)
  • Автор
    Ответы
  • #75377

    Елена Зимина
    Хранитель

    Добрый день.

    О функциях 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»
    }
    }

    С уважением, отдел технической поддержки ООО «ЭТМС»

    #75378

    Юрий
    Участник

    Здравствуйте!
    Большое спасибо за оперативную и обстоятельную консультацию.
    Я пытался использовать функцию UnitParam, но постоянно получаю возвращаемое значение -62. Что оно означает? Программа компилируется без ошибок, исполняется без прерываний, но нужного результата пока не могу добиться. Подскажите, в чем может быть дело.
    С уважением.
    Юрий.

    #75379

    Елена Зимина
    Хранитель

    Добрый день, Юрий.

    К сожалению, в описании функции 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»
    }
    }

    С уважением, отдел технической поддержки ООО «ЭТМС»

Просмотр 3 ответов - с 1 по 3 (всего 3)

Для ответа в этой теме необходимо авторизоваться.

Авторизация
*
*

пятнадцать + 1 =

Регистрация
*
*
*

4 − 2 =

Генерация пароля

восемь + 18 =