gpio_impl.h 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. #ifndef LIBFRAMEWORK_GPIO_IMPL_H
  2. #define LIBFRAMEWORK_GPIO_IMPL_H
  3. #include "GpioClass.h"
  4. #include <string>
  5. #include "DeviceSimulator.h"
  6. #define EntityName "Gpio"
  7. class GPIOClassImpl : public GpioClass
  8. {
  9. public:
  10. GPIOClassImpl();
  11. ~GPIOClassImpl();
  12. //DeviceBaseClass
  13. ErrorCodeEnum GetDevCategory(DevCategoryInfo &devCategory);
  14. ErrorCodeEnum Reset();
  15. ErrorCodeEnum DevClose();
  16. ErrorCodeEnum GetLastErr(DevErrorInfo &devErrInfo);
  17. //
  18. // Device initialization.
  19. // Configure port input/output direction.
  20. //
  21. virtual ErrorCodeEnum DevOpen(GpioInitParam initParam);
  22. //
  23. // Set ports output.
  24. // Arguments:
  25. // - dwPort:port serial number,0~MAX_PORT_NUM-1
  26. // - btData:output value
  27. // bit value 1/0 means voltage high or low
  28. // ex.dwPort=0 btData=10001010 means set port 0's the 2nd,4th,8th pin output high
  29. //
  30. virtual ErrorCodeEnum WritePort(DWORD dwPort, BYTE btData);
  31. //
  32. // Get port input.
  33. // Arguments:
  34. // - dwPort:port serial number,0~MAX_PORT_NUM-1
  35. // - btStatus:input value
  36. // ex.dwPort=0 btStatus=10001010 means port 0's the 2nd,4th,8th pin with high level
  37. //
  38. virtual ErrorCodeEnum ReadPort(DWORD dwPort, BYTE& btStatus);
  39. #ifndef _MSC_VER
  40. /// <summary>
  41. /// 打开指定模块的提示灯
  42. /// </summary>
  43. /// <param name="dwReq">
  44. /// 硬件灯模块序号,见上方定义GPIO_DEV_SN_*,或参考规格说明文档,只会传送模式为”驱动“的序号之一
  45. /// 只会设置灯,如果是其他值则返回 Error_NotSupport
  46. /// </param>
  47. /// <param name="dwMode">
  48. /// 入参,指定灯的属性如常亮还是闪烁,是普通灯颜色还是故障灯颜色
  49. /// 不同属性可以通过与的方式合并传入,如灯颜色和亮灯模式,同一属性只会传入其中一个值,比如灯常亮和闪烁只会传入其中之一
  50. /// 具体值表示的内容参考上方定义的内容 GPIO_DEV_LIGHT_MODE_*
  51. /// </param>
  52. /// <returns>
  53. /// 参数有误或设置失败返回对应的报错
  54. /// </returns>
  55. virtual ErrorCodeEnum SetStatus(DWORD dwReq, DWORD dwMode);
  56. /// <summary>
  57. /// 获取探测器的状态
  58. /// </summary>
  59. /// <param name="dwReq">
  60. /// 感应模块序号,见上方定义GPIO_DEV_SN_*,或参考规格说明文档,只会传送模式为”接收“的序号
  61. /// 这个可能是与的关系,即有可能会一个调用同时获取多个模块的状态
  62. /// </param>
  63. /// <param name="dwMode">
  64. /// 对应模块(有震动、开门、摘机、有人靠近)对应的位,如果是高电平置为1,如果低电平则置为0
  65. /// </param>
  66. /// <returns>
  67. /// 无法获取状态则返回报错
  68. /// </returns>
  69. virtual ErrorCodeEnum DetectStatus(DWORD dwReq, DWORD& dwMode);
  70. #endif //_MSC_VER
  71. private:
  72. int m_mode;
  73. };
  74. #endif //LIBFRAMEWORK_GPIO_IMPL_H