调试测量服务修改
This commit is contained in:
parent
e3b44605b3
commit
eb6f1f946c
|
|
@ -10,12 +10,12 @@ typedef int* DeviceHandler;
|
|||
static sDeviceList s_device_list;
|
||||
|
||||
static DeviceHandler GetDeviceHandler(const QString &device_guid) {
|
||||
DeviceHandler device_handler = nullptr;
|
||||
DeviceHandler device_handler = DeviceHandler(0x01);
|
||||
for (int i = 0; i < s_device_list.totalNum; i++) {
|
||||
sDeviceInfo di;
|
||||
int ret = GetDeviceInfo(s_device_list.pHandle[i], &di,-1,-1);
|
||||
if (ret == 0) {
|
||||
if (QString(di.GUID) == device_guid) {
|
||||
if (QString(di.MacAddr) == device_guid) {
|
||||
device_handler = s_device_list.pHandle[i];
|
||||
}
|
||||
} else {
|
||||
|
|
@ -43,7 +43,6 @@ MeasureDeviceController *MeasureDeviceController::Instance()
|
|||
|
||||
MeasureDeviceController::~MeasureDeviceController()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void MeasureDeviceController::InitFindMeasureDevice()
|
||||
|
|
@ -69,6 +68,8 @@ void MeasureDeviceController::onFindDeviceFinishedCallback(int ret, sDeviceList*
|
|||
if ( s_device_list.totalNum == 0 ) {
|
||||
init_ok &= false;
|
||||
QLOG_WARN() << QStringLiteral(u"未找到测量设备!");
|
||||
} else {
|
||||
QLOG_DEBUG() << s_device_list.totalNum << GetMeasureDeviceList();
|
||||
}
|
||||
} else {
|
||||
init_ok &= false;
|
||||
|
|
@ -87,9 +88,9 @@ QStringList MeasureDeviceController::GetMeasureDeviceList()
|
|||
QStringList device_guid_list;
|
||||
for (int i = 0; i < s_device_list.totalNum; i++) {
|
||||
sDeviceInfo di;
|
||||
int ret = GetDeviceInfo(s_device_list.pHandle[i], &di,-1,-1);
|
||||
int ret = GetDeviceInfo(s_device_list.pHandle[i], &di, 0, 1);
|
||||
if (ret == 0) {
|
||||
device_guid_list.append(QString(di.GUID));
|
||||
device_guid_list.append(QString(di.MacAddr));
|
||||
} else {
|
||||
QLOG_ERROR() << QStringLiteral(u"处理查找测量设备结果信息失败: GetDeviceInfo调用失败索引%1,[返回代码%2]").arg(i).arg(ret);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
#include "MeasureServer.h"
|
||||
#include "MeasureTask.h"
|
||||
#include "QsLogManage.h"
|
||||
|
||||
MeasureServer::MeasureServer(QObject *parent)
|
||||
: QTcpServer(parent)
|
||||
|
|
@ -8,7 +9,7 @@ MeasureServer::MeasureServer(QObject *parent)
|
|||
|
||||
bool MeasureServer::Start(quint16 port)
|
||||
{
|
||||
return this->listen(QHostAddress::Any, port);
|
||||
return this->listen(QHostAddress::LocalHost, port);
|
||||
}
|
||||
|
||||
void MeasureServer::Stop()
|
||||
|
|
@ -18,8 +19,9 @@ void MeasureServer::Stop()
|
|||
|
||||
void MeasureServer::incomingConnection(qintptr socketDescriptor)
|
||||
{
|
||||
MeasureTask * measure_thread = new MeasureTask(socketDescriptor);
|
||||
QLOG_INFO() << QStringLiteral(u"接收到新的请求连接") << socketDescriptor;
|
||||
MeasureTask * measure_thread = new MeasureTask(socketDescriptor, this);
|
||||
connect(measure_thread, &MeasureTask::finished, measure_thread, &MeasureTask::deleteLater);
|
||||
_measure_thread->start();
|
||||
measure_thread->start();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -12,14 +12,11 @@ class MeasureServer : public QTcpServer
|
|||
|
||||
public:
|
||||
MeasureServer(QObject *parent = nullptr);
|
||||
bool Start(quint16 port = 96966);
|
||||
bool Start(quint16 port = 9999);
|
||||
void Stop();
|
||||
|
||||
protected:
|
||||
void incomingConnection(qintptr socketDescriptor) override;
|
||||
|
||||
private:
|
||||
MeasureTask* _measure_thread = nullptr;
|
||||
};
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -5,7 +5,9 @@
|
|||
#include <QJsonObject>
|
||||
#include <QSqlDatabase>
|
||||
#include <QFileInfo>
|
||||
|
||||
#include "QsLogManage.h"
|
||||
#include <QDebug>
|
||||
#include <QString>
|
||||
|
||||
MeasureTask::MeasureTask(int socketDescriptor, QObject *parent)
|
||||
: QThread(parent), socketDescriptor(socketDescriptor)
|
||||
|
|
@ -17,44 +19,52 @@ void MeasureTask::run()
|
|||
QTcpSocket tcp_socket;
|
||||
if (!tcp_socket.setSocketDescriptor(socketDescriptor)) {
|
||||
emit errorOccurred(tcp_socket.errorString());
|
||||
QLOG_DEBUG() << tcp_socket.errorString();
|
||||
return;
|
||||
}
|
||||
QByteArray buffer;
|
||||
while (tcp_socket.waitForReadyRead(500)) {
|
||||
buffer.append(tcp_socket.readAll());
|
||||
}
|
||||
tcp_socket.waitForReadyRead(500);
|
||||
QByteArray buffer = tcp_socket.readAll();
|
||||
if ( buffer.size() ) {
|
||||
QDataStream requst_data_stream(buffer);
|
||||
QString cmd_type, device_guid, cmd_data;
|
||||
requst_data_stream >> cmd_type >> device_guid;
|
||||
if ( cmd_type == "START" ) {
|
||||
requst_data_stream >> cmd_data;
|
||||
QLOG_INFO() << QStringLiteral(u"处理请求:") << cmd_type << device_guid << cmd_data;
|
||||
processStartMeasureCmd(&tcp_socket, device_guid, cmd_data);
|
||||
} else if (cmd_type == "STOP") {
|
||||
QLOG_INFO() << QStringLiteral(u"处理请求:") << cmd_type << device_guid;
|
||||
processStopMeasureCmd(&tcp_socket, device_guid);
|
||||
} else if (cmd_type == "SET") {
|
||||
requst_data_stream >> cmd_data;
|
||||
QLOG_INFO() << QStringLiteral(u"处理请求:") << cmd_type << device_guid << cmd_data;
|
||||
processSetDeviceMeasureConfigParamsCmd(&tcp_socket, device_guid, cmd_data);
|
||||
} else if (cmd_type == "CLEAR") {
|
||||
QLOG_INFO() << QStringLiteral(u"处理请求:") << cmd_type << device_guid;
|
||||
processClearDataCmd(&tcp_socket, device_guid);
|
||||
} else if (cmd_type == "DEVICE") {
|
||||
QLOG_INFO() << QStringLiteral(u"处理请求:") << cmd_type << device_guid;
|
||||
processGetMeasureDeviceListCmd(&tcp_socket);
|
||||
} else {
|
||||
QByteArray replay_data;
|
||||
QDataStream replay_data_stream(replay_data);
|
||||
QDataStream replay_data_stream(&replay_data, QIODevice::Append);
|
||||
replay_data_stream << QString("UNKNOW") << false << QStringLiteral(u"未知请求");
|
||||
tcp_socket.write(replay_data);
|
||||
tcp_socket.flush();
|
||||
QLOG_INFO() << QStringLiteral(u"请求反馈:") << QString::fromUtf8(replay_data);
|
||||
}
|
||||
} else {
|
||||
QByteArray replay_data;
|
||||
QDataStream replay_data_stream(replay_data);
|
||||
replay_data_stream << QString("UNKNOW") << false << QStringLiteral(u"未知请求");
|
||||
QDataStream replay_data_stream(&replay_data, QIODevice::Append);
|
||||
replay_data_stream << QString("UNKNOW") << false << QStringLiteral(u"请求信息空异常");
|
||||
tcp_socket.write(replay_data);
|
||||
tcp_socket.flush();
|
||||
QLOG_INFO() << QStringLiteral(u"请求反馈:") << QString::fromUtf8(replay_data);
|
||||
}
|
||||
tcp_socket.disconnectFromHost();
|
||||
tcp_socket.waitForDisconnected(1000);
|
||||
if (tcp_socket.state() != QTcpSocket::UnconnectedState) {
|
||||
tcp_socket.waitForDisconnected(1000);
|
||||
}
|
||||
}
|
||||
|
||||
void MeasureTask::processStartMeasureCmd(QTcpSocket* socket, const QString &device_guid, const QString &cmd_data)
|
||||
|
|
@ -75,7 +85,7 @@ void MeasureTask::processStartMeasureCmd(QTcpSocket* socket, const QString &devi
|
|||
if (channel_config_list.isEmpty()) {
|
||||
return;
|
||||
}
|
||||
bool ok = true;
|
||||
QStringList errors;
|
||||
for (auto channel_config : channel_config_list) {
|
||||
if (!channel_config.isValid())
|
||||
continue;
|
||||
|
|
@ -84,53 +94,53 @@ void MeasureTask::processStartMeasureCmd(QTcpSocket* socket, const QString &devi
|
|||
continue;
|
||||
int board_id = channel_config_info["BoardId"].toInt();
|
||||
int channel_id = channel_config_info["ChannelId"].toInt();
|
||||
ok &= MeasureDeviceController::Instance()->SetDeviceMeasureConfigParams(device_guid, board_id, channel_id, channel_config_info);
|
||||
QByteArray replay_data;
|
||||
QDataStream replay_data_stream(replay_data);
|
||||
if (!ok) {
|
||||
replay_data_stream << QString("START") << ok << QStringLiteral(u"启动设置板卡%1通道%2测量参数失败").arg(board_id).arg(channel_id);
|
||||
} else {
|
||||
replay_data_stream << QString("START") << ok << QStringLiteral(u"启动设置板卡%1通道%2测量参数完成").arg(board_id).arg(channel_id);
|
||||
if (!MeasureDeviceController::Instance()->SetDeviceMeasureConfigParams(device_guid, board_id, channel_id, channel_config_info)) {
|
||||
const QString error = QStringLiteral(u"启动设置板卡%1通道%2测量参数失败").arg(board_id).arg(channel_id);
|
||||
errors.append(error);
|
||||
}
|
||||
socket->write(replay_data);
|
||||
socket->flush();
|
||||
ok &= MeasureDeviceController::Instance()->StartMeasure(device_guid, board_id, channel_id);
|
||||
if (!ok) {
|
||||
replay_data_stream << QString("START") << ok << QStringLiteral(u"启动板卡%1通道%2测量失败");
|
||||
} else {
|
||||
replay_data_stream << QString("START") << ok << QStringLiteral(u"启动板卡%1通道%2测量完成");
|
||||
if (!MeasureDeviceController::Instance()->StartMeasure(device_guid, board_id, channel_id)) {
|
||||
const QString error = QStringLiteral(u"启动板卡%1通道%2测量失败").arg(board_id).arg(channel_id);
|
||||
errors.append(error);
|
||||
}
|
||||
socket->write(replay_data);
|
||||
socket->flush();
|
||||
}
|
||||
if (!ok) {
|
||||
// MeasureDeviceController::Instance()->StopMeasure(device_guid);
|
||||
return;
|
||||
}
|
||||
const QString& measure_data_gvf_filename = MeasureDeviceController::Instance()->GetMeasureGvfDataFilename();
|
||||
if (measure_data_gvf_filename.isEmpty()) {
|
||||
return;
|
||||
}
|
||||
QByteArray replay_data;
|
||||
QDataStream replay_data_stream(replay_data);
|
||||
replay_data_stream << QString("DATA") << true << measure_data_gvf_filename;
|
||||
socket->write(replay_data);
|
||||
socket->flush();
|
||||
QDataStream replay_data_stream(&replay_data, QIODevice::Append);
|
||||
if (!errors.isEmpty()) {
|
||||
replay_data_stream << QString("START") << false << errors.join("\n");
|
||||
socket->write(replay_data);
|
||||
socket->flush();
|
||||
QLOG_INFO() << QStringLiteral(u"请求反馈:") << QString::fromUtf8(replay_data);
|
||||
} else {
|
||||
const QString& measure_data_gvf_filename = MeasureDeviceController::Instance()->GetMeasureGvfDataFilename();
|
||||
QString replay_info;
|
||||
bool ok = measure_data_gvf_filename.isEmpty();
|
||||
if (!ok) {
|
||||
replay_info = QStringLiteral(u"测量数据GVF文件未找到");
|
||||
} else {
|
||||
replay_info = measure_data_gvf_filename;
|
||||
}
|
||||
QByteArray replay_data;
|
||||
QDataStream replay_data_stream(&replay_data, QIODevice::Append);
|
||||
replay_data_stream << QString("START") << ok << replay_info;
|
||||
socket->write(replay_data);
|
||||
socket->flush();
|
||||
QLOG_INFO() << QStringLiteral(u"请求反馈:") << QString::fromUtf8(replay_data);
|
||||
}
|
||||
}
|
||||
|
||||
void MeasureTask::processStopMeasureCmd(QTcpSocket* socket, const QString &device_guid)
|
||||
{
|
||||
MeasureDeviceController::Instance()->StopMeasure(device_guid);
|
||||
QByteArray replay_data;
|
||||
QDataStream replay_data_stream(replay_data);
|
||||
QDataStream replay_data_stream(&replay_data, QIODevice::Append);
|
||||
replay_data_stream << QString("STOP") << true << QStringLiteral(u"停止测量完成");
|
||||
socket->write(replay_data);
|
||||
socket->flush();
|
||||
QLOG_INFO() << QStringLiteral(u"请求反馈:") << QString::fromUtf8(replay_data);
|
||||
}
|
||||
|
||||
void MeasureTask::processSetDeviceMeasureConfigParamsCmd(QTcpSocket* socket, const QString &device_guid, const QString &cmd_data)
|
||||
{
|
||||
bool ok = true;
|
||||
QByteArray json_data = cmd_data.toUtf8();
|
||||
QJsonDocument json_doc = QJsonDocument::fromJson(json_data);
|
||||
if (json_doc.isNull()) {
|
||||
|
|
@ -147,6 +157,7 @@ void MeasureTask::processSetDeviceMeasureConfigParamsCmd(QTcpSocket* socket, con
|
|||
if (channel_config_list.isEmpty()) {
|
||||
return;
|
||||
}
|
||||
QStringList errors;
|
||||
for (auto channel_config : channel_config_list) {
|
||||
if (!channel_config.isValid())
|
||||
continue;
|
||||
|
|
@ -155,27 +166,33 @@ void MeasureTask::processSetDeviceMeasureConfigParamsCmd(QTcpSocket* socket, con
|
|||
continue;
|
||||
int board_id = channel_config_info["BoardId"].toInt();
|
||||
int channel_id = channel_config_info["ChannelId"].toInt();
|
||||
ok &= MeasureDeviceController::Instance()->SetDeviceMeasureConfigParams(device_guid, board_id, channel_id, channel_config_info);
|
||||
QByteArray replay_data;
|
||||
QDataStream replay_data_stream(replay_data);
|
||||
if (!ok) {
|
||||
replay_data_stream << QString("SET") << ok << QStringLiteral(u"设置板卡%1通道%2测量参数失败").arg(board_id).arg(channel_id);
|
||||
} else {
|
||||
replay_data_stream << QString("SET") << ok << QStringLiteral(u"设置板卡%1通道%2测量参数完成").arg(board_id).arg(channel_id);
|
||||
if (!MeasureDeviceController::Instance()->SetDeviceMeasureConfigParams(device_guid, board_id, channel_id, channel_config_info)) {
|
||||
const QString error = QStringLiteral(u"设置板卡%1通道%2测量参数失败").arg(board_id).arg(channel_id);
|
||||
errors.append(error);
|
||||
}
|
||||
socket->write(replay_data);
|
||||
socket->flush();
|
||||
}
|
||||
QByteArray replay_data;
|
||||
QDataStream replay_data_stream(&replay_data, QIODevice::Append);
|
||||
bool ok = !errors.isEmpty();
|
||||
if (!ok) {
|
||||
replay_data_stream << QString("SET") << ok << errors.join("\n");
|
||||
} else {
|
||||
replay_data_stream << QString("SET") << ok << QStringLiteral(u"设置测量参数完成");
|
||||
}
|
||||
socket->write(replay_data);
|
||||
socket->flush();
|
||||
QLOG_INFO() << QStringLiteral(u"请求反馈:") << QString::fromUtf8(replay_data);
|
||||
}
|
||||
|
||||
void MeasureTask::processClearDataCmd(QTcpSocket* socket, const QString &device_guid)
|
||||
{
|
||||
MeasureDeviceController::Instance()->ClearData(device_guid);
|
||||
QByteArray replay_data;
|
||||
QDataStream replay_data_stream(replay_data);
|
||||
QDataStream replay_data_stream(&replay_data, QIODevice::Append);
|
||||
replay_data_stream << QString("CLEAR") << true << QStringLiteral(u"清除数据完成");
|
||||
socket->write(replay_data);
|
||||
socket->flush();
|
||||
QLOG_INFO() << QStringLiteral(u"请求反馈:") << QString::fromUtf8(replay_data);
|
||||
}
|
||||
|
||||
void MeasureTask::processGetMeasureDeviceListCmd(QTcpSocket* socket)
|
||||
|
|
@ -184,7 +201,7 @@ void MeasureTask::processGetMeasureDeviceListCmd(QTcpSocket* socket)
|
|||
bool ok = !device_list.isEmpty();
|
||||
|
||||
QByteArray replay_data;
|
||||
QDataStream replay_data_stream(replay_data);
|
||||
QDataStream replay_data_stream(&replay_data, QIODevice::Append);
|
||||
replay_data_stream << QString("DEVICE");
|
||||
if ( ok ) {
|
||||
replay_data_stream << ok << device_list.size();
|
||||
|
|
@ -192,8 +209,9 @@ void MeasureTask::processGetMeasureDeviceListCmd(QTcpSocket* socket)
|
|||
replay_data_stream << device_id;
|
||||
}
|
||||
} else {
|
||||
replay_data_stream << ok;
|
||||
replay_data_stream << ok << QStringLiteral(u"测量设备未找到");
|
||||
}
|
||||
socket->write(replay_data);
|
||||
socket->flush();
|
||||
QLOG_INFO() << QStringLiteral(u"请求反馈:") << QString::fromUtf8(replay_data);
|
||||
}
|
||||
|
|
|
|||
25
src/main.cpp
25
src/main.cpp
|
|
@ -2,23 +2,24 @@
|
|||
#include "MeasureServer.h"
|
||||
#include "QsLogManage.h"
|
||||
#include <QCoreApplication>
|
||||
#include <QThread>
|
||||
|
||||
int main(int argc, char* argv[])
|
||||
{
|
||||
QCoreApplication app(argc, argv);
|
||||
// 创建日志记录器
|
||||
QsLogManage::createLogger();
|
||||
MeasureDeviceController::Instance()->SetInitFinishedHandler(
|
||||
[&](bool init_ok) {
|
||||
if (init_ok) {
|
||||
MeasureServer measure_server;
|
||||
if (!measure_server.Start()) {
|
||||
QLOG_ERROR() << measure_server.errorString();
|
||||
MeasureServer measure_server;
|
||||
if (!measure_server.Start()) {
|
||||
QLOG_ERROR() << QStringLiteral(u"测量服务启动失败:") + measure_server.errorString();
|
||||
} else {
|
||||
MeasureDeviceController::Instance()->SetInitFinishedHandler(
|
||||
[&](bool init_ok) {
|
||||
if (!init_ok) {
|
||||
QLOG_ERROR() << QStringLiteral(u"未找到测量设备,测量服务程序退出.");
|
||||
// app.exit(EXIT_FAILURE);
|
||||
}
|
||||
} else {
|
||||
app.exit(EXIT_FAILURE);
|
||||
}
|
||||
});
|
||||
MeasureDeviceController::Instance()->InitFindMeasureDevice();
|
||||
});
|
||||
MeasureDeviceController::Instance()->InitFindMeasureDevice();
|
||||
}
|
||||
return app.exec();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -8,7 +8,6 @@ msvc {
|
|||
QMAKE_CXXFLAGS += /utf-8
|
||||
}
|
||||
|
||||
|
||||
include($${PWD}/../Common.pri)
|
||||
include($${PROJECT_DIR}/3rdlib/QsLog/QsLog.pri)
|
||||
include($${PROJECT_DIR}/3rdlib/csv/csv.pri)
|
||||
|
|
@ -24,13 +23,11 @@ SOURCES += \
|
|||
$${PWD}/MeasureServer.cpp \
|
||||
$${PWD}/MeasureTask.cpp \
|
||||
$${PWD}/main.cpp \
|
||||
MeasureClient.cpp \
|
||||
MeasureDeviceController.cpp
|
||||
|
||||
HEADERS += \
|
||||
$${PWD}/MeasureServer.h \
|
||||
$${PWD}/MeasureTask.h \
|
||||
MeasureClient.h \
|
||||
MeasureDeviceController.h
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user