ups_newave.h 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222
  1. /*************************************************
  2. /* Copyright (C), 2010-2011,StoneU. Co., Ltd.
  3. /* File name: ups_newave.h
  4. /* Author: Zero.t
  5. /* Version: Ver1.0.0.1
  6. /* Date: 2011-8-30
  7. /* Description: Conceptpower系列UPS,具体型号未知;本类首次使用在项目::K客户现场文件\b北京\M美思装饰\大众汽车金融;
  8. /* Others: UPS协议类,不做控制设备操作;
  9. /* Function List: ###
  10. /* History:
  11. 1.Date: ###
  12. Author: ###
  13. Modification: ###
  14. *************************************************/
  15. #ifndef _UPS_NEWAVE_H
  16. #define _UPS_NEWAVE_H
  17. #pragma once
  18. #include "CommInterface.h"
  19. class Cups_newave:public CCommInterface
  20. {
  21. #define NEWAVE_DEBUG 1
  22. enum __ERRO_CODE_UPSSANTAK
  23. {
  24. ERR_CODE_NEWAVE_COM_FAULT = 50201 , //设备串口通信故障
  25. ERR_CODE_NEWAVE_COM_BUSY , //设备串口通信忙
  26. ERR_CODE_NEWAVE_COM_READ_NO_DATA , //设备没有读到数据
  27. ERR_CODE_NEWAVE_COM_READ_LEN_OVER , //设备读到数据长度超时限制
  28. ERR_CODE_NEWAVE_COM_LRC_LOST , //设备lrc校验失败
  29. EER_CODE_NEWAVE_COM_WRITE_DATA , //设备写串口错误
  30. EER_CODE_NEWAVE_COM_REGNUM , //设备寄存器数
  31. ERR_CODE_NEWAVE_COM_VARLEN , //设备变量长度非法
  32. ERR_CODE_NEWAVE_COM_INVALIDRES , //设备无效应答
  33. };
  34. // 请求设备回应;
  35. typedef struct __QUERY_MSG
  36. {
  37. BYTE msg_head; // 头:"<";
  38. BYTE msg_addr[2]; // 地址;
  39. BYTE msg_type; // 类型:Q;
  40. BYTE msg_length[3]; // 长度;
  41. BYTE msg_check[4]; // 校验;
  42. }__QueryMsg,*__pQueryMsg;
  43. // 回应Q请求命令;
  44. typedef struct __RESPONE_QUERY
  45. {
  46. BYTE msg_head;
  47. BYTE msg_addr[2];
  48. BYTE msg_record;
  49. }__ResponeQuery,*__pResponeQuery;
  50. // 请求设备数据;
  51. typedef struct __GET_MSG
  52. {
  53. BYTE msg_head; // 头:"<";
  54. BYTE msg_addr[2]; // 地址;
  55. BYTE msg_type; // 类型:G;
  56. BYTE msg_length[3]; // 长度;
  57. BYTE msg_record[4]; // 数据;
  58. BYTE msg_check[4]; // 校验;
  59. }__GetMsg,*__pGetMsg;
  60. public:
  61. Cups_newave(
  62. char szPath[MAX_PATH], // 程序所在路径
  63. char szIniName[MAX_PATH], // 配置文件名称
  64. int nCommPort, // 串行端口
  65. int nAddr, // 设备地址
  66. int nRate, // 波特率
  67. int nDataBit, // 数据位
  68. int nStopBit, // 停止位
  69. int nParity, // 校验位
  70. int nInterval // 时间间隔
  71. );
  72. virtual ~Cups_newave(void);
  73. private:
  74. int m_address;
  75. BOOL m_dwOnlineTick;
  76. BOOL m_devOnline;
  77. HANDLE m_hSemComm;
  78. CRITICAL_SECTION m_csReadMsg;
  79. char m_szAlarmMsg[MAX_RECE_MSG]; // XID:0645;
  80. char m_szStatuMsg[MAX_RECE_MSG]; // XID:3017;
  81. char m_szValueMsg[MAX_RECE_MSG]; // XID:3024;
  82. public:
  83. int GetParamFromIni(
  84. char szPath[MAX_PATH], //服务器程序所在目录
  85. char szIniName[MAX_PATH], //配置文件名
  86. char szCmd[MAX_CMD], //命令
  87. char szSanTakSendMsg[MAX_CMD], //发送Buffer
  88. char nType[MAX_CMD],
  89. int &nIndex,
  90. int &nLen,
  91. int &StaBit,
  92. int &EndBit
  93. );
  94. BOOL upsAveOpenComm(int nCommPort, int nAddr, int nRate, int nDataBit, int nStopBit, int nParity, int nInterval);
  95. int SendReadRequest(
  96. char szPath[MAX_PATH], // 程序所在路径
  97. char szIniName[MAX_PATH], // 配置文件名称
  98. int nCommPort, // 串行端口
  99. int nAddr, // 设备地址
  100. char szCmd[MAX_CMD], // 请求命令
  101. char szMsg[VAR_MSG], // 响应的值
  102. int nReversed1, // 预留整形参数1接口
  103. int nReversed2, // 预留整形参数2接口
  104. int nReversed3, // 预留整形参数3接口
  105. int nReversed4, // 预留整形参数4接口
  106. int nReversed5, // 预留整形参数5接口
  107. float fReversed1, // 预留float参数1接口
  108. float fReversed2, // 预留float参数2接口
  109. float fReversed3, // 预留float参数3接口
  110. char szReversed1[MAX_RESERVED1], // 预留字符数组参数1接口
  111. char szReversed2[MAX_RESERVED2], // 预留字符数组参数2接口
  112. char szReversed3[MAX_RESERVED3], // 预留字符数组参数3接口
  113. char szReversed4[MAX_RESERVED4], // 预留字符数组参数4接口
  114. char szReversed5[MAX_RESERVED5] // 预留字符数组参数5接口
  115. );
  116. // 发送设置设备参数请求
  117. int SendSetReuest(
  118. char szPath[MAX_PATH], // 程序所在路径
  119. char szIniName[MAX_PATH], // 配置文件名称
  120. int nCommPort, // 串行端口
  121. int nAddr, // 设备地址
  122. char szCmd[MAX_CMD], // 请求命令
  123. char szMsg[VAR_MSG], // 响应的值
  124. int nReversed1, // 预留整形参数1接口
  125. int nReversed2, // 预留整形参数2接口
  126. int nReversed3, // 预留整形参数3接口
  127. int nReversed4, // 预留整形参数4接口
  128. int nReversed5, // 预留整形参数5接口
  129. float fReversed1, // 预留float参数1接口
  130. float fReversed2, // 预留float参数2接口
  131. float fReversed3, // 预留float参数3接口
  132. char szReversed1[MAX_RESERVED1], // 预留字符数组参数1接口
  133. char szReversed2[MAX_RESERVED2], // 预留字符数组参数2接口
  134. char szReversed3[MAX_RESERVED3], // 预留字符数组参数3接口
  135. char szReversed4[MAX_RESERVED4], // 预留字符数组参数4接口
  136. char szReversed5[MAX_RESERVED5] // 预留字符数组参数5接口
  137. );
  138. protected:
  139. int GetDeviceParam(
  140. int nAddr,
  141. CCommProcess *pComm, // 串口对象指针
  142. char szSendCmd[MAX_SEND_MSG], // 发送Buffer
  143. char szCmd[MAX_CMD], // 命令
  144. char szMsg[VAR_MSG], // 接收Buffer
  145. int &nIndex, // 变量索引,针对接收Buffer而言
  146. int &nLen, // 变量长度
  147. char szType[CMD_TYPE]
  148. );
  149. int SendQueryMsg(
  150. CCommProcess *pComm,
  151. int nAddr);
  152. int QueryResponeMsg(
  153. CCommProcess *pComm,
  154. int nAddr);
  155. int RequestStatus(
  156. int nAddr,
  157. CCommProcess *pComm, //串口对象指针
  158. const char chSendMsg[MAX_SEND_MSG] //发送Buffer
  159. );
  160. int ResponseStatus(
  161. int nAddr,
  162. CCommProcess *pComm, // 串口对象指针
  163. char szCmd[MAX_CMD], // 命令
  164. char szMsg[VAR_MSG], // 接收Buffer
  165. int &nIndex, // 变量索引,针对接收Buffer而言
  166. int &nLen, // 变量长度
  167. char szType[CMD_TYPE] // 变量数据类型
  168. );
  169. int GetAlarmMsg(
  170. char szCmd[MAX_CMD],
  171. char szRecMsg[VAR_MSG],
  172. int &nIndex,
  173. int &nLen,
  174. int &StaBit,
  175. int &EndBit,
  176. char szTp[CMD_TYPE]);
  177. int GetStatuMsg(
  178. char szCmd[MAX_CMD],
  179. char szRecMsg[VAR_MSG],
  180. int &nIndex,
  181. int &nLen,
  182. int &StaBit,
  183. int &EndBit,
  184. char szTp[CMD_TYPE]);
  185. int GetValueMsg(
  186. char szCmd[MAX_CMD],
  187. char szRecMsg[VAR_MSG],
  188. int &nIndex,
  189. int &nLen,
  190. char szTp[CMD_TYPE]);
  191. void SetAlarmMsg(char szCmd[MAX_CMD], char *pBuffer);
  192. void SetStatuMsg(char szCmd[MAX_CMD], char *pBuffer);
  193. void SetValueMsg(char szCmd[MAX_CMD], char *pBuffer);
  194. void SimulationCommData();
  195. // 处理bit数据;
  196. void DataProcess(const char *szSour, char *szDest,int &StaBit, int &EndBit);
  197. void BitDataProcess(const char *szSour, char *szRecv, int &iSourLen, int &StaBit);
  198. };
  199. #endif