From c218c36ec913d6a82c8c40004538ce4657fcdf7b Mon Sep 17 00:00:00 2001 From: zhangsan Date: Thu, 21 Oct 2021 14:32:59 +0800 Subject: [PATCH 01/10] test device --- QCPShow.pro | 13 ++++- deviceservice.cpp | 124 +++++++++++++++++++++++++++++++++++++++++++ deviceservice.h | 45 ++++++++++++++++ main.cpp | 8 ++- setting.ini | 27 ++++++++++ websocketservice.cpp | 9 ++-- 6 files changed, 218 insertions(+), 8 deletions(-) create mode 100644 deviceservice.cpp create mode 100644 deviceservice.h create mode 100644 setting.ini diff --git a/QCPShow.pro b/QCPShow.pro index b0f4a5e..387c40d 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 @@ -37,7 +44,8 @@ SOURCES += main.cpp\ httpservice.cpp \ mainconfig.cpp \ websocketservice.cpp \ - patientemergencyinfo.cpp + patientemergencyinfo.cpp \ + deviceservice.cpp HEADERS += mainwidget.h \ serial/serialport.h \ @@ -49,7 +57,8 @@ HEADERS += mainwidget.h \ httpservice.h \ mainconfig.h \ websocketservice.h \ - patientemergencyinfo.h + patientemergencyinfo.h \ + deviceservice.h FORMS += mainwidget.ui diff --git a/deviceservice.cpp b/deviceservice.cpp new file mode 100644 index 0000000..d33ad08 --- /dev/null +++ b/deviceservice.cpp @@ -0,0 +1,124 @@ +#include "deviceservice.h" +#ifdef Q_OS_LINUX +#include +#else +#include +#endif + +#define WIRING_PIN_LED 4 //GPIO.4 +#define WIRING_PIN_KEY 3 //GPIO.3 + +DeviceService::DeviceService(QObject *parent) : QObject(parent) +{ + key.flag = None; + key.lastState = None; + 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(10); + timer2.start(); + connect(&timer2,&QTimer::timeout,[=](){ + quint8 keyStatus = keyReadOnce(); + if(keyStatus != m_keyStatus){ + m_keyStatus = keyStatus; + qDebug() << "m_keyStatus " << m_keyStatus; + } + }); +} + +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 +} + +quint8 DeviceService::keyReadOnce() +{ +#ifdef Q_OS_LINUX + return digitalRead(WIRING_PIN_KEY); +#else + qDebug() << "keyReadOnce()"; + return 0; +#endif +} + +//quint8 DeviceService::keyDetection() +//{ +// key.flag = None; //清空按键标志 +// if ((keyReadOnce() == KEY_Up) && (key.lastState == KEY_Down)) +// { +// uint16_t i = Click_Overtime; +// uint16_t j = Press_Overtime; +// key.flag = Click; //先确定按键标志为单击 +// key.lastState = KEY_Up; +// //判断是否为长按 +// while ((tls_gpio_read(gpio_pin) == KEY_Up)&&(j--)) +// { +// //printf("j = %d\r\n", j); +// if (j == 1) +// { +// KEY3.KEY_Flag = Press; //按键标志为长按 +// KEY3.KEY_LastState = KEY_Up; +// break; +// } +// delay_ms(50); +// } +// //在确定标志已经为单击的前提下,判断是否为双击 +// if (KEY3.KEY_Flag == Click) +// { +// while (i--) +// { +// if ((tls_gpio_read(gpio_pin) == KEY_Up)) +// { +// KEY3.KEY_Flag = Dbl_Click; +// KEY3.KEY_LastState = KEY_Up; +// while (tls_gpio_read(gpio_pin) == KEY_Up); +// break; +// } +// delay_ms(50); +// } +// } +// //在确定标志为已经为双击的前提下,判断是否为三击 +// if (KEY3.KEY_Flag == Dbl_Click) +// { +// while (i--) +// { +// if (tls_gpio_read(gpio_pin) == KEY_Up) +// { +// KEY3.KEY_Flag = Tri_Click; +// KEY3.KEY_LastState = KEY_Up; +// while (tls_gpio_read(gpio_pin) == KEY_Up); +// break; +// } +// delay_ms(50); +// } +// } +// } +// //将按键置为松开状态,以供下一次检测 +// if (tls_gpio_read(gpio_pin) == KEY_Down) +// { +// KEY3.KEY_LastState = KEY_Down; +// } +// return KEY3.KEY_Flag; +//} diff --git a/deviceservice.h b/deviceservice.h new file mode 100644 index 0000000..309e6c1 --- /dev/null +++ b/deviceservice.h @@ -0,0 +1,45 @@ +#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 GPIO_PIN_SET +#define KEY_Down GPIO_PIN_RESET + +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: + +public slots: + void ledSet(int status); + quint8 keyReadOnce(); + //quint8 keyDetection(); +}; + +#endif // DEVICESERVICE_H diff --git a/main.cpp b/main.cpp index d5f10a2..7b9b052 100644 --- a/main.cpp +++ b/main.cpp @@ -4,6 +4,7 @@ #include "httpservice.h" #include "websocketservice.h" #include "patientemergencyinfo.h" +#include "deviceservice.h" int main(int argc, char *argv[]) { @@ -20,6 +21,9 @@ int main(int argc, char *argv[]) WebsocketService websocketService; websocketService.connectToServer(MainConfig::wsUrl); + //初始化DeviceInfo,并自动初始化IO配置 + DeviceService deviceService; + //创建主窗体 MainWidget w; @@ -33,8 +37,8 @@ int main(int argc, char *argv[]) QObject::connect(&w,&MainWidget::statusChanged,&httpService,&HttpService::updateStatus); -// w.show(); - w.showFullScreen(); + w.show(); +// w.showFullScreen(); return a.exec(); } 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..918b687 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"; } } -- 2.47.0.windows.2 From 6674f41e4f0793b7a11e584d88e8e98434df019d Mon Sep 17 00:00:00 2001 From: zhangsan Date: Thu, 21 Oct 2021 14:40:29 +0800 Subject: [PATCH 02/10] test device 1 --- deviceservice.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deviceservice.h b/deviceservice.h index 309e6c1..1bb5e44 100644 --- a/deviceservice.h +++ b/deviceservice.h @@ -2,7 +2,7 @@ #define DEVICESERVICE_H #include -#include +#include typedef enum{ GPIO_PIN_RESET = 0u, -- 2.47.0.windows.2 From 83d87a48fcc440bbae7e906c55eff7a114426d08 Mon Sep 17 00:00:00 2001 From: zhangsan Date: Thu, 21 Oct 2021 14:49:27 +0800 Subject: [PATCH 03/10] =?UTF-8?q?pro=E6=96=87=E4=BB=B6=E4=B8=AD=E5=8E=BB?= =?UTF-8?q?=E9=99=A4=E6=97=A0=E7=94=A8=E6=96=87=E4=BB=B6=EF=BC=8C=E4=BB=A5?= =?UTF-8?q?=E7=BC=A9=E5=87=8F=E7=9B=AE=E6=A0=87=E5=B9=B3=E5=8F=B0=E7=BC=96?= =?UTF-8?q?=E8=AF=91=E6=97=B6=E9=97=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- QCPShow.pro | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/QCPShow.pro b/QCPShow.pro index 387c40d..f4e5a96 100644 --- a/QCPShow.pro +++ b/QCPShow.pro @@ -35,12 +35,12 @@ 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 \ @@ -48,12 +48,12 @@ SOURCES += main.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 \ -- 2.47.0.windows.2 From 4b1452d63b4f276d4324b51bcb829ad76ce3136a Mon Sep 17 00:00:00 2001 From: zhangsan Date: Thu, 21 Oct 2021 14:56:09 +0800 Subject: [PATCH 04/10] =?UTF-8?q?=E4=BF=AE=E6=94=B9qtdebug->qtcore?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- deviceservice.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deviceservice.cpp b/deviceservice.cpp index d33ad08..fe41df2 100644 --- a/deviceservice.cpp +++ b/deviceservice.cpp @@ -2,7 +2,7 @@ #ifdef Q_OS_LINUX #include #else -#include +#include #endif #define WIRING_PIN_LED 4 //GPIO.4 -- 2.47.0.windows.2 From 08ea021c754e0c2042451c1308d43e008ecfde0b Mon Sep 17 00:00:00 2001 From: zhangsan Date: Thu, 21 Oct 2021 15:12:37 +0800 Subject: [PATCH 05/10] =?UTF-8?q?=E4=BF=AE=E6=94=B9qtdebug->qtcore11?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- deviceservice.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deviceservice.cpp b/deviceservice.cpp index fe41df2..3c7626b 100644 --- a/deviceservice.cpp +++ b/deviceservice.cpp @@ -1,8 +1,8 @@ #include "deviceservice.h" +#include #ifdef Q_OS_LINUX #include #else -#include #endif #define WIRING_PIN_LED 4 //GPIO.4 -- 2.47.0.windows.2 From 50c0af4878a9f6f505537b1859820851913ae27f Mon Sep 17 00:00:00 2001 From: zhangsan Date: Thu, 21 Oct 2021 16:15:55 +0800 Subject: [PATCH 06/10] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=8C=89=E9=94=AE?= =?UTF-8?q?=E6=A3=80=E6=B5=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- deviceservice.cpp | 99 ++++++++++++++++------------------------------- deviceservice.h | 7 ++-- main.cpp | 3 ++ mainwidget.cpp | 6 +++ mainwidget.h | 2 + 5 files changed, 49 insertions(+), 68 deletions(-) diff --git a/deviceservice.cpp b/deviceservice.cpp index 3c7626b..1e106de 100644 --- a/deviceservice.cpp +++ b/deviceservice.cpp @@ -7,11 +7,12 @@ #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 = None; + key.lastState = KEY_Up; m_ledStatus = 0; m_keyStatus = 0; @@ -33,13 +34,19 @@ DeviceService::DeviceService(QObject *parent) : QObject(parent) ledSet(m_ledStatus); }); - timer2.setInterval(10); + timer2.setInterval(50); timer2.start(); connect(&timer2,&QTimer::timeout,[=](){ - quint8 keyStatus = keyReadOnce(); - if(keyStatus != m_keyStatus){ - m_keyStatus = keyStatus; - qDebug() << "m_keyStatus " << m_keyStatus; +// 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(); + } } }); } @@ -53,6 +60,11 @@ void DeviceService::ledSet(int status) #endif } +/** + * @brief DeviceService::keyReadOnce + * 按键按下返回0,按键弹起返回1 + * @return + */ quint8 DeviceService::keyReadOnce() { #ifdef Q_OS_LINUX @@ -63,62 +75,19 @@ quint8 DeviceService::keyReadOnce() #endif } -//quint8 DeviceService::keyDetection() -//{ -// key.flag = None; //清空按键标志 -// if ((keyReadOnce() == KEY_Up) && (key.lastState == KEY_Down)) -// { -// uint16_t i = Click_Overtime; -// uint16_t j = Press_Overtime; -// key.flag = Click; //先确定按键标志为单击 -// key.lastState = KEY_Up; -// //判断是否为长按 -// while ((tls_gpio_read(gpio_pin) == KEY_Up)&&(j--)) -// { -// //printf("j = %d\r\n", j); -// if (j == 1) -// { -// KEY3.KEY_Flag = Press; //按键标志为长按 -// KEY3.KEY_LastState = KEY_Up; -// break; -// } -// delay_ms(50); -// } -// //在确定标志已经为单击的前提下,判断是否为双击 -// if (KEY3.KEY_Flag == Click) -// { -// while (i--) -// { -// if ((tls_gpio_read(gpio_pin) == KEY_Up)) -// { -// KEY3.KEY_Flag = Dbl_Click; -// KEY3.KEY_LastState = KEY_Up; -// while (tls_gpio_read(gpio_pin) == KEY_Up); -// break; -// } -// delay_ms(50); -// } -// } -// //在确定标志为已经为双击的前提下,判断是否为三击 -// if (KEY3.KEY_Flag == Dbl_Click) -// { -// while (i--) -// { -// if (tls_gpio_read(gpio_pin) == KEY_Up) -// { -// KEY3.KEY_Flag = Tri_Click; -// KEY3.KEY_LastState = KEY_Up; -// while (tls_gpio_read(gpio_pin) == KEY_Up); -// break; -// } -// delay_ms(50); -// } -// } -// } -// //将按键置为松开状态,以供下一次检测 -// if (tls_gpio_read(gpio_pin) == KEY_Down) -// { -// KEY3.KEY_LastState = KEY_Down; -// } -// return KEY3.KEY_Flag; -//} +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 index 1bb5e44..f22a343 100644 --- a/deviceservice.h +++ b/deviceservice.h @@ -17,8 +17,8 @@ typedef enum{ Press = (uint8_t)4, }KeyFlag; -#define KEY_Up GPIO_PIN_SET -#define KEY_Down GPIO_PIN_RESET +#define KEY_Up 1 +#define KEY_Down 0 typedef struct{ KeyFlag flag; @@ -35,11 +35,12 @@ private: int m_ledStatus,m_keyStatus; QTimer timer1,timer2; signals: + void keyClicked(); public slots: void ledSet(int status); quint8 keyReadOnce(); - //quint8 keyDetection(); + quint8 keyDetection(); }; #endif // DEVICESERVICE_H diff --git a/main.cpp b/main.cpp index 7b9b052..12a257f 100644 --- a/main.cpp +++ b/main.cpp @@ -34,9 +34,12 @@ int main(int argc, char *argv[]) &w,&MainWidget::onNewPatientMergencyInfo); QObject::connect(&websocketService,&WebsocketService::patientMergencyStatusChanged, &w,&MainWidget::onPatientMergencyStatusChanged); + QObject::connect(&deviceService,&DeviceService::keyClicked, + &w,&MainWidget::onKeyClicked); QObject::connect(&w,&MainWidget::statusChanged,&httpService,&HttpService::updateStatus); + w.show(); // w.showFullScreen(); diff --git a/mainwidget.cpp b/mainwidget.cpp index 08a9305..49067f5 100644 --- a/mainwidget.cpp +++ b/mainwidget.cpp @@ -181,6 +181,12 @@ void MainWidget::onPatientMergencyStatusChanged(QString firstAidId,QString time, } } +void MainWidget::onKeyClicked() +{ +// emit onKeyStart(); + qDebug() << "Key Clicked"; +} + void MainWidget::addPatientToList(PatientEmergencyInfo *info) { //1.如果有就删除,以保证同一个病人按两次应该重新开始计时 diff --git a/mainwidget.h b/mainwidget.h index 4c7e2a2..b9e472b 100644 --- a/mainwidget.h +++ b/mainwidget.h @@ -41,6 +41,8 @@ public slots: void deletePatientFromList(QString firstAidId); void lableScrollDisplay(); + void onKeyClicked(); + signals: void statusChanged(QString firstAidId,QString status); }; -- 2.47.0.windows.2 From 8d970ecff49fc7ea5a4ad1f47ee96c62391300ae Mon Sep 17 00:00:00 2001 From: zhangsan Date: Thu, 21 Oct 2021 17:19:25 +0800 Subject: [PATCH 07/10] =?UTF-8?q?2=E4=B8=AAapi=E6=B5=8B=E8=AF=95=E5=AE=8C?= =?UTF-8?q?=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- QCPShow.pro | 2 +- QCPShow.pro.user | 26 +++++++++++++------------- api.http | 47 +++++++++++++++++++++++++++++++++++++++++++++++ deviceservice.cpp | 4 ++-- httpservice.cpp | 14 +++++++++----- httpservice.h | 1 + main.cpp | 2 +- mainconfig.cpp | 2 +- mainwidget.cpp | 36 ++++++++++++++++++++++++------------ mainwidget.h | 4 ++++ resttest | 9 --------- 11 files changed, 103 insertions(+), 44 deletions(-) create mode 100644 api.http delete mode 100644 resttest diff --git a/QCPShow.pro b/QCPShow.pro index f4e5a96..cd4bef4 100644 --- a/QCPShow.pro +++ b/QCPShow.pro @@ -68,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 index 1e106de..3d9eb7f 100644 --- a/deviceservice.cpp +++ b/deviceservice.cpp @@ -70,8 +70,8 @@ quint8 DeviceService::keyReadOnce() #ifdef Q_OS_LINUX return digitalRead(WIRING_PIN_KEY); #else - qDebug() << "keyReadOnce()"; - return 0; + //qDebug() << "keyReadOnce()"; + return KEY_Up; #endif } 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 12a257f..88eed3c 100644 --- a/main.cpp +++ b/main.cpp @@ -38,7 +38,7 @@ int main(int argc, char *argv[]) &w,&MainWidget::onKeyClicked); QObject::connect(&w,&MainWidget::statusChanged,&httpService,&HttpService::updateStatus); - + QObject::connect(&w,&MainWidget::complexOneKeyStart,&httpService,&HttpService::onComplexOneKeyStart); w.show(); // w.showFullScreen(); 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 49067f5..bf3d57e 100644 --- a/mainwidget.cpp +++ b/mainwidget.cpp @@ -3,6 +3,8 @@ #include #include "mainconfig.h" +#define FIXEDIDCARD "" + MainWidget::MainWidget(QWidget *parent) : QWidget(parent), ui(new Ui::MainWidget) @@ -48,9 +50,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 +69,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{ @@ -98,7 +100,7 @@ void MainWidget::updateUi() int hour,min,sec,nTotalSecs; nTotalSecs = pInfo->realCountDownInSeconds; sec = nTotalSecs % 60; -// min = nTotalSecs / 60 % 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')); @@ -110,7 +112,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 +123,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 +139,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; @@ -183,7 +185,7 @@ void MainWidget::onPatientMergencyStatusChanged(QString firstAidId,QString time, void MainWidget::onKeyClicked() { -// emit onKeyStart(); + emit complexOneKeyStart("142733198703123918","彭于晏","1","汉族"); qDebug() << "Key Clicked"; } @@ -212,3 +214,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 b9e472b..9166d9b 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; @@ -45,6 +46,9 @@ public slots: 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/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" -} -- 2.47.0.windows.2 From 778b39fb5201f2e02e9d6fa268da6bf7a21fc30b Mon Sep 17 00:00:00 2001 From: zhangsan Date: Thu, 21 Oct 2021 17:35:00 +0800 Subject: [PATCH 08/10] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E8=BD=AE=E6=92=AD?= =?UTF-8?q?=E6=82=A3=E8=80=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mainwidget.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/mainwidget.cpp b/mainwidget.cpp index bf3d57e..d3230b4 100644 --- a/mainwidget.cpp +++ b/mainwidget.cpp @@ -3,7 +3,9 @@ #include #include "mainconfig.h" -#define FIXEDIDCARD "" +#define NAMELIST_LENGTH 4 +QString namelist[] = {"传立春","传立夏","传立秋","传立冬"}; +qint8 gindex = 0; MainWidget::MainWidget(QWidget *parent) : QWidget(parent), @@ -185,8 +187,12 @@ void MainWidget::onPatientMergencyStatusChanged(QString firstAidId,QString time, void MainWidget::onKeyClicked() { - emit complexOneKeyStart("142733198703123918","彭于晏","1","汉族"); + emit complexOneKeyStart("142733198703123918",::namelist[::gindex],"1","汉族"); qDebug() << "Key Clicked"; + + if(++::gindex >= NAMELIST_LENGTH){ + ::gindex = 0; + } } void MainWidget::addPatientToList(PatientEmergencyInfo *info) -- 2.47.0.windows.2 From c639eb632e09cd00063351e272d629ab45b78f37 Mon Sep 17 00:00:00 2001 From: zhangsan Date: Thu, 21 Oct 2021 18:01:10 +0800 Subject: [PATCH 09/10] =?UTF-8?q?=E6=8E=A8=E9=80=81=E6=B6=88=E6=81=AF?= =?UTF-8?q?=E4=B8=AD=E6=B2=A1=E6=9C=89=E5=80=92=E8=AE=A1=E6=97=B6=E4=B8=8D?= =?UTF-8?q?=E6=98=BE=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mainwidget.cpp | 21 +++++++++++++-------- mainwidget.h | 2 +- patientemergencyinfo.h | 2 +- websocketservice.cpp | 2 +- websocketservice.h | 2 +- 5 files changed, 17 insertions(+), 12 deletions(-) diff --git a/mainwidget.cpp b/mainwidget.cpp index d3230b4..1550075 100644 --- a/mainwidget.cpp +++ b/mainwidget.cpp @@ -99,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); } @@ -156,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); diff --git a/mainwidget.h b/mainwidget.h index 9166d9b..b1f6511 100644 --- a/mainwidget.h +++ b/mainwidget.h @@ -36,7 +36,7 @@ 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); 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/websocketservice.cpp b/websocketservice.cpp index 918b687..1970982 100644 --- a/websocketservice.cpp +++ b/websocketservice.cpp @@ -120,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(); -- 2.47.0.windows.2 From a6a4b26e2695b84f8846c22d4c3b32dad36bd77f Mon Sep 17 00:00:00 2001 From: zhangsan Date: Thu, 21 Oct 2021 18:49:47 +0800 Subject: [PATCH 10/10] =?UTF-8?q?=E7=A8=8B=E5=BA=8F=E5=90=AF=E5=8A=A8?= =?UTF-8?q?=E5=88=87=E6=8D=A2=E5=88=B0=E5=8F=AF=E6=89=A7=E8=A1=8C=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E6=89=80=E5=9C=A8=E7=9B=AE=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main.cpp | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/main.cpp b/main.cpp index 88eed3c..64ae1ad 100644 --- a/main.cpp +++ b/main.cpp @@ -10,6 +10,9 @@ int main(int argc, char *argv[]) { QApplication a(argc, argv); + //切换当前工作目录 + QDir::setCurrent(QCoreApplication::applicationDirPath()); + //初始化配置文件 MainConfig::initConfig(); @@ -29,19 +32,19 @@ int main(int argc, char *argv[]) //绑定信号与槽 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); + &w,&MainWidget::onKeyClicked); QObject::connect(&w,&MainWidget::statusChanged,&httpService,&HttpService::updateStatus); QObject::connect(&w,&MainWidget::complexOneKeyStart,&httpService,&HttpService::onComplexOneKeyStart); w.show(); -// w.showFullScreen(); + // w.showFullScreen(); return a.exec(); } -- 2.47.0.windows.2