代码拉取完成,页面将自动刷新
#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
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。