需求

  某音响品牌需要一套完整的协议调试工具,提供给研发人员,渠道商,客户,现场人员等使用:
  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. 使用buildx在x86机器上面编译arm64架构的Docker镜像

    buildx 多架构编译 安装docker 下载docker 下载buildx 安装架构支持 docker run --privileged --rm tonistiigi/binfmt --inst ...

  2. Linux下面rsync 实现 完全一致的同步方法

    1. 在某些特殊的linux机器上面, 比如龙芯后者是飞腾服务器,部分工具不太好用, 需要使用x86弄好之后进行同步过去, 这个时候scp 最简单但是网络流量非常大, 不如使用rsync, rsync ...

  3. Linux上面批量更新SQLSERVER SQL文本文件的办法

    1. 今天同事让帮忙更新几个SQL文件.. 本着自己虽然low 但是不能太low的想法, 简单写一个 shell 脚本来执行. 2. 因为我的linux 里面都安装了 sqlcmd 的工具 所以办法就 ...

  4. 一个思路:实现 golang 中的 `__file__` `__line__` 宏

    作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢! cnblogs博客 zhihu Github 公众号:一本正经的瞎扯 测试 zaplog 发现,开启 caller 的调用,会使 ...

  5. 【遇到一个怪异的问题】使用embed来加载模版,只要写在init()函数中就会导致HTTP服务出错

    作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢! cnblogs博客 zhihu Github 公众号:一本正经的瞎扯 经过反复测试,只要换一个写法就能开启/重现这个怪异的问题. ...

  6. js 闭包详解一

    闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现. 下面就是我的学习笔记,对于Javascript初学者应该是很有用的. 一.变量的作用域 要理解 ...

  7. Gin 框架之Cookie与Session

    目录 一.Cookie和Session的由来 二.Cookie简介 1. 什么是Cookie 2. Cookie规范 3. 安全性 4. Cookie 关键配置 三.Session简介 1. 什么是S ...

  8. 搜索推荐DeepFM算法详解:算法原理、代码实现、比赛实战

    搜索推荐DeepFM算法详解:算法原理.代码实现.比赛实战 可以说,DeepFM 是目前最受欢迎的 CTR 预估模型之一,不仅是在交流群中被大家提及最多的,同时也是在面试中最多被提及的: 1.Deep ...

  9. 手把手教学小型金融知识图谱构建:量化分析、图数据库neo4j、图算法、关系预测、命名实体识别、Cypher Cheetsheet详细教学等

    手把手教学小型金融知识图谱构建:量化分析.图数据库neo4j.图算法.关系预测.命名实体识别.Cypher Cheetsheet详细教学等 效果预览: 1. 知识图谱存储方式 知识图谱存储方式主要包含 ...

  10. 强化学习从基础到进阶-常见问题和面试必知必答[4]::深度Q网络-DQN、double DQN、经验回放、rainbow、分布式DQN

    强化学习从基础到进阶-常见问题和面试必知必答[4]::深度Q网络-DQN.double DQN.经验回放.rainbow.分布式DQN 1.核心词汇 深度Q网络(deep Q-network,DQN) ...