收到小伙伴的來(lái)信,怎樣區(qū)分按鈕的短按(按下后松開)與長(zhǎng)按(按下并保持一段時(shí)間)。
說(shuō)實(shí)話,在工業(yè)現(xiàn)場(chǎng),按鈕長(zhǎng)按來(lái)實(shí)現(xiàn)某個(gè)功能使用的并不多。我曾經(jīng)在某個(gè)信號(hào)需要人工確認(rèn)時(shí)使用了長(zhǎng)按功能,當(dāng)時(shí)是結(jié)合定時(shí)器與按鈕的輸入信號(hào)來(lái)實(shí)現(xiàn)的。
要實(shí)現(xiàn)按鈕的短按與長(zhǎng)按的區(qū)分,我提供一種思路供大家參考。
基本思路:
使用沿信號(hào)配合定時(shí)器指令。如果在短時(shí)間內(nèi)檢測(cè)到了該信號(hào)的上升沿及下降沿,則認(rèn)為按鈕是短按狀態(tài);如果在某個(gè)時(shí)間內(nèi)(比如2秒鐘),只檢測(cè)到了該信號(hào)的上升沿而沒有下降沿,則認(rèn)為按鈕是長(zhǎng)按狀態(tài);
結(jié)合這個(gè)思路我使用SCL語(yǔ)言實(shí)現(xiàn)了一個(gè)函數(shù)塊FB5020_BtnClickHold,其變量聲明如下圖所示:
其中:
signal:要檢測(cè)的按鈕信號(hào)(或其它類似信號(hào));
R:用于復(fù)位內(nèi)部變量;
timeCheck:用于檢測(cè)的時(shí)間,默認(rèn)2秒;
click:按鈕是短按狀態(tài);
hold:按鈕是長(zhǎng)按狀態(tài);
注:短按與長(zhǎng)按不會(huì)同時(shí)為TRUE。為保證正確,應(yīng)在獲取信號(hào)后使用R對(duì)內(nèi)部靜態(tài)變量進(jìn)行復(fù)位;
代碼如下圖所示:
這段代碼我已經(jīng)測(cè)試過(guò),如果你有任何問(wèn)題或其它思路,歡迎留言交流。
審核編輯:劉清
-
定時(shí)器
+關(guān)注
關(guān)注
23文章
3300瀏覽量
119031 -
SCL
+關(guān)注
關(guān)注
1文章
243瀏覽量
17562
原文標(biāo)題:西門子SCL編程實(shí)例——按鈕的短按與長(zhǎng)按
文章出處:【微信號(hào):方正智芯,微信公眾號(hào):方正智芯】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
stm32的按鍵是如何去實(shí)現(xiàn)長(zhǎng)按及其短按的
如何通過(guò)外部中斷實(shí)現(xiàn)按鍵的長(zhǎng)按與短按
實(shí)現(xiàn)單片機(jī)按鍵長(zhǎng)按和短按功能的方法
如何利用定時(shí)器區(qū)分長(zhǎng)按和短按?
基于狀態(tài)機(jī)的單片機(jī)按鍵短按長(zhǎng)按功能的實(shí)現(xiàn)

使用單片機(jī)實(shí)現(xiàn)按鍵長(zhǎng)按短按效果的C語(yǔ)言程序免費(fèi)下載
瑞薩單片機(jī)之外部中斷實(shí)現(xiàn)按鍵的長(zhǎng)按與短按(二)

如何區(qū)分按鈕的短按與長(zhǎng)按?

RL78/G23 SMS 短信按鈕長(zhǎng)按/短按判斷應(yīng)用說(shuō)明

TPS3423 毫微功耗雙按鈕控制器,具有短按和長(zhǎng)按差異化技術(shù)手冊(cè)

評(píng)論