You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

44 lines
1.0 KiB

  1. //
  2. // Created by zwsd
  3. //
  4. #pragma once
  5. #include "sdk/hal/zhal.hpp"
  6. //
  7. #include "sdk\components\vaisala_sensor\hpp272.hpp"
  8. #include "sdk\components\zcanreceiver\zcanreceiver.hpp"
  9. #ifdef HAL_CAN_MODULE_ENABLED
  10. namespace iflytop {
  11. class H2O2Sensor : public ZCanRceiverListener {
  12. private:
  13. ZCanReceiver* m_zcanReceiver;
  14. uint8_t txbuff[sizeof(hpp272_data_t) + 10];
  15. int32_t m_sensorId = -1;
  16. int32_t m_modbusid = -1;
  17. hpp272_data_t sensordatacache;
  18. ModbusBlockHost modbusBlockHost;
  19. public:
  20. H2O2Sensor(/* args */) {}
  21. ~H2O2Sensor() {}
  22. public:
  23. void initialize(ZCanReceiver* zcanReceiver);
  24. void regSubmodule(int id, UART_HandleTypeDef* huart, uint8_t modbusid);
  25. virtual hpp272_data_t* readSensorData();
  26. public:
  27. virtual void onRceivePacket(CanPacketRxBuffer* rxbuf, uint8_t* packet, size_t len);
  28. virtual void onRceivePacket(Cmdheader_t* cmdheader, int sensorId);
  29. private:
  30. void loop();
  31. uint32_t readAdcVal();
  32. uint32_t readAvgAdcVal();
  33. };
  34. } // namespace iflytop
  35. #endif