НПО Тепловизор - теплосчётчики и расходомеры


HydraLink DLL
Обновление: 09.09.2008

Библиотека HydraLink.dll реализует функции удалённого доступа к данным теплосчётчиков и водосчётчиков ВИС.Т-ТС/ВС с использованием RS- или TCP-соединений. Кроме самой библиотеки в архиве содержатся .LIB и .H файлы, позволяющие использовать библиотеку в самостоятельно разрабатываемых приложениях на Visual C/C++ (или на других языках программирования), получающих данные с теплосчётчиков ВИС.Т, а также документация и программные примеры работы с библиотекой. На основе этой библиотеки раработан OPC-сервер HcDa, доступный на нашем сайте в виде самостоятельного программного продукта.

Основные возможности :

  • Поддержка приборов с протоколом удалённого доступа HydraLink и Modbus
  • Получение спецификаций и настроек прибора
  • Получение значений текущих измеряемых параметров
  • Получение значений счётчиков (накопителей) нарастающего итога
  • Получение данных из архива
  • Возможность синхронизации времени встроенных часов прибора и компьютера

Вот небольшой пример кода на языке C++, использующего экспортируемые DLL функции:

#include "hydralink.h"

  HL_CONNECT connect;
  HL_REQUEST request;
  void* result;

  connect.commdev = 0;        // Тип коммуникаций (COM-порт)
  connect.port = 1;                   // COM1
  connect.baud = 19200;       // 19200 бод
  connect.netno = 14;             // Сетевой номер прибора (14)

  request.cmask = HL_CONTOUR_1;                 // Виртуальный прибор(ы), данные которого запрашиваем (первый)
  request.infokind = HL_INFOKIND_CURRENT; // Получить значения текущих параметров (расходы, температуры, давления...)

  int error = HLINK_Read(&connect, &request, result); // Данные принимаются с прибора

  if(error) // Если ошибка получения данных
  {
     AfxMessageBox((CHAR*)result); //
Проиндицировать сообщение об ошибке (расшифровка)
  }
  else //
Данные успешно считаны с прибора
  {
    HL_CURRENT_VALUES cvs;

    HLINK_UnpackCurrent(&cvs, 0, result); // Распаковать принятые данные в структуру типа HL_CURRENT_VALUES

    if(cvs.t[0].type) // Если прибор измеряет температуру в прямом канале (T1), тоесть оборудован соотв. датчиком
    {
      if(cvs.t[0].e == 0) //
Если значение температуры достоверно (нет ошибок измерения)
      {
         CString str;  str.Format("Температура T1 = "%.*lf [град]", cvs.t[0].pnt, cvs.t[0].dbl);

        AfxMessageBox(str);  // Проиндицировать значение температуры
      }
      else //
Значение температуры недостоверно (есть ошибки измерения)
      {
        CHAR s[256];

        HLINK_DescribeErrors( cvs.t[0].e, ", ", s, sizeof(s) ); // Расшифровать код ошибки (получить текстовое описание)

        AfxMessageBox(s); // Проиндицировать сообщение об ошибке
      }
    }
    else AfxMessageBox("Прибор не измеряет температуру T1");

  }

  HLINK_Clear(result);

 Как видите, это просто!




Продукт НПО Тепловизор 23
http://www.teplovizor.ru

URL для этого продукта:
http://www.teplovizor.ru/products/index.php?op=viewarticle&artid=26