Sda_ii.h 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246
  1. #if _MSC_VER > 1000
  2. #pragma once
  3. #endif // _MSC_VER > 1000
  4. #include "CommInterface.h"
  5. #include "CommProcess.h"
  6. class CSda_ii : public CCommInterface
  7. {
  8. #define UL_VAR_MSG 255
  9. #define INFO_MSG 255 //INFO数据最长长度;
  10. #define SEND_MSG 32 //发送Buffer的最长长度;
  11. #define DEBUG_SDA 1
  12. // 设备Dll错误代码定义
  13. enum __ERRO_CODE_SDA
  14. {
  15. ERR_CODE_Sda_ii_COM_FAULT = 50201 , //设备串口通信故障
  16. ERR_CODE_Sda_ii_COM_BUSY , //设备串口通信忙
  17. ERR_CODE_Sda_ii_COM_READ_NO_DATA , //设备没有读到数据
  18. ERR_CODE_Sda_ii_COM_READ_LEN_OVER , //设备读到数据长度超时限制
  19. ERR_CODE_Sda_ii_COM_CHKSUM_LOST , //设备校验失败
  20. EER_CODE_Sda_ii_COM_WRITE_DATA , //设备写串口错误
  21. EER_CODE_Sda_ii_COM_REGNUM , //设备寄存器数
  22. ERR_CODE_Sda_ii_COM_VARLEN , //设备变量长度非法
  23. ERR_CODE_Sda_ii_COM_INVALIDRES , //设备无效应答
  24. };
  25. //设备错误预留字节
  26. enum _ERROR_LENGTHSUM
  27. {
  28. ERR_LENGTH_SUM = 60220,
  29. ERR_CHEKSUM
  30. };
  31. //4cH 设备请求接收的协议格式
  32. typedef struct __RESPONSE_4CSTRUCT
  33. {
  34. BYTE SOI; //起始标志位
  35. BYTE CMD; //功能码
  36. BYTE ADR[2]; //设备地址描述(1--200)
  37. BYTE EOI; //结束码
  38. }RESPONSE_4CSTRUCT, *PRESPONSE_4CSTRUCT;
  39. //52H 设备请求接收的协议格式
  40. typedef struct __RESPONSE_53STRUCT
  41. {
  42. BYTE SOI; //起始标志位
  43. BYTE CMD; //功能码
  44. BYTE ADR[2]; //设备地址描述(1--200)
  45. BYTE INDEX[2];
  46. BYTE EOI; //结束码
  47. }RESPONSE_53STRUCT, *PRESPONSE_53STRUCT;
  48. public:
  49. CSda_ii(
  50. char szPath[MAX_PATH], // 程序所在路径
  51. char szIniName[MAX_PATH], // 配置文件名称
  52. int nCommPort, // 串行端口
  53. int nAddr, // 设备地址
  54. int nRate, // 波特率
  55. int nDataBit, // 数据位
  56. int nStopBit, // 停止位
  57. int nParity, // 校验位
  58. int nInterval // 时间间隔
  59. );
  60. virtual ~CSda_ii();
  61. public:
  62. BOOL GetCheckSum(char *pBuf, int iLen);
  63. int SendReadRequest(
  64. char szPath[MAX_PATH], // 程序所在路径
  65. char szIniName[MAX_PATH], // 配置文件名称
  66. int nCommPort, // 串行端口
  67. int nAddr, // 设备地址
  68. char szCmd[MAX_CMD], // 请求命令
  69. char szMsg[VAR_MSG], // 响应的值
  70. int nReversed1, // 预留整形参数1接口
  71. int nReversed2, // 预留整形参数2接口
  72. int nReversed3, // 预留整形参数3接口
  73. int nReversed4, // 预留整形参数4接口
  74. int nReversed5, // 预留整形参数5接口
  75. float fReversed1, // 预留float参数1接口
  76. float fReversed2, // 预留float参数2接口
  77. float fReversed3, // 预留float参数3接口
  78. char szReversed1[MAX_RESERVED1], // 预留字符数组参数1接口
  79. char szReversed2[MAX_RESERVED2], // 预留字符数组参数2接口
  80. char szReversed3[MAX_RESERVED3], // 预留字符数组参数3接口
  81. char szReversed4[MAX_RESERVED4], // 预留字符数组参数4接口
  82. char szReversed5[MAX_RESERVED5] // 预留字符数组参数5接口
  83. );
  84. // 发送设置设备参数请求
  85. int SendSetReuest(
  86. char szPath[MAX_PATH], // 程序所在路径
  87. char szIniName[MAX_PATH], // 配置文件名称
  88. int nCommPort, // 串行端口
  89. int nAddr, // 设备地址
  90. char szCmd[MAX_CMD], // 请求命令
  91. char szRecvMsg[VAR_MSG], // 输入的值
  92. int nReversed1, // 预留整形参数1接口
  93. int nReversed2, // 预留整形参数2接口
  94. int nReversed3, // 预留整形参数3接口
  95. int nReversed4, // 预留整形参数4接口
  96. int nReversed5, // 预留整形参数5接口
  97. float fReversed1, // 预留float参数1接口
  98. float fReversed2, // 预留float参数2接口
  99. float fReversed3, // 预留float参数3接口
  100. char szReversed1[MAX_RESERVED1], // 预留字符数组参数1接口
  101. char szReversed2[MAX_RESERVED2], // 预留字符数组参数2接口
  102. char szReversed3[MAX_RESERVED3], // 预留字符数组参数3接口
  103. char szReversed4[MAX_RESERVED4], // 预留字符数组参数4接口
  104. char szReversed5[MAX_RESERVED5] // 预留字符数组参数5接口
  105. );
  106. BOOL AirSdaOpenComm(int nCommPort, int nAddr, int nRate, int nDataBit, int nStopBit, int nParity, int nInterval);
  107. void GetBitStatu( /*char *bytValue*/int iVaule, char *szRcMsg, int startbit,int endbit);
  108. protected:
  109. //char m_sz4CMsg[MAX_ADDR][UL_VAR_MSG];
  110. //char m_sz52Msg[MAX_ADDR][UL_VAR_MSG];
  111. char m_sz4CMsg[MAX_ADDR][25];
  112. char m_sz52Msg[MAX_ADDR][13];
  113. // char m_sz523Msg[MAX_ADDR][13];
  114. // char m_sz524Msg[MAX_ADDR][13];
  115. protected:
  116. int RequestReadStatus(
  117. int nAddr,
  118. CCommProcess *pComm,
  119. char szSendMsg[SEND_MSG],
  120. int Funid
  121. );
  122. int ResponseReadStatus(
  123. CCommProcess *pComm,
  124. char szCmd[MAX_CMD],
  125. char szRecvMsg[VAR_MSG],
  126. int &nIndex,
  127. int &nLen,
  128. char szType[TYPE_LENGTH],
  129. int nAddr
  130. );
  131. int RequestWriteStatus(
  132. int nAddr,
  133. CCommProcess *pComm,
  134. char szSendMsg[SEND_MSG],
  135. int Funid
  136. );
  137. int ResponseWriteStatus(
  138. CCommProcess *pComm,
  139. char szCmd[MAX_CMD],
  140. char szRecvMsg[VAR_MSG],
  141. int &nIndex,
  142. int &nLen,
  143. char szType[TYPE_LENGTH],
  144. int nAddr
  145. );
  146. int GetDeviceParam(
  147. int nAddr,
  148. CCommProcess *pComm, //串口对象指针
  149. char szSendMsg[SEND_MSG], //发送Buffer
  150. char szCmd[MAX_CMD], // 命令
  151. char szRecvMsg[VAR_MSG], // 接收Buffer
  152. int &nIndex, // 变量索引,针对接收Buffer而言
  153. int &nLen, // 变量长度
  154. char szType[TYPE_LENGTH], // 变量数据类型
  155. int Funid
  156. );
  157. int SetDeviceParam(
  158. int nAddr,
  159. CCommProcess *pComm, //串口对象指针
  160. char szSendMsg[SEND_MSG], //发送Buffer
  161. char szCmd[MAX_CMD], // 命令
  162. char szRecvMsg[VAR_MSG], // 接收Buffer
  163. int &nIndex, // 变量索引,针对接收Buffer而言
  164. int &nLen, // 变量长度
  165. char szType[TYPE_LENGTH], // 变量数据类型
  166. int Funid
  167. );
  168. int GetULFromIni(
  169. char szPath[MAX_PATH], //服务器程序所在目录
  170. char szIniName[MAX_PATH], //配置文件名
  171. char szCmd[MAX_CMD], //命令
  172. char szSanTakSendMsg[MAX_CMD], //发送Buffer
  173. char nType[MAX_CMD],
  174. int &nIndex,
  175. int &nLen,
  176. int &Funid,
  177. int &startbit,
  178. int &endbit
  179. );
  180. int Get4CVarMsg(
  181. char szCmd[MAX_CMD], // 命令
  182. char szRecvMsg[VAR_MSG], // 接收Buffer
  183. int &nIndex, // 变量索引,针对接收Buffer而言
  184. int &nLen, // 变量长度
  185. char szType[TYPE_LENGTH],
  186. int startbit,
  187. int endbit,
  188. int nAddr
  189. );
  190. int Get52VarMsg(
  191. char szCmd[MAX_CMD], // 命令
  192. char szRecvMsg[VAR_MSG], // 接收Buffer
  193. int &nIndex, // 变量索引,针对接收Buffer而言
  194. int &nLen, // 变量长度
  195. char szType[TYPE_LENGTH],
  196. int nAddr
  197. );
  198. void Set4CVarMsg( char szCmd[MAX_CMD], char *pBuffer,int nAddr);
  199. void Set52VarMsg( char szCmd[MAX_CMD], char *pBuffer,int nAddr);
  200. void GetDataDi(char *szMsg);
  201. void GetByteHex(char *szMsg);
  202. void SimulationCommData(void);
  203. private:
  204. HANDLE m_hSemComm;
  205. #if IS_USE_READMSG_CS
  206. CRITICAL_SECTION m_csReadMsg;
  207. #endif
  208. //BYTE m_emerson_ControlMsg[MAX_ADDR][VAR_MSG];//接收到的Buffer的数据;
  209. //BYTE m_emerson_QeuryMsg[MAX_ADDR][VAR_MSG];
  210. BOOL m_dwOnlineTick[MAX_ADDR];
  211. BOOL m_devOnline[MAX_ADDR];
  212. //BOOL m_dwOnlineTick;
  213. //BOOL m_devOnline;
  214. };