BIOS从快速入门到入门2------解决问题

11 篇文章 66 订阅

      这里,我会说下快速入门。严格来说,这不能算快速入门,只能叫做,新员工如何快速解决问题(当然,是那种简单的,一般的问题)。

      企业可能会先培养你一段时间,从一周到3个月。然后,就会给你安排一些简单的活,比如,改改界面显示啦。一个新人,可能这个时候是懵逼的,因为BIOS的文件类型太多了,代码也太多了(比linux内核难多了,而且很多时候注释都没有)。

例如,要修改“Terminal Type”,你首先在uni类型文件中查找,可能有一个或者多个,这里假设只有一个,如下:

#string STR_TERMINAL_TYPE     #language eng    "Terminal Type"

                                                    #language zh-CN  "终端类型"

前面是定义一个字符串,后面是内容,eng是英文,zh-CN是中文,当然,可能还有法文,日文,繁体中文等等,可以自己定义添加。找到这个字符串之后,然后在sd文件,hfr文件,vfr,vfi文件中查找“STR_TERMINAL_TYPE”,搜到的结果可能如下,其中prompt是title,help是右侧的帮助信息,option text是选项,default是默认值。

        那么,如何让这个选项隐藏,不起作用呢?当然不是简单的删除或者注释掉,以后说不定又需要开放。在前面加上“suppressif TRUE”,结尾加上“endif;”。如何让这个选项置灰,让用户不可选呢?同样的,你需要加上“grayoutif TRUE“,结尾加上”endif;“。

        可能作为一个新员工,你前期一天的活就是解这么一个简单的bug,现在,你按照这个套路,可能很快就完成了。剩下的时间干什么呢?你需要看书。我只是交给了你方法和套路,让你更快的解决问题,多出来的时间是用来学习的,看UNI和VFR的编程规范,《Unicode UNI File Spec.pdf》和《VFR_V1.7.pdf》,你需要用多余的时间来学习这两种编程语言,而不是会一个简单的套路,如何添加条件判断,如何进行关联,如何添加字库.....这些都是需要学习的。

#define TERMINAL_ONEOF_TERMINALTYPE(PORT_NUM)\
        oneof varid = SETUP_DATA.TerminalType[PORT_NUM],\
            prompt = STRING_TOKEN (STR_TERMINAL_TYPE),\
            help   = STRING_TOKEN (STR_TERMINAL_TYPE_HELP),\
            option text  = STRING_TOKEN (STR_VT100),\
                   value = 0,\
                   flags = 0;\
            option text  = STRING_TOKEN (STR_VT100_PLUS),\
                   value = 1,\
                   flags = 0;\
            option text  = STRING_TOKEN (STR_VT_UTF8),\
                   value = 2,\
                   flags = 0;\
            option text  = STRING_TOKEN (STR_ANSI),\
                   value = 3,\
                   flags = RESET_REQUIRED;\
            default = 1,\
            default = 1, defaultstore = AmiMfgDefault,\
        endoneof;

  • 11
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
void Dealwith_RS232(void) //RS485 is also handled at here { //stc_ring_buf_t *pstcBuffRing_Rcv = &g_stcBuffRing_Remote232_Rcv; _stc_rs232_info *pstcUart; //_stc_rs232_info *pstcRS232 = &g_stcRS232; uint8_t uart; for(uart=0; uart<2; uart++) //COM_RS232, COM_RS485 { if(COM_RS485 == uart) pstcUart = &g_stcRS485; else pstcUart = &g_stcRS232; if (pstcUart->unSend.u64Data)//if (g_stcRS232.unSend.u64Data) { pstcUart->State = STATE_REMOTE_SENDING; //g_stcRS232.State = STATE_REMOTE_SENDING; Dealwith_RS232_Send(uart);//Dealwith_RS232_Send(); } if (STATE_REMOTE_SENDING == pstcUart->State) break; //return; /* buffer ring pop out */ if (!BufferRing_RS232_Popout(uart, pstcUart))//if (!BufferRing_RS232_Popout(pstcBuffRing_Rcv, pstcRS232)) { return; } /* get cmd type and switch to branch */ switch(GetCmd_RS232(pstcUart))//switch(GetCmd_RS232(pstcRS232)) { case CMD_USER_GET_VERSION: RecvFromRS232_User_Get_Version(pstcUart);//RecvFromRS232_User_Get_Version(pstcRS232); break; case CMD_USER_GET_SN: RecvFromRS232_User_Get_SerialNbr(pstcUart);//RecvFromRS232_User_Get_SerialNbr(pstcRS232); break; #ifdef APP_LED case CMD_USER_STANDBY_IN: RecvFromRS232_User_Standby_In(pstcUart); break; case CMD_USER_STANDBY_OUT: RecvFromRS232_User_Standby_Out(pstcUart); break; case CMD_USER_BRIGHTNESS_GET: RecvFromRS232_User_Brightness_Get(pstcUart); break; case CMD_USER_BRIGHTNESS_SET: RecvFromRS232_User_Brightness_Set(pstcUart); break; case CMD_USER_BRIGHTNESS_DECREASE: RecvFromRS232_User_Brightness_Decrease(pstcUart); break; case CMD_USER_BRIGHTNESS_INCREASE: RecvFromRS232_User_Brightness_Increase(pstcUart); break; #endif case CMD_USER_DATE_SET: RecvFromRS232_User_Date_Set(pstcUart); break; case CMD_USER_DATE_GET: RecvFromRS232_User_Date_Get(pstcUart); break; case CMD_USER_TIME_SET: RecvFromRS232_User_Time_Set(pstcUart); break; case CMD_USER_TIME_GET: RecvFromRS232_User_Time_Get(pstcUart); break; case CMD_MFG_TEST: RecvFromRS232_Mfg_Test(pstcUart); break; case CMD_MFG_UPDATE_BOARD: RecvFromRS232_Mfg_Update_Board(pstcUart); break; case CMD_MFG_UPDATE_PANEL: RecvFromRS232_Mfg_Update_Panel(pstcUart); break; case CMD_MFG_EEPROM: RecvFromRS232_Mfg_Eeprom(pstcUart); break; case CMD_MFG_BEEPER: RecvFromRS232_Mfg_Beeper(pstcUart); break; case CMD_MFG_EXIT: RecvFromRS232_Mfg_Exit(pstcUart); break; //kk case CMD_OTA_INIT: RecvFromRS232_OTA_Init(pstcUart); break; default: RecvFromRS232_Invalid_Cmd_Param(pstcUart); break; } g_stcRS232.State = STATE_REMOTE_IDLE; return; } } 怎么让BufferRing_RS232_Popout(uart, pstcUart)时,要等到uart=1时,才能return
06-03
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值