📄 tskmenu.c
字号:
//#include <p18cxxx.h>
//To manage the menu display and explain meaning of key
#include "includes.h"
#include "tskmenu.h"
#include "picture.h"
#include "funcCommon.h"
#include "event.h"
#include "funclcd.h"
#include "funcfontlib.h"
#include "funcfile.h"
#include "hardware.h"
#include "file.h"
#include "filesys.h"
#include "device.h"
#include "f_callrecord.h"
//extern MCNM_FILE SystemFile;
extern unsigned char DebugContent[48];
extern OS_MEM *pMemSml;
extern OS_MEM *pMemLge;
extern INT8U rom MainWndType;
extern INT8U rom IdleNumBuf[];
extern INT8U rom IdleNumBufPTR;
extern unsigned char GetPYNode(unsigned char);
extern INT8U MFunc_InsertPhoneBookItem(INT16U rom * pName, INT8U NameLen, INT8U rom * pNum, INT8U NumLen, INT8U Group);
extern INT8U MFunc_DeletePhoneBookItem(INT8U Index);
//extern INT8U MFunc_SearchItem(INT16U rom * pName);
INT16U rom * PB_SearchMatchItem(INT8U rom *pnum, INT8U len);
extern INT8U MFunc_CheckPhoneBook(void);
extern INT8U MFunc_CheckSM(INT8U type);
extern INT8U MFunc_SaveSM(INT8U rom * psm, INT8U type);
extern void Func_GetSysTime(NM_TIME * ptrTime);
void MenuInit(void);
//void Func_DisplayNumAndTime(INT8U rom * ptrNum, INT8U Len, NM_TIME * ptrTime);
INT8U MFunc_Select_Ring(void);
INT8U MFunc_BackLedSet(void);
INT8U MFunc_LocalNumberSet(void);
INT8U MFunc_ReadSM(INT8U * item);
void Func_DisplaySmallIndex (INT8U Index);
INT8U MFunc_EditSMS(INT8U type);
void MFunc_DirectCall(INT8U rom * ptrData, INT8U Len);
INT8U MFunc_WaitForInput(INT8U);
#pragma romdata EXTRAM
INT8U CurMenu;
INT8U PrevMenu; //used when exit from MENU_BOOK_END
//电话本编辑和文本编辑
rom INT16U tmpCurText[160]; //临时的全局变量,仅用于调试(分配一块内存,用于文本编辑)
rom INT8U CurPhoneNum[24]; //电话号码(ASCII代码)
INT8U CurPhoneNumLen; //电话号码长度
rom INT16U *CurText; //文本字符串或姓名字符串指针(必须指向RAM的变量,因为可能要修改其中的内容)
INT8U CurTextLen; //文本字符串或姓名字符串的长度
INT8U CurTextIstPos;
INT8U CurTextWest; //English or Chinese
rom INT8U CurInputChars[8]; //拼音输入时,字母字符串
INT8U CurInputCharsLen; //拼音输入时,已输入字母长度
INT8U CurInputMethod; //输入法
INT8U CurLineNo; //符号或英文的行号(Symbol and English)
rom INT16U * pLetterLine; //显示某个数字键所代表的几个字母,以供选择;(英文输入)
//或显示某行特殊符号,以供选择。(符号输入)
//或显示待选汉字,以供选择(拼音输入)
INT8U LetterLinePos; //当前字母或数字位置(英文输入)
//或当前显示首个汉字的序号(如果只有一屏,则为0;两屏,则为MAX_DISP_HANZI_SEL)
INT8U HanZiSelNum; //供选择的汉字的个数
INT8U PrevKey; //上次按的键(ASCII码)
INT8U MenuTimerRunning; //定时器是否在运行。(英文输入)
INT8U CurInputCase; //大小写
INT8U HanZiSel; //汉字正待选择
INT8U EnterTextEdit(void);
void MenuDisplayText(void);
INT8U EnterPhoneEdit(void);
void MenuDisplayPinYin(unsigned char);
void MFunc_WaitSendResult(void);
//extern OS_EVENT *rom peventTimer;
#pragma romdata CCODE
//four fix word
rom INT8U fixword4[][8]={
{0x1A,0x90,0xDD,0x8B,0xB0,0x8B,0x55,0x5F }, //(0) 通话记录(0x901A,0x8BDD,0x8BB0,0x5F55)
{0x87,0x65,0x2C,0x67,0xE1,0x4F,0x6F,0x60}, //(1) 文本信息
{0x2C,0x67,0x3A,0x67,0xBE,0x8B,0x6E,0x7F}, //(2) 本机设置
{0x51,0x7F,0xDC,0x7E,0x9F,0x52,0xFD,0x80}, //(3) 网络功能
{0x2A,0x67,0xA5,0x63,0x65,0x67,0x35,0x75}, //(4) 未接来电
{0xF2,0x5D,0xA5,0x63,0x65,0x67,0x35,0x75}, //(5) 已接来电
{0xF2,0x5D,0xE8,0x62,0x35,0x75,0xDD,0x8B}, //(6) 已拨电话
{0xDD,0x8B,0x55,0x53,0xE5,0x67,0xE2,0x8B}, //(7) 话单查询
{0xFB,0x8B,0x36,0x65,0xED,0x77,0xE1,0x4F}, //(8) 读收短信
{0xFB,0x8B,0xD1,0x53,0xED,0x77,0xE1,0x4F}, //(9) 读发短信
{0x99,0x51,0xED,0x77,0xE1,0x4F,0x00,0x30}, //(10) (书)写短信(SPACE);(书)=0x66,0x4E,
{0xED,0x77,0xE1,0x4F,0xBE,0x8B,0x6E,0x7F}, //(11) 短信设置
{0x39,0x8D,0x87,0x73,0xE5,0x67,0xE2,0x8B}, //(12) 费率查询
{0x2C,0x67,0x3A,0x67,0xF7,0x53,0x01,0x78}, //(13) (设置)本机号码
{0xBE,0x8B,0x6E,0x7F,0xC3,0x94,0xF0,0x58}, //(14) 设置铃声
{0xBE,0x8B,0x6E,0x7F,0xCC,0x80,0x49,0x51}, //(15) 设置背光
{0x70,0x65,0x6E,0x63,0x21,0x6A,0x0F,0x5F}, //(16) 数据模式
{0x03,0x8C,0xD5,0x8B,0x21,0x6A,0x0F,0x5F}, //(17) 调试模式
{0xD1,0x76,0xC6,0x89,0x21,0x6A,0x0F,0x5F} //(18) 监视模式
};
//five fix word
rom INT8U fixword5[][10] = {
{0x2D,0x4E,0xC3,0x5F,0x0D,0x67,0xA1,0x52,0x68,0x56}, // (0) 中心服务器
{0xED,0x77,0xE1,0x4F,0x09,0x67,0x48,0x65,0x1F,0x67}, // (1) 短信有效期
{0x20,0x4F,0x01,0x90,0xA5,0x62,0x4A,0x54,0x00,0x30}, // (2) 传送报告
{0xED,0x77,0xE1,0x4F,0x7B,0x7C,0x8B,0x57,0x00,0x30} // (3) 短信类型<緿
};
rom INT16U TextBackLightClose[6]={0x80cc,0x5149,0x5173,0x0000};rom INT16U TextBackLightOpen[6]={0x80cc,0x5149,0x5f00,0x0000}; //背光开
rom INT16U TextNoRecord[6]={0x65e0,0x8bb0,0x5f55}; //无记录
INT16U rom RingSelectWords[]={0x94c3, 0x58f0,0x0000}; //铃声
rom INT8U TextSmsOver[12]={0x2a,0x00,0x2a,0x00,0xd3,0x7e,0x5f,0x67,0x2a,0x00,0x2a,0x00}; //**结束**
rom INT8U TextQPhoneNum[6]={0xF7,0x53,0x01,0x78,0x3F,0x00}; //号码?
rom INT8U TextQName[6]={0xD3,0x59,0x0D,0x54,0x3F,0x00}; //姓名?
rom INT8U TextQSave[6]={0xDD,0x4F,0x58,0x5B,0x3F,0x00}; //保存?
rom INT8U TextSendSucc[10]={0xD1,0x53,0x01,0x90,0x10,0x62,0x9F,0x52,0x00,0x00}; //发送成功
rom INT8U TextSendFail[10]={0xD1,0x53,0x01,0x90,0x31,0x59,0x25,0x8D,0x00,0x00}; //发送失败
rom INT8U TextSending[16]={0x63,0x6B,0x28,0x57,0xD1,0x53,0x01,0x90,0x2E,0x00,0x2E,0x00,0x2E,0x00,0x00,0x00}; //正在发送
MENU_NODE MenuNode[]={
//level num sn left-key right-key prev-node next-node attribute len1 pline1 pbmp
{ 0, 1, 0, MENU_KEY_FUN, MENU_KEY_BOOK, MENU_ROOT, MENU_REC, MENU_ATT_FIX, 0, NULL, NULL},//line0-->MENU_ROOT
{ 1, 4, 0, MENU_KEY_SEL, MENU_KEY_CAN, MENU_ROOT, MENU_REC_RCVNO, MENU_ATT_FIX, 4, fixword4[0], &PIC_CALL_RECORD},//line1-->MENU_REC
{ 1, 4, 1, MENU_KEY_SEL, MENU_KEY_CAN, MENU_ROOT, MENU_SMS_RDRCV, MENU_ATT_FIX, 4, fixword4[1], &PIC_SHORT_MESSAGE},//line2-->MENU_SMS
{ 1, 4, 2, MENU_KEY_SEL, MENU_KEY_CAN, MENU_ROOT, MENU_SET_RATE, MENU_ATT_FIX, 4, fixword4[2], &PIC_PHONE_SETUP},//line3-->MENU_SET
{ 1, 4, 3, MENU_KEY_SEL, MENU_KEY_CAN, MENU_ROOT, MENU_NET_MDM, MENU_ATT_FIX, 4, fixword4[3], &PIC_NETWORK_FUNCTION},//line4-->MENU_NET
{ 1, 0, 0, MENU_KEY_MDF, MENU_KEY_CAN, MENU_ROOT, MENU_BOOK_END, MENU_ATT_VAR, 0, NULL, NULL},//line5-->MENU_BOOK_END (a special menu)
{ 2, 4, 0, MENU_KEY_SEL, MENU_KEY_CAN, MENU_REC, MENU_REC_RCVNO_END, MENU_ATT_FIX, 4, fixword4[4], NULL},//line6-->MENU_REC_RCVNO
{ 2, 4, 1, MENU_KEY_SEL, MENU_KEY_CAN, MENU_REC, MENU_REC_RCVED_END, MENU_ATT_FIX, 4, fixword4[5], NULL},//line7-->MENU_REC_RCVED
{ 2, 4, 2, MENU_KEY_SEL, MENU_KEY_CAN, MENU_REC, MENU_REC_XMT_END, MENU_ATT_FIX, 4, fixword4[6], NULL},//line8-->MENU_XMT
{ 2, 4, 3, MENU_KEY_SEL, MENU_KEY_CAN, MENU_REC, MENU_REC_BILL_NUM, MENU_ATT_FIX, 4, fixword4[7], NULL},//line9-->MENU_BILL
{ 2, 4, 0, MENU_KEY_SEL, MENU_KEY_CAN, MENU_SMS, MENU_SMS_RDRCV_NUM, MENU_ATT_FIX, 4, fixword4[8], NULL},//line10-->MENU_SMS_RDRCV
{ 2, 4, 1, MENU_KEY_SEL, MENU_KEY_CAN, MENU_SMS, MENU_SMS_RDXMT_NUM, MENU_ATT_FIX, 4, fixword4[9], NULL},//line11-->MENU_SMS_RDXMT
{ 2, 4, 2, MENU_KEY_SEL, MENU_KEY_CAN, MENU_SMS, MENU_SMS_WR_TXT, MENU_ATT_FIX, 4, fixword4[10], NULL},//line12-->MENU_SMS_WR
{ 2, 4, 3, MENU_KEY_SEL, MENU_KEY_CAN, MENU_SMS, MENU_SMS_SET_CENTER, MENU_ATT_FIX, 4, fixword4[11], NULL},//line13-->MENU_SMS_SET
{ 2, 4, 0, MENU_KEY_SEL, MENU_KEY_CAN, MENU_SET, MENU_SET_RATE_END, MENU_ATT_FIX, 4, fixword4[12], NULL},//line14-->MENU_SET_RATE
{ 2, 4, 1, MENU_KEY_SEL, MENU_KEY_CAN, MENU_SET, MENU_SET_LOCAL_END, MENU_ATT_FIX, 4, fixword4[13], NULL},//line15-->MENU_SET_LOCAL
{ 2, 4, 2, MENU_KEY_SEL, MENU_KEY_CAN, MENU_SET, MENU_SET_RING_END, MENU_ATT_FIX, 4, fixword4[14], NULL},//line16-->MENU_SET_RING
{ 2, 4, 3, MENU_KEY_SEL, MENU_KEY_CAN, MENU_SET, MENU_SET_LIGHT_END, MENU_ATT_FIX, 4, fixword4[15], NULL},//line17-->MENU_SET_LIGHT
{ 2, 3, 0, MENU_KEY_BLK, MENU_KEY_CAN, MENU_NET, MENU_NET_MDM, MENU_ATT_FIX, 4, fixword4[16], NULL},//line18-->MENU_NET_MDN
{ 2, 3, 1, MENU_KEY_BLK, MENU_KEY_CAN, MENU_NET, MENU_NET_DBG, MENU_ATT_FIX, 4, fixword4[17], NULL},//line19-->MENU_NET_BDG
{ 2, 3, 2, MENU_KEY_BLK, MENU_KEY_CAN, MENU_NET, MENU_NET_MON, MENU_ATT_FIX, 4, fixword4[18], NULL}, //line20-->MENU_NET_MON
{ 3, 0, 0, MENU_KEY_SAVE,MENU_KEY_CAN, MENU_REC_RCVNO, MENU_REC_RCVNO_END, MENU_ATT_VAR, 0, NULL, NULL},//line21-->MENU_REC_RCVNO_END
{ 3, 0, 0, MENU_KEY_SAVE,MENU_KEY_CAN, MENU_REC_RCVED, MENU_REC_RCVED_END, MENU_ATT_VAR, 0, NULL, NULL},//line22-->MENU_REC_RCVED_END
{ 3, 0, 0, MENU_KEY_SAVE,MENU_KEY_CAN, MENU_REC_XMT, MENU_REC_XMT_END, MENU_ATT_VAR, 0, NULL, NULL},//line23-->MENU_REC_XMT_END
{ 3, 0, 0, MENU_KEY_READ,MENU_KEY_CAN, MENU_REC_BILL, MENU_REC_BILL_NUM_END, MENU_ATT_VAR, 0, NULL, NULL},//line24-->MENU_REC_BILL_NUM
{ 3, 0, 0, MENU_KEY_READ,MENU_KEY_CAN, MENU_SMS_RDRCV, MENU_SMS_RDRCV_NUM_END, MENU_ATT_VAR, 0, NULL, NULL},//line25-->MENU_SMS_RDRCV_NUM
{ 3, 0, 0, MENU_KEY_READ,MENU_KEY_CAN, MENU_SMS_RDXMT, MENU_SMS_RDXMT_NUM_END, MENU_ATT_VAR, 0, NULL, NULL},//line26-->MENU_SMS_RDXMT_NUM
{ 3, 0, 0, MENU_KEY_OK, MENU_KEY_CAN, MENU_SMS_WR, MENU_SMS_WR_TXT_EDIT, MENU_ATT_VAR, 0, NULL, NULL},//line27-->MENU_SMS_WR_TXT
{ 3, 3, 0, MENU_KEY_SEL, MENU_KEY_CAN, MENU_SMS_SET, MENU_SMS_SET_CENTER_END, MENU_ATT_FIX, 5, fixword5[0], NULL},//line28-->MENU_SMS_SET_CENTER
{ 3, 3, 1, MENU_KEY_SEL, MENU_KEY_CAN, MENU_SMS_SET, MENU_SMS_SET_LIFE_END, MENU_ATT_FIX, 5, fixword5[1], NULL},//line29-->MENU_SMS_SET_LIFE
{ 3, 3, 2, MENU_KEY_SEL, MENU_KEY_CAN, MENU_SMS_SET, MENU_SMS_SET_REPORT_END, MENU_ATT_FIX, 5, fixword5[2], NULL},//line30-->MENU_SMS_SET_REPORT
{ 3, 0, 0, MENU_KEY_OK, MENU_KEY_CAN, MENU_SET_RATE, MENU_SET_RATE_END, MENU_ATT_VAR, 0, NULL, NULL},//line31-->MENU_SET_RATE_END
{ 3, 0, 0, MENU_KEY_OK, MENU_KEY_CAN, MENU_SET_LOCAL, MENU_SET_LOCAL_END, MENU_ATT_VAR, 0, NULL, NULL},//line32-->MENU_SET_LOCAL_END
{ 3, 0, 0, MENU_KEY_OK, MENU_KEY_CAN, MENU_SET_RING, MENU_SET_RING_END, MENU_ATT_VAR, 0, NULL, NULL},//line33-->MENU_SET_RING_END
{ 3, 0, 0, MENU_KEY_OK, MENU_KEY_CAN, MENU_SET_LIGHT, MENU_SET_LIGHT_END, MENU_ATT_VAR, 0, NULL, NULL},//line34-->MENU_SET_LIGHT_END
{ 4, 0, 0, MENU_KEY_BLK, MENU_KEY_CAN, MENU_REC_BILL_NUM, MENU_REC_BILL_NUM_END, MENU_ATT_VAR, 0, NULL, NULL},//line35-->MENU_REC_BILL_NUM_END
{ 4, 0, 0, MENU_KEY_DEL, MENU_KEY_CAN, MENU_SMS_RDRCV_NUM, MENU_SMS_RDRCV_NUM_END, MENU_ATT_VAR, 0, NULL, NULL},//line36-->MENU_SMS_RDRCV_NUM_END
{ 4, 0, 0, MENU_KEY_DEL, MENU_KEY_CAN, MENU_SMS_RDXMT_NUM, MENU_SMS_RDXMT_NUM_END, MENU_ATT_VAR, 0, NULL, NULL},//line37-->MENU_SMS_RDXMT_NUM_END
{ 4, 0, 0, MENU_KEY_OK, MENU_KEY_CAN, MENU_SMS_WR_TXT, MENU_SMS_WR_TXT_EDIT, MENU_ATT_VAR, 0, NULL, NULL},//line38-->MENU_SMS_WR_TXT_EDIT
{ 4, 0, 0, MENU_KEY_SAVE,MENU_KEY_SEND, MENU_SMS_WR_TXT, MENU_SMS_WR_TXT_SEND, MENU_ATT_VAR, 0, NULL, NULL},//line39-->MENU_SMS_WR_TXT_SEND
{ 4, 0, 0, MENU_KEY_OK, MENU_KEY_CAN, MENU_SMS_SET_CENTER,MENU_SMS_SET_CENTER_END,MENU_ATT_VAR, 0, NULL, NULL},//line40-->MENU_SMS_SET_CENTER_END
{ 4, 0, 0, MENU_KEY_OK, MENU_KEY_CAN, MENU_SMS_SET_LIFE, MENU_SMS_SET_LIFE_END, MENU_ATT_VAR, 0, NULL, NULL},//line41-->MENU_SMS_SET_LIFE_END
{ 4, 0, 0, MENU_KEY_OK, MENU_KEY_CAN, MENU_SMS_SET_REPORT,MENU_SMS_SET_REPORT_END,MENU_ATT_VAR, 0, NULL, NULL} //line42-->MENU_SMS_SET_REPORT_END
};
rom INT16U MenuEditLowerKey[][5]={
{' ','-',':','=','0'}, {'.',',','?','!','1'}, {'a','b','c','2',0},
{'d','e','f','3',0}, {'g','h','i','4',0}, {'j','k','l','5',0},
{'m','n','o','6',0}, {'p','q','r','s','7'}, {'t','u','v','8',0},
{'w','x','y','z','9'}
};
rom INT16U MenuEditUpperKey[][5]={
{' ','-',':','=','0'}, {'.',',','?','!','1'}, {'A','B','C','2',0},
{'D','E','F','3',0}, {'G','H','I','4',0}, {'J','K','L','5',0},
{'M','N','O','6',0}, {'P','Q','R','S','7'}, {'T','U','V','8',0},
{'W','X','Y','Z','9'}
};
rom INT16U MenuEditSymbol[][8]={
{'.',',','?','!','/','<','>','@'},
{'#','$','%','^','&','*','(',')'},
{'{','}','[',']','+','-','_','='}
};
rom INT8U LetterLineLen[]={5,5,4,4,4,4,4,5,4,5}; //Sn=key-0x30
INT16U rom OperPBItem1[] = {0x7f16,0x8f91,0x0000}; //edit
INT16U rom OperPBItem2[] = {0x5220,0x9664,0x0000}; //delete
#pragma code MYCODE
//display compressed number and time (in NM_TIME structure) in a given area
void Func_DisplayNumAndTime(INT8U rom * ptrNum, INT8U Len, NM_TIME * ptrTime){
INT8U chrTemp,pos,i;
INT8U rom * pmem;
INT8U rom * ptrTemp;
pos = 0;
pmem = OSMemGet(pMemSml, &chrTemp);
if(chrTemp != OS_NO_ERR) return;
i = app_c2a(ptrNum, Len, pmem);
ptrTemp = (INT8U rom *)PB_SearchMatchItem(pmem, i);
if( ptrTemp == NULL_PTR){
i = app_c2u(ptrNum, Len, pmem);
app_printf(pmem, i, 2, 0);
}
else{
app_printf(ptrTemp,10,2,0);
}
OSMemPut(pMemSml,pmem);
//display time
Disp_Word(4,0, 0xd41e+(ptrTime->chrYear/10), PIX6);
Disp_Word(4,6, 0xd41e+(ptrTime->chrYear%10), PIX6);
Disp_Word(4,6*2, 0xd41d,PIX6);
Disp_Word(4,6*3, 0xd41e+(ptrTime->chrMonth/10), PIX6);
Disp_Word(4,6*4, 0xd41e+(ptrTime->chrMonth%10), PIX6);
Disp_Word(4,6*5, 0xd41d,PIX6);
Disp_Word(4,6*6, 0xd41e+(ptrTime->chrDate/10), PIX6);
Disp_Word(4,6*7, 0xd41e+(ptrTime->chrDate%10), PIX6);
//
Disp_Word(4,6*8, 0x0020, PIX8);
//
Disp_Word(4,8+6*8, 0xd41e+(ptrTime->chrHour/10), PIX6);
Disp_Word(4,8+6*9, 0xd41e+(ptrTime->chrHour%10), PIX6);
Disp_Word(4,8+6*10, 0xd428,PIX6);
Disp_Word(4,8+6*11, 0xd41e+(ptrTime->chrMinute/10), PIX6);
Disp_Word(4,8+6*12, 0xd41e+(ptrTime->chrMinute%10), PIX6);
Disp_Word(4,8+6*13, 0xd428,PIX6);
Disp_Word(4,8+6*14, 0xd41e+(ptrTime->chrSecond/10), PIX6);
Disp_Word(4,8+6*15, 0xd41e+(ptrTime->chrSecond%10), PIX6);
}
void MenuDisplayKey(INT8U menu)
{
INT8U i;
INT8U key[2];
key[0]=MenuNode[menu].fun_left;
key[1]=MenuNode[menu].fun_right;
for(i=0;i<2;i++){
switch(key[i]){
case MENU_KEY_FUN:
Display_Menu_Icon(i, &PIC_FUNCTION);
break;
case MENU_KEY_BOOK:
Display_Menu_Icon(i, &PIC_PHONEBOOK);
break;
case MENU_KEY_SEL:
Display_Menu_Icon(i, &PIC_ENTER);
break;
case MENU_KEY_CAN:
Display_Menu_Icon(i, &PIC_RETURN);
break;
case MENU_KEY_OK:
Display_Menu_Icon(i, &PIC_ACKNOWLEDGE);
break;
case MENU_KEY_BLK:
Display_Menu_Icon(i, &PIC_BLANK);
break;
case MENU_KEY_READ:
Display_Menu_Icon(i, &PIC_READ);
break;
case MENU_KEY_SAVE:
Display_Menu_Icon(i, &PIC_SAVE);
break;
case MENU_KEY_DEL:
Display_Menu_Icon(i, &PIC_DELETE);
break;
default:
Display_Menu_Icon(i, &PIC_WAITING);
break;
}
}
}
void MenuDisplayPhone(INT8U line_no,INT8U len,rom INT8U *ptr)
{
INT8U i,PosY;
PosY=0;
if(len>20) len=20;
for(i=0;i<len;i++){
(void)Disp_Word(line_no,PosY,ptr[i]+0xD41E-0x30,PIX6);
PosY+=6;
}
}
/*
INT8U MenuDisplayLetter(INT8U line_no,INT8U len,rom INT8U *ptr)
{
INT8U i,PosY;
PosY=0;
for(i=0;i<len;){
(void)Disp_Word(line_no,PosY,*ptr,PIX8);
ptr++;
PosY+=8;
i++;
if(PosY>=128) return(i);
}
return(i);
}
*/
void MenuDisplaySequence(INT8U node)
{
INT8U i,pos;
INT8U lay[4];
if(MenuNode[node].attr==MENU_ATT_FIX){
pos=node;
lay[1]=0x20; //MENU_ROOT using this line "<SPACE>"
for(i=MenuNode[node].node_level;i>0;i--){
lay[i]=MenuNode[pos].node_sn+0x31;
pos=MenuNode[pos].prev_node;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -