#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);
|