案例分享:某品牌音響系列協議除錯工具(搜尋主機,查詢通道,基本控制API,雲音樂API,語言節目API等,可增刪改指令)
紅胖子(紅模仿)的博文大全:開發技術集合(包含Qt實用技術、樹莓派、三維、OpenCV、OpenGL、ffmpeg、OSG、微控制器、軟硬結合等等)持續更新中…(點選傳送門)
合作案例專欄:案例分享(體驗Demo可下載,只定制)
<br>
需求
某音響品牌需要一套完整的協議除錯工具,提供給研發人員,渠道商,客戶,現場人員等使用: 1.使用sqlite3資料庫儲存協議, 2.搜尋主機,操作主機; 3.探測雲端API,除錯API; 4.指令包含tcp,udp,udp組播; 5.開啟pdf檢視使用說明和協議; 6.隱藏功能,管理員可就調出“控制”選單,對指令進行增改刪操作; 7.支援windows系統;
<br>
Demo:某一產品線完整系列協議
裝置控制指令,如下:
通過操作裝置,獲取雲音樂(某大廠),測試該系列供應商介面是否正常:
通過操作裝置,獲取語言類節目,測試該系列雲端供應商介面是否正常:
直接搜尋主機,或者搜尋指定主機的通道數量以及對應編號:
管理員使用特殊的操作,可以調出“控制”選單,如下圖:
選取指令可以增刪改,如下圖:
<br>
標頭檔案原始碼
#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
「其他文章」
- 樹莓派開發筆記(十三):入手研華ADVANTECH工控樹莓派UNO-220套件(二):安裝rtc等驅動
- 紅胖子創業一年整總結:前二十年題記,萌芽初期,外包初期,創業初期,未來規劃
- Qt MPlayer音樂播放器開發筆記(二):交叉編譯MPlayer以及部署到開發板播放演示
- zlib開發筆記(三):zlib庫介紹、在ubuntu上進行arm平臺交叉編譯
- 案例分享:Qt政務標籤設計器,標籤排版軟體定製與列印
- Qt 騰訊IM開發筆記(一):騰訊IM介紹、使用和Qt整合騰訊IM-SDK的工程模板Demo
- Qt MPlayer音樂播放器開發筆記(一):ubuntu上編譯MPlayer以及Demo演示
- 案例分享:Qt Arm基於RV1126平臺的內窺鏡軟硬整套解決方案(實時影像、凍結、拍照、錄影、背光調整、硬體光源調整,其他產品也可使用該平臺,如影片監控,物聯網產品等等)
- libzip開發筆記(二):libzip庫介紹、ubuntu平臺編譯和工程模板
- 臺達PLC開發筆記(二):臺達PLC設定主機通訊引數為RTU併成功通訊
- 臺達PLC開發筆記(一):臺達PLC連線介紹,分別使用485、網口與臺達PLC建立連線
- Qt的圖形檢視框架,最核心的三個類為:QGraphicsScene、QGraphicsItem與QGraphicsView。
- Windows上mingw32版本的openssl的編譯是屬於比較棘手的,OpenSSL本身不提供支援.。
- 案例分享:Qt modbus485除錯工具(讀寫Byte、Int、DInt、Real、DReal)(當前v1.3.0)
- 案例分享:某品牌音響系列協議除錯工具(搜尋主機,查詢通道,基本控制API,雲音樂API,語言節目API等,可增刪改指令)
- NSIS安裝包開發筆記(三):NSIS使用Qt做的安裝介面製作安裝包互動詳解
- NSIS製作安裝包筆記(一):NSIS介紹、使用NSIS預設嚮導指令碼製作Windows安裝包
- 海康攝像SDK開發筆記(一):海康威視網路攝像頭SDK介紹與模組功能
- Qt開發技術:Qt拽拖開發(一)拽託框架詳解及Demo
- Qt開發技術:圖形檢視框架(一)基本介紹