sourceforge有一个qt下的modbus开源项目
http://sourceforge.net/projects/qmodbus/
http://sourceforge.net/search/?q=qmodbus

qt4串口编程基本见
http://www.yafeilinux.com/?p=820
使用第3方的类,
windows添加以下4个文件
qextserialbase.cpp
qextserialbase.h
win_qextserialport.cpp
win_qextserialport.h

linux下添加以下4个文件
qextserialbase.cpp
qextserialbase.h
posix_qextserialport.cpp
posix_qextserialport.h

1.使用事件驱动QextSerialBase::EventDriven,当串口有数据时Win_QextSerialPort自动发送readyRead()信号,执行readMyCom()槽函数

    QString portName="com3";myCom = new Win_QextSerialPort(portName,QextSerialBase::EventDriven);//定义串口对象,并传递参数,在构造函数里对其进行初始化if(myCom->open(QIODevice::ReadWrite)){QMessageBox::information(this, tr("打开成功"), tr("已成功打开串口 ") + portName, QMessageBox::Ok);}else{QMessageBox::critical(this, tr("打开失败"), tr("未能打开串口 ") + portName + tr("\n该串口设备不存在或已被占用"), QMessageBox::Ok);return;}//以可读写方式打开串口myCom->setBaudRate(BAUD9600);myCom->setDataBits(DATA_8);myCom->setParity(PAR_EVEN);myCom->setStopBits(STOP_1);myCom->setFlowControl(FLOW_OFF); //设置数据流控制,我们使用无数据流控制的默认设置myCom->setTimeout(500); //设置延时connect(myCom,SIGNAL(readyRead()),this,SLOT(readMyCom()));

2.在readMyCom()里面没有立即将其显示到textBrowser,而是在一帧接收完毕之后再显示。判断一帧结束的方法是使用定时器记录收到readyRead()信号间隔的时间。当readyRead()信号过了足够长时间仍然没有收到下一个readyRead()信号,说明一帧结束。
3.发送的时候以byte方式

     uint16 crcData;//crcData = crc16(sendBuf,byteCount);//ui->sendMsgLineEdit->text().toAscii();sendBuf[0]=(quint8) 0x01;sendBuf[1]=(quint8) 0x01;sendBuf[2]=(quint8) 0x00;sendBuf[3]=(quint8) 0x00;sendBuf[4]=(quint8) 0x00;sendBuf[5]=(quint8) 0x07;// crcData = crc16(sendBuf,6);crcData = crc16((uint8*)sendBuf,6);DEBUG_BYSONG<<crcData;sendBuf[6] = crcData >> 8;sendBuf[7] = crcData & 0xff;myCom->write(sendBuf,8);DEBUG_BYSONG << "bytesToWrite:"<<myCom->bytesToWrite()<<"bytes";

4.发送时加上crc校验,查表方式。接收的时候没判断。
5.是一个成功与下位机modbus通信上的skeleton。需要完善modbus各个功能号。
6.qtcreator 2.3.1,qt-lib-4.7.4,xp

http://download.csdn.net/detail/songqqnew/3852094
http://download.csdn.net/detail/songqqnew/3852120

refer to
http://www.yafeilinux.com/?p=820
http://www.yafeilinux.com/?p=616

转载于:https://www.cnblogs.com/-song/archive/2011/11/27/3331919.html

