Change pump action to AsyncAion from SyncAction.

This commit is contained in:
sunwen
2023-11-13 15:59:39 +08:00
parent 099306f5d3
commit 7c5a426e52
3 changed files with 33 additions and 16 deletions

View File

@@ -37,6 +37,7 @@ namespace
const int PREVIEW_IMAGE_WH = 140; const int PREVIEW_IMAGE_WH = 140;
const unsigned int GET_TEMPERATURE_TIME = 60000; const unsigned int GET_TEMPERATURE_TIME = 60000;
const int SHUT_DOWN_TIMEOUT = 180000;//3 minitues const int SHUT_DOWN_TIMEOUT = 180000;//3 minitues
const int PUMP_TIMEOUT = 3000;//3 seconds
const QString DEFAULT_DMS_START_FAILED = "Dms start failed."; const QString DEFAULT_DMS_START_FAILED = "Dms start failed.";
const QString RECON_TRANSFER_PATH = "/home/krad/TestStore"; const QString RECON_TRANSFER_PATH = "/home/krad/TestStore";
@@ -118,7 +119,6 @@ void DeviceManager::initDevice()
mGetTransferProgressAction = new DmsSyncAction(USRV_XFR, ACT_XFR_PROGRESS_PASSIVE, this, "responseGetTransferProgress(const QString&)", this); mGetTransferProgressAction = new DmsSyncAction(USRV_XFR, ACT_XFR_PROGRESS_PASSIVE, this, "responseGetTransferProgress(const QString&)", this);
mCEScanAction = new DmsSyncAction(USRV_SCAN, ACT_SCAN_CE, this, "responseCEScan(const QString&)", this); mCEScanAction = new DmsSyncAction(USRV_SCAN, ACT_SCAN_CE, this, "responseCEScan(const QString&)", this);
mGetCEStatusAction = new DmsSyncAction(USRV_SCAN, ACT_SCAN_CE_STATUS, this, "responseGetCEStatus(const QString&)", this); mGetCEStatusAction = new DmsSyncAction(USRV_SCAN, ACT_SCAN_CE_STATUS, this, "responseGetCEStatus(const QString&)", this);
mPumpControlAction = new DmsSyncAction(USRV_CONTROL, ACT_CTL_PUMP, this, "responsePumpControl(const QString&)", this);
mSetSimulatorModeAction = new DmsSyncAction(USRV_SCAN, ACT_SCAN_SIMULATOR, this, "responseSetSimulatorMode(const QString&)", this); mSetSimulatorModeAction = new DmsSyncAction(USRV_SCAN, ACT_SCAN_SIMULATOR, this, "responseSetSimulatorMode(const QString&)", this);
mSetHeartBeatAction = new DmsSyncAction(USRV_INFOCFG, ACT_IFCFG_HBCFG, this, "responseSetHeartBeat(const QString&)", this); mSetHeartBeatAction = new DmsSyncAction(USRV_INFOCFG, ACT_IFCFG_HBCFG, this, "responseSetHeartBeat(const QString&)", this);
@@ -129,6 +129,8 @@ void DeviceManager::initDevice()
mStopTransferAction = new DmsAsyncAction(USRV_XFR, ACT_XFR_STOP, this, "responseStopTransfer(const QString&)", this); mStopTransferAction = new DmsAsyncAction(USRV_XFR, ACT_XFR_STOP, this, "responseStopTransfer(const QString&)", this);
mShutDownAction = new DmsAsyncAction(USRV_CONTROL, ACT_CTL_PWRDOWN, this, "responseShutDown(const QString&)", this); mShutDownAction = new DmsAsyncAction(USRV_CONTROL, ACT_CTL_PWRDOWN, this, "responseShutDown(const QString&)", this);
mShutDownAction->setTimeoutInterval(SHUT_DOWN_TIMEOUT); mShutDownAction->setTimeoutInterval(SHUT_DOWN_TIMEOUT);
mPumpControlAction = new DmsAsyncAction(USRV_CONTROL, ACT_CTL_PUMP, this, "responsePumpControl(const QString&)", this);
mPumpControlAction->setTimeoutInterval(PUMP_TIMEOUT);
connect(mGetScanProgressAction, &DmsAsyncAction::timeout, this, &DeviceManager::scanTimeout); connect(mGetScanProgressAction, &DmsAsyncAction::timeout, this, &DeviceManager::scanTimeout);
connect(mShutDownAction, &DmsAsyncAction::timeout, this, &DeviceManager::shutdownDmsFailed); connect(mShutDownAction, &DmsAsyncAction::timeout, this, &DeviceManager::shutdownDmsFailed);
@@ -603,6 +605,7 @@ void DeviceManager::processReceiveDMSInfoResult(int aServerID, int aActionID, co
{ {
case ACT_CTL_PUMP: case ACT_CTL_PUMP:
emit responsePumpControl(aContents); emit responsePumpControl(aContents);
processPumpResult(aContents);
break; break;
case ACT_CTL_PWRDOWN: case ACT_CTL_PWRDOWN:
emit responseShutDown(aContents); emit responseShutDown(aContents);
@@ -1089,19 +1092,26 @@ bool DeviceManager::getCEStatus()
void DeviceManager::controlDrainage(const QString& aCode) void DeviceManager::controlDrainage(const QString& aCode)
{ {
mPumpControlAction->setSendData(QString("{\"pumb\":%1}").arg(aCode)); mPumpControlAction->setSendData(QString("{\"pumb\":%1}").arg(aCode));
auto result = mPumpControlAction->execute(); if(!mPumpControlAction->execute())
if(result.mIsSucessful)
{ {
QJsonObject jsonObj = toJsonObject(result.mData); emit startPumpControlResult(false);
if(jsonObj["code"].toInt() == 0 ) QString msg = tr("Open pump failed.");
{ THROW_ERROR(msg);
emit startPumpControlResult(true);
return;
}
} }
emit startPumpControlResult(false); }
QString msg = tr("Open pump failed.");
THROW_ERROR(msg); void DeviceManager::processPumpResult(const QString& aResponse)
{
QJsonObject jsonObj = toJsonObject(aResponse);
if(jsonObj["code"].toInt() == 0 )
{
emit startPumpControlResult(true);
return;
}
emit startPumpControlResult(false);
QString msg = tr("Open pump failed.");
THROW_ERROR(msg);
} }
void DeviceManager::updateReconConnectionState(bool aIsConnected) void DeviceManager::updateReconConnectionState(bool aIsConnected)

View File

@@ -117,6 +117,7 @@ private:
void processDeviceTemperature(const QString& aResponseTemperature); void processDeviceTemperature(const QString& aResponseTemperature);
void processTransferProgress(const QString& aProgress); void processTransferProgress(const QString& aProgress);
void processShutDownDms(const QString& aResponse); void processShutDownDms(const QString& aResponse);
void processPumpResult(const QString& aResponse);
void insertEmptyScanRecord(); void insertEmptyScanRecord();
void insertScanRecord(); void insertScanRecord();
@@ -199,7 +200,6 @@ private:
DmsSyncAction* mTransferAction = nullptr; DmsSyncAction* mTransferAction = nullptr;
DmsSyncAction* mGetTransferProgressAction = nullptr; DmsSyncAction* mGetTransferProgressAction = nullptr;
DmsSyncAction* mGetCEStatusAction = nullptr; DmsSyncAction* mGetCEStatusAction = nullptr;
DmsSyncAction* mPumpControlAction = nullptr;
DmsSyncAction* mSetSimulatorModeAction = nullptr; DmsSyncAction* mSetSimulatorModeAction = nullptr;
DmsSyncAction* mSetHeartBeatAction = nullptr; DmsSyncAction* mSetHeartBeatAction = nullptr;
@@ -208,6 +208,7 @@ private:
DmsAsyncAction* mGetSoftwareVersionAction = nullptr; DmsAsyncAction* mGetSoftwareVersionAction = nullptr;
DmsAsyncAction* mStopTransferAction = nullptr; DmsAsyncAction* mStopTransferAction = nullptr;
DmsAsyncAction* mShutDownAction = nullptr; DmsAsyncAction* mShutDownAction = nullptr;
DmsAsyncAction* mPumpControlAction = nullptr;
friend class InfoReceiveWorker; friend class InfoReceiveWorker;
}; };

View File

@@ -17,6 +17,7 @@ DmsAsyncAction::DmsAsyncAction(int aServerId, int aActionId, QObject* aObject, c
, mResponseSignal(aResponseSignal) , mResponseSignal(aResponseSignal)
, mSendData() , mSendData()
, mIsResponsed(false) , mIsResponsed(false)
, mIsRunning(false)
{ {
mTimer->setSingleShot(true); mTimer->setSingleShot(true);
mTimer->setInterval(TIMEOUT_MSEC); mTimer->setInterval(TIMEOUT_MSEC);
@@ -30,9 +31,14 @@ DmsAsyncAction::~DmsAsyncAction()
disconnect(mObject, ("2" + mResponseSignal).toStdString().c_str(), mTimer, SLOT(stop())); disconnect(mObject, ("2" + mResponseSignal).toStdString().c_str(), mTimer, SLOT(stop()));
} }
void DmsAsyncAction::setSendData(const QString& aData)
{
mSendData = aData;
}
bool DmsAsyncAction::execute() bool DmsAsyncAction::execute()
{ {
mIsResponsed = false; mIsResponsed = false;
QByteArray byteArray = mSendData.toUtf8(); QByteArray byteArray = mSendData.toUtf8();
uint8_t* data = reinterpret_cast<uint8_t*>(byteArray.data()); uint8_t* data = reinterpret_cast<uint8_t*>(byteArray.data());
if(dmsmq_send(mServerId, mActionId, data, byteArray.size()) < 0) if(dmsmq_send(mServerId, mActionId, data, byteArray.size()) < 0)
@@ -45,7 +51,7 @@ bool DmsAsyncAction::execute()
void DmsAsyncAction::sendTimeoutSignal() void DmsAsyncAction::sendTimeoutSignal()
{ {
if(!mIsResponsed) if(!mIsResponsed)
{ {
emit timeout(); emit timeout();
} }
@@ -58,7 +64,7 @@ void DmsAsyncAction::setTimeoutInterval(int aMsec)
void DmsAsyncAction::responsed() void DmsAsyncAction::responsed()
{ {
if(mTimer->isActive()) if(mTimer->isActive())
{ {
mIsResponsed = true; mIsResponsed = true;
} }