libmodbus库linux 嵌入式设备中的使用
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 嵌入式设备中的使用的更多相关文章
- Linux字符设备中的两个重要结构体(file、inode)
对于Linux系统中,一般字符设备和驱动之间的函数调用关系如下图所示 上图描述了用户空间应用程序通过系统调用来调用程序的过程.一般而言在驱动程序的设计中,会关系 struct file 和 struc ...
- 在嵌入式设备中使用 JavaScript 的前景
by Conmajia PC上的JavaScript已经发展到ECMAScript 6(ES6),马上ES10都快出来了(虽然还是草案),但是硬件上的JS却很少听说.这几年手持设备/可穿戴设备的发展非 ...
- 在嵌入式设备中实现webrtc的第三种方式①
最近两年,我对于网络知识,包括底层协议学习比较多,webrtc这种几乎是使用到了所有层面网络协议的技术也逐渐进入我的视野. 之前我提出了两种在嵌入式设备上实现webrtc的方式,一是用官方代码,然后改 ...
- Linux驱动设备中的并发控制
一.基本概念 二.中断屏蔽 三.原子操作 四.自旋锁 五.信号量 六.互斥体 七.自旋锁与信号量的比较 Linux设备驱动中必须解决的一个问题是多个进程对共享资源的并发访问,并发的访问会导致竞态,即使 ...
- IO调度 | Linux块设备中的IO路径及调度策略
当文件系统通过submit_bio提交IO之后,请求就进入了通用块层.通用块层会对IO进行一些预处理的动作,其目的是为了保证请求能够更加合理的发送到底层的磁盘设备,尽量保证性能最佳.这里面比较重要的就 ...
- 在嵌入式设备中实现webrtc的第三种方式③
本系列的最后一篇,讲解收发音视频数据. 贴出最终效果: 其实很简单,直接调用writeFrame即可,如下图: 当然,这是部分代码,完整代码在下面,展开可见: 1 #include "com ...
- Linux嵌入式开发中常用的两个工具
TFTP 全称:Trivial File Transfer Protocol(简单文件传输协议) 进行小文件传输 在ubuntu下设置TFTP服务器 $ sudo apt-get install tf ...
- 嵌入式设备上的 Linux 系统开发
转载:http://www.ibm.com/developerworks/cn/linux/embed/embdev/index.html 如果您刚接触嵌入式开发,那么大量可用的引导装载程序(bo ...
- 嵌入式设备web服务器比较
目录(?)[-] Boa Thttpd Mini_httpd Shttpd Lighttpd Goahead AppWeb Apache 开发语言和开发工具 结论 备注 现在在嵌入式设备中所使用的 ...
随机推荐
- php---> xhprof安装及使用
xhprof 简介 xhprof是一款网站的性能工具 安装(lnmp) php --ri xhprof #检查php是否有这个扩展 cd xhprof-0.9.4/xhprof-0.9.4/exten ...
- JDK源码之AbstractStringBuilder类分析
一 概述 二 实现接口 AbstractStringBuilder实现了两个接口: Appendable 概述: Appendable的实现类的对象可以附加字符序列和值. 要追加的字符应该是Unico ...
- centos7下oracle11g详细的安装与建表操作
一.oracle的安装,在官网下载oracle11g R2 1.在桌面单击右键,选择“在终端中打开”,进入终端 输入命令:su 输入ROOT密码: 创建用户组oinstall:groupadd oin ...
- 64位Win7下用VS2010编译OpenSSL
http://blog.csdn.net/henter/article/details/8364532 首先要说明,如果不想自己编译OpenSSL,可以到 http://slproweb.com/pr ...
- HDU_3038_并查集
http://acm.hdu.edu.cn/showproblem.php?pid=3038 并查集的应用,选择哪个点作为根结点都没关系,多了一个sum数组保存每个点到根节点的和,注意刚开始a减了1, ...
- 《Python学习手册 第五版》 -第7章 字符串基础
本章内容是关于字符串的,字符串是编程中经常遇到的问题,本章的内容不是包含所有字符串的讲解,而是针对其最基本的内容进行说明,后续的相关章节会根据需要进行扩展和说明,例如后续的第37章内容会讲解Unico ...
- Guava入门使用教程
Guava入门使用教程 Guava Maven dependency In our examples, we use the following Maven dependency. <depen ...
- bootstrap 表单类
bootstrap 表单类 表单美化 用法: 向父元素 <form role="form"></form> 添加 role="form&q ...
- num09---建造者模式
建造者模式: 核心思想:将产品 和 产品建造过程解耦
- 解释为什么不能依赖fail-fast
我的观点fail-fast是什么就不多解释了,应该注意到的是(以ArrayList为例):modCount位于AbstractList中, protected transient int modCou ...