QT开发 | 您所在的位置:网站首页 › python对应开发工具 › QT开发 |
这里首先说明一下,这个为什么叫串口设备调试工具而不是串口调试工具,是因为这个工具比网络上的串口调试工具多出了一些真实需要的用来调试设备的功能,首先一点就是大部分的串口调试工具收到数据都是立即返回,这样的数据都是连着的,头一条数据和后一条数据头尾相连,对于调试着来说要看数据非常麻烦,而且在不断有数据过来时,要停下来看数据除非关闭串口,而不能在打开串口的时候看数据,因为不断有数据过来冲掉前面的数据显示,甚至有些还不能最大化等等情况,这个工具是根据将近四年的与硬件通信这块开发工具的切身实际需求量身定做的,还能模拟设备立即回复数据。之前很多QT开发的版本源码分成两套,一套在windows下编译,一套在linux下编译,甚至麻烦,虽然QT5.1之后的版本自带了串口通信类,本人测试过,貌似还有小问题,在快速收发数据时容易卡住,这次带来的源码不用做任何改动即可在多个平台编译。 项目名称:串口设备调试工具 开发环境:WIN7+QT4.7+QT CREATOR2.8+MINGW 已编译通过测试平台:XP、Win7、ubuntu、tiny210 技术实现:通过第三方串口通信类,解析协议并作出处理 基本功能: 1:支持16进制数据发送与接收。 2:支持windows下COM9以上的串口通信。 3:自动加载对应操作系统串口号。 4:实时显示收发数据字节大小以及串口状态。 高级功能: 1:可自由管理需要发送的数据,每次只要从下拉框中选择数据即可,无需重新输入数据。 2:可模拟设备回复数据,需要在主界面开启模拟设备回复数据。当接收到设置好的指令时,立即回复设置的回复指令。例如指定收到0x16 0x00 0xFF 0x01需要回复0x16 0x00 0xFE 0x01,则只需要在SendData.txt中添加一条数据16 00 FF 01:16 00 FE 01即可。 3:可定时发送数据和保存数据到文本文件:,默认间隔5秒钟,可更改间隔时间。 4:在不断接收到大量数据时,可以暂停显示数据来查看具体数据,后台依然接收数据但不处理,无需关闭串口来查看已接收到的数据。 5:每次收到的数据都是完整的一条数据,而不是脱节的,做了延时处理。 6:一套源码随处编译,无需更改串口通信类,已在XP/WIN7/UBUNTU/ARMLINUX系统下成功编译并运行。 如果有更好的建议或者意见,请Q我(517216493),谢谢! 运行截图: 粗略步骤: 第一步:布局好界面,控件命名好,建议用pascal命名法。 第二步:准备unix和windows串口通信第三方类qextserialport.h、qextserialport.cpp、qextserialport_global.h、qextserialport_p.h、qextserialport_unix.cpp、qextserialport_win.cpp。 导入到工程,在pro文件中这样写: QT += core gui TARGET = mySerialPortTools TEMPLATE = app SOURCES += main.cpp\ qextserialport.cpp\ frmmain.cpp HEADERS += frmmain.h \ qextserialport_global.h \ qextserialport.h \ myhelper.h win32 { SOURCES += qextserialport_win.cpp } unix { SOURCES += qextserialport_unix.cpp } FORMS += frmmain.ui RESOURCES += \ main.qrc MOC_DIR=temp/moc RCC_DIR=temp/rcc UI_DIR=temp/ui OBJECTS_DIR=temp/obj DESTDIR=bin win32:RC_FILE=main.rc CONFIG += warn_off #关闭警告这样的话在不同平台下会自动加载对应平台的cpp实现文件来编译。 第三步:初始化主界面,自动加载对应串口号波特率等信息。 void frmMain::InitForm() { ReceiveCount=0; SendCount=0; IsShow=true; IsAutoClear=false; IsHexSend=true; IsHexReceive=true; IsDebug=false; QStringList comList;//串口号 QStringList baudList;//波特率 QStringList parityList;//校验位 QStringList dataBitsList;//数据位 QStringList stopBitsList;//停止位 #ifdef Q_OS_WIN//如果是windows系统 comList |
CopyRight 2018-2019 实验室设备网 版权所有 |