嵌入式UI:语言切换结构

  1. 功能设计:增加、减少、修改、切换UI显示的语言
  • 方式:
    • 语言库:把显示功能编译为库用于全代码调用
      • 显示功能:长时间显示短时间显示显示和按键功能更新显示内容、按周期显示、马上显示、显示优先级
    • 其他
  1. 多语言切换:
  • 语言库方式多语言切换逻辑图:

img

  1. code

    • 语言包存储格式:
    // 存储类型结构体
    typedef struct _T_DISPLAY_HINT_
    {
        unsigned int uiType;// 索引
        const char *pHint_CN;// 中文字符串
        const char *pHint_EN;// 英文字符串
    }T_DISPLAY_HINT;
    // 注册索引号
    typedef enum _E_HINT_HEAD_
    {
    	HINT_ERR_INIT,   						// 索引1,蓝牙初始化失败
    	HINT_ERR_LINK,  						// 索引2,蓝牙连接失败
        INIT_CONNECT_SURRESS,					// 索引3,"蓝牙连接成功",
    }E_HINT_HEAD;
    
    • 注册提示语言包
    T_DISPLAY_HINT Bluetooth_Hint[]=
    {
    	{HINT_ERR_INIT, 			"蓝牙初始化失败",		"Bluetooth init err"},
    	{HINT_ERR_LINK,				"蓝牙连接失败",		 "Bluetooth link err"},
    	{INIT_CONNECT_SURRESS,		"蓝牙连接成功",		 "Bluetooth connect ok"},
    };
    
    • 语言判断、显示函数
    // 调用索引选择语言函数:DisplayHint函数作为应用底层判断语言类型
    /*
    * uiIndex:  提示索引
    * pItem:	Bluetooth_Hint
    */
    int DisplayHint(unsigned int uiIndex, T_DISPLAY_HINT *pItem)
    {
    	if (NULL == pItem)
    	{
    		ASSERT(0);
    		return RET_FAIL;
    	}
    	if(access(LANGUAGE_CN, F_OK) == 0)
    	{
    		DispHint_Shot((char *)pItem[uiIndex].pHint_CN, strlen(pItem[uiIndex].pHint_CN));// 显示函数显示中文
    	}
    	else if(access(LANGUAGE_EN, F_OK) == 0)
    	{
    		DispHint_Shot((char *)pItem[uiIndex].pHint_EN, strlen(pItem[uiIndex].pHint_EN));// 显示函数显示英文
    	}
    	return RET_SUCC;
    }
    
Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