【嵌入式】Libmodbus之TCP模式Slave端程序示例
发布日期:2021-06-29 20:52:07
浏览次数:2
分类:技术文章
本文共 1719 字,大约阅读时间需要 5 分钟。
00. 目录
文章目录
01. 开发TCPSlave端程序流程
02. TCP Slave端程序示例
程序示例
#include#ifndef _MSC_VER#include #endif#include #include #include "modbus.h"//TCP模式的Slave端程序int main(void){ int ret = 0; int sockfd = -1; modbus_t* ctx = NULL; modbus_mapping_t* map = NULL; uint8_t query[MODBUS_TCP_MAX_ADU_LENGTH]; //1. 设置串口信息 ctx = modbus_new_tcp("192.168.1.90", 10086); if (NULL == ctx) { fprintf(stderr, "Error: %s\n", modbus_strerror(errno)); return 1; } else { printf("设置TCP信息成功\n"); } //2. 设置调试模式 ret = modbus_set_debug(ctx, TRUE); if (-1 == ret) { printf("modbus_set_debug failed...\n"); modbus_free(ctx); return 1; } //3. 申请内存 存放寄存器数据 map = modbus_mapping_new(500, 500, 500, 500); if (NULL == map) { fprintf(stderr, "Error: mapping %s\n", modbus_strerror(errno)); modbus_free(ctx); return 1; } //4. 开始监听端口 sockfd = modbus_tcp_listen(ctx, 1); if (-1 == sockfd) { printf("modbus_tcp_listen failed...\n"); modbus_free(ctx); return 1; } //5. 接受客户端连接 ret = modbus_tcp_accept(ctx, &sockfd); if (-1 == ret) { printf("modbus_tcp_accept failedl: %s\n", modbus_strerror(errno)); modbus_free(ctx); return 1; } //6. 循环接受客户端请求,并且响应客户端 while (1) { memset(query, 0, sizeof(query)); //获取查询请求报文 ret = modbus_receive(ctx, query); if (ret >= 0) { //恢复响应报文 modbus_reply(ctx, query, ret, map); } else { printf("Connection close\n"); modbus_close(ctx); //等待下一个客户端连接 modbus_tcp_accept(ctx, &sockfd); } } printf("Quit the loop: %s\n", modbus_strerror(errno)); //6. 释放内存 modbus_mapping_free(map); //7. 关闭设备 modbus_close(ctx); modbus_free(ctx); return 0;}
执行结果
03. TCP Slave端程序说明
先启动Slave端程序,然后在启动Master端程序。
04. 预留
05. 附录
源程序下载:
转载地址:https://dengjin.blog.csdn.net/article/details/116803752 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
哈哈,博客排版真的漂亮呢~
[***.90.31.176]2024年04月25日 00时01分43秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
数据结构学习_图(1)深度优先搜索、广度优先搜索和最小生成树
2019-04-30
数据结构学习_图(1)拓扑排序
2019-04-30
利用Strategy模式方便的增加新定义的操作
2019-04-30
command模式(c 语言实现)
2019-04-30
state 模式(c++ 实现)
2019-04-30
打印图形
2019-04-30
新的开始
2019-04-30
dos下常用网络命令
2019-04-30
powerpc汇编指令分析
2019-04-30
欢迎使用CSDN-markdown编辑器
2019-04-30
文章标题
2019-04-30
算法-动态规划
2019-04-30
算法-3个水桶8升水
2019-04-30
算法-稳定匹配
2019-04-30
管道堵住问题的定位
2019-04-30
ssh问题
2019-04-30
struct union and endian
2019-04-30
a bug related with extern
2019-04-30
cbwfq移植的思考
2019-04-30
TCE1保序功能的开发
2019-04-30