libmodbus 疑问:对象结构体是如何关联的

  1. 主要结构体

结构体 modbus_t :

包含 int slave(从机地址)、timeout、 backend(各种操作); backend_data 等

结构体modbus_backend_t:

build_request_basis、set_slave、receive、send、connect 等操作

结构体 modbus_tcp_t :

包含ip 、port 等信息

2. 问 结构体之间如何使用和关联?

  1. 创建结构体变量 :const modbus_backend_t _modbus_tcp_backend ={_modbus_set_slave;...各种函数}

  2. 创建modbus_t 对象 ctx = (modbus_t *)malloc(sizeof(modbus_t)); // 最大的容器

  3. modbus_t 通过指针关联各种操作ctx->backend = &_modbus_tcp_backend;

_modbus_tcp_backend 这个结构体变量里面定义了各种实际操作的函数。

  1. modbus_t 关联具体的实体属性 modubs_tcp/rtu :

ctx->backend_data = (modbus_tcp_t *)malloc(sizeof(modbus_tcp_t));

然后填充 backend_data 信息。

如何填充?为更好操作 定义一个指针先指向这块内存,然后给这块内存赋值。

modbus_tcp_t *ctx_tcp;

ctx_tcp = (modbus_tcp_t *)ctx->backend_data;

strlcpy(ctx_tcp->ip, ip, dest_size);

ctx_tcp->port = port;

  1. 最后:返回 modbus_t

modbus_backend_t * 指向不同的具体类型设备 tcp/rtu。重点在于理解面向对象的设计方法

相关推荐
171320330计算机毕设编程25 分钟前
计算机毕业设计 基于YOLO改进算法的车辆特征识别系统设计与实现--lw
java·大数据·python·sql·算法
姜鱼问生38 分钟前
Nginx gzip 压缩:一个配置让页面加载快 3 倍
后端·算法·架构
不会就选b43 分钟前
算法日常・每日刷题--<动态规划>23
算法·动态规划
GreatSQL社区1 小时前
主从复制SQL线程中断——字符集砸出的坑
java·数据库·算法
Tisfy2 小时前
LeetCode 2333.最小差值平方和:排序 + 数学计算(不用二分)
数学·算法·leetcode·题解·贪心·排序
aqiu1111112 小时前
【C++算法打怪专栏】LeetCode 217. 存在重复元素(解法总结)
c++·算法·leetcode
yi0114 小时前
DAY28: LeetCode 111. 二叉树的最小深度
人工智能·笔记·python·算法·leetcode·二叉树·递归
wuyk5554 小时前
27.LeetCode 2265. 统计值等于子树平均值的节点数 —— 后序遍历实战
stm32·单片机·嵌入式硬件·算法
xiangyun614 小时前
C++ list 模拟实现(二):const迭代器与反向迭代器,模板的黑魔法
开发语言·数据库·c++·算法·stl·list
xxwl5854 小时前
三、区域赛算法模版第三章---字符串相关算法
笔记·学习·算法