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

相关推荐
你也向往长安城吗1 小时前
推荐一个三维导航库:three-pathfinding-3d
javascript·算法
百度智能云1 小时前
VectorDB+FastGPT一站式构建:智能知识库与企业级对话系统实战
算法
AI小白的Python之路2 小时前
数据结构与算法-排序
数据结构·算法·排序算法
DashVector2 小时前
如何通过Java SDK检索Doc
后端·算法·架构
zzz9332 小时前
transformer实战——mask
算法
一只鱼^_3 小时前
牛客周赛 Round 105
数据结构·c++·算法·均值算法·逻辑回归·动态规划·启发式算法
是阿建吖!3 小时前
【动态规划】斐波那契数列模型
算法·动态规划
啊阿狸不会拉杆3 小时前
《算法导论》第 27 章 - 多线程算法
java·jvm·c++·算法·图论
火车叨位去19493 小时前
力扣top100(day04-05)--堆
算法·leetcode·职场和发展
数据智能老司机3 小时前
面向企业的图学习扩展——面向图的传统机器学习
算法·机器学习