《单片机中英文切换的方法.docx》由会员分享,可在线阅读,更多相关《单片机中英文切换的方法.docx(5页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、单片机中英文切换的方法在单片机的实际应用中经常会遇到中英方切换的问题。针对这个问题,现共享我自己 的一点阅历。盼望可以得到大家的指导。这个方法只适用于静态菜单。方法很简洁,通过索引的方法切换对应语语言的字符串。一、首先我们需要定义一个可以打印中英文混合的函数。如:void Printfstr(ul6 x, ul6 y, char* str);其中显示字符串口的起始坐标,str为字符串指针。二、接下来我们需要字符串索引。这里我用枚举来做索引。如,enumstr_main_menu_O,str_main_menu_lstr_main_menu_2,STR MAX索引总数);三、有了索引就需要把索引
2、和字符关联起来。通过结构体来实现。先定义一个结构体,typedef structu8 index;索引char* Chinese;中文字符char* English;/座文字符JtypemenuListStruct;四、用这个结构体定义一个字符串和索引对应的数组。const typemenuListStruct MenuStrs= str_main_menu_O,主菜单 0 , Main menu 0M ), str_main_menu_L 主菜单 1M , Main menu 1 , str_main_menu_2/主菜单 2 , Main menu 2, STR_MAX , 空字符串);用
3、枚举来定义中文和英文enum(CHINESE, 中文ENGLISH /段文);语音类型标志:u8 language = CHINESE; 选择语音就切换这个变量的值就可以了。猎取字符串内容的接口可以这样写,const char* GetStrPoint(u8 id)u8 index=O;while(index MAX_STRS) 收到到对应的索弓I ,这是为了不用关怀索引在数组中 的详细位置。(if(id = MenuStrsindex.index)(break;index+;)if(ENGLISH = language) 返回相应语音的字符return MenuStrsindex.engli
4、shstr;elsereturn MenuStrsindex.chinesestr;)五、现在就可以应用了。显示菜单时的函数可以这样写void printMenu(ul6 x, ul6 y ,u8 index)(Printfstr(x, y, GetStrPoint(index);)如显示第一个字符串:printMenu(str_main_menu_O);显示其次个字符串:printMenu(str_main_menu_l);六、需要说明的是假如需要一次性显示完一级菜单的内容,这时候这一级菜单的字符 索引最好是按其规律挨次排列的。通过修改索引变量来连续显示菜单。有时候一屏不能显 示全部的菜单,需要用上下键来翻页显示。这时菜单字符按挨次排列就显得很有必要了。 通过索引变量的累加或者递减就可以找到相应的菜单内容。假如不考虑坐标问题,这个方法可以实现更多语音的切换。只要把结构体 typemenuListStruct的内容扩充就可以了。