Browse Source

按键单击调试

master
Bai 4 years ago
parent
commit
53220a3819
  1. 2
      QCPShow.pro.user
  2. 80
      deviceservice.cpp
  3. 3
      deviceservice.h
  4. 1
      httpservice.cpp
  5. 4
      main.cpp

2
QCPShow.pro.user

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE QtCreatorProject> <!DOCTYPE QtCreatorProject>
<!-- Written by QtCreator 4.2.1, 2021-11-21T23:21:14. --> <!-- Written by QtCreator 4.2.1, 2021-11-26T18:49:47. -->
<qtcreator> <qtcreator>
<data> <data>
<variable>EnvironmentId</variable> <variable>EnvironmentId</variable>

80
deviceservice.cpp

@ -8,16 +8,16 @@
#define WIRING_PIN_LED 4 //GPIO.4 #define WIRING_PIN_LED 4 //GPIO.4
#define WIRING_PIN_KEY 3 //GPIO.3 #define WIRING_PIN_KEY 3 //GPIO.3
#define Click_Overtime 50 #define Click_Overtime 50
#define Press_Overtime 150 #define Press_Overtime 1500
#define DblClick_Difftime 800 #define DblClick_Difftime 800
DeviceService::DeviceService(QObject *parent) : QObject(parent) DeviceService::DeviceService(QObject *parent) : QObject(parent)
{ {
key.flag = None; key.flag = None;
key.lastFlag = None; key.state = KEY_Up;
key.lastState = KEY_Up;
m_ledStatus = 0; m_ledStatus = 0;
m_keyStatus = 0; m_keyStatus = 0;
lastStateTime = QTime::currentTime();
#ifdef Q_OS_LINUX #ifdef Q_OS_LINUX
wiringPiSetup(); wiringPiSetup();
@ -54,11 +54,7 @@ DeviceService::DeviceService(QObject *parent) : QObject(parent)
// emit keyClicked(); // emit keyClicked();
// } // }
// } // }
key.flag = (KeyFlag)keyDetection(); keyDetection();
if(key.flag != None){
emit keyWorked(key.flag);
qDebug()<<"keyWorked is "<<key.flag;
}
}); });
} }
@ -104,63 +100,63 @@ quint8 DeviceService::keyDetection()
return key.flag; return key.flag;
#else #else
key.flag = None; //清空按键标志(行为) KeyFlag flag = None; //清空按键标志(行为)
//获取当前按键状态 //获取当前按键状态
quint8 status = getbtnstatus();//获取当前按键状态********注意替换为防抖后的按键函数getbtnstatus() // quint8 status = getbtnstatus();//获取当前按键状态********注意替换为防抖后的按键函数getbtnstatus()
quint8 status = keyReadOnce();
//判定标志行为 //判定标志行为
if(status == KEY_Up) if(status == KEY_Up)
{ {
if(key.lastState == KEY_Up) if(key.state == KEY_Down)
{
//无意义
}else if(key.lastState == KEY_Down)
{ {
int difftime = QTime::currentTime().secsTo(lastStateTime); int difftime = lastStateTime.msecsTo(QTime::currentTime());
if(difftime >= Press_Overtime) if(difftime >= Press_Overtime)
{ {
key.flag = Press; flag = Press;
}else if(difftime >= Click_Overtime) }else if(difftime >= Click_Overtime)
{ {
key.flag = Click; flag = Click;
}else
{
//按键时间过短,无效
} }
}else
{
} }
} }
//判定组合行为 //判定组合行为
if(key.flag != None) // if(flag != None)
{ // {
if(key.flag == Click) // if(flag == Click)
{ // {
if(key.lastFlag == Click && (QTime::currentTime().secsTo(lastFlagTime)) >= DblClick_Difftime) // if(key.flag == Click && (lastFlagTime.msecsTo(QTime::currentTime())) >= DblClick_Difftime)
{ // {
key.flag = Dbl_Click; // flag = Dbl_Click;
}else if(key.lastFlag == Dbl_Click && (QTime::currentTime().secsTo(lastFlagTime)) >= DblClick_Difftime) // }else if(key.flag == Dbl_Click && (lastFlagTime.msecsTo(QTime::currentTime())) >= DblClick_Difftime)
{ // {
key.flag = Tri_Click; // flag = Tri_Click;
} // }
} // }
} // }
if(key.flag != key.lastFlag) //记录上一行为及时间
if(flag != key.flag)
{ {
key.lastFlag = key.flag; key.flag = flag;
lastFlagTime = QTime::currentTime(); lastFlagTime = QTime::currentTime();
if(key.flag != None){
// emit keyWorked(key.flag);
qDebug() << "keyWorked = " << key.flag;
}
} }
if(status != key.lastState)
//记录按键按下时间
if(status != key.state)
{ {
key.lastState = status; key.state = status;
lastStateTime = QTime::currentTime(); lastStateTime = QTime::currentTime();
if(status == KEY_Down) if(key.state != KEY_Up)
{ {
emit keyDown();//发送至mainwidget,用于记录按下时操作的患者是哪个 // emit keyDown();//发送至mainwidget,用于记录按下时操作的患者是哪个
qDebug() << "key.state = " << key.state;
} }
} }

3
deviceservice.h

@ -23,8 +23,7 @@ typedef enum{
typedef struct{ typedef struct{
KeyFlag flag; KeyFlag flag;
KeyFlag lastFlag; quint8 state;
quint8 lastState;
}KeyType; }KeyType;
class DeviceService : public QObject class DeviceService : public QObject

1
httpservice.cpp

@ -181,6 +181,7 @@ void HttpService::sendIdcardInfo(QString idcard,QString name, QString sex, QStri
if (jerror.error != QJsonParseError::NoError || !jdoc.isObject() || !jdoc.object().contains("code")) if (jerror.error != QJsonParseError::NoError || !jdoc.isObject() || !jdoc.object().contains("code"))
{ {
qDebug() << QString::fromUtf8("sendIdcardInfo请求失败"); qDebug() << QString::fromUtf8("sendIdcardInfo请求失败");
qDebug() << jdoc;
return; return;
} }
jobj = jdoc.object(); jobj = jdoc.object();

4
main.cpp

@ -47,8 +47,8 @@ int main(int argc, char *argv[])
QObject::connect(&w,&MainWidget::statusChanged,&httpService,&HttpService::updateStatus); QObject::connect(&w,&MainWidget::statusChanged,&httpService,&HttpService::updateStatus);
QObject::connect(&w,&MainWidget::complexOneKeyStart,&httpService,&HttpService::onComplexOneKeyStart); QObject::connect(&w,&MainWidget::complexOneKeyStart,&httpService,&HttpService::onComplexOneKeyStart);
// w.show(); w.show();
w.showFullScreen(); // w.showFullScreen();
return a.exec(); return a.exec();
} }

Loading…
Cancel
Save