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