码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2021-06-02 13:12:17      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:隐藏   window   hash   update   sse   alt   vpd   客户   博客   

需求

??某音响品牌需要一套完整的协议调试工具,提供给研发人员,渠道商,客户,现场人员等使用:
??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等,可增删改指令)

标签:隐藏   window   hash   update   sse   alt   vpd   客户   博客   

原文地址:https://www.cnblogs.com/qq21497936/p/14818320.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!