From 0ddeb26c35cdd897861ba2656df64dbdb9ae8339 Mon Sep 17 00:00:00 2001 From: JiXieShi Date: Sat, 22 Jun 2024 23:06:40 +0800 Subject: [PATCH] =?UTF-8?q?UP=20=E6=A8=A1=E6=8B=9F=E5=99=A8=20OLED+KEY?= =?UTF-8?q?=E6=B7=B7=E5=90=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- demo/key/test.c | 14 +++++------ demo/oled/test.c | 65 ++++++++++++++++++++++++++++++++++++++++++++++-- main.c | 3 +-- sim/key/key.cpp | 2 +- 4 files changed, 72 insertions(+), 12 deletions(-) diff --git a/demo/key/test.c b/demo/key/test.c index 90cef24..0b4cba0 100644 --- a/demo/key/test.c +++ b/demo/key/test.c @@ -15,25 +15,25 @@ uint8_t Key_Pin(uint8_t l) { void Key_Call(Key_t *key) { switch (key->event) { case KEY_PRESS_DOWN: - LOGT("KEY", "ID:%d EVENT:%s", key->key_id, "按下事件"); + LOGT("KEY", "ID:%d EVENT:%s", key->key_id, "PressTheEvent"); break;// 按下事件 case KEY_PRESS_UP: - LOGT("KEY", "ID:%d EVENT:%s", key->key_id, "弹起事件"); + LOGT("KEY", "ID:%d EVENT:%s", key->key_id, "BounceIncident"); break;// 弹起事件 case KEY_PRESS_REPEAT: - LOGT("KEY", "ID:%d EVENT:%s", key->key_id, "重复按下事件"); + LOGT("KEY", "ID:%d EVENT:%s", key->key_id, "RepeatThePressEvent"); break;// 重复按下事件 case KEY_SINGLE_CLICK: - LOGT("KEY", "ID:%d EVENT:%s", key->key_id, "单击事件"); + LOGT("KEY", "ID:%d EVENT:%s", key->key_id, "ClickEvent"); break;// 单击事件 case KEY_DOUBLE_CLICK: - LOGT("KEY", "ID:%d EVENT:%s", key->key_id, "双击事件"); + LOGT("KEY", "ID:%d EVENT:%s", key->key_id, "DoubleClickTheEvent"); break;// 双击事件 case KEY_LONG_PRESS_START: - LOGT("KEY", "ID:%d EVENT:%s", key->key_id, "长按开始事件"); + LOGT("KEY", "ID:%d EVENT:%s", key->key_id, "LongPressToStartTheEvent"); break;// 长按开始事件 case KEY_LONG_PRESS_HOLD: - LOGT("KEY", "ID:%d EVENT:%s", key->key_id, "长按保持事件"); + LOGT("KEY", "ID:%d EVENT:%s", key->key_id, "LongPressToHoldTheEvent"); break;// 长按保持事件 } } diff --git a/demo/oled/test.c b/demo/oled/test.c index 8010975..c4d34ca 100644 --- a/demo/oled/test.c +++ b/demo/oled/test.c @@ -5,7 +5,9 @@ #include "t_oled.h" #include "sim_oled.h" #include - +#include +#include "key.h" +#include "sim_key.h" uint8_t Cmd(uint8_t *data, size_t l) { // Buf_Print("Cmd", data, l, 16); } @@ -22,6 +24,65 @@ void Refresh_Call(OLED_T *dev) { uint8_t oledbuf[8][128] = {0}; +void Key_Call_E(Key_t *key) { + switch (key->event) { + case KEY_PRESS_DOWN: + LOGT("KEY", "ID:%d EVENT:%s", key->key_id, "PressTheEvent"); + break;// 按下事件 + case KEY_PRESS_UP: + LOGT("KEY", "ID:%d EVENT:%s", key->key_id, "BounceIncident"); + break;// 弹起事件 + case KEY_PRESS_REPEAT: + LOGT("KEY", "ID:%d EVENT:%s", key->key_id, "RepeatThePressEvent"); + break;// 重复按下事件 + case KEY_SINGLE_CLICK: + LOGT("KEY", "ID:%d EVENT:%s", key->key_id, "ClickEvent"); + break;// 单击事件 + case KEY_DOUBLE_CLICK: + LOGT("KEY", "ID:%d EVENT:%s", key->key_id, "DoubleClickTheEvent"); + break;// 双击事件 + case KEY_LONG_PRESS_START: + LOGT("KEY", "ID:%d EVENT:%s", key->key_id, "LongPressToStartTheEvent"); + break;// 长按开始事件 + case KEY_LONG_PRESS_HOLD: + LOGT("KEY", "ID:%d EVENT:%s", key->key_id, "LongPressToHoldTheEvent"); + break;// 长按保持事件 + } +} + +void Get_Key(void *pVoid) { + Key_t k1, k2, k3, k4, k5, k6, k7; + key_init(&k1, SIM_Key_UP, 1, SIM_KEY_UP); + key_init(&k2, SIM_Key_DOWN, 1, SIM_KEY_DOWN); + key_init(&k3, SIM_Key_LEFT, 1, SIM_KEY_LEFT); + key_init(&k4, SIM_Key_RIGHT, 1, SIM_KEY_RIGHT); + key_init(&k5, SIM_Key_ENABLE, 1, SIM_KEY_ENABLE); + key_init(&k6, SIM_Key_SET, 1, SIM_KEY_SET); + key_init(&k7, SIM_Key_RESET, 1, SIM_KEY_RESET); + + key_attach(&k1, KEY_ALL_EVENT, Key_Call_E); + key_attach(&k2, KEY_ALL_EVENT, Key_Call_E); + key_attach(&k3, KEY_ALL_EVENT, Key_Call_E); + key_attach(&k4, KEY_ALL_EVENT, Key_Call_E); + key_attach(&k5, KEY_ALL_EVENT, Key_Call_E); + key_attach(&k6, KEY_ALL_EVENT, Key_Call_E); + key_attach(&k7, KEY_ALL_EVENT, Key_Call_E); + + key_start(&k1); + key_start(&k2); + key_start(&k3); + key_start(&k4); + key_start(&k5); + key_start(&k6); + key_start(&k7); + while (1) { + // 每5ms调用一次key_ticks函数 + key_ticks(); + Sleep(5); + } + _endthread(); +} + void Test_OLED() { SIM_OLED_INIT(128, 64, CYAN, 0x0, 5, 0); OLED_T oled = { @@ -43,7 +104,7 @@ void Test_OLED() { SIM_OLED_START(); int s = 0; char buf[30]; - + _beginthread(Get_Key, 0, NULL); while (1) { sprintf(buf, "DATA:%d", s); OLED_ShowString(&oled, 2, 51, buf, 12); diff --git a/main.c b/main.c index b19ff50..271bbd3 100644 --- a/main.c +++ b/main.c @@ -11,7 +11,7 @@ #include "tool.h" #include #include -#include + int main() { srand((unsigned) time(NULL)); // int i = 1; @@ -25,7 +25,6 @@ int main() { // Test_RunTime("ArgPase", Test_argpase); // Test_RunTime("List", Test_List); // Test_RunTime("Key", Test_Key); - // Test_RunTime("Queue", Test_Queue); // Test_RunTime("Task", Test_task); Test_RunTime("OLED", Test_OLED); diff --git a/sim/key/key.cpp b/sim/key/key.cpp index 7b4f9e5..a747eb8 100644 --- a/sim/key/key.cpp +++ b/sim/key/key.cpp @@ -78,6 +78,6 @@ uint8_t SIM_Key_SET(uint8_t) { return GetAsyncKeyState(VK_RSHIFT); } -uint8_t SIM_SIM_Key_RESET(uint8_t) { +uint8_t SIM_Key_RESET(uint8_t) { return GetAsyncKeyState(VK_END); } \ No newline at end of file