Libmodbus(RTU及TCP)

  • Libmodbus - Linux(ARM)
    • 一、libmodbus官网下载源码
    • 二、交叉编译
      • 1.复制到指定目录下并解压
      • 2.创建安装目录
      • 3.配置编译选项
      • 4.编译
      • 5.安装
    • 三、将动态链接库复制到开发板
    • 四、测试程序
      • 1.创建一个ModbusRTU_Test.c文件,并添加以下内容
      • 2.将install/include/modbus/中的头文件复制到与ModbusRTU_Test.c文件一个目录中
      • 3.编译
    • 四.将可执行文件复制到ARM板下,运行测试
      • 1.复制、赋权限
      • 2. 运行
      • 3.UART ttyS0接个485设备或使用Modbus Slave模拟个设备

Libmodbus - Linux(ARM)

在Linux上移植libmodbus(RTU及TCP),开发板用的RK3288,总结了网上一些方法,记录下以供之后参考学习。。

一、libmodbus官网下载源码

下载地址: link.

二、交叉编译

1.复制到指定目录下并解压


解压:

tar -zxvf libmodbus-3.1.4.tar.gz

2.创建安装目录

mkdir install
chmod 777 install

3.配置编译选项

进入解压目录后

// 进入libmodbus解压目录
cd ./libmodbus-3.1.4
// ./configure --host=[交叉编译工具链前缀] --enable-static --prefix=[安装路径]/install/
./configure --host=arm-linux-gnueabihf --enable-static --prefix=/opt/install/

4.编译

make

5.安装

make install

三、将动态链接库复制到开发板

将install/lib文件夹下的libmodbus.so、libmodbus.so.5、libmodbus.so.5.1.0复制到ARM开发板的/usr/lib目录下。
可以用NFS将文件夹挂载到ARM板上/WinSCP工具等(比较方便)

cd ..
cd ./install/lib/
cp libmodbus.so* /usr/lib


直接复制可能会报错,加 wr 解决

wr cp libmodbus.so* /usr/lib

四、测试程序

1.创建一个ModbusRTU_Test.c文件,并添加以下内容

#include <stdio.h>
#include <unistd.h>
#include <string.h>
#include <stdlib.h>
#include <errno.h>
#include "modbus.h"  //modbus动态库文件int main(int argc, char *argv[])
{uint16_t tab_reg[64] = {0}; //定义存放数据的数组modbus_t *ctx = NULL;int rc;int i;//以串口的方式创建libmobus实例,并设置参数ctx = modbus_new_rtu("/dev/ttyS0", 9600, 'N', 8, 1);                 if (ctx == NULL){fprintf(stderr, "Unable to allocate libmodbus contex\n");return -1;}modbus_set_debug(ctx, 1);      //设置1可看到调试信息modbus_set_slave(ctx, 7);      //设置slave IDif (modbus_connect(ctx) == -1) //等待连接设备{fprintf(stderr, "Connection failed:%s\n", modbus_strerror(errno));return -1;}while (1){printf("\n----------------\n");rc = modbus_read_registers(ctx, 0, 10, tab_reg);if (rc == -1)                   //读取保持寄存器的值,可读取多个连续输入保持寄存器{fprintf(stderr,"%s\n", modbus_strerror(errno));return -1;}for (i=0; i<10; i++){printf("reg[%d] = %d(0x%x)\n", i, tab_reg[i], tab_reg[i]);}usleep(3000000);}modbus_close(ctx);  //关闭modbus连接modbus_free(ctx);   //释放modbus资源,使用完libmodbus需要释放掉return 0;
}

2.将install/include/modbus/中的头文件复制到与ModbusRTU_Test.c文件一个目录中

人比较懒,直接拷贝了

3.编译

gcc -o ModbusRTU_Test ModbusRTU_Test.c -lmodbus
// arm-linux-gnueabihf-gcc ModbusRTU_Test.c -o ModbusRTU_Test -L opt/install/lib/ -lmodbus

四.将可执行文件复制到ARM板下,运行测试

1.复制、赋权限

// 我复制的路径cd /opt/test/.// 设置权限chmod 755 ModbusRTU_Test

2. 运行

3.UART ttyS0接个485设备或使用Modbus Slave模拟个设备

再次运行

