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.
38 lines
1.1 KiB
38 lines
1.1 KiB
#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
|