2163 lines
63 KiB
C++
2163 lines
63 KiB
C++
#include "CanNetworkRegister.h"
|
|
#include "ProtoC2C.h"
|
|
#include "Runtime.h"
|
|
#include "server.h"
|
|
|
|
#define dDescpOffSet 0x1000
|
|
|
|
|
|
#define dAddrSdRam_TypeList (dAddrSdRam_Commom)
|
|
#define dAddrSdRam_DescpGotList (dAddrSdRam_Commom + 256)
|
|
#define dAddrSdRam_DescpContent (dAddrSdRam_Commom + 1024)
|
|
#define dAddrSdRam_ExistTable (dAddrSdRam_Commom + 0x80000)
|
|
|
|
#define dAddrSdRam_LinkMaster (dAddrSdRam_Commom + 0x90000)
|
|
|
|
#define dWdClr clSkyBlue
|
|
#define dWdDisabelClr clNearWhite
|
|
|
|
#define dWWidth 24
|
|
#define dWHeigh 24
|
|
#define dRoundR 7
|
|
|
|
const int xSingle = 160;
|
|
const int xSlave = 340;
|
|
const int xMaster = 474;
|
|
|
|
const int xPst0 = 20;
|
|
const int xPst1 = 202;
|
|
const int xPst2 = 384;
|
|
const int xPst3 = 566;
|
|
|
|
const int ListItemsX = 6;
|
|
const int ListItemsY = 6;
|
|
|
|
extern "C"{
|
|
#include "user_norflash.h"
|
|
#include "user_eeprom.h"
|
|
#include "uart_key_drv.h"
|
|
}
|
|
|
|
void TCanNetworkRegister::Init()
|
|
{
|
|
IsShowing = 0;
|
|
IsOnSearching = 0;
|
|
LoadingIndex = 0;
|
|
CtlIndex = 0;
|
|
ListX =0;
|
|
ListY =0;
|
|
ListWhat = TCanNetworkRegister::TListWhat::Idle;
|
|
Done = 0;
|
|
GroupSelected = 0;
|
|
|
|
IsPermission =0;
|
|
|
|
this->MyNum = MainCtl.fData.Split.MyNum;
|
|
|
|
SearchStartNum = 0;
|
|
SearchEndNum = 0;
|
|
}
|
|
|
|
void TCanNetworkRegister::sDelayMs(unsigned int aMs)
|
|
{
|
|
volatile unsigned int mTick;
|
|
volatile unsigned int Tick;
|
|
for(Tick=0; Tick<aMs; Tick++){
|
|
for(mTick=0; mTick<160000; mTick++);
|
|
sys_error_led_task();
|
|
}
|
|
}
|
|
|
|
void TCanNetworkRegister::RenderBackGround(void)
|
|
{
|
|
RectFillRender(ContentGeometry.Left, ContentGeometry.Top, ContentGeometry.Right, ContentGeometry.Bottom, ContentColor);
|
|
}
|
|
|
|
void TCanNetworkRegister::RenderBackGround(unsigned int aClr)
|
|
{
|
|
RectFillRender(ContentGeometry.Left, ContentGeometry.Top, ContentGeometry.Right, ContentGeometry.Bottom, aClr);
|
|
}
|
|
|
|
void DrawIdfText()
|
|
{
|
|
|
|
}
|
|
|
|
void TCanNetworkRegister::DrawFixText()
|
|
{
|
|
unsigned int tColor;
|
|
if(MainCtl.fData.Split.NetworkMode == 1)tColor = clNearBlack; else tColor=clSilver;
|
|
if(LanguageEnCn==0){
|
|
TextRender_string24(Lv.Caption.Left + 10, Lv.Caption.Top +4, clNearWhite, CaptionColor, "局域网->本机模式与注册");
|
|
TextRender_string24(Lv.Grid.Left[0] + 10, Lv.Grid.Top[0] +6, clNearWhite, "本机号:");
|
|
TextRender_string24(Lv.Grid.Left[0] + 146, Lv.Grid.Top[0] +6, clNearWhite, "选中后按确定键保存");
|
|
|
|
TextRender_string24(Lv.Grid.Left[1] + 10, Lv.Grid.Top[1] +6, clNearWhite, "组网模式:");
|
|
TextRender_string24(xSingle+30, Lv.Grid.Top[1] + 6, clNearWhite, "单机");
|
|
TextRender_string24(xSlave+30, Lv.Grid.Top[1] + 6, clNearWhite, "区域机");
|
|
TextRender_string24(xMaster+30, Lv.Grid.Top[1] + 6, clNearWhite, "集中机");
|
|
|
|
//TextRender_string24(Lv.Grid.Left[2] + 10, Lv.Grid.Top[2] +6, clNearWhite, "网络注册与清除");
|
|
//TextRender_string24(Lv.Grid.Left[2] + 10, Lv.Grid.Top[2] +40, clNearWhite, "机器号");
|
|
|
|
TRoundRect::sDrawBySize(xPst0, Lv.Grid.Top[2] + 2, 172, 30, 7, clNearWhite, "搜索在线机器", 14, clNearBlack);
|
|
TRoundRect::sDrawBySize(xPst1, Lv.Grid.Top[2] + 2, 172, 30, 7, clNearWhite, "清集中机列表", 14, clNearBlack);
|
|
TRoundRect::sDrawBySize(xPst2, Lv.Grid.Top[2] + 2, 172, 30, 7, clNearWhite, "清区域机列表", 14, clNearBlack);
|
|
|
|
TRoundRect::sDrawBySize(xPst0, Lv.Grid.Top[2] + 38, 172, 30, 7, clNearWhite, "查集中机列表", 14, tColor);
|
|
TRoundRect::sDrawBySize(xPst1, Lv.Grid.Top[2] + 38, 172, 30, 7, clNearWhite, "查区域机列表", 14, tColor);
|
|
TRoundRect::sDrawBySize(xPst2, Lv.Grid.Top[2] + 38, 172, 30, 7, clNearWhite, "存集中机列表", 14, tColor);
|
|
TRoundRect::sDrawBySize(xPst3, Lv.Grid.Top[2] + 38, 172, 30, 7, clNearWhite, "存区域机列表", 14, tColor);
|
|
}else{
|
|
TextRender_string24(Lv.Caption.Left + 10, Lv.Caption.Top +4, clNearWhite, CaptionColor, "Local Network->Mode Setting & Register");
|
|
TextRender_string24(Lv.Grid.Left[0] + 10, Lv.Grid.Top[0] +6, clNearWhite, "CtrlID:");
|
|
TextRender_string24(Lv.Grid.Left[0] + 146, Lv.Grid.Top[0] +6, clNearWhite, "Selected Then Press OK to Save");
|
|
|
|
TextRender_string24(Lv.Grid.Left[1] + 10, Lv.Grid.Top[1] +6, clNearWhite, "Network Mode");
|
|
TextRender_string24(xSingle+30, Lv.Grid.Top[1] + 6, clNearWhite, "Stand Alone");
|
|
TextRender_string24(xSlave+30, Lv.Grid.Top[1] + 6, clNearWhite, "Regional");
|
|
TextRender_string24(xMaster+30, Lv.Grid.Top[1] + 6, clNearWhite, "Central");
|
|
|
|
//TextRender_string24(Lv.Grid.Left[2] + 10, Lv.Grid.Top[2] +6, clNearWhite, "Network Register,Clear");
|
|
//TextRender_string24(Lv.Grid.Left[2] + 10, Lv.Grid.Top[2] +40, clNearWhite, "Ctl ID");
|
|
|
|
TRoundRect::sDrawBySize(xPst0, Lv.Grid.Top[2] + 2, 172, 30, 7, clNearWhite, "Search Online", 8, clNearBlack);
|
|
TRoundRect::sDrawBySize(xPst1, Lv.Grid.Top[2] + 2, 172, 30, 7, clNearWhite, "Clear Masters", 8, clNearBlack);
|
|
TRoundRect::sDrawBySize(xPst2, Lv.Grid.Top[2] + 2, 172, 30, 7, clNearWhite, "Clear Slavers", 8, clNearBlack);
|
|
|
|
TRoundRect::sDrawBySize(xPst0, Lv.Grid.Top[2] + 38, 172, 30, 7, clNearWhite, " Master List ", 8, tColor);
|
|
TRoundRect::sDrawBySize(xPst1, Lv.Grid.Top[2] + 38, 172, 30, 7, clNearWhite, " Slaver List ", 8, tColor);
|
|
TRoundRect::sDrawBySize(xPst2, Lv.Grid.Top[2] + 38, 172, 30, 7, clNearWhite, " Save Masters", 8, tColor);
|
|
TRoundRect::sDrawBySize(xPst3, Lv.Grid.Top[2] + 38, 172, 30, 7, clNearWhite, " Save Slavers", 8, tColor);
|
|
}
|
|
}
|
|
|
|
void TCanNetworkRegister::DrawSelf(void)
|
|
{
|
|
RenderBackGround();
|
|
RectFillRender(Lv.Caption.Left, Lv.Caption.Top, Lv.Caption.Right, Lv.Caption.Bottom, CaptionColor);
|
|
|
|
for(int i=0; i<Lv.Grid.UsingCount; i++)RectFillRender(Lv.Grid.Left[i], Lv.Grid.Top[i], Lv.Grid.Right[i], Lv.Grid.Bottom[i], ItemColor);
|
|
|
|
if(Lv.Panel.Active)RectFillRender(Lv.Panel.Left, Lv.Panel.Top, Lv.Panel.Right, Lv.Panel.Bottom, PanelColor);
|
|
|
|
|
|
IList->Edit[0].Init(Lv.Grid.Left[0] + 100, Lv.Grid.Top[0] +2, 36, 32, 0,0, 1, clNearWhite);
|
|
IList->Edit[0].SetMaxLen(2);
|
|
IList->Edit[0].TextClear();
|
|
IList->Edit[0].SetPstTail();
|
|
|
|
TextRender_string24(Lv.Grid.Left[2] + 124, Lv.Grid.Top[2] +40, clNearWhite, "-");
|
|
|
|
IList->EditCtlNum.Init(Lv.Grid.Left[2] + 84, Lv.Grid.Top[2] +36, 36, 32, 0,0, 1, clNearWhite);
|
|
IList->EditCtlNum.SetMaxLen(2);
|
|
IList->EditCtlNum.TextClear();
|
|
IList->EditCtlNum.SetPstTail();
|
|
IList->EditAddrNum.Init(Lv.Grid.Left[2] + 136, Lv.Grid.Top[2] +36, 36, 32, 0,0, 1, clNearWhite);
|
|
IList->EditAddrNum.SetMaxLen(2);
|
|
IList->EditAddrNum.TextClear();
|
|
IList->EditAddrNum.SetPstTail();
|
|
|
|
|
|
//IList->EditCtlNum.Show();
|
|
//IList->EditAddrNum.Show();
|
|
|
|
DrawFixText();
|
|
|
|
IList->Edit[0].Str.FromUInt2Dg(this->MyNum);
|
|
if( (MyNum) && (MyNum <65) ){
|
|
MyNumValid = 1;
|
|
IList->Edit[0].SelectedColor = clBlue;
|
|
}else{
|
|
MyNumValid = 0;
|
|
IList->Edit[0].SelectedColor = clRed;
|
|
}
|
|
IList->Edit[0].SetPstTail();
|
|
IList->Edit[0].Show();
|
|
|
|
Start2EndNumValid = 1;
|
|
}
|
|
|
|
void TCanNetworkRegister::Show(void)
|
|
{
|
|
IsShowing = 1;
|
|
RenderBackGround();
|
|
DrawSelf();
|
|
DrawNetworkMode();
|
|
Check4Selected();
|
|
}
|
|
|
|
void TCanNetworkRegister::DrawCtlNum()
|
|
{
|
|
IList->Edit[0].Str.FromUInt2Dg(MainCtl.fData.Split.MyNum);
|
|
IList->Edit[0].Show();
|
|
}
|
|
|
|
void TCanNetworkRegister::DrawNetworkMode()
|
|
{
|
|
if(MainCtl.fData.Split.NetworkMode == 1){
|
|
TRoundSquare::sDrawBySize(xSingle, Lv.Grid.Top[1] + 8, dWWidth, dWHeigh, dRoundR, dWdDisabelClr , 0);
|
|
TRoundSquare::sDrawBySize(xSlave, Lv.Grid.Top[1] + 8, dWWidth, dWHeigh, dRoundR, dWdDisabelClr , 0);
|
|
TRoundSquare::sDrawBySize(xMaster, Lv.Grid.Top[1] + 8, dWWidth, dWHeigh, dRoundR, dWdClr , 1);
|
|
}else
|
|
if(MainCtl.fData.Split.NetworkMode == 2){
|
|
TRoundSquare::sDrawBySize(xSingle, Lv.Grid.Top[1] + 8, dWWidth, dWHeigh, dRoundR, dWdDisabelClr , 0);
|
|
TRoundSquare::sDrawBySize(xSlave, Lv.Grid.Top[1] + 8, dWWidth, dWHeigh, dRoundR, dWdClr , 1);
|
|
TRoundSquare::sDrawBySize(xMaster, Lv.Grid.Top[1] + 8, dWWidth, dWHeigh, dRoundR, dWdDisabelClr , 0);
|
|
}else{
|
|
TRoundSquare::sDrawBySize(xSingle, Lv.Grid.Top[1] + 8, dWWidth, dWHeigh, dRoundR, dWdClr , 1);
|
|
TRoundSquare::sDrawBySize(xSlave, Lv.Grid.Top[1] + 8, dWWidth, dWHeigh, dRoundR, dWdDisabelClr , 0);
|
|
TRoundSquare::sDrawBySize(xMaster, Lv.Grid.Top[1] + 8, dWWidth, dWHeigh, dRoundR, dWdDisabelClr , 0);
|
|
}
|
|
}
|
|
|
|
void TCanNetworkRegister::RedrawList()
|
|
{
|
|
if(ListWhat != TCanNetworkRegister::TListWhat::Idle){
|
|
DrawListTitle();
|
|
if(ListWhat == TCanNetworkRegister::TListWhat::Searching){
|
|
DrawSearchingList(ListDrewIndex);
|
|
}else
|
|
if(ListWhat == TCanNetworkRegister::TListWhat::QueMaster){
|
|
DrawMasterList();
|
|
}else
|
|
if(ListWhat == TCanNetworkRegister::TListWhat::QueSlaver){
|
|
DrawSlaverList();
|
|
}
|
|
DrawListSelected();
|
|
}
|
|
}
|
|
|
|
void TCanNetworkRegister::FullRedraw(int Prm)
|
|
{
|
|
if(Prm == 0){
|
|
IsShowing = 1;
|
|
RenderBackGround();
|
|
DrawSelf();
|
|
//DrawListStatic();
|
|
}else
|
|
if(Prm == 1){
|
|
RectFillRender(GuiRedrawDataList[1][0], GuiRedrawDataList[1][1], GuiRedrawDataList[1][2], GuiRedrawDataList[1][3], ContentColor);
|
|
for(int i=0; i<3; i++)RectFillRender(Lv.Grid.Left[i], Lv.Grid.Top[i], Lv.Grid.Right[i], Lv.Grid.Bottom[i], ItemColor);
|
|
TextRender_string24(Lv.Grid.Left[2] + 124, Lv.Grid.Top[2] +40, clNearWhite, "-");
|
|
IList->EditCtlNum.Show();
|
|
IList->EditAddrNum.Show();
|
|
DrawFixText();
|
|
IList->Edit[0].Show();
|
|
DrawNetworkMode();
|
|
RedrawList();
|
|
if(IsPermission){
|
|
PmsIntervene4Gui.ReDraw4GuiRecall();
|
|
}else{
|
|
Check4Selected();
|
|
}
|
|
}
|
|
}
|
|
|
|
//_____________________________________________________________________________________________________________________________
|
|
void TCanNetworkRegister::PermissionCmdReturnDraw()
|
|
{
|
|
if(Lv.Panel.Active)RectFillRender(Lv.Panel.Left, Lv.Panel.Top, Lv.Panel.Right, Lv.Panel.Bottom, PanelColor);
|
|
Check4Selected();
|
|
RedrawList();
|
|
}
|
|
|
|
void TCanNetworkRegister::PermissionCmdGO()
|
|
{
|
|
if(PermissionCmd == 1){
|
|
//Go Register
|
|
ClearSelected();
|
|
ClearData();
|
|
SearchStartNum = 1;
|
|
SearchEndNum = dNETWORK_MACHINE_COUNT;
|
|
if( (SearchStartNum) && (SearchEndNum) ){
|
|
if( (SearchStartNum <=dNETWORK_MACHINE_COUNT) && (SearchEndNum <=dNETWORK_MACHINE_COUNT) && (SearchStartNum <= SearchEndNum) ){
|
|
GoStartNum = SearchStartNum;
|
|
GoEndNum = SearchEndNum;
|
|
}else{
|
|
GoStartNum = 1;
|
|
GoEndNum = dNETWORK_MACHINE_COUNT;
|
|
}
|
|
}else
|
|
if( SearchStartNum || SearchEndNum){
|
|
GoStartNum = 1;
|
|
GoEndNum = dNETWORK_MACHINE_COUNT;
|
|
}else{
|
|
GoStartNum = 1;
|
|
GoEndNum = dNETWORK_MACHINE_COUNT;
|
|
}
|
|
SearchingTick = 0;
|
|
IsOnSearching = 1;
|
|
ListWhat = TCanNetworkRegister::TListWhat::Searching;
|
|
DrawListTitle();
|
|
}else
|
|
if(PermissionCmd == 2){
|
|
//Clear Master
|
|
int DoAction =0;
|
|
MasterListCount = 0;
|
|
for(int i=0; i<dNETWORK_MACHINE_MASTER_COUNT; i++)MasterList[i] =0;
|
|
if(MainCtl.fData.Split.NetworkMode == 1){
|
|
if(DoAction){
|
|
Record.SaveNwM2MCfg(MasterListCount, MasterList);
|
|
Record.ReadNwM2MCfg();
|
|
Record.OperateAdd_RegCanNetwork(3, MainCtl.fData.Split.MyNum, MasterListCount);
|
|
unsigned int Failed = 0;
|
|
if(ProtoC2C.M2MList.Cnt != MasterListCount){
|
|
Failed=1;
|
|
}
|
|
for(int i=0; (i<ProtoC2C.M2MList.Cnt) and (i<dNETWORK_MACHINE_MASTER_COUNT); i++){
|
|
if(ProtoC2C.M2MList.Items[i] != MasterList[i]){
|
|
Failed=1;
|
|
break;
|
|
}
|
|
}
|
|
if( Failed == 0 ){
|
|
if(LanguageEnCn==0)TextRender_string24 (Lv.Panel.Left +600, Lv.Panel.Top +2, clNearBlack, PanelColor, "清除成功 ");
|
|
else TextRender_string24 (Lv.Panel.Left +600, Lv.Panel.Top +2, clNearBlack, PanelColor, "Cleared ");
|
|
SendClearMasterList(MasterListCount, MasterList);
|
|
}else{
|
|
if(LanguageEnCn==0)TextRender_string24 (Lv.Panel.Left +600, Lv.Panel.Top +2, clNearBlack, PanelColor, "清除失败 ");
|
|
else TextRender_string24 (Lv.Panel.Left +600, Lv.Panel.Top +2, clNearBlack, PanelColor, "Failed To Clear ");
|
|
}
|
|
}
|
|
}
|
|
}else
|
|
if(PermissionCmd == 3){
|
|
//Clear Slaver
|
|
for(int i=0; i<dNETWORK_MACHINE_COUNT; i++)CtlList[i] =0;
|
|
Record.SaveNwCfg(0, 0, CtlList);
|
|
Record.ReadNwCfg();
|
|
Record.OperateAdd_RegCanNetwork(1, MainCtl.fData.Split.MyNum, 0);
|
|
if( (ProtoC2C.MasterNum == 0) && (0 == ProtoC2C.SlaveCount) ){
|
|
if(LanguageEnCn==0)TextRender_string24 (Lv.Panel.Left +600, Lv.Panel.Top +2, clNearBlack, PanelColor, "清除成功 ");
|
|
else TextRender_string24 (Lv.Panel.Left +600, Lv.Panel.Top +2, clNearBlack, PanelColor, "Cleared ");
|
|
if(MainCtl.fData.Split.NetworkMode == 1)SendNwList();
|
|
ProtoC2C.SyncCheckOnline();
|
|
}else{
|
|
if(LanguageEnCn==0)TextRender_string24 (Lv.Panel.Left +600, Lv.Panel.Top +2, clNearBlack, PanelColor, "清除失败 ");
|
|
else TextRender_string24 (Lv.Panel.Left +600, Lv.Panel.Top +2, clNearBlack, PanelColor, "Failed To Clear ");
|
|
}
|
|
}else
|
|
if(PermissionCmd == 4){
|
|
//Save Master
|
|
//In File Record.cpp; void SaveNwM2MCfg(unsigned char aCnt, unsigned char *aList);
|
|
//In File Record.cpp; void ReadNwM2MCfg();
|
|
int DoAction =0;
|
|
MasterListCount = 0;
|
|
for(int i=0; i<dNETWORK_MACHINE_MASTER_COUNT; i++)MasterList[i] =0;
|
|
if(MainCtl.fData.Split.NetworkMode == 1){
|
|
if(ListWhat == Searching){
|
|
for(int i=0; i<dNETWORK_MACHINE_COUNT; i++){
|
|
if(MasterListCount>=dNETWORK_MACHINE_MASTER_COUNT)break;
|
|
if(CtlSelectedList[i]){
|
|
unsigned char tType = GetRecType(i+1);
|
|
if(MainCtl.fData.Split.MyNum == (i+1))
|
|
tType = dNetworkTypeMaster;
|
|
if(tType == dNetworkTypeMaster){
|
|
MasterList[MasterListCount]=i+1;
|
|
MasterListCount++;
|
|
}
|
|
}
|
|
}
|
|
//Save And Send Master List Here
|
|
DoAction =1;
|
|
}else
|
|
if(ListWhat == QueMaster){
|
|
for(int i=0; i<dNETWORK_MACHINE_COUNT; i++){
|
|
if(MasterListCount>=dNETWORK_MACHINE_MASTER_COUNT)break;
|
|
if(CtlSelectedList[i]){
|
|
MasterList[MasterListCount]=i+1;
|
|
MasterListCount++;
|
|
}
|
|
}
|
|
DoAction =2;
|
|
//Save And Send Master List Here
|
|
}
|
|
if(DoAction){
|
|
Record.SaveNwM2MCfg(MasterListCount, MasterList);
|
|
SendMasterList(MasterListCount, MasterList);
|
|
Record.ReadNwM2MCfg();
|
|
Record.OperateAdd_RegCanNetwork(3, MainCtl.fData.Split.MyNum, MasterListCount);
|
|
unsigned int Failed = 0;
|
|
unsigned int tCnt =0;
|
|
if(ProtoC2C.M2MList.Cnt != MasterListCount){
|
|
Failed=1;
|
|
}
|
|
for(int i=0; i<ProtoC2C.M2MList.Cnt; i++){
|
|
if(ProtoC2C.M2MList.Items[i] != MasterList[i]){
|
|
Failed=1;
|
|
break;
|
|
}
|
|
}
|
|
if( Failed == 0 ){
|
|
if(LanguageEnCn==0)TextRender_string24 (Lv.Panel.Left +600, Lv.Panel.Top +2, clNearBlack, PanelColor, "保存成功 ");
|
|
else TextRender_string24 (Lv.Panel.Left +600, Lv.Panel.Top +2, clNearBlack, PanelColor, "Save Completed ");
|
|
}else{
|
|
if(LanguageEnCn==0)TextRender_string24 (Lv.Panel.Left +600, Lv.Panel.Top +2, clNearBlack, PanelColor, "保存失败 ");
|
|
else TextRender_string24 (Lv.Panel.Left +600, Lv.Panel.Top +2, clNearBlack, PanelColor, "Failed To Save ");
|
|
}
|
|
}
|
|
}
|
|
}else
|
|
if(PermissionCmd == 5){
|
|
//Save Slaver
|
|
int DoAction =0;
|
|
Count=0;
|
|
if(MainCtl.fData.Split.NetworkMode == 1){
|
|
for(int i=0; i<dNETWORK_MACHINE_COUNT; i++)CtlList[i] =0;
|
|
if(ListWhat == Searching){
|
|
for(int i=0; i<dNETWORK_MACHINE_COUNT; i++){
|
|
if(CtlSelectedList[i]){
|
|
unsigned char tType = GetRecType(i+1);
|
|
if(tType == dNetworkTypeSlave){
|
|
CtlList[Count]=i+1;
|
|
Count++;
|
|
}
|
|
}
|
|
}
|
|
//Save And Send Slaver List Here
|
|
DoAction =1;
|
|
}else
|
|
if(ListWhat == QueSlaver){
|
|
for(int i=0; i<dNETWORK_MACHINE_COUNT; i++){
|
|
if(CtlSelectedList[i]){
|
|
CtlList[Count]=i+1;
|
|
Count++;
|
|
}
|
|
}
|
|
//Save And Send Slaver List Here
|
|
DoAction =1;
|
|
}
|
|
if(DoAction){
|
|
Record.SaveNwCfg(MainCtl.fData.Split.MyNum, Count, CtlList);
|
|
SendNwList();
|
|
Record.ReadNwCfg();
|
|
Record.OperateAdd_RegCanNetwork(1, MainCtl.fData.Split.MyNum, Count);
|
|
if( (ProtoC2C.MasterNum == MainCtl.fData.Split.MyNum) && (Count == ProtoC2C.SlaveCount) ){
|
|
if(LanguageEnCn==0)TextRender_string24 (Lv.Panel.Left +600, Lv.Panel.Top +2, clNearBlack, PanelColor, "保存成功 ");
|
|
else TextRender_string24 (Lv.Panel.Left +600, Lv.Panel.Top +2, clNearBlack, PanelColor, "Save Completed ");
|
|
SendNwList();
|
|
ProtoC2C.SyncCheckOnline();
|
|
}else{
|
|
if(LanguageEnCn==0)TextRender_string24 (Lv.Panel.Left +600, Lv.Panel.Top +2, clNearBlack, PanelColor, "保存失败 ");
|
|
else TextRender_string24 (Lv.Panel.Left +600, Lv.Panel.Top +2, clNearBlack, PanelColor, "Failed To Save ");
|
|
}
|
|
}
|
|
}
|
|
}else
|
|
if(PermissionCmd == 11){
|
|
Record.WriteMainSetMainCtl(0, MainCtl.fData.Split.MyNum);
|
|
sReadNetMode();
|
|
DrawFixText();
|
|
DrawNetworkMode();
|
|
ShowSaveMyNum(1);
|
|
}else
|
|
if(PermissionCmd == 12){
|
|
Record.WriteMainSetMainCtl(2, MainCtl.fData.Split.MyNum);
|
|
sReadNetMode();
|
|
DrawFixText();
|
|
DrawNetworkMode();
|
|
ShowSaveMyNum(1);
|
|
}else
|
|
if(PermissionCmd == 13){
|
|
Record.WriteMainSetMainCtl(1, MainCtl.fData.Split.MyNum);
|
|
sReadNetMode();
|
|
DrawFixText();
|
|
DrawNetworkMode();
|
|
ShowSaveMyNum(1);
|
|
}else
|
|
if(PermissionCmd == 21){
|
|
Record.WriteMainSetMainCtl(MainCtl.fData.Split.NetworkMode, this->MyNum);
|
|
sReadNetMode();
|
|
this->MyNum = MainCtl.fData.Split.MyNum;
|
|
IList->Edit[0].Str.FromUInt2Dg(this->MyNum);
|
|
if( (MyNum) && (MyNum <65) ){
|
|
MyNumValid = 1;
|
|
IList->Edit[0].SelectedColor = clBlue;
|
|
}else{
|
|
MyNumValid = 0;
|
|
IList->Edit[0].SelectedColor = clRed;
|
|
}
|
|
IList->Edit[0].SetPstTail();
|
|
IList->Edit[0].Show();
|
|
ShowSaveMyNum(1);
|
|
}
|
|
}
|
|
|
|
void TCanNetworkRegister::ShowSaveMyNum(int aPrm)
|
|
{
|
|
if(LanguageEnCn==0){
|
|
if(aPrm){
|
|
TextRender_string24(Lv.Grid.Left[0] + 700, Lv.Grid.Top[0] +6, clNearWhite, ItemColor, "已保存");
|
|
JustShowingSaving =1;
|
|
ShowingSavingMyNum =1;
|
|
}else{
|
|
TextRender_string24(Lv.Grid.Left[0] + 700, Lv.Grid.Top[0] +6, clNearWhite, ItemColor, " ");
|
|
ShowingSavingMyNum =0;
|
|
}
|
|
}else{
|
|
if(aPrm){
|
|
TextRender_string24(Lv.Grid.Left[0] + 700, Lv.Grid.Top[0] +6, clNearWhite, ItemColor, "Saved ");
|
|
JustShowingSaving =1;
|
|
ShowingSavingMyNum =1;
|
|
}else{
|
|
TextRender_string24(Lv.Grid.Left[0] + 700, Lv.Grid.Top[0] +6, clNearWhite, ItemColor, " ");
|
|
ShowingSavingMyNum =0;
|
|
}
|
|
}
|
|
}
|
|
|
|
void TCanNetworkRegister::sReadNetMode()
|
|
{
|
|
unsigned int aAddr;
|
|
int i;
|
|
unsigned char tData[4];
|
|
//Read ExistTable
|
|
aAddr = dEepAddrMainSet;
|
|
sDelayMs(10);
|
|
eeprom_read_byte(0, aAddr, tData, 2);
|
|
|
|
MainCtl.fData.Split.MyNum = tData[0];
|
|
MainCtl.fData.Split.NetworkMode = tData[1];
|
|
|
|
if( (MainCtl.fData.Split.MyNum == 0) || (MainCtl.fData.Split.MyNum > dNETWORK_MACHINE_COUNT) ) {
|
|
MainCtl.fData.Split.MyNum =1;
|
|
MainCtl.fData.Split.NetworkMode =0;
|
|
}else{
|
|
if(MainCtl.fData.Split.NetworkMode > 2)MainCtl.fData.Split.NetworkMode =0;
|
|
}
|
|
|
|
}
|
|
|
|
void TCanNetworkRegister::ClearData()
|
|
{
|
|
int i,x;
|
|
unsigned int aAddr;
|
|
//Clear
|
|
for(i=0; i<64; i++){
|
|
*(volatile unsigned char *)(dAddrSdRam_TypeList + i) = 0;
|
|
*(volatile unsigned char *)(dAddrSdRam_DescpGotList + i) = 0;
|
|
*(volatile unsigned char *)(dAddrSdRam_ExistTable +i) =0;
|
|
*(volatile unsigned char *)(dAddrSdRam_LinkMaster + i) = 0;
|
|
}
|
|
for(i=0; i<64; i++){
|
|
aAddr = dAddrSdRam_DescpContent + i*32;
|
|
for(x=0; x<32; x++){
|
|
*(volatile unsigned char *)(aAddr + x) = 0;
|
|
}
|
|
}
|
|
for(i=0; i<dNETWORK_MACHINE_COUNT; i++){
|
|
CtlList[i]=0;
|
|
CtlSelectedList[i] =0;
|
|
}
|
|
Count = 0;
|
|
FoundIndex = 0;
|
|
aNewGot = 0;
|
|
SearchNumExist = 0;
|
|
ListDrewIndex = 0;
|
|
SearchingNum =1;
|
|
SearchingTick =0;
|
|
Done = 0;
|
|
}
|
|
|
|
int TCanNetworkRegister::CheckData(int SaveWhat)
|
|
{
|
|
int i,x;
|
|
unsigned int aAddr;
|
|
unsigned char tType, CtlNum;
|
|
SelectedList = 0;
|
|
if(SaveWhat == 0){
|
|
//Save Master List
|
|
x=0;
|
|
for(i=0; i<dNETWORK_MACHINE_COUNT; i++){
|
|
CtlNum = i+1;
|
|
if(CtlSelectedList[i]){
|
|
aAddr = dAddrSdRam_TypeList + x;
|
|
tType = *(volatile unsigned char *)(aAddr);
|
|
if( (tType == dNetworkTypeMaster) && ( (CtlNum >ProtoC2C.CtlMask.EndNum) || (CtlNum < ProtoC2C.CtlMask.StartNum) ) ) {
|
|
CtlList[x] = i;
|
|
x++;
|
|
}else{
|
|
CtlSelectedList[i] =0;
|
|
DrawSearchingItem(i+1);
|
|
}
|
|
}
|
|
}
|
|
SelectedList = x;
|
|
}else{
|
|
//Save Slaver List
|
|
x=0;
|
|
for(i=0; i<dNETWORK_MACHINE_COUNT; i++){
|
|
if(CtlSelectedList[i]){
|
|
aAddr = dAddrSdRam_TypeList + x;
|
|
tType = *(volatile unsigned char *)(aAddr);
|
|
if( (tType == dNetworkTypeSlave) && ( (CtlNum >ProtoC2C.CtlMask.EndNum) || (CtlNum < ProtoC2C.CtlMask.StartNum) ) ) {
|
|
CtlList[x] = i;
|
|
x++;
|
|
}else{
|
|
CtlSelectedList[i] =0;
|
|
DrawSearchingItem(i+1);
|
|
}
|
|
}
|
|
}
|
|
SelectedList = x;
|
|
}
|
|
return SelectedList;
|
|
}
|
|
|
|
void TCanNetworkRegister::ShowSearchCompleted()
|
|
{
|
|
int x, pNum;
|
|
unsigned int aAddr;
|
|
|
|
IncMaster = 0;
|
|
for(x=0; x<Count; x++){
|
|
aAddr = dAddrSdRam_ExistTable + x;
|
|
pNum = *(volatile unsigned char *)(aAddr);
|
|
aAddr = dAddrSdRam_TypeList + x;
|
|
pNum = *(volatile unsigned char *)(aAddr);
|
|
|
|
if(pNum == dNetworkTypeMaster){
|
|
IncMaster =1;
|
|
}
|
|
}
|
|
|
|
for(x=0; x<Count; x++){
|
|
aAddr = dAddrSdRam_ExistTable + x;
|
|
CtlList[x] = *(volatile unsigned char *)(aAddr);
|
|
}
|
|
|
|
if(LanguageEnCn==0){
|
|
if(MainCtl.fData.Split.NetworkMode == 1){
|
|
if(IncMaster == 0){
|
|
TextRender_string24(ResultTipPoint.x, ResultTipPoint.y, clNearWhite, "搜索完成,正在保存");
|
|
}else{
|
|
TextRender_string24(ResultTipPoint.x, ResultTipPoint.y, clNearWhite, "搜索完成,正在保存");
|
|
}
|
|
}else{
|
|
TextRender_string24(ResultTipPoint.x, ResultTipPoint.y, clNearWhite, "搜索完成,只有集中机可操作保存");
|
|
}
|
|
}else{
|
|
if(MainCtl.fData.Split.NetworkMode == 1){
|
|
if(IncMaster == 0){
|
|
TextRender_string24(ResultTipPoint.x, ResultTipPoint.y, clNearWhite, "Scan Completed,Saving");
|
|
}else{
|
|
TextRender_string24(ResultTipPoint.x, ResultTipPoint.y, clNearWhite, "Scan Completed,Saving");
|
|
}
|
|
}else{
|
|
TextRender_string24(ResultTipPoint.x, ResultTipPoint.y, clNearWhite, "Scan Completed, No Saving");
|
|
}
|
|
}
|
|
}
|
|
|
|
void TCanNetworkRegister::DrawListDeSelected()
|
|
{
|
|
int x1, y1, x2, y2;
|
|
x1 = Lv.Panel.Left + 6 + (ListX * 131 ) -2;
|
|
y1 = Lv.Panel.Top +2 +31 + (ListY * 31 ) -2;
|
|
x2 = x1 + 130;
|
|
y2 = y1 + 28;
|
|
VertLineRender(x1, y1, y2-y1+1, PanelColor);
|
|
VertLineRender(x1-1, y1, y2-y1+1, PanelColor);
|
|
VertLineRender(x2, y1, y2-y1+1, PanelColor);
|
|
VertLineRender(x2+1, y1, y2-y1+1, PanelColor);
|
|
HorizLineRender(x1, y1, x2-x1-1, PanelColor);
|
|
HorizLineRender(x1, y1-1, x2-x1-1, PanelColor);
|
|
HorizLineRender(x1, y2, x2-x1-1, PanelColor);
|
|
HorizLineRender(x1, y2+1, x2-x1-1, PanelColor);
|
|
}
|
|
|
|
void TCanNetworkRegister::DrawListSelected()
|
|
{
|
|
int x1, y1, x2, y2;
|
|
x1 = Lv.Panel.Left + 6 + (ListX * 131 ) -2;
|
|
y1 = Lv.Panel.Top +2 +31 + (ListY * 31 ) -2;
|
|
x2 = x1 + 130;
|
|
y2 = y1 + 28;
|
|
VertLineRender(x1, y1, y2-y1+1, clBlue);
|
|
VertLineRender(x1-1, y1, y2-y1+1, clBlue);
|
|
VertLineRender(x2, y1, y2-y1+1, clBlue);
|
|
VertLineRender(x2+1, y1, y2-y1+1, clBlue);
|
|
HorizLineRender(x1, y1, x2-x1-1, clBlue);
|
|
HorizLineRender(x1, y1-1, x2-x1-1, clBlue);
|
|
HorizLineRender(x1, y2, x2-x1-1, clBlue);
|
|
HorizLineRender(x1, y2+1, x2-x1-1, clBlue);
|
|
}
|
|
|
|
void TCanNetworkRegister::DrawSearchingItem(int aInx)
|
|
{
|
|
int xPos, yPos, x,y;
|
|
unsigned char aMcType, aLM;
|
|
unsigned int aAddr;
|
|
unsigned int Color, bColor;
|
|
if(aInx==0)return;
|
|
if(aInx>dNETWORK_MACHINE_COUNT)return;
|
|
|
|
y = (aInx-1) / ListItemsX;
|
|
x = (aInx-1) % ListItemsX;
|
|
|
|
xPos = Lv.Panel.Left +6 + (x * 131);
|
|
yPos = Lv.Panel.Top +2 + 31 + (y * 31);
|
|
|
|
aAddr = dAddrSdRam_TypeList + aInx-1;
|
|
aMcType = *(volatile unsigned char *)(aAddr);
|
|
aAddr = dAddrSdRam_LinkMaster + aInx-1;
|
|
aLM = *(volatile unsigned char *)(aAddr);
|
|
TMyString::sClear(Text);
|
|
TMyString::sFrom2Dg(aInx, Text);
|
|
//TMyString::sAddOnChar(':', Text);
|
|
if(aMcType == dNetworkTypeMaster){
|
|
Color=clNearBlack;
|
|
TMyString::sAddOnStr("F-M C", Text);
|
|
TMyString::sAddOn2Dg(aLM % 100, Text);
|
|
}else
|
|
if(aMcType == dNetworkTypeSlave){
|
|
if(aInx == MainCtl.fData.Split.MyNum){
|
|
Color=clRed;
|
|
TMyString::sAddOnStr("Dual ", Text);
|
|
}else{
|
|
Color=clNearBlack;
|
|
TMyString::sAddOnStr("F-S M", Text);
|
|
|
|
if(aLM)
|
|
TMyString::sAddOn2Dg(aLM % 100, Text);
|
|
else
|
|
TMyString::sAddOnStr("--", Text);
|
|
}
|
|
}else
|
|
if(aMcType == dNetworkTypeDual){
|
|
Color=clRed;
|
|
TMyString::sAddOnStr("Dual ", Text);
|
|
}else{
|
|
if(aInx == MainCtl.fData.Split.MyNum){
|
|
Color=clNearBlack;
|
|
if(MainCtl.fData.Split.NetworkMode == 1){
|
|
TMyString::sAddOnStr("Self C", Text);
|
|
TMyString::sAddOn2Dg(ProtoC2C.SlaveCount % 100, Text);
|
|
}else
|
|
if(MainCtl.fData.Split.NetworkMode == 2){
|
|
TMyString::sAddOnStr("Self M", Text);
|
|
TMyString::sAddOn2Dg(ProtoC2C.MasterNum % 100, Text);
|
|
}else{
|
|
TMyString::sAddOnStr("Self ", Text);
|
|
}
|
|
}else{
|
|
Color=clSilver;
|
|
TMyString::sAddOnStr("nil ", Text);
|
|
}
|
|
}
|
|
if(CtlSelectedList[aInx-1])bColor = clDeepGreen;
|
|
else bColor = PanelColor;
|
|
TextRender_string24(xPos, yPos, Color, bColor, Text);
|
|
}
|
|
|
|
void TCanNetworkRegister::DrawMasterItem(int aInx)
|
|
{
|
|
int xPos, yPos, x,y;
|
|
unsigned char aMcType, aLM;
|
|
unsigned int aAddr;
|
|
unsigned int Color, bColor;
|
|
|
|
if(aInx==0)return;
|
|
if(aInx>dNETWORK_MACHINE_COUNT)return;
|
|
|
|
y = (aInx-1) / ListItemsX;
|
|
x = (aInx-1) % ListItemsX;
|
|
|
|
xPos = Lv.Panel.Left +6 + (x * 131);
|
|
yPos = Lv.Panel.Top +2 + 31 + (y * 31);
|
|
|
|
aAddr = dAddrSdRam_TypeList + aInx-1;
|
|
aMcType = *(volatile unsigned char *)(aAddr);
|
|
TMyString::sClear(Text);
|
|
TMyString::sFrom2Dg(aInx, Text);
|
|
//TMyString::sAddOnChar(':', Text);
|
|
if(aMcType == dNetworkTypeMaster){
|
|
Color=clNearBlack;
|
|
TMyString::sAddOnStr("F-M ", Text);
|
|
}else{
|
|
Color=clSilver;
|
|
TMyString::sAddOnStr("nil ", Text);
|
|
}
|
|
if(CtlSelectedList[aInx-1])bColor = clDeepGreen;
|
|
else bColor = PanelColor;
|
|
TextRender_string24(xPos, yPos, Color, bColor, Text);
|
|
}
|
|
|
|
void TCanNetworkRegister::DrawSlaverItem(int aInx)
|
|
{
|
|
int xPos, yPos, x,y;
|
|
unsigned char aMcType, aLM;
|
|
unsigned int aAddr;
|
|
unsigned int Color, bColor;
|
|
|
|
if(aInx==0)return;
|
|
if(aInx>dNETWORK_MACHINE_COUNT)return;
|
|
|
|
y = (aInx-1) / ListItemsX;
|
|
x = (aInx-1) % ListItemsX;
|
|
|
|
xPos = Lv.Panel.Left +6 + (x * 131);
|
|
yPos = Lv.Panel.Top +2 + 31 + (y * 31);
|
|
|
|
aAddr = dAddrSdRam_TypeList + aInx-1;
|
|
aMcType = *(volatile unsigned char *)(aAddr);
|
|
TMyString::sClear(Text);
|
|
TMyString::sFrom2Dg(aInx, Text);
|
|
//TMyString::sAddOnChar(':', Text);
|
|
if(aMcType == dNetworkTypeMaster){
|
|
Color=clBlack;
|
|
TMyString::sAddOnStr("FMaster", Text);
|
|
}else
|
|
if(aMcType == dNetworkTypeSlave){
|
|
Color=clNavy;
|
|
TMyString::sAddOnStr("F-S ", Text);
|
|
}else{
|
|
Color=clSilver;
|
|
TMyString::sAddOnStr("nil ", Text);
|
|
}
|
|
if(CtlSelectedList[aInx-1])bColor = clDeepGreen;
|
|
else bColor = PanelColor;
|
|
TextRender_string24(xPos, yPos, Color, bColor, Text);
|
|
}
|
|
|
|
void TCanNetworkRegister::DrawListTitle()
|
|
{
|
|
if(Lv.Panel.Active)RectFillRender(Lv.Panel.Left, Lv.Panel.Top, Lv.Panel.Right, Lv.Panel.Bottom, PanelColor);
|
|
|
|
if(LanguageEnCn==0){
|
|
TextRender_string24(Lv.Panel.Left +6, Lv.Panel.Top +2, clNearWhite, PanelColor, "F:火灾报警控制器 M:集中机 S:区域机");
|
|
}else{
|
|
TextRender_string24(Lv.Panel.Left +6, Lv.Panel.Top +2, clNearWhite, PanelColor, "F:Fire Alram Ctrl M:Master S:Slaver");
|
|
}
|
|
}
|
|
|
|
void TCanNetworkRegister::DrawSearchingList(int MaxInx)
|
|
{
|
|
unsigned int i;
|
|
for(i=1; i<=MaxInx; i++){
|
|
DrawSearchingItem(i);
|
|
}
|
|
}
|
|
|
|
void TCanNetworkRegister::DrawMasterList(int MaxInx)
|
|
{
|
|
unsigned int i;
|
|
for(i=1; i<=MaxInx; i++){
|
|
DrawMasterItem(i);
|
|
}
|
|
}
|
|
|
|
void TCanNetworkRegister::DrawSlaverList(int MaxInx)
|
|
{
|
|
unsigned int i;
|
|
for(i=1; i<=MaxInx; i++){
|
|
DrawSlaverItem(i);
|
|
}
|
|
}
|
|
|
|
void TCanNetworkRegister::ClearSelected()
|
|
{
|
|
char *tText;
|
|
switch(CtlIndex){
|
|
case 0:
|
|
IList->Edit[0].Selected =0;
|
|
IList->Edit[0].Show();
|
|
break;
|
|
case 1:
|
|
TRoundSquare::sSelected(xSingle, Lv.Grid.Top[1]+8, dWWidth, dWHeigh, 4, ItemColor);
|
|
break;
|
|
case 2:
|
|
TRoundSquare::sSelected(xSlave, Lv.Grid.Top[1]+8, dWWidth, dWHeigh, 4, ItemColor);
|
|
break;
|
|
case 3:
|
|
TRoundSquare::sSelected(xMaster, Lv.Grid.Top[1]+8, dWWidth, dWHeigh, 4, ItemColor);
|
|
break;
|
|
}
|
|
if(LanguageEnCn==0){
|
|
switch(CtlIndex){
|
|
case 4:
|
|
TRoundRect::sDrawBySize(xPst0, Lv.Grid.Top[2] + 2, 172, 30, 7, clNearWhite, "搜索在线机器", 14, clNearBlack);
|
|
break;
|
|
case 5:
|
|
TRoundRect::sDrawBySize(xPst1, Lv.Grid.Top[2] + 2, 172, 30, 7, clNearWhite, "清集中机列表", 14, clNearBlack);
|
|
break;
|
|
case 6:
|
|
TRoundRect::sDrawBySize(xPst2, Lv.Grid.Top[2] + 2, 172, 30, 7, clNearWhite, "清区域机列表", 14, clNearBlack);
|
|
break;
|
|
case 7:
|
|
TRoundRect::sDrawBySize(xPst0, Lv.Grid.Top[2] + 38, 172, 30, 7, clNearWhite, "查集中机列表", 14, clNearBlack);
|
|
break;
|
|
case 8:
|
|
TRoundRect::sDrawBySize(xPst1, Lv.Grid.Top[2] + 38, 172, 30, 7, clNearWhite, "查区域机列表", 14, clNearBlack);
|
|
break;
|
|
case 9:
|
|
TRoundRect::sDrawBySize(xPst2, Lv.Grid.Top[2] + 38, 172, 30, 7, clNearWhite, "存集中机列表", 14, clNearBlack);
|
|
break;
|
|
case 10:
|
|
TRoundRect::sDrawBySize(xPst3, Lv.Grid.Top[2] + 38, 172, 30, 7, clNearWhite, "存区域机列表", 14, clNearBlack);
|
|
break;
|
|
}
|
|
}else{
|
|
switch(CtlIndex){
|
|
case 4:
|
|
TRoundRect::sDrawBySize(xPst0, Lv.Grid.Top[2] + 2, 172, 30, 7, clNearWhite, "Search Online", 8, clNearBlack);
|
|
break;
|
|
case 5:
|
|
TRoundRect::sDrawBySize(xPst1, Lv.Grid.Top[2] + 2, 172, 30, 7, clNearWhite, "Clear Masters", 8, clNearBlack);
|
|
break;
|
|
case 6:
|
|
TRoundRect::sDrawBySize(xPst2, Lv.Grid.Top[2] + 2, 172, 30, 7, clNearWhite, "Clear Salvers", 8, clNearBlack);
|
|
break;
|
|
case 7:
|
|
TRoundRect::sDrawBySize(xPst0, Lv.Grid.Top[2] + 38, 172, 30, 7, clNearWhite, " Master List ", 8, clNearBlack);
|
|
break;
|
|
case 8:
|
|
TRoundRect::sDrawBySize(xPst1, Lv.Grid.Top[2] + 38, 172, 30, 7, clNearWhite, " Slaver List ", 8, clNearBlack);
|
|
break;
|
|
case 9:
|
|
TRoundRect::sDrawBySize(xPst2, Lv.Grid.Top[2] + 38, 172, 30, 7, clNearWhite, " Save Master ", 8, clNearBlack);
|
|
break;
|
|
case 10:
|
|
TRoundRect::sDrawBySize(xPst3, Lv.Grid.Top[2] + 38, 172, 30, 7, clNearWhite, " Save Master ", 8, clNearBlack);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
void TCanNetworkRegister::Check4Selected()
|
|
{
|
|
char *tText;
|
|
switch(CtlIndex){
|
|
case 0:
|
|
IList->Edit[0].Selected =1;
|
|
IList->Edit[0].SetPstTail();
|
|
IList->Edit[0].Show();
|
|
break;
|
|
case 1:
|
|
TRoundSquare::sSelected(xSingle, Lv.Grid.Top[1]+8, dWWidth, dWHeigh, 4, clNearWhite);
|
|
break;
|
|
case 2:
|
|
TRoundSquare::sSelected(xSlave, Lv.Grid.Top[1]+8, dWWidth, dWHeigh, 4, clNearWhite);
|
|
break;
|
|
case 3:
|
|
TRoundSquare::sSelected(xMaster, Lv.Grid.Top[1]+8, dWWidth, dWHeigh, 4, clNearWhite);
|
|
break;
|
|
}
|
|
if(LanguageEnCn==0){
|
|
switch(CtlIndex){
|
|
case 4:
|
|
TRoundRect::sDrawBySize(xPst0, Lv.Grid.Top[2] + 2, 172, 30, 7, clBlue, "搜索在线机器", 14, clNearWhite);
|
|
break;
|
|
case 5:
|
|
TRoundRect::sDrawBySize(xPst1, Lv.Grid.Top[2] + 2, 172, 30, 7, clBlue, "清集中机列表", 14, clNearWhite);
|
|
break;
|
|
case 6:
|
|
TRoundRect::sDrawBySize(xPst2, Lv.Grid.Top[2] + 2, 172, 30, 7, clBlue, "清区域机列表", 14, clNearWhite);
|
|
break;
|
|
case 7:
|
|
TRoundRect::sDrawBySize(xPst0, Lv.Grid.Top[2] + 38, 172, 30, 7, clBlue, "查集中机列表", 14, clNearWhite);
|
|
break;
|
|
case 8:
|
|
TRoundRect::sDrawBySize(xPst1, Lv.Grid.Top[2] + 38, 172, 30, 7, clBlue, "查区域机列表", 14, clNearWhite);
|
|
break;
|
|
case 9:
|
|
TRoundRect::sDrawBySize(xPst2, Lv.Grid.Top[2] + 38, 172, 30, 7, clBlue, "存集中机列表", 14, clNearWhite);
|
|
break;
|
|
case 10:
|
|
TRoundRect::sDrawBySize(xPst3, Lv.Grid.Top[2] + 38, 172, 30, 7, clBlue, "存区域机列表", 14, clNearWhite);
|
|
break;
|
|
}
|
|
}else{
|
|
switch(CtlIndex){
|
|
case 4:
|
|
TRoundRect::sDrawBySize(xPst0, Lv.Grid.Top[2] + 2, 172, 30, 7, clBlue, "Search Online", 8, clNearWhite);
|
|
break;
|
|
case 5:
|
|
TRoundRect::sDrawBySize(xPst1, Lv.Grid.Top[2] + 2, 172, 30, 7, clBlue, "Clear Masters", 8, clNearWhite);
|
|
break;
|
|
case 6:
|
|
TRoundRect::sDrawBySize(xPst2, Lv.Grid.Top[2] + 2, 172, 30, 7, clBlue, "Clear Salvers", 8, clNearWhite);
|
|
break;
|
|
case 7:
|
|
TRoundRect::sDrawBySize(xPst0, Lv.Grid.Top[2] + 38, 172, 30, 7, clBlue, " Masters List", 8, clNearWhite);
|
|
break;
|
|
case 8:
|
|
TRoundRect::sDrawBySize(xPst1, Lv.Grid.Top[2] + 38, 172, 30, 7, clBlue, " Slavers List", 8, clNearWhite);
|
|
break;
|
|
case 9:
|
|
TRoundRect::sDrawBySize(xPst2, Lv.Grid.Top[2] + 38, 172, 30, 7, clBlue, " Save Masters", 8, clNearWhite);
|
|
break;
|
|
case 10:
|
|
TRoundRect::sDrawBySize(xPst3, Lv.Grid.Top[2] + 38, 172, 30, 7, clBlue, " Save Salvers", 8, clNearWhite);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
void TCanNetworkRegister::SendNwList()
|
|
{
|
|
ProtoC2C.TxMsg.Data.Routing =0;
|
|
ProtoC2C.TxMsg.Data.Priority =1;
|
|
|
|
//First Pkg
|
|
ProtoC2C.TxMsg.Data.Cmd = dNetworkCmd;
|
|
ProtoC2C.TxMsg.Data.Len = 6;
|
|
ProtoC2C.TxMsg.Data.Data[0] =0;
|
|
ProtoC2C.TxMsg.Data.Data[1] = MainCtl.fData.Split.MyNum;
|
|
ProtoC2C.TxMsg.Data.Data[2] = CmdC2C_SaveData;
|
|
ProtoC2C.TxMsg.Data.Data[3] = Count;
|
|
ProtoC2C.TxMsg.Data.Data[4] = ProtoC2C.CtlMask.StartNum;
|
|
ProtoC2C.TxMsg.Data.Data[5] = ProtoC2C.CtlMask.EndNum;
|
|
|
|
ProtoC2C.oBufInsert();
|
|
|
|
//2th Pkg
|
|
ProtoC2C.TxMsg.Data.Cmd = dNetworkCmd;
|
|
ProtoC2C.TxMsg.Data.Len = 8;
|
|
ProtoC2C.TxMsg.Data.Data[0] =1;
|
|
ProtoC2C.TxMsg.Data.Data[1] = MainCtl.fData.Split.MyNum;
|
|
ProtoC2C.TxMsg.Data.Data[2] = CmdC2C_SaveData;
|
|
ProtoC2C.TxMsg.Data.Data[3] = Count;
|
|
ProtoC2C.TxMsg.Data.Data[4] = CtlList[0];
|
|
ProtoC2C.TxMsg.Data.Data[5] = CtlList[1];
|
|
ProtoC2C.TxMsg.Data.Data[6] = CtlList[2];
|
|
ProtoC2C.TxMsg.Data.Data[7] = CtlList[3];
|
|
|
|
ProtoC2C.oBufInsert();
|
|
|
|
//3th Pkg
|
|
ProtoC2C.TxMsg.Data.Cmd = dNetworkCmd;
|
|
ProtoC2C.TxMsg.Data.Len = 8;
|
|
ProtoC2C.TxMsg.Data.Data[0] =2;
|
|
ProtoC2C.TxMsg.Data.Data[1] = MainCtl.fData.Split.MyNum;
|
|
ProtoC2C.TxMsg.Data.Data[2] = CmdC2C_SaveData;
|
|
ProtoC2C.TxMsg.Data.Data[3] = Count;
|
|
ProtoC2C.TxMsg.Data.Data[4] = CtlList[4];
|
|
ProtoC2C.TxMsg.Data.Data[5] = CtlList[5];
|
|
ProtoC2C.TxMsg.Data.Data[6] = CtlList[6];
|
|
ProtoC2C.TxMsg.Data.Data[7] = CtlList[7];
|
|
|
|
ProtoC2C.oBufInsert();
|
|
|
|
//4th Pkg
|
|
ProtoC2C.TxMsg.Data.Cmd = dNetworkCmd;
|
|
ProtoC2C.TxMsg.Data.Len = 8;
|
|
ProtoC2C.TxMsg.Data.Data[0] =3;
|
|
ProtoC2C.TxMsg.Data.Data[1] = MainCtl.fData.Split.MyNum;
|
|
ProtoC2C.TxMsg.Data.Data[2] = CmdC2C_SaveData;
|
|
ProtoC2C.TxMsg.Data.Data[3] = Count;
|
|
ProtoC2C.TxMsg.Data.Data[4] = CtlList[8];
|
|
ProtoC2C.TxMsg.Data.Data[5] = CtlList[9];
|
|
ProtoC2C.TxMsg.Data.Data[6] = CtlList[10];
|
|
ProtoC2C.TxMsg.Data.Data[7] = CtlList[11];
|
|
|
|
ProtoC2C.oBufInsert();
|
|
|
|
//5th Pkg
|
|
ProtoC2C.TxMsg.Data.Cmd = dNetworkCmd;
|
|
ProtoC2C.TxMsg.Data.Len = 8;
|
|
ProtoC2C.TxMsg.Data.Data[0] =4;
|
|
ProtoC2C.TxMsg.Data.Data[1] = MainCtl.fData.Split.MyNum;
|
|
ProtoC2C.TxMsg.Data.Data[2] = CmdC2C_SaveData;
|
|
ProtoC2C.TxMsg.Data.Data[3] = Count;
|
|
ProtoC2C.TxMsg.Data.Data[4] = CtlList[12];
|
|
ProtoC2C.TxMsg.Data.Data[5] = CtlList[13];
|
|
ProtoC2C.TxMsg.Data.Data[6] = CtlList[14];
|
|
ProtoC2C.TxMsg.Data.Data[7] = CtlList[15];
|
|
|
|
ProtoC2C.oBufInsert();
|
|
|
|
//6th Pkg
|
|
ProtoC2C.TxMsg.Data.Cmd = dNetworkCmd;
|
|
ProtoC2C.TxMsg.Data.Len = 8;
|
|
ProtoC2C.TxMsg.Data.Data[0] =5;
|
|
ProtoC2C.TxMsg.Data.Data[1] = MainCtl.fData.Split.MyNum;
|
|
ProtoC2C.TxMsg.Data.Data[2] = CmdC2C_SaveData;
|
|
ProtoC2C.TxMsg.Data.Data[3] = Count;
|
|
ProtoC2C.TxMsg.Data.Data[4] = CtlList[16];
|
|
ProtoC2C.TxMsg.Data.Data[5] = CtlList[17];
|
|
ProtoC2C.TxMsg.Data.Data[6] = CtlList[18];
|
|
ProtoC2C.TxMsg.Data.Data[7] = CtlList[19];
|
|
|
|
ProtoC2C.oBufInsert();
|
|
|
|
//7th Pkg
|
|
ProtoC2C.TxMsg.Data.Cmd = dNetworkCmd;
|
|
ProtoC2C.TxMsg.Data.Len = 8;
|
|
ProtoC2C.TxMsg.Data.Data[0] =6;
|
|
ProtoC2C.TxMsg.Data.Data[1] = MainCtl.fData.Split.MyNum;
|
|
ProtoC2C.TxMsg.Data.Data[2] = CmdC2C_SaveData;
|
|
ProtoC2C.TxMsg.Data.Data[3] = Count;
|
|
ProtoC2C.TxMsg.Data.Data[4] = CtlList[20];
|
|
ProtoC2C.TxMsg.Data.Data[5] = CtlList[21];
|
|
ProtoC2C.TxMsg.Data.Data[6] = CtlList[22];
|
|
ProtoC2C.TxMsg.Data.Data[7] = CtlList[23];
|
|
|
|
ProtoC2C.oBufInsert();
|
|
|
|
//8th Pkg
|
|
ProtoC2C.TxMsg.Data.Cmd = dNetworkCmd;
|
|
ProtoC2C.TxMsg.Data.Len = 8;
|
|
ProtoC2C.TxMsg.Data.Data[0] =7;
|
|
ProtoC2C.TxMsg.Data.Data[1] = MainCtl.fData.Split.MyNum;
|
|
ProtoC2C.TxMsg.Data.Data[2] = CmdC2C_SaveData;
|
|
ProtoC2C.TxMsg.Data.Data[3] = Count;
|
|
ProtoC2C.TxMsg.Data.Data[4] = CtlList[24];
|
|
ProtoC2C.TxMsg.Data.Data[5] = CtlList[25];
|
|
ProtoC2C.TxMsg.Data.Data[6] = CtlList[26];
|
|
ProtoC2C.TxMsg.Data.Data[7] = CtlList[27];
|
|
|
|
ProtoC2C.oBufInsert();
|
|
|
|
//9th Pkg
|
|
ProtoC2C.TxMsg.Data.Cmd = dNetworkCmd;
|
|
ProtoC2C.TxMsg.Data.Len = 8;
|
|
ProtoC2C.TxMsg.Data.Data[0] =8;
|
|
ProtoC2C.TxMsg.Data.Data[1] = MainCtl.fData.Split.MyNum;
|
|
ProtoC2C.TxMsg.Data.Data[2] = CmdC2C_SaveData;
|
|
ProtoC2C.TxMsg.Data.Data[3] = Count;
|
|
ProtoC2C.TxMsg.Data.Data[4] = CtlList[28];
|
|
ProtoC2C.TxMsg.Data.Data[5] = CtlList[29];
|
|
ProtoC2C.TxMsg.Data.Data[6] = CtlList[30];
|
|
ProtoC2C.TxMsg.Data.Data[7] = CtlList[31];
|
|
|
|
ProtoC2C.oBufInsert();
|
|
|
|
//10th Pkg
|
|
ProtoC2C.TxMsg.Data.Cmd = dNetworkCmd;
|
|
ProtoC2C.TxMsg.Data.Len = 8;
|
|
ProtoC2C.TxMsg.Data.Data[0] =9;
|
|
ProtoC2C.TxMsg.Data.Data[1] = MainCtl.fData.Split.MyNum;
|
|
ProtoC2C.TxMsg.Data.Data[2] = CmdC2C_SaveData;
|
|
ProtoC2C.TxMsg.Data.Data[3] = Count;
|
|
ProtoC2C.TxMsg.Data.Data[4] = ProtoC2C.CtlMask.StartNum;
|
|
ProtoC2C.TxMsg.Data.Data[5] = ProtoC2C.CtlMask.EndNum;
|
|
ProtoC2C.TxMsg.Data.Data[6] = 0;
|
|
ProtoC2C.TxMsg.Data.Data[7] = 0;
|
|
|
|
ProtoC2C.oBufInsert();
|
|
}
|
|
|
|
int TCanNetworkRegister::CheckStart2EndNumValid()
|
|
{
|
|
if( (SearchStartNum) && (SearchEndNum) ){
|
|
if( (SearchStartNum <= dNETWORK_MACHINE_COUNT) && (SearchEndNum <= dNETWORK_MACHINE_COUNT) && (SearchStartNum <= SearchEndNum) )
|
|
Start2EndNumValid = 1;
|
|
else
|
|
Start2EndNumValid = 0;
|
|
}else
|
|
if( SearchStartNum || SearchEndNum){
|
|
Start2EndNumValid = 0;
|
|
}else{
|
|
Start2EndNumValid = 1;
|
|
}
|
|
|
|
if(Start2EndNumValid){
|
|
IList->EditCtlNum.SelectedColor = clBlue;
|
|
IList->EditAddrNum.SelectedColor = clBlue;
|
|
IList->EditCtlNum.Color = clNearWhite;
|
|
IList->EditAddrNum.Color = clNearWhite;
|
|
}else{
|
|
IList->EditCtlNum.SelectedColor = clRed;
|
|
IList->EditAddrNum.SelectedColor = clRed;
|
|
IList->EditCtlNum.Color = clRed;
|
|
IList->EditAddrNum.Color = clRed;
|
|
}
|
|
|
|
return Start2EndNumValid;
|
|
}
|
|
|
|
TGuiMsgReturn TCanNetworkRegister::KeyIn(unsigned char aKey)
|
|
{
|
|
TGuiMsgReturn aMsg = guiMsgNone;
|
|
TGuiMsgReturn PmsRtnMsg = guiMsgNone;
|
|
unsigned char aP0,aP1,Err;
|
|
unsigned char x,y,aCh;
|
|
unsigned int aAddr, HadPrc;
|
|
TDMix aFullPath;
|
|
|
|
JustShowingSaving =0;
|
|
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;
|
|
}else
|
|
if(IsOnSearching){
|
|
switch(aKey){
|
|
case VK_RETURN:
|
|
IsShowing = 0;
|
|
IsOnSearching = 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(CtlIndex == 0){
|
|
IList->Edit[0].KeyIn(aKey);
|
|
int iVal;
|
|
iVal = IList->Edit[0].Str.ToInteger();
|
|
if( (iVal <1) || (iVal > 64) ){
|
|
MyNumValid = 0;
|
|
IList->Edit[0].SelectedColor = clRed;
|
|
}else{
|
|
MyNumValid = 1;
|
|
IList->Edit[0].SelectedColor = clBlue;
|
|
if(iVal != MyNum){
|
|
MyNum = iVal;
|
|
}
|
|
}
|
|
IList->Edit[0].Show();
|
|
}else{
|
|
if(aKey == VK_LEFT){
|
|
if((CtlIndex==2)||(CtlIndex==3) || (CtlIndex==5)||(CtlIndex==6) || (CtlIndex==8) || (CtlIndex==9) || (CtlIndex==10) ){
|
|
ClearSelected();
|
|
CtlIndex--;
|
|
Check4Selected();
|
|
}else
|
|
if(CtlIndex == 11){
|
|
if(ListX>0){
|
|
DrawListDeSelected();
|
|
ListX--;
|
|
DrawListSelected();
|
|
}
|
|
}
|
|
}else
|
|
if(aKey == VK_RIGHT){
|
|
if(MainCtl.fData.Split.NetworkMode == 1){
|
|
if((CtlIndex==1)||(CtlIndex==2) || (CtlIndex==4)||(CtlIndex==5) || (CtlIndex==7) || (CtlIndex==8) || (CtlIndex==9) ){
|
|
ClearSelected();
|
|
CtlIndex++;
|
|
Check4Selected();
|
|
}else
|
|
if(CtlIndex == 11){
|
|
if(ListY<ListItemsY-1){
|
|
DrawListDeSelected();
|
|
ListX++;
|
|
DrawListSelected();
|
|
}else
|
|
if(ListX<1){
|
|
DrawListDeSelected();
|
|
ListX++;
|
|
DrawListSelected();
|
|
}
|
|
}
|
|
}else{
|
|
if((CtlIndex==1)||(CtlIndex==2) || (CtlIndex==4) || (CtlIndex==5) ){
|
|
ClearSelected();
|
|
CtlIndex++;
|
|
Check4Selected();
|
|
}else
|
|
if(CtlIndex == 11){
|
|
if(ListY<ListItemsY-1){
|
|
DrawListDeSelected();
|
|
ListX++;
|
|
DrawListSelected();
|
|
}else
|
|
if(ListX<1){
|
|
DrawListDeSelected();
|
|
ListX++;
|
|
DrawListSelected();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
break;
|
|
case VK_UP:
|
|
if(MyNumValid){
|
|
if(CtlIndex >0){
|
|
if(CtlIndex<4){
|
|
ClearSelected();
|
|
CtlIndex=0;
|
|
Check4Selected();
|
|
}else
|
|
if(CtlIndex<7){
|
|
ClearSelected();
|
|
CtlIndex-=3;
|
|
Check4Selected();
|
|
}else
|
|
if(CtlIndex<10){
|
|
ClearSelected();
|
|
CtlIndex-=3;
|
|
Check4Selected();
|
|
}else
|
|
if(CtlIndex==10){
|
|
ClearSelected();
|
|
CtlIndex=6;
|
|
Check4Selected();
|
|
}else
|
|
if(CtlIndex==11){
|
|
if(ListWhat != TCanNetworkRegister::TListWhat::Idle){
|
|
if(ListY==0){
|
|
DrawListDeSelected();
|
|
if(ListX<2){
|
|
CtlIndex=7;
|
|
}else{
|
|
CtlIndex=8;
|
|
}
|
|
Check4Selected();
|
|
}else{
|
|
DrawListDeSelected();
|
|
ListY--;
|
|
DrawListSelected();
|
|
}
|
|
}else{
|
|
DrawListDeSelected();
|
|
CtlIndex =8;
|
|
Check4Selected();
|
|
}
|
|
}else{
|
|
DrawListDeSelected();
|
|
ClearSelected();
|
|
CtlIndex =0;
|
|
Check4Selected();
|
|
}
|
|
}else{
|
|
if(ListWhat == TCanNetworkRegister::TListWhat::Idle){
|
|
ClearSelected();
|
|
if(MainCtl.fData.Split.NetworkMode == 1){
|
|
CtlIndex=7;
|
|
Check4Selected();
|
|
}else{
|
|
CtlIndex=4;
|
|
Check4Selected();
|
|
}
|
|
}else{
|
|
ClearSelected();
|
|
CtlIndex =11;
|
|
DrawListDeSelected();
|
|
ListY = ListItemsY-1;
|
|
ListX =0;
|
|
DrawListSelected();
|
|
}
|
|
}
|
|
}else{
|
|
ClearSelected();
|
|
CtlIndex=0;
|
|
Check4Selected();
|
|
}
|
|
break;
|
|
case VK_DOWN:
|
|
if(MyNumValid){
|
|
if(CtlIndex){
|
|
if(MainCtl.fData.Split.NetworkMode == 1){
|
|
if(CtlIndex<7){
|
|
ClearSelected();
|
|
CtlIndex+=3;
|
|
Check4Selected();
|
|
}else
|
|
if(CtlIndex<11){
|
|
if(ListWhat != this->TListWhat::Idle){
|
|
ClearSelected();
|
|
CtlIndex=11;
|
|
ListY=0;
|
|
ListX=0;
|
|
DrawListSelected();
|
|
}else{
|
|
ClearSelected();
|
|
CtlIndex=0;
|
|
Check4Selected();
|
|
}
|
|
}else
|
|
if(CtlIndex=11){
|
|
if(ListWhat != this->TListWhat::Idle){
|
|
if((ListY<ListItemsY-1) && (ListX<2)){
|
|
DrawListDeSelected();
|
|
ListY++;
|
|
DrawListSelected();
|
|
}else
|
|
if(ListY<ListItemsY-2){
|
|
DrawListDeSelected();
|
|
ListY++;
|
|
DrawListSelected();
|
|
}else{
|
|
DrawListDeSelected();
|
|
CtlIndex=0;
|
|
Check4Selected();
|
|
}
|
|
}else{
|
|
DrawListDeSelected();
|
|
CtlIndex=0;
|
|
Check4Selected();
|
|
}
|
|
}else{
|
|
DrawListDeSelected();
|
|
CtlIndex=0;
|
|
Check4Selected();
|
|
}
|
|
}else{
|
|
if(CtlIndex<4){
|
|
ClearSelected();
|
|
CtlIndex+=3;
|
|
Check4Selected();
|
|
}else
|
|
if(CtlIndex<7){
|
|
if(ListWhat != this->TListWhat::Idle){
|
|
ClearSelected();
|
|
CtlIndex=11;
|
|
ListY=0;
|
|
ListX=0;
|
|
DrawListSelected();
|
|
}else{
|
|
ClearSelected();
|
|
CtlIndex=0;
|
|
Check4Selected();
|
|
}
|
|
}else
|
|
if(CtlIndex==11){
|
|
if(ListWhat != this->TListWhat::Idle){
|
|
if((ListY<ListItemsY-1) && (ListX<2)){
|
|
DrawListDeSelected();
|
|
ListY++;
|
|
DrawListSelected();
|
|
}else
|
|
if(ListY<ListItemsY-2){
|
|
DrawListDeSelected();
|
|
ListY++;
|
|
DrawListSelected();
|
|
}else{
|
|
DrawListDeSelected();
|
|
CtlIndex=0;
|
|
Check4Selected();
|
|
}
|
|
}else{
|
|
ClearSelected();
|
|
DrawListDeSelected();
|
|
CtlIndex=0;
|
|
Check4Selected();
|
|
}
|
|
}else{
|
|
ClearSelected();
|
|
DrawListDeSelected();
|
|
CtlIndex=0;
|
|
Check4Selected();
|
|
}
|
|
}
|
|
}else{
|
|
ClearSelected();
|
|
CtlIndex=1;
|
|
Check4Selected();
|
|
}
|
|
}else{
|
|
ClearSelected();
|
|
CtlIndex=0;
|
|
Check4Selected();
|
|
}
|
|
break;
|
|
case VK_TAB:
|
|
case dfKEY_QUERY:
|
|
DoGroupSelect();
|
|
break;
|
|
case dfKEY_SETUP:
|
|
if(CtlIndex == 0){
|
|
if(MyNumValid){
|
|
PermissionCmd = 21;
|
|
if(SystemPermission > 2){
|
|
PermissionCmdGO();
|
|
}else{
|
|
IsPermission = 1;
|
|
ClearSelected();
|
|
PmsIntervene4Gui.Show4Gui(Lv.Panel.Left + 16, Lv.Panel.Top + 16, Lv.Panel.Width -36 , 140, 3);
|
|
}
|
|
}
|
|
}else
|
|
if(CtlIndex == 1){
|
|
PermissionCmd = 11;
|
|
if(SystemPermission > 2){
|
|
PermissionCmdGO();
|
|
}else{
|
|
IsPermission = 1;
|
|
ClearSelected();
|
|
PmsIntervene4Gui.Show4Gui(Lv.Panel.Left + 16, Lv.Panel.Top + 16, Lv.Panel.Width -36 , 140, 3);
|
|
}
|
|
}else
|
|
if(CtlIndex == 2){
|
|
PermissionCmd = 12;
|
|
if(SystemPermission > 2){
|
|
PermissionCmdGO();
|
|
}else{
|
|
IsPermission = 1;
|
|
ClearSelected();
|
|
PmsIntervene4Gui.Show4Gui(Lv.Panel.Left + 16, Lv.Panel.Top + 16, Lv.Panel.Width -36 , 140, 3);
|
|
}
|
|
}else
|
|
if(CtlIndex == 3){
|
|
PermissionCmd = 13;
|
|
if(SystemPermission > 2){
|
|
PermissionCmdGO();
|
|
}else{
|
|
IsPermission = 1;
|
|
ClearSelected();
|
|
PmsIntervene4Gui.Show4Gui(Lv.Panel.Left + 16, Lv.Panel.Top + 16, Lv.Panel.Width -36 , 140, 3);
|
|
}
|
|
}
|
|
break;
|
|
case VK_EXECUTE:
|
|
if(CtlIndex == 0){
|
|
PermissionCmd = 21;
|
|
if(SystemPermission > 2){
|
|
PermissionCmdGO();
|
|
}else{
|
|
IsPermission = 1;
|
|
ClearSelected();
|
|
PmsIntervene4Gui.Show4Gui(Lv.Panel.Left + 16, Lv.Panel.Top + 16, Lv.Panel.Width -36 , 140, 3);
|
|
}
|
|
}else
|
|
if(CtlIndex == 1){
|
|
PermissionCmd = 11;
|
|
if(SystemPermission > 2){
|
|
PermissionCmdGO();
|
|
}else{
|
|
IsPermission = 1;
|
|
ClearSelected();
|
|
PmsIntervene4Gui.Show4Gui(Lv.Panel.Left + 16, Lv.Panel.Top + 16, Lv.Panel.Width -36 , 140, 3);
|
|
}
|
|
}else
|
|
if(CtlIndex == 2){
|
|
PermissionCmd = 12;
|
|
if(SystemPermission > 2){
|
|
PermissionCmdGO();
|
|
}else{
|
|
IsPermission = 1;
|
|
ClearSelected();
|
|
PmsIntervene4Gui.Show4Gui(Lv.Panel.Left + 16, Lv.Panel.Top + 16, Lv.Panel.Width -36 , 140, 3);
|
|
}
|
|
}else
|
|
if(CtlIndex == 3){
|
|
PermissionCmd = 13;
|
|
if(SystemPermission > 2){
|
|
PermissionCmdGO();
|
|
}else{
|
|
IsPermission = 1;
|
|
ClearSelected();
|
|
PmsIntervene4Gui.Show4Gui(Lv.Panel.Left + 16, Lv.Panel.Top + 16, Lv.Panel.Width -36 , 140, 3);
|
|
}
|
|
}else
|
|
if(CtlIndex == 4){
|
|
//Searching
|
|
PermissionCmd = 1;
|
|
if(SystemPermission > 2){
|
|
PermissionCmdGO();
|
|
}else{
|
|
IsPermission = 1;
|
|
ClearSelected();
|
|
PmsIntervene4Gui.Show4Gui(Lv.Panel.Left + 16, Lv.Panel.Top + 16, Lv.Panel.Width -36 , 140, 3);
|
|
}
|
|
}else
|
|
if(CtlIndex == 5){
|
|
//Clear Master List
|
|
PermissionCmd = 2;
|
|
if(SystemPermission > 2){
|
|
PermissionCmdGO();
|
|
}else{
|
|
IsPermission = 1;
|
|
ClearSelected();
|
|
PmsIntervene4Gui.Show4Gui(Lv.Panel.Left + 16, Lv.Panel.Top + 16, Lv.Panel.Width -36 , 140, 3);
|
|
}
|
|
}else
|
|
if(CtlIndex == 6){
|
|
//Clear Slaver List
|
|
PermissionCmd = 3;
|
|
if(SystemPermission > 2){
|
|
PermissionCmdGO();
|
|
}else{
|
|
IsPermission = 1;
|
|
ClearSelected();
|
|
PmsIntervene4Gui.Show4Gui(Lv.Panel.Left + 16, Lv.Panel.Top + 16, Lv.Panel.Width -36 , 140, 3);
|
|
}
|
|
}else
|
|
if(CtlIndex == 7){
|
|
//Load Master List
|
|
ListWhat = this->TListWhat::QueMaster;
|
|
for(int i=0; i<dNETWORK_MACHINE_COUNT; i++){
|
|
CtlSelectedList[i] =0;
|
|
*(volatile unsigned char *)(dAddrSdRam_TypeList + i) = dNetworkTypeNone;
|
|
}
|
|
for(int i=0; i<dNETWORK_MACHINE_MASTER_COUNT; i++){
|
|
if(i>=ProtoC2C.M2MList.Cnt)break;
|
|
if(ProtoC2C.M2MList.Items[i]){
|
|
if(ProtoC2C.M2MList.Items[i] <= dNETWORK_MACHINE_COUNT){
|
|
*(volatile unsigned char *)(dAddrSdRam_TypeList + (ProtoC2C.M2MList.Items[i]-1)) = dNetworkTypeMaster;
|
|
}
|
|
}
|
|
}
|
|
DrawListTitle();
|
|
DrawMasterList();
|
|
SetGroupSelected(dNetworkTypeMaster);
|
|
}else
|
|
if(CtlIndex == 8){
|
|
//Load Slaver List
|
|
ListWhat = this->TListWhat::QueSlaver;
|
|
for(int i=0; i<dNETWORK_MACHINE_COUNT; i++){
|
|
CtlSelectedList[i] =0;
|
|
*(volatile unsigned char *)(dAddrSdRam_TypeList + i) = dNetworkTypeNone;
|
|
}
|
|
for(int i=0; i<dNETWORK_MACHINE_MASTER_COUNT; i++){
|
|
if(i>=ProtoC2C.SlaveCount)break;
|
|
if(ProtoC2C.SlaveList[i]){
|
|
if(ProtoC2C.SlaveList[i] <= dNETWORK_MACHINE_COUNT){
|
|
*(volatile unsigned char *)(dAddrSdRam_TypeList + (ProtoC2C.SlaveList[i]-1)) = dNetworkTypeSlave;
|
|
}
|
|
}
|
|
}
|
|
if( (ProtoC2C.MasterNum) and (ProtoC2C.MasterNum <=dNETWORK_MACHINE_COUNT) ){
|
|
*(volatile unsigned char *)(dAddrSdRam_TypeList + (ProtoC2C.MasterNum-1)) = dNetworkTypeMaster;
|
|
}
|
|
DrawListTitle();
|
|
DrawSlaverList();
|
|
SetGroupSelected(dNetworkTypeSlave);
|
|
}else
|
|
if(CtlIndex == 9){
|
|
//Save Master List
|
|
PermissionCmd = 4;
|
|
if(SystemPermission > 2){
|
|
PermissionCmdGO();
|
|
}else{
|
|
IsPermission = 1;
|
|
ClearSelected();
|
|
PmsIntervene4Gui.Show4Gui(Lv.Panel.Left + 16, Lv.Panel.Top + 16, Lv.Panel.Width -36 , 140, 3);
|
|
}
|
|
}else
|
|
if(CtlIndex == 10){
|
|
//Save Slaver List
|
|
PermissionCmd = 5;
|
|
if(SystemPermission > 2){
|
|
PermissionCmdGO();
|
|
}else{
|
|
IsPermission = 1;
|
|
ClearSelected();
|
|
PmsIntervene4Gui.Show4Gui(Lv.Panel.Left + 16, Lv.Panel.Top + 16, Lv.Panel.Width -36 , 140, 3);
|
|
}
|
|
}else
|
|
if(CtlIndex == 11){
|
|
if(ListWhat == Searching){
|
|
int tInx = ListY*ListItemsX+ListX;
|
|
if(tInx<dNETWORK_MACHINE_COUNT){
|
|
unsigned char pNum = tInx+1;
|
|
if( (pNum>ProtoC2C.CtlMask.EndNum) || (pNum<ProtoC2C.CtlMask.StartNum) ){
|
|
CtlSelectedList[tInx] = CtlSelectedList[tInx] ? 0 : 1;
|
|
DrawSearchingItem(tInx+1);
|
|
}
|
|
}
|
|
}else
|
|
if(ListWhat == QueMaster){
|
|
int tInx = ListY*ListItemsX+ListX;
|
|
if(tInx<dNETWORK_MACHINE_COUNT){
|
|
if(*(volatile unsigned char *)(dAddrSdRam_TypeList + (tInx)) != dNetworkTypeSlave){
|
|
CtlSelectedList[tInx] = CtlSelectedList[tInx] ? 0 : 1;
|
|
DrawMasterItem(tInx+1);
|
|
}
|
|
}
|
|
}else
|
|
if(ListWhat == QueSlaver){
|
|
int tInx = ListY*ListItemsX+ListX;
|
|
if(tInx<dNETWORK_MACHINE_COUNT){
|
|
if(*(volatile unsigned char *)(dAddrSdRam_TypeList + (tInx)) != dNetworkTypeMaster){
|
|
CtlSelectedList[tInx] = CtlSelectedList[tInx] ? 0 : 1;
|
|
DrawSlaverItem(tInx+1);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
break;
|
|
case VK_RETURN:
|
|
IsShowing = 0;
|
|
aMsg = guiMsgReturn;
|
|
break;
|
|
}
|
|
}
|
|
if(JustShowingSaving == 0){
|
|
if(ShowingSavingMyNum){
|
|
ShowSaveMyNum(0);
|
|
}
|
|
}
|
|
|
|
return aMsg;
|
|
}
|
|
|
|
void TCanNetworkRegister::SendfNetMsg(unsigned char aSubCmd, unsigned char *data, int Len)
|
|
{
|
|
|
|
}
|
|
|
|
void TCanNetworkRegister::PushfNetMsg(unsigned char aSubCmd, unsigned char *data, int Len)
|
|
{
|
|
int i,x, aLen;
|
|
unsigned int aAddr;
|
|
unsigned char ada;
|
|
unsigned char aP0;
|
|
unsigned char Dulp;
|
|
unsigned char MasterOrSlaverCnt;
|
|
|
|
RecBlock = 1;
|
|
Path = data[1];
|
|
ada = data[3];
|
|
MasterOrSlaverCnt = data[4];
|
|
switch(aSubCmd){
|
|
case CmdC2C_RpyExist:
|
|
break;
|
|
case CmdC2C_RpyType:
|
|
if( (Path) && (Path <= dNETWORK_MACHINE_COUNT) ){
|
|
if( (ada == dNetworkTypeMaster) || (ada == dNetworkTypeSlave) ){
|
|
aP0 = Path-1;
|
|
if( (Path) && (Path <=dNETWORK_MACHINE_COUNT) ){
|
|
if( (Path <ProtoC2C.CtlMask.StartNum) || (Path >ProtoC2C.CtlMask.EndNum) ){
|
|
const unsigned char PrvType = *(volatile unsigned char *)(dAddrSdRam_TypeList + aP0);
|
|
if( (PrvType) || (Path == MainCtl.fData.Split.MyNum) ){
|
|
//Dual
|
|
*(volatile unsigned char *)(dAddrSdRam_TypeList + aP0) = dNetworkTypeDual;
|
|
*(volatile unsigned char *)(dAddrSdRam_LinkMaster + aP0) = MasterOrSlaverCnt;
|
|
}else{
|
|
*(volatile unsigned char *)(dAddrSdRam_TypeList + aP0) = ada;
|
|
*(volatile unsigned char *)(dAddrSdRam_LinkMaster + aP0) = MasterOrSlaverCnt;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
break;
|
|
case CmdC2C_RpyNameLen:
|
|
|
|
break;
|
|
case CmdC2C_RpyNameContent:
|
|
if(ada == 0xFF){
|
|
aP0 = Path -1;
|
|
if(aP0 <64){
|
|
if( (Path <ProtoC2C.CtlMask.StartNum) || (Path >ProtoC2C.CtlMask.EndNum) ){
|
|
aNewGot = 1;
|
|
aAddr = dAddrSdRam_DescpGotList + aP0;
|
|
*(volatile unsigned char *)(aAddr)= 1;
|
|
}
|
|
}
|
|
}else{
|
|
if(ada < 8){
|
|
x = ada * 4;
|
|
aLen = data[4];
|
|
aP0 = Path -1;
|
|
if( (Path <ProtoC2C.CtlMask.StartNum) || (Path >ProtoC2C.CtlMask.EndNum) ){
|
|
if( (aLen < 5) && (aP0 < 64) ){
|
|
aAddr = dAddrSdRam_DescpContent + aP0 * 32;
|
|
for(i=0; i<aLen; i++){
|
|
*(volatile unsigned char *)(aAddr + i)= data[5 + i];
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
|
|
unsigned char TCanNetworkRegister::GetRecType(unsigned char aNum)
|
|
{
|
|
unsigned char aType;
|
|
unsigned int aP0, aAddr;
|
|
if( (aNum==0) || (aNum>dNETWORK_MACHINE_COUNT) )return dNetworkTypeNone;
|
|
aP0 = aNum -1;
|
|
aAddr = dAddrSdRam_TypeList + aP0;
|
|
aType = *(volatile unsigned char *)(aAddr);
|
|
return aType;
|
|
}
|
|
|
|
unsigned char TCanNetworkRegister::CheckRecTypeAva(unsigned char aNum)
|
|
{
|
|
unsigned char aType;
|
|
unsigned int aP0, aAddr;
|
|
aP0 = aNum -1;
|
|
aAddr = dAddrSdRam_TypeList + aP0;
|
|
aType = *(volatile unsigned char *)(aAddr);
|
|
if( (aType == dNetworkTypeMaster) || (aType == dNetworkTypeSlave) ){
|
|
return 1;
|
|
}else{
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
unsigned char TCanNetworkRegister::CheckDescpAva(unsigned char aNum)
|
|
{
|
|
unsigned char aOk;
|
|
unsigned int aP0, aAddr;
|
|
aP0 = aNum -1;
|
|
aAddr = dAddrSdRam_DescpGotList + aP0;
|
|
aOk = *(volatile unsigned char *)(aAddr + aP0);
|
|
return aOk;
|
|
}
|
|
|
|
unsigned char TCanNetworkRegister::GetCtlCount()
|
|
{
|
|
unsigned char aType;
|
|
unsigned int i, aAddr;
|
|
|
|
Count =0;
|
|
CountMater =0;
|
|
CountSlave =0;
|
|
aAddr = dAddrSdRam_TypeList;
|
|
for(i=0; i<dNETWORK_MACHINE_COUNT; i++){
|
|
aType = *(volatile unsigned char *)(aAddr + i);
|
|
if( (aType == dNetworkTypeMaster) || (aType == dNetworkTypeSlave) ){
|
|
Count ++;
|
|
if(aType == dNetworkTypeMaster) CountMater++;
|
|
else CountSlave++;
|
|
}
|
|
}
|
|
return Count;
|
|
}
|
|
|
|
void TCanNetworkRegister::SendAskType(unsigned char aNum)
|
|
{
|
|
//CmdC2C_RpyType : D0=Len, D1=Pri, D2=CMD, D3=CTLBYTE D4=SubCmd D5=CtlNum D6=Type (Master or Slave, See Define)
|
|
ProtoC2C.TxMsg.Data.Routing =0;
|
|
ProtoC2C.TxMsg.Data.Priority = 1;
|
|
ProtoC2C.TxMsg.Data.Cmd = dNetworkCmd;
|
|
ProtoC2C.TxMsg.Data.Len = 4;
|
|
ProtoC2C.TxMsg.Data.Data[0] =0;
|
|
ProtoC2C.TxMsg.Data.Data[1] = MainCtl.fData.Split.MyNum;
|
|
ProtoC2C.TxMsg.Data.Data[2] = CmdC2C_AskType;
|
|
ProtoC2C.TxMsg.Data.Data[3] = aNum;
|
|
|
|
ProtoC2C.oBufInsert();
|
|
}
|
|
|
|
void TCanNetworkRegister::SendAskDescp(unsigned char aNum)
|
|
{
|
|
//CmdC2C_RpyNameContent : D0=Len, D1=Pri, D2=CMD, D3=CTLBYTE D4=SubCmd D5=CtlNum D6=Index (Index X, D4=ThisPkgByteLen, D7..10=Char[0..3])
|
|
ProtoC2C.TxMsg.Data.Routing =0;
|
|
ProtoC2C.TxMsg.Data.Priority = 1;
|
|
ProtoC2C.TxMsg.Data.Cmd = dNetworkCmd;
|
|
ProtoC2C.TxMsg.Data.Len = 4;
|
|
ProtoC2C.TxMsg.Data.Data[0] =0;
|
|
ProtoC2C.TxMsg.Data.Data[1] = MainCtl.fData.Split.MyNum;
|
|
ProtoC2C.TxMsg.Data.Data[2] = CmdC2C_AskNameContent;
|
|
ProtoC2C.TxMsg.Data.Data[3] = aNum ;
|
|
|
|
ProtoC2C.oBufInsert();
|
|
}
|
|
|
|
void TCanNetworkRegister::LoadData2Last()
|
|
{
|
|
int i,x;
|
|
unsigned int aAddr;
|
|
//Load Here
|
|
Count = 0;
|
|
for(i=0; i<dNETWORK_MACHINE_COUNT; i++){
|
|
aAddr = dAddrSdRam_ExistTable + i;
|
|
if(*(volatile unsigned char *)(aAddr)){
|
|
Count++;
|
|
}
|
|
}
|
|
}
|
|
|
|
void TCanNetworkRegister::sRecoverSetDefault()
|
|
{
|
|
unsigned char tCtlList[dNETWORK_MACHINE_COUNT];
|
|
Record.WriteMainSetMainCtl(0, 1);
|
|
sReadNetMode();
|
|
|
|
for(int i=0; i<dNETWORK_MACHINE_COUNT; i++)tCtlList[i] =0;
|
|
Record.SaveNwCfg(0, 0, tCtlList);
|
|
Record.ReadNwCfg();
|
|
ProtoC2C.SyncCheckOnline();
|
|
}
|
|
|
|
void TCanNetworkRegister::SaveMasterList(unsigned char aCnt, unsigned char *aList)
|
|
{
|
|
Record.SaveNwM2MCfg(aCnt, aList);
|
|
}
|
|
|
|
void TCanNetworkRegister::SendMasterList(unsigned char aCnt, unsigned char *aList)
|
|
{
|
|
//MasterList Max = dNETWORK_MACHINE_MASTER_COUNT = 8;
|
|
//First Pkg
|
|
ProtoC2C.TxMsg.Data.Routing =0;
|
|
ProtoC2C.TxMsg.Data.Priority = 1;
|
|
|
|
ProtoC2C.TxMsg.Data.Cmd = dNetworkCmd;
|
|
ProtoC2C.TxMsg.Data.Len = 6;
|
|
ProtoC2C.TxMsg.Data.Data[0] =0;
|
|
ProtoC2C.TxMsg.Data.Data[1] = MainCtl.fData.Split.MyNum;
|
|
ProtoC2C.TxMsg.Data.Data[2] = CmdC2C_SaveMasterList;
|
|
ProtoC2C.TxMsg.Data.Data[3] = aCnt;
|
|
ProtoC2C.TxMsg.Data.Data[4] = ProtoC2C.CtlMask.StartNum;
|
|
ProtoC2C.TxMsg.Data.Data[5] = ProtoC2C.CtlMask.EndNum;
|
|
|
|
ProtoC2C.oBufInsert();
|
|
|
|
//2th Pkg
|
|
ProtoC2C.TxMsg.Data.Cmd = dNetworkCmd;
|
|
ProtoC2C.TxMsg.Data.Len = 8;
|
|
ProtoC2C.TxMsg.Data.Data[0] =1;
|
|
ProtoC2C.TxMsg.Data.Data[1] = MainCtl.fData.Split.MyNum;
|
|
ProtoC2C.TxMsg.Data.Data[2] = CmdC2C_SaveMasterList;
|
|
ProtoC2C.TxMsg.Data.Data[3] = aCnt;
|
|
ProtoC2C.TxMsg.Data.Data[4] = aList[0];
|
|
ProtoC2C.TxMsg.Data.Data[5] = aList[1];
|
|
ProtoC2C.TxMsg.Data.Data[6] = aList[2];
|
|
ProtoC2C.TxMsg.Data.Data[7] = aList[3];
|
|
|
|
ProtoC2C.oBufInsert();
|
|
|
|
//3th Pkg
|
|
ProtoC2C.TxMsg.Data.Cmd = dNetworkCmd;
|
|
ProtoC2C.TxMsg.Data.Len = 8;
|
|
ProtoC2C.TxMsg.Data.Data[0] =2;
|
|
ProtoC2C.TxMsg.Data.Data[1] = MainCtl.fData.Split.MyNum;
|
|
ProtoC2C.TxMsg.Data.Data[2] = CmdC2C_SaveMasterList;
|
|
ProtoC2C.TxMsg.Data.Data[3] = aCnt;
|
|
ProtoC2C.TxMsg.Data.Data[4] = aList[4];
|
|
ProtoC2C.TxMsg.Data.Data[5] = aList[5];
|
|
ProtoC2C.TxMsg.Data.Data[6] = aList[6];
|
|
ProtoC2C.TxMsg.Data.Data[7] = aList[7];
|
|
|
|
ProtoC2C.oBufInsert();
|
|
}
|
|
|
|
void TCanNetworkRegister::SendClearMasterList(unsigned char aCnt, unsigned char *aList)
|
|
{
|
|
//MasterList Max = dNETWORK_MACHINE_MASTER_COUNT = 8;
|
|
//First Pkg
|
|
ProtoC2C.TxMsg.Data.Routing =0;
|
|
ProtoC2C.TxMsg.Data.Priority = 1;
|
|
ProtoC2C.TxMsg.Data.Cmd = dNetworkCmd;
|
|
ProtoC2C.TxMsg.Data.Len = 6;
|
|
ProtoC2C.TxMsg.Data.Data[0] =0;
|
|
ProtoC2C.TxMsg.Data.Data[1] = MainCtl.fData.Split.MyNum;
|
|
ProtoC2C.TxMsg.Data.Data[2] = CmdC2C_ClearMasterList;
|
|
ProtoC2C.TxMsg.Data.Data[3] = 0;
|
|
ProtoC2C.TxMsg.Data.Data[4] = ProtoC2C.CtlMask.StartNum;
|
|
ProtoC2C.TxMsg.Data.Data[5] = ProtoC2C.CtlMask.EndNum;
|
|
|
|
ProtoC2C.oBufInsert();
|
|
|
|
//2th Pkg
|
|
ProtoC2C.TxMsg.Data.Cmd = dNetworkCmd;
|
|
ProtoC2C.TxMsg.Data.Len = 8;
|
|
ProtoC2C.TxMsg.Data.Data[0] =1;
|
|
ProtoC2C.TxMsg.Data.Data[1] = MainCtl.fData.Split.MyNum;
|
|
ProtoC2C.TxMsg.Data.Data[2] = CmdC2C_ClearMasterList;
|
|
ProtoC2C.TxMsg.Data.Data[3] = 0;
|
|
ProtoC2C.TxMsg.Data.Data[4] = 0;
|
|
ProtoC2C.TxMsg.Data.Data[5] = 0;
|
|
ProtoC2C.TxMsg.Data.Data[6] = 0;
|
|
ProtoC2C.TxMsg.Data.Data[7] = 0;
|
|
|
|
ProtoC2C.oBufInsert();
|
|
|
|
//3th Pkg
|
|
ProtoC2C.TxMsg.Data.Cmd = dNetworkCmd;
|
|
ProtoC2C.TxMsg.Data.Len = 8;
|
|
ProtoC2C.TxMsg.Data.Data[0] =2;
|
|
ProtoC2C.TxMsg.Data.Data[1] = MainCtl.fData.Split.MyNum;
|
|
ProtoC2C.TxMsg.Data.Data[2] = CmdC2C_ClearMasterList;
|
|
ProtoC2C.TxMsg.Data.Data[3] = 0;
|
|
ProtoC2C.TxMsg.Data.Data[4] = 0;
|
|
ProtoC2C.TxMsg.Data.Data[5] = 0;
|
|
ProtoC2C.TxMsg.Data.Data[6] = 0;
|
|
ProtoC2C.TxMsg.Data.Data[7] = 0;
|
|
|
|
ProtoC2C.oBufInsert();
|
|
}
|
|
|
|
void TCanNetworkRegister::SaveSlaverList()
|
|
{
|
|
unsigned char x,y;
|
|
volatile unsigned int aAddr;
|
|
//Do Save Here
|
|
if( (MainCtl.fData.Split.NetworkMode == 1) && (IncMaster == 0) ){
|
|
Count = GetCtlCount();
|
|
for(x=0; x<dNETWORK_MACHINE_COUNT; x++)CtlList[x] = 0;
|
|
for(x=0; x<Count; x++){
|
|
aAddr = dAddrSdRam_ExistTable + x;
|
|
CtlList[x] = *(volatile unsigned char *)(aAddr);
|
|
}
|
|
Record.SaveNwCfg(MainCtl.fData.Split.MyNum, Count, CtlList);
|
|
Record.ReadNwCfg();
|
|
if( (ProtoC2C.MasterNum == MainCtl.fData.Split.MyNum) && (Count == ProtoC2C.SlaveCount) ){
|
|
if(LanguageEnCn==0)TextRender_string24 (Lv.Panel.Left +600, Lv.Panel.Top +2, clNearBlack, PanelColor, "保存成功 ");
|
|
else TextRender_string24 (Lv.Panel.Left +600, Lv.Panel.Top +2, clNearBlack, PanelColor, "Save Completed ");
|
|
SendNwList();
|
|
Record.OperateAdd_RegCanNetwork(1, MainCtl.fData.Split.MyNum, Count);
|
|
ProtoC2C.SyncCheckOnline();
|
|
}else{
|
|
if(LanguageEnCn==0)TextRender_string24 (Lv.Panel.Left +600, Lv.Panel.Top +2, clNearBlack, PanelColor, "保存失败 ");
|
|
else TextRender_string24 (Lv.Panel.Left +600, Lv.Panel.Top +2, clNearBlack, PanelColor, "Failed To Save ");
|
|
}
|
|
}
|
|
}
|
|
|
|
void TCanNetworkRegister::DoListSelectAll(unsigned char aCtlType)
|
|
{
|
|
volatile unsigned int aAddr;
|
|
unsigned char tType;
|
|
aAddr = dAddrSdRam_TypeList;
|
|
if(aCtlType == 0){
|
|
for(int i=0; i<dNETWORK_MACHINE_COUNT; i++){
|
|
CtlSelectedList[i] = 0;
|
|
}
|
|
}else
|
|
if(aCtlType == dNetworkTypeSlave){
|
|
for(int i=0; i<dNETWORK_MACHINE_COUNT; i++){
|
|
tType = *(volatile unsigned char *)(aAddr +i);
|
|
if(tType == dNetworkTypeSlave){
|
|
CtlSelectedList[i] = 1;
|
|
}else{
|
|
CtlSelectedList[i] = 0;
|
|
}
|
|
}
|
|
}else
|
|
if(aCtlType == dNetworkTypeMaster){
|
|
for(int i=0; i<dNETWORK_MACHINE_COUNT; i++){
|
|
tType = *(volatile unsigned char *)(aAddr +i);
|
|
if(tType == dNetworkTypeMaster){
|
|
CtlSelectedList[i] = 1;
|
|
}else{
|
|
CtlSelectedList[i] = 0;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
void TCanNetworkRegister::SetGroupSelected(unsigned char aCtlType )
|
|
{
|
|
unsigned char aGroup;
|
|
GroupSelected = aGroup;
|
|
|
|
if(GroupSelected>2)GroupSelected=0;
|
|
|
|
if(aCtlType ==dNetworkTypeMaster) GroupSelected=1;
|
|
else if(aCtlType ==dNetworkTypeSlave) GroupSelected =2;
|
|
else GroupSelected = 0;
|
|
|
|
DoListSelectAll(aCtlType);
|
|
if(ListWhat == this->Searching){
|
|
DrawSearchingList();
|
|
}else
|
|
if(ListWhat == this->QueMaster){
|
|
DrawMasterList();
|
|
}else
|
|
if(ListWhat == this->QueSlaver){
|
|
DrawSlaverList();
|
|
}
|
|
}
|
|
|
|
void TCanNetworkRegister::DoGroupSelect()
|
|
{
|
|
unsigned char tType;
|
|
if(ListWhat == this->Idle)return;
|
|
|
|
if(ListWhat == this->Searching){
|
|
switch(GroupSelected){
|
|
case 0:GroupSelected=1;tType =dNetworkTypeMaster; break;
|
|
case 1:GroupSelected=2;tType =dNetworkTypeSlave; break;
|
|
case 2:GroupSelected=0;tType =0; break;
|
|
default:GroupSelected=0;tType =0; break;
|
|
}
|
|
DoListSelectAll(tType);
|
|
DrawSearchingList();
|
|
}else
|
|
if(ListWhat == this->QueMaster){
|
|
switch(GroupSelected){
|
|
case 0:GroupSelected=1;tType =dNetworkTypeMaster; break;
|
|
case 1:GroupSelected=0;tType =0; break;
|
|
default:GroupSelected=0;tType =0; break;
|
|
}
|
|
DoListSelectAll(tType);
|
|
DrawMasterList();
|
|
}else
|
|
if(ListWhat == this->QueSlaver){
|
|
switch(GroupSelected){
|
|
case 0:GroupSelected=2;tType =dNetworkTypeSlave; break;
|
|
case 2:GroupSelected=0;tType =0; break;
|
|
default:GroupSelected=0;tType =0; break;
|
|
}
|
|
DoListSelectAll(tType);
|
|
DrawSlaverList();
|
|
}
|
|
DrawListSelected();
|
|
}
|
|
|
|
void TCanNetworkRegister::Task1000Ms()
|
|
{
|
|
unsigned char x,y;
|
|
volatile unsigned int aAddr;
|
|
if(IsShowing){
|
|
if(IsOnSearching){
|
|
PreventPermissionDown();
|
|
PreventEventShow();
|
|
if(Done){
|
|
IsOnSearching =0;
|
|
ClearSelected();
|
|
CtlIndex=11;
|
|
ListY=0;
|
|
ListX=0;
|
|
SetGroupSelected(dNetworkTypeSlave);
|
|
DrawListSelected();
|
|
}else{
|
|
if(SearchingTick == 0)SearchingTick = GoStartNum;
|
|
if(SearchingTick >(GoEndNum +2) ){
|
|
SearchingTick = GoEndNum +2 +1;
|
|
Count = GetCtlCount();
|
|
//LoadData2Last();
|
|
DrawListTitle();
|
|
DrawSearchingList();
|
|
//ShowSearchCompleted();
|
|
Done = 1;
|
|
}else
|
|
if( (SearchingTick) && (SearchingTick <= GoEndNum) ){
|
|
SearchingNum = SearchingTick;
|
|
SendAskType(SearchingNum);
|
|
if(SearchingNum>1){
|
|
DrawSearchingItem(SearchingNum-1);
|
|
ListDrewIndex = SearchingNum-1;
|
|
}
|
|
if(LanguageEnCn==0)TextRender_string24 (Lv.Panel.Left +600, Lv.Panel.Top +2, clNearBlack, PanelColor, "正在搜索:");
|
|
else TextRender_string24 (Lv.Panel.Left +600, Lv.Panel.Top +2, clNearBlack, PanelColor, "Scanning: ");
|
|
TextDigitRender2_24 (Lv.Panel.Left +708, Lv.Panel.Top +2, clNearBlack, PanelColor, SearchingNum % 100);
|
|
|
|
Count = GetCtlCount();
|
|
//LoadData2Last();
|
|
}else{
|
|
Count = GetCtlCount();
|
|
//LoadData2Last();
|
|
DrawSearchingList();
|
|
if(LanguageEnCn==0) TextRender_string24(Lv.Panel.Left +600, Lv.Panel.Top +2, clNearBlack, PanelColor, "搜索完成 ");
|
|
else TextRender_string24(Lv.Panel.Left +600, Lv.Panel.Top +2, clNearBlack, PanelColor, "Scan Completed ");
|
|
}
|
|
|
|
SearchingTick++;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
int TCanNetworkRegister::ExtRequst(unsigned char Prm)
|
|
{
|
|
IsShowing =0;
|
|
IsOnSearching =0;
|
|
return 0;
|
|
}
|
|
|