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

简介: 案例分享:某品牌音响系列协议调试工具(搜寻主机,查询通道,基本控制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



相关文章
|
30天前
|
自然语言处理 NoSQL API
基于百炼平台qwen-max的api 打造一套 检索增强 图谱增强 基于指令的智能工具调用决策 智能体
基于百炼平台的 `qwen-max` API,设计了一套融合检索增强、图谱增强及指令驱动的智能工具调用决策系统。该系统通过解析用户指令,智能选择调用检索、图谱推理或模型生成等工具,以提高问题回答的准确性和丰富性。系统设计包括指令解析、工具调用决策、检索增强、图谱增强等模块,旨在通过多种技术手段综合提升智能体的能力。
142 5
|
3月前
|
XML JSON API
ServiceStack:不仅仅是一个高性能Web API和微服务框架,更是一站式解决方案——深入解析其多协议支持及简便开发流程,带您体验前所未有的.NET开发效率革命
【10月更文挑战第9天】ServiceStack 是一个高性能的 Web API 和微服务框架,支持 JSON、XML、CSV 等多种数据格式。它简化了 .NET 应用的开发流程,提供了直观的 RESTful 服务构建方式。ServiceStack 支持高并发请求和复杂业务逻辑,安装简单,通过 NuGet 包管理器即可快速集成。示例代码展示了如何创建一个返回当前日期的简单服务,包括定义请求和响应 DTO、实现服务逻辑、配置路由和宿主。ServiceStack 还支持 WebSocket、SignalR 等实时通信协议,具备自动验证、自动过滤器等丰富功能,适合快速搭建高性能、可扩展的服务端应用。
178 3
|
2月前
|
JSON BI API
商城上货API接口的实战案例
在商城上货过程中,API接口扮演着至关重要的角色。以下是对商城上货API接口的实战分析,涵盖其主要功能、类型、安全性以及实战案例等方面。
|
2月前
|
XML 数据可视化 API
商品详情数据实战案例,API接口系列
淘宝商品详情数据在电商领域具有广泛的应用价值,而淘宝商品详情API接口则为开发者提供了获取这些数据的重要途径。通过合理利用这些接口和数据,可以提升业务效率、优化用户体验,为电商行业的发展注入新的活力。
|
3月前
|
XML API 网络架构
API协议 的十种技术特点及适用场景
本文介绍了十种常见的API协议技术,包括REST、GraphQL、gRPC、SOAP、WebSocket、AMF和XML-RPC等,每种技术都有其特点和适用场景,如REST适用于轻量级Web服务开发,gRPC适合高性能分布式系统,而WebSocket则适用于需要低延迟交互的应用。
|
5月前
|
存储 Linux API
Linux源码阅读笔记08-进程调度API系统调用案例分析
Linux源码阅读笔记08-进程调度API系统调用案例分析
|
5月前
|
JSON 数据管理 关系型数据库
【Dataphin V3.9】颠覆你的数据管理体验!API数据源接入与集成优化,如何让企业轻松驾驭海量异构数据,实现数据价值最大化?全面解析、实战案例、专业指导,带你解锁数据整合新技能!
【8月更文挑战第15天】随着大数据技术的发展,企业对数据处理的需求不断增长。Dataphin V3.9 版本提供更灵活的数据源接入和高效 API 集成能力,支持 MySQL、Oracle、Hive 等多种数据源,增强 RESTful 和 SOAP API 支持,简化外部数据服务集成。例如,可轻松从 RESTful API 获取销售数据并存储分析。此外,Dataphin V3.9 还提供数据同步工具和丰富的数据治理功能,确保数据质量和一致性,助力企业最大化数据价值。
237 1
|
5月前
|
开发者
告别繁琐代码,JSF标签库带你走进高效开发的新时代!
【8月更文挑战第31天】JSF(JavaServer Faces)标准标签库为页面开发提供了大量组件标签,如`&lt;h:inputText&gt;`、`&lt;h:dataTable&gt;`等,简化代码、提升效率并确保稳定性。本文通过示例展示如何使用这些标签实现常见功能,如创建登录表单和展示数据列表,帮助开发者更高效地进行Web应用开发。
51 0
|
5月前
|
UED 存储 自然语言处理
【语言无界·体验无疆】解锁Vaadin应用全球化秘籍:从代码到文化,让你的应用畅游世界每一个角落!
【8月更文挑战第31天】《国际化与本地化实战:构建多语言支持的Vaadin应用》详细介绍了如何使用Vaadin框架实现应用的国际化和本地化,提升用户体验和市场竞争力。文章涵盖资源文件的创建与管理、消息绑定与动态加载、日期和数字格式化及文化敏感性处理等方面,通过具体示例代码和最佳实践,帮助开发者构建适应不同语言和地区设置的Vaadin应用。通过这些步骤,您的应用将更加灵活,满足全球用户需求。
69 0
|
5月前
|
API 数据库 UED
全面解析构建高性能API的秘诀:运用Entity Framework Core与异步编程提升Web应用响应速度及并发处理能力的详细指南与实践案例
【8月更文挑战第31天】本文详细介绍了如何利用 Entity Framework Core (EF Core)的异步编程特性构建高性能 API。通过创建基于 EF Core 的 .NET Core Web API 项目,配置数据库上下文,并定义领域模型,文章展示了如何使用异步方法进行数据查询、加载相关实体及事务处理。具体代码示例涵盖了 GET、POST、PUT 和 DELETE 操作,全面展示了 EF Core 异步编程的优势,有助于提升 API 的响应速度和处理能力。
64 0