项目简介
本项目是基于 bsmp
(基础小消息协议)库的应用项目,用于串行通信网络中设备的状态监控和控制。bsmp
是无状态、同步且轻量级的协议,专为小型嵌入式设备的串行通信网络设计,网络中有一个主设备。该协议处理变量、组、曲线和函数四种简单实体,能完成简单的数据交换任务,如读写设备的变量、曲线和函数等。
项目的主要特性和功能
- 实体管理:支持对变量、组、曲线和函数四种实体的管理。变量可读写或只读,组可批量读写变量,曲线可看作大容量变量,函数可实现远程过程调用。
- 客户端 - 服务器通信:包含客户端和服务器的实现,客户端负责发送请求并接收响应,服务器负责处理请求并返回结果。
- 错误处理:提供静态错误字符串数组和错误字符串函数,用于错误处理和调试信息输出。
- 数据加密:实现了MD5加密算法,用于数据的加密和校验,确保数据的安全性和完整性。
安装使用步骤
安装
假设已下载本项目的源码文件,安装 libbsmp
库,只需在项目根目录下执行以下命令:
sh
make
sudo make install
使用
服务器端
构建服务器时的基本调用顺序如下: ```c
include // 包含所有必要函数的头文件
bsmp_server_t srv; // 服务器实例 bsmp_server_init(&srv); // 初始化实例
// 创建一个函数,用于在读取前和写入后进行干预(可选) void hook(enum bsmp_operation op, struct bsmp_var **list) { // 实现具体逻辑 }
bsmp_register_hook(&srv, hook); // 向服务器注册钩子函数
struct bsmp_var v = {...}; // 创建一个变量 bsmp_register_var(&srv, &v); // 向服务器注册变量
// 同样的方式处理 bsmp_curve 和 bsmp_function
// 一旦所有实体都注册完毕,进入循环处理消息 for(;;) { // 接收消息到 bsmp_raw_packet(这里是 recv_pkt) bsmp_process_packet(&srv, &recv_pkt, &send_pkt); // 发送响应消息(这里是 send_pkt) } ```
客户端
客户端的基本调用顺序如下: ```c
include // 包含所有必要函数的头文件
bsmp_client_t cli; // 客户端实例 bsmp_client_init(&cli, send_func, recv_func); // 初始化实例
// 获取服务器中的所有实体 struct bsmp_var_info_list *vars; bsmp_get_vars_list(&cli, &vars);
struct bsmp_group_list *groups; bsmp_get_groups_list(&cli, &groups);
struct bsmp_curve_info_list *curves; bsmp_get_curves_list(&cli, &curves);
struct bsmp_func_info_list *funcs; bsmp_get_funcs_list(&cli, &funcs);
// 操作实体
// 读取第一个变量 struct bsmp_var_info *first_var = &vars->list[0]; uint8_t first_var_value[first_var->size]; bsmp_read_var(&cli, first_var, first_var_value);
// 写入第一个变量 first_var_value[0] = 0x42; bsmp_write_var(&cli, first_var, first_var_value);
// 查看头文件以了解如何操作其他实体(组、曲线和函数)
``
此外,项目中
examples/full_example` 文件夹提供了一个功能完整且有注释的示例,可参考该示例进行开发。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】