806 lines
20 KiB
C++
806 lines
20 KiB
C++
#include "RuntimeData.h"
|
|
#include "DesignPrmSet.h"
|
|
#include "DevMask.h"
|
|
|
|
extern "C"{
|
|
//#include "user_norflash.h"
|
|
#include "user_eeprom.h"
|
|
#include "task.h"
|
|
}
|
|
|
|
#define Icon16_Up 1
|
|
#define Icon16_Down 2
|
|
|
|
#define dfAddrLineNum 6
|
|
#define dfDescpLineNum 4
|
|
#define dfDescpMax 250
|
|
|
|
#define dWdClr clSkyBlue
|
|
#define dWdDisabelClr clNearWhite
|
|
|
|
#define dWWidth 24
|
|
#define dWHeigh 24
|
|
#define dRoundR 7
|
|
|
|
#define dAddr_DescpBuf dAddrSdRam_Commom
|
|
|
|
|
|
void TDesignPrmSet::Init()
|
|
{
|
|
Tag.Reset();
|
|
Setting.Reset();
|
|
SaveSta = 0;
|
|
LoadBaseTypeList();
|
|
ReadData();
|
|
|
|
IsPermission = 0;
|
|
CntError = 0;
|
|
}
|
|
|
|
void TDesignPrmSet::InitBackEnd()
|
|
{
|
|
Setting.Reset();
|
|
LoadBaseTypeList();
|
|
ReadData();
|
|
|
|
IsPermission = 0;
|
|
CntError = 0;
|
|
}
|
|
|
|
void TDesignPrmSet::DelayMs(unsigned int aMs)
|
|
{
|
|
volatile unsigned int mTick;
|
|
volatile unsigned int Tick;
|
|
for(Tick=0; Tick<aMs; Tick++){
|
|
for(mTick=0; mTick<160000; mTick++);
|
|
}
|
|
}
|
|
|
|
void TDesignPrmSet::RenderBackGround(void)
|
|
{
|
|
RectFillRender(ContentGeometry.Left, ContentGeometry.Top, ContentGeometry.Right, ContentGeometry.Bottom, ContentColor);
|
|
}
|
|
|
|
void TDesignPrmSet::RenderBackGround(unsigned int aClr)
|
|
{
|
|
RectFillRender(ContentGeometry.Left, ContentGeometry.Top, ContentGeometry.Right, ContentGeometry.Bottom, aClr);
|
|
}
|
|
|
|
void TDesignPrmSet::DrawSelf(void)
|
|
{
|
|
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);
|
|
IconList->Render(16,Icon16_Up , ArrowUpPoint.x, ArrowUpPoint.y);
|
|
IconList->Render(16,Icon16_Down , ArrowDownPoint.x, ArrowDownPoint.y);
|
|
if(LanguageEnCn==0){
|
|
TextRender_string24(Lv.Caption.Left + 10, Lv.Caption.Top +4, clNearWhite, "工程->设计数量");
|
|
if(MainCtl.fData.Split.NetworkMode == 1){
|
|
TextRender_string24(Lv.Grid.Left[0] + 6, Lv.Grid.Top[0] +8, clNearWhite, "共 种设备类型. 点位总数 点. 系统总容量 点.");
|
|
}else
|
|
if(MainCtl.fData.Split.NetworkMode == 2){
|
|
TextRender_string24(Lv.Grid.Left[0] + 6, Lv.Grid.Top[0] +8, clNearWhite, "共 种设备类型. 点位总数 点. 本机为区域机 ");
|
|
}else{
|
|
TextRender_string24(Lv.Grid.Left[0] + 6, Lv.Grid.Top[0] +8, clNearWhite, "共 种设备类型. 点位总数 点. 本机为单机 ");
|
|
}
|
|
}else{
|
|
TextRender_string24(Lv.Caption.Left + 10, Lv.Caption.Top +4, clNearWhite, "Project->Number Of Designe");
|
|
if(MainCtl.fData.Split.NetworkMode == 1){
|
|
TextRender_string24(Lv.Grid.Left[0] + 6, Lv.Grid.Top[0] +8, clNearWhite, " Types Of Dev; Devices ; Devs On Sys: ");
|
|
}else
|
|
if(MainCtl.fData.Split.NetworkMode == 2){
|
|
TextRender_string24(Lv.Grid.Left[0] + 6, Lv.Grid.Top[0] +8, clNearWhite, " Types Of Dev; Devices ; Regional ");
|
|
}else{
|
|
TextRender_string24(Lv.Grid.Left[0] + 6, Lv.Grid.Top[0] +8, clNearWhite, " Types Of Dev; Devices ; Stand Alone ");
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
void TDesignPrmSet::ShowState()
|
|
{
|
|
if(SaveSta == 0){
|
|
TextRender_string24(ResultSavePoint.x, ResultSavePoint.y ,clNearWhite, ItemColor, " ");
|
|
}else
|
|
if(SaveSta == 1){
|
|
if(LanguageEnCn==0) TextRender_string24(ResultSavePoint.x, ResultSavePoint.y ,clNearWhite, ItemColor, "保存成功");
|
|
else TextRender_string24(ResultSavePoint.x, ResultSavePoint.y ,clNearWhite, ItemColor, "Saved OK");
|
|
}
|
|
}
|
|
|
|
void TDesignPrmSet::ShowState(unsigned int aSta)
|
|
{
|
|
SaveSta = aSta;
|
|
ShowState();
|
|
}
|
|
|
|
void TDesignPrmSet::DrawCaption(void)
|
|
{
|
|
Caption.Show();
|
|
}
|
|
|
|
|
|
void TDesignPrmSet::Show()
|
|
{
|
|
RenderBackGround();
|
|
DrawSelf();
|
|
}
|
|
|
|
void TDesignPrmSet::FullRedraw(int Prm)
|
|
{
|
|
if(Prm == 0){
|
|
RenderBackGround();
|
|
DrawSelf();
|
|
Analy();
|
|
ShowSetting();
|
|
ShowState();
|
|
}else
|
|
if(Prm == 1){
|
|
RectFillRender(GuiRedrawDataList[1][0], GuiRedrawDataList[1][1], GuiRedrawDataList[1][2], GuiRedrawDataList[1][3], ContentColor);
|
|
DrawSelf();
|
|
Analy();
|
|
ShowSetting();
|
|
ShowState();
|
|
|
|
if(IsPermission)PmsIntervene4Gui.ReDraw4GuiRecall();
|
|
}
|
|
}
|
|
|
|
void TDesignPrmSet::PermissionCmdReturnDraw()
|
|
{
|
|
RectFillRender(Lv.Grid.Left[1] + 200 -10, Lv.Grid.Top[1] + 12 -10, Lv.Grid.Left[1] + 200 -10 + 400 + 20, Lv.Grid.Top[1] + 12 -10 + 140 + 20, ContentColor);
|
|
for(int i=1; i<4; i++)RectFillRender(Lv.Grid.Left[i], Lv.Grid.Top[i], Lv.Grid.Right[i], Lv.Grid.Bottom[i], ItemColor);
|
|
ReAligne();
|
|
}
|
|
|
|
void TDesignPrmSet::PermissionCmdGO()
|
|
{
|
|
ReStorage();
|
|
Write2Eep();
|
|
ReadData();
|
|
ShowState(1);
|
|
ReAligne();
|
|
}
|
|
|
|
|
|
void TDesignPrmSet::DrawEntryActive(int aInx, int IsENtryActive)
|
|
{
|
|
if(IsENtryActive)
|
|
TRoundSquare::sDrawBySize(16, Lv.Grid.Top[aInx + 1] + 6, dWWidth, dWHeigh, dRoundR, dWdClr, 1);
|
|
else
|
|
TRoundSquare::sDrawBySize(16, Lv.Grid.Top[aInx + 1] + 6, dWWidth, dWHeigh, dRoundR, dWdDisabelClr , 0);
|
|
}
|
|
|
|
void TDesignPrmSet::DrawEntryTypeString(int aInx)
|
|
{
|
|
int x, y, dInx;
|
|
unsigned char tType;
|
|
x = 46;
|
|
y = Lv.Grid.Top[aInx + 1] + 6;
|
|
dInx = Setting.TopEntry + aInx;
|
|
tType = TypeList.dType[dInx];
|
|
if(LanguageEnCn==0)
|
|
TMyString::sFromStr(StrHwType[tType], TextType);
|
|
else
|
|
TMyString::sFromStr(StrHwTypeEn[tType], TextType);
|
|
TMyString::sFillFixLen(TextType, 32);
|
|
TextRender_string24(x,y,clNearWhite,ItemColor, TextType);
|
|
}
|
|
|
|
void TDesignPrmSet::ClearSelected(void)
|
|
{
|
|
int i;
|
|
for(i=0; i<5; i++){
|
|
aPanel->Edit[i].Selected = 0;
|
|
}
|
|
switch(Tag.Inx){
|
|
case 0:
|
|
TRoundSquare::sSelected(16, Lv.Grid.Top[1] + 6, dWWidth, dWHeigh, 4, ItemColor);
|
|
break;
|
|
case 1:
|
|
aPanel->Edit[0].Show();
|
|
break;
|
|
case 2:
|
|
TRoundSquare::sSelected(16, Lv.Grid.Top[2] + 6, dWWidth, dWHeigh, 4, ItemColor);
|
|
break;
|
|
case 3:
|
|
aPanel->Edit[1].Show();
|
|
break;
|
|
case 4:
|
|
TRoundSquare::sSelected(16, Lv.Grid.Top[3] + 6, dWWidth, dWHeigh, 4, ItemColor);
|
|
break;
|
|
case 5:
|
|
aPanel->Edit[2].Show();
|
|
break;
|
|
case 6:
|
|
TRoundSquare::sSelected(16, Lv.Grid.Top[4] + 6, dWWidth, dWHeigh, 4, ItemColor);
|
|
break;
|
|
case 7:
|
|
aPanel->Edit[3].Show();
|
|
break;
|
|
}
|
|
}
|
|
|
|
void TDesignPrmSet::Check4Selected(void)
|
|
{
|
|
int i;
|
|
for(i=0; i<5; i++){
|
|
aPanel->Edit[i].Selected = 0;
|
|
}
|
|
switch(Tag.Inx){
|
|
case 0:
|
|
TRoundSquare::sSelected(16, Lv.Grid.Top[1] + 6, dWWidth, dWHeigh, 4, clNearWhite);
|
|
break;
|
|
case 1:
|
|
aPanel->Edit[0].Selected = 1;
|
|
aPanel->Edit[0].Show();
|
|
aPanel->Edit[0].ShowCursor();
|
|
break;
|
|
case 2:
|
|
TRoundSquare::sSelected(16, Lv.Grid.Top[2] + 6, dWWidth, dWHeigh, 4, clNearWhite);
|
|
break;
|
|
case 3:
|
|
aPanel->Edit[1].Selected = 1;
|
|
aPanel->Edit[1].Show();
|
|
aPanel->Edit[1].ShowCursor();
|
|
break;
|
|
case 4:
|
|
TRoundSquare::sSelected(16, Lv.Grid.Top[3] + 6, dWWidth, dWHeigh, 4, clNearWhite);
|
|
break;
|
|
case 5:
|
|
aPanel->Edit[2].Selected = 1;
|
|
aPanel->Edit[2].Show();
|
|
aPanel->Edit[2].ShowCursor();
|
|
break;
|
|
case 6:
|
|
TRoundSquare::sSelected(16, Lv.Grid.Top[4] + 6, dWWidth, dWHeigh, 4, clNearWhite);
|
|
break;
|
|
case 7:
|
|
aPanel->Edit[3].Selected = 1;
|
|
aPanel->Edit[3].Show();
|
|
aPanel->Edit[3].ShowCursor();
|
|
break;
|
|
}
|
|
}
|
|
|
|
void TDesignPrmSet::InitPanel(void)
|
|
{
|
|
aPanel->Init(100,100,10,10,0,0,clFrmFace, bvRaised);
|
|
|
|
aPanel->Edit[0].Init(Lv.Grid.Left[1] + 14,Lv.Grid.Top[1] + 36,96,30,0,0,clNearBlack,clNearWhite);
|
|
aPanel->Edit[1].Init(Lv.Grid.Left[2] + 14,Lv.Grid.Top[2] + 36,96,30,0,0,clNearBlack,clNearWhite);
|
|
aPanel->Edit[2].Init(Lv.Grid.Left[3] + 14,Lv.Grid.Top[3] + 36,96,30,0,0,clNearBlack,clNearWhite);
|
|
aPanel->Edit[3].Init(Lv.Grid.Left[4] + 14,Lv.Grid.Top[4] + 36,96,30,0,0,clNearBlack,clNearWhite);
|
|
|
|
for(int i=0; i<4;i++){
|
|
aPanel->Edit[i].Enable = 1;
|
|
aPanel->Edit[i].Visible = 1;
|
|
aPanel->Edit[i].SetMaxLen(6);
|
|
aPanel->Edit[i].SetInputMaskEn();
|
|
aPanel->Edit[i].Str.FromStr("0");
|
|
aPanel->Edit[i].Selected = 0;
|
|
}
|
|
ReadData();
|
|
Analy();
|
|
ShowSetting();
|
|
}
|
|
|
|
void TDesignPrmSet::ShowSetting()
|
|
{
|
|
for(int i=Setting.TopEntry, Pcnt=0; (i<TypeList.Count) && (Pcnt<4); i++,Pcnt++){
|
|
if(Setting.Using[i]){
|
|
DrawEntryActive(Pcnt, 1);
|
|
DrawEntryTypeString(Pcnt);
|
|
}else{
|
|
DrawEntryActive(Pcnt, 0);
|
|
DrawEntryTypeString(Pcnt);
|
|
}
|
|
aPanel->Edit[Pcnt].Str.FromUInt6Dg(Setting.Count[i]);
|
|
aPanel->Edit[Pcnt].SetPstTail();
|
|
aPanel->Edit[Pcnt].Show();
|
|
aPanel->Edit[Pcnt].ShowCursor();
|
|
}
|
|
Check4Selected();
|
|
}
|
|
|
|
void TDesignPrmSet::LoadData()
|
|
{
|
|
int i;
|
|
ReadData();
|
|
|
|
aPanel->Edit[0].Str.FromUInt(DesigePrmData.Count.Smoke);
|
|
aPanel->Edit[1].Str.FromUInt(DesigePrmData.Count.ModuleInOut);
|
|
aPanel->Edit[2].Str.FromUInt(DesigePrmData.Count.Tempe);
|
|
aPanel->Edit[3].Str.FromUInt(DesigePrmData.Count.ModuleOutput);
|
|
|
|
|
|
for(i=0; i<4; i++){
|
|
aPanel->Edit[i].SetPstTail();
|
|
aPanel->Edit[i].Show();
|
|
}
|
|
|
|
aPanel->ReDrawItems();
|
|
Check4Selected();
|
|
}
|
|
|
|
void TDesignPrmSet::SaveData()
|
|
{
|
|
|
|
}
|
|
|
|
TGuiMsgReturn TDesignPrmSet::KeyIn(unsigned char aKey)
|
|
{
|
|
TGuiMsgReturn aMsg = guiMsgNone;
|
|
int uKey, iVal;
|
|
unsigned char aIndex;
|
|
char LastChr;
|
|
const char *p;
|
|
int i;
|
|
TGuiMsgReturn PmsRtnMsg;
|
|
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{
|
|
switch(aKey){
|
|
case VK_DELETE:
|
|
case VK_LEFT:
|
|
case VK_RIGHT:
|
|
case '0':
|
|
case '1':
|
|
case '2':
|
|
case '3':
|
|
case '4':
|
|
case '5':
|
|
case '6':
|
|
case '7':
|
|
case '8':
|
|
case '9':
|
|
if(Tag.Inx < 8){
|
|
if(Tag.Inx & 0x01){
|
|
const int eInx = Tag.Inx /2;
|
|
aPanel->Edit[eInx].KeyIn(aKey);
|
|
iVal = aPanel->Edit[eInx].Str.ToInteger();
|
|
if( (iVal <0) || (iVal>60000) ){
|
|
CntError = 1;
|
|
aPanel->Edit[eInx].SelectedColor = clRed;
|
|
}else{
|
|
CntError = 0;
|
|
aPanel->Edit[eInx].SelectedColor = clBlue;
|
|
}
|
|
aPanel->Edit[eInx].CorrectPst();
|
|
aPanel->Edit[eInx].Show();
|
|
ReStorage();
|
|
Analy();
|
|
}else{
|
|
const int rInx = Tag.Inx /2 + 1;
|
|
Setting.Using[Setting.Entry] = Setting.Using[Setting.Entry] ? 0 : 1;
|
|
Setting.Using[Setting.Entry] ?
|
|
TRoundSquare::sDrawBySize(Lv.Grid.Left[rInx] + 16, Lv.Grid.Top[rInx] + 6, dWWidth, dWHeigh, dRoundR, dWdClr, 1) :
|
|
TRoundSquare::sDrawBySize(Lv.Grid.Left[rInx] + 16, Lv.Grid.Top[rInx] + 6, dWWidth, dWHeigh, dRoundR, dWdDisabelClr , 0);
|
|
Analy();
|
|
}
|
|
}
|
|
break;
|
|
case VK_UP:
|
|
if(CntError == 0){
|
|
if(Tag.Inx >0){
|
|
ClearSelected();
|
|
Tag.Inx--;
|
|
Setting.Entry = Setting.TopEntry + (Tag.Inx /2);
|
|
if(Setting.Entry <0)Setting.Entry = 0;
|
|
Check4Selected();
|
|
}else{
|
|
if(Setting.TopEntry >0){
|
|
ReStorage();
|
|
ClearSelected();
|
|
Tag.Inx = 1;
|
|
Setting.TopEntry--;
|
|
Setting.Entry = Setting.TopEntry;
|
|
ReAligne();
|
|
Check4Selected();
|
|
}
|
|
}
|
|
}
|
|
break;
|
|
case VK_DOWN:
|
|
if(CntError == 0){
|
|
if(Tag.Inx < 7){
|
|
ClearSelected();
|
|
Tag.Inx++;
|
|
Setting.Entry = Setting.TopEntry + (Tag.Inx /2);
|
|
Check4Selected();
|
|
}else{
|
|
if(Setting.Entry < (TypeList.Count -1)){
|
|
ReStorage();
|
|
ClearSelected();
|
|
Tag.Inx = 6;
|
|
Setting.TopEntry++;
|
|
Setting.Entry++;
|
|
ReAligne();
|
|
Check4Selected();
|
|
}
|
|
}
|
|
}
|
|
break;
|
|
case VK_TAB:
|
|
break;
|
|
case dfKEY_SETUP:
|
|
if( (Tag.Inx & 0x01) == 0){
|
|
int rInx = Tag.Inx /2 + 1;
|
|
Setting.Using[Setting.Entry] = Setting.Using[Setting.Entry] ? 0 : 1;
|
|
Setting.Using[Setting.Entry] ?
|
|
TRoundSquare::sDrawBySize(Lv.Grid.Left[rInx] + 16, Lv.Grid.Top[rInx] + 6, dWWidth, dWHeigh, dRoundR, dWdClr, 1) :
|
|
TRoundSquare::sDrawBySize(Lv.Grid.Left[rInx] + 16, Lv.Grid.Top[rInx] + 6, dWWidth, dWHeigh, dRoundR, dWdDisabelClr , 0);
|
|
Analy();
|
|
}
|
|
break;
|
|
case VK_EXECUTE:
|
|
if(CntError == 0){
|
|
if(SystemPermission > 2){
|
|
PermissionCmdGO();
|
|
}else{
|
|
IsPermission = 1;
|
|
PmsIntervene4Gui.Show4Gui(Lv.Grid.Left[1] + 200, Lv.Grid.Top[1] + 12, 400, 140, 3);
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
if( (aKey != VK_EXECUTE) && (aKey == VK_RETURN) )ShowState(0);
|
|
if(aKey == VK_RETURN){
|
|
aMsg = guiMsgReturn;
|
|
}
|
|
}
|
|
return aMsg;
|
|
}
|
|
|
|
void TDesignPrmSet::Write2Eep()
|
|
{
|
|
unsigned int eAddr;
|
|
unsigned int i;
|
|
volatile unsigned int aWait, x, wP0, Wait4;
|
|
unsigned char Inx;
|
|
|
|
//Write Using Count
|
|
eAddr = dEepAddrDesignPrm;
|
|
DelayMs(10);
|
|
for(i=0; i<128; i++)ReadWriteData.D8[i] = 0;
|
|
ReadWriteData.D8[0] = TypeList.Count;
|
|
eeprom_write_byte_via_page(0, eAddr, ReadWriteData.D8, 1);
|
|
DelayMs(10);
|
|
|
|
//Write List 1/2
|
|
for(i=0; i<128; i++)ReadWriteData.D8[i] = 0;
|
|
for(i=0; i<128; i++){
|
|
ReadWriteData.D8[i] = Setting.Using[i];
|
|
}
|
|
eAddr = dEepAddrDesignPrm + 128;
|
|
DelayMs(10);
|
|
eeprom_write_byte_via_page(0, eAddr, ReadWriteData.D8, 128);
|
|
|
|
//Write List 2/2
|
|
for(i=0; i<128; i++)ReadWriteData.D8[i] = 0;
|
|
for(i=0; i<128; i++){
|
|
ReadWriteData.D8[i] = Setting.Using[i +128];
|
|
}
|
|
eAddr = dEepAddrDesignPrm + 256;
|
|
DelayMs(10);
|
|
eeprom_write_byte_via_page(0, eAddr, ReadWriteData.D8, 128);
|
|
|
|
//Write 8 Times(32 Per Time) = 256 Point Count And Type
|
|
for(Inx=0; Inx<8; Inx++){
|
|
eAddr = dEepAddrDesignPrm + 384 + (Inx*128);
|
|
if(TypeList.Count > (Inx*32)){
|
|
for(i=0; i<128; i++)ReadWriteData.D8[i] = 0;
|
|
x = Inx*32;
|
|
for(i=0; i<32; i++){
|
|
ReadWriteData.Count[i] = Setting.Count[x+i];
|
|
ReadWriteData.Pnt[i].sType = TypeList.dType[x+i];
|
|
}
|
|
DelayMs(10);
|
|
eeprom_write_byte_via_page(0, eAddr, ReadWriteData.D8, 128);
|
|
}
|
|
}
|
|
DelayMs(10);
|
|
ReadData();
|
|
LoadData2RuntimeData();
|
|
}
|
|
|
|
void TDesignPrmSet::RecoverSetDefault()
|
|
{
|
|
unsigned int eAddr;
|
|
unsigned int i;
|
|
volatile unsigned int aWait, x, wP0, Wait4;
|
|
unsigned char Inx;
|
|
|
|
//Write Using Count
|
|
SysLoopTick = 0;
|
|
eAddr = dEepAddrDesignPrm;
|
|
DelayMs(10);
|
|
for(i=0; i<128; i++)ReadWriteData.D8[i] = 0;
|
|
eeprom_write_byte_via_page(0, eAddr, ReadWriteData.D8, 1);
|
|
DelayMs(10);
|
|
|
|
//Write List 1/2
|
|
for(i=0; i<128; i++)ReadWriteData.D8[i] = 0;
|
|
eAddr = dEepAddrDesignPrm + 128;
|
|
DelayMs(10);
|
|
eeprom_write_byte_via_page(0, eAddr, ReadWriteData.D8, 128);
|
|
|
|
//Write List 2/2
|
|
for(i=0; i<128; i++)ReadWriteData.D8[i] = 0;
|
|
eAddr = dEepAddrDesignPrm + 256;
|
|
DelayMs(10);
|
|
eeprom_write_byte_via_page(0, eAddr, ReadWriteData.D8, 128);
|
|
|
|
//Write 8 Times(32 Per Time) = 256 Point Count And Type
|
|
for(i=0; i<128; i++)ReadWriteData.D8[i] = 0;
|
|
for(Inx=0; Inx<8; Inx++){
|
|
SysLoopTick = 0;
|
|
eAddr = dEepAddrDesignPrm + 384 + (Inx*128);
|
|
DelayMs(10);
|
|
eeprom_write_byte_via_page(0, eAddr, ReadWriteData.D8, 128);
|
|
}
|
|
}
|
|
|
|
void TDesignPrmSet::ReadData()
|
|
{
|
|
unsigned int eAddr;
|
|
unsigned int i;
|
|
volatile unsigned int x, tCnt;
|
|
unsigned char Inx, dType;
|
|
|
|
//Read ExistTable
|
|
eAddr = dEepAddrDesignPrm;
|
|
DelayMs(10);
|
|
for(i=0; i<128; i++)ReadWriteData.D8[i] = 0;
|
|
eeprom_read_byte(0, eAddr, ReadWriteData.D8, 1);
|
|
DelayMs(10);
|
|
|
|
for(i=0; i<128; i++)ReadWriteData.D8[i] = 0;
|
|
eAddr = dEepAddrDesignPrm + 128;
|
|
eeprom_read_byte(0, eAddr, ReadWriteData.D8, 128);
|
|
for(i=0; i<128; i++){
|
|
TmpUsing[i] = ReadWriteData.D8[i];
|
|
}
|
|
|
|
for(i=0; i<128; i++)ReadWriteData.D8[i] = 0;
|
|
eAddr = dEepAddrDesignPrm + 256;
|
|
DelayMs(10);
|
|
eeprom_read_byte(0, eAddr, ReadWriteData.D8, 128);
|
|
for(i=0; i<128; i++){
|
|
TmpUsing[i +128] = ReadWriteData.D8[i];
|
|
}
|
|
|
|
for(Inx=0; Inx<8; Inx++){
|
|
eAddr = dEepAddrDesignPrm + 384 + (Inx*128);
|
|
if(TypeList.Count > (Inx*32)){
|
|
for(i=0; i<128; i++)ReadWriteData.D8[i] = 0;
|
|
DelayMs(10);
|
|
eeprom_read_byte(0, eAddr, ReadWriteData.D8, 128);
|
|
|
|
x = Inx*32;
|
|
for(i=0; i<32; i++){
|
|
tCnt = ReadWriteData.Count[i] & 0x00FFFFFF;
|
|
dType = ReadWriteData.Pnt[i].sType;
|
|
for(int e=0; e<TypeList.Count; e++){
|
|
if(dType == TypeList.dType[e]){
|
|
Setting.Using[e] = TmpUsing[e];
|
|
Setting.Count[e] = tCnt;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
void TDesignPrmSet::LoadData2RuntimeData()
|
|
{
|
|
int x;
|
|
unsigned char dType;
|
|
unsigned int tCnt;
|
|
|
|
DesigePrmData.Count.DisplayPad = 0;
|
|
DesigePrmData.Count.HandReport = 0;
|
|
DesigePrmData.Count.HydrantKp = 0;
|
|
DesigePrmData.Count.ModuleInOut = 0;
|
|
DesigePrmData.Count.ModuleInput = 0;
|
|
DesigePrmData.Count.ModuleOutput = 0;
|
|
DesigePrmData.Count.Smoke = 0;
|
|
DesigePrmData.Count.Tempe = 0;
|
|
DesigePrmData.Count.Va = 0;
|
|
DesigePrmData.Count.LnkPs = 0;
|
|
DesigePrmData.Count.Other = 0;
|
|
|
|
for(int e=0; e<TypeList.Count; e++){
|
|
dType = TypeList.dType[e];
|
|
tCnt = Setting.Count[e];
|
|
if(Setting.Using[e]){
|
|
if(dType == dgTYPE_SMOKE_DETECTOR){
|
|
DesigePrmData.Count.Smoke = tCnt;
|
|
}else
|
|
if(dType == dgTYPE_TEMPE_DETECTOR){
|
|
DesigePrmData.Count.Tempe = tCnt;
|
|
}else
|
|
if(dType == dgTYPE_HAND_REPORT){
|
|
DesigePrmData.Count.HandReport = tCnt;
|
|
}else
|
|
if(dType == dgTYPE_FIRE_HydrantKp){
|
|
DesigePrmData.Count.HydrantKp = tCnt;
|
|
}else
|
|
if(dType == dgTYPE_IN_MODULE){
|
|
DesigePrmData.Count.ModuleInput = tCnt;
|
|
}else
|
|
if(dType == dgTYPE_OUT_MODULE){
|
|
DesigePrmData.Count.ModuleOutput = tCnt;
|
|
}else
|
|
if(dType == dgTYPE_INOUT_MODULE_NonSource){
|
|
DesigePrmData.Count.ModuleInOut = tCnt;
|
|
}else
|
|
if(dType == dgType_VAALRAM){
|
|
DesigePrmData.Count.Va = tCnt;
|
|
}else
|
|
if(dType == dgTYPE_DISPLAY_PAD){
|
|
DesigePrmData.Count.DisplayPad = tCnt;
|
|
}else
|
|
if(dType == dgTYPE_LINKAGE_POWERSUPLY){
|
|
DesigePrmData.Count.LnkPs = tCnt;
|
|
}
|
|
}
|
|
}
|
|
|
|
if(DesigePrmData.Count.DisplayPad >= 60000)DesigePrmData.Count.DisplayPad = 0;
|
|
if(DesigePrmData.Count.HandReport >= 60000)DesigePrmData.Count.HandReport = 0;
|
|
if(DesigePrmData.Count.HydrantKp >= 60000)DesigePrmData.Count.HydrantKp = 0;
|
|
if(DesigePrmData.Count.ModuleInOut >= 60000)DesigePrmData.Count.ModuleInOut = 0;
|
|
if(DesigePrmData.Count.ModuleInput >= 60000)DesigePrmData.Count.ModuleInput = 0;
|
|
if(DesigePrmData.Count.ModuleOutput >= 60000)DesigePrmData.Count.ModuleOutput = 0;
|
|
if(DesigePrmData.Count.Smoke >= 60000)DesigePrmData.Count.Smoke = 0;
|
|
if(DesigePrmData.Count.Tempe >= 60000)DesigePrmData.Count.Tempe = 0;
|
|
if(DesigePrmData.Count.Va >= 60000)DesigePrmData.Count.Va = 0;
|
|
if(DesigePrmData.Count.LnkPs >= 60000)DesigePrmData.Count.LnkPs = 0;
|
|
if(DesigePrmData.Count.Other >= 60000)DesigePrmData.Count.Other = 0;
|
|
}
|
|
|
|
void TDesignPrmSet::BackEnd_LoadData2RuntimeData()
|
|
{
|
|
InitBackEnd();
|
|
LoadBaseTypeList();
|
|
ReadData();
|
|
LoadData2RuntimeData();
|
|
}
|
|
|
|
void TDesignPrmSet::LoadBaseTypeList()
|
|
{
|
|
int i;
|
|
unsigned int aAddr;
|
|
char *cText;
|
|
|
|
TypeList.Count = 0;
|
|
for(i=0; i<256; i++){
|
|
TypeList.dType[i] = 0;
|
|
}
|
|
|
|
//Load Hw Define Type & Manufacturer Define Type
|
|
TypeList.Count = 0;
|
|
if(LanguageEnCn==0){
|
|
cText = "未";
|
|
for(i=0; i<256; i++){
|
|
if( (StrHwType[i][0] != cText[0]) && (StrHwType[i][1] != cText[1]) ){
|
|
TypeList.dType[TypeList.Count] = i;
|
|
TypeList.Count++;
|
|
}
|
|
}
|
|
}else{
|
|
cText = "un";
|
|
for(i=0; i<256; i++){
|
|
if( (StrHwTypeEn[i][0] != cText[0]) && (StrHwTypeEn[i][1] != cText[1]) ){
|
|
TypeList.dType[TypeList.Count] = i;
|
|
TypeList.Count++;
|
|
}
|
|
}
|
|
}
|
|
|
|
//Load User Define Type
|
|
for(i=0; i<256; i++){
|
|
// if( (StrHwType[i][0] != cText[0]) && (StrHwType[i][1] != cText[1]) ){
|
|
// TypeList.dType[TypeList.Count] = i;
|
|
// TypeList.Count++;
|
|
// }
|
|
}
|
|
}
|
|
|
|
void TDesignPrmSet::ReStorage()
|
|
{
|
|
int tEntry = Setting.TopEntry;
|
|
for(int i=0; i<4; i++){
|
|
Setting.Count[tEntry] = aPanel->Edit[i].Str.ToInteger();
|
|
tEntry++;
|
|
if(tEntry >= TypeList.Count)break;
|
|
}
|
|
}
|
|
|
|
void TDesignPrmSet::ReAligne()
|
|
{
|
|
for(int i=Setting.TopEntry, Pcnt=0; (i<TypeList.Count) && (Pcnt<4); i++,Pcnt++){
|
|
if(Setting.Using[i]){
|
|
DrawEntryActive(Pcnt, 1);
|
|
DrawEntryTypeString(Pcnt);
|
|
}else{
|
|
DrawEntryActive(Pcnt, 0);
|
|
DrawEntryTypeString(Pcnt);
|
|
}
|
|
aPanel->Edit[Pcnt].Str.FromUInt6Dg(Setting.Count[i]);
|
|
aPanel->Edit[Pcnt].SetPstTail();
|
|
aPanel->Edit[Pcnt].Show();
|
|
aPanel->Edit[Pcnt].ShowCursor();
|
|
}
|
|
}
|
|
|
|
void TDesignPrmSet::Analy()
|
|
{
|
|
Setting.UsingTypeCount = 0;
|
|
Setting.EpCount =0;
|
|
for(int i=0; i<TypeList.Count; i++){
|
|
if(Setting.Using[i] != 0){
|
|
Setting.UsingTypeCount++;
|
|
Setting.EpCount += Setting.Count[i];
|
|
}
|
|
}
|
|
TextDigitRender3Right24(Lv.Grid.Left[0] + 30, Lv.Grid.Top[0] + 8, clNearWhite, ItemColor, Setting.UsingTypeCount);
|
|
TextDigitRender6Right24(Lv.Grid.Left[0] + 318, Lv.Grid.Top[0] + 8, clNearWhite, ItemColor, Setting.EpCount);
|
|
}
|
|
|
|
void TDesignPrmSet::ExtLoadData()
|
|
{
|
|
ExtInf.UsingTypeCount = 0;
|
|
ExtInf.EpCount =0;
|
|
for(int i=0; i<TypeList.Count; i++){
|
|
if(Setting.Using[i] != 0){
|
|
ExtInf.UsingTypeCount++;
|
|
ExtInf.EpCount += Setting.Count[i];
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|