需求

  某音响品牌需要一套完整的协议调试工具,提供给研发人员,渠道商,客户,现场人员等使用:
  1.使用sqlite3数据库存储协议,
  2.搜寻主机,操作主机;
  3.探测云端API,调试API;
  4.指令包含tcp,udp,udp组播;
  5.打开pdf查看使用说明和协议;
  6.隐藏功能,管理员可就调出“控制”菜单,对指令进行增改删操作;
  7.支持windows系统;

 

Demo:某一产品线完整系列协议

  
  设备控制指令,如下:
  

  

  
  通过操作设备,获取云音乐(某大厂),测试该系列供应商接口是否正常:
  
  
  通过操作设备,获取语言类节目,测试该系列云端供应商接口是否正常:
  
  直接搜索主机,或者搜索指定主机的通道数量以及对应编号:
  
  管理员使用特殊的操作,可以调出“控制”菜单,如下图:
  
  选取指令可以增删改,如下图:
  
  
  
  

 

头文件源码

#ifndef MAINWINDOW_H
#define MAINWINDOW_H #include <QMainWindow>
#include "DbServer.h" #define PDF_EXE "SumatraPDF.exe" class UdpTransfer;
class QThread;
class QTcpSocket;
class QUdpSocket;
class QLabel;
class QModelIndex;
class QTreeWidgetItem;
class QTimer; namespace Ui {
class MainWindow;
} class MainWindow : public QMainWindow
{
Q_OBJECT
public:
struct ChannelInfo{
ChannelInfo(){}
QString roomId;
QString roomName;
QString devStat;
}; struct HostInfo{
HostInfo(){}
QString ip;
QString deviceId;
QString deviceName;
QString deviceType;
QList<ChannelInfo> listChannelInfo;
}; public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow(); public:
void init();
void sendUdpData(QByteArray);
void sendTcpData(QByteArray byteArray, QString ip, quint16 port); public slots:
void connected();
void disconnected(); private slots:
void btn_clicked_FaSongZhiLing();
void lvw_clicked_ZhiLingJi();
void ckb_clicked_XianShiZuiXin();
void btn_clicked_ZengJiaZhiLing();
void btn_clicked_XiuGaiZhiLing();
void btn_clicked_ShanChuZhiLing();
void trw_clicked_ZhuJiLieBiao(QTreeWidgetItem* item ,int index);
void btn_clicked_SouSuoZHuJi();
void btn_clicked_HuoDeZhuJiTongDao();
void cmb_changed_ZhiLingLeiXing(QString typeString);
void tim_timeout(); private slots:
void recvUdpData();
void recvTcpData();
void recvUdpNotify(QByteArray,QString,quint16); private slots:
void on_btn_DaKaiXieYi_clicked();
void on_act_SouSuoZhuJi_triggered();
void on_act_Exit_triggered();
void on_act_HuoQuZhuJiTongDao_triggered();
void on_act_DaKaiXieYi_triggered();
void on_act_About_triggered();
void on_act_AboutQT_triggered();
void on_btn_QingKongUdp_clicked();
void on_btn_QingKongTcp_clicked();
void on_btn_QingKongUdpNotify_clicked(); private:
void updateZhiLingJi();
void showList();
void updateHost(); private:
QString ByteArrayToPlain(QByteArray byteArray);
QString JsonToPlain(QJsonObject & jsonObject);
QByteArray PlainToByteArray(QString str); protected:
void keyPressEvent(QKeyEvent * event);
void keyReleaseEvent(QKeyEvent * event); private:
Ui::MainWindow *ui;
UdpTransfer *_pUdpTransfer;
QThread *_pUdpTransferThread;
QHash<QString, DbServer::ZhiLingJi> _hashZhiLingJi;
QString _content;
QTcpSocket *_pTcpSocket;
QUdpSocket *_pUdpSocket;
QByteArray _tcpByteArray;
QStatusBar *_pStatusBar;
QLabel * _pStatusLabel1;
QLabel * _pStatusLabel2;
QHash<QString, HostInfo> _hashHostInfo;
DbServer::ZHILINGJI_API_TYPE _type;
bool _ctrl;
QProcess *_pDdf;
QTimer *_pTimer;
};
#endif // MAINWINDOW_H
 

若该文为原创文章,转载请注明原文出处
本文章博客地址:https://blog.csdn.net/qq21497936/article/details/115920854

