代码拉取完成,页面将自动刷新
一种用于嵌入式设备的简单通信协议,可以方便用于设备芯片间的通信。
y_protocol 目前包含两个源码文件 y_protocol.c 和 y_protocol.h 文件,使用时无需其他设置。
示例:
#include <stdio.h>
#include <stdlib.h>
#include "y_protocol.h"
#include "y_log.h"
int main() {
// 打印版本号
y_protocol_print_version();
// 打包解包示例
PROTOCOL_MSG_st msg;
msg.mod_id = 1;
msg.cmd_id = 2;
msg.cmd_size = 3;
uint8_t buf[4] = {4, 5, 6};
msg.cmd_data = buf;
// 打包数据
YLOG_CRLF();
YLOGI("********** pcak msg **********");
uint8_t *send_data;
uint16_t send_size;
if (y_protocol_pack(PROTOCOL_MSG, &msg, &send_data, &send_size) == true) {
YLOG_DATA("pack msg", send_data, send_size);
// free(send_data);
}
// 解包数据
YLOG_CRLF();
YLOGI("********** unpcak msg **********");
PROTOCOL_MSG_st *p_msg;
y_protocol_unpack(PROTOCOL_MSG, send_data, send_size, (void **) &p_msg);
YLOGI("p_msg->mod_id %d", p_msg->mod_id);
YLOGI("p_msg->cmd_id %d", p_msg->cmd_id);
YLOGI("p_msg->cmd_size %d", p_msg->cmd_size);
YLOG_DATA("p_msg->cmd_data", p_msg->cmd_data, p_msg->cmd_size);
// 释放内存
free(p_msg->cmd_data);
free(p_msg);
free(send_data);
return 0;
}
// 输出结果
[INFO ][0252][ y_protocol_print_version] ----- < y_protocol module version : V0.1.0 >
[INFO ][0018][ main] ----- < ********** pcak msg ********** >
[DATA ][0022][ main] ----- < pack msg 6 byte : >
[DATA ][0022][ main] ----- < 01 02 03 04 05 06 >
[INFO ][0029][ main] ----- < ********** unpcak msg ********** >
[INFO ][0032][ main] ----- < p_msg->mod_id 1 >
[INFO ][0033][ main] ----- < p_msg->cmd_id 2 >
[INFO ][0034][ main] ----- < p_msg->cmd_size 3 >
[DATA ][0035][ main] ----- < p_msg->cmd_data 3 byte : >
[DATA ][0035][ main] ----- < 04 05 06 >
y_protocol 目前依赖于以下代码库
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。