diff --git a/src/device/DeviceManager.cpp b/src/device/DeviceManager.cpp index b9519e4..3d4f10d 100644 --- a/src/device/DeviceManager.cpp +++ b/src/device/DeviceManager.cpp @@ -124,6 +124,11 @@ void DeviceManager::initDevice() connect(EventCenter::Default(), &EventCenter::RequestPreviewScan,this, &DeviceManager::startPreview); //shutdown connect(EventCenter::Default(), &EventCenter::RequestShutdown, this, &DeviceManager::shutdown); + //Drainage + connect(EventCenter::Default(), &EventCenter::RequestDrainage, this, [this](QObject* sender, QObject* detail) + { + controlDrainage(*(QString*)detail); + }); //Sync action mGetDeviceStatusAction = new DmsSyncAction(USRV_SCAN, ACT_SCAN_STATUS, this, "responseGetDeviceStatus(const QString&)", this); @@ -1011,3 +1016,19 @@ bool DeviceManager::getCEStatus() } return true; } + +void DeviceManager::controlDrainage(const QString& aCode) +{ + mPumpControlAction->setSendData(QString("{\"pumb\":%1}").arg(aCode)); + auto result = mPumpControlAction->execute(); + if(result.mIsSucessful) + { + QJsonObject jsonObj = toJsonObject(result.mData); + if(jsonObj["code"].toInt() == 0 ) + { + return; + } + } + QString msg = tr("Open pump failed."); + THROW_ERROR(msg); +} diff --git a/src/device/DeviceManager.h b/src/device/DeviceManager.h index 1b5b845..6ad078c 100644 --- a/src/device/DeviceManager.h +++ b/src/device/DeviceManager.h @@ -105,6 +105,7 @@ private: bool startCEScan(); void startTransfer(); void initEmptyScanMeasurementID(); + void controlDrainage(const QString& aCode); void processScanProgress(const QString& aProgress); void processInitializeProgress(const QString& aProgress); diff --git a/src/event/EventCenter.h b/src/event/EventCenter.h index 4794170..e18339f 100644 --- a/src/event/EventCenter.h +++ b/src/event/EventCenter.h @@ -18,6 +18,7 @@ ADD_EVENT_VALUE(RequestPatientScan)\ ADD_EVENT_VALUE(RequestContinueScan)\ ADD_EVENT_VALUE(RequestFullScanStop)\ ADD_EVENT_VALUE(RequestPreviewStop)\ +ADD_EVENT_VALUE(RequestDrainage)\ ADD_EVENT_VALUE(ResponseDeviceTemperature)\ ADD_EVENT_VALUE(ResponsePreview)\ ADD_EVENT_VALUE(ResponsePreviewData)\ diff --git a/src/forms/scan/ScanFormWidget.cpp b/src/forms/scan/ScanFormWidget.cpp index bbb5deb..a9901aa 100644 --- a/src/forms/scan/ScanFormWidget.cpp +++ b/src/forms/scan/ScanFormWidget.cpp @@ -169,15 +169,19 @@ void ScanFormWidget::initScanControlBar(QHBoxLayout *layout){ LOG_USER_OPERATION(Stop) EventCenter::Default()->triggerEvent(RequestPreviewStop, nullptr, nullptr); }); - connect(mBtnDrainage, &QToolButton::toggled, [=](bool aSatus) { + connect(mBtnDrainage, &QToolButton::clicked, [=](bool aSatus) { //Drainage if(aSatus == true) { + QString code = "1"; mBtnDrainage->setText(tr("Drainaging")); + EventCenter::Default()->triggerEvent(RequestDrainage, nullptr, (QObject*)(&code)); } else { + QString code = "0"; mBtnDrainage->setText(tr("Drainage")); + EventCenter::Default()->triggerEvent(RequestDrainage, nullptr, (QObject*)(&code)); } }); } @@ -281,6 +285,8 @@ void ScanFormWidget::initEvents() {//Events------------------------------------- connect(EventCenter::Default(), &EventCenter::DeviceErrorRaise, [=](QObject* parent, QObject* msg){ printf("signal:%d\r\n",senderSignalIndex()); setPreviewing(false); + mBtnDrainage->setChecked(false); + mBtnDrainage->setText(tr("Drainage")); }); }