UpsEast.h 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163
  1. //////////////////////////////////////////////////////////////////////////////
  2. ////// //////
  3. ////// 文 件: UpsEast.cpp //////
  4. ////// 作 者: xt //////
  5. ////// 创建时间: 2012-02-20 10:30 //////
  6. ////// 说 明: East UPS协议 //////
  7. ////// //////
  8. ////// 修改时间: //////
  9. ////// 修改说明: //////
  10. ////// //////
  11. //////////////////////////////////////////////////////////////////////////////
  12. #ifndef UPS_EAST_H
  13. #define UPS_EAST_H
  14. #pragma once
  15. #include "CommInterface.h"
  16. class CUpsEast:public CCommInterface
  17. {
  18. public:
  19. #define UPS_EAST_SEND_MSG 32
  20. #define UPS_TYPE_LENGTH 10
  21. #define DEBUG_EAST_120 1
  22. #define UPS_EAST_MAX_BUF 256
  23. enum __ERRO_CODE_UPSSANTAK
  24. {
  25. ERR_CODE_EAST_COM_FAULT = 50201 , //3A3120KS设备串口通信故障
  26. ERR_CODE_EAST_COM_BUSY , //3A3120KS设备串口通信忙
  27. ERR_CODE_EAST_COM_READ_NO_DATA , //3A3120KS设备没有读到数据
  28. ERR_CODE_EAST_COM_READ_LEN_OVER , //3A3120KS设备读到数据长度超时限制
  29. ERR_CODE_EAST_COM_LRC_LOST , //3A3120KS设备lrc校验失败
  30. EER_CODE_EAST_COM_WRITE_DATA , //3A3120KS设备写串口错误
  31. EER_CODE_EAST_COM_REGNUM , //3A3120KS设备寄存器数
  32. ERR_CODE_EAST_COM_VARLEN , //3A3120KS设备变量长度非法
  33. ERR_CODE_EAST_COM_INVALIDRES , //3A3120KS设备无效应答
  34. };
  35. public:
  36. CUpsEast(
  37. char szPath[MAX_PATH], // 程序所在路径
  38. char szIniName[MAX_PATH], // 配置文件名称
  39. int nCommPort, // 串行端口
  40. int nAddr, // 设备地址
  41. int nRate, // 波特率
  42. int nDataBit, // 数据位
  43. int nStopBit, // 停止位
  44. int nParity, // 校验位
  45. int nInterval // 时间间隔
  46. );
  47. virtual ~CUpsEast(void);
  48. BOOL UpsEastOpenComm(int nCommPort, int nAddr, int nRate, int nDataBit, int nStopBit, int nParity, int nInterval);
  49. int SendReadRequest(
  50. char szPath[MAX_PATH], // 程序所在路径
  51. char szIniName[MAX_PATH], // 配置文件名称
  52. int nCommPort, // 串行端口
  53. int nAddr, // 设备地址
  54. char szCmd[MAX_CMD], // 请求命令
  55. char szMsg[VAR_MSG], // 响应的值
  56. int nReversed1, // 预留整形参数1接口
  57. int nReversed2, // 预留整形参数2接口
  58. int nReversed3, // 预留整形参数3接口
  59. int nReversed4, // 预留整形参数4接口
  60. int nReversed5, // 预留整形参数5接口
  61. float fReversed1, // 预留float参数1接口
  62. float fReversed2, // 预留float参数2接口
  63. float fReversed3, // 预留float参数3接口
  64. char szReversed1[MAX_RESERVED1], // 预留字符数组参数1接口
  65. char szReversed2[MAX_RESERVED2], // 预留字符数组参数2接口
  66. char szReversed3[MAX_RESERVED3], // 预留字符数组参数3接口
  67. char szReversed4[MAX_RESERVED4], // 预留字符数组参数4接口
  68. char szReversed5[MAX_RESERVED5] // 预留字符数组参数5接口
  69. );
  70. private:
  71. HANDLE m_hSemComm;
  72. CRITICAL_SECTION m_csReadMsg;
  73. char m_szG1Msg[UPS_EAST_MAX_BUF];
  74. char m_szG2Msg[UPS_EAST_MAX_BUF];
  75. char m_szG3Msg[UPS_EAST_MAX_BUF];
  76. protected:
  77. int GetDeviceParam(
  78. int nAddr,
  79. CCommProcess *pComm, // 串口对象指针
  80. char szSendMsg[UPS_EAST_SEND_MSG], // 发送Buffer
  81. char szCmd[MAX_CMD], // 命令
  82. char szMsg[VAR_MSG], // 接收Buffer
  83. int &nIndex, // 变量索引,针对接收Buffer而言
  84. int &nLen, // 变量长度
  85. char szType[TYPE_LENGTH] );
  86. int GetParFromIni(char szPath[MAX_PATH], //服务器程序所在目录
  87. char szIniName[MAX_PATH], //配置文件名
  88. char szCmd[MAX_CMD], //命令
  89. char szSanTakSendMsg[MAX_CMD], //发送Buffer
  90. char nType[MAX_CMD],
  91. int &nIndex,
  92. int &nLen,
  93. int &startBit,
  94. int &endBit);
  95. int RequestStatus(
  96. int nAddr,
  97. CCommProcess *pComm, //串口对象指针
  98. const char chSendMsg[UPS_EAST_SEND_MSG] //发送Buffer
  99. );
  100. int ResponseStatus(
  101. int nAddr,
  102. CCommProcess *pComm, //串口对象指针
  103. char szCmd[MAX_CMD], // 命令
  104. char szMsg[VAR_MSG], // 接收Buffer
  105. int &nIndex, // 变量索引,针对接收Buffer而言
  106. int &nLen, // 变量长度
  107. char szType[TYPE_LENGTH] // 变量数据类型
  108. );
  109. int GetUpsEast_G1Msg(
  110. char szCmd[MAX_CMD], // 命令
  111. char szMsg[VAR_MSG], // 接收Buffer
  112. int &nIndex, // 变量索引,针对接收Buffer而言
  113. int &nLen, // 变量长度
  114. char szType[TYPE_LENGTH],
  115. int startBit,
  116. int endBit );
  117. int GetUpsEast_G2Msg(
  118. char szCmd[MAX_CMD], // 命令
  119. char szMsg[VAR_MSG], // 接收Buffer
  120. int &nIndex, // 变量索引,针对接收Buffer而言
  121. int &nLen, // 变量长度
  122. char szType[TYPE_LENGTH],
  123. int startBit,
  124. int endBit );
  125. int GetUpsEast_G3Msg(
  126. char szCmd[MAX_CMD], // 命令
  127. char szMsg[VAR_MSG], // 接收Buffer
  128. int &nIndex, // 变量索引,针对接收Buffer而言
  129. int &nLen, // 变量长度
  130. char szType[TYPE_LENGTH],
  131. int startBit,
  132. int endBit );
  133. void SetUpsEast_G1Msg( char szCmd[MAX_CMD], char *pBuffer);
  134. void SetUpsEast_G2Msg( char szCmd[MAX_CMD], char *pBuffer);
  135. void SetUpsEast_G3Msg( char szCmd[MAX_CMD], char *pBuffer);
  136. void SimulationCommData();
  137. int StrLower(char *pSource, char *pDest);
  138. private:
  139. int m_address;
  140. BOOL m_dwOnlineTick;
  141. BOOL m_devOnline;
  142. };
  143. #endif