【modbus】libmodbus库的移植与使用
来源:互联网 发布:python 目录名称无效 编辑:程序博客网 时间:2024/05/20 07:19
一、源码下载
1、libmodbus官网
http://libmodbus.org/download/
2、选择长期稳定版本libmodbus-3.0.6.tar.gz
下载链接:http://libmodbus.org/releases/libmodbus-3.0.6.tar.gz
3、MD5值
c80f88b6ca19cabc4ceffc195ca07771 libmodbus-3.0.6.tar.gz
二、交叉编译
1、拷贝到相应目录,解压
tar -zxvf libmodbus-3.0.6.tar.gz
2、创建安装目录
mkdir install
3、进入解压的目录
cd libmodbus-3.0.6
4、配置编译选项(注:--prefix选项是安装目录,根据自己环境确定)
./configure --host=arm-fsl-linux-gnueabi --enable-static --prefix=[安装路径]/install/
5、编译
make
6、安装
make install
7、在install生成三个目录:include lib share
三、测试与使用
1、进入install/lib目录,执行file libmodbus*,出现如下打印信息,信息中有“ARM”说明libmodbus库移植成功
-----------------------------------------------------------------
libmodbus.a: current ar archive
libmodbus.la: libtool library file,
libmodbus.so: symbolic link to `libmodbus.so.5.0.5'
libmodbus.so.5: symbolic link to `libmodbus.so.5.0.5'
libmodbus.so.5.0.5: ELF 32-bit LSB shared object, ARM, version 1 (SYSV), dynamically linked, not stripped
-----------------------------------------------------------------
2、测试程序
2.1 modbus_rtu测试
2.1.1 参数配置(根据自己情况配置)
从地址01 寄存器地址01 读取寄存器数量20 串口ttymxc1
波特率19200 8位 偶校验 1停止位
2.1.2 测试程序:modbus_rtu_test.c
--------------------------------modbus_rtu_test.c begin----------------------------------
/**********************************************
*简介:Linux下modbusRTU测试程序
*作者:郭纬
*日期:2017-5-16
*版本:V1.0
**********************************************/
#include<stdio.h>
#include<stdlib.h>
#include"modbus.h"
#include <memory.h>
int main(void)
{
modbus_t *mb;
uint16_t tab_reg[64]={0};
//1-打开端口
mb = modbus_new_rtu("/dev/ttymxc1",19200,'E',8,1);
//2-设置从地址
modbus_set_slave(mb,1);
//3-建立连接
modbus_connect(mb);
//4-设置应答延时
struct timeval t;
t.tv_sec=0;
t.tv_usec=1000000;//1000ms
modbus_set_response_timeout(mb,&t);
//5-循环读
int num = 0;
while(1)
{
memset(tab_reg,0,64*2);
//6-读寄存器设置:寄存器地址、数量、数据缓冲
int regs=modbus_read_registers(mb, 0, 20, tab_reg);
printf("-------------------------------------------\n");
printf("[%4d][read num = %d]",num,regs);
num++;
int i;
for(i=0; i<20; i++)
{
printf("<%#x>",tab_reg[i]);
}
printf("\n");
printf("-------------------------------------------\n");
sleep(1);
}
//7-关闭modbus端口
modbus_close(mb);
//8-释放modbus资源
modbus_free(mb);
return 0;
}
--------------------------------------modbus_rtu_test.c end---------------------------------------
2.1.3 交叉编译
arm-fsl-linux-gnueabi-gcc -o modbus_rtu_test modbus_rtu_test.c -L../install/lib -lmodbus -I ../install/include/modbus
2.1.4 运行
将libmodbus库拷贝到开发板上,如/usr/lib目录下;
将测试程序拷贝到开发板上,连接好硬件,运行程序
1、libmodbus官网
http://libmodbus.org/download/
2、选择长期稳定版本libmodbus-3.0.6.tar.gz
下载链接:http://libmodbus.org/releases/libmodbus-3.0.6.tar.gz
3、MD5值
c80f88b6ca19cabc4ceffc195ca07771 libmodbus-3.0.6.tar.gz
二、交叉编译
1、拷贝到相应目录,解压
tar -zxvf libmodbus-3.0.6.tar.gz
2、创建安装目录
mkdir install
3、进入解压的目录
cd libmodbus-3.0.6
4、配置编译选项(注:--prefix选项是安装目录,根据自己环境确定)
./configure --host=arm-fsl-linux-gnueabi --enable-static --prefix=[安装路径]/install/
5、编译
make
6、安装
make install
7、在install生成三个目录:include lib share
三、测试与使用
1、进入install/lib目录,执行file libmodbus*,出现如下打印信息,信息中有“ARM”说明libmodbus库移植成功
-----------------------------------------------------------------
libmodbus.a: current ar archive
libmodbus.la: libtool library file,
libmodbus.so: symbolic link to `libmodbus.so.5.0.5'
libmodbus.so.5: symbolic link to `libmodbus.so.5.0.5'
libmodbus.so.5.0.5: ELF 32-bit LSB shared object, ARM, version 1 (SYSV), dynamically linked, not stripped
-----------------------------------------------------------------
2、测试程序
2.1 modbus_rtu测试
2.1.1 参数配置(根据自己情况配置)
从地址01 寄存器地址01 读取寄存器数量20 串口ttymxc1
波特率19200 8位 偶校验 1停止位
2.1.2 测试程序:modbus_rtu_test.c
--------------------------------modbus_rtu_test.c begin----------------------------------
/**********************************************
*简介:Linux下modbusRTU测试程序
*作者:郭纬
*日期:2017-5-16
*版本:V1.0
**********************************************/
#include<stdio.h>
#include<stdlib.h>
#include"modbus.h"
#include <memory.h>
int main(void)
{
modbus_t *mb;
uint16_t tab_reg[64]={0};
//1-打开端口
mb = modbus_new_rtu("/dev/ttymxc1",19200,'E',8,1);
//2-设置从地址
modbus_set_slave(mb,1);
//3-建立连接
modbus_connect(mb);
//4-设置应答延时
struct timeval t;
t.tv_sec=0;
t.tv_usec=1000000;//1000ms
modbus_set_response_timeout(mb,&t);
//5-循环读
int num = 0;
while(1)
{
memset(tab_reg,0,64*2);
//6-读寄存器设置:寄存器地址、数量、数据缓冲
int regs=modbus_read_registers(mb, 0, 20, tab_reg);
printf("-------------------------------------------\n");
printf("[%4d][read num = %d]",num,regs);
num++;
int i;
for(i=0; i<20; i++)
{
printf("<%#x>",tab_reg[i]);
}
printf("\n");
printf("-------------------------------------------\n");
sleep(1);
}
//7-关闭modbus端口
modbus_close(mb);
//8-释放modbus资源
modbus_free(mb);
return 0;
}
--------------------------------------modbus_rtu_test.c end---------------------------------------
2.1.3 交叉编译
arm-fsl-linux-gnueabi-gcc -o modbus_rtu_test modbus_rtu_test.c -L../install/lib -lmodbus -I ../install/include/modbus
2.1.4 运行
将libmodbus库拷贝到开发板上,如/usr/lib目录下;
将测试程序拷贝到开发板上,连接好硬件,运行程序
阅读全文
0 0
- 【modbus】libmodbus库的移植与使用
- 一个modbus协议库移植——libmodbus-master
- win32使用Qt和libmodbus库实现modbus主机功能
- libmodbus的移植
- linux libmodbus的移植
- 在windows平台上使用Qt和libmodbus库实现modbus主机功能
- 使用libmodbus库快速构建上位机(二) 串口modbus上位机
- Qt+MSVC使用libmodbus实现modbus主机功能
- 嵌入式学习之libmodbus的移植
- linux下使用libmodbus库实现modbusTCP与modbusRTU功能
- libmodbus实现modbus poll功能
- VS2015 使用 libmodbus
- Modbus协议简介与FreeMODBUS移植
- Modbus RTU与Modbus TCP的区别
- modbus poll的使用
- 使用MODBUS的注意事项
- modbus poll的使用
- libmodbus遇到的问题
- C语言快速讲解(七)预编译
- QT信号与槽-多信号连接槽
- 数据的读取
- 300. Longest Increasing Subsequence
- 51nod 1006 最长公共子序列Lcs【模板】
- 【modbus】libmodbus库的移植与使用
- 关于端口号
- Java运算符优先级
- PHP 使用用户自定义的比较函数对数组元素排序
- Dubbo架构设计详解
- 【mysql】三种方法为root账户指定密码
- php安装gd库扩展
- 【理论实践】#define 和const带给开发者的影响区别
- 模式识别(聚类分析算法))