QT--编写自己的TCP/IP上位机软件--demo_在线写上位机软件-程序员宅基地

技术标签: QT  qt5  

之前做项目一直是别人负责做上位机软件,我负责调试硬件程序,定好协议各干各的就行了,但是渐渐地我发现总是有很多内容在调试中会发生变动,而且协调起来周期很长,还是自己能写上位机软件比较方便。
下面整理了一个我最近做的Qt项目Demo,主要用于以后新项目编写上位机的框架用。
QT版本:5.14.2
语言:C++
通信方式:TCP/IP

1.打开工程

打开工程文件夹中的EQAT_Debug.pro文件
在这里插入图片描述

勾选需要的编译方式后点击configure project
在这里插入图片描述这样就成功打开工程了。
在这里插入图片描述

2.编辑工程内容

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后,重新编译工程即可。

3.功能测试

首先使用网络调试助手建立一个TCP server后开启服务,接收设置使用HEX接收
在这里插入图片描述
QT中编译方式选择release后点击锤子进行编译
在这里插入图片描述
完成后点击Run启动程序,启动后如图
在这里插入图片描述
输入刚才建立的TCP Server的IP地址和端口号并点击连接:连接成功后连接按钮会变为断开按钮
在这里插入图片描述
这时网络调试助手应已经开始收到间隔为1s的消息:
在这里插入图片描述
点击Demo软件的发送按钮:网络调试助手能收到发送的666消息:
在这里插入图片描述

点击Demo软件的显示报文按钮让报文栏能够显示接受的消息,然后用网络调试助手发送任意消息给Demo:显示效果如图
在这里插入图片描述
项目工程文件链接如下,如需自取
https://download.csdn.net/download/weixin_44087298/85460806

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_44087298/article/details/124969249

智能推荐

一步一步教你如何在AndroidStudio查看Android源码(AOSP源码)_如何用android studio 查看android源码-程序员宅基地

文章浏览阅读4.1w次,点赞10次,收藏56次。一步一步教你如何在AndroidStudio查看Android源码(AOSP源码)_如何用android studio 查看android源码

curl多线程下载类-程序员宅基地

文章浏览阅读250次。<?php /** * curl多线程下载类 */class MultiHttpRequest{ public $urls = array (); private $res = array (); private $curlopt_header = 0; private $method = "GET"; private $curlopt = array (); ..._curl 多线程下载

51单片机AD转换_单片机ad转换原理-程序员宅基地

文章浏览阅读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转换原理

操作系统实验报告17:请求页面置换算法_页式存储管理及页面置换算法操作系统实验报告-程序员宅基地

文章浏览阅读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技术日志实验内容原理页_页式存储管理及页面置换算法操作系统实验报告

SAP中AUTHORITY-CHECK 的使用-程序员宅基地

文章浏览阅读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

python执行cmd命令并解析结果_基于Python执行dos命令并获取输出的结果-程序员宅基地

文章浏览阅读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

TEKTRONIX泰克DPO2002B混合信号示波器-程序员宅基地

文章浏览阅读37次。4.强大的解码能力:DPO2002B示波器提供了多种解码选件,支持常见的串行协议和总线通信解码,如I2C、SPI、UART等,方便工程师对通信数据进行分析和验证。3.灵活的触发功能:示波器支持多种触发方式,如边沿触发、脉冲宽度触发和序列触发等,根据需要灵活设置触发条件,捕获感兴趣的波形。1.高性能参数:该示波器具备200 MHz的带宽和1 GS/s的实时采样率,可捕获和显示高频信号的细节,确保准确的测量结果。

java/php/node.js/python基于web的网上订餐系统【2024年毕设】-程序员宅基地

文章浏览阅读832次,点赞21次,收藏18次。本系统带文档lw万字以上文末可领取本课题的JAVA源码参考。

华为云AppCube:体验快速搭建微信问卷小程序-程序员宅基地

文章浏览阅读876次,点赞17次,收藏20次。华为云AppCube:体验快速搭建微信问卷小程序_微信问卷小程序

我对PowerBuilder的一小点感悟_powerbuilder支持多线程吗-程序员宅基地

文章浏览阅读2.2k次。   我是2001年开始接触PowerBuilder的,一门辅修课上,任课老师向我推荐了它,从此,我对它可谓“一见钟情”。   从刚开始接触PB,我就觉得它是数据库方面最优秀的开发工具之一。无论是它面向对象的特性,还是它特有的PowerScript语言和“数据窗口”,都让我感到无比心动。   我的感受   回想起最初学习PB的时候,给我留下印象最深的是,我发现自己常常会不由自_powerbuilder支持多线程吗

华硕win10+Ubuntu18.04双系统安装与卸载_华硕电脑安装ubuntu18.04-程序员宅基地

文章浏览阅读784次。Ubuntu第一次通过U盘安装时未出现是否连接网络的选项,安装完成后无线网络无法连接(找不到适配器,更新源后也不好用),蓝牙无法打卡,不知道是什么原因,于是再重装一遍。先关闭secure boot(在security选项中) 和fast boot(boot选项)第一次安装时忘记关联,不知道是不是导致问题的原因卸载参照:在win10、Ubuntu双系统下,卸载Ubuntu提醒下自己:在Windows下删除之前分给Ubuntu中的分区(包括efi分区,但不要删Windows的efi,这里我删除了/,efi_华硕电脑安装ubuntu18.04

推荐文章

热门文章

相关标签