libmodbus库的交叉编译:
1】到libmodbus官网https://libmodbus.org/download/下载安装包,内部自带configure文件,官网推荐v3.1.6稳定版。
另外注意,如果是从github上克隆源码的,则包里没有configure文件,需要额外安装部分软件,才能生成configure脚本。
github下载需要安装额外软件(官网下载跳过):
sudo apt install autoconf
sudo apt install automake
sudo apt install libtool
./autogen.sh
即可生成configure文件。
2】解压安装包:tar zxvf libmodbus-3.1.6.tar.gz
3】进入安装包:cd libmodbus-3.1.6
4】创建文件夹,存放编译输出:mkdir install
5】source交叉编译环境变量:source ~/Downloads/neoway-arm-oe-linux/neoway-env-init.sh,根据实际目录调整
6】配置交叉编译器:./configure --host=arm-oe-linux-gnueabi --enable-static --prefix=/home/a/gitlab-ws/libmodbus-3.1.6/install/,注意prefix目录改为第4】步创建的目录(pwd命令可查看路径,复制即可)
7】make
8】make install

这样就会在刚刚创建的install文件夹下,看到include,lib,以备主程序调用。
将lib下的3个动态库libmodbus.so.x.x,项目所在环境的/usr/lib目录。

使用:

在项目makefile文件中  -L./lib -lmodbus 在调用函数的c文件中引入.h文件

modbus的初始化对象操作和设置参数

ctx = modbus_new_rtu("/dev/ttyHSL0", , 'N', , );

    //set slave modbus addr defalut is 3

    modbus_set_slave(ctx, 3);

    //set modbus timeout 3s 

    modbus_set_response_timeout(ctx, , ); //sec,usec,超时设置 设置为3s

    //modbus_set_byte_timeout(ctx, 0, 800*1000);//800ms

    if (modbus_connect(ctx) == -)

    {
fprintf(stderr, "Connection failed: %s\n", modbus_strerror(errno)); modbus_free(ctx); return -;
}

modbus读取输入寄存器实例

uint16_t inv_data_buf[] = {}; //每帧最多125个寄存器,官方规定
memset(inv_data_buf, , sizeof(inv_data_buf));
int len =modbus_read_input_registers(ctx, , , inv_data_buf); //1000 56
if (len < )
{
printf("[error] read 3x registers: (%d)\n", len);
return -;
}

libmodbus库linux 嵌入式设备中的使用的更多相关文章

  1. Linux字符设备中的两个重要结构体(file、inode)

    对于Linux系统中,一般字符设备和驱动之间的函数调用关系如下图所示 上图描述了用户空间应用程序通过系统调用来调用程序的过程.一般而言在驱动程序的设计中,会关系 struct file 和 struc ...

  2. 在嵌入式设备中使用 JavaScript 的前景

    by Conmajia PC上的JavaScript已经发展到ECMAScript 6(ES6),马上ES10都快出来了(虽然还是草案),但是硬件上的JS却很少听说.这几年手持设备/可穿戴设备的发展非 ...

  3. 在嵌入式设备中实现webrtc的第三种方式①

    最近两年,我对于网络知识,包括底层协议学习比较多,webrtc这种几乎是使用到了所有层面网络协议的技术也逐渐进入我的视野. 之前我提出了两种在嵌入式设备上实现webrtc的方式,一是用官方代码,然后改 ...

  4. Linux驱动设备中的并发控制

    一.基本概念 二.中断屏蔽 三.原子操作 四.自旋锁 五.信号量 六.互斥体 七.自旋锁与信号量的比较 Linux设备驱动中必须解决的一个问题是多个进程对共享资源的并发访问,并发的访问会导致竞态,即使 ...

  5. IO调度 | Linux块设备中的IO路径及调度策略

    当文件系统通过submit_bio提交IO之后,请求就进入了通用块层.通用块层会对IO进行一些预处理的动作,其目的是为了保证请求能够更加合理的发送到底层的磁盘设备,尽量保证性能最佳.这里面比较重要的就 ...

  6. 在嵌入式设备中实现webrtc的第三种方式③

    本系列的最后一篇,讲解收发音视频数据. 贴出最终效果: 其实很简单,直接调用writeFrame即可,如下图: 当然,这是部分代码,完整代码在下面,展开可见: 1 #include "com ...

  7. Linux嵌入式开发中常用的两个工具

    TFTP 全称:Trivial File Transfer Protocol(简单文件传输协议) 进行小文件传输 在ubuntu下设置TFTP服务器 $ sudo apt-get install tf ...

  8. 嵌入式设备上的 Linux 系统开发

    转载:http://www.ibm.com/developerworks/cn/linux/embed/embdev/index.html   如果您刚接触嵌入式开发,那么大量可用的引导装载程序(bo ...

  9. 嵌入式设备web服务器比较

    目录(?)[-] Boa Thttpd Mini_httpd Shttpd Lighttpd Goahead AppWeb Apache 开发语言和开发工具 结论 备注   现在在嵌入式设备中所使用的 ...

随机推荐

  1. Python变量、方法、类的命名规则

    1. 变量命名总结: - 1.单下划线开头变量:protected - 2.双下划线开头变量:private - 3.双下划线开头,双下划线结尾:系统内置变量 2. 函数命名总结: - 1.私有方法: ...

  2. Hello,world!一切的开始

    普及知识 当我们准备开发Java程序时,我们需要两样基础的工具--JDK与IDE.在这里需要解释一下什么是JDK还有IDE.JDK的全称是Java Development kit,即Java开发工具集 ...

  3. 【存储类、链接、存储管理】分配内存:malloc()、free()

    一.使用库函数:malloc()分配管理内存 (一)标识符(Identifier) 1. 定义变量时,使用了诸如 a.abc.mn123 这样的名字,它们都是程序员自己起的,一般能够表达出变量的作用, ...

  4. 三、Linux系统中的文件类型和文件扩展名

    .sock文件也是一类特殊的文件,这类文件通常用在网络之间进行数据连接,如:我们可以启动一个程序来监听客户端的要求,客户端可以通过套接字来进行通信: linux中的文件类型 文件类型介绍 Linux系 ...

  5. 通过欧拉计划学Rust编程(第54题)

    由于研究Libra等数字货币编程技术的需要,学习了一段时间的Rust编程,一不小心刷题上瘾. 刷完欧拉计划中的63道基础题,能学会Rust编程吗? "欧拉计划"的网址: https ...

  6. 链表基本操作与排序(c语言)

    本设计程序用C编写,完成单链表的生成,任意位置的插入.删除,以及确定某一元素在单链表中的位置.实现三种排序算法-冒泡排序.快速排序.合并排序.产生四个长度为100,1000,10000,50000的随 ...

  7. Grevl旅游注册的初步界面,以源代码和运行图片展示

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  8. 每日一练_PAT_B_真题

    A+B和C (15) 时间限制 1000 ms 内存限制 32768 KB 代码长度限制 100 KB 判断程序 Standard (来自 小小) 题目描述 给定区间[-2的31次方, 2的31次方] ...

  9. urllib 模块 - module urllib

    urllib 模块 - urllib module 获取 web 页面, html = urllib.request.urlopen("http://www.zzyzz.top/" ...

  10. [REDIS 读书笔记]第一部分 数据结构与对象 跳跃表

    下面是跳跃表的基本原理,REDIS的实现大致相同 跳跃表的一个特点是,插入NODE是通过随机的方式来决定level的,比较奇特 下面是skipList的一个介绍,转载来的,源地址:http://ken ...