1.增加取图后默认保存图像,YUV和JPG各保存一张; 2.修复出现QTcpSocket对象的问题和QTcpSocket对象导致的线程安全问题

This commit is contained in:
2024-09-04 11:32:19 +08:00
parent c6e16094b9
commit 4bd2d7eab5
265 changed files with 226409 additions and 1611 deletions

View File

@@ -24,26 +24,37 @@
#include "DelUserWindows.h"
#define TEST_TCP_MOVE_TO_MAIN 0
class ClientHandler : public QObject, public QRunnable
{
Q_OBJECT
public:
#if TEST_TCP_MOVE_TO_MAIN
explicit ClientHandler(QTcpSocket* socket, QJsonArray frontBoardOneClickTest, QJsonArray frontBoardTest,
QJsonArray frontBoardFuncConfig, QJsonArray frontBoardDevInfoJson, QJsonArray frontBoardLicenseJson,
QJsonArray backBoardOneClickTest, QJsonArray backBoardTest, QJsonArray backBoardFuncConfig, QJsonArray backBoardDevInfoJson,
QJsonArray backBoardUuidJson, QJsonArray getPicJson, QJsonArray getVideoJson,
int clientId, int isBackBoardOrAllBoard, QObject* parent = nullptr);
#else
explicit ClientHandler(QJsonArray frontBoardOneClickTest, QJsonArray frontBoardTest,
QJsonArray frontBoardFuncConfig, QJsonArray frontBoardDevInfoJson, QJsonArray frontBoardLicenseJson,
QJsonArray backBoardOneClickTest, QJsonArray backBoardTest, QJsonArray backBoardFuncConfig, QJsonArray backBoardDevInfoJson,
QJsonArray backBoardUuidJson, QJsonArray getPicJson, QJsonArray getVideoJson,
int clientId, int isBackBoardOrAllBoard, QObject* parent = nullptr);
#endif
~ClientHandler();
int preVideoClientId = 0;
int controlClientId = 0;
void sendDevInfoItem();
//int preVideoClientId = 0;
bool isData_Stuck() const;
//static int pre_H264_clientId; // 预览H264的客户端ID
QTcpSocket* getSocket() const { return socket; }
#if !TEST_TCP_MOVE_TO_MAIN
void ClientHandler::initialize(QTcpSocket* socket);
#endif
// QRunnable 的虚函数,在线程池中执行
void run() override;
// 开始处理客户端
@@ -103,12 +114,15 @@ signals:
void allItemsProcessed(const QString& client, int itemsProcessedCount);
// 通知主线程启动定时器
void startTimeout(int timeout);
void selectClientDisconnected(int clientId);
void startReadTimer(int clientId);
void stopReadTimer(int clientId);
void sendDataToSomeClient(int clientId, const QByteArray& data);
void selectClientDisconnected(int client_Id);
void startReadTimer(int client_Id);
void stopReadTimer(int client_Id);
void sendDataToSomeClient(int client_Id, const QByteArray& data);
public slots:
#if !TEST_TCP_MOVE_TO_MAIN
void onSendData(const QByteArray& data, int isBoardType);
#endif
// 处理数据接收
void onDataReceived();
// 处理超时