struct.h 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. #pragma once
  2. #include "Const.h"
  3. typedef struct __REQUESTWRPARAM
  4. {
  5. BYTE Start; //起始位
  6. BYTE AddrCode[2]; //地址码
  7. BYTE FuncCode[2]; //功能码
  8. BYTE StartAddr[4]; //起始地址
  9. BYTE RequestRegNum[4]; //读取的寄存器个数
  10. BYTE Data[8]; //设置的数据
  11. BYTE Lrc[2]; //校验码位
  12. BYTE End[2]; //结束符
  13. }REQUESTWRPARAM, *pREQUESTWRPARAM;
  14. #pragma pack(push) //保存对齐状态
  15. #pragma pack(1) //设定为1字节对齐
  16. //用于modbus ascii码协议
  17. //------------------------------------------------------------
  18. typedef struct __ASC_STATUS_STRUCT
  19. {
  20. BYTE start; //起始位(都是:号开头)
  21. BYTE AddrCode[2]; //地址码
  22. BYTE FuncCode[2]; //功能码
  23. BYTE RtnByteNum[2]; //返回字节个数
  24. }ASC_STATUS_STRUCT, *pASC_STATUS_STRUCT;
  25. typedef struct __ASC_RESPONSE_STRUCT
  26. {
  27. ASC_STATUS_STRUCT StatusStruct;
  28. char StrRtnMsg[80]; //返回字符串
  29. BYTE lrc[2]; //校验码位
  30. BYTE end[2]; //结束码 0x0d、0x0a(回车、换行符)
  31. }ASC_RESPONSE_STRUCT, *pASC_RESPONSE_STRUCT;
  32. //设置的通讯协议基本参数
  33. //在SUTLZ设备中,SETBASEPARAM结构中的参数解释:
  34. // int nAddr - 控制器ID
  35. // int nStartAddr - 如果命令ID为4,表示需读的EEPROM地址;其他的读命令ID,表示变量所在数据包中字节索引号
  36. // int nRegNum - 读取的寄存器个数, 在stulz空调协议中,它表示是数据和校验位的字节数
  37. // BYTE FuncCode - 命令ID
  38. typedef struct __SETBASEPARAM
  39. {
  40. int nAddr;//地址码
  41. int nStartAddr;//起始地址
  42. int nRegNum;//读取的寄存器个数
  43. BYTE FuncCode;//功能码
  44. }SETBASEPARAM, *pSETBASEPARAM;
  45. //包含设备的端口、波特率
  46. typedef struct __COMMDEVBASE
  47. {
  48. SETBASEPARAM SetBasePara;
  49. int iPort;
  50. int iBaudRate;
  51. int iDataBit;
  52. int iStopBit;
  53. int iParity;
  54. int iInterval;
  55. }COMMDEVBASE, *pCOMMDEVBASE;
  56. typedef struct _READDEVREALDATA
  57. {
  58. COMMDEVBASE CommDevBase;//设备基本参数
  59. char chDevName[MAX_EQUIP_DESC];//设备名称
  60. char chVarName[MAX_EQUIP_DESC];//变量名称
  61. char chDevUid[20];//设备UID
  62. int iVarID;//变量ID
  63. double dbData;//变量值
  64. int iUpperlimit;//变量的上限
  65. int iLowerlimit;//变量的下限
  66. int iNormalstate;//变量的正常状态
  67. int iStatus;//状态值
  68. DWORD dwTick;//采集频率
  69. BOOL bIsSave;//是否保存
  70. char chIp[30];//IP地址
  71. int iIpport;//ip端口
  72. // for Jesse 091108
  73. int iIdentifyTime; //辨别时间(单位:秒),一个报警状态持继IdentifyTime才触发报警,只针对第一次报警进行判断
  74. int iReDetectTime; //重新检测等待时间(单位:分钟),一个报警确认之后就开始进入重新等待时间,如果过了重新等待时间,报警还是存在,继续提醒
  75. int iNormalIsNotice; //恢复正常是否触发远程报警
  76. int iWarnLevel; //报警级别
  77. char chSnmpOid[MAX_OBJ_OID];
  78. char chSnmpField[MAX_NAME_LENGTH];
  79. char chVarDesc[MAX_EQUIP_DESC]; // 变量描述,组织报警内容时用到,原因变量名称用中文,脚本解析不了。所以用变量描述来组织报警内容
  80. int iMaxValue; //最大值
  81. int iMinValue; //最小值
  82. int iMaxScale; //最大转换比例
  83. int iMinScale; //最小转换比例
  84. }READDEVREALDATA, *pReadDevRealData;
  85. //网络设备的端口,IP
  86. typedef struct __NETDEVBASE
  87. {
  88. char chIp[30];//IP地址
  89. int iIpport;//ip端口
  90. }NETDEVBASE, *pNETDEVBASE;
  91. #pragma pack(pop) //恢复对齐状态