想要读取串口数据,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实现串口通讯相关推荐

  1. 嵌入式开发之MacOS、iOS串口通讯开发环境准备

    目录: 1. 说明 2. 准备串口线及对应串口传唤器驱动 2.1. 线材准备 2.2. 对应驱动准备 3. 下载可视化连接工具"CoolTerm_Mac" 4. 验证是否驱动安装完 ...

  2. Linux嵌入式系统开发之Led开发——应用篇(一)

    与Linux嵌入式系统开发之Led开发--驱动篇(一),对于的应用篇 看看咱们的开发板,有四个led灯,对吧,这次就是向办法用程序来点亮它,请看下边的代码: #include <stdlib.h ...

  3. Linux应用程序开发之man手册汉化+开发的简易流程说明

    Linux应用程序开发之man手册汉化+开发的简易流程说明 1,开发中善于使用man手册 man手册安装命令: sudo apt-get install manpages-dev man手册汉化安装命 ...

  4. linux内核单步调试,Linux内核驱动开发之KGDB单步调试内核(kgdboc方式)

    如何单步调试Linux内核一直困扰着linux驱动开发人员,内核有其代码量大.逻辑复杂.与硬件交互的特性.因此,有着不同于应用程序的调试方法,据统计Linux内核开 Linux内核驱动开发之KGDB原 ...

  5. 好书推荐——《Modbus软件开发实战》

    技术类书籍写得好不好,一个评价标准是看作者是不是为读者而写的,有的书直接翻译英文用户手册,或者复制别的书里的内容,可能作者都没琢磨过.有的书自说自话,堆砌内容,读者觉得难以理解的知识点,作者却一带而过 ...

  6. android程序移动到Linux,Android应用开发之Android 系统 -- 使用Xshell在Windows系统和Linux系统之间进行文件传输...

    本文将带你了解Android应用开发之Android 系统 -- 使用Xshell在Windows系统和Linux系统之间进行文件传输,希望本文对大家学Android有所帮助. 使用Xshell在Wi ...

  7. android 开发art,Android应用开发之Android 系统启动原理(art 虚拟机)

    本文将带你了解Android应用开发之Android 系统启动原理(art 虚拟机),希望本文对大家学Android有所帮助. Android   系统启动原理(art 虚拟机) 一.虚拟机的启动 A ...

  8. H5前端开发以及小程序开发之路

    好久没写博客了,今天心血来潮.总结下.近一年的前端开发之路. 首先,用了ionic+cordova技术框架开发纯粹的混合APP(得有angular的基础知识),一个商城项目,也用了vue,编写单页面, ...

  9. modbus软件开发实战指南_C++核心准则?GSL:指南支持库

    GSL: Guidelines support library GSL:指南支持库 The GSL is a small library of facilities designed to suppo ...

  10. android 视频开发sd卡,Android开发之SD卡文件操作分析

    本文实例讲述了Android开发之SD卡文件操作.分享给大家供大家参考,具体如下: 前面的文章中写过直接操作手机自带存储器的程序,这次就接着上次文章协议下对sd卡的文件操作.与自带存储不同的是使用sd ...

最新文章

  1. http状态码302,303,307的区别
  2. golang二维数组初始化
  3. 第11课:优化神经网络——梯度优化
  4. 【Auto.js】QQ自动回赞_简易版
  5. struts-config.xml 简述
  6. 一个同事做的基于yaas平台的一个应用,可以用来学习SAP yaas
  7. C语言高级编程:汇编分析i++和++i
  8. Struts2项目搭建
  9. Centos7使用yum下载rpm包而不执行安装
  10. orm2 中文文档 5. 同步和删除模型
  11. java枚举变量带括号_java枚举类型 - 墨梅的个人空间 - OSCHINA - 中文开源技术交流社区...
  12. c ++ helloworld
  13. JavaScript学习(六)—location对象常用的属性和方法
  14. javaScript实现百度换肤案例
  15. 获取google chrome浏览器的安装位置
  16. 2021届校招求职计划、总结
  17. 镜像电流源特点_镜像电流源原理及其应用电路
  18. 一笔一划教你写一签名
  19. CSP开发基础--数字证书调用CSP过程
  20. DHT11(ASAIR)温湿度传感器的使用(软件)

热门文章

  1. android 火车购票功能,基于Android的火车票售票系统的设计与实现.doc
  2. Zynga的数据分析
  3. 使用maven为web工程引入jstl包时报错
  4. Qt源码分析--QPaintEngine
  5. 码农:一次项目经历改掉了我代码洁癖,由4年小兵升为技术leader
  6. 第13周 《C语言及程序设计》实践参考——定期存款利息计算器
  7. Unity 2D游戏制作流程用到的技巧
  8. 塔防游戏制作教程(三)
  9. html+js+Jquery
  10. 《你早该这么玩excel》大表哥伍昊新课开讲——顶你学堂独家