案例分享:某品牌音响系列协议调试工具(搜寻主机,查询通道,基本控制API,云音乐API,语言节目API等,可增删改指令)的更多相关文章

  1. 易普优APS高级计划排程系统系列提纲:行业知识,业务建模,排程算法,计划可视化,平台框架,案例分享

    专注于高级计划排程系统研发与实施10来年了,国内外各种APS软件基本都研究过,这里列个提纲主要从6个方面跟大家一起讨论分享,欢迎大家鼓掌或拍砖 易普优APS高级计划排程系统系列001:行业知识,APS ...

  2. 前端案例分享(一):CSS+JS实现流星雨动画

    目录 引言 1.效果图 2.源码 3.案例解析 4.小问题 5.结语 引言        平常会做一些有意思的小案例练手,通常都会发到codepen上,但是codepen不能写分析.        所 ...

  3. [测试技术分享]easyFuzzer使用案例分享

    easyFuzzer使用案例分享 1.简介: easyFuzzer是wooyun的一位白帽子(光刃)提供的一款用于fuzz文件的工具.平时主要是和网络协议安全打交道,和本地软件安全打交道比较少,所以没 ...

  4. 【案例分享】在 React 框架中使用 SpreadJS 纯前端表格控件

    [案例分享]在 React 框架中使用 SpreadJS 纯前端表格控件 本期葡萄城公开课,将由国电联合动力技术有限公司,资深前端开发工程师——李林慧女士,与大家在线分享“在 React 框架中使用 ...

  5. ArcGIS Add-in插件开发从0到1及实际案例分享

    同学做毕设,要求我帮着写个ArcGIS插件,实现功能为:遍历所有图斑,提取相邻图斑的公共边长及其他属性(包括相邻图斑的ID),链接到属性表中.搞定后在这里做个记录.本文分两大部分: ArcGIS插件开 ...

  6. Office 2010 KMS激活原理和案例分享

    Office 2010 KMS激活原理和案例分享     为了减低部署盗版(可能包含恶意软件.病毒和其他安全风险)的可能性,Office 2010面向企业客户推出了新的批量激活方式:KMS和MAK.这 ...

  7. Office 2010 KMS激活原理和案例分享 - Your Office Solution Here - Site Home - TechNet Blogs

    [作者:葛伟华.张玉工程师 ,  Office/Project支持团队, 微软亚太区全球技术支持中心 ] 为了减低部署盗版(可能包含恶意软件.病毒和其他安全风险)的可能性,Office 2010面向企 ...

  8. 老李案例分享:Weblogic性能优化案例

    老李案例分享:Weblogic性能优化案例 POPTEST的测试技术交流qq群:450192312 网站应用首页大小在130K左右,在之前的测试过程中,其百用户并发的平均响应能力在6.5秒,性能优化后 ...

  9. 性能调优案例分享:Mysql的cpu过高

    性能调优案例分享:Mysql的cpu过高   问题:一个系统,Mysql数据库,数据量变大之后.mysql的cpu占用率很高,一个测试端访问服务器时mysql的cpu占用率为15% ,6个测试端连服务 ...

  10. 老李案例分享:MAT分析应用程序服务出现内存溢出过程

    老李案例分享:MAT分析应用程序服务出现内存溢出过程   poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.在poptest的loa ...

随机推荐

  1. NOI2023 游记

    不完全按时间顺序写.记录 NOI 的一些琐事. 从 XDFZ 坐大巴 5 个小时来到成七.第一眼看到的是一个放着 NOI 牌子的台阶,还有一个签名墙.好像在我们之前到的人不太多? 用中英双语签名(冷月 ...

  2. STM32CubeMX教程26 FatFs 文件系统 - W25Q128读写

    1.准备材料 正点原子stm32f407探索者开发板V2.4 STM32CubeMX软件(Version 6.10.0) keil µVision5 IDE(MDK-Arm) ST-LINK/V2驱动 ...

  3. Linux下rz命令上传文件失败处理

    在Linux服务器上使用rz命令上传文件时,有时候会遇到文件上传失败,此时会在当前目录下生成一堆大小为0的乱码文件,如下图所示: 这些文件有时候rm命令也无法删除,下面提供两种通过find命令删除的方 ...

  4. CMake出错的处理

    在windows上使用cmake来c++的程序,遇到一个问题 问题排查 试过在电脑上单独使用gcc是可以编译成功的,那么就可能是IDE集成的问题了 IDE的编译工具链从mingw换成vs,编译通过 让 ...

  5. 从零开始配置vim(27)——代码片段

    我们之前介绍过缩写相关的内容,缩写是可以自动帮我们将缩写的单词展开成一段完整的话.但是代码本身是结构话的,仅仅使用缩写来配置是无法完成自动生成代码这个步骤的.好在我们大量的插件来进行配置.本篇我们将要 ...

  6. Flowable-UI

    Flowable-UI 安装 手把手教大家画了这样一个流程图,虽然说它不是特别好用,但是也不是不能用,也能用.好了,那么接下来的话,我们这个就先告一个段落,接下来我要跟大家说的第二个东西的话,就是另外 ...

  7. 文档级关系抽取:基于结构先验产生注意力偏差SSAN模型

    文档级关系抽取:基于结构先验产生注意力偏差SSAN模型 Entity Structure Within and Throughout: Modeling Mention Dependencies fo ...

  8. 解决.netWebAPI输出时间格式带T问题

    GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings.Converters.Add( new Ne ...

  9. Java 如何在日志中优雅的打印 Exception

    一.使用 log 库打印 使用 log 库如 slf4j @Slf4j public class MyDemo { public void demo() { try { int a = 10 / 0; ...

  10. SOCKS5协议解析

    socks的官方文档:https://www.ietf.org/rfc/rfc1928.txt 本文改变其他作者之手,在原文基础上加入客户端的编写,完善了服务端代码,原文是Linux端的程序代码,本文 ...