關注「嵌入式大雜燴」,選擇「星標公眾號」一起進步!
前陣子收到了正點原子贈送的T100智能焊臺以及DS100數字示波器,目前經過個人實際體驗,總體感覺非常優秀,如下:
1、正點原子T100智能焊臺體驗將T100智能焊臺做了一下簡單組裝,然後開啟了一波操作和焊接:
個人體驗總結如下:
2、正點原子T100智能焊臺菜單框架但是,作為軟體工程師,我更有興趣的是,它的界面是如何實現的?因為界面操作也是整個產品中非常重要的一部分,如下:
Q1.界面切換的軟體設計思路關於界面的切換的設計思想,可以參考如下文章:
C語言表驅動法編程實踐(精華帖,建議收藏並實踐)
C語言映射表在嵌入式串口解析、UI設計中的應用(值得收藏並實踐的精華帖)
如上,之前有小夥伴問過我一個問題,如何來設計多語言版本呢?正常面向全球出貨的電子產品,那麼它一定逃不過多語言版本,不同國家由於語言不同,導致上面顯示的內容不一樣,對於不同語言我們可以採用一個二維指針數組的方式來實現,第一維表示具體是哪國的語言,第二維表示具體要顯示什麼內容,例如:
const u8* Mulit_Language[3][LANGUAGE_NUM]=
{
{
"0.退出",
"1.步進設置",
"2.休眠溫度",
"3.休眠時間",
"4.待機時間",
"5.自動關機",
"6.參數選擇",
"7.溫度校準",
"8.輸出電源",
"9.輸出開關",
"10.蜂鳴器",
"11.語言選擇",
"12.恢復出廠",
},
{
"0.Exit",
"1.Step Set",
"2.Sleep Temp",
"3.Sleep Time",
"4.Stdby Time",
"5.Auto P_Off",
"6.Param Sel",
"7.Temp Calib",
"8.Output Cur",
"9.Output ON",
"10.Beep ON",
"11.Language",
"12.Restore",
},
//後面還可以繼續拓展別的語言
};
先來觀察下這個界面包含什麼信息:
最上面是帶填充色的標題顯示,右邊是一個滾動條,然後中間區域有一個指向當前項的手的圖標還有具體的字符串項,當操作旋鈕時,對應的項則被填充背景色,且對應項的字符串的前景色也發生改變,根據這個思路,我們可以得到設計軟體應該有的一些信息:
2.這個菜單列表具體有多長,包含了多少個菜單列表項5.菜單列表項顯示的內容,具體每一項要顯示什麼東西6.當選中這個菜單項以後,按確認鍵後要觸發什麼操作?7.菜單之間的切換,分級,列表的話就有前、後的關係接下來,將這些信息就可以抽象為一個結構體ListItem:
typedef struct ListItem
{
//菜單顯示時光標位置
int8_t item_cursor;
//菜單包含項目數
uint8_t item_count;
//顯示菜單的狀態 是否選中
uint8_t item_is_select;
//菜單項目選中的ICO數據地址
const uint8_t *item_ico_display;
//菜單項目沒選中的ICO數據地址
const uint8_t *item_ico_un_display;
//菜單列表顯示的文本內容
const uint8_t *item_display_text;
//跳轉到對應的功能菜單
void (*Jump_Menu)(void);
//切換到上一級菜單列表項
struct ListItem* prev_item_list;
//切換到下一級菜單列表項
struct ListItem* next_item_list;
}List_Item_Typedef;
這裡我們採用的是雙向鍊表的設計思想對這個菜單進行維護和更新,根據這個結構體,繼續完成一個菜單列表的控制函數與具體的結構體變量還有滾動條關聯起來即可,關於滾動條我們需要單獨去設計一個控制項,由於篇幅原因,這裡就不實現了;詳細的設計過程寫起來稍微有些複雜,我可以在後期單獨用小熊派出一個專題來實現這個過程,並進行詳細的講解。
3、開源的GUI框架現在GUI框架設計趨向於成熟,有很多大神也在Github和Gitee上開源了不少優秀的GUI框架,經過簡單的移植(GUI是純軟體實現,只要硬體支持的操作就可以套用),我們可以擁有很多基礎控制項,比如按鈕,進度條,圖標,曲線等等,其中著名的有STemWin、LVGL、TouchGFX等等,但是針對正點原子T100焊臺,其實只需要能夠繪製單色的GUI框架即可,對於單色的GUI框架,我們在碼雲上可以輕鬆找到:
還有類似的:
針對單色顯示屏的 GUI 解決方案SimpleGUI
正點原子也有類似的產品,界面與T100智能焊臺類似,原始碼也是開源的,詳情可以訪問正點原子資料下載中心查看:
http://www.openedv.com/docs/tool/solder/solder.html
當然,你還能搜索到更多相關的資源,通過學習這些資源你會發現,其實設計思想都差不多,只要掌握其中一個,了解其設計思想,相信有朝一日你也可以擼一個適合自己項目的GUI框架,關於菜單切換和界面實現,我之前也開源了一些項目,如下,有興趣可自行學習或研究:
談談嵌入式應用軟體人機界面開發的菜單框架編寫
開源作品:基於RT-Thread 智慧農業監測系統產品級開發
TencentOS tiny危險氣體探測儀產品級開發
基於TencentOS tiny雲印表機&智能達特甲醛探測系統
至於具體功能,比如焊臺裡PID算法是怎麼處理的,功能是如何交互的,在碼雲上有位大佬,這位大佬現在還在讀研究生,但已經能自己通過STM32把一把烙鐵給造出來了,詳細可以訪問他的碼雲參考他的設計思路:
https://gitee.com/Cai-Zi/STM32_T12_Controller?_from=gitee_search
猜你喜歡:
在公眾號聊天界面回復1024,可獲取嵌入式資源;回復 m ,可查看文章匯總。