发布时间:2026/8/13 17:49:18
openwrt --对接modbus传感器 文章目录前言一、libmodbus是什么二、使用步骤1.demo前言这篇文章主要讲讲如何在linux下使用libmodbus函数库对接传感器。提示以下是本篇文章正文内容下面案例可供参考一、libmodbus是什么libmodbus是一个modbus的函数库在openwrt上面要去make menuconfig中配置。在ubuntu下面执行apt-get install libmodbus-dev安装即可。二、使用步骤1.demo关于modbus的一个小demo需要有点基础#includestdio.h#includestdlib.h#includestring.h#includeunistd.h#includemodbus.h#includemodbus-rtu.h#includeerrno.h#defineLOG(format,argument...)printf(\033[1;32m[ %s ](line %d) - format\r\n\033[0m,__FUNCTION__,__LINE__,##argument)typedefstructmodbus_serial_s{charname[10];// 名称最大长度为10个字符intserial_type;// 串口类型例如RS232, RS485等intspeed;// 波特率例如9600, 115200等intdata_bits;// 数据位数例如8, 7等intstop_bits;// 停止位数例如1, 2等charcheck_bits[2];// 校验位通常为N无校验E偶校验O奇校验modbus_t*ctx;// 指向Modbus上下文的指针用于Modbus通信}modbus_serial_t;modbus_serial_trtuctl;// 定义一个静态函数用于Modbus RTU定时轮询staticvoidmodbus_rtu_timed_polling(){intregs0;// 读取到的寄存器数量uint16_tbuf[50]{0};// 存储读取寄存器数据的缓冲区初始化为0// 读取Modbus寄存器// 参数1Modbus上下文ctx// 参数2起始寄存器地址0x01// 参数3读取寄存器的数量0x03// 参数4用于存储读取数据的缓冲区bufregsmodbus_read_registers(rtuctl.ctx,0x01,0x03,buf);if(regs-1)// 如果读取失败返回-1{LOG(%s\n,modbus_strerror(errno));// 打印错误信息return;// 退出函数}// 遍历读取到的寄存器数据并打印每个寄存器的值for(chari0;iregs;i){LOG(%#x \n,buf[i]);// 打印寄存器值以十六进制格式}sleep(1);}// 定义一个静态函数用于注册Modbus串口staticintmodbus_serial_registers(modbus_serial_t*node){inti0;// 循环计数器charport_name[32];// 串口名称缓冲区// 打印调试信息LOG(************** modbus_serial_registers start\n);LOG(name:%s \n,node-name);// 打印串口名称LOG(serial_type:%d \n,node-serial_type);// 打印串口类型LOG(speed:%d \n,node-speed);// 打印波特率LOG(data_bits:%d \n,node-data_bits);// 打印数据位LOG(stop_bits:%d \n,node-stop_bits);// 打印停止位LOG(check_bits:%s \n,node-check_bits);// 打印校验位// 初始化串口名称缓冲区为0memset(port_name,0,32);if(!strlen(node-name)){LOG(name:%s disenale open\n,port_name);// 打印错误信息return-1;// 返回错误}// 构建完整的串口设备路径sprintf(port_name,/dev/%s,node-name);LOG(name:%s \n,port_name);// 打印完整的串口设备路径// 打开Modbus RTU端口// 参数1串口设备路径// 参数2波特率// 参数3校验位N、E、O// 参数4数据位// 参数5停止位node-ctxmodbus_new_rtu(port_name,node-speed,(char)node-check_bits[0],node-data_bits,node-stop_bits);if(node-ctxNULL)// 如果打开失败{LOG(Connexion failed: %s\n,modbus_strerror(errno));// 打印错误信息return-1;// 返回错误}// 设置Modbus调试模式modbus_set_debug(node-ctx,TRUE);// 设置从设备地址为1modbus_set_slave(node-ctx,1);// 设置串口模式// 串口类型为1时设置为RS232if(node-serial_type1){modbus_rtu_set_serial_mode(node-ctx,MODBUS_RTU_RS232);}else// 否则设置为RS485{modbus_rtu_set_serial_mode(node-ctx,MODBUS_RTU_RS485);}// 设置RTS可选modbus_rtu_set_rts(node-ctx,MODBUS_RTU_RTS_UP);// 建立Modbus连接if(modbus_connect(node-ctx)-1)// 如果连接失败{LOG(Connexion failed: %s\n,modbus_strerror(errno));// 打印错误信息modbus_free(node-ctx);// 释放Modbus上下文return-1;// 返回错误}// 设置应答延时可选// 参数1秒// 参数2微秒modbus_set_response_timeout(node-ctx,3,0);LOG(************** modbus_serial_registers end\n);// 打印调试信息表示函数结束return0;// 成功返回0}intmain(intargc,char*argv[]){memcpy(rtuctl.name,ttyS1,11);memcpy(rtuctl.check_bits,N,11);rtuctl.serial_type2;rtuctl.speed9600;rtuctl.data_bits8;rtuctl.stop_bits0;modbus_serial_registers(rtuctl);while(1){modbus_rtu_timed_polling();}return0;}

