1、修改与PLC的通讯协议内容,增加请求应答的通讯方式

2、修复PLC通讯过程中出现的格式错误问题
3、更新通讯协议文档
master
bob.pan 4 years ago
parent 57897fa762
commit e986a174f6

@ -114,16 +114,21 @@ void QPLCDevice::onParaster(QByteArray recvData)
int stationID = data.toInt(); int stationID = data.toInt();
emit sgTrigerCam(stationID); emit sgTrigerCam(stationID);
} }
else if (cmd.toInt() == 2) else if (cmd.toInt() == 2) //ÐÄÌøÓ¦´ð
{ {
onSendHeartBit(); onSendHeartBit();
} }
else if (cmd.toInt() == 3)
{
int stationID = data.toInt();
emit sgSendAlgResult(stationID);
}
} }
} }
void QPLCDevice::onSendValueRlt(const ValueResult& rlt) void QPLCDevice::onSendValueRlt(const ValueResult& rlt)
{ {
QString sdata = QString("CA;3;%1;%2;%3;%4;%5,#").arg(rlt.stationID).arg(rlt.strModel).arg(rlt.angle).arg(rlt.center.x()).arg(rlt.center.y()); QString sdata = QString("CA;3;%1;%2;%3;%4;%5;#").arg(rlt.stationID).arg(rlt.strModel).arg(rlt.angle).arg(rlt.center.x()).arg(rlt.center.y());
sendByteData(sdata.toLatin1()); sendByteData(sdata.toLatin1());
} }

@ -32,6 +32,7 @@ public:
bool getClinetInfo(QString &client); bool getClinetInfo(QString &client);
signals: signals:
void sgSendAlgResult(int camID);
void sgTrigerCam(int camID); void sgTrigerCam(int camID);
void sgSendDataCallBack(QByteArray); void sgSendDataCallBack(QByteArray);
void sgRecvDataCallBack(QByteArray); void sgRecvDataCallBack(QByteArray);

@ -22,9 +22,9 @@
#include "databasesql.h" #include "databasesql.h"
#include "lpCryptokey.h" #include "lpCryptokey.h"
#define VERSION_HUB "3.0.1.7" #define VERSION_HUB "3.0.1.8"
#define VERSION_ALG "3.0.1.4" #define VERSION_ALG "3.0.1.4"
#define UPDATE_TIME "2021-11-04" #define UPDATE_TIME "2021-11-09"
#pragma execution_character_set("utf-8") #pragma execution_character_set("utf-8")
#define MODEL_UI_ICON_NONE ":/image/no-img" #define MODEL_UI_ICON_NONE ":/image/no-img"
@ -1717,7 +1717,7 @@ void lpMainWin::onSaveValveResult(ValueResult &rlt)
//} //}
sendWebAlgRlt(rlt); sendWebAlgRlt(rlt);
QString strMsg = QString("%1 识别结果:%2 定位角度:%3").arg(QDateTime::currentDateTime().toString("hh:mm:ss")).arg(rlt.strModel).arg(rlt.angle); QString strMsg = QString("%1 识别结果:%2 定位角度:%3 圆心:(%4,%5)").arg(QDateTime::currentDateTime().toString("hh:mm:ss")).arg(rlt.strModel).arg(rlt.angle).arg(rlt.center.x()).arg(rlt.center.y());
emit sgShowDetectLog(strMsg); emit sgShowDetectLog(strMsg);
} }

@ -39,11 +39,15 @@ Q_SLOT void lpConfigUI::onButtonClicked()
if ("pushButton" == strObj) if ("pushButton" == strObj)
{ {
QString strUrl = QFileDialog::getOpenFileName(this, "", "", "*.exe"); QString strUrl = QFileDialog::getOpenFileName(this, "", "", "*.exe");
if (strUrl.isEmpty())
return;
ui.lineEdit_APath->setText(strUrl); ui.lineEdit_APath->setText(strUrl);
} }
else if ("pushButton_2" == strObj) else if ("pushButton_2" == strObj)
{ {
QString strUrl = QFileDialog::getOpenFileName(this, "", "", "*.exe"); QString strUrl = QFileDialog::getOpenFileName(this, "", "", "*.exe");
if (strUrl.isEmpty())
return;
ui.lineEdit_BPath->setText(strUrl); ui.lineEdit_BPath->setText(strUrl);
} }
else if ("pushButton_3" == strObj) else if ("pushButton_3" == strObj)

@ -3,6 +3,7 @@
#include <QObject> #include <QObject>
#include "lp_singleton_base.h" #include "lp_singleton_base.h"
#include "Result2Ui.h"
class lpGlobalData : public lp_singleton_base<lpGlobalData> class lpGlobalData : public lp_singleton_base<lpGlobalData>
{ {
public: public:
@ -10,6 +11,9 @@ public:
~lpGlobalData(); ~lpGlobalData();
bool bShowRecv{ false }; bool bShowRecv{ false };
bool bShowSend{ false }; bool bShowSend{ false };
ValueResult m_StationResult_1;
ValueResult m_StationResult_2;
}; };
#endif #endif

