调试测量客户端类修改

This commit is contained in:
徐海 2026-04-07 19:15:58 +08:00
parent 829e322b7c
commit 24bf6cb113
3 changed files with 21 additions and 84 deletions

View File

@ -1,10 +1,9 @@
#include "MeasureClient.h"
#include <QDebug>
MeasureClient::MeasureClient(QObject *parent) : QObject(parent)
{
_host = "localhost";
_port = 96966;
_host = "127.0.0.1";
_port = 9999;
// 创建工作线程
_workerThread = new QThread(this);
@ -95,6 +94,8 @@ void MeasureClient::processCommand(const QString &command, const QString &device
devices = response["devices"].toStringList();
}
emit getDeviceListResult(success, devices);
} else {
emit errorOccurred(message);
}
}
@ -111,13 +112,11 @@ QVariantMap MeasureClient::sendCommand(const QString &command, const QString &de
// 创建临时socket短连接
QTcpSocket socket;
socket.connectToHost(host, port);
if (!socket.waitForConnected(3000)) {
result["message"] = "Failed to connect to server: " + socket.errorString();
result["message"] = QStringLiteral(u"连接服务失败:") + socket.errorString();
emit errorOccurred(result["message"].toString());
return result;
}
// 发送命令
QByteArray request_data;
QDataStream request_stream(&request_data, QIODevice::WriteOnly);
@ -126,18 +125,16 @@ QVariantMap MeasureClient::sendCommand(const QString &command, const QString &de
if (!data.isEmpty()) {
request_stream << data;
}
socket.write(request_data);
if (!socket.waitForBytesWritten(1000)) {
result["message"] = "Failed to send command: " + socket.errorString();
result["message"] = QStringLiteral(u"发送请求失败:") + socket.errorString();
emit errorOccurred(result["message"].toString());
socket.disconnectFromHost();
return result;
}
// 等待响应
if (!socket.waitForReadyRead(5000)) {
result["message"] = "No response from server: " + socket.errorString();
result["message"] = QStringLiteral(u"服务无响应:") + socket.errorString();
emit errorOccurred(result["message"].toString());
socket.disconnectFromHost();
return result;
@ -150,9 +147,7 @@ QVariantMap MeasureClient::sendCommand(const QString &command, const QString &de
QString response_command;
bool success;
response_stream >> response_command >> success;
result["success"] = success;
if (response_command == "DEVICE") {
// 处理设备列表响应
if (success) {
@ -175,7 +170,9 @@ QVariantMap MeasureClient::sendCommand(const QString &command, const QString &de
// 断开连接
socket.disconnectFromHost();
socket.waitForDisconnected(1000);
if (socket.state() != QTcpSocket::UnconnectedState) {
socket.waitForDisconnected(1000);
}
return result;
}
}

View File

@ -1,60 +0,0 @@
#ifndef MEASURECLIENT_H
#define MEASURECLIENT_H
#include <QObject>
#include <QTcpSocket>
#include <QDataStream>
#include <QJsonDocument>
#include <QJsonObject>
#include <QVariantMap>
#include <QVariantList>
#include <QThread>
#include <QMutex>
class MeasureClient : public QObject
{
Q_OBJECT
public:
explicit MeasureClient(QObject *parent = nullptr);
~MeasureClient();
// 设置服务器地址和端口
void setServerAddress(const QString &host, quint16 port);
// 启动测量(异步)
void startMeasure(const QString &deviceGuid, const QVariantMap &config);
// 停止测量(异步)
void stopMeasure(const QString &deviceGuid);
// 设置测量参数(异步)
void setMeasureConfigParams(const QString &deviceGuid, const QVariantMap &config);
// 清除数据(异步)
void clearData(const QString &deviceGuid);
// 获取设备列表(异步)
void getDeviceList();
signals:
// 操作结果信号
void startMeasureResult(bool success, const QString &message);
void stopMeasureResult(bool success, const QString &message);
void setMeasureConfigParamsResult(bool success, const QString &message);
void clearDataResult(bool success, const QString &message);
void getDeviceListResult(bool success, const QStringList &devices);
// 错误信号
void errorOccurred(const QString &errorString);
private slots:
// 处理命令执行
void processCommand(const QString &command, const QString &device_guid, const QVariantMap &config);
private:
// 发送命令并获取响应(短连接模式)
QVariantMap sendCommand(const QString &command, const QString &device_guid, const QString &data = QString());
private:
QString _host;
quint16 _port;
QThread *_workerThread;
QMutex _mutex;
};
#endif // MEASURECLIENT_H

View File

@ -7,15 +7,7 @@ msvc {
QMAKE_CFLAGS += /utf-8
QMAKE_CXXFLAGS += /utf-8
}
DEFINES += ENABLE_DEBUG
contains(DEFINES, ENABLE_DEBUG) {
CONFIG += console
win32-msvc* {
QMAKE_CXXFLAGS_RELEASE -= -O2
QMAKE_CXXFLAGS_RELEASE += /MD /Zi /O
QMAKE_LFLAGS_RELEASE += /DEBUG
}
}
include($${PWD}/../Common.pri)
include($${PROJECT_DIR}/3rdlib/QsLog/QsLog.pri)
@ -162,5 +154,13 @@ FORMS += \
ThreeDimensionalConformityAnalysisView/ConformityAnalysis.ui
DEFINES += ENABLE_DEBUG
contains(DEFINES, ENABLE_DEBUG) {
CONFIG += console
win32-msvc* {
QMAKE_CXXFLAGS_RELEASE -= -O2
QMAKE_CXXFLAGS_RELEASE += /MD /Zi /O
QMAKE_LFLAGS_RELEASE += /DEBUG
}
}