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();
emit sgTrigerCam(stationID);
}
else if (cmd.toInt() == 2)
else if (cmd.toInt() == 2) //ÐÄÌøÓ¦´ð
{
onSendHeartBit();
}
else if (cmd.toInt() == 3)
{
int stationID = data.toInt();
emit sgSendAlgResult(stationID);
}
}
}
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());
}

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

@ -22,9 +22,9 @@
#include "databasesql.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 UPDATE_TIME "2021-11-04"
#define UPDATE_TIME "2021-11-09"
#pragma execution_character_set("utf-8")
#define MODEL_UI_ICON_NONE ":/image/no-img"
@ -1717,7 +1717,7 @@ void lpMainWin::onSaveValveResult(ValueResult &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);
}

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

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

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

Loading…
Cancel
Save