@ -29,7 +29,7 @@ valueMainUI::valueMainUI(QWidget *parent)
setupTrayIcon();//后台任务栏初始化 setupTrayIcon();//后台任务栏初始化
setWindowIcon(QIcon(WINDOWICON)); setWindowIcon(QIcon(WINDOWICON));
setWindowTitle(tr("识别定位一体检测系统")); setWindowTitle(tr("识别定位一体检测系统(v1.0.3 21.11.09)"));
lpGlobalData::instance(); lpGlobalData::instance();
lpConfig::instance()->loadConfig(); lpConfig::instance()->loadConfig();
@ -124,6 +124,7 @@ valueMainUI::valueMainUI(QWidget *parent)
m_pPlcDevice->onInitDevice(); m_pPlcDevice->onInitDevice();
m_pPlcDevice->onStartServer(lpConfig::instance()->plcServerPort); m_pPlcDevice->onStartServer(lpConfig::instance()->plcServerPort);
connect(m_pPlcDevice, SIGNAL(sgTrigerCam(int)), this, SLOT(onPLCTrigerCam(int))); connect(m_pPlcDevice, SIGNAL(sgTrigerCam(int)), this, SLOT(onPLCTrigerCam(int)));
connect(m_pPlcDevice, SIGNAL(sgSendAlgResult(int)), this, SLOT(onSendAlgResult(int)));
connect(m_pPlcDevice, SIGNAL(sgSendDataCallBack(QByteArray)), this, SLOT(onShowSendTcpData(QByteArray))); connect(m_pPlcDevice, SIGNAL(sgSendDataCallBack(QByteArray)), this, SLOT(onShowSendTcpData(QByteArray)));
connect(m_pPlcDevice, SIGNAL(sgRecvDataCallBack(QByteArray)), this, SLOT(onShowRecvTcpData(QByteArray))); connect(m_pPlcDevice, SIGNAL(sgRecvDataCallBack(QByteArray)), this, SLOT(onShowRecvTcpData(QByteArray)));
} }
@ -132,6 +133,8 @@ valueMainUI::valueMainUI(QWidget *parent)
m_SysTimerID = startTimer(1000);//系统定时刷新定时器 m_SysTimerID = startTimer(1000);//系统定时刷新定时器
m_timerStartID = startTimer(1000);//启动从机客户端 m_timerStartID = startTimer(1000);//启动从机客户端
} }
lpGlobalData::instance()->m_StationResult_1.stationID = 1;
lpGlobalData::instance()->m_StationResult_2.stationID = 2;
} }
valueMainUI::~valueMainUI() valueMainUI::~valueMainUI()
@ -274,9 +277,10 @@ Q_SLOT void valueMainUI::onRecvDataStr_A(const QJsonObject& json)
rlt.angle = angle; rlt.angle = angle;
rlt.center = QPointF(cnt_x, cnt_y); rlt.center = QPointF(cnt_x, cnt_y);
rlt.strModel = strName; rlt.strModel = strName;
lpGlobalData::instance()->m_StationResult_1 = rlt;
if (m_pPlcDevice) if (m_pPlcDevice)
{ {
m_pPlcDevice->onSendValueRlt(rlt); m_pPlcDevice->onAckTrigerCam(1);
} }
} }
else if (strcmd == "heartbit") else if (strcmd == "heartbit")
@ -287,10 +291,7 @@ Q_SLOT void valueMainUI::onRecvDataStr_A(const QJsonObject& json)
} }
else if (strcmd == "triggerAck") else if (strcmd == "triggerAck")
{ {
if (m_pPlcDevice)
{
m_pPlcDevice->onAckTrigerCam(1);
}
} }
} }
} }
@ -365,9 +366,10 @@ Q_SLOT void valueMainUI::onRecvDataStr_B(const QJsonObject& json)
rlt.angle = angle; rlt.angle = angle;
rlt.center = QPointF(cnt_x, cnt_y); rlt.center = QPointF(cnt_x, cnt_y);
rlt.strModel = strName; rlt.strModel = strName;
lpGlobalData::instance()->m_StationResult_2 = rlt;
if (m_pPlcDevice) if (m_pPlcDevice)
{ {
m_pPlcDevice->onSendValueRlt(rlt); m_pPlcDevice->onAckTrigerCam(2);
} }
} }
else if (strcmd == "heartbit") else if (strcmd == "heartbit")
@ -378,10 +380,7 @@ Q_SLOT void valueMainUI::onRecvDataStr_B(const QJsonObject& json)
} }
else if (strcmd == "triggerAck") else if (strcmd == "triggerAck")
{ {
if (m_pPlcDevice)
{
m_pPlcDevice->onAckTrigerCam(2);
}
} }
} }
} }
@ -1130,3 +1129,20 @@ Q_SLOT void valueMainUI::onLanguageChange(QString strLanguage)
SetLanguage(strLanguage); SetLanguage(strLanguage);
} }
Q_SLOT void valueMainUI::onSendAlgResult(int camID)
{
if (camID == 1)
{
if (m_pPlcDevice)
{
m_pPlcDevice->onSendValueRlt(lpGlobalData::instance()->m_StationResult_1);
}
}
else if (camID == 2)
{
if (m_pPlcDevice)
{
m_pPlcDevice->onSendValueRlt(lpGlobalData::instance()->m_StationResult_2);
}
}
}

@ -72,6 +72,7 @@ private://trayIcon
void SearchQmFile(const QString & strDir); void SearchQmFile(const QString & strDir);
void SetTranslator(const QString strPath); void SetTranslator(const QString strPath);
Q_SLOT void onLanguageChange(QString strLanguage); Q_SLOT void onLanguageChange(QString strLanguage);
Q_SLOT void onSendAlgResult(int camID);
protected: protected:
virtual void timerEvent(QTimerEvent *event); virtual void timerEvent(QTimerEvent *event);
virtual void closeEvent(QCloseEvent *event); virtual void closeEvent(QCloseEvent *event);

Loading…
Cancel
Save