Daikin1111.h 9.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267
  1. #ifndef DAIKIN_H
  2. #define DAIKIN_H
  3. #if _MSC_VER > 1000
  4. #pragma once
  5. #endif // _MSC_VER > 1000
  6. #define DEBUG_DAIKIN 1
  7. #include "CommInterface.h"
  8. class CDaiKin: public CCommInterface
  9. {
  10. #define DAIKIN_SEND_MSG 40
  11. #define SEND_INFO 20
  12. #define DK_TYPE_LENGTH 10
  13. #define CID2_LENGTH 3
  14. #define DAIKIN_RECEIVE_MSG 256
  15. /*发送控制设备命令*/
  16. typedef struct __HEADMES
  17. {
  18. BYTE Start;
  19. BYTE Version[2];
  20. BYTE Address[2];
  21. BYTE Cid1[2];
  22. BYTE Cid2[2];
  23. BYTE Lenth[4];
  24. }HEADMES, *pHEADMES;
  25. //写串口数据
  26. typedef struct __REQUEST_STRUCT
  27. {
  28. HEADMES headMes;
  29. BYTE chkSum[4];
  30. BYTE End;
  31. //BYTE szContext[VAR_MSG];
  32. }REQUEST_STRUCT,*PREQUEST_STRUCT;
  33. typedef struct __RESPONSE_STRUCT
  34. {
  35. HEADMES headMES;
  36. BYTE rtnMsg[200];
  37. BYTE chkSum[4];
  38. BYTE End;
  39. }RESPONSE_STRUCT,*PRESPONSE_STRUCT;
  40. //发送控制命令
  41. typedef struct _REQUESTSET_STRUCT
  42. {
  43. BYTE Sol; //起始标志位(7EH)
  44. BYTE Ver[2]; //通讯协议版本号
  45. BYTE Adr[2]; //设备地址描述(1--254;0,255保留)
  46. BYTE Cid1[2]; //控制标示符(2AH)
  47. BYTE Cid2[2]; //信息类型
  48. BYTE Length[4]; //内容长度
  49. char szInfo[2]; //协议内容
  50. BYTE Chksum[4]; //校验和码
  51. BYTE Eol; //结束码 0x0d(回车)
  52. }REQUESTSET_STRCUT, *PREQUESTSET_STRCUT;
  53. // UPS DataMate300 设备Dll错误代码定义
  54. enum __ERRO_CODE_DAIKIN
  55. {
  56. ERR_CODE_DAIKIN_COM_FAULT = 50201 , //DATAMATE3000设备串口通信故障
  57. ERR_CODE_DAIKIN_COM_BUSY , //DATAMATE3000设备串口通信忙
  58. ERR_CODE_DAIKIN_COM_READ_NO_DATA , //DATAMATE3000设备没有读到数据
  59. ERR_CODE_DAIKIN_COM_READ_LEN_OVER , //DATAMATE3000设备读到数据长度超时限制
  60. ERR_CODE_DAIKIN_COM_CHKSUM_LOST , //DATAMATE3000设备校验失败
  61. EER_CODE_DAIKIN_COM_WRITE_DATA , //DATAMATE3000设备写串口错误
  62. EER_CODE_DAIKIN_COM_REGNUM , //DATAMATE3000设备寄存器数
  63. ERR_CODE_DAIKIN_COM_VARLEN , //DATAMATE3000设备变量长度非法
  64. ERR_CODE_DAIKIN_COM_INVALIDRES , //DATAMATE3000设备无效应答
  65. };
  66. enum __ERRO_CID_RTN
  67. {
  68. ERR_CID_RTN_NORMAL = 0x00 , //正常
  69. ERR_CID_RTN_VAR , //VAR错误
  70. ERR_CID_RTN_CHKSUM , //CHKSUM错误
  71. ERR_CID_RTN_LCHKSUM , //LCHKSUM错误
  72. ERR_CID_RTN_CID2 , //CID2错误
  73. ERR_CID_RTN_FORMAT , //命令格式错误
  74. ERR_CID_RTN_INVALI_DATA , //无效的数据
  75. RRR_CODE_RTN_CHKSUM_ERROR , // CHECKSUM错
  76. ERR_CODE_RTN_CHKSUM_ERROR ,
  77. ERR_CODE_RTN_CHKSUM_RTN_ERROR ,
  78. };
  79. public:
  80. BOOL DaiKinOpenComm(int nCommPort, int nAddr, int nRate, int nDataBit, int nStopBit, int nParity, int nInterval);
  81. CDaiKin(
  82. char szPath[MAX_PATH], // 程序所在路径
  83. char szIniName[MAX_PATH], // 配置文件名称
  84. int nCommPort, // 串行端口
  85. int nAddr, // 设备地址
  86. int nRate, // 波特率
  87. int nDataBit, // 数据位
  88. int nStopBit, // 停止位
  89. int nParity, // 校验位
  90. int nInterval // 时间间隔
  91. );
  92. virtual ~CDaiKin();
  93. // 发送读取设备参数请求
  94. int SendReadRequest(
  95. char szPath[MAX_PATH], // 程序所在路径
  96. char szIniName[MAX_PATH], // 配置文件名称
  97. int nCommPort, // 串行端口
  98. int nAddr, // 设备地址
  99. char szCmd[MAX_CMD], // 请求命令
  100. char szMsg[VAR_MSG], // 响应的值
  101. int nReversed1, // 预留整形参数1接口
  102. int nReversed2, // 预留整形参数2接口
  103. int nReversed3, // 预留整形参数3接口
  104. int nReversed4, // 预留整形参数4接口
  105. int nReversed5, // 预留整形参数5接口
  106. float fReversed1, // 预留float参数1接口
  107. float fReversed2, // 预留float参数2接口
  108. float fReversed3, // 预留float参数3接口
  109. char szReversed1[MAX_RESERVED1], // 预留字符数组参数1接口
  110. char szReversed2[MAX_RESERVED2], // 预留字符数组参数2接口
  111. char szReversed3[MAX_RESERVED3], // 预留字符数组参数3接口
  112. char szReversed4[MAX_RESERVED4], // 预留字符数组参数4接口
  113. char szReversed5[MAX_RESERVED5] // 预留字符数组参数5接口
  114. );
  115. // 发送设置设备参数请求
  116. int SendSetReuest(
  117. char szPath[MAX_PATH], // 程序所在路径
  118. char szIniName[MAX_PATH], // 配置文件名称
  119. int nCommPort, // 串行端口
  120. int nAddr, // 设备地址
  121. char szCmd[MAX_CMD], // 请求命令
  122. char szMsg[VAR_MSG], // 响应的值
  123. int nReversed1, // 预留整形参数1接口
  124. int nReversed2, // 预留整形参数2接口
  125. int nReversed3, // 预留整形参数3接口
  126. int nReversed4, // 预留整形参数4接口
  127. int nReversed5, // 预留整形参数5接口
  128. float fReversed1, // 预留float参数1接口
  129. float fReversed2, // 预留float参数2接口
  130. float fReversed3, // 预留float参数3接口
  131. char szReversed1[MAX_RESERVED1], // 预留字符数组参数1接口
  132. char szReversed2[MAX_RESERVED2], // 预留字符数组参数2接口
  133. char szReversed3[MAX_RESERVED3], // 预留字符数组参数3接口
  134. char szReversed4[MAX_RESERVED4], // 预留字符数组参数4接口
  135. char szReversed5[MAX_RESERVED5] // 预留字符数组参数5接口
  136. );
  137. private:
  138. //读取配置文件
  139. int GetFromIni(
  140. char szPath[MAX_PATH], //服务器程序所在目录
  141. char szIniName[MAX_PATH], //配置文件名
  142. char szCmd[MAX_CMD], //命令
  143. char szCid2[CID2_LENGTH], //发送Buffer
  144. char szType[TYPE_LENGTH],
  145. int &nIndex,
  146. int &nLen,
  147. int &nStaBit,
  148. int &nEndBit
  149. );
  150. int RequestStatus(int Addr, char *szCmd,CCommProcess *pComm,char *chSendMsg);
  151. int ResponseStatus( int nAddr,CCommProcess *pComm,char *szCmd,char *szMsg,int &nIndex,int &nLen,char *szType);
  152. int WriteRequestStatus( int nAddr,char *szMsg,CCommProcess *pComm,char *chSendMsg,int &iSendLen);
  153. int WriteResponseStatus( int nAddr, CCommProcess *pComm,char *szCmd,char *szMsg,int &nIndex,int &nLen,char *szType);
  154. int RequestWrStatus(int nAddr, char szDaiKinSendMsg[DAIKIN_RECEIVE_MSG] );
  155. int ResponseWrStatus(int nAddr, char szDaiKinSendMsg[DAIKIN_RECEIVE_MSG] );
  156. int GetDeviceParam( int nAddr, // 设备地址
  157. CCommProcess *pComm, //串口对象指针
  158. char szSendMsg[DAIKIN_RECEIVE_MSG], //发送Buffer
  159. char szCmd[MAX_CMD], // 命令
  160. char szMsg[VAR_MSG], // 接收Buffer
  161. int &nIndex, // 变量索引,针对接收Buffer而言
  162. int &nLen, // 变量长度
  163. char szType[TYPE_LENGTH] ); // 变量数据类型
  164. int SetDeviceParam( int nAddr, // 设备地址
  165. CCommProcess *pComm, //串口对象指针
  166. char szSendMsg[DAIKIN_SEND_MSG], //发送Buffer
  167. char szCmd[MAX_CMD], // 命令
  168. char szMsg[VAR_MSG], // 接收Buffer
  169. int &nIndex, // 变量索引,针对接收Buffer而言
  170. int &nLen, // 变量长度
  171. char szType[TYPE_LENGTH],
  172. int &iSendLen); // 变量数据类型
  173. int GetDaiKin_42VarMsg( int nAddr, //设备地址
  174. char szCmd[MAX_CMD], // 命令
  175. char szMsg[VAR_MSG], // 接收Buffer
  176. int &nIndex, // 变量索引,针对接收Buffer而言
  177. int &nLen, // 变量长度
  178. char szType[TYPE_LENGTH],
  179. int startBit,
  180. int endBit ); // 变量数据类型
  181. int GetDaiKin_43VarMsg(
  182. int nAddr, // 设备地址
  183. char szCmd[MAX_CMD], // 命令
  184. char szMsg[VAR_MSG], // 接收Buffer
  185. int &nIndex, // 变量索引,针对接收Buffer而言
  186. int &nLen, // 变量长度
  187. char szType[TYPE_LENGTH],
  188. int startBit,
  189. int endBit ); // 变量数据类型
  190. int GetDaiKin_44VarMsg(
  191. int nAddr, // 设备地址
  192. char szCmd[MAX_CMD], // 命令
  193. char szMsg[VAR_MSG], // 接收Buffer
  194. int &nIndex, // 变量索引,针对接收Buffer而言
  195. int &nLen, // 变量长度
  196. char szType[TYPE_LENGTH],
  197. int startBit,
  198. int endBit ); // 变量数据类型
  199. int GetDaiKin_400VarMsg( int nAddr,char *szCmd,char *szMsg,int &nIndex,int &nLen,char *szType,int startBit,int endBit ); // 变量数据类型
  200. //int GetDaiKin_47VarMsg(
  201. // int nAddr, // 设备地址
  202. // char szCmd[MAX_CMD], // 命令
  203. // char szMsg[VAR_MSG], // 接收Buffer
  204. // int &nIndex, // 变量索引,针对接收Buffer而言
  205. // int &nLen, // 变量长度
  206. // char szType[TYPE_LENGTH],
  207. // int startBit,
  208. // int endBit ); // 变量数据类型
  209. void SetDaKin_42VarMsg( int nAddr, char szCmd[MAX_CMD], char *pBuffer);
  210. void SetDaKin_43VarMsg( int nAddr, char szCmd[MAX_CMD], char *pBuffer);
  211. void SetDaKin_44VarMsg( int nAddr, char szCmd[MAX_CMD], char *pBuffer);
  212. //void SetDaKin_45VarMsg( int nAddr, char szCmd[MAX_CMD], char *pBuffer);
  213. //void SetDaKin_47VarMsg( int nAddr, char szCmd[MAX_CMD], char *pBuffer);
  214. WORD RtnCheck(char Msg[VAR_MSG]);
  215. void lowcase2uppcase(BYTE &btSrc);
  216. void SimulationCommData(int nAddr);
  217. //WORD GetDataLength(const WORD wLENID, char chLength[4]);
  218. void GetCheckSum(char *pBuf, char chDest[5], int len);
  219. protected:
  220. private:
  221. HANDLE m_hSemComm;
  222. #if IS_USE_READMSG_CS
  223. CRITICAL_SECTION m_csReadMsg;
  224. #endif
  225. char m_szDaKin_42Msg[MAX_ADDR][DAIKIN_RECEIVE_MSG];
  226. char m_szDaKin_43Msg[MAX_ADDR][DAIKIN_RECEIVE_MSG];
  227. char m_szDaKin_44Msg[MAX_ADDR][DAIKIN_RECEIVE_MSG];
  228. char m_szDaKin_400Msg[MAX_ADDR][DAIKIN_RECEIVE_MSG];
  229. //char m_szDaKin_47Msg[MAX_ADDR][DAIKIN_RECEIVE_MSG];
  230. BOOL m_dwOnlineTick[MAX_ADDR];
  231. BOOL m_devOnline[MAX_ADDR];
  232. };
  233. #endif