#include "RuntimeData.h" #include "DevProperty.h" #include "DisplayPadDescpDownload.h" #include "DevMask.h" #include "server.h" extern "C"{ #include "user_norflash.h" //#include "user_eeprom.h" #include "fdcan_task.h" #include "uart_key_drv.h" } #define dWWidth 24 #define dWHeigh 24 #define dRoundR 7 #define dWdClr clSkyBlue #define dWdDisabelClr clNearWhite static const short svGrid1X[8] = { 16, 128, 246, 392, 600, 620, 630, 640 }; void TDisplayPadDescpDownload::DrawFixText() { if(LanguageEnCn==0){ TextRender_string24(Lv.Caption.Left + 10, Lv.Caption.Top +4, clNearWhite, CaptionColor, "工程->层显描述下载"); TextRender_string24(Lv.Grid.Left[0] +16, Lv.Grid.Top[0] + 4, clNearWhite, ItemColor, "选择要下载的类型"); TextRender_string24(Lv.Grid.Left[0] +700, Lv.Grid.Top[0] + 4, clNearWhite, ItemColor, "后台运行"); TextRender_string24(svGrid1X[0] + 32, Lv.Grid.Top[0] + 36, clNearWhite, ItemColor, "烟感"); TextRender_string24(svGrid1X[1] + 32, Lv.Grid.Top[0] + 36, clNearWhite, ItemColor, "温感"); TextRender_string24(svGrid1X[2] + 32, Lv.Grid.Top[0] + 36, clNearWhite, ItemColor, "手报"); TextRender_string24(svGrid1X[3] + 32, Lv.Grid.Top[0] + 36, clNearWhite, ItemColor, "输入模块"); TextRender_string24(svGrid1X[4] + 32, Lv.Grid.Top[0] + 36, clNearWhite, ItemColor, "输入输出模块"); TextRender_string24(Lv.Grid.Left[1] +16, Lv.Grid.Top[1] + 4, clNearWhite, ItemColor, "层显回路号"); TextRender_string24(Lv.Grid.Left[1] +16, Lv.Grid.Top[1] + 38, clNearWhite, ItemColor, "层显地址号"); TextRender_string24(Lv.Grid.Left[2] +16, Lv.Grid.Top[2] + 4, clNearWhite, ItemColor, "注释起始回路"); TextRender_string24(Lv.Grid.Left[2] +16, Lv.Grid.Top[2] + 38, clNearWhite, ItemColor, "注释起始地址"); TextRender_string24(Lv.Grid.Left[3] +16, Lv.Grid.Top[3] + 4, clNearWhite, ItemColor, "注释结束回路"); TextRender_string24(Lv.Grid.Left[3] +16, Lv.Grid.Top[3] + 38, clNearWhite, ItemColor, "注释结束地址"); if(State == Idle){ Tag.Inx = 0; Tag.InxItem = 0; TRoundRect::sDrawBySize(Lv.Grid.Left[4] +16, Lv.Grid.Top[4] + 8, 120, 30, 7, clNearWhite, "开始下载", 14, clNearBlack); TRoundRect::sDrawBySize(Lv.Grid.Left[4] +154, Lv.Grid.Top[4] + 8, 120, 30, 7, clNearWhite, "结束下载", 14, clNearBlack); }else{ Tag.Inx = 8; Tag.InxItem = 0; TRoundRect::sDrawBySize(Lv.Grid.Left[4] +16, Lv.Grid.Top[4] + 8, 120, 30, 7, clNearWhite, "开始下载", 14, clSilver); TRoundRect::sDrawBySize(Lv.Grid.Left[4] +154, Lv.Grid.Top[4] + 8, 120, 30, 7, clNearWhite, "结束下载", 14, clNearBlack); } }else{ TextRender_string24(Lv.Caption.Left + 10, Lv.Caption.Top +4, clNearWhite, CaptionColor, "Project->Download Descp To Display Pad"); TextRender_string24(Lv.Grid.Left[0] +16, Lv.Grid.Top[0] + 4, clNearWhite, ItemColor, "Selecte Dev Types"); TextRender_string24(Lv.Grid.Left[0] +700, Lv.Grid.Top[0] + 4, clNearWhite, ItemColor, "BackEnd"); TextRender_string24(svGrid1X[0] + 32, Lv.Grid.Top[0] + 36, clNearWhite, ItemColor, "Smoke"); TextRender_string24(svGrid1X[1] + 32, Lv.Grid.Top[0] + 36, clNearWhite, ItemColor, "Tempe"); TextRender_string24(svGrid1X[2] + 32, Lv.Grid.Top[0] + 36, clNearWhite, ItemColor, "Hand Pad"); TextRender_string24(svGrid1X[3] + 32, Lv.Grid.Top[0] + 36, clNearWhite, ItemColor, "Output Module"); TextRender_string24(svGrid1X[4] + 32, Lv.Grid.Top[0] + 36, clNearWhite, ItemColor, "In&Out Module"); TextRender_string24(Lv.Grid.Left[1] +16, Lv.Grid.Top[1] + 4, clNearWhite, ItemColor, "Loop Display"); TextRender_string24(Lv.Grid.Left[1] +16, Lv.Grid.Top[1] + 38, clNearWhite, ItemColor, "Addr Display"); TextRender_string24(Lv.Grid.Left[2] +16, Lv.Grid.Top[2] + 4, clNearWhite, ItemColor, "Loop Begin"); TextRender_string24(Lv.Grid.Left[2] +16, Lv.Grid.Top[2] + 38, clNearWhite, ItemColor, "Addr Begin"); TextRender_string24(Lv.Grid.Left[3] +16, Lv.Grid.Top[3] + 4, clNearWhite, ItemColor, "Loop End"); TextRender_string24(Lv.Grid.Left[3] +16, Lv.Grid.Top[3] + 38, clNearWhite, ItemColor, "Addr End"); if(State == Idle){ Tag.Inx = 0; Tag.InxItem = 0; TRoundRect::sDrawBySize(Lv.Grid.Left[4] +16, Lv.Grid.Top[4] + 8, 120, 30, 7, clNearWhite, "Download", 14, clNearBlack); TRoundRect::sDrawBySize(Lv.Grid.Left[4] +154, Lv.Grid.Top[4] + 8, 120, 30, 7, clNearWhite, " Stop ", 14, clNearBlack); }else{ Tag.Inx = 8; Tag.InxItem = 0; TRoundRect::sDrawBySize(Lv.Grid.Left[4] +16, Lv.Grid.Top[4] + 8, 120, 30, 7, clNearWhite, "Download", 14, clSilver); TRoundRect::sDrawBySize(Lv.Grid.Left[4] +154, Lv.Grid.Top[4] + 8, 120, 30, 7, clNearWhite," Stop ", 14, clNearBlack); } } } void TDisplayPadDescpDownload::Init() { IsPermission =0; SelectedList.Reset(); DpPort = 1; DpAddr = 1; StartPort =1; EndPort = 2; StartAddr = 1; EndAddr = 250; State = Idle; Tag.Inx = 0; Tag.InxItem = 0; WriteResult =0; pPanel = nullptr; } void TDisplayPadDescpDownload::RenderBackGround(void) { RectFillRender(ContentGeometry.Left, ContentGeometry.Top, ContentGeometry.Right, ContentGeometry.Bottom, ContentColor); } void TDisplayPadDescpDownload::DrawSelf(void) { RenderBackGround(); RectFillRender(Lv.Caption.Left, Lv.Caption.Top, Lv.Caption.Right, Lv.Caption.Bottom, CaptionColor); for(int i=0; iEdit[0].Init(Lv.Grid.Left[1] +174, Lv.Grid.Top[1] + 2, 100,30,0,0,1,clNearBlack); pPanel->Edit[0].SetMaxLen(2); pPanel->Edit[0].Str.Clear(); TMyString::sFrom2Dg(DpPort,Text); pPanel->Edit[0].SetText(Text, 24); pPanel->Edit[0].SetPstTail(); pPanel->Edit[0].Show(); pPanel->Edit[1].Init(Lv.Grid.Left[1] +174, Lv.Grid.Top[1] + 38, 100,30,0,0,1,clNearBlack); pPanel->Edit[1].SetMaxLen(3); pPanel->Edit[1].Str.Clear(); TMyString::sFrom3Dg(DpAddr,Text); pPanel->Edit[1].SetText(Text, 24); pPanel->Edit[1].Show(); pPanel->Edit[2].Init(Lv.Grid.Left[2] +174, Lv.Grid.Top[2] + 2, 100,30,0,0,1,clNearBlack); pPanel->Edit[2].SetMaxLen(2); pPanel->Edit[2].Str.Clear(); TMyString::sFrom2Dg(StartPort,Text); pPanel->Edit[2].SetText(Text, 24); pPanel->Edit[2].Show(); pPanel->Edit[3].Init(Lv.Grid.Left[1] +174, Lv.Grid.Top[2] + 38, 100,30,0,0,1,clNearBlack); pPanel->Edit[3].SetMaxLen(3); pPanel->Edit[3].Str.Clear(); TMyString::sFrom3Dg(StartAddr,Text); pPanel->Edit[3].SetText(Text, 24); pPanel->Edit[3].Show(); pPanel->Edit[4].Init(Lv.Grid.Left[2] +174, Lv.Grid.Top[3] + 2, 100,30,0,0,1,clNearBlack); pPanel->Edit[4].SetMaxLen(2); pPanel->Edit[4].Str.Clear(); TMyString::sFrom2Dg(EndPort,Text); pPanel->Edit[4].SetText(Text, 24); pPanel->Edit[4].Show(); pPanel->Edit[5].Init(Lv.Grid.Left[1] +174, Lv.Grid.Top[3] + 38, 100,30,0,0,1,clNearBlack); pPanel->Edit[5].SetMaxLen(3); pPanel->Edit[5].Str.Clear(); TMyString::sFrom3Dg(EndAddr,Text); pPanel->Edit[5].SetText(Text, 24); pPanel->Edit[5].Show(); DrawFixText(); DrawItemTypeSelected(); DrawPadList(); if(State == Writing)Tag.Inx =7; Check4Selected(); } void TDisplayPadDescpDownload::Show() { IsShow = 1; DrawSelf(); } void TDisplayPadDescpDownload::FullRedraw(int Prm) { RenderBackGround(); RectFillRender(Lv.Caption.Left, Lv.Caption.Top, Lv.Caption.Right, Lv.Caption.Bottom, CaptionColor); for(int i=0; iEdit[0].Show(); pPanel->Edit[1].Show(); pPanel->Edit[2].Show(); pPanel->Edit[3].Show(); pPanel->Edit[4].Show(); pPanel->Edit[5].Show(); DrawItemTypeSelected(); DrawPadList(); Check4Selected(); if(IsPermission)PmsIntervene4Gui.ReDraw4GuiRecall(); } void TDisplayPadDescpDownload::PermissionCmdReturnDraw() { RectFillRender(Lv.Panel.Left, Lv.Panel.Top, Lv.Panel.Right, Lv.Panel.Bottom, PanelColor); DrawWriteResult(); } void TDisplayPadDescpDownload::DrawItemTypeSelected() { if(SelectedList.SenSmoker){ TRoundSquare::sDrawBySize(svGrid1X[0], Lv.Grid.Top[0] + 38, dWWidth, dWHeigh, dRoundR, dWdClr , 1); }else{ TRoundSquare::sDrawBySize(svGrid1X[0], Lv.Grid.Top[0] + 38, dWWidth, dWHeigh, dRoundR, dWdDisabelClr , 0); } if(SelectedList.SenTemper){ TRoundSquare::sDrawBySize(svGrid1X[1], Lv.Grid.Top[0] + 38, dWWidth, dWHeigh, dRoundR, dWdClr , 1); }else{ TRoundSquare::sDrawBySize(svGrid1X[1], Lv.Grid.Top[0] + 38, dWWidth, dWHeigh, dRoundR, dWdDisabelClr , 0); } if(SelectedList.HandPadReport){ TRoundSquare::sDrawBySize(svGrid1X[2], Lv.Grid.Top[0] + 38, dWWidth, dWHeigh, dRoundR, dWdClr , 1); }else{ TRoundSquare::sDrawBySize(svGrid1X[2], Lv.Grid.Top[0] + 38, dWWidth, dWHeigh, dRoundR, dWdDisabelClr , 0); } if(SelectedList.ModuleIn){ TRoundSquare::sDrawBySize(svGrid1X[3], Lv.Grid.Top[0] + 38, dWWidth, dWHeigh, dRoundR, dWdClr , 1); }else{ TRoundSquare::sDrawBySize(svGrid1X[3], Lv.Grid.Top[0] + 38, dWWidth, dWHeigh, dRoundR, dWdDisabelClr , 0); } if(SelectedList.ModuleInout){ TRoundSquare::sDrawBySize(svGrid1X[4], Lv.Grid.Top[0] + 38, dWWidth, dWHeigh, dRoundR, dWdClr , 1); }else{ TRoundSquare::sDrawBySize(svGrid1X[4], Lv.Grid.Top[0] + 38, dWWidth, dWHeigh, dRoundR, dWdDisabelClr , 0); } } void TDisplayPadDescpDownload::DrawWriteResult() { if(IsShow == 0)return; const int OffSet = 200; if(LanguageEnCn==0){ if( (IsSelfChecking == 0) && (PmsIntervene.IsShow == 0) ){ if(State == Finished){ TextRender_string24(Lv.Panel.Left +4, Lv.Panel.Top + 2, clNearWhite, PanelColor, "传输完成"); }else if(State == Writing){ TextRender_string24(Lv.Panel.Left +4, Lv.Panel.Top + 2, clNearWhite, PanelColor, "正在传输"); }else{ TextRender_string24(Lv.Panel.Left +4, Lv.Panel.Top + 2, clNearWhite, PanelColor, "无传输 "); } TextRender_string24(Lv.Panel.Left +160, Lv.Panel.Top + 2, clNearWhite, PanelColor, "已用时(秒):"); TextDigitRender8_24(Lv.Panel.Left +292, Lv.Panel.Top + 2, clNearWhite, PanelColor, RunData.WasteTime); TextRender_string24(Lv.Panel.Left +4, Lv.Panel.Top + 32, clNearWhite, PanelColor, "总数量:"); TextDigitRender5_24(Lv.Panel.Left +OffSet, Lv.Panel.Top + 32, clNearWhite, PanelColor, RunData.Total); TextRender_string24(Lv.Panel.Left +4, Lv.Panel.Top + 62, clNearWhite, PanelColor, "当前写入回路号:"); TextDigitRender2_24(Lv.Panel.Left +OffSet, Lv.Panel.Top + 62, clNearWhite, PanelColor, RunData.WritingPort); TextRender_string24(Lv.Panel.Left +4, Lv.Panel.Top + 92, clNearWhite, PanelColor, "当前写入地址号:"); TextDigitRender3_24(Lv.Panel.Left +OffSet, Lv.Panel.Top + 92, clNearWhite, PanelColor, RunData.WritingAddr); TextRender_string24(Lv.Panel.Left +4, Lv.Panel.Top + 122, clNearWhite, PanelColor, "已写入数量:"); TextDigitRender5_24(Lv.Panel.Left +OffSet, Lv.Panel.Top + 122, clNearWhite, PanelColor, RunData.WroteCount); TextRender_string24(Lv.Panel.Left +4, Lv.Panel.Top + 152, clNearWhite, PanelColor, "写入失败数量:"); TextDigitRender5_24(Lv.Panel.Left +OffSet, Lv.Panel.Top + 152, clRed, PanelColor, RunData.FailCount); TextRender_string24(Lv.Panel.Left +4, Lv.Panel.Top + 182, clNearWhite, PanelColor, "重试次数:"); TextDigitRender6_24(Lv.Panel.Left +OffSet, Lv.Panel.Top + 182, clNearWhite, PanelColor, RunData.TotalRetryTimes); } }else{ if( (IsSelfChecking == 0) && (PmsIntervene.IsShow == 0) ){ if(State == Finished){ TextRender_string24(Lv.Panel.Left +4, Lv.Panel.Top + 2, clNearWhite, PanelColor, "Completed "); }else if(State == Writing){ TextRender_string24(Lv.Panel.Left +4, Lv.Panel.Top + 2, clNearWhite, PanelColor, "Transmiting"); }else{ TextRender_string24(Lv.Panel.Left +4, Lv.Panel.Top + 2, clNearWhite, PanelColor, "IDLE "); } TextRender_string24(Lv.Panel.Left +160, Lv.Panel.Top + 2, clNearWhite, PanelColor, "Waste Time:"); TextDigitRender8_24(Lv.Panel.Left +292, Lv.Panel.Top + 2, clNearWhite, PanelColor, RunData.WasteTime); TextRender_string24(Lv.Panel.Left +4, Lv.Panel.Top + 32, clNearWhite, PanelColor, "Total:"); TextDigitRender5_24(Lv.Panel.Left +OffSet, Lv.Panel.Top + 32, clNearWhite, PanelColor, RunData.Total); TextRender_string24(Lv.Panel.Left +4, Lv.Panel.Top + 62, clNearWhite, PanelColor, "Writing Loop:"); TextDigitRender2_24(Lv.Panel.Left +OffSet, Lv.Panel.Top + 62, clNearWhite, PanelColor, RunData.WritingPort); TextRender_string24(Lv.Panel.Left +4, Lv.Panel.Top + 92, clNearWhite, PanelColor, "Writing Addr:"); TextDigitRender3_24(Lv.Panel.Left +OffSet, Lv.Panel.Top + 92, clNearWhite, PanelColor, RunData.WritingAddr); TextRender_string24(Lv.Panel.Left +4, Lv.Panel.Top + 122, clNearWhite, PanelColor, "Been Finished:"); TextDigitRender5_24(Lv.Panel.Left +OffSet, Lv.Panel.Top + 122, clNearWhite, PanelColor, RunData.WroteCount); TextRender_string24(Lv.Panel.Left +4, Lv.Panel.Top + 152, clNearWhite, PanelColor, "Failed To Write:"); TextDigitRender5_24(Lv.Panel.Left +OffSet, Lv.Panel.Top + 152, clRed, PanelColor, RunData.FailCount); TextRender_string24(Lv.Panel.Left +4, Lv.Panel.Top + 182, clNearWhite, PanelColor, "Retey Times:"); TextDigitRender6_24(Lv.Panel.Left +OffSet, Lv.Panel.Top + 182, clNearWhite, PanelColor, RunData.TotalRetryTimes); } } } void TDisplayPadDescpDownload::DrawPadList() { unsigned char tP0, tP1; int x,y, Cnt; RectFillRender(Lv.PanelSmall.Left, Lv.PanelSmall.Top, Lv.PanelSmall.Right, Lv.PanelSmall.Bottom, SmallPanelColor); if(LanguageEnCn==0)TextRender_string24(Lv.PanelSmall.Left + 6, Lv.PanelSmall.Top + 2, clNearWhite, SmallPanelColor, "回路层显地址:"); else TextRender_string24(Lv.PanelSmall.Left + 6, Lv.PanelSmall.Top + 2, clNearWhite, SmallPanelColor, "List Of Disp:"); tP0 = DpPort -1; if(tP0 < dPORT_MAX_COUNT){ Cnt = 0; x = Lv.PanelSmall.Left + 6; y = Lv.PanelSmall.Top + 2 + 32; if(MainCtl.fData.Split.ExistTablePort[tP0]){ for(tP1=0; tP1dPORT_MAX_COUNT)return; if(EndPort>dPORT_MAX_COUNT)return; if(StartAddr>dEP_MAX_COUNT_PER_PORT)return; if(EndAddr>dEP_MAX_COUNT_PER_PORT)return; tP = StartPort; tA = StartAddr; for(;tP<=EndPort;tP++){ tP0 = tP-1; for(; tA= EndPort) && (tA >= EndAddr) ){ return; } } tA = 1; } } void TDisplayPadDescpDownload::DoTransmiting() { int GoContinue =0; int GoRetry =0; int GoSend = 0; unsigned char tP, tA, tP0, tP1; if(RpyData.HasSend){ //Wait RpyData.WaitTick++; if(RpyData.RecResult){ if(RpyData.RecSta == 1){ RpyData.HasSend =0; GoContinue =1; RunData.WroteCount++; }else{ if(RunData.RetryTimes < 3){ RunData.RetryTimes++; GoRetry =1; RunData.TotalRetryTimes++; }else{ RpyData.HasSend =0; GoContinue =1; RunData.FailCount++; } } }else if(RpyData.WaitTick>10){ if(RunData.RetryTimes < 3){ RunData.RetryTimes++; GoRetry =1; RunData.TotalRetryTimes++; }else{ RpyData.HasSend =0; GoContinue =1; RunData.FailCount++; } } }else{ GoContinue =1; } if(GoRetry){ SendCmdWriteOnePoint(RunData.WritingPort, RunData.WritingAddr); RpyData.HasSend =1; } if(GoContinue){ if( (RunData.WritingPort > EndPort) || ((RunData.WritingPort >= EndPort) && (RunData.WritingAddr > EndAddr)) ) { State = Finished; return; } RunData.RetryTimes =0; if(1){ if( (RunData.WritingPort == 0) || (RunData.WritingAddr ==0) ){ tP = StartPort; tA = StartAddr; }else{ tP = RunData.WritingPort; tA = RunData.WritingAddr; if(tA >= dEP_MAX_COUNT_PER_PORT){ if(tP >= dPORT_MAX_COUNT){ State = Finished; return; }else{ tA =1; tP++; } }else{ tA++; } } for(; tP<=EndPort; tP++){ tP0 =tP-1; for(; tA<=dEP_MAX_COUNT_PER_PORT; tA++){ tP1 =tA-1; if(SelectedList.SenSmoker){ if(Port[tP0].dTypeTable[tP1] == dgTYPE_SMOKE_DETECTOR){ GoSend =1; } } if(SelectedList.SenTemper){ if(Port[tP0].dTypeTable[tP1] == dgTYPE_TEMPE_DETECTOR){ GoSend =1; } } if(SelectedList.HandPadReport){ if(Port[tP0].dTypeTable[tP1] == dgTYPE_HAND_REPORT){ GoSend =1; } } if(SelectedList.ModuleIn){ if(Port[tP0].dTypeTable[tP1] == dgTYPE_IN_MODULE){ GoSend =1; } } if(SelectedList.ModuleInout){ if( (Port[tP0].dTypeTable[tP1] == dgTYPE_INOUT_MODULE_NonSource) || (Port[tP0].dTypeTable[tP1] == dgTYPE_INOUT_MODULE_Source) ){ GoSend =1; } } if(Port[tP0].dTypeTable[tP1] == 0) GoSend =1; if(GoSend){ RunData.WritingPort = tP; RunData.WritingAddr = tA; SendCmdWriteOnePoint(RunData.WritingPort, RunData.WritingAddr); RpyData.HasSend =1; RpyData.WaitTick =0; RpyData.RecSta =0; RpyData.RecResult =0; goto DoNothingReturnHere; } if( (tP > EndPort) || ((tP >= EndPort) && (tA > EndAddr)) ) { State = Finished; goto DoNothingReturnHere; } } tA =1; } if( (tP > EndPort) || ((tP >= EndPort) && (tA > EndAddr)) ) { State = Finished; return; } DoNothingReturnHere: return; } } } void TDisplayPadDescpDownload::ClearSelected(void) { char *tText; switch(Tag.Inx){ case 0: switch(Tag.InxItem){ case 0: TRoundSquare::sSelected(svGrid1X[0], Lv.Grid.Top[0] + 38, dWWidth, dWHeigh, 4, ItemColor); break; case 1: TRoundSquare::sSelected(svGrid1X[1], Lv.Grid.Top[0] + 38, dWWidth, dWHeigh, 4, ItemColor); break; case 2: TRoundSquare::sSelected(svGrid1X[2], Lv.Grid.Top[0] + 38, dWWidth, dWHeigh, 4, ItemColor); break; case 3: TRoundSquare::sSelected(svGrid1X[3], Lv.Grid.Top[0] + 38, dWWidth, dWHeigh, 4, ItemColor); break; case 4: TRoundSquare::sSelected(svGrid1X[4], Lv.Grid.Top[0] + 38, dWWidth, dWHeigh, 4, ItemColor); break; case 5: TRoundSquare::sSelected(svGrid1X[5], Lv.Grid.Top[0] + 38, dWWidth, dWHeigh, 4, ItemColor); break; } break; case 1: pPanel->Edit[0].Selected = 0; pPanel->Edit[0].SetPstTail(); pPanel->Edit[0].Show(); break; case 2: pPanel->Edit[1].Selected = 0; pPanel->Edit[1].SetPstTail(); pPanel->Edit[1].Show(); break; case 3: pPanel->Edit[2].Selected = 0; pPanel->Edit[2].SetPstTail(); pPanel->Edit[2].Show(); break; case 4: pPanel->Edit[3].Selected = 0; pPanel->Edit[3].SetPstTail(); pPanel->Edit[3].Show(); break; case 5: pPanel->Edit[4].Selected = 0; pPanel->Edit[4].SetPstTail(); pPanel->Edit[4].Show(); break; case 6: pPanel->Edit[5].Selected = 0; pPanel->Edit[5].SetPstTail(); pPanel->Edit[5].Show(); break; case 7: if(LanguageEnCn==0)tText="开始下载"; else tText="DownLoad"; TRoundRect::sDrawBySize(Lv.Grid.Left[4] +16, Lv.Grid.Top[4] + 8, 120, 30, 7, clNearWhite, tText, 14, clNearBlack); break; case 8: if(LanguageEnCn==0)tText="结束下载"; else tText=" Stop "; TRoundRect::sDrawBySize(Lv.Grid.Left[4] +154, Lv.Grid.Top[4] + 8, 120, 30, 7, clNearWhite, tText, 14, clNearBlack); break; } } void TDisplayPadDescpDownload::Check4Selected(void) { char *tText; switch(Tag.Inx){ case 0: switch(Tag.InxItem){ case 0: TRoundSquare::sSelected(svGrid1X[0], Lv.Grid.Top[0] + 38, dWWidth, dWHeigh, 4, clNearWhite); break; case 1: TRoundSquare::sSelected(svGrid1X[1], Lv.Grid.Top[0] + 38, dWWidth, dWHeigh, 4, clNearWhite); break; case 2: TRoundSquare::sSelected(svGrid1X[2], Lv.Grid.Top[0] + 38, dWWidth, dWHeigh, 4, clNearWhite); break; case 3: TRoundSquare::sSelected(svGrid1X[3], Lv.Grid.Top[0] + 38, dWWidth, dWHeigh, 4, clNearWhite); break; case 4: TRoundSquare::sSelected(svGrid1X[4], Lv.Grid.Top[0] + 38, dWWidth, dWHeigh, 4, clNearWhite); break; case 5: TRoundSquare::sSelected(svGrid1X[5], Lv.Grid.Top[0] + 38, dWWidth, dWHeigh, 4, clNearWhite); break; } break; case 1: pPanel->Edit[0].Selected = 1; pPanel->Edit[0].SetPstTail(); pPanel->Edit[0].Show(); pPanel->Edit[0].ShowCursor(); break; case 2: pPanel->Edit[1].Selected = 1; pPanel->Edit[1].SetPstTail(); pPanel->Edit[1].Show(); pPanel->Edit[1].ShowCursor(); break; case 3: pPanel->Edit[2].Selected = 1; pPanel->Edit[2].SetPstTail(); pPanel->Edit[2].Show(); pPanel->Edit[2].ShowCursor(); break; case 4: pPanel->Edit[3].Selected = 1; pPanel->Edit[3].SetPstTail(); pPanel->Edit[3].Show(); pPanel->Edit[3].ShowCursor(); break; case 5: pPanel->Edit[4].Selected = 1; pPanel->Edit[4].SetPstTail(); pPanel->Edit[4].Show(); pPanel->Edit[4].ShowCursor(); break; case 6: pPanel->Edit[5].Selected = 1; pPanel->Edit[5].SetPstTail(); pPanel->Edit[5].Show(); pPanel->Edit[5].ShowCursor(); break; case 7: if(LanguageEnCn==0)tText="开始下载"; else tText="DownLoad"; TRoundRect::sDrawBySize(Lv.Grid.Left[4] +16, Lv.Grid.Top[4] + 8, 120, 30, 7, clBlue, tText, 14, clNearWhite); break; case 8: if(LanguageEnCn==0)tText="结束下载"; else tText=" Stop "; TRoundRect::sDrawBySize(Lv.Grid.Left[4] +154, Lv.Grid.Top[4] + 8, 120, 30, 7, clBlue, tText, 14, clNearWhite); break; } } void TDisplayPadDescpDownload::PushInnerCanData(unsigned char aCmd, unsigned char *pBuf) { if(State == Writing){ if(aCmd == cmSetDisplayPadPositionInf){ //Write if(pBuf[2] == DpPort){ if(pBuf[3] == DpAddr){ if(pBuf[5] == dgTYPE_DISPLAY_PAD){ RpyData.RecSta = pBuf[6]; RpyData.RecResult =1; } } } } } } void TDisplayPadDescpDownload::SendCmdWriteOnePoint(unsigned char aPort, unsigned char aAddr) { TCanHeaderID aIde; unsigned char cVal; unsigned int i; volatile unsigned int tAddr; unsigned char tP0,tP1; unsigned int x; tP0 = aPort -1; tP1 = aAddr -1; if( (tP0 >= dPORT_MAX_COUNT) || (tP1 >= dEP_MAX_COUNT_PER_PORT) )return; tAddr = dAddrSdRam_Descp + (tP0 * 256 * 32) + (tP1 * 32); DescpData[0] = MainCtl.fData.Split.MyNum; DescpData[1] = aPort; DescpData[2] = aAddr; for(i=0;i<32;i++){ DescpData[i+3] = *(volatile unsigned char *)(tAddr +i); } DescpData[35]=0; aIde.BitF.Cmd = cmSetDisplayPadPositionInf; for(i=0; i<8; i++){ Data[i] = 0; } Data[0] = 0; Data[1] = DpPort; Data[2] = DpAddr; aIde.BitF.Pri = 1; aIde.BitF.sLvl = 1; aIde.BitF.dLvl = 7; aIde.BitF.sAddr = 0; aIde.BitF.dAddr = 127; x = 0; for(i=0;i<9;i++){ Data[3] = i+1; Data[4]=DescpData[x++]; Data[5]=DescpData[x++]; Data[6]=DescpData[x++]; Data[7]=DescpData[x++]; InnerCan.Buf4GuiSend.Insert(aIde, Data, (i<8?8:7)); } } void TDisplayPadDescpDownload::SendCmdWriteAbort(unsigned char aPort, unsigned char aAddr) { } TGuiMsgReturn TDisplayPadDescpDownload::KeyIn(unsigned char aKey) { TGuiMsgReturn aMsg = guiMsgNone; TGuiMsgReturn PmsRtnMsg; unsigned char tCtlNum, aCc, Ow, Err; if(IsPermission){ PmsRtnMsg = PmsIntervene4Gui.KeyIn(aKey); if(PmsRtnMsg == guiMsgOkAndReturn){ //Enter And Run Go IsPermission = 0; PermissionCmdReturnDraw(); PermissionCmdGO(); }else if(PmsRtnMsg == guiMsgReturn){ //Not Enter Redraw IsPermission = 0; PermissionCmdReturnDraw(); } return aMsg; } if(State == Writing){ switch(aKey){ case VK_RIGHT: if(Tag.Inx ==7){ ClearSelected(); Tag.Inx++; Check4Selected(); } break; case VK_DOWN: if(Tag.Inx <8){ ClearSelected(); Tag.Inx++; Check4Selected(); } break; case VK_EXECUTE: if(Tag.Inx == 8){ if(State == Writing){ PermissionCmd = 2; if(SystemPermission > 2){ PermissionCmdGO(); }else{ IsPermission = 1; PmsIntervene4Gui.Show4Gui(Lv.Grid.Left[1] +320, Lv.Grid.Top[1] + 16, 400, 140, 3); } } } break; case VK_RETURN: IsShow = 0; aMsg = guiMsgReturn; break; } }else{ switch(aKey){ case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case VK_LEFT: case VK_RIGHT: case VK_DELETE: if(Tag.Inx ==0){ if(aKey == VK_LEFT){ if(Tag.InxItem >0){ ClearSelected(); Tag.InxItem--; Check4Selected(); } }else if(aKey == VK_RIGHT){ if(Tag.InxItem <4){ ClearSelected(); Tag.InxItem++; Check4Selected(); } } }else if(Tag.Inx ==1){ pPanel->Edit[0].KeyIn(aKey); aCc = pPanel->Edit[0].Str.ToInteger(); if( (aCc == 0) || (aCc > dPORT_MAX_COUNT) ){ pPanel->Edit[0].SelectedColor = clRed; }else{ pPanel->Edit[0].SelectedColor = clBlue; } DpPort = aCc; pPanel->Edit[0].Show(); pPanel->Edit[0].ShowCursor(); DrawPadList(); }else if(Tag.Inx ==2){ pPanel->Edit[1].KeyIn(aKey); aCc = pPanel->Edit[1].Str.ToInteger(); if( (aCc == 0) || (aCc > dEP_MAX_COUNT_PER_PORT) ){ pPanel->Edit[1].SelectedColor = clRed; }else{ pPanel->Edit[1].SelectedColor = clBlue; } DpAddr = aCc; pPanel->Edit[1].Show(); pPanel->Edit[1].ShowCursor(); }else if(Tag.Inx ==3){ pPanel->Edit[2].KeyIn(aKey); aCc = pPanel->Edit[2].Str.ToInteger(); if( (aCc == 0) || (aCc > dPORT_MAX_COUNT) ){ pPanel->Edit[2].SelectedColor = clRed; }else{ pPanel->Edit[2].SelectedColor = clBlue; } StartPort = aCc; pPanel->Edit[2].Show(); pPanel->Edit[2].ShowCursor(); }else if(Tag.Inx ==4){ pPanel->Edit[3].KeyIn(aKey); aCc = pPanel->Edit[3].Str.ToInteger(); if( (aCc == 0) || (aCc > dEP_MAX_COUNT_PER_PORT) ){ pPanel->Edit[3].SelectedColor = clRed; }else{ pPanel->Edit[3].SelectedColor = clBlue; } StartAddr = aCc; pPanel->Edit[3].Show(); pPanel->Edit[3].ShowCursor(); }else if(Tag.Inx ==5){ pPanel->Edit[4].KeyIn(aKey); aCc = pPanel->Edit[4].Str.ToInteger(); if( (aCc == 0) || (aCc > dPORT_MAX_COUNT) ){ pPanel->Edit[4].SelectedColor = clRed; }else{ pPanel->Edit[4].SelectedColor = clBlue; } EndPort = aCc; pPanel->Edit[4].Show(); pPanel->Edit[4].ShowCursor(); }else if(Tag.Inx ==6){ pPanel->Edit[5].KeyIn(aKey); aCc = pPanel->Edit[5].Str.ToInteger(); if( (aCc == 0) || (aCc > dEP_MAX_COUNT_PER_PORT) ){ pPanel->Edit[5].SelectedColor = clRed; }else{ pPanel->Edit[5].SelectedColor = clBlue; } EndAddr = aCc; pPanel->Edit[5].Show(); pPanel->Edit[5].ShowCursor(); }else if(Tag.Inx ==7){ if(aKey == VK_RIGHT){ ClearSelected(); Tag.Inx++; Check4Selected(); } }else if(Tag.Inx ==8){ if(aKey == VK_LEFT){ if(State != Writing){ ClearSelected(); Tag.Inx--; Check4Selected(); } } } break; case VK_UP: if(Tag.Inx >0){ if(State != Writing){ ClearSelected(); Tag.Inx--; Check4Selected(); } }else{ if(State != Writing){ ClearSelected(); Tag.Inx =8; Check4Selected(); } } break; case VK_DOWN: if(Tag.Inx <8){ ClearSelected(); Tag.Inx++; Check4Selected(); }else{ if(State != Writing){ ClearSelected(); Tag.Inx =0; Check4Selected(); } } break; case VK_TAB: break; case dfKEY_SETUP: if(Tag.Inx ==0){ switch(Tag.InxItem){ case 0: SelectedList.SenSmoker = SelectedList.SenSmoker ? 0 :1; break; case 1: SelectedList.SenTemper = SelectedList.SenTemper ? 0 :1; break; case 2: SelectedList.HandPadReport = SelectedList.HandPadReport ? 0 :1; break; case 3: SelectedList.ModuleIn = SelectedList.ModuleIn ? 0 :1; break; case 4: SelectedList.ModuleInout = SelectedList.ModuleInout ? 0 :1; break; } DrawItemTypeSelected(); } break; case dfKEY_QUERY: break; case VK_EXECUTE: if(Tag.Inx == 7){ if(State != Writing){ if( (DpPort && DpAddr) && (DpPort <= dPORT_MAX_COUNT) && (DpAddr <= dEP_MAX_COUNT_PER_PORT) ){ if( (StartPort && StartAddr) && (StartPort <= dPORT_MAX_COUNT) && (StartAddr <= dEP_MAX_COUNT_PER_PORT) ){ if( (EndPort && EndAddr) && (EndPort <= dPORT_MAX_COUNT) && (EndAddr <= dEP_MAX_COUNT_PER_PORT) ){ PermissionCmd = 1; if(SystemPermission > 2){ PermissionCmdGO(); }else{ IsPermission = 1; PmsIntervene4Gui.Show4Gui(Lv.Grid.Left[1] +320, Lv.Grid.Top[1] + 16, 400, 140, 3); } } } } } } break; case VK_RETURN: IsShow = 0; aMsg = guiMsgReturn; break; } } return aMsg; } void TDisplayPadDescpDownload::PermissionCmdGO() { if(PermissionCmd == 1){ InitWriteData(); RpyData.Reset(); State = Writing; }else if(PermissionCmd == 2){ SendCmdWriteAbort(DpPort, DpAddr); State = Idle; RectFillRender(Lv.Panel.Left, Lv.Panel.Top, Lv.Panel.Right, Lv.Panel.Bottom, PanelColor); } } void TDisplayPadDescpDownload::Task1000Ms() { if(State != Idle){ if(RunData.WasteTime < 99999999)RunData.WasteTime++; DoTransmiting(); }else{ return; } if(IsShow == 0)return; if( (State != Idle) && (IsPermission == 0) ){ DrawWriteResult(); } if(State == Finished)State = Idle; } void TDisplayPadDescpDownload::ExtReset() { State = Idle; } int TDisplayPadDescpDownload::ExtRequst(unsigned char Prm) { IsShow = 0; return 0; }