1 Star 0 Fork 2

fqdao / Wildfire PID debugging assistant protocol

Create your Gitee Account
Explore and code with more than 12 million developers,Free private repositories !:)
Sign up
This repository doesn't specify license. Please pay attention to the specific project description and its upstream code dependency when using it.
Clone or Download
pid-protocol.h 4.68 KB
Copy Edit Raw Blame History
guangjieMVP authored 2021-05-28 14:26 . first add
#ifndef __PID_PROTOCOL_H__
#define __PID_PROTOCOL_H__
#include "stdint.h"
#ifdef _cplusplus
extern "C" {
#endif
/* 数据接收缓冲区大小 */
#define PROT_FRAME_LEN_RECV 128
/* 校验数据的长度 */
#define PROT_FRAME_LEN_CHECKSUM 1
#pragma pack (1)
/* 数据头结构体 */
typedef __packed struct
{
uint32_t head; // 包头
uint8_t ch; // 通道
uint32_t len; // 包长度
uint8_t cmd; // 命令
// uint8_t sum; // 校验和
}packet_head_t;
#pragma pack () //作用:取消自定义字节对齐方式。
#define FRAME_HEADER 0x59485A53 // 帧头
/* 通道宏定义 */
#define CURVES_CH1 0x01
#define CURVES_CH2 0x02
#define CURVES_CH3 0x03
#define CURVES_CH4 0x04
#define CURVES_CH5 0x05
/* 指令(下位机 -> 上位机) */
#define SEND_TARGET_CMD 0x01 // 发送上位机通道的目标值
#define SEND_FACT_CMD 0x02 // 发送通道实际值
#define SEND_P_I_D_CMD 0x03 // 发送 PID 值(同步上位机显示的值)
#define SEND_START_CMD 0x04 // 发送启动指令(同步上位机按钮状态)
#define SEND_STOP_CMD 0x05 // 发送停止指令(同步上位机按钮状态)
#define SEND_PERIOD_CMD 0x06 // 发送周期(同步上位机显示的值)
/* 指令(上位机 -> 下位机) */
#define SET_P_I_D_CMD 0x10 // 设置 PID 值
#define SET_TARGET_CMD 0x11 // 设置目标值
#define START_CMD 0x12 // 启动指令
#define STOP_CMD 0x13 // 停止指令
#define RESET_CMD 0x14 // 复位指令
#define SET_PERIOD_CMD 0x15 // 设置周期
/* 空指令 */
#define CMD_NONE 0xFF // 空指令
/* 索引值宏定义 */
#define HEAD_INDEX_VAL 0x3u // 包头索引值(4字节)
#define CHX_INDEX_VAL 0x4u // 通道索引值(1字节)
#define LEN_INDEX_VAL 0x5u // 包长索引值(4字节)
#define CMD_INDEX_VAL 0x9u // 命令索引值(1字节)
#define EXCHANGE_H_L_BIT(data) ((((data) << 24) & 0xFF000000) |\
(((data) << 8) & 0x00FF0000) |\
(((data) >> 8) & 0x0000FF00) |\
(((data) >> 24) & 0x000000FF)) // 交换高低字节
#define COMPOUND_32BIT(data) (((*(data-0) << 24) & 0xFF000000) |\
((*(data-1) << 16) & 0x00FF0000) |\
((*(data-2) << 8) & 0x0000FF00) |\
((*(data-3) << 0) & 0x000000FF)) // 合成为一个字
/**
* @brief 接收数据处理
* @param *data: 要计算的数据的数组.
* @param data_len: 数据的大小
* @return void.
*/
void protocol_data_recv(uint8_t *data, uint16_t data_len);
/**
* @brief 初始化接收协议
* @param void
* @return 初始化结果.
*/
int32_t protocol_init(void);
/**
* @brief 接收的数据处理
* @param void
* @return -1:没有找到一个正确的命令.
*/
int8_t receiving_process(void);
/**
* @brief 设置上位机的值
* @param cmd:命令
* @param ch: 曲线通道
* @param data:参数指针
* @param num:参数个数
* @retval 无
*/
void set_computer_value(uint8_t cmd, uint8_t ch, void *data, uint8_t num);
/**
* @brief 最终发送数据输出的底层接口函数,需要用户实现
* @param data : 发送的数据
* @param num: 参数大小
* @retval none
*/
__weak void port_send_data_to_computer(void *data, uint8_t num);
/**
* @brief 处理上位机发送过来的PID参数
* @param p : PID p参数
* @param i: PID i参数
* @param d : PID d参数
* @retval none
* @note 需要用户实现
*/
__weak void set_pid_paramter_cmd(float p, float i, float d);
/**
* @brief: 处理上位机开始PID控制命令
* @param: none
* @retval: none
* @note: 需要用户实现
*/
__weak void pid_start_cmd(void);
/**
* @brief: 处理上位机停止PID控制命令
* @param: none
* @retval: none
* @note: 需要用户实现
*/
__weak void pid_stop_cmd(void);
/**
* @brief: 处理上位机复位命令
* @param: none
* @retval: none
* @note: 需要用户实现
*/
__weak void pid_reset_cmd(void);
/**
* @brief: 处理上位机设置目标值命令
* @param: actual_val - 目标值
* @retval: none
* @note: 需要用户实现
*/
__weak void set_pid_actual_val_cmd(int actual_val);
/**
* @brief: 设置PID周期数
* @param: period - 周期数
* @retval:
* @note: 需要用户实现
*/
__weak void set_pid_period_cmd(uint32_t period);
#ifdef _cplusplus
}
#endif
#endif
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/fqdao/wildfire-pid-debugging-assistant-protocol.git
git@gitee.com:fqdao/wildfire-pid-debugging-assistant-protocol.git
fqdao
wildfire-pid-debugging-assistant-protocol
Wildfire PID debugging assistant protocol
master

Search

344bd9b3 5694891 D2dac590 5694891