From 7f6fd9aa204b8f0853836894916a974527b3d008 Mon Sep 17 00:00:00 2001 From: ccsens_zhangsan Date: Thu, 21 Oct 2021 18:50:44 +0800 Subject: [PATCH] master (#4) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 程序启动切换到可执行文件所在目录 推送消息中没有倒计时不显示 添加轮播患者 2个api测试完成 添加按键检测 修改qtdebug->qtcore11 修改qtdebug->qtcore pro文件中去除无用文件,以缩减目标平台编译时间 test device 1 test device Co-authored-by: zhangsan Reviewed-on: https://dd.tall.wiki/gitea/ccsens_hardware/qt_qcp_show/pulls/4 --- QCPShow.pro | 39 +++++++++++------- QCPShow.pro.user | 26 ++++++------ api.http | 47 +++++++++++++++++++++ deviceservice.cpp | 93 ++++++++++++++++++++++++++++++++++++++++++ deviceservice.h | 46 +++++++++++++++++++++ httpservice.cpp | 14 ++++--- httpservice.h | 1 + main.cpp | 20 ++++++--- mainconfig.cpp | 2 +- mainwidget.cpp | 65 +++++++++++++++++++++-------- mainwidget.h | 8 +++- patientemergencyinfo.h | 2 +- resttest | 9 ---- setting.ini | 27 ++++++++++++ websocketservice.cpp | 11 ++--- websocketservice.h | 2 +- 16 files changed, 338 insertions(+), 74 deletions(-) create mode 100644 api.http create mode 100644 deviceservice.cpp create mode 100644 deviceservice.h delete mode 100644 resttest create mode 100644 setting.ini diff --git a/QCPShow.pro b/QCPShow.pro index b0f4a5e..cd4bef4 100644 --- a/QCPShow.pro +++ b/QCPShow.pro @@ -11,6 +11,13 @@ greaterThan(QT_MAJOR_VERSION, 4): QT += widgets CONFIG += C++11 + +win32{ + # win32 libs +}else{ + LIBS += -l wiringPi +} + TARGET = QCPShow TEMPLATE = app @@ -28,28 +35,30 @@ DEFINES += QT_DEPRECATED_WARNINGS SOURCES += main.cpp\ mainwidget.cpp \ - serial/serialport.cpp \ - ccwidgets/cqlineedit.cpp \ - ccwidgets/cqspinbox.cpp \ - ccwidgets/cqtextedit.cpp \ - ccwidgets/cqwidgetspinbox.cpp \ - util/commonutil.cpp \ +# serial/serialport.cpp \ +# ccwidgets/cqlineedit.cpp \ +# ccwidgets/cqspinbox.cpp \ +# ccwidgets/cqtextedit.cpp \ +# ccwidgets/cqwidgetspinbox.cpp \ +# util/commonutil.cpp \ httpservice.cpp \ mainconfig.cpp \ websocketservice.cpp \ - patientemergencyinfo.cpp + patientemergencyinfo.cpp \ + deviceservice.cpp HEADERS += mainwidget.h \ - serial/serialport.h \ - ccwidgets/cqlineedit.h \ - ccwidgets/cqspinbox.h \ - ccwidgets/cqtextedit.h \ - ccwidgets/cqwidgetspinbox.h \ - util/commonutil.h \ +# serial/serialport.h \ +# ccwidgets/cqlineedit.h \ +# ccwidgets/cqspinbox.h \ +# ccwidgets/cqtextedit.h \ +# ccwidgets/cqwidgetspinbox.h \ +# util/commonutil.h \ httpservice.h \ mainconfig.h \ websocketservice.h \ - patientemergencyinfo.h + patientemergencyinfo.h \ + deviceservice.h FORMS += mainwidget.ui @@ -59,4 +68,4 @@ RESOURCES += \ DISTFILES += \ .gitignore \ ReadMe.md \ - resttest + api.http diff --git a/QCPShow.pro.user b/QCPShow.pro.user index d4f0342..9691761 100644 --- a/QCPShow.pro.user +++ b/QCPShow.pro.user @@ -1,10 +1,10 @@ - + EnvironmentId - {0d351c1e-abb6-427c-8d0b-30ca23826ed5} + {fe03815e-74e2-457e-b60c-e66368cd4ce4} ProjectExplorer.Project.ActiveTarget @@ -66,7 +66,7 @@ 0 0 - D:/Qt/QtSpace/build-QcpShow-Desktop_Qt_5_8_0_MinGW_32bit-Debug + E:/Qt/QtSpace/build-QcpShow-Desktop_Qt_5_8_0_MinGW_32bit-Debug true @@ -90,7 +90,7 @@ 2 - 构建 + Build ProjectExplorer.BuildSteps.Build @@ -106,7 +106,7 @@ 1 - 清理 + Clean ProjectExplorer.BuildSteps.Clean @@ -144,7 +144,7 @@ 2 - 构建 + Build ProjectExplorer.BuildSteps.Build @@ -160,7 +160,7 @@ 1 - 清理 + Clean ProjectExplorer.BuildSteps.Clean @@ -198,7 +198,7 @@ 2 - 构建 + Build ProjectExplorer.BuildSteps.Build @@ -214,7 +214,7 @@ 1 - 清理 + Clean ProjectExplorer.BuildSteps.Clean @@ -231,7 +231,7 @@ 0 - 部署 + Deploy ProjectExplorer.BuildSteps.Deploy @@ -285,14 +285,14 @@ 2 QCPShow - QCPShow2 - Qt4ProjectManager.Qt4RunConfiguration:D:/Qt/QtSpace/qt_qcp_show/QCPShow.pro + + Qt4ProjectManager.Qt4RunConfiguration:E:/Qt/QtSpace/QCPShow/QCPShow.pro true QCPShow.pro false - D:/Qt/QtSpace/build-QcpShow-Desktop_Qt_5_8_0_MinGW_32bit-Debug + E:/Qt/QtSpace/build-QcpShow-Desktop_Qt_5_8_0_MinGW_32bit-Debug 3768 false true diff --git a/api.http b/api.http new file mode 100644 index 0000000..3076526 --- /dev/null +++ b/api.http @@ -0,0 +1,47 @@ +GET https://example.com/comments/1 HTTP/1.1 + +### + +GET https://example.com/topics/1 HTTP/1.1 + +### +# @name signin +POST http://test.tall.wiki/gateway/tall3/v3.0/users/signin HTTP/1.1 +content-type: application/json + +{ + "client": 1, + "data": { + "credential": "123456", + "identifier": "shoufeichu" + }, + "scene": 0, + "type": 3 +} + +### + +POST https://test.tall.wiki/gateway/qcp/v3.0/button/idCardDiscern HTTP/1.1 +content-type: application/json +Authorization: Bearer {{signin.response.body.$.data.token}} + +{ + "param":{ + "idcard":"142733198703123919", + "name":"彭于晏", + "sex":"1", + "nation":"汉族" + } +} + +### + +POST https://test.tall.wiki/gateway/qcp/v3.0/button/buttonStart HTTP/1.1 +content-type: application/json +Authorization: Bearer {{signin.response.body.$.data.token}} + +{ + "param":{ + "idcard":"142733198703123919" + } +} \ No newline at end of file diff --git a/deviceservice.cpp b/deviceservice.cpp new file mode 100644 index 0000000..3d9eb7f --- /dev/null +++ b/deviceservice.cpp @@ -0,0 +1,93 @@ +#include "deviceservice.h" +#include +#ifdef Q_OS_LINUX +#include +#else +#endif + +#define WIRING_PIN_LED 4 //GPIO.4 +#define WIRING_PIN_KEY 3 //GPIO.3 +#define Click_Overtime 50 + +DeviceService::DeviceService(QObject *parent) : QObject(parent) +{ + key.flag = None; + key.lastState = KEY_Up; + m_ledStatus = 0; + m_keyStatus = 0; + +#ifdef Q_OS_LINUX + wiringPiSetup(); + pinMode(WIRING_PIN_LED,OUTPUT);//LED输出模式 可选值:INPUT、OUTPUT、PWM_OUTPUT,GPIO_CLOCK + pinMode(WIRING_PIN_KEY,INPUT); //KEY输入模式 + pullUpDnControl(WIRING_PIN_KEY,PUD_UP); //KEY设置上拉 +#else + qDebug() << "wiringPiSetup()"; + qDebug() << "pinMode(WIRING_PIN_LED,OUTPUT)"; + qDebug() << "pinMode(WIRING_PIN_BTN,INPUT)"; +#endif + + timer1.setInterval(1000); + timer1.start(); + connect(&timer1,&QTimer::timeout,[=](){ + m_ledStatus ^= 1; + ledSet(m_ledStatus); + }); + + timer2.setInterval(50); + timer2.start(); + connect(&timer2,&QTimer::timeout,[=](){ +// quint8 keyStatus = keyReadOnce(); +// if(keyStatus != m_keyStatus){ +// m_keyStatus = keyStatus; +// qDebug() << "m_keyStatus " << m_keyStatus; +// } + key.flag = (KeyFlag)keyDetection(); + if(key.flag != None){ + if(key.flag == Click){ + emit keyClicked(); + } + } + }); +} + +void DeviceService::ledSet(int status) +{ +#ifdef Q_OS_LINUX + digitalWrite(WIRING_PIN_LED,status == 1 ? LOW : HIGH);//'HIGH'代表高电平,’LOW‘则为低电平 +#else + qDebug() << "LED set: " << status; +#endif +} + +/** + * @brief DeviceService::keyReadOnce + * 按键按下返回0,按键弹起返回1 + * @return + */ +quint8 DeviceService::keyReadOnce() +{ +#ifdef Q_OS_LINUX + return digitalRead(WIRING_PIN_KEY); +#else + //qDebug() << "keyReadOnce()"; + return KEY_Up; +#endif +} + +quint8 DeviceService::keyDetection() +{ + key.flag = None; //清空按键标志 + quint8 status = keyReadOnce(); + if ((status == KEY_Down) && (key.lastState == KEY_Up)) + { + uint16_t i = Click_Overtime; + while(i--); + status = keyReadOnce(); + if(status == KEY_Down){ + key.flag = Click; //先确定按键标志为单击 + } + } + key.lastState = status; + return key.flag; +} diff --git a/deviceservice.h b/deviceservice.h new file mode 100644 index 0000000..f22a343 --- /dev/null +++ b/deviceservice.h @@ -0,0 +1,46 @@ +#ifndef DEVICESERVICE_H +#define DEVICESERVICE_H + +#include +#include + +typedef enum{ + GPIO_PIN_RESET = 0u, + GPIO_PIN_SET +} GPIO_PinState; + +typedef enum{ + None = (uint8_t)0, + Click = (uint8_t)1, + Dbl_Click = (uint8_t)2, + Tri_Click = (uint8_t)3, + Press = (uint8_t)4, +}KeyFlag; + +#define KEY_Up 1 +#define KEY_Down 0 + +typedef struct{ + KeyFlag flag; + quint8 lastState; +}KeyType; + +class DeviceService : public QObject +{ + Q_OBJECT +public: + explicit DeviceService(QObject *parent = 0); +private: + KeyType key; + int m_ledStatus,m_keyStatus; + QTimer timer1,timer2; +signals: + void keyClicked(); + +public slots: + void ledSet(int status); + quint8 keyReadOnce(); + quint8 keyDetection(); +}; + +#endif // DEVICESERVICE_H diff --git a/httpservice.cpp b/httpservice.cpp index 40bddfe..c074970 100644 --- a/httpservice.cpp +++ b/httpservice.cpp @@ -103,6 +103,7 @@ QByteArray HttpService::postJson(QUrl url,const QByteArray &json, quint32 timeou result = reply->readAll(); } } + qDebug() << result; return result; } @@ -114,7 +115,6 @@ void HttpService::login(QString username, QString password) //发送请求 QByteArray result = postJson(MainConfig::loginUrl,json.toUtf8()); - qDebug() << result; //解析响应 QJsonParseError jerror; @@ -144,7 +144,6 @@ void HttpService::updateStatus(QString firstAidId, QString status) //发送请求 QByteArray result = postJson(MainConfig::serviceStatusChangedUrl,json.toUtf8()); - qDebug() << result; //解析响应 QJsonParseError jerror; @@ -173,7 +172,6 @@ void HttpService::sendIdcardInfo(QString idcard,QString name, QString sex, QStri //发送请求 QByteArray result = postJson(MainConfig::sendUserInfoUrl,json.toUtf8()); - qDebug() << result; //解析响应 QJsonParseError jerror; @@ -201,8 +199,7 @@ void HttpService::oneKeyStart(QString idcard) QString json = rawJson.arg(idcard); //发送请求 - QByteArray result = postJson(MainConfig::sendUserInfoUrl,json.toUtf8()); - qDebug() << result; + QByteArray result = postJson(MainConfig::oneKeyStartUrl,json.toUtf8()); //解析响应 QJsonParseError jerror; @@ -222,3 +219,10 @@ void HttpService::oneKeyStart(QString idcard) qDebug() << "oneKeyStart失败:" << resCode; } } + +void HttpService::onComplexOneKeyStart(QString idcard, QString name, QString sex, QString nation) +{ + qDebug() << "onComplexOneKeyStart" << idcard << name << sex << nation; + sendIdcardInfo(idcard,name,sex,nation); + oneKeyStart(idcard); +} diff --git a/httpservice.h b/httpservice.h index 6465e61..c49f725 100644 --- a/httpservice.h +++ b/httpservice.h @@ -21,6 +21,7 @@ public slots: void updateStatus(QString firstAidId,QString status); void sendIdcardInfo(QString idcard,QString name,QString sex,QString nation); void oneKeyStart(QString idcard); + void onComplexOneKeyStart(QString idcard,QString name,QString sex,QString nation); }; #endif // HTTPSERVICE_H diff --git a/main.cpp b/main.cpp index d5f10a2..64ae1ad 100644 --- a/main.cpp +++ b/main.cpp @@ -4,11 +4,15 @@ #include "httpservice.h" #include "websocketservice.h" #include "patientemergencyinfo.h" +#include "deviceservice.h" int main(int argc, char *argv[]) { QApplication a(argc, argv); + //切换当前工作目录 + QDir::setCurrent(QCoreApplication::applicationDirPath()); + //初始化配置文件 MainConfig::initConfig(); @@ -20,21 +24,27 @@ int main(int argc, char *argv[]) WebsocketService websocketService; websocketService.connectToServer(MainConfig::wsUrl); + //初始化DeviceInfo,并自动初始化IO配置 + DeviceService deviceService; + //创建主窗体 MainWidget w; //绑定信号与槽 QObject::connect(&websocketService,&WebsocketService::wsConnectedStatusChanged, - &w,&MainWidget::onWsConnectedStatusChanged); + &w,&MainWidget::onWsConnectedStatusChanged); QObject::connect(&websocketService,&WebsocketService::newPatientMergencyInfo, - &w,&MainWidget::onNewPatientMergencyInfo); + &w,&MainWidget::onNewPatientMergencyInfo); QObject::connect(&websocketService,&WebsocketService::patientMergencyStatusChanged, - &w,&MainWidget::onPatientMergencyStatusChanged); + &w,&MainWidget::onPatientMergencyStatusChanged); + QObject::connect(&deviceService,&DeviceService::keyClicked, + &w,&MainWidget::onKeyClicked); QObject::connect(&w,&MainWidget::statusChanged,&httpService,&HttpService::updateStatus); + QObject::connect(&w,&MainWidget::complexOneKeyStart,&httpService,&HttpService::onComplexOneKeyStart); -// w.show(); - w.showFullScreen(); + w.show(); + // w.showFullScreen(); return a.exec(); } diff --git a/mainconfig.cpp b/mainconfig.cpp index 01acabd..c09b674 100644 --- a/mainconfig.cpp +++ b/mainconfig.cpp @@ -5,7 +5,7 @@ #define D_CONFIG_FILE_PATH "./setting.ini" QString MainConfig::token = ""; -QString MainConfig::username = "shoufeichu"; +QString MainConfig::username = "fenzhentai"; QString MainConfig::password = "123456"; QString MainConfig::loginUrl = "http://test.tall.wiki/gateway/tall3/v3.0/users/signin"; QString MainConfig::sendUserInfoUrl = "https://test.tall.wiki/gateway/qcp/v3.0/button/idCardDiscern"; diff --git a/mainwidget.cpp b/mainwidget.cpp index 08a9305..1550075 100644 --- a/mainwidget.cpp +++ b/mainwidget.cpp @@ -3,6 +3,10 @@ #include #include "mainconfig.h" +#define NAMELIST_LENGTH 4 +QString namelist[] = {"传立春","传立夏","传立秋","传立冬"}; +qint8 gindex = 0; + MainWidget::MainWidget(QWidget *parent) : QWidget(parent), ui(new Ui::MainWidget) @@ -48,9 +52,9 @@ MainWidget::MainWidget(QWidget *parent) : ui->textLabel->setStyleSheet("QLabel {color: rgb(255,0,0);}");//设置文本红色 ui->countdownLabel->setStyleSheet("QLabel {color: rgb(255,0,0);}");//设置文本红色 ui->statusLabel->setStyleSheet("QLabel {color: rgb(85,255,0);}");//设置文本绿色 -// ui->textLabel->setAlignment(Qt::AlignHCenter); -// ui->countdownLabel->setAlignment(Qt::AlignHCenter); -// ui->statusLabel->setAlignment(Qt::AlignRight); + // ui->textLabel->setAlignment(Qt::AlignHCenter); + // ui->countdownLabel->setAlignment(Qt::AlignHCenter); + // ui->statusLabel->setAlignment(Qt::AlignRight); m_curX = 0; connect(&m_lableScrollTimer,SIGNAL(timeout()),this,SLOT(lableScrollDisplay())); @@ -67,10 +71,10 @@ void MainWidget::updateUi() m_curX = 0;//内容超出显示区域时,更新患者信息显示从头开始滚动 //更新statusLabel -// ui->statusLabel->setText(QString("%1 | %2") -// .arg(m_wsConnectedStatus == 0 ? "未连接" : "已连接") -// .arg(m_patientEmergencyInfos.length()) -// ); + // ui->statusLabel->setText(QString("%1 | %2") + // .arg(m_wsConnectedStatus == 0 ? "未连接" : "已连接") + // .arg(m_patientEmergencyInfos.length()) + // ); if(m_wsConnectedStatus){ ui->LEDLabel->setStyleSheet("border-image: url(:/image/1LED_green.png);"); }else{ @@ -95,13 +99,18 @@ void MainWidget::updateUi() ui->textLabel->setText(pInfo->text); //显示倒计时 - int hour,min,sec,nTotalSecs; - nTotalSecs = pInfo->realCountDownInSeconds; - sec = nTotalSecs % 60; -// min = nTotalSecs / 60 % 60; - min = nTotalSecs / 60 ; //min显示大于60 - hour = nTotalSecs / 3600; - QString str = QString("%1:%2").arg(min,2,10,QLatin1Char('0')).arg(sec,2,10,QLatin1Char('0')); + QString str = ""; + if(pInfo->realCountDownInSeconds < 0){ + str = ""; + }else{ + int hour,min,sec,nTotalSecs; + nTotalSecs = pInfo->realCountDownInSeconds; + sec = nTotalSecs % 60; + // min = nTotalSecs / 60 % 60; + min = nTotalSecs / 60 ; //min显示大于60 + hour = nTotalSecs / 3600; + str = QString("%1:%2").arg(min,2,10,QLatin1Char('0')).arg(sec,2,10,QLatin1Char('0')); + } ui->countdownLabel->setText(str); } @@ -110,7 +119,7 @@ void MainWidget::paintEvent(QPaintEvent *event) //设置背景图片 QPainter p(this); p.drawPixmap(0,0,this->width(),this->height(),QPixmap(":/image/black_bg.jpg")); -// qDebug() << "MainWidget::paintEvent"; + // qDebug() << "MainWidget::paintEvent"; //重新调整label字体大小 //TODO @@ -121,7 +130,7 @@ void MainWidget::resizeEvent(QResizeEvent *event) QWidget::resizeEvent(event); //标题 -// ui->textLabel->setGeometry(0,0,this->width(),(this->height()-30)/2); + // ui->textLabel->setGeometry(0,0,this->width(),(this->height()-30)/2); ui->countdownLabel->setGeometry(0,(this->height()-30)/2,this->width(),(this->height()-30)/2); ui->LEDLabel->setGeometry(this->width()-120,this->height()-30,20,30); ui->statusLabel->setGeometry(this->width()-80,this->height()-30,20,30); @@ -137,7 +146,7 @@ void MainWidget::lableScrollDisplay() else{ m_curX ++; ui->textLabel->setGeometry(20-m_curX,0,m_width,(this->height()-30)/2); -// qDebug()<<"move" < (m_width - this->width())){ m_curX = 0; @@ -152,7 +161,7 @@ void MainWidget::onWsConnectedStatusChanged(int status) updateUi(); } -void MainWidget::onNewPatientMergencyInfo(QString firstAidId, QString name, QString content, quint64 realCountDownInSeconds) +void MainWidget::onNewPatientMergencyInfo(QString firstAidId, QString name, QString content, qint64 realCountDownInSeconds) { //TODO 此处是否需要加锁处理 PatientEmergencyInfo *pInfo = new PatientEmergencyInfo(firstAidId,name,content,realCountDownInSeconds); @@ -181,6 +190,16 @@ void MainWidget::onPatientMergencyStatusChanged(QString firstAidId,QString time, } } +void MainWidget::onKeyClicked() +{ + emit complexOneKeyStart("142733198703123918",::namelist[::gindex],"1","汉族"); + qDebug() << "Key Clicked"; + + if(++::gindex >= NAMELIST_LENGTH){ + ::gindex = 0; + } +} + void MainWidget::addPatientToList(PatientEmergencyInfo *info) { //1.如果有就删除,以保证同一个病人按两次应该重新开始计时 @@ -206,3 +225,13 @@ void MainWidget::deletePatientFromList(QString firstAidId) } } } + +void MainWidget::mouseDoubleClickEvent(QMouseEvent *event) +{ + if(event->button()==Qt::LeftButton){ + //TODO + } + else if(event->button()==Qt::RightButton){ + onKeyClicked(); + } +} diff --git a/mainwidget.h b/mainwidget.h index 4c7e2a2..b1f6511 100644 --- a/mainwidget.h +++ b/mainwidget.h @@ -19,6 +19,7 @@ public: ~MainWidget(); void paintEvent(QPaintEvent *event); void resizeEvent(QResizeEvent *event); + void mouseDoubleClickEvent(QMouseEvent *event); private: Ui::MainWidget *ui; @@ -35,14 +36,19 @@ private: public slots: void updateUi(); void onWsConnectedStatusChanged(int); - void onNewPatientMergencyInfo(QString firstAidId,QString name,QString content,quint64 realCountDownInSeconds); + void onNewPatientMergencyInfo(QString firstAidId,QString name,QString content,qint64 realCountDownInSeconds); void onPatientMergencyStatusChanged(QString firstAidId,QString time,QString status); void addPatientToList(PatientEmergencyInfo *); void deletePatientFromList(QString firstAidId); void lableScrollDisplay(); + void onKeyClicked(); + signals: void statusChanged(QString firstAidId,QString status); + void complexOneKeyStart(QString idcard,QString name,QString sex,QString nation); + void sendCardInfo(QString idcard,QString name,QString sex,QString nation); + void oneKeyStart(QString idcard); }; #endif // MAINWIDGET_H diff --git a/patientemergencyinfo.h b/patientemergencyinfo.h index 2a492b7..c693f44 100644 --- a/patientemergencyinfo.h +++ b/patientemergencyinfo.h @@ -13,7 +13,7 @@ public: QString id; QString name; QString text; - quint64 realCountDownInSeconds; + qint64 realCountDownInSeconds; signals: diff --git a/resttest b/resttest deleted file mode 100644 index b92ab71..0000000 --- a/resttest +++ /dev/null @@ -1,9 +0,0 @@ -https://example.com/comments/1 - -POST https://example.com/comments HTTP/1.1 -content-type: application/json - -{ - "name": "sample", - "time": "Wed, 21 Oct 2015 18:27:50 GMT" -} diff --git a/setting.ini b/setting.ini new file mode 100644 index 0000000..9bdbde9 --- /dev/null +++ b/setting.ini @@ -0,0 +1,27 @@ +[MAIN] +;最大患者数量 +maxPatientNum = 5 +;切换病人时间(s) +switchPatientInterval = 5 + +[USER] +;登录用户名 +username = shoufeichu +;登录密码 +password = 123456 + +[HTTP] +;登录请求URL +loginUrl = http://test.tall.wiki/gateway/tall3/v3.0/users/signin +;发送身份证信息URL +sendUserInfoUrl = https://test.tall.wiki/gateway/qcp/v3.0/button/idCardDiscern +;一键启动URL +oneKeyStartUrl = https://test.tall.wiki/gateway/qcp/v3.0/button/buttonStart +;服务状态改变URL(rgb) +serviceStatusChangedUrl = https://test.tall.wiki/gateway/qcp/v3.0/button/updateStatus + +[WEBSOCKET] +;Websocket URL +wsUrl = wss://test.tall.wiki/websocket/message/v4.0/ws +;Websocket心跳间隔(s) +wsHeartInterval = 10 diff --git a/websocketservice.cpp b/websocketservice.cpp index a6b9a83..1970982 100644 --- a/websocketservice.cpp +++ b/websocketservice.cpp @@ -43,7 +43,7 @@ void WebsocketService::wsSendAuthMsg() QString rawJson = "{\"toDomain\":\"Server\",\"data\":\"{\\\"type\\\":\\\"Auth\\\",\\\"data\\\":{\\\"token\\\":\\\"%1\\\"}}\"}"; QString json = rawJson.arg(MainConfig::token); m_webSocket.sendTextMessage(json); - qDebug() << QDateTime::currentDateTime().toString("hh:mm:ss") << "wsSendAuthMsg: " << json; + //qDebug() << QDateTime::currentDateTime().toString("hh:mm:ss") << "wsSendAuthMsg: " << json; } void WebsocketService::wsSendPingMsg() @@ -56,7 +56,7 @@ void WebsocketService::wsSendPingMsg() QString rawJson = "{\"toDomain\":\"Server\",\"data\":\"{\\\"type\\\":\\\"Ping\\\"}\"}"; QString json = rawJson; m_webSocket.sendTextMessage(json); - qDebug() << QDateTime::currentDateTime().toString("hh:mm:ss") << "wsSendPingMsg: " << json; + //qDebug() << QDateTime::currentDateTime().toString("hh:mm:ss") << "wsSendPingMsg: " << json; } void WebsocketService::sendWsAckMessage(QString ackId) @@ -65,12 +65,13 @@ void WebsocketService::sendWsAckMessage(QString ackId) QString rawJson = "{\"toDomain\":\"Server\",\"data\":\"{\\\"type\\\":\\\"Ack\\\",\\\"data\\\":{\\\"ackId\\\":\\\"%1\\\"}}\"}"; QString json = rawJson.arg(ackId); m_webSocket.sendTextMessage(json); + //qDebug() << QDateTime::currentDateTime().toString("hh:mm:ss") << "sendWsAckMessage: " << json; } void WebsocketService::onTextMessageReceived(const QString &message) { - qDebug() << QDateTime::currentDateTime().toString("hh:mm:ss") << "wsRecvMsg: " << message.toUtf8(); + //qDebug() << QDateTime::currentDateTime().toString("hh:mm:ss") << "wsRecvMsg: " << message.toUtf8(); //解析响应中的data字段,data又是一个json字符串 QJsonParseError jerror; QJsonDocument jdoc; @@ -109,7 +110,7 @@ void WebsocketService::onTextMessageReceived(const QString &message) }else if(notifyType == "Pong"){ qDebug() << "Pong Message"; }else if(notifyType == "ChannelStatus"){ - qDebug() << "Auth Message"; + //qDebug() << "Auth Message"; } } @@ -119,7 +120,7 @@ void WebsocketService::handleWsButtonStartMsg(QJsonObject jobj) QString firstAidId = jobj.take("firstAidId").toString(); QString name = jobj.take("name").toString(); QString content = jobj.take("content").toString(); - quint64 realCountdown = jobj.take("realCountdown").toString().toInt(0) / 1000; + qint64 realCountdown = jobj.take("realCountdown").toString("-1000").toInt(0) / 1000; emit newPatientMergencyInfo(firstAidId,name,content,realCountdown); } diff --git a/websocketservice.h b/websocketservice.h index f8bec9a..b0e5b3f 100644 --- a/websocketservice.h +++ b/websocketservice.h @@ -25,7 +25,7 @@ private: signals: void wsConnectedStatusChanged(int); //void newPatientMergencyInfo(PatientEmergencyInfo *); - void newPatientMergencyInfo(QString firstAidId,QString name,QString content,quint64 realCountDownInSeconds); + void newPatientMergencyInfo(QString firstAidId,QString name,QString content,qint64 realCountDownInSeconds); void patientMergencyStatusChanged(QString firstAidId,QString time,QString status); public slots: void onConnected();