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.

36 lines
1015 B

12 months ago
12 months ago
11 months ago
12 months ago
12 months ago
  1. #pragma once
  2. //
  3. #include "stm32basic/stm32basic.hpp"
  4. #include "stm32basic/zbasic.h"
  5. namespace iflytop {
  6. class ModbusBlockHost {
  7. UART_HandleTypeDef *huart;
  8. uint8_t txbuff[100];
  9. uint8_t rxbuff[100];
  10. zmutex m_modbus_lock = {"m_modbus_lock"};
  11. bool m_dump = false;
  12. Pin_t rePin = PinNull;
  13. ZGPIO txEnGpio;
  14. public:
  15. ModbusBlockHost();
  16. ~ModbusBlockHost();
  17. void initialize(UART_HandleTypeDef *huart, Pin_t rePin = PinNull);
  18. void enableDump(bool enable);
  19. bool readReg03(uint8_t slaveAddr, uint16_t regAddr, uint16_t *regVal, int overtimems);
  20. bool readReg03Muti(uint8_t slaveAddr, uint16_t regAddr, uint16_t *regVal, int regNum, int overtimems);
  21. bool writeReg06(uint8_t slaveAddr, uint16_t regAddr, uint16_t regVal, int overtimems);
  22. bool writeReg10(uint8_t slaveAddr, uint16_t regAddr, uint16_t regVal, int overtimems);
  23. private:
  24. void cleanRxBuff();
  25. void uarttx(uint8_t *buff, size_t len);
  26. bool uartrx(uint8_t *buff, size_t len, int overtimems);
  27. };
  28. } // namespace iflytop