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。重点在于理解面向对象的设计方法

相关推荐
鱼很腾apoc2 小时前
【学习篇】第20期 超详解 C++ 多态:从语法规则到底层原理
java·c语言·开发语言·c++·学习·算法·青少年编程
小许同学记录成长3 小时前
三维重建技术文档
算法·无人机
小O的算法实验室5 小时前
2026年ASOC,基于多目标优化去噪双存档进化算法+路径规划,深度解析+性能实测
算法·论文复现·智能算法·智能算法改进
2601_954526755 小时前
逆向解析Temu底层动销算法:基于API高并发轮询与全域存量透视的自动化架构重构
算法·架构·自动化
Σίσυφος19006 小时前
数据标准化(拟合的时候使用非常重要)
人工智能·算法
knight_9___6 小时前
大模型project面试7
人工智能·python·算法·面试·大模型·agent
NashSKY7 小时前
EM 算法完整推导与本质剖析
算法·机器学习·概率论
foundbug9997 小时前
MATLAB实现:基于图像对比度和波段相关性的高光谱波段选择算法
开发语言·算法·matlab
嘿嘿嘿x37 小时前
Linux-实践
linux·运维·算法