#pragma once // #include "stm32basic/stm32basic.hpp" #include "stm32basic/zbasic.h" namespace iflytop { class ModbusBlockHost { UART_HandleTypeDef *huart; uint8_t txbuff[100]; uint8_t rxbuff[100]; zmutex m_modbus_lock = {"m_modbus_lock"}; bool m_dump = false; Pin_t rePin = PinNull; ZGPIO txEnGpio; public: ModbusBlockHost(); ~ModbusBlockHost(); void initialize(UART_HandleTypeDef *huart, Pin_t rePin = PinNull); void enableDump(bool enable); bool writeReg06(uint8_t slaveAddr, uint16_t regAddr, uint16_t regVal, int overtimems); bool readReg03(uint8_t slaveAddr, uint16_t regAddr, uint16_t *regVal, int overtimems); bool readReg03Muti(uint8_t slaveAddr, uint16_t regAddr, int regNum, uint16_t *regVal, int overtimems); bool writeReg10(uint8_t slaveAddr, uint16_t regAddr, uint16_t regVal, int overtimems); bool writeReg10Muti(uint8_t slaveAddr, uint16_t regAddr, int regNum, uint16_t *regVal, int overtimems); private: void cleanRxBuff(); void uarttx(uint8_t *buff, size_t len); bool uartrx(uint8_t *buff, size_t len, int overtimems); }; } // namespace iflytop