2 Star 2 Fork 2

Actor_V / MF_Modbus

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
mf_mbevent.h 1.96 KB
一键复制 编辑 原始数据 按行查看 历史
myfuture 提交于 2022-06-10 16:56 . 优化写寄存器事件
#ifndef __MF_MBEVENT_H__
#define __MF_MBEVENT_H__
#include "mf_mb.h"
typedef enum
{
MF_MB_EVENT_FUNC_03 = 0x03, //读保持寄存器
MF_MB_EVENT_FUNC_04 = 0x04, //读输入寄存器
MF_MB_EVENT_FUNC_06 = 0x06, //写单个保持寄存器
MF_MB_EVENT_FUNC_10 = 0x10, //写多个保持寄存器
}Mf_Mb_Event_Func_code_e;
//发送事件类型
typedef enum
{
MF_MB_READ_EVENT = 0, //读取事件
MF_MB_WRITE_EVENT = 1, //写入事件
}Mf_Mb_Event_Type_e;
//读寄存器事件结构体
typedef struct
{
uint8_t slave_addr; //从站地址
uint8_t func_code; //功能码
uint16_t reg_addr; //寄存器起始地址
uint16_t reg_num; //寄存器数量
uint16_t crc; //CRC校验
}Mf_Mb_ReadEvent_t;
//写单个保持寄存器事件结构体
typedef struct
{
uint8_t slave_addr; //从站地址
uint8_t func_code; //功能码
uint16_t reg_addr; //寄存器起始地址
uint16_t reg_data; //寄存器数据内容
uint16_t crc; //CRC校验
}Mf_Mb_WriteEvent_t;
//写多个保持寄存器事件结构体
typedef struct
{
uint8_t slave_addr; //从站地址
uint8_t func_code; //功能码
uint16_t reg_addr; //寄存器起始地址
uint8_t reg_num; //寄存器个数
uint16_t* reg_data; //寄存器数据内容
uint16_t crc; //CRC校验
}Mf_Mb_WriteEvent_More_t;
//临时事件结构体
typedef struct
{
uint8_t* data; //当前临时事件的指针,uint8_t类型需通过功能码判断强转成读取事件还是写入事件
uint8_t len; //发送数据的长度
uint8_t lock; //锁,防止意外篡改
Mf_Mb_Event_Type_e event_type; //发送事件类型
}Mf_Mb_Event_Now_t;
//当前正在发送的事件信息
extern Mf_Mb_Event_Now_t* mf_mb_event_tx_now;
//当前正在等待接收的事件信息
extern Mf_Mb_Event_Now_t* mf_mb_event_rx_now;
void mf_mb_event_init(void);
void mf_mb_event_tx(void);
uint8_t* mf_mb_event_read_add(uint8_t slave_addr, uint8_t func_code, uint16_t reg_addr, uint16_t reg_num);
uint8_t* mf_mb_event_write_add(uint8_t slave_addr, uint8_t func_code, uint16_t reg_addr, uint16_t* reg_data, uint8_t reg_num);
void mf_mb_event_idle_wait(void);
void mf_mb_event_tx_end(void);
void mf_mb_event_rx(void);
void mf_mb_event_rx_err(void);
void mf_mb_event_rx_end(void);
#endif
C
1
https://gitee.com/Actor_V/mf_modbus.git
git@gitee.com:Actor_V/mf_modbus.git
Actor_V
mf_modbus
MF_Modbus
V1.0

搜索帮助