輕量級狀態機軟件QM入門--Apple的學習筆記 一,前言 二,入門 三,codeblocks建立狀態機工程 四,運行效果 五,小結

一,前言

層次狀態機的設計思想--Apple的學習筆記 - 簡書 (jianshu.com)是我之前看的狀態機設計的書,裏面介紹使用的就是qm軟件。qm軟件是面向對象的抽象設計,可以通過對象的狀態機模型來生成代碼,然後使用它的核心代碼或庫文件集成編譯後使用。若要移植到單片機需要修改下port相關文件就搞定了狀態機設計了。我不喜歡matlab,感覺它比較耗費資源,太笨重了,因爲我只要用simulink,它功能太豐富了,其它算法類我用不到。所以qm這類輕量級工具對我而說就是一見鍾情。當然學習此工具的目的是想了解它的設計思想爲我所用。大概瞭解了原理及工具使用後,就集成一個windows工程運行看看效果吧~

二,入門

入門方法就是看官網幫助,然後按example修改練習下,軟件就會用了,基本就是建立包,然後是類(對象)裏面包括了對象的狀態機,關於自定義的事件就建立evt類。關於生成代碼需要寫腳本define和declear然後拉取對象即可,都是按模板來生成代碼還是很容易工具就入門了。
關於集成我是參考了一個案例,它包括了庫及頭文件,我也學樣。接着就是編譯,哪裏編譯不過就通過對比找答案即可,或者直接修改源碼。其實主要是有2個回調函數需要自己添加,我直接複製過來就編譯過了。

三,codeblocks建立狀態機工程

  1. 用codeblocks的mingw編譯qpc庫。
    我不準備用源碼,直接用編譯的庫,至於庫codeblocks用的是mingw,所以我用codeblocks自帶的mingw版本來編譯一個qpc庫。
    在win32-qv文件夾下(win32單核使用的),直接運行make命令默認是-dbg編譯。我的默認make不是codeblocks的,所以改成了codeblocks中mingw的make路徑
    D:\qp\qpc\ports\win32-qv>"D:\Program Files (x86)\CodeBlocks\MinGW\bin\mingw32-make.exe"
    至於我是怎麼知道這個路徑和命令的,看官網help即可。我是把所有help都快速看了一遍。
  2. 添加庫和頭文件
    安裝路徑下qpc文件夾中的include和其中ports/win32-qv。然後添加剛剛編譯的庫D:\qp\qpc\ports\win32-qv\dbg\libqp.a
  3. 至於main函數中初始化及任務框架要怎麼寫,我是參考了calc的一個example,它選擇的也是繼承QHsm(層次狀態機),所以我看明白大概意思後,直接複製過來修改了對象的名稱,就跑起來啦~

四,運行效果

模型圖,用來生成key.h和key.c的



集成編譯後運行效果


五,小結

工欲善其事必先利其器,又掌握一個小工具,多了一種解決問題的方法。而且它的代碼也很小巧,我完全可以掌握他的設計,取其精華。今天先玩起來,之後就不用庫了,直接用源碼,就可以去邊看源碼邊調試驗證,我的探祕之旅又要開始咯~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章