案例分享:某品牌音响系列协议调试工具(搜寻主机,查询通道,基本控制API,云音乐API,语言节目API等,可增删改指令)
需求
某音响品牌需要一套完整的协议调试工具,提供给研发人员,渠道商,客户,现场人员等使用:
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等,可增删改指令)的更多相关文章
- 易普优APS高级计划排程系统系列提纲:行业知识,业务建模,排程算法,计划可视化,平台框架,案例分享
专注于高级计划排程系统研发与实施10来年了,国内外各种APS软件基本都研究过,这里列个提纲主要从6个方面跟大家一起讨论分享,欢迎大家鼓掌或拍砖 易普优APS高级计划排程系统系列001:行业知识,APS ...
- 前端案例分享(一):CSS+JS实现流星雨动画
目录 引言 1.效果图 2.源码 3.案例解析 4.小问题 5.结语 引言 平常会做一些有意思的小案例练手,通常都会发到codepen上,但是codepen不能写分析. 所 ...
- [测试技术分享]easyFuzzer使用案例分享
easyFuzzer使用案例分享 1.简介: easyFuzzer是wooyun的一位白帽子(光刃)提供的一款用于fuzz文件的工具.平时主要是和网络协议安全打交道,和本地软件安全打交道比较少,所以没 ...
- 【案例分享】在 React 框架中使用 SpreadJS 纯前端表格控件
[案例分享]在 React 框架中使用 SpreadJS 纯前端表格控件 本期葡萄城公开课,将由国电联合动力技术有限公司,资深前端开发工程师——李林慧女士,与大家在线分享“在 React 框架中使用 ...
- ArcGIS Add-in插件开发从0到1及实际案例分享
同学做毕设,要求我帮着写个ArcGIS插件,实现功能为:遍历所有图斑,提取相邻图斑的公共边长及其他属性(包括相邻图斑的ID),链接到属性表中.搞定后在这里做个记录.本文分两大部分: ArcGIS插件开 ...
- Office 2010 KMS激活原理和案例分享
Office 2010 KMS激活原理和案例分享 为了减低部署盗版(可能包含恶意软件.病毒和其他安全风险)的可能性,Office 2010面向企业客户推出了新的批量激活方式:KMS和MAK.这 ...
- Office 2010 KMS激活原理和案例分享 - Your Office Solution Here - Site Home - TechNet Blogs
[作者:葛伟华.张玉工程师 , Office/Project支持团队, 微软亚太区全球技术支持中心 ] 为了减低部署盗版(可能包含恶意软件.病毒和其他安全风险)的可能性,Office 2010面向企 ...
- 老李案例分享:Weblogic性能优化案例
老李案例分享:Weblogic性能优化案例 POPTEST的测试技术交流qq群:450192312 网站应用首页大小在130K左右,在之前的测试过程中,其百用户并发的平均响应能力在6.5秒,性能优化后 ...
- 性能调优案例分享:Mysql的cpu过高
性能调优案例分享:Mysql的cpu过高 问题:一个系统,Mysql数据库,数据量变大之后.mysql的cpu占用率很高,一个测试端访问服务器时mysql的cpu占用率为15% ,6个测试端连服务 ...
- 老李案例分享:MAT分析应用程序服务出现内存溢出过程
老李案例分享:MAT分析应用程序服务出现内存溢出过程 poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.在poptest的loa ...
随机推荐
- [转帖]Kafka之ack机制
前言 之前的博客里说了,Kafka的消息同步是一种ISR机制,本质上是"完全同步"的一种优化. 都在说,消息被ISR中所有副本都写入才算写入成功.但是这样未免定的太死板了,所以,K ...
- [转帖]Kafka生产者——重要参数配置
https://www.cnblogs.com/luckyhui28/p/12001798.html 目录 acks max.request.size retries和retry.backoff.ms ...
- [转帖]Ipmitool跟OS下的ipmi模块之间的关系
https://www.jianshu.com/p/71614d3288e8 OS下默认加载了ipmi的相关模块 注:此时OS下可以正常使用ipmitool命令访问本机的ipmi 设备. [root@ ...
- 【转帖】26.Java本地方法的理解(native方法)
目录 1.什么是本地方法? 2. 为什么要使用Native method? 1.什么是本地方法? 本地方法就是java代码里面写的native方法,它没有方法体.是为了调用C/C++代码而写的.在JN ...
- [转帖]Linux命令拾遗-%iowait指标代表了什么?
https://www.cnblogs.com/codelogs/p/16060759.html 简介# 一直以来,我都知道top.vmstat.mpstat中有一个叫wa(%iowait)的cpu指 ...
- DBLink实现备份文件不落盘的导入其他Oracle数据库实例的方法
DBLink实现备份文件不落盘的导入其他Oracle数据库实例的方法 背景 公司内经常有从其他服务器备份数据库实例的需求 之前的操作一般需要,备份源服务器使用expdp将source导出dump文件. ...
- HanLP — 感知机(Perceptron) -- Python
HanLP - 感知机(Perceptron) 感知机 感知机是根据输入实例的特征向量 x 对其进行二类分类的线性模型: \[f(x)=sign(w\cdot x+b) \] 感知机模型对应于输入空间 ...
- vue中$children的理解
官网介绍 $children $children 获取当前实例的直接子组件 .需要注意 $children 并不保证顺序,也不是响应式的.[特别重要] 如果你发现自己正在尝试使用 $children ...
- 微服务用yml安装系统(第一版)
当用微服务安装系统后,面临服务较多,一个一个安装比较麻烦,是否有统一的脚本可以直接执行安装呢?答案是肯定的: 1.首先介绍一下所有安装脚本,如下图 spd-volume:是各服务外挂的资料卷 comm ...
- Protobuf中如何指定json tag
在 Protocol Buffers (protobuf) 中,可以使用特定的选项来指定生成的 JSON 标签.通过在消息定义中使用 [(json_name)] 选项,可以控制生成的 JSON 字段名 ...