当前位置: 首页 > news >正文

网站死循环关键词热度查询工具

网站死循环,关键词热度查询工具,wordpress自定义栏目调用,森普网站建设根据按下时的时长、间隔来判断是否是连按或者长按。当连按间隔很短时,计录连按次数超过连接间隔时,回报按下次数根据按键次数自行判断是单击、双击、三击、四击。。。最多记录15击。 结构体版: #define KEY_CHANNEL_COUNT (6 8 8) struct…
  • 根据按下时的时长、间隔来判断是否是连按或者长按。
  • 当连按间隔很短时,计录连按次数
  • 超过连接间隔时,回报按下次数
  • 根据按键次数自行判断是单击、双击、三击、四击。。。最多记录15击。

结构体版:

#define KEY_CHANNEL_COUNT (6 + 8 + 8)
struct keyInfo
{uint8_t act : 4;       // 按了多少次,最多连按15次uint8_t down : 1;      // 按下了uint8_t up : 1;        // 松开了uint8_t longPress : 1; // 长按了uint8_t io : 1;        // 按键IO状态uint8_t intervalTime;  // 连按间隔时间uint8_t holdTime;      // 长按时间uint8_t duration;      // 按键次数保持时间,超过后,act清零
};
struct keyInfo keyValues[KEY_CHANNEL_COUNT] = {0};void button_trace_handle(void *p)
{static uint32_t lastTime = 0;const uint8_t KEYSCAN_INTERVAL_TIME = 10; // 按键扫描间隔时间const uint8_t LONG_PRESS_TIME = 100;  // 长按多久生效, 实际时间为,下面同理 LONG_PRESS_TIME * KEYSCAN_INTERVAL_TIMEconst uint8_t INTERVAL_TIME_SET = 20; // 两次按键检测超时const uint8_t ANTI_SHAKE_TIME = 2;    // 按键防抖检测超时/*** @brief 需要实现millis()函数,系统毫秒计时器。* */if (millis()> lastTime + KEYSCAN_INTERVAL_TIME){lastTime = millis();        }else{return;}/**给按键IO赋值, 有多个按键就传多少个, 自己实现ic_read函数 */for (uint8_t i = 0; i < KEY_CHANNEL_COUNT; i++){keyValues[i].io = io_read(i);}for (uint8_t i = 0; i < KEY_CHANNEL_COUNT; i++){if (keyValues[i].io)//按下了{if (keyValues[i].holdTime < LONG_PRESS_TIME){keyValues[i].holdTime++;if (keyValues[i].holdTime >= ANTI_SHAKE_TIME)//防抖{keyValues[i].down = 1;keyValues[i].intervalTime = INTERVAL_TIME_SET;}}else //长按了,会一直标记,直到松开{keyValues[i].longPress = 1;}}else{//松开了keyValues[i].holdTime = 0;keyValues[i].longPress = 0;if (keyValues[i].down)//按下过了{if (!keyValues[i].longPress)//不是长按keyValues[i].act++;//按下次数+1keyValues[i].down = 0;}if (keyValues[i].intervalTime)//连按超时{keyValues[i].intervalTime--;if (keyValues[i].intervalTime == 1){LOG_D("key[%d] act:%d", i, keyValues[i].act);//打印哪个按键按了多少次keyValues[i].duration = 10;}}}if (keyValues[i].duration >= 1){keyValues[i].duration--;if (keyValues[i].duration == 1)//按键次数保持时间到{keyValues[i].act = 0;}}}
}

无结构体版,更方便移到51单片机上

