将Tcp客户端程序放入子线程中

LanXin3D
QuShuailong 2 years ago
parent c7db2f7ad4
commit 9288237f10

@ -463,6 +463,11 @@ void CameraControl::capture(const QStringList& serialNumberList)
void CameraControl::flipImg(const cv::Mat& imgSrc, cv::Mat& imgDst, int rotationAngle)
{
if (imgSrc.empty())
{
qWarning() << "imgSrc is empty";
return;
}
switch (rotationAngle)
{
case 90:

@ -6,15 +6,16 @@ NetControl::NetControl(const QString& configPath, bool bAutoReconnect /* = false
: QObject(parent),
m_bAutoReconnect(bAutoReconnect), m_configPath(configPath)
{
qRegisterMetaType<QAbstractSocket::SocketError>("QAbstractSocket::SocketError");
initIpAddress(m_configPath);
m_pTimerHeartbeat = new QTimer(this);
connect(m_pTimerHeartbeat, &QTimer::timeout, this, &NetControl::sendHeartbeatPack);
m_pTcpSocket = new QTcpSocket(this);
connect(m_pTcpSocket, SIGNAL(connected()), this, SLOT(onConnected()));
connect(m_pTcpSocket, SIGNAL(disconnected()), this, SLOT(onDisconnected()));
connect(m_pTcpSocket, SIGNAL(error(QAbstractSocket::SocketError)),
this, SLOT(onErrorHandler(QAbstractSocket::SocketError)));
connect(m_pTcpSocket, SIGNAL(readyRead()), this, SLOT(onMsgReceived()));
initIpAddress(m_configPath);
connect(m_pTcpSocket, SIGNAL(disconnected()), this, SLOT(onDisconnected()));
connectNet(m_szHostIp, m_port);
}
@ -190,7 +191,7 @@ void NetControl::waitForConnected(int msec)
}
}
void NetControl::sendMsg(const QString& msg)
Q_SLOT void NetControl::onSendMsg(const QString& msg)
{
if (m_pTcpSocket->state() != QAbstractSocket::SocketState::ConnectedState)
{

@ -25,7 +25,7 @@ public:
public:
//void deCodeMsg(QString recInfo);
void waitForConnected(int msec);
void sendMsg(const QString& msg);
Q_SLOT void onSendMsg(const QString& msg);
private:
bool initIpAddress(const QString& path);
@ -47,6 +47,7 @@ private:
QString m_configPath;
int m_heartInterval{ 5 };
//QThread* m_pThread;
QTimer* m_pTimerHeartbeat;
signals:
void sgReceiveData(const QString& data);

@ -38,6 +38,9 @@ SmokeBoxIdentification::SmokeBoxIdentification(QWidget *parent)
}
QString filePath = applicationDirPath + NET_CONFIG;
m_pNetControl = new NetControl(filePath, true);
m_pTcpClientThread = new QThread();
m_pNetControl->moveToThread(m_pTcpClientThread);
m_pTcpClientThread->start();
connect(m_pNetControl, &NetControl::sgReceiveData, this, &SmokeBoxIdentification::onDecodeMsg);
ADModule::instance()->loadParameters(filePath);
filePath = applicationDirPath + COM_CONFIG;
@ -68,7 +71,8 @@ SmokeBoxIdentification::SmokeBoxIdentification(QWidget *parent)
connect(ADModule::instance(), &ADModule::sgNewNumData, this, &SmokeBoxIdentification::onNewNumData);
//connect(this, &SmokeBoxIdentification::sgSendData2AndAlgo, ADModule::instance(), &ADModule::onSendData2Algo);
//connect(this, &SmokeBoxIdentification::sgSaveSensorData2Local, ADModule::instance(), &ADModule::onSaveData2File);
connect(this, &SmokeBoxIdentification::sgSendStockCheckMsg, this, &SmokeBoxIdentification::onSendStockCheckResults, Qt::QueuedConnection);
//connect(this, &SmokeBoxIdentification::sgSendResults, this, &SmokeBoxIdentification::onSendResults);
connect(this, &SmokeBoxIdentification::sgSendMsg, m_pNetControl, &NetControl::onSendMsg, Qt::QueuedConnection);
connect(ui.action_templateNum, SIGNAL(triggered()), this, SLOT(onActionClicked()));
emit sgControlSideLight(lightCtrl::emTurnOnLight);
}
@ -78,6 +82,12 @@ SmokeBoxIdentification::~SmokeBoxIdentification()
emit sgControlSideLight(lightCtrl::emTurnOffLight);
DELETE_POINTER(m_pNetControl);
DELETE_POINTER(m_pCategoryMatcher);
if (m_pTcpClientThread)
{
m_pTcpClientThread->quit();
m_pTcpClientThread->wait();
m_pTcpClientThread = nullptr;
}
}
Q_SLOT void SmokeBoxIdentification::onActionClicked()
@ -170,11 +180,11 @@ Q_SLOT void SmokeBoxIdentification::onCapturedImage(const QVector<ImageInfo>& ve
saveImage(vecImageInfo, m_workMode);
if (m_workMode == WorkMode::StockCheck)
{
emit sgSendStockCheckMsg(MsgType::DataCollectionEndSC);
sendResults(MsgType::DataCollectionEndSC);
}
else if (m_workMode = WorkMode::IntoStock)
{
emit sgSendStockCheckMsg(MsgType::IntoStockResult);
sendResults(MsgType::IntoStockResult);
}
m_workMode = WorkMode::Idle;
});
@ -323,7 +333,7 @@ Q_SLOT void SmokeBoxIdentification::onNumStatistic(QString typeNum)
{
m_currtStockCheckInfo.smokeQuantityRlt = "0";
m_currtStockCheckInfo.correctness = false;
emit sgSendStockCheckMsg(MsgType::StockCheckResult);
sendResults(MsgType::StockCheckResult);
}
else
{
@ -359,7 +369,7 @@ Q_SLOT void SmokeBoxIdentification::onNumStatistic(QString typeNum)
m_currtStockCheckInfo.smokeQuantityRlt = QString::number(matchLabel);
m_currtStockCheckInfo.correctness = true;
}
emit sgSendStockCheckMsg(MsgType::StockCheckResult);
sendResults(MsgType::StockCheckResult);
});
}
else
@ -367,13 +377,13 @@ Q_SLOT void SmokeBoxIdentification::onNumStatistic(QString typeNum)
qWarning() << "Template folder not find: " << smokeCnName;
m_currtStockCheckInfo.smokeQuantityRlt = "0";
m_currtStockCheckInfo.correctness = false;
emit sgSendStockCheckMsg(MsgType::StockCheckResult);
sendResults(MsgType::StockCheckResult);
}
}
}
}
void SmokeBoxIdentification::onSendStockCheckResults(int mode)
void SmokeBoxIdentification::sendResults(int mode)
{
QString resultInfoMsg;
switch (mode)
@ -412,7 +422,7 @@ void SmokeBoxIdentification::onSendStockCheckResults(int mode)
default:
break;
}
m_pNetControl->sendMsg(resultInfoMsg);
emit sgSendMsg(resultInfoMsg);
qDebug() << "send msg: " << resultInfoMsg;
}
@ -555,7 +565,7 @@ Q_SLOT void SmokeBoxIdentification::onSendEmptyCheckResults(const QMap<QString,
emptyResult.append(EMPTY_CHECK_HEAD).append(SPLIT_RULE).append(m_currtEmptyCheckInfo.streetName)
.append(SPLIT_RULE).append(m_currtEmptyCheckInfo.taskNum).append(SPLIT_RULE).append(emptyAll)
.append(END_SYMBOL);
m_pNetControl->sendMsg(emptyResult);
emit sgSendMsg(emptyResult);
qDebug() << "send msg: " << emptyResult;
}

@ -102,12 +102,12 @@ signals:
//void sgSaveSensorData2Local(QString filePath);
void sgNumDataCollectStart(int sideId);
void sgNumDataCollectStop();
void sgSendStockCheckMsg(int mode);
//void sgSendResults(int mode);
void sgStartEmptyPlaceCheck(QString streetName);
void sgStopEmptyPlaceCheck();
void sgControlSideLight(int);
void sgSendMsg(QString msg);
private:
Q_SLOT void onSendStockCheckResults(int mode);
Q_SLOT void onDecodeMsg(const QString& msg);
Q_SLOT void onCapturedImage(const QVector<ImageInfo>& vecImageInfo, int camearLocation);
@ -120,6 +120,7 @@ private:
Q_SLOT void onSendEmptyCheckResults(const QMap<QString, int>&);
Q_SLOT void onNewNumData(const QVector<QVector<double>>& vec, const QVector<QString>& strVec, int side);
void sendResults(int mode);
void saveData2File(const QVector<QString>& strVec, QString folderPath, int side);
void captureTop();
void captureSide();
@ -150,6 +151,7 @@ private:
EmptyCheckInfo m_currtEmptyCheckInfo;
QNumTemplateBuild* m_pNumTemplateBuild{ nullptr };
QThread* m_pTcpClientThread;
//QLabel* m_pShowRltImgLabel;
Ui::SmokeBoxIdentificationClass ui;
};

@ -145,6 +145,10 @@
<QtMoc Include="..\..\src\CategoryMatcher.h" />
</ItemGroup>
<ItemGroup>
<QtMoc Include="TypeAndNumbberCheckTaskThread.h">
<IncludePath Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\GeneratedFiles;.;.\..\..\src;.\..\..\src\libzkq;.\..\..\src\lpSerial;.\..\..\src\lpSerial\include;.\..\..\src\numStatisticAlgo;.\..\..\src\MVCameraDriver;.\..\..\src\common;.\..\..\src\lpv;.\..\..\3rdparty\opencv\include;.\..\..\3rdparty\opencv\include\opencv;.\..\..\3rdparty\opencv\include\opencv2;$(QTDIR)\include;.\GeneratedFiles\$(ConfigurationName);$(QTDIR)\include\QtCore;$(QTDIR)\include\QtGui;$(QTDIR)\include\QtNetwork;$(QTDIR)\include\QtSerialPort;$(QTDIR)\include\QtWebSockets;$(QTDIR)\include\QtWidgets;$(QTDIR)\include\QtWinExtras;$(QTDIR)\include\QtXlsx</IncludePath>
<IncludePath Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\GeneratedFiles;.;.\..\..\src;.\..\..\src\libzkq;.\..\..\src\lpSerial;.\..\..\src\lpSerial\include;.\..\..\src\numStatisticAlgo;.\..\..\src\MVCameraDriver;.\..\..\src\common;.\..\..\src\lpv;.\..\..\3rdparty\opencv\include;.\..\..\3rdparty\opencv\include\opencv;.\..\..\3rdparty\opencv\include\opencv2;$(QTDIR)\include;.\GeneratedFiles\$(ConfigurationName);$(QTDIR)\include\QtCore;$(QTDIR)\include\QtGui;$(QTDIR)\include\QtNetwork;$(QTDIR)\include\QtSerialPort;$(QTDIR)\include\QtWebSockets;$(QTDIR)\include\QtWidgets;$(QTDIR)\include\QtWinExtras;$(QTDIR)\include\QtXlsx</IncludePath>
</QtMoc>
<QtMoc Include="..\..\src\CodeScanStation.h">
<IncludePath Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\GeneratedFiles;.;.\..\..\src;.\..\..\src\libzkq;.\..\..\src\lpSerial;.\..\..\src\lpSerial\include;.\..\..\src\numStatisticAlgo;.\..\..\src\MVCameraDriver;.\..\..\src\common;.\..\..\src\lpv;.\..\..\3rdparty\opencv\include;.\..\..\3rdparty\opencv\include\opencv;.\..\..\3rdparty\opencv\include\opencv2;$(QTDIR)\include;.\GeneratedFiles\$(ConfigurationName);$(QTDIR)\include\QtCore;$(QTDIR)\include\QtGui;$(QTDIR)\include\QtNetwork;$(QTDIR)\include\QtSerialPort;$(QTDIR)\include\QtWebSockets;$(QTDIR)\include\QtWidgets;$(QTDIR)\include\QtWinExtras;$(QTDIR)\include\QtXlsx</IncludePath>
<IncludePath Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\GeneratedFiles;.;.\..\..\src;.\..\..\src\libzkq;.\..\..\src\lpSerial;.\..\..\src\lpSerial\include;.\..\..\src\numStatisticAlgo;.\..\..\src\MVCameraDriver;.\..\..\src\common;.\..\..\src\lpv;.\..\..\3rdparty\opencv\include;.\..\..\3rdparty\opencv\include\opencv;.\..\..\3rdparty\opencv\include\opencv2;$(QTDIR)\include;.\GeneratedFiles\$(ConfigurationName);$(QTDIR)\include\QtCore;$(QTDIR)\include\QtGui;$(QTDIR)\include\QtNetwork;$(QTDIR)\include\QtSerialPort;$(QTDIR)\include\QtWebSockets;$(QTDIR)\include\QtWidgets;$(QTDIR)\include\QtWinExtras;$(QTDIR)\include\QtXlsx</IncludePath>

@ -120,6 +120,9 @@
<QtMoc Include="..\..\src\CodeScanStation.h">
<Filter>Header Files</Filter>
</QtMoc>
<QtMoc Include="TypeAndNumbberCheckTaskThread.h">
<Filter>Header Files</Filter>
</QtMoc>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\src\common\log.h">

Loading…
Cancel
Save