modbus软件开发linux,Linux C开发之用modbus实现串口通讯
想要读取串口数据,modbus是一个很好用的第三方库。该库适用于windows和Linux,支持RTP、RTU等协议,基于Linux的开发较难一些,是我前段时间主要的研究方向。http://www.modbus.org/是modbus的主页,有兴趣的朋友可以查看一下它的特性。
废话不多说,速度开始。首先,你需要安装modbus的第三方库,sudo apt-get install libmodbus-dev,然后你就可以在Linux C代码里面写上#include 了。
第二步:连接串口并做一些参数配置。
m_modbus = modbus_new_rtu("/dev/ttyS0"/*serialPort*/,9600/*baud*/,78,8/*dataBits */,1/*stopBits*/);//ttys0是Linux第一个串口,有的时候默认串口是ttys1,最好是枚举一下。在windows下,默认串口设备名为“COM1”
modbus_set_debug(m_modbus, 0);
第三步:设置等待时间,超过时间没连接上则报错。
struct timeval response_timeout;
response_timeout.tv_sec = 1;
response_timeout.tv_usec = 0;
modbus_set_response_timeout(m_modbus,&response_timeout);
第四步:从串口读取数据,一般是开关量数据,只有0、1两态。
int i;
if(m_modbus == NULL)
{
printf("No connection,check your device!\n");
return;
}
uint8_t dest[1024]; //setup memory for data
uint16_t * dest16 = (uint16_t *) dest;
memset(dest, 0, 1024);
int ret = -1; //return value from read functions
int is16Bit = 0;
modbus_set_slave(m_modbus, slave);
ret = modbus_read_input_bits(m_modbus, 0/*startAddress*/, 24/*noOfItems*/, dest);//24值得是读取端口数量
第五步:关闭modbus连接。
if(m_modbus) {
modbus_close(m_modbus);
modbus_free(m_modbus);
m_modbus = NULL;
}
这就是modbus操作的全部过程,怎么样,很简单吧?
modbus软件开发linux,Linux C开发之用modbus实现串口通讯相关推荐
- 嵌入式开发之MacOS、iOS串口通讯开发环境准备
目录: 1. 说明 2. 准备串口线及对应串口传唤器驱动 2.1. 线材准备 2.2. 对应驱动准备 3. 下载可视化连接工具"CoolTerm_Mac" 4. 验证是否驱动安装完 ...
- Linux嵌入式系统开发之Led开发——应用篇(一)
与Linux嵌入式系统开发之Led开发--驱动篇(一),对于的应用篇 看看咱们的开发板,有四个led灯,对吧,这次就是向办法用程序来点亮它,请看下边的代码: #include <stdlib.h ...
- Linux应用程序开发之man手册汉化+开发的简易流程说明
Linux应用程序开发之man手册汉化+开发的简易流程说明 1,开发中善于使用man手册 man手册安装命令: sudo apt-get install manpages-dev man手册汉化安装命 ...
- linux内核单步调试,Linux内核驱动开发之KGDB单步调试内核(kgdboc方式)
如何单步调试Linux内核一直困扰着linux驱动开发人员,内核有其代码量大.逻辑复杂.与硬件交互的特性.因此,有着不同于应用程序的调试方法,据统计Linux内核开 Linux内核驱动开发之KGDB原 ...
- 好书推荐——《Modbus软件开发实战》
技术类书籍写得好不好,一个评价标准是看作者是不是为读者而写的,有的书直接翻译英文用户手册,或者复制别的书里的内容,可能作者都没琢磨过.有的书自说自话,堆砌内容,读者觉得难以理解的知识点,作者却一带而过 ...
- android程序移动到Linux,Android应用开发之Android 系统 -- 使用Xshell在Windows系统和Linux系统之间进行文件传输...
本文将带你了解Android应用开发之Android 系统 -- 使用Xshell在Windows系统和Linux系统之间进行文件传输,希望本文对大家学Android有所帮助. 使用Xshell在Wi ...
- android 开发art,Android应用开发之Android 系统启动原理(art 虚拟机)
本文将带你了解Android应用开发之Android 系统启动原理(art 虚拟机),希望本文对大家学Android有所帮助. Android 系统启动原理(art 虚拟机) 一.虚拟机的启动 A ...
- H5前端开发以及小程序开发之路
好久没写博客了,今天心血来潮.总结下.近一年的前端开发之路. 首先,用了ionic+cordova技术框架开发纯粹的混合APP(得有angular的基础知识),一个商城项目,也用了vue,编写单页面, ...
- modbus软件开发实战指南_C++核心准则?GSL:指南支持库
GSL: Guidelines support library GSL:指南支持库 The GSL is a small library of facilities designed to suppo ...
- android 视频开发sd卡,Android开发之SD卡文件操作分析
本文实例讲述了Android开发之SD卡文件操作.分享给大家供大家参考,具体如下: 前面的文章中写过直接操作手机自带存储器的程序,这次就接着上次文章协议下对sd卡的文件操作.与自带存储不同的是使用sd ...
最新文章
- http状态码302,303,307的区别
- golang二维数组初始化
- 第11课:优化神经网络——梯度优化
- 【Auto.js】QQ自动回赞_简易版
- struts-config.xml 简述
- 一个同事做的基于yaas平台的一个应用,可以用来学习SAP yaas
- C语言高级编程:汇编分析i++和++i
- Struts2项目搭建
- Centos7使用yum下载rpm包而不执行安装
- orm2 中文文档 5. 同步和删除模型
- java枚举变量带括号_java枚举类型 - 墨梅的个人空间 - OSCHINA - 中文开源技术交流社区...
- c ++ helloworld
- JavaScript学习(六)—location对象常用的属性和方法
- javaScript实现百度换肤案例
- 获取google chrome浏览器的安装位置
- 2021届校招求职计划、总结
- 镜像电流源特点_镜像电流源原理及其应用电路
- 一笔一划教你写一签名
- CSP开发基础--数字证书调用CSP过程
- DHT11(ASAIR)温湿度传感器的使用(软件)