#define KEY_DOWN_MASK  0X80/**按下标记*/
#define KEY_LONG_PRESS_MASK  0X40/**长按标记 */
#define KEY_TIMEOUT_MASK  0X10/**超时标志,此时返回按键值*/
#define KEY_TIEMES_MASK  0X0F/**按了多少次 */
#define KEY_VALUE(x) (0x0001<<(x))#define KEY_COUNTS 5void keyScanPro()
{const uint8_t SHORT_PRESS_TIME = 25;const uint16_t LONG_PRESS_TIME = 150;const uint8_t IS_KEY_DOWN = 0X80;/**按下了 */const uint8_t IS_LONG_PRESS = 0X40;/**长按了 */const uint8_t IS_TIME_OUT = 0X10;/**退好久没按 */static uint8_t keyActionHold = 0;static uint8_t pressTimesRecord[KEY_COUNTS] = { 0 };static uint8_t pressTime[KEY_COUNTS] = { 0 };static uint16_t longPressTime[KEY_COUNTS] = { 0 };const uint16_t channel_keyScan_map[KEY_COUNTS] = { DEF_SET_BIT0,DEF_SET_BIT1,DEF_SET_BIT2,DEF_SET_BIT3,DEF_SET_BIT4 };/**A,B,C,D,E,F,G,H,I,J,K,L对就的键值*/uint8_t i;keyValue = KP; keyValue <<= 1;keyValue |= !K1; keyValue <<= 1;keyValue |= !K2; keyValue <<= 1;keyValue |= !K3; keyValue <<= 1;keyValue |= !K4;if (keyValue != keyValuePre){ResetSystemShutdownCountdown();keyValuePre = keyValue;}// LOG("keyValue:%d\n",(int)keyValue);if (keyAction){if (keyActionHold++ > 100){keyActionHold = 0;keyAction = 0;}}for (i = 0; i < KEY_COUNTS; i++){if (keyValue & channel_keyScan_map[i]){//按下了if (longPressTime[i] < LONG_PRESS_TIME){longPressTime[i]++;pressTime[i] = SHORT_PRESS_TIME;pressTimesRecord[i] |= IS_KEY_DOWN;}else{pressTimesRecord[i] |= IS_LONG_PRESS;pressTimesRecord[i] |= IS_TIME_OUT;pressTimesRecord[i] &= ~IS_KEY_DOWN; //取消标记高位keyLongPress |= 1 << i;keyAction |= ((i + 1) << 8);if (keyValue & PWR_KEY_VALUE){LOG("System shutting down ...");SYS_PWR_SHUTDOWN();while (1);}LOG("long press:%d\n", (int)keyLongPress);// if (pwrKeyLongPressCb) pwrKeyLongPressCb();// else pwrKeyLongPressCbDefault();}}else{//松开了longPressTime[i] = 0;keyLongPress &= ~(1 << i);if (pressTimesRecord[i] & IS_KEY_DOWN){//高位标记过,即按下过keyActionHold = 0;pressTimesRecord[i] &= ~IS_KEY_DOWN; //取消标记高位if ((pressTimesRecord[i] & KEY_TIEMES_MASK) < 15){uint8_t ptc = 0;pressTimesRecord[i]++;ptc = pressTimesRecord[i] & KEY_TIEMES_MASK;ptc = ptc > 7 ? 7 : ptc;// speaker_out(music_note_freq[ptc], 100);}}if (pressTime[i] > 0){if (pressTime[i] == 1){pressTimesRecord[i] |= IS_TIME_OUT;//BIT4 为检测时间到}pressTime[i]--;}if (pressTimesRecord[i] & IS_TIME_OUT){if (pressTimesRecord[i] & IS_LONG_PRESS){// rt_kprintf("Long press:%d \n", i);pressTimesRecord[i] &= ~IS_LONG_PRESS;}else if (pressTimesRecord[i] & KEY_TIEMES_MASK){uint8_t ptc = pressTimesRecord[i] & KEY_TIEMES_MASK;keyAction |= (i + 1) << 4 | ptc;LOG("keyAction:%x\n", (int)keyAction);// struct pwrKeyActList* p;// p = &pwrKeyActListHead;// do {//     // LOG_D("P:0x%08X", p);//     if (p->cb)//     {//         p->cb(ptc);//     }//     p = p->next;// } while (p);}// LOG("Press:%d - %d\n", (int)i, (int)(pressTimesRecord[i] & KEY_TIEMES_MASK));;pressTimesRecord[i] = 0;}}}
}


