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"?>
<!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>
<data>
<variable>EnvironmentId</variable>

80
deviceservice.cpp

@ -8,16 +8,16 @@
#define WIRING_PIN_LED 4 //GPIO.4
#define WIRING_PIN_KEY 3 //GPIO.3
#define Click_Overtime 50
#define Press_Overtime 150
#define Press_Overtime 1500
#define DblClick_Difftime 800
DeviceService::DeviceService(QObject *parent) : QObject(parent)
{
key.flag = None;
key.lastFlag = None;
key.lastState = KEY_Up;
key.state = KEY_Up;
m_ledStatus = 0;
m_keyStatus = 0;
lastStateTime = QTime::currentTime();
#ifdef Q_OS_LINUX
wiringPiSetup();
@ -54,11 +54,7 @@ DeviceService::DeviceService(QObject *parent) : QObject(parent)
// emit keyClicked();
// }
// }
key.flag = (KeyFlag)keyDetection();
if(key.flag != None){
emit keyWorked(key.flag);
qDebug()<<"keyWorked is "<<key.flag;
}
keyDetection();
});
}
@ -104,63 +100,63 @@ quint8 DeviceService::keyDetection()
return key.flag;
#else
key.flag = None; //清空按键标志(行为)
KeyFlag flag = None; //清空按键标志(行为)
//获取当前按键状态
quint8 status = getbtnstatus();//获取当前按键状态********注意替换为防抖后的按键函数getbtnstatus()
// quint8 status = getbtnstatus();//获取当前按键状态********注意替换为防抖后的按键函数getbtnstatus()
quint8 status = keyReadOnce();
//判定标志行为
if(status == KEY_Up)
{
if(key.lastState == KEY_Up)
{
//无意义
}else if(key.lastState == KEY_Down)
if(key.state == KEY_Down)
{
int difftime = QTime::currentTime().secsTo(lastStateTime);
int difftime = lastStateTime.msecsTo(QTime::currentTime());
if(difftime >= Press_Overtime)
{
key.flag = Press;
flag = Press;
}else if(difftime >= Click_Overtime)
{
key.flag = Click;
}else
{
//按键时间过短,无效
flag = Click;
}
}else
{
}
}
//判定组合行为
if(key.flag != None)
{
if(key.flag == Click)
{
if(key.lastFlag == Click && (QTime::currentTime().secsTo(lastFlagTime)) >= DblClick_Difftime)
{
key.flag = Dbl_Click;
}else if(key.lastFlag == Dbl_Click && (QTime::currentTime().secsTo(lastFlagTime)) >= DblClick_Difftime)
{
key.flag = Tri_Click;
}
}
}
// if(flag != None)
// {
// if(flag == Click)
// {
// if(key.flag == Click && (lastFlagTime.msecsTo(QTime::currentTime())) >= DblClick_Difftime)
// {
// flag = Dbl_Click;
// }else if(key.flag == Dbl_Click && (lastFlagTime.msecsTo(QTime::currentTime())) >= DblClick_Difftime)
// {
// flag = Tri_Click;
// }
// }
// }
if(key.flag != key.lastFlag)
//记录上一行为及时间
if(flag != key.flag)
{
key.lastFlag = key.flag;
key.flag = flag;
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();
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{
KeyFlag flag;
KeyFlag lastFlag;
quint8 lastState;
quint8 state;
}KeyType;
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"))
{
qDebug() << QString::fromUtf8("sendIdcardInfo请求失败");
qDebug() << jdoc;
return;
}
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::complexOneKeyStart,&httpService,&HttpService::onComplexOneKeyStart);
// w.show();
w.showFullScreen();
w.show();
// w.showFullScreen();
return a.exec();
}

Loading…
Cancel
Save