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 开发语言和开发工具 结论 备注 现在在嵌入式设备中所使用的 ...
随机推荐
- ios--->OC中Protocol理解及在代理模式中的使用
OC中Protocol理解及在代理模式中的使用 Protocol基本概念 Protocol翻译过来, 叫做"协议",其作用就是用来声明一些方法: Protocol(协议)的作用 定 ...
- Jenkins环境配置(集成自动化程序)
一.下载 直接到官网https://jenkins.io/download/ 进行下载 二.安装 1.在浏览器地址栏输入:http://loclhost:8081 运行Jenkins,首次进入会提示 ...
- hadoop3.2.0集群搭建的一些坑!
搭建步骤就不多说了,网上教程很多,这里列举几个: https://blog.csdn.net/pucao_cug/article/details/71698903 2.8版本 https://ww ...
- 吐血推荐珍藏的IDEA插件
之前给大家推荐了一些我自己常用的VS Code插件,很多同学表示很受用,并私信我说要再推荐一些IDEA插件.作为一名职业Java程序员/业余js开发者,我平时还是用IDEA比较多,所以也确实珍藏了一些 ...
- Android触摸事件传递机制,这一篇就够了
整个触摸事件牵涉到的是,Activity,View,ViewGroup三者的传递机制. 这个触摸事件就是从外层往内层一层层的传递. 整个传递机制,分为3个步骤:分发,拦截,和消费. 1. 触摸事件的类 ...
- LoadRunner随机数
需求:自定义随机数 方法: int randomnumber; randomnumber = rand()%+; //100到300的随机数 lr_output_message("ca:%d ...
- RC振荡电路
RC振荡电路,由电阻R和电容C构成的适用于产生低频信号的电路 1.原理---简介 RC振荡电路,采用RC选频网络构成,适用于低频振荡,一般用于产生1Hz~1MHz(fo=1/2πRC)的低频信号.对于 ...
- Codeforces Round #600 (Div. 2) E. Antenna Coverage
Codeforces Round #600 (Div. 2) E. Antenna Coverage(dp) 题目链接 题意: m个Antenna,每个Antenna的位置是\(x_i\),分数是\( ...
- (七)mybatis批量操作,分页插件
首先使用方式很简单: SqlSession sqlSession = sessionFactory.openSession(ExecutorType.BATCH); 批量操作核心:改变执行sql的方式 ...
- 真正解决百度编辑器UEditor上传图片跨域问题
做前后端分离的项目用到UEditor,把上传图片程序拿出来放到了接口程序中,上传图片接口已经做了跨域处理,按理说编辑器中上传图片应该不会有问题.可是配置好图片上传路径后,运行,打开调试,测试一下,报错 ...