之前做项目一直是别人负责做上位机软件,我负责调试硬件程序,定好协议各干各的就行了,但是渐渐地我发现总是有很多内容在调试中会发生变动,而且协调起来周期很长,还是自己能写上位机软件比较方便。
下面整理了一个我最近做的Qt项目Demo,主要用于以后新项目编写上位机的框架用。
QT版本:5.14.2
语言:C++
通信方式:TCP/IP
打开工程文件夹中的EQAT_Debug.pro
文件
勾选需要的编译方式后点击configure project
这样就成功打开工程了。
Forms/myeqat.ui
中可以进行交互界面编辑
这个Demo版本界面包含目标IP、端口输入栏及连接按钮;报文显示/隐藏按钮及报文显示栏;一个按钮。
sources/main.cpp
中可以编辑软件标题栏显示文字sources/myeqat.cpp
中可编辑槽函数、TCP收发逻辑等超时时间设定及超时中断函数:相当于定时1s发送数组中的数据
#define TIMER_TIMEOUT 1000 //超时时间1000ms
void MYEQAT::handleTimeout()
{
QByteArray block;
block.resize(6);
block[0]=0x01;
block[1]=0x01;
block[2]=0x01;
block[3]=0x01;
block[4]=0x01;
block[5]=0x01;
tcpClient->write(block,6);
}
接收处理函数:这里只添加显示接收的报文(受显示报文按钮控制)
void MYEQAT::clientReceiveData()
{
QByteArray m_Message; //暂存接受到的数据
m_Message += tcpClient->readAll();
m_Message.resize(255);
if(showtext_Flag)
ui->textEdit->append(m_Message);//显示报文
}
报文显示按钮槽函数:
void MYEQAT::on_fankui_clicked() //报文显示按钮
{
if(ui->fankui->text()=="显示报文")
{
showtext_Flag=1;
ui->fankui->setText("隐藏报文");
}
else
{
showtext_Flag=0;
ui->fankui->setText("显示报文");
}
}
发送按键槽函数:点击发送666
void MYEQAT::on_pushButton_clicked()
{
QByteArray block;
block.resize(3);
block[0]=0x06;
block[1]=0x06;
block[2]=0x06;
tcpClient->write(block,3);
}
在文件中进行配置,更简单的方法是:将任意.ico
文件放入icons
文件夹内,更名为tubiao.ico
后,重新编译工程即可。
首先使用网络调试助手建立一个TCP server后开启服务,接收设置使用HEX接收
QT中编译方式选择release
后点击锤子进行编译
完成后点击Run
启动程序,启动后如图
输入刚才建立的TCP Server的IP地址和端口号并点击连接:连接成功后连接按钮会变为断开按钮
这时网络调试助手应已经开始收到间隔为1s的消息:
点击Demo软件的发送按钮:网络调试助手能收到发送的666消息:
点击Demo软件的显示报文按钮让报文栏能够显示接受的消息,然后用网络调试助手发送任意消息给Demo:显示效果如图
项目工程文件链接如下,如需自取
https://download.csdn.net/download/weixin_44087298/85460806
文章浏览阅读4.1w次,点赞10次,收藏56次。一步一步教你如何在AndroidStudio查看Android源码(AOSP源码)_如何用android studio 查看android源码
文章浏览阅读250次。<?php /** * curl多线程下载类 */class MultiHttpRequest{ public $urls = array (); private $res = array (); private $curlopt_header = 0; private $method = "GET"; private $curlopt = array (); ..._curl 多线程下载
文章浏览阅读1.9w次,点赞21次,收藏180次。51单片机AD转换电路设计实现关于AD转换的原理,大家在《数字电子技术》中已经学过,这里做过多的介绍,本文介绍一款经典的8位AD转换芯片ADC0804,基于51单片机设计AD转换电路,并完成测量值的转换。1 芯片引脚介绍CS:片选信号,低电平有效,即CS=0时候芯片才能正常工作,单独一个ADC0804芯片时候直接置零。当有多个芯片时候可以通过片选信号实现分时复用。WR:低电平有效,当WR信号由高到低时候实现一次ADC转换。RD:低电平有效,RD=0时候可以读取数据。Vin+:模拟电压输入端。_单片机ad转换原理
文章浏览阅读1.7k次,点赞3次,收藏14次。操作系统实验报告17实验内容实验内容:虚拟存储管理。编写一个 C 程序模拟实现课件 Lecture24 中的请求页面置换算法包括FIFO、LRU (stack and matrix implementation)、Second chance,并设计输入用例验证结果。实验环境架构:Intel x86_64 (虚拟机)操作系统:Ubuntu 20.04汇编器:gas (GNU Assembler) in AT&T mode编译器:gcc技术日志实验内容原理页_页式存储管理及页面置换算法操作系统实验报告
文章浏览阅读1.7w次,点赞2次,收藏13次。<v:shapetypeid="_x0000_t75" coordsize="21600,21600" o:spt="75" o:preferrelative="t"path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f"><v:shape id="_x0000_i102
文章浏览阅读532次。{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],"search_count":[{"count_phone":4,"count":4}]},"card":[{"des":"阿里技术人对外发布原创技术内容的最大平台;社区覆盖了云计算、大数据、人工智能、IoT、云原生、数据库、微服务、安全、开发与运维9大技术领域。","link1":..._python 执行cmd命令 的输出
文章浏览阅读56次。本文将简单介绍一下如下几种单元测试工具以及推荐一些学习资源。 1.NUnit 2.TestDriven.Net 3.NUnitForms 4.NUnitAsp 一.NUnit 提起大名鼎鼎的NUnit,我想没有几个不知道吧?NUnit是一个专门针对于.NET的单元测试框架。在这之前有针对Java的JUnit,针对 C++的 CPPUnit,它们都是属于xUni..._button tester
文章浏览阅读37次。4.强大的解码能力:DPO2002B示波器提供了多种解码选件,支持常见的串行协议和总线通信解码,如I2C、SPI、UART等,方便工程师对通信数据进行分析和验证。3.灵活的触发功能:示波器支持多种触发方式,如边沿触发、脉冲宽度触发和序列触发等,根据需要灵活设置触发条件,捕获感兴趣的波形。1.高性能参数:该示波器具备200 MHz的带宽和1 GS/s的实时采样率,可捕获和显示高频信号的细节,确保准确的测量结果。
文章浏览阅读832次,点赞21次,收藏18次。本系统带文档lw万字以上文末可领取本课题的JAVA源码参考。
文章浏览阅读876次,点赞17次,收藏20次。华为云AppCube:体验快速搭建微信问卷小程序_微信问卷小程序
文章浏览阅读2.2k次。 我是2001年开始接触PowerBuilder的,一门辅修课上,任课老师向我推荐了它,从此,我对它可谓“一见钟情”。 从刚开始接触PB,我就觉得它是数据库方面最优秀的开发工具之一。无论是它面向对象的特性,还是它特有的PowerScript语言和“数据窗口”,都让我感到无比心动。 我的感受 回想起最初学习PB的时候,给我留下印象最深的是,我发现自己常常会不由自_powerbuilder支持多线程吗
文章浏览阅读784次。Ubuntu第一次通过U盘安装时未出现是否连接网络的选项,安装完成后无线网络无法连接(找不到适配器,更新源后也不好用),蓝牙无法打卡,不知道是什么原因,于是再重装一遍。先关闭secure boot(在security选项中) 和fast boot(boot选项)第一次安装时忘记关联,不知道是不是导致问题的原因卸载参照:在win10、Ubuntu双系统下,卸载Ubuntu提醒下自己:在Windows下删除之前分给Ubuntu中的分区(包括efi分区,但不要删Windows的efi,这里我删除了/,efi_华硕电脑安装ubuntu18.04