modbus-rtu qt4-serialport1------ xp as host相关推荐

  1. Modbus RTU 通信工具设计

    Modbus 是一个工业上常用的通讯协议.一种通讯约定. ModBus 协议是应用层报文传输协议(OSI 模型第7层),它定义了一个与通信层无关的协议数据单元(PDU),即PDU=功能码+数据域. M ...

  2. modbus协议和串口服务器,Modbus RTU通信模式与Modbus ASCII通信模式的异同点

    Modbus基于串行通信存在两种模式:Modbus RTU与Modbus ASCII模式,不管是RTU模式还是ASCII模式,Modbus信息都以帧的方式传输,每个信息帧有确定的起始点和结束点,使接收 ...

  3. readfile读取串口数据_西门子PLC-1200-串口Modbus RTU通讯实例

    西门子PLC-1200的基于232串口的Modbus RTU通讯实例 这里先讲一下Modbus和232,232和485串口是一种串口接法,这种接法实际能实现十几种的协议通讯,有基于串口的Modbus ...

  4. 树莓派 rfid_树莓派工控机做Modbus RTU主站读取RFID数据

    KUNBUS Revpi Core 3是工业级的树莓派,可作为小型的工业PC用,外观十分小巧,操作简单,DIN导轨模块化安装,RevPi core 3能与RevPi IO连接,能实时对这些IO的控制. ...

  5. Modbus RTU 通信应用案例

    如何打开项目归档文件 例程中的TIA博途项目文件与STEP 7项目文件均为归档文件,需要按如下方式打开: TIA博途项目文件 1. 打开TIA博途软件,通过软件左下方"项目视图"按 ...

  6. modbus RTU协议设备使用无线代替有线注意事项

    1.设备有线连接 Modbus是由Modicon(现为施耐德电气公司的一个品牌)在1979年发明的,是全球第一个真正用于工业现场的总线协议.ModBus网络是一个工业通信系统,由带智能终端的可编程序控 ...

  7. 基于Modbus RTU协议的开关量控制采集简介

    一.什么是开关量控制采集 所谓的开关量控制采集就是通过458/232接口发送控制命令,实现读取开关量输入或者控制开关量输出的通断. 二.开关量输入采集和开关量输出控制 1.  开关量输入采集就是将一个 ...

  8. 8数据提供什么掩膜产品_工业轨式1-8路RS485数据(MODBUS RTU协议)厂家产品说明...

    产品描述 工业级数点对点光猫提供1-8路RS485(MODBUS RTU协议): 在光纤中传输,该产品突破了传统串行接口通讯距离与通讯速率的矛盾,同时,也解决了电磁干扰.地环干扰和雷电破坏的难题,大大 ...

  9. json qbytearray 串 转_JSON数据采集网关,json转Modbus RTU串IO口RS485转4~20mA边缘计算智能终端...

    JSON数据采集网关边缘计算智能终端是一种能够将各种传感器仪表仪器设备的数据采集后按照JSON格式上传服务器的网关,可以实现云边协同. JSON(JavaScript Object Notation) ...

  10. Modbus协议栈应用实例之二:Modbus RTU从站应用

    自从开源了我们自己开发的Modbus协议栈之后,有很多朋友建议我针对性的做几个示例.所以我们就基于平时我们的应用整理了几个简单但可以说明基本的应用方法的示例,这一篇中我们将使用协议栈实现一个Modbu ...

最新文章

  1. kubernetes英语怎么读_英语音标怎么读
  2. 【PAT (Advanced Level) Practice】1041 Be Unique (20 分)
  3. PythonTip(2)
  4. windbg学习-----n(Set Number base)
  5. 洛谷 - P3356 火星探险问题(最大费用最大流+拆点+路径打印)
  6. axios拦截器的实现
  7. [react-router] React-Router 4怎样在路由变化时重新渲染同一个组件?
  8. opencv 轮廓 缺陷检测
  9. 腾讯云服务器CentOS 7安装Tomcat并部署JSP站点统计进入站点人数
  10. 图像处理系统概述(白皮书)
  11. Java可变参数demo
  12. 判断某个值是否存在指定枚举类中
  13. 怎样解决mysql最后一步提示未响应
  14. 内容分发网络(CDN)关键技术、架构与应用(一)
  15. CentOS 6.0 下 VNC 配置方法
  16. LINUX编译alsa
  17. wordpress音乐播放器插件–PoiPlayer
  18. 【专利提交】个人通过CPC客户端网上提交专利文稿的完整流程
  19. android oppo 驱动,OPPO R9驱动安装不了怎么办 OPPO R9驱动安装不了的解决方法
  20. Linux安装Tomcat完整步骤

热门文章

  1. 传输参数【JAX-WS入门系列】第06章_使用MTOM处理二进制文件
  2. 分享30个最佳 jQuery Lightbox 效果插件
  3. “adb不是内部或外部命令,也不是可运行的程序或批量文件“
  4. Unlinked Gradle project
  5. 公司app 从兼容Android 8.0 升级兼容9.0
  6. 潘正磊谈微软研发团队管理和敏捷实践学习总结
  7. centOS安装java
  8. !假如人类使用 16 进制
  9. 一道超级复杂的js题目
  10. SpringMvc和Mybatis整合需要配置的xml