Linux移植libmodbus相关推荐

  1. Linux移植之auto.conf、autoconf.h、Mach-types.h的生成过程简析

    在Linux移植之make uImage编译过程分析中分析了uImage文件产生的过程,在uImage产生的过程中,顺带还产生了其它的一些中间文件.这里主要介绍几个比较关键的文件 1.linux-2. ...

  2. ARM的嵌入式Linux移植体验之操作系统

    转自:[url]http://dev.yesky.com/153/2527653.shtml[/url] 06-08-13 08:00 作者: 宋宝华 出处: 天极开发 责任编辑:方舟 在笔者撰写的& ...

  3. Linux移植随笔 tslib

    前段时间让Tslib搞晕头了,原来一切都是版本惹的祸.本文只是一个随笔,随笔者,随意用笔写下心得而已,因此不必较真.正如我所欣赏的"乘兴而来,兴尽而返"一样.--估计当年王子猷是赏 ...

  4. Linux移植随笔:终于解决Tslib的问题了【转】

    转自:http://www.latelee.org/embedded-linux/porting-linux-tslib.html 前段时间让Tslib搞晕头了,原来一切都是版本惹的祸.本文只是一个随 ...

  5. Linux移植之内核启动过程引导阶段分析

    在Linux移植之make uImage编译过程分析中已经提到了uImage是一个压缩的包并且内含压缩程序,可以进行自解压.自解压完成之后内核代码从物理地址为0x30008000处开始运行.下面分析在 ...

  6. Linux移植随笔:对tslib库的ts_test测试程序代码的一点分析

    本文是作者对tslib库的ts_test.c文件进行分析的随笔,其实tslib的几个测试程序结构差不多,譬如ts_print.c和ts_print_raw.c等. 本文并没有涉及太多概念,也没有详细介 ...

  7. Linux移植随笔:终于解决Tslib的问题了

    前段时间让Tslib搞晕头了,原来一切都是版本惹的祸.本文只是一个随笔,随笔者,随意用笔写下心得而已,因此不必较真.正如我所欣赏的"乘兴而来,兴尽而返"一样.--估计当年王子猷是赏 ...

  8. 基于ARM的嵌入式Linux移植真实体验(3)――操作系统

    基于ARM的嵌入式Linux移植真实体验(3)――操作系统 宋宝华[email]21cnbao@21cn.com[/email] 出处:dev.yesky.com 在笔者撰写的<C语言嵌入式系统 ...

  9. pcDuino的linux移植五GPIO驱动开发

    2019独角兽企业重金招聘Python工程师标准>>> 为首的亮,灭.同时如果你GPIO4,GPIO5接个LED,也会跟着亮,灭. 开发环境: 系统:Ubuntu的 一,硬件介绍 仔 ...

  10. linux移植1.3寸oled屏幕,芯片SH1106

    之前移植过MPU6050(I2C协议)和0.96寸oled(SPI协议),这次移植一个I2C协议的oled. I2C的介绍 可以参考上一篇I2C的文章: linux移植MPU6050的I2C驱动 -- ...

最新文章

  1. 2017 清北济南考前刷题Day 2 afternoon
  2. HDUOJ1864最大报销额(01背包)
  3. wifi名称可以有空格吗_收购公司后可以变更公司名称吗,变更公司名称和股权如何处理?...
  4. 信息图:程序员/开发人员实际在用哪些工具
  5. Command NetWork(POJ-3164)
  6. 爬虫-古试词网验证码手工打码访问登陆后页面
  7. FAST算法学习笔记
  8. js in html5,CSS-in-JS 来做的 5 件事情,一般人都不知道!
  9. python用什么软件编程-python开发用什么编辑器
  10. Mac搭建Nodejs+Express
  11. 100%解决VMware虚拟机NAT上网方式,保姆教学
  12. 若依框架入门(前后端分离版本)
  13. UML大作业【小型超市管理系统】
  14. 海思hi3798mv100刷linux,(JL)咪咕mg101_hi3798mv100盒子强刷第三方固件教程
  15. 卑鄙与高尚,理想与现实
  16. 黑龙江省力推互联网与畜牧产业深度融合 打造大数据中心
  17. W05 - 999、云小蜜人工智能训练师
  18. Python新手入门基础,看完让你会有意想不到的收获
  19. Java自动化测试之TestNG生成测试报告
  20. 好像模拟了一个引力场

热门文章

  1. 从网上自学老男孩python全栈的笔记-经历
  2. dbv oracle驱动,oracle dbv使用详解
  3. 移动机械硬盘测试软件,硬盘检测工具HDTune使用教程
  4. win10安装jdk
  5. 如何用微信建立打卡小程序(做打卡签到小程序方法)
  6. 小白教程系列——XMind8 Pro下载安装
  7. zip命令 – 压缩文件
  8. 植物大战僵尸花瓶终结者(砸罐子)无尽模式47波通关小技巧攻略
  9. 计算机考研408真题
  10. 【python】面向对象和正则表达式