相关新闻

2026/8/13 18:34:22

DB-GPT:开源智能代理数据助手架构深度解析与技术实现

DB-GPT:开源智能代理数据助手架构深度解析与技术实现 【免费下载链接】DB-GPT open-source agentic AI data assistant for the next generation of AI Data products. 项目地址: https://gitcode.com/GitHub_Trending/db/DB-GPT DB-GPT作为新一代开源AI数据…

2026/8/13 18:34:22

2026实用小龙虾ai推荐清单 全能移动金融开发智能体工具详细测评

2026年本地AI智能体技术快速普及,大众口中的小龙虾AI依托 OpenClaw 底层框架打造,区别于传统仅能文字问答的云端AI,这类工具可本地运行,自主操控设备完成批量办公、内容产出、行情监控、代码开发等自动化任务,大幅降低…

2026/8/13 18:29:20

Bambu Studio完整指南:如何快速掌握专业3D打印切片软件

Bambu Studio完整指南:如何快速掌握专业3D打印切片软件 🔥【免费下载链接】BambuStudio PC Software for BambuLab and other 3D printers 项目地址: https://gitcode.com/GitHub_Trending/ba/BambuStudio 你是否曾为复杂的3D打印参数设置而头疼&…

2026/8/12 10:37:12

如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南 【免费下载链接】chinese_license_plate_generator 中国车牌生成器 项目地址: https://gitcode.com/gh_mirrors/ch/chinese_license_plate_generator 中国车牌生成器是一个基于Python的开源项目&#xff0c…

2026/8/12 5:35:25

当 LLM 遇见大文档:主流开源项目如何处理上下文超限

从 Agentic Loop 到 Repo Map,七种策略与六类陷阱引言:128K vs 10MB 的硬冲突 2026 年的 LLM 上下文窗口已达到 128K ~ 1M token(≈ 0.5MB ~ 4MB 文本),但 LLM 想要处理的真实数据规模远远超过这个量级:真实…

2026/8/13 0:02:21

Prefix Cache

Prefix Cache(前缀缓存) 是大模型推理引擎(如 vLLM、SGLang、TensorRT-LLM)中用于跨请求复用已计算 KV Cache 的核心内存与计算优化技术。 它的核心目的在于:彻底消除重复 Prompt 的 Prefill 阶段计算,将首…

2026/8/13 0:02:21

VSCode插件精选:从AI补全到代码规范,打造高效开发环境

1. 项目概述:为什么说插件是VSCode的灵魂?如果你和我一样,每天有超过8小时的时间是在VSCode里度过的,那你肯定明白,一个顺手的开发环境有多重要。VSCode本身已经足够优秀了,但真正让它从“好用的编辑器”蜕…

2026/8/13 0:02:21

如何快速完成文件批量重命名:FreeReNamer终极指南

如何快速完成文件批量重命名:FreeReNamer终极指南 【免费下载链接】FreeReNamer 功能强大又易用的文件批量重命名软件 项目地址: https://gitcode.com/gh_mirrors/fr/FreeReNamer 你是否曾经面对成百上千个杂乱无章的文件感到头疼?传统的手动重命…

2026/8/10 11:20:30

实测才敢推 AI论文网站 2026最新测评与推荐

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。一、综…

2026/8/11 17:06:59

2026必备!AI论文网站测评:最新推荐与深度对比

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

2026/8/11 3:05:11

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…