/******************************************************************************
* libmodbus相关资料整理
* 说明:
* 目测后续可能要折腾这个modbus,先找点资料看看情况,防止一问三不知。
*
* 2017-3-14 深圳 南山平山村 曾剑锋
*****************************************************************************/ 一、参考文档:
. Modbus通讯协议
http://baike.baidu.com/item/Modbus%E9%80%9A%E8%AE%AF%E5%8D%8F%E8%AE%AE/5972462
. libmodbus() Manual Page
http://libmodbus.org/docs/v3.0.6/
. 使用libmodbus實作Modbus協定
http://felix-lin.com/linux/%E4%BD%BF%E7%94%A8libmodbus%E5%AF%A6%E4%BD%9Cmodbus%E5%8D%94%E5%AE%9A/
. Libmodbus 编程说明
http://shaocheng.li/post/blog/2015-05-24
. libmodbus的移植
http://46aae4d1e2371e4aa769798941cef698.devproxy.yunshipei.com/fulinus/article/details/37659661
. modbus?關於modbus RTU的使用說明II
http://www.xuan.idv.tw/wordpress/?p=2427
. modbus?關於modbus RTU的使用說明
http://www.xuan.idv.tw/wordpress/?p=1705
. linux下使用libmodbus库实现modbusTCP与modbusRTU功能
http://www.ithao123.cn/content-10779860.html 二、Ubuntu安装libmodbus:
sudo apt-get install libmodbus5 libmodbus-dev 三、交叉编译:
. libmodbus.so与modbus_rtu_test.c应当放在同一文件夹下
. arm-linux-gcc -o modbus_rtu_test modbus_rtu_test.c -L. -lmodbus 四、Ubuntu编译、测试:
. 测试代码:
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <modbus/modbus.h> int main(void)
{
modbus_t *mb;
uint8_t bit_status[] = {}; mb = modbus_new_rtu("/dev/ttyUSB0",,'N',,);//open port
modbus_set_slave(mb, ); //set slave address
modbus_set_debug(mb, true); modbus_connect(mb); struct timeval t;
t.tv_sec=;
t.tv_usec=; //set modbus time 1000ms
modbus_set_response_timeout(mb,&t); modbus_read_bits(mb, , , bit_status); printf("%d %d\n", bit_status[], bit_status[]); modbus_close(mb);
modbus_free(mb); return ;
}
. 编译:
gcc main.c -lmodbus
. 没有连接设备输出结果:
Qt@zengjf:~/modbus$ ./a.out
Opening /dev/ttyUSB0 at bauds (N, , )
[][][][][][][BD][CB]
Waiting for a confirmation...
<><><><><>
ERROR CRC received != CRC calculated . 逻辑分析仪抓图数据:

最新文章

  1. 推荐一个Android Studio很实用的插件android-butterknife-zelezny
  2. 关于FluentNhibernate数据库连接配置,请教
  3. 《zw版&#183;Halcon-delphi系列原创教程》 Halcon分类函数006, image,影像处理(像素图)
  4. Exchange Server简介与搭建
  5. Permissions 0664 for &#39;/home/root/.ssh/id_rsa&#39; are too open.
  6. 优先队列(Priority Queue)
  7. java移动/赋值文件 copy/move file
  8. 值类型与引用类型(特殊的string) Typeof和GetType() 静态和非静态使用 参数传递 相关知识
  9. CI 在nginx中出现404错误的解决方式
  10. EasyPHP的Apache报错
  11. BZOJ 1604: [Usaco2008 Open]Cow Neighborhoods 奶牛的邻居
  12. [转载]Winform中Control的Invoke与BeginInvoke方法
  13. 重学前端 --- Promise里的代码为什么比setTimeout先执行?
  14. 自定义shiro实现权限验证方法isAccessAllowed
  15. shell从入门到精通进阶之一:Shell基础知识
  16. Docker 运维高级应用管理
  17. sdn交换机和普通交换机区别
  18. CF Good Bye 2018
  19. arcgismanager登陆信息不对
  20. day5 五、数字类型、字符串,列表类型的基本操作和内置方法

热门文章

  1. win10 chrome 调试
  2. oracle扩容
  3. 前端之 Ajax(补)
  4. swift的值类型和引用类型
  5. Vuex mapGetters,mapActions
  6. Linux sh远程连接失败 sshd.service启动失败
  7. UnsatisfiedLinkError X.so is 64-bit instead of 32-bit之Android 64 bit SO加载机制
  8. PHP 获取真实IP地址
  9. Python的format函数
  10. uiwebview 加载本地js、css、img,html从网站加载