Bagkee.h 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208
  1. /*************************************************
  2. /* Copyright (C), 2010-2011,StoneU. Co., Ltd.
  3. /* File name: Bagkee.h
  4. /* Author: Zero.t
  5. /* Version: Ver1.0.0.1
  6. /* Date: 2011-8-18
  7. /* Description: 柏克B系列UPS,具体型号未知;本类首次使用在项目广东 顺德锦丽;
  8. /* Others: UPS协议类,不做控制设备操作;
  9. /* Function List: ###
  10. /* History:
  11. 1.Date: ###
  12. Author: ###
  13. Modification: ###
  14. *************************************************/
  15. #ifndef UPS_BAGKEE_H
  16. #define UPS_BAGKEE_H
  17. #pragma once
  18. #include "CommInterface.h"
  19. class CBagkee:public CCommInterface
  20. {
  21. public:
  22. #define UPS_SANTAK_SEND_MSG 32
  23. //#define CMD_TYPE 10
  24. #define UPS_DEBUG 1
  25. #define RECEV_MAX_BUF 256
  26. enum __ERRO_CODE_UPSSANTAK
  27. {
  28. ERR_CODE_BAGKEE_COM_FAULT = 50201 , //设备串口通信故障
  29. ERR_CODE_BAGKEE_COM_BUSY , //设备串口通信忙
  30. ERR_CODE_BAGKEE_COM_READ_NO_DATA , //设备没有读到数据
  31. ERR_CODE_BAGKEE_COM_READ_LEN_OVER , //设备读到数据长度超时限制
  32. ERR_CODE_BAGKEE_COM_LRC_LOST , //设备lrc校验失败
  33. EER_CODE_BAGKEE_COM_WRITE_DATA , //设备写串口错误
  34. EER_CODE_BAGKEE_COM_REGNUM , //设备寄存器数
  35. ERR_CODE_BAGKEE_COM_VARLEN , //设备变量长度非法
  36. ERR_CODE_BAGKEE_COM_INVALIDRES , //设备无效应答
  37. };
  38. // 设备请求数据;
  39. typedef struct __REQUEST_STRUCT
  40. {
  41. BYTE chkSum[2];
  42. BYTE End;
  43. }REQUEST_STRUCT,*PREQUEST_STRUCT;
  44. // 设备响应数据(不带地址码);
  45. typedef struct __RESPONSE_STRUCT
  46. {
  47. BYTE Start;
  48. BYTE szContent[RECEV_MAX_BUF];
  49. BYTE End;
  50. }RESPONSE_STRUCT,*PRESPONSE_STRUCT;
  51. public:
  52. CBagkee(
  53. char szPath[MAX_PATH], // 程序所在路径
  54. char szIniName[MAX_PATH], // 配置文件名称
  55. int nCommPort, // 串行端口
  56. int nAddr, // 设备地址
  57. int nRate, // 波特率
  58. int nDataBit, // 数据位
  59. int nStopBit, // 停止位
  60. int nParity, // 校验位
  61. int nInterval // 时间间隔
  62. );
  63. virtual ~CBagkee(void);
  64. BOOL BagkeeOpenComm(int nCommPort, int nAddr, int nRate, int nDataBit, int nStopBit, int nParity, int nInterval);
  65. int SendReadRequest(
  66. char szPath[MAX_PATH], // 程序所在路径
  67. char szIniName[MAX_PATH], // 配置文件名称
  68. int nCommPort, // 串行端口
  69. int nAddr, // 设备地址
  70. char szCmd[MAX_CMD], // 请求命令
  71. char szMsg[VAR_MSG], // 响应的值
  72. int nReversed1, // 预留整形参数1接口
  73. int nReversed2, // 预留整形参数2接口
  74. int nReversed3, // 预留整形参数3接口
  75. int nReversed4, // 预留整形参数4接口
  76. int nReversed5, // 预留整形参数5接口
  77. float fReversed1, // 预留float参数1接口
  78. float fReversed2, // 预留float参数2接口
  79. float fReversed3, // 预留float参数3接口
  80. char szReversed1[MAX_RESERVED1], // 预留字符数组参数1接口
  81. char szReversed2[MAX_RESERVED2], // 预留字符数组参数2接口
  82. char szReversed3[MAX_RESERVED3], // 预留字符数组参数3接口
  83. char szReversed4[MAX_RESERVED4], // 预留字符数组参数4接口
  84. char szReversed5[MAX_RESERVED5] // 预留字符数组参数5接口
  85. );
  86. // 发送设置设备参数请求
  87. int SendSetReuest(
  88. char szPath[MAX_PATH], // 程序所在路径
  89. char szIniName[MAX_PATH], // 配置文件名称
  90. int nCommPort, // 串行端口
  91. int nAddr, // 设备地址
  92. char szCmd[MAX_CMD], // 请求命令
  93. char szMsg[VAR_MSG], // 响应的值
  94. int nReversed1, // 预留整形参数1接口
  95. int nReversed2, // 预留整形参数2接口
  96. int nReversed3, // 预留整形参数3接口
  97. int nReversed4, // 预留整形参数4接口
  98. int nReversed5, // 预留整形参数5接口
  99. float fReversed1, // 预留float参数1接口
  100. float fReversed2, // 预留float参数2接口
  101. float fReversed3, // 预留float参数3接口
  102. char szReversed1[MAX_RESERVED1], // 预留字符数组参数1接口
  103. char szReversed2[MAX_RESERVED2], // 预留字符数组参数2接口
  104. char szReversed3[MAX_RESERVED3], // 预留字符数组参数3接口
  105. char szReversed4[MAX_RESERVED4], // 预留字符数组参数4接口
  106. char szReversed5[MAX_RESERVED5] // 预留字符数组参数5接口
  107. );
  108. protected:
  109. int GetDeviceParam(
  110. int nAddr,
  111. CCommProcess *pComm, // 串口对象指针
  112. char szSendMsg[UPS_SANTAK_SEND_MSG], // 发送Buffer
  113. char szCmd[MAX_CMD], // 命令
  114. char szMsg[VAR_MSG], // 接收Buffer
  115. int &nIndex, // 变量索引,针对接收Buffer而言
  116. int &nLen, // 变量长度
  117. char szType[CMD_TYPE] );
  118. int GetParFromIni(
  119. char szPath[MAX_PATH], //服务器程序所在目录
  120. char szIniName[MAX_PATH], //配置文件名
  121. char szCmd[MAX_CMD], //命令
  122. char szSendCmd[MAX_CMD], //发送Buffer
  123. char nType[MAX_CMD],
  124. int &nIndex,
  125. int &nLen
  126. );
  127. int RequestStatus(
  128. int nAddr,
  129. CCommProcess *pComm, //串口对象指针
  130. const char chSendMsg[UPS_SANTAK_SEND_MSG] //发送Buffer
  131. );
  132. int ResponseStatus(
  133. int nAddr,
  134. CCommProcess *pComm, // 串口对象指针
  135. char szCmd[MAX_CMD], // 命令
  136. char szMsg[VAR_MSG], // 接收Buffer
  137. int &nIndex, // 变量索引,针对接收Buffer而言
  138. int &nLen, // 变量长度
  139. char szType[CMD_TYPE] // 变量数据类型
  140. );
  141. int GetBagkeeG1Msg(
  142. char szCmd[MAX_CMD], // 命令
  143. char szMsg[VAR_MSG], // 接收Buffer
  144. int &nIndex, // 变量索引,针对接收Buffer而言
  145. int &nLen, // 变量长度
  146. char szType[CMD_TYPE]);
  147. int GetBagkeeG2Msg(
  148. char szCmd[MAX_CMD], // 命令
  149. char szMsg[VAR_MSG], // 接收Buffer
  150. int &nIndex, // 变量索引,针对接收Buffer而言
  151. int &nLen, // 变量长度
  152. char szType[CMD_TYPE]);
  153. int GetBagkeeG3Msg(
  154. char szCmd[MAX_CMD], // 命令
  155. char szMsg[VAR_MSG], // 接收Buffer
  156. int &nIndex, // 变量索引,针对接收Buffer而言
  157. int &nLen, // 变量长度
  158. char szType[CMD_TYPE]);
  159. int GetBagkeeQ1Msg(
  160. char szCmd[MAX_CMD], // 命令
  161. char szMsg[VAR_MSG], // 接收Buffer
  162. int &nIndex, // 变量索引,针对接收Buffer而言
  163. int &nLen, // 变量长度
  164. char szType[CMD_TYPE]);
  165. void SetBagkeeG1Msg( char szCmd[MAX_CMD], char *pBuffer);
  166. void SetBagkeeG2Msg( char szCmd[MAX_CMD], char *pBuffer);
  167. void SetBagkeeG3Msg( char szCmd[MAX_CMD], char *pBuffer);
  168. void SetBagkeeQ1Msg( char szCmd[MAX_CMD], char *pBuffer);
  169. void SimulationCommData();
  170. int StrLower(char *pSource, char *pDest);
  171. private:
  172. int m_address;
  173. BOOL m_dwOnlineTick;
  174. BOOL m_devOnline;
  175. HANDLE m_hSemComm;
  176. CRITICAL_SECTION m_csReadMsg;
  177. char m_szG1Msg[RECEV_MAX_BUF];
  178. char m_szG2Msg[RECEV_MAX_BUF];
  179. char m_szG3Msg[RECEV_MAX_BUF];
  180. char m_szQ1Msg[RECEV_MAX_BUF];
  181. };
  182. #endif