|
@ -7,11 +7,12 @@ |
|
|
|
|
|
|
|
|
#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 |
|
|
|
|
|
|
|
|
DeviceService::DeviceService(QObject *parent) : QObject(parent) |
|
|
DeviceService::DeviceService(QObject *parent) : QObject(parent) |
|
|
{ |
|
|
{ |
|
|
key.flag = None; |
|
|
key.flag = None; |
|
|
key.lastState = None; |
|
|
key.lastState = KEY_Up; |
|
|
m_ledStatus = 0; |
|
|
m_ledStatus = 0; |
|
|
m_keyStatus = 0; |
|
|
m_keyStatus = 0; |
|
|
|
|
|
|
|
@ -33,13 +34,19 @@ DeviceService::DeviceService(QObject *parent) : QObject(parent) |
|
|
ledSet(m_ledStatus); |
|
|
ledSet(m_ledStatus); |
|
|
}); |
|
|
}); |
|
|
|
|
|
|
|
|
timer2.setInterval(10); |
|
|
timer2.setInterval(50); |
|
|
timer2.start(); |
|
|
timer2.start(); |
|
|
connect(&timer2,&QTimer::timeout,[=](){ |
|
|
connect(&timer2,&QTimer::timeout,[=](){ |
|
|
quint8 keyStatus = keyReadOnce(); |
|
|
// quint8 keyStatus = keyReadOnce();
|
|
|
if(keyStatus != m_keyStatus){ |
|
|
// if(keyStatus != m_keyStatus){
|
|
|
m_keyStatus = keyStatus; |
|
|
// m_keyStatus = keyStatus;
|
|
|
qDebug() << "m_keyStatus " << m_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 |
|
|
#endif |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* @brief DeviceService::keyReadOnce |
|
|
|
|
|
* 按键按下返回0,按键弹起返回1 |
|
|
|
|
|
* @return |
|
|
|
|
|
*/ |
|
|
quint8 DeviceService::keyReadOnce() |
|
|
quint8 DeviceService::keyReadOnce() |
|
|
{ |
|
|
{ |
|
|
#ifdef Q_OS_LINUX |
|
|
#ifdef Q_OS_LINUX |
|
@ -63,62 +75,19 @@ quint8 DeviceService::keyReadOnce() |
|
|
#endif |
|
|
#endif |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
//quint8 DeviceService::keyDetection()
|
|
|
quint8 DeviceService::keyDetection() |
|
|
//{
|
|
|
{ |
|
|
// key.flag = None; //清空按键标志
|
|
|
key.flag = None; //清空按键标志
|
|
|
// if ((keyReadOnce() == KEY_Up) && (key.lastState == KEY_Down))
|
|
|
quint8 status = keyReadOnce(); |
|
|
// {
|
|
|
if ((status == KEY_Down) && (key.lastState == KEY_Up)) |
|
|
// uint16_t i = Click_Overtime;
|
|
|
{ |
|
|
// uint16_t j = Press_Overtime;
|
|
|
uint16_t i = Click_Overtime; |
|
|
// key.flag = Click; //先确定按键标志为单击
|
|
|
while(i--); |
|
|
// key.lastState = KEY_Up;
|
|
|
status = keyReadOnce(); |
|
|
// //判断是否为长按
|
|
|
if(status == KEY_Down){ |
|
|
// while ((tls_gpio_read(gpio_pin) == KEY_Up)&&(j--))
|
|
|
key.flag = Click; //先确定按键标志为单击
|
|
|
// {
|
|
|
} |
|
|
// //printf("j = %d\r\n", j);
|
|
|
} |
|
|
// if (j == 1)
|
|
|
key.lastState = status; |
|
|
// {
|
|
|
return key.flag; |
|
|
// 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;
|
|
|
|
|
|
//}
|
|
|
|
|
|