找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2554|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

用狀態(tài)機的方法進行串口觸摸屏的界面設(shè)計

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:63113 發(fā)表于 2019-10-12 21:58 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
做工業(yè)控制的時候,很多開發(fā)者喜歡一步一步來,第一步做什么,接著做什么,發(fā)生了某個事件執(zhí)行某個動作處理,這是最簡單也是最符合人的一般思維的方式,簡單的控制系統(tǒng)這么做無疑是非常輕松的,可是一旦工業(yè)控制系統(tǒng)變得復(fù)雜了的話,一般的流程控制或者順序控制將會十分困難,一是開發(fā)者面對復(fù)雜的系統(tǒng)很難在短時間內(nèi)把各種關(guān)系捋順,而且這樣做成的系統(tǒng)一旦后期想有一點點的改動都會付出很大的工作量來修改。那么,狀態(tài)機控制就是解決復(fù)雜控制問題的很好的一種方法。
有限狀態(tài)機(Finite-statemachine, FSM),又稱為有限狀態(tài)自動機,簡稱狀態(tài)機,是一個數(shù)學(xué)模型。是一個抽象機器,在任何時候都可以處于有限數(shù)量的狀態(tài)之一。響應(yīng)某些外部輸入,F(xiàn)SM可以從一個狀態(tài)轉(zhuǎn)換到另一個狀態(tài);從一種狀態(tài)到另一種狀態(tài)的變化稱為過渡。有限狀態(tài)機是非順序的,沒有事先的設(shè)定,跳轉(zhuǎn)到哪個狀態(tài)由事件決定。

狀態(tài)機有幾個要素:狀態(tài),條件,動作和下個狀態(tài),在某個狀態(tài)時在某種條件(事件)下才會執(zhí)行某個動作跳轉(zhuǎn)到下一個狀態(tài),其中動作不是必需的。如圖 1為一個3元有限狀態(tài)機的模型,它有著3個狀態(tài),觸發(fā)狀態(tài)切換的事件最多有23=6個。當機器處于狀態(tài)1時,只有發(fā)生了事件1才會切換到狀態(tài)2,同樣,在狀態(tài)2時只有發(fā)生了事件2才會切換到狀態(tài)1,其余的狀態(tài)切換流程以此類推。在某一個狀態(tài),你可以根據(jù)需求定義機器的參數(shù),例如溫度達到多少、流量是多少等,在狀態(tài)機內(nèi)部再根據(jù)控制算法執(zhí)行相應(yīng)的動作調(diào)整機器的參數(shù)。
要使用狀態(tài)機的方法,我們將要處理的對象劃分為一個一個的狀態(tài),某一時刻機器只能處于一個特定的狀態(tài)下,在這個狀態(tài)下根據(jù)輸入條件的變化來決定跳轉(zhuǎn)到哪個狀態(tài),執(zhí)行對應(yīng)的動作,跳轉(zhuǎn)和狀態(tài)是唯一的。這樣的狀態(tài)機控制法讓開發(fā)工作不再是復(fù)雜的流程控制,思路也會更加清晰一點,工作也就簡單了。
最近在做工控、電路板、單片機、儀器、軟件開發(fā)定制項目(業(yè)務(wù)Q:2531-2637-26)的時候,用到一個串口觸摸屏作為人機交互接口,在這個屏上會做很多界面來用于參數(shù)的設(shè)置和顯示。這時,我就把每個界面當作狀態(tài)機的一個狀態(tài)來處理,每個界面上的觸摸按鍵反饋的信號就是狀態(tài)機的事件,一旦接收到相應(yīng)的觸摸按鍵的信號(事件),屏的界面就會根據(jù)跳轉(zhuǎn)邏輯發(fā)生跳轉(zhuǎn)并根據(jù)指令控制執(zhí)行器執(zhí)行相應(yīng)的動作。由于是串口觸摸屏并用單片機作為的處理器,每個界面(狀態(tài))的顯示、動作的執(zhí)行等功能我編寫成一個一個的子函數(shù),并在主函數(shù)中的while(1)循環(huán)中根據(jù)狀態(tài)號來調(diào)用,對于觸摸按鍵信號的接收和狀態(tài)號的切換跳轉(zhuǎn)等簡短的指令我在串口中斷函數(shù)中處理,這樣做的好處是讓程序結(jié)構(gòu)清晰,又節(jié)省了中斷程序的執(zhí)行時間避免中斷丟失。

更多精彩,歡迎關(guān)注微-信-公-眾-號:yonkotech
沙鷗-成都-2019.10.12


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表