#ifndef _MODBUS_H #define _MODBUS_H #include #define SLAVE_ID_DEFAULT (1u) #define MODBUS_SLAVE_ID 0 #define MODBUS_FUN_CODE 1 #define MODBUS_START_ADDR_H 2 #define MODBUS_START_ADDR_L 3 #define MODBUS_SIZE_H 4 #define MODBUS_SIZE_L 5 #define MODBUS_06_VAL_H 4 #define MODBUS_06_VAL_L 5 typedef enum { MODBUS_STATUS_OK, MODBUS_STATUS_ERR } ModbusStatus_t; ModbusStatus_t modbus_process(const uint8_t * buffer_cmd, uint8_t recv_len, uint8_t * buffer_resp, uint8_t * resp_len); typedef struct { uint8_t slaveAddr; uint8_t funCode; uint16_t startAddr; uint16_t num; uint16_t crc; } ModbusFrameCmd03_t; typedef struct { uint8_t slaveAddr; uint8_t funCode; uint8_t byteNum; uint16_t data[125]; uint16_t crc; } ModbusFrameRes03_t; /* 06功能码命令和响应格式一样 */ typedef struct { uint8_t slaveAddr; uint8_t funCode; uint16_t regAddr; uint16_t regValue; uint16_t crc; } ModbusFrameCmdRes06_t; typedef struct { } ModbusFrameCmd0A_t; typedef struct { } ModbusFrameRes0A_t; #endif