IIO.h 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249
  1. #pragma once
  2. #include "IOPara.h"
  3. //定义一个IO返回成功
  4. #define IO_CMD_SUCCESS 0;
  5. #define IO_CMD_ERROR_INSTRUCTION 2001;
  6. #define IO_CMD_ERROR_WRONG_IOTYPE 2002;
  7. /************************************************************************/
  8. //! 该类管理了一个16bits的数字量输入
  9. /*!
  10. 一个类实例,操作16个bits的DI (Digit Input)
  11. */
  12. class CDigitInput
  13. {
  14. public:
  15. /************************************************************************/
  16. //! 构造函数
  17. CDigitInput(){}
  18. //! 析构函数
  19. virtual ~CDigitInput(){};
  20. //!初始化IO函数
  21. virtual void Init(DIOData* digitIOData)
  22. {
  23. m_stIOData = *digitIOData;
  24. };
  25. /************************************************************************/
  26. //! 获得单个DI的极性
  27. /*!
  28. \prm
  29. \return true:正极性,false:反极性。
  30. */
  31. virtual int GetDIBit(bool& bInput)=0;
  32. /************************************************************************/
  33. //! 获得单个DI的所有参数
  34. /*!
  35. \prm
  36. \return IO参数对应结构体
  37. */
  38. virtual DIOData GetDIData(){return m_stIOData;};
  39. //对于错误码返回值的解释
  40. virtual std::string ErrCodeTransfer(int nRtn){return "";};
  41. protected:
  42. DIOData m_stIOData;
  43. };
  44. class CDigitInputS
  45. {
  46. public:
  47. /************************************************************************/
  48. //! 构造函数
  49. CDigitInputS(){};
  50. //! 析构函数
  51. virtual ~CDigitInputS(){};
  52. //!初始化IO函数
  53. virtual void Init(DIOData* digitIOData)
  54. {
  55. m_stIOData = *digitIOData;
  56. };
  57. /************************************************************************/
  58. //! 获得数字量输入
  59. /*!
  60. \return 以16位无符号短整型返回16个DI的电平状态,0为低电平,1为高电平
  61. */
  62. virtual int GetDI(unsigned short& nInput)=0;
  63. /************************************************************************/
  64. //! 获得单个DIS的所有参数
  65. /*!
  66. \prm
  67. \return IO参数对应结构体
  68. */
  69. virtual DIOData GetDISData(){return m_stIOData;};
  70. //对于错误码返回值的解释
  71. virtual std::string ErrCodeTransfer(int nRtn){return "";};
  72. protected:
  73. DIOData m_stIOData;
  74. };
  75. //应该有按位的,跟多位的
  76. /************************************************************************/
  77. //! 该类管理了一个16bits的数字量输出
  78. /*!
  79. 一个类实例,操作16个bits的DO(Digit Output)
  80. */
  81. class CDigitOutput
  82. {
  83. public:
  84. /************************************************************************/
  85. //! 构造函数
  86. CDigitOutput(){/*m_nValidBitsNum=16;*/};
  87. //! 析构函数
  88. virtual ~CDigitOutput(){};
  89. //!初始化IO函数
  90. virtual void Init(DIOData* digitIOData)
  91. {
  92. m_stIOData = *digitIOData;
  93. };
  94. /************************************************************************/
  95. //! 设置DO的位输出
  96. /*!
  97. \param nBit 位,取值[0,15]
  98. \param bHighLevel 该位的电平状态,true:高电平,false:低电平,默认高电平
  99. \return 0:操作成功; 非0: 操作失败
  100. */
  101. virtual int SetDOBit(bool bHighOrLow)=0;
  102. /************************************************************************/
  103. //! 获得DO的位输出
  104. /*!
  105. \param nBit 位,取值[0,15]
  106. \return 0,1
  107. */
  108. virtual int GetDOBit(bool & bOutput)=0;
  109. /************************************************************************/
  110. //! 获得单个DO的所有参数
  111. /*!
  112. \prm
  113. \return IO参数对应结构体
  114. */
  115. virtual DIOData GetDOData(){return m_stIOData;};
  116. //对于错误码返回值的解释
  117. virtual std::string ErrCodeTransfer(int nRtn){return "";};
  118. protected:
  119. DIOData m_stIOData;
  120. };
  121. class CDigitOutputS
  122. {
  123. public:
  124. /************************************************************************/
  125. //! 构造函数
  126. CDigitOutputS(){/*m_nValidBitsNum=16;*/};
  127. //! 析构函数
  128. virtual ~CDigitOutputS(){};
  129. //!初始化IO函数
  130. virtual void Init(DIOData* digitIOData)
  131. {
  132. m_stIOData = *digitIOData;
  133. };
  134. /************************************************************************/
  135. //! 设置DO的输出
  136. /*!
  137. \param setValue DI输出,16位无符号整型,位为1表示高电平,为0表示低电平
  138. \param nMask DI输出的掩码,16位无符号整型,nMask中的位为1的话,该位输出指定值,否则保持原样
  139. \return 0:操作成功; 非0: 操作失败
  140. */
  141. virtual int SetDO(unsigned short setValue)=0;
  142. /************************************************************************/
  143. //! 获取DO的当前输出状态
  144. /*!
  145. \param nOutput DI输出,16位无符号整型,位为1表示高电平,为0表示低电平
  146. \return 0:操作成功; 非0: 操作失败
  147. */
  148. virtual int GetDO(unsigned short& nOutput)=0;
  149. /************************************************************************/
  150. //! 获得单个DOS的所有参数
  151. /*!
  152. \prm
  153. \return IO参数对应结构体
  154. */
  155. virtual DIOData GetDOSData(){return m_stIOData;};
  156. //对于错误码返回值的解释
  157. virtual std::string ErrCodeTransfer(int nRtn){return "";};
  158. protected:
  159. DIOData m_stIOData;
  160. };
  161. /************************************************************************/
  162. class CAnalogOutput
  163. {
  164. public:
  165. CAnalogOutput(){/*m_nValidChannelNum=8;*/};
  166. virtual ~CAnalogOutput(){};
  167. //!初始化IO函数
  168. virtual void Init(AIOData* anaIOData)
  169. {
  170. m_stIOData = *anaIOData;
  171. };
  172. virtual int GetAO(short &nValue)=0;
  173. virtual int SetAO(short nValue)=0;
  174. /************************************************************************/
  175. //! 获得单个AO的所有参数
  176. /*!
  177. \prm
  178. \return IO参数对应结构体
  179. */
  180. virtual AIOData GetAOData(){return m_stIOData;};
  181. //错误码的解释
  182. virtual std::string ErrCodeTransfer(int nRtn){return "";};
  183. protected:
  184. AIOData m_stIOData;
  185. };
  186. /************************************************************************/
  187. class CAnalogInput
  188. {
  189. public:
  190. CAnalogInput(){/*m_nValidChannelNum=8;*/};
  191. virtual ~CAnalogInput(){};
  192. //!初始化IO函数
  193. virtual void Init(AIOData* anaIOData)
  194. {
  195. m_stIOData = *anaIOData;
  196. };
  197. virtual int GetAI(short& nValue)=0;
  198. /************************************************************************/
  199. //! 获得单个AI的所有参数
  200. /*!
  201. \prm
  202. \return IO参数对应结构体
  203. */
  204. virtual AIOData GetAIData(){return m_stIOData;};
  205. //对于错误码返回值的解释
  206. virtual std::string ErrCodeTransfer(int nRtn){return "";};
  207. protected:
  208. AIOData m_stIOData;
  209. };