代码拉取完成,页面将自动刷新
目前仅实现主机部分,从机部分有时间再做。
实现功能:
03读寄存器功能码,使用周期事件查询方式,需要在初始化部分添加所有需要查询的寄存器。详细API先查看mf_mbevent.c文件。
同03功能码。
06写寄存器功能码,使用事件实时添加方式,发送完成后自动销毁,下次发送需要重新添加事件,发送优先级固定比查询事件的优先级高。
应答接收使用虚函数,需要用户重写,或者直接使用mf_mbport.c文件,建议重写。
#include "mf_mb.h" //引用头文件
void main(void)
{
mf_mb_init(); //初始化
while(1)
{
mf_mb_handle(); //任务调度
}
}
void time_IRQhandler(void)//定时器1ms中断回调
{
mf_time_tick_inc();
}
#include "mf_mb.h"
//初始化读取事件
void mf_mb_event_read_init(void) //虚函数重写
{
//0x01:MODBUS从机ID;
//MF_MB_EVENT_FUNC_03:03功能码(详情查看mf_mbevent.h);
//Register:起始寄存器地址;
//length:要查询的寄存器个数。
mf_mb_event_read_add(0x01,MF_MB_EVENT_FUNC_03,Register,length); //添加读取的寄存器事件
mf_mb_event_read_add(0x01,MF_MB_EVENT_FUNC_03,Register,length);
mf_mb_event_read_add(0x01,MF_MB_EVENT_FUNC_03,Register,length);
...
}
#include "mf_mb.h"
void add_event(uint16_t *data)
{
//0x01:MODBUS从机ID;
//MF_MB_EVENT_FUNC_06:06功能码(详情查看mf_mbevent.h);
//Register:起始寄存器地址;
//data:数据内容;
//length:要查询的寄存器个数。
mf_mb_event_write_add(0x01,MF_MB_EVENT_FUNC_06,Register,data,length);//添加修改的寄存器事件,*成功发送后,自动销毁此事件*
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。