UpsLink.h 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369
  1. #ifndef UPS_LINK_H
  2. #define UPS_LINK_H
  3. #include "CommInterface.h"
  4. class CUpsLink: public CCommInterface
  5. {
  6. public:
  7. #define UPS_UHK_SEND_MSG 32
  8. #define UPS_TYPE_LENGTH 10
  9. #define DEBUG_LINK 0
  10. enum __ERRO_CODE_UPSKEHUA
  11. {
  12. ERR_CODE_UPSKEHUA_COM_FAULT = 50201 , //UPSKEHUA设备串口通信故障
  13. ERR_CODE_UPSKEHUA_COM_BUSY , //UPSKEHUA设备串口通信忙
  14. ERR_CODE_UPSKEHUA_COM_READ_NO_DATA , //UPSKEHUA设备没有读到数据
  15. ERR_CODE_UPSKEHUA_COM_READ_LEN_OVER , //UPSKEHUA设备读到数据长度超时限制
  16. ERR_CODE_UPSKEHUA_COM_LRC_LOST , //UPSKEHUA设备lrc校验失败
  17. EER_CODE_UPSKEHUA_COM_WRITE_DATA , //UPSKEHUA设备写串口错误
  18. EER_CODE_UPSKEHUA_COM_REGNUM , //UPSKEHUA设备寄存器数
  19. ERR_CODE_UPSKEHUA_COM_VARLEN , //UPSKEHUA设备变量长度非法
  20. ERR_CODE_UPSKEHUA_COM_INVALIDRES , //UPSKEHUA设备无效应答
  21. };
  22. public:
  23. CUpsLink(
  24. char szPath[MAX_PATH], // 程序所在路径
  25. char szIniName[MAX_PATH], // 配置文件名称
  26. int nCommPort, // 串行端口
  27. int nAddr, // 设备地址
  28. int nRate, // 波特率
  29. int nDataBit, // 数据位
  30. int nStopBit, // 停止位
  31. int nParity, // 校验位
  32. int nInterval // 时间间隔
  33. );
  34. virtual ~CUpsLink(void);
  35. BOOL UpsUpLinkOpenComm(int nCommPort, int nAddr, int nRate, int nDataBit, int nStopBit, int nParity, int nInterval);
  36. int SendReadRequest(
  37. char szPath[MAX_PATH], // 程序所在路径
  38. char szIniName[MAX_PATH], // 配置文件名称
  39. int nCommPort, // 串行端口
  40. int nAddr, // 设备地址
  41. char szCmd[MAX_CMD], // 请求命令
  42. char szMsg[VAR_MSG], // 响应的值
  43. int nReversed1, // 预留整形参数1接口
  44. int nReversed2, // 预留整形参数2接口
  45. int nReversed3, // 预留整形参数3接口
  46. int nReversed4, // 预留整形参数4接口
  47. int nReversed5, // 预留整形参数5接口
  48. float fReversed1, // 预留float参数1接口
  49. float fReversed2, // 预留float参数2接口
  50. float fReversed3, // 预留float参数3接口
  51. char szReversed1[MAX_RESERVED1], // 预留字符数组参数1接口
  52. char szReversed2[MAX_RESERVED2], // 预留字符数组参数2接口
  53. char szReversed3[MAX_RESERVED3], // 预留字符数组参数3接口
  54. char szReversed4[MAX_RESERVED4], // 预留字符数组参数4接口
  55. char szReversed5[MAX_RESERVED5] // 预留字符数组参数5接口
  56. );
  57. // 发送设置设备参数请求
  58. int SendSetReuest(
  59. char szPath[MAX_PATH], // 程序所在路径
  60. char szIniName[MAX_PATH], // 配置文件名称
  61. int nCommPort, // 串行端口
  62. int nAddr, // 设备地址
  63. char szCmd[MAX_CMD], // 请求命令
  64. char szMsg[VAR_MSG], // 响应的值
  65. int nReversed1, // 预留整形参数1接口
  66. int nReversed2, // 预留整形参数2接口
  67. int nReversed3, // 预留整形参数3接口
  68. int nReversed4, // 预留整形参数4接口
  69. int nReversed5, // 预留整形参数5接口
  70. float fReversed1, // 预留float参数1接口
  71. float fReversed2, // 预留float参数2接口
  72. float fReversed3, // 预留float参数3接口
  73. char szReversed1[MAX_RESERVED1], // 预留字符数组参数1接口
  74. char szReversed2[MAX_RESERVED2], // 预留字符数组参数2接口
  75. char szReversed3[MAX_RESERVED3], // 预留字符数组参数3接口
  76. char szReversed4[MAX_RESERVED4], // 预留字符数组参数4接口
  77. char szReversed5[MAX_RESERVED5] // 预留字符数组参数5接口
  78. );
  79. private:
  80. HANDLE m_hSemComm;
  81. CRITICAL_SECTION m_csReadFinished;
  82. CRITICAL_SECTION m_csWrFinished;
  83. char m_szLink_XMsg[VAR_MSG]; //X
  84. char m_szLink_X1Msg[VAR_MSG]; //$>
  85. char m_szLink_X2Msg[VAR_MSG]; //$<
  86. char m_szLink_GMsg[VAR_MSG]; //G
  87. char m_szLink_gMsg[VAR_MSG]; //g
  88. char m_szLink_fMsg[VAR_MSG]; //f
  89. char m_szLink_9Msg[VAR_MSG]; //9
  90. char m_szLink_QMsg[VAR_MSG]; //Q
  91. char m_szLink_X3Msg[VAR_MSG]; //'
  92. char m_szLink_8Msg[VAR_MSG]; //8
  93. char m_szLink_jMsg[VAR_MSG]; //j
  94. char m_szLink_X5Msg[VAR_MSG]; // /
  95. char m_szLink_X6Msg[VAR_MSG]; // $
  96. char m_szLink_BMsg[VAR_MSG]; // B
  97. char m_szLink_CMsg[VAR_MSG]; // C
  98. char m_szLink_XFMsg[VAR_MSG]; // L
  99. char m_szLink_LMsg[VAR_MSG]; // L
  100. char m_szLink_MMsg[VAR_MSG]; // M
  101. char m_szLink_NMsg[VAR_MSG]; // N
  102. char m_szLink_OMsg[VAR_MSG]; // O
  103. char m_szLink_PMsg[VAR_MSG]; // P
  104. char m_szLink_tMsg[VAR_MSG]; // t
  105. char m_szLink_hMsg[VAR_MSG]; // h
  106. char m_szLink_XJMsg[VAR_MSG]; // J
  107. char m_szLink_X7Msg[VAR_MSG]; //!
  108. char m_szLink_X8Msg[VAR_MSG]; //t
  109. BOOL m_dwOnlineTick;
  110. BOOL m_devOnline;
  111. protected:
  112. int GetUpLinkFromIni(char szPath[MAX_PATH], //服务器程序所在目录
  113. char szIniName[MAX_PATH], //配置文件名
  114. char szCmd[MAX_CMD], //命令
  115. char szSanTakSendMsg[MAX_CMD], //发送Buffer
  116. char nType[MAX_CMD],
  117. int &nIndex,
  118. int &nLen,
  119. int &startBit,
  120. int &endBit);
  121. int RequestStatus(
  122. CCommProcess *pComm, //串口对象指针
  123. char chSendMsg[UPS_UHK_SEND_MSG] //发送Buffer
  124. );
  125. int ResponseStatus(
  126. CCommProcess *pComm, //串口对象指针
  127. char szCmd[MAX_CMD], // 命令
  128. char szMsg[VAR_MSG], // 接收Buffer
  129. int &nIndex, // 变量索引,针对接收Buffer而言
  130. int &nLen, // 变量长度
  131. char szType[TYPE_LENGTH] // 变量数据类型
  132. );
  133. int GetUpLinkXVarMsg( char szCmd[MAX_CMD], // 命令
  134. char szMsg[VAR_MSG], // 接收Buffer
  135. int &nIndex, // 变量索引,针对接收Buffer而言
  136. int &nLen, // 变量长度
  137. char szType[TYPE_LENGTH],
  138. int &startBit,
  139. int &endBit); // 变量数据类型
  140. int GetUpLinkX1VarMsg( char szCmd[MAX_CMD], // 命令
  141. char szMsg[VAR_MSG], // 接收Buffer
  142. int &nIndex, // 变量索引,针对接收Buffer而言
  143. int &nLen, // 变量长度
  144. char szType[TYPE_LENGTH],
  145. int &startBit,
  146. int &endBit); // 变量数据类型
  147. int GetUpLinkX2VarMsg( char szCmd[MAX_CMD], // 命令
  148. char szMsg[VAR_MSG], // 接收Buffer
  149. int &nIndex, // 变量索引,针对接收Buffer而言
  150. int &nLen, // 变量长度
  151. char szType[TYPE_LENGTH],
  152. int &startBit,
  153. int &endBit); // 变量数据类型
  154. int GetUpLinkGVarMsg( char szCmd[MAX_CMD], // 命令
  155. char szMsg[VAR_MSG], // 接收Buffer
  156. int &nIndex, // 变量索引,针对接收Buffer而言
  157. int &nLen, // 变量长度
  158. char szType[TYPE_LENGTH],
  159. int &startBit,
  160. int &endBit); // 变量数据类型
  161. int GetUpLinkgVarMsg( char szCmd[MAX_CMD], // 命令
  162. char szMsg[VAR_MSG], // 接收Buffer
  163. int &nIndex, // 变量索引,针对接收Buffer而言
  164. int &nLen, // 变量长度
  165. char szType[TYPE_LENGTH],
  166. int &startBit,
  167. int &endBit);
  168. int GetUpLinkfVarMsg( char szCmd[MAX_CMD], // 命令
  169. char szMsg[VAR_MSG], // 接收Buffer
  170. int &nIndex, // 变量索引,针对接收Buffer而言
  171. int &nLen, // 变量长度
  172. char szType[TYPE_LENGTH],
  173. int &startBit,
  174. int &endBit); // 变量数据类型
  175. int GetUpLink9VarMsg( char szCmd[MAX_CMD], // 命令
  176. char szMsg[VAR_MSG], // 接收Buffer
  177. int &nIndex, // 变量索引,针对接收Buffer而言
  178. int &nLen, // 变量长度
  179. char szType[TYPE_LENGTH],
  180. int &startBit,
  181. int &endBit); // 变量数据类型
  182. int GetUpLinkQVarMsg( char szCmd[MAX_CMD], // 命令
  183. char szMsg[VAR_MSG], // 接收Buffer
  184. int &nIndex, // 变量索引,针对接收Buffer而言
  185. int &nLen, // 变量长度
  186. char szType[TYPE_LENGTH],
  187. int &startBit,
  188. int &endBit ); // 变量数据类型
  189. int GetUpLinkX3VarMsg( char szCmd[MAX_CMD], // 命令
  190. char szMsg[VAR_MSG], // 接收Buffer
  191. int &nIndex, // 变量索引,针对接收Buffer而言
  192. int &nLen, // 变量长度
  193. char szType[TYPE_LENGTH],
  194. int &startBit,
  195. int &endBit); // 变量数据类型
  196. int GetUpLink8VarMsg( char szCmd[MAX_CMD], // 命令
  197. char szMsg[VAR_MSG], // 接收Buffer
  198. int &nIndex, // 变量索引,针对接收Buffer而言
  199. int &nLen, // 变量长度
  200. char szType[TYPE_LENGTH],
  201. int &startBit,
  202. int &endBit); // 变量数据类型
  203. int GetUpLinkjVarMsg( char szCmd[MAX_CMD], // 命令
  204. char szMsg[VAR_MSG], // 接收Buffer
  205. int &nIndex, // 变量索引,针对接收Buffer而言
  206. int &nLen, // 变量长度
  207. char szType[TYPE_LENGTH],
  208. int &startBit,
  209. int &endBit ); // 变量数据类型
  210. int GetUpLinkX5VarMsg( char szCmd[MAX_CMD], // 命令
  211. char szMsg[VAR_MSG], // 接收Buffer
  212. int &nIndex, // 变量索引,针对接收Buffer而言
  213. int &nLen, // 变量长度
  214. char szType[TYPE_LENGTH],
  215. int &startBit,
  216. int &endBit ); // 变量数据类型
  217. int GetUpLinkX6VarMsg( char szCmd[MAX_CMD], // 命令
  218. char szMsg[VAR_MSG], // 接收Buffer
  219. int &nIndex, // 变量索引,针对接收Buffer而言
  220. int &nLen, // 变量长度
  221. char szType[TYPE_LENGTH],
  222. int &startBit,
  223. int &endBit); // 变量数据类型
  224. int GetUpLinkBVarMsg( char szCmd[MAX_CMD], // 命令
  225. char szMsg[VAR_MSG], // 接收Buffer
  226. int &nIndex, // 变量索引,针对接收Buffer而言
  227. int &nLen, // 变量长度
  228. char szType[TYPE_LENGTH],
  229. int &startBit,
  230. int &endBit); // 变量数据类型
  231. int GetUpLinkCVarMsg( char szCmd[MAX_CMD], // 命令
  232. char szMsg[VAR_MSG], // 接收Buffer
  233. int &nIndex, // 变量索引,针对接收Buffer而言
  234. int &nLen, // 变量长度
  235. char szType[TYPE_LENGTH],
  236. int &startBit,
  237. int &endBit); // 变量数据类型
  238. int GetUpLinkXFVarMsg( char szCmd[MAX_CMD], // 命令
  239. char szMsg[VAR_MSG], // 接收Buffer
  240. int &nIndex, // 变量索引,针对接收Buffer而言
  241. int &nLen, // 变量长度
  242. char szType[TYPE_LENGTH],
  243. int &startBit,
  244. int &endBit ); // 变量数据类型
  245. int GetUpLinkLVarMsg( char szCmd[MAX_CMD], // 命令
  246. char szMsg[VAR_MSG], // 接收Buffer
  247. int &nIndex, // 变量索引,针对接收Buffer而言
  248. int &nLen, // 变量长度
  249. char szType[TYPE_LENGTH],
  250. int &startBit,
  251. int &endBit); // 变量数据类型
  252. int GetUpLinkMVarMsg( char szCmd[MAX_CMD], // 命令
  253. char szMsg[VAR_MSG], // 接收Buffer
  254. int &nIndex, // 变量索引,针对接收Buffer而言
  255. int &nLen, // 变量长度
  256. char szType[TYPE_LENGTH],
  257. int &startBit,
  258. int &endBit); // 变量数据类型
  259. int GetUpLinkNVarMsg( char szCmd[MAX_CMD], // 命令
  260. char szMsg[VAR_MSG], // 接收Buffer
  261. int &nIndex, // 变量索引,针对接收Buffer而言
  262. int &nLen, // 变量长度
  263. char szType[TYPE_LENGTH],
  264. int &startBit,
  265. int &endBit); // 变量数据类型
  266. int GetUpLinkOVarMsg( char szCmd[MAX_CMD], // 命令
  267. char szMsg[VAR_MSG], // 接收Buffer
  268. int &nIndex, // 变量索引,针对接收Buffer而言
  269. int &nLen, // 变量长度
  270. char szType[TYPE_LENGTH],
  271. int &startBit,
  272. int &endBit); // 变量数据类型
  273. int GetUpLinkPVarMsg( char szCmd[MAX_CMD], // 命令
  274. char szMsg[VAR_MSG], // 接收Buffer
  275. int &nIndex, // 变量索引,针对接收Buffer而言
  276. int &nLen, // 变量长度
  277. char szType[TYPE_LENGTH],
  278. int &startBit,
  279. int &endBit); // 变量数据类型
  280. int GetUpLinktVarMsg( char szCmd[MAX_CMD], // 命令
  281. char szMsg[VAR_MSG], // 接收Buffer
  282. int &nIndex, // 变量索引,针对接收Buffer而言
  283. int &nLen, // 变量长度
  284. char szType[TYPE_LENGTH],
  285. int &startBit,
  286. int &endBit); // 变量数据类型
  287. int GetUpLinkhVarMsg( char szCmd[MAX_CMD], // 命令
  288. char szMsg[VAR_MSG], // 接收Buffer
  289. int &nIndex, // 变量索引,针对接收Buffer而言
  290. int &nLen, // 变量长度
  291. char szType[TYPE_LENGTH],
  292. int &startBit,
  293. int &endBit ); // 变量数据类型
  294. int GetUpLinkXJVarMsg( char szCmd[MAX_CMD], // 命令
  295. char szMsg[VAR_MSG], // 接收Buffer
  296. int &nIndex, // 变量索引,针对接收Buffer而言
  297. int &nLen, // 变量长度
  298. char szType[TYPE_LENGTH],
  299. int &startBit,
  300. int &endBit); // 变量数据类型
  301. int GetUpLinkX7VarMsg( char szCmd[MAX_CMD], // 命令
  302. char szMsg[VAR_MSG], // 接收Buffer
  303. int &nIndex, // 变量索引,针对接收Buffer而言
  304. int &nLen, // 变量长度
  305. char szType[TYPE_LENGTH],
  306. int &startBit,
  307. int &endBit); // 变量数据类型
  308. int GetUpLinkX8VarMsg( char szCmd[MAX_CMD], // 命令
  309. char szMsg[VAR_MSG], // 接收Buffer
  310. int &nIndex, // 变量索引,针对接收Buffer而言
  311. int &nLen, // 变量长度
  312. char szType[TYPE_LENGTH],
  313. int &startBit,
  314. int &endBit); // 变量数据类型
  315. int GetDeviceParam(CCommProcess *pComm, //串口对象指针
  316. char szSendMsg[UPS_UHK_SEND_MSG], //发送Buffer
  317. char szCmd[MAX_CMD], // 命令
  318. char szMsg[VAR_MSG], // 接收Buffer
  319. int &nIndex, // 变量索引,针对接收Buffer而言
  320. int &nLen, // 变量长度
  321. char szType[TYPE_LENGTH] ); // 变量数据类型
  322. void SetUpLinkXVarMsg( char szCmd[MAX_CMD], char *pBuffer);
  323. void SetUpLinkX1VarMsg( char szCmd[MAX_CMD], char *pBuffer);
  324. void SetUpLinkX2VarMsg( char szCmd[MAX_CMD], char *pBuffer);
  325. void SetUpLinkGVarMsg( char szCmd[MAX_CMD], char *pBuffer);
  326. void SetUpLinkfVarMsg( char szCmd[MAX_CMD], char *pBuffer);
  327. void SetUpLinkgVarMsg( char szCmd[MAX_CMD], char *pBuffer);
  328. void SetUpLink9VarMsg( char szCmd[MAX_CMD], char *pBuffer);
  329. void SetUpLinkQVarMsg( char szCmd[MAX_CMD], char *pBuffer);
  330. void SetUpLinkX3VarMsg( char szCmd[MAX_CMD], char *pBuffer);
  331. void SetUpLink8VarMsg( char szCmd[MAX_CMD], char *pBuffer);
  332. void SetUpLinkjVarMsg( char szCmd[MAX_CMD], char *pBuffer);
  333. void SetUpLinkX5VarMsg( char szCmd[MAX_CMD], char *pBuffer);
  334. void SetUpLinkX6VarMsg( char szCmd[MAX_CMD], char *pBuffer);
  335. void SetUpLinkBVarMsg( char szCmd[MAX_CMD], char *pBuffer);
  336. void SetUpLinkCVarMsg( char szCmd[MAX_CMD], char *pBuffer);
  337. void SetUpLinkXFVarMsg( char szCmd[MAX_CMD], char *pBuffer);
  338. void SetUpLinkLVarMsg( char szCmd[MAX_CMD], char *pBuffer);
  339. void SetUpLinkMVarMsg( char szCmd[MAX_CMD], char *pBuffer);
  340. void SetUpLinkNVarMsg( char szCmd[MAX_CMD], char *pBuffer);
  341. void SetUpLinkOVarMsg( char szCmd[MAX_CMD], char *pBuffer);
  342. void SetUpLinkPVarMsg( char szCmd[MAX_CMD], char *pBuffer);
  343. void SetUpLinktVarMsg( char szCmd[MAX_CMD], char *pBuffer);
  344. void SetUpLinkhVarMsg( char szCmd[MAX_CMD], char *pBuffer);
  345. void SetUpLinkXJVarMsg( char szCmd[MAX_CMD], char *pBuffer);
  346. void SetUpLinkX7VarMsg( char szCmd[MAX_CMD], char *pBuffer);
  347. void SetUpLinkX8VarMsg( char szCmd[MAX_CMD], char *pBuffer);
  348. void SimulationCommData();
  349. int UpRequestWrStatus(char szSendMsg[]);
  350. int UpResponseWrStatus(char szSendMsg[]);
  351. int StrLower(char *pSource, char *pDest);
  352. };
  353. #endif