#pragma once #include "Const.h" typedef struct __REQUESTWRPARAM { BYTE Start; //起始位 BYTE AddrCode[2]; //地址码 BYTE FuncCode[2]; //功能码 BYTE StartAddr[4]; //起始地址 BYTE RequestRegNum[4]; //读取的寄存器个数 BYTE Data[8]; //设置的数据 BYTE Lrc[2]; //校验码位 BYTE End[2]; //结束符 }REQUESTWRPARAM, *pREQUESTWRPARAM; #pragma pack(push) //保存对齐状态 #pragma pack(1) //设定为1字节对齐 //用于modbus ascii码协议 //------------------------------------------------------------ typedef struct __ASC_STATUS_STRUCT { BYTE start; //起始位(都是:号开头) BYTE AddrCode[2]; //地址码 BYTE FuncCode[2]; //功能码 BYTE RtnByteNum[2]; //返回字节个数 }ASC_STATUS_STRUCT, *pASC_STATUS_STRUCT; typedef struct __ASC_RESPONSE_STRUCT { ASC_STATUS_STRUCT StatusStruct; char StrRtnMsg[80]; //返回字符串 BYTE lrc[2]; //校验码位 BYTE end[2]; //结束码 0x0d、0x0a(回车、换行符) }ASC_RESPONSE_STRUCT, *pASC_RESPONSE_STRUCT; //设置的通讯协议基本参数 //在SUTLZ设备中,SETBASEPARAM结构中的参数解释: // int nAddr - 控制器ID // int nStartAddr - 如果命令ID为4,表示需读的EEPROM地址;其他的读命令ID,表示变量所在数据包中字节索引号 // int nRegNum - 读取的寄存器个数, 在stulz空调协议中,它表示是数据和校验位的字节数 // BYTE FuncCode - 命令ID typedef struct __SETBASEPARAM { int nAddr;//地址码 int nStartAddr;//起始地址 int nRegNum;//读取的寄存器个数 BYTE FuncCode;//功能码 }SETBASEPARAM, *pSETBASEPARAM; //包含设备的端口、波特率 typedef struct __COMMDEVBASE { SETBASEPARAM SetBasePara; int iPort; int iBaudRate; int iDataBit; int iStopBit; int iParity; int iInterval; }COMMDEVBASE, *pCOMMDEVBASE; typedef struct _READDEVREALDATA { COMMDEVBASE CommDevBase;//设备基本参数 char chDevName[MAX_EQUIP_DESC];//设备名称 char chVarName[MAX_EQUIP_DESC];//变量名称 char chDevUid[20];//设备UID int iVarID;//变量ID double dbData;//变量值 int iUpperlimit;//变量的上限 int iLowerlimit;//变量的下限 int iNormalstate;//变量的正常状态 int iStatus;//状态值 DWORD dwTick;//采集频率 BOOL bIsSave;//是否保存 char chIp[30];//IP地址 int iIpport;//ip端口 // for Jesse 091108 int iIdentifyTime; //辨别时间(单位:秒),一个报警状态持继IdentifyTime才触发报警,只针对第一次报警进行判断 int iReDetectTime; //重新检测等待时间(单位:分钟),一个报警确认之后就开始进入重新等待时间,如果过了重新等待时间,报警还是存在,继续提醒 int iNormalIsNotice; //恢复正常是否触发远程报警 int iWarnLevel; //报警级别 char chSnmpOid[MAX_OBJ_OID]; char chSnmpField[MAX_NAME_LENGTH]; char chVarDesc[MAX_EQUIP_DESC]; // 变量描述,组织报警内容时用到,原因变量名称用中文,脚本解析不了。所以用变量描述来组织报警内容 int iMaxValue; //最大值 int iMinValue; //最小值 int iMaxScale; //最大转换比例 int iMinScale; //最小转换比例 }READDEVREALDATA, *pReadDevRealData; //网络设备的端口,IP typedef struct __NETDEVBASE { char chIp[30];//IP地址 int iIpport;//ip端口 }NETDEVBASE, *pNETDEVBASE; #pragma pack(pop) //恢复对齐状态