## b_mod_modbus ### 数据结构 ```C //这部分代码主要是提供RTU模式的主机读写功能 //从机返回读数据结果的数据结构 typedef struct { uint8_t func; uint8_t reg_num; uint16_t *reg_value; } bMB_ReadResult_t; //从机返回写数据结果的数据结构 typedef struct { uint8_t func; uint16_t reg; uint16_t reg_num; } bMB_WriteResult_t; //传入回调函数的数据结构 typedef struct { uint8_t type; // 0: read 1:write union { bMB_ReadResult_t r_result; bMB_WriteResult_t w_result; } result; } bMB_SlaveDeviceData_t; typedef void (*pMB_Send_t)(uint8_t *pbuf, uint16_t len); typedef void (*pMB_Callback_t)(bMB_SlaveDeviceData_t *pdata); //指定发送函数和回调函数 typedef struct { pMB_Send_t f; pMB_Callback_t cb; } bMB_Info_t; typedef bMB_Info_t bModbusInstance_t; //可以通过这个宏快速创建实例,创建实例的时候指定发送和回调函数 #define bMODBUS_INSTANCE(name, pSendData, pCallback) \ bModbusInstance_t name = {.f = pSendData, .cb = pCallback}; ``` ### 接口介绍 ```C //读取寄存器的值 int bMB_ReadRegs(bModbusInstance_t *pModbusInstance, uint8_t addr, uint8_t func, uint16_t reg,uint16_t num); //写寄存器的值 int bMB_WriteRegs(bModbusInstance_t *pModbusInstance, uint8_t addr, uint8_t func, uint16_t reg, uint16_t num, uint16_t *reg_value); //将接收到的数据喂给模块,让模块进行解析。解析正确后执行回调 int bMB_FeedReceivedData(bModbusInstance_t *pModbusInstance, uint8_t *pbuf, uint16_t len); ``` ### 使用例子 ```C //...待添加 ```