复件 SF6.h 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178
  1. /*************************************************
  2. /* Copyright (C), 2010-2011,StoneU. Co., Ltd.
  3. /* File name: SF6.h
  4. /* Author: Zero.t
  5. /* Version: Ver1.0.0.1
  6. /* Date: 2011-10-19
  7. /* Description: ##
  8. /* Others: RS485;
  9. /* Function List: ###
  10. /* History:
  11. 1.Date: ###
  12. Author: ###
  13. Modification: ###
  14. *************************************************/
  15. #ifndef SF6_HEAD_H
  16. #define SF6_HEAD_H
  17. #pragma once
  18. #include "CommInterface.h"
  19. class CSF6:public CCommInterface
  20. {
  21. public:
  22. #define SF6_DEBUG 0
  23. // 设备请求数据;
  24. typedef struct __REQUEST_STRUCT
  25. {
  26. BYTE Start; // 起始符;
  27. BYTE Add; // 地址;read by .ini
  28. BYTE End; // 结束符;
  29. }REQUEST_STRUCT,*PREQUEST_STRUCT;
  30. // 设备返回数据;
  31. typedef struct __RESPONE_STRUCT
  32. {
  33. BYTE Start; // 起始符;
  34. BYTE Add; // 地址;read by .ini
  35. BYTE Content[2]; // 内容;
  36. BYTE End; // 结束符;
  37. }RESPONE_STRUCT,*PRESPONET_STRUCT;
  38. enum __ERRO_CODE_SK
  39. {
  40. ERR_CODE_SF6_COM_FAULT = 50201 , //设备串口通信故障
  41. ERR_CODE_SF6_COM_BUSY , //设备串口通信忙
  42. ERR_CODE_SF6_COM_READ_NO_DATA , //设备没有读到数据
  43. ERR_CODE_SF6_COM_READ_LEN_OVER , //设备读到数据长度超时限制
  44. ERR_CODE_SF6_COM_LRC_LOST , //设备lrc校验失败
  45. EER_CODE_SF6_COM_WRITE_DATA , //设备写串口错误
  46. EER_CODE_SF6_COM_REGNUM , //设备寄存器数
  47. ERR_CODE_SF6_COM_VARLEN , //设备变量长度非法
  48. ERR_CODE_SF6_COM_INVALIDRES , //设备无效应答
  49. };
  50. public:
  51. CSF6(
  52. char szPath[MAX_PATH], // 程序所在路径
  53. char szIniName[MAX_PATH], // 配置文件名称
  54. int nCommPort, // 串行端口
  55. int nAddr, // 设备地址
  56. int nRate, // 波特率
  57. int nDataBit, // 数据位
  58. int nStopBit, // 停止位
  59. int nParity, // 校验位
  60. int nInterval // 时间间隔
  61. );
  62. ~CSF6(void);
  63. public:
  64. BOOL SF6OpenComm(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 szCmd[MAX_CMD], // 命令
  113. char szMsg[VAR_MSG], // 接收Buffer
  114. int &nIndex, // 变量索引,针对接收Buffer而言
  115. int &nLen, // 变量长度
  116. char szType[CMD_TYPE] );
  117. int GetParFromIni(
  118. char szPath[MAX_PATH], //服务器程序所在目录
  119. char szIniName[MAX_PATH], //配置文件名
  120. char szCmd[MAX_CMD], //命令
  121. char nType[MAX_CMD],
  122. int &nIndex,
  123. int &nLen
  124. );
  125. int RequestStatus(
  126. int nAddr,
  127. CCommProcess *pComm //串口对象指针
  128. );
  129. int ResponseStatus(
  130. int nAddr,
  131. CCommProcess *pComm, // 串口对象指针
  132. char szCmd[MAX_CMD], // 命令
  133. char szMsg[VAR_MSG], // 接收Buffer
  134. int &nIndex, // 变量索引,针对接收Buffer而言
  135. int &nLen, // 变量长度
  136. char szType[CMD_TYPE] // 变量数据类型
  137. );
  138. int GetMsg(
  139. int nAddr,
  140. char szCmd[MAX_CMD], // 命令
  141. char szMsg[VAR_MSG], // 接收Buffer
  142. int &nIndex, // 变量索引,针对接收Buffer而言
  143. int &nLen, // 变量长度
  144. char szType[CMD_TYPE]);
  145. void SetMsg( int nAddr, char szCmd[MAX_CMD], char *pBuffer);
  146. void GetTHData(int nAddr,char szCmd[MAX_CMD],char *szType, char *szConvMsg, int nIndex,int len);
  147. void GetSF6Data(int nAddr,char szCmd[MAX_CMD],char *szType, char *szConvMsg, int nIndex,int len);
  148. void SimulationCommData( int nAddr);
  149. int StrLower(char *pSource, char *pDest);
  150. private:
  151. int m_address;
  152. BOOL m_dwOnlineTick[MAX_ADDR];
  153. BOOL m_devOnline[MAX_ADDR];
  154. HANDLE m_hSemComm;
  155. CRITICAL_SECTION m_csReadMsg;
  156. char m_szMsg[MAX_ADDR][20];
  157. };
  158. #endif