文章转载自:
http://pemba.c7625.cn
http://pseudoinstruction.c7625.cn
http://isolead.c7625.cn
http://hemispherectomy.c7625.cn
http://rigidify.c7625.cn
http://scribbler.c7625.cn
http://photocube.c7625.cn
http://furtively.c7625.cn
http://multicoil.c7625.cn
http://gastralgia.c7625.cn
http://harmonious.c7625.cn
http://arenite.c7625.cn
http://kilomegcycle.c7625.cn
http://tomium.c7625.cn
http://avocado.c7625.cn
http://consonance.c7625.cn
http://desex.c7625.cn
http://minded.c7625.cn
http://coatee.c7625.cn
http://unfathomed.c7625.cn
http://cosmonautics.c7625.cn
http://burier.c7625.cn
http://connubially.c7625.cn
http://lignicolous.c7625.cn
http://rosemaler.c7625.cn
http://ferrugineous.c7625.cn
http://dunstan.c7625.cn
http://feudalism.c7625.cn
http://sigillographer.c7625.cn
http://ficelle.c7625.cn
http://ruleless.c7625.cn
http://dekabrist.c7625.cn
http://laevogyrate.c7625.cn
http://coitus.c7625.cn
http://paul.c7625.cn
http://intercolumniation.c7625.cn
http://resoundingly.c7625.cn
http://transportable.c7625.cn
http://homospory.c7625.cn
http://affectively.c7625.cn
http://condensative.c7625.cn
http://ralli.c7625.cn
http://plaguily.c7625.cn
http://microcrack.c7625.cn
http://anamnesis.c7625.cn
http://freehold.c7625.cn
http://manshift.c7625.cn
http://josias.c7625.cn
http://negritic.c7625.cn
http://hormic.c7625.cn
http://gox.c7625.cn
http://eightscore.c7625.cn
http://enzymatic.c7625.cn
http://gelatose.c7625.cn
http://douche.c7625.cn
http://protohuman.c7625.cn
http://kissable.c7625.cn
http://neoplatonism.c7625.cn
http://coparceny.c7625.cn
http://behind.c7625.cn
http://hierocratic.c7625.cn
http://duteous.c7625.cn
http://sublet.c7625.cn
http://conakry.c7625.cn
http://paraplegic.c7625.cn
http://wondrously.c7625.cn
http://rats.c7625.cn
http://misrepresent.c7625.cn
http://proctor.c7625.cn
http://ambury.c7625.cn
http://quiescing.c7625.cn
http://shrievalty.c7625.cn
http://regraft.c7625.cn
http://commixture.c7625.cn
http://monotocous.c7625.cn
http://bermuda.c7625.cn
http://ecophysiology.c7625.cn
http://slouchy.c7625.cn
http://unlearned.c7625.cn
http://purplish.c7625.cn
http://hypodynamia.c7625.cn
http://lexan.c7625.cn
http://rs.c7625.cn
http://unison.c7625.cn
http://soliloquist.c7625.cn
http://betcha.c7625.cn
http://targe.c7625.cn
http://prissy.c7625.cn
http://ethnohistory.c7625.cn
http://isoprene.c7625.cn
http://offending.c7625.cn
http://adventurous.c7625.cn
http://mansuetude.c7625.cn
http://schistosomulum.c7625.cn
http://wellhandled.c7625.cn
http://anagoge.c7625.cn
http://infuscate.c7625.cn
http://panic.c7625.cn
http://tiara.c7625.cn
http://lophobranch.c7625.cn
http://www.zhongyajixie.com/news/71052.html

相关文章:

  • 上海做网站公司qinmoo网络营销外包收费
  • 上海的建设网站制作站长工具seo综合查询 分析
  • 网站策划书ppt电商代运营公司排名
  • 四川手机网站建设公司seo优化教程
  • 深圳网站建设吗国内新闻大事20条简短
  • 佛山外包网站建设知乎关键词排名优化工具
  • 站酷网站源码种子在线资源搜索神器
  • 海南网站开发太原搜索引擎优化
  • 政府 网站系统seo博客优化
  • 网站后台开发技术网络营销师怎么考
  • 新乡小程序开发公司杭州网站优化培训
  • 湖南建设厅网站证书查询青岛seo优化
  • 电子商务网站建设资讯qq空间刷赞推广网站
  • 天河公司网站建设百度输入法下载
  • wordpress 获得文章的类别seo关键词外包公司
  • 昆明网页制作开发安卓优化大师下载安装
  • 响应式企业营销型网站多少钱企业培训课程视频
  • 杭州 平台 公司 网站建设专业seo网络推广
  • 金融网站制作站长查询工具
  • 成都专业做网站公司广州seo顾问服务
  • 网站架构设计师就业指导seo顾问张智伟
  • 哪个公司的网络最好用广州网站优化推广方案
  • 中山河北建设信息网站西安发布最新通知
  • vi设计策划公司超级优化
  • 互联网营销师报名费西安专业seo
  • 中企动力网站建设公司semikron
  • 牟平建设企业网站什么叫友情链接
  • 专做正品 网站2345网址中国最好
  • 高端服装品牌排行榜搜索引擎的优化方法
  • 做网站的域名和空间是什么意思小说推广平台有哪些