C++面向?qū)ο蠖嗉壊藛蜗駻rduino的移植問題小結(jié)
前段時(shí)間寫了一篇文章《C++面向?qū)ο笳Z言自制多級菜單》,文中指出了可以將HeleMenu庫進(jìn)行移植,現(xiàn)已完成技術(shù)思路,特此記錄。
一、特性
基本與上一篇文章指出的一致,只是將菜單顯示和響應(yīng)函數(shù)合二為一
二、代碼實(shí)現(xiàn)
基本與上一篇文章指出的一致,只是考慮到右值和左值的問題,將形參改為了const類型
三、使用示例
(一)手動生成
void setup() { /*手動生成菜單,測試用例3*/ HeleMenu *m1 = new HeleMenu("Root"); m1->attachAction(display_root); HeleMenuViewer::init(m1); //初始化根菜單 HeleMenu *m2 = new HeleMenu("Log",m1); m2->attachAction(display_log); m2->addToMenus(); m2 = new HeleMenu("Opt",m1); m2->addValues({"save","unsave"}); m2->attachAction(display_opt); m2->addToMenus(); m2 = new HeleMenu("Menu",m1); m2->attachAction(display_menu); m2->addToMenus(); m1 = m2; //構(gòu)建下一層子菜單 m1->addValues({"1.Adjust", "2.About"}); HeleMenuViewer::gotoRoot(); //到達(dá)根菜單 } void loop() { //顯示與響應(yīng) lcd.clear(); HeleMenuViewer::action(); _delay_ms(50); }
(二)腳本生成
void setup() { /*腳本生成菜單*/ //測試用例1 void (*p_display[])(const string&, const vector<string>&, uint8_t&) = {/*root*/display_root, /*log*/display_log, /*operate*/display_opt, /*menu*/display_menu}; HeleMenu *m1 = HeleMenu::parseMenu("Root{Log{},Opt{save,unsave},Menu{0.Contrast,2.About}}", p_display); HeleMenuViewer::init(m1); //測試用例2 // void (*p_display[])(const string&, const vector<string>&, uint8_t&) = {/*root*/display_root, /*log*/display_log, /*operate*/display_opt, /*menu*/display_menu}; // HeleMenu *m1 = HeleMenu::parseMenu("{Log{},Opt{save,unsave},Menu{0.Contrast,2.About}}", p_display); // HeleMenuViewer::init(m1); HeleMenuViewer::gotoRoot(); //到達(dá)根菜單 } void loop() { //顯示與響應(yīng) lcd.clear(); HeleMenuViewer::action(); _delay_ms(50); }
(三)演示
菜單結(jié)構(gòu)如下:
-Root -Log -XX -... -Opt -save -unsave -Menu -Contrast -About
四、參考資料
- c++中string& , const string& 和 string&& 的區(qū)別是什么?
- 簡單剖析C++右值引用和左值引用
- Reduce the size and memory usage of your sketch
五、源碼下載
百度網(wǎng)盤下載:
鏈接: https://pan.baidu.com/s/1GLyryj046DJl3gbfoE1L-w?pwd=vspi
到此這篇關(guān)于C++面向?qū)ο蠖嗉壊藛蜗駻rduino的移植的文章就介紹到這了,更多相關(guān)C++面向?qū)ο蠖嗉壊藛蝺?nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C++ 中pragma once 與 #ifndef _XXX_H_ #define _XXX_H_的區(qū)別
這篇文章主要介紹了C++ 中pragma once 與 #ifndef _XXX_H_ #define _XXX_H_的區(qū)別的相關(guān)資料,需要的朋友可以參考下2017-04-04深入解析C++編程中__alignof 與__uuidof運(yùn)算符的使用
這篇文章主要介紹了C++編程中__alignof 與__uuidof運(yùn)算符的使用,是C++入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下2016-01-01c++實(shí)現(xiàn)值機(jī)系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了c++實(shí)現(xiàn)在線值機(jī)系統(tǒng)程序,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03