📄 datalist.cpp
字号:
#include "DataList.h"
#include "DataControl.h"
#include "BaseMain.h"
#include "SMS_Func.h"
OBJECT_INDEX gObjectValue[MAX_OBJECTID];
extern CDMA_PACK gRPackData, gSPackData, gReceivePackData;
extern TComControl gp_ComGrid[MAX_OBJECTID];
void GenerateObjIdTree()
{
memset(gObjectValue, 0, sizeof(gObjectValue));
AnsiString FileName=ExtractFilePath(ParamStr(0))+"ConfigFiles\\AllStation.txt";
if (!FileExists(FileName)) //文件存在吗?
{
ShowMessage("文件不存在!");
return;
}
CWorkFile wk(FileName.c_str(), "r");
OpenAll(&wk, 0);
char buf[1024],ColId[100], ColObj[100], ColFmt[100], ColCmd[100];
int iZoom, iSign, iLen;
INT16U code;
while(wk.GetLine(buf))
{
ExtractColumn(buf, 0, ColId, "\t ");
ExtractColumn(buf, 1, ColObj, "\t ");
ExtractColumn(buf, 2, ColFmt, "\t ");
ExtractColumn(buf, 3, ColCmd, "\t ");
code = strtol(ColId, NULL, 16);
if(code >= MAX_OBJECTID) continue;
strcpy(gObjectValue[code].ObjectName, ColObj);
gObjectValue[code].Object_ID = code;
iZoom = 0;
iSign = 0;
if(!stricmp(ColFmt, "bit"))
{
iLen = 1;
gObjectValue[code].bSingle = 1;
}
else if(!stricmp(ColFmt, "10uint1"))
{
iLen = 1;
iZoom = 1;
}
else if(!stricmp(ColFmt, "10sint2"))
{
iLen = 2;
iZoom = 1;
iSign = 1;
}
else if(!stricmp(ColFmt, "10uint2"))
{
iLen = 2;
iZoom = 1;
iSign = 0;
}
else if(!stricmp(ColFmt, "sint1"))
{
iLen = 1;
iSign = 1;
}
else if(!stricmp(ColFmt, "sint2"))
{
iLen = 2;
iSign = 1;
}
else if(!stricmp(ColFmt, "uint1"))
iLen = 1;
else if(!stricmp(ColFmt, "uint2"))
iLen = 2;
else if(!stricmp(ColFmt, "uint4"))
iLen = 4;
else if(!stricmp(ColFmt, "str"))
iLen = 20;
gObjectValue[code].Object_Length = iLen;
gObjectValue[code].bZoom = iZoom;
gObjectValue[code].bSign = iSign;
gObjectValue[code].ptVarible = new INT8U[iLen + 1];
gObjectValue[code].bUsed = 1;
gObjectValue[code].CmdNo = strtol(ColCmd, NULL, 16);
}
CloseAll(&wk,0);
}
char DeviceFactoryName[][100]=
{
"京信通信",
"珠海银邮",
"广州阿尔创",
"香港CSL",
"西安大唐",
"上海飞利",
"武汉虹信",
"深圳华脉",
"深圳国人",
"福建邮科",
"惠州邮电工程",
"湖南神风",
"深圳云海",
"浙江三维",
"南京林城",
"上海东洲罗顿",
"深圳声诺数码",
"深圳中科典",
"沈阳奥维",
"四川瑞登",
"北京威奥特",
"福建飞毛腿",
"福建三元达",
"福建先创",
"杭州东信",
"杭州威力克",
"杭州鑫众",
"东方信联",
"",
};
char DeviceType[][100]=
{
"宽带直放站",
"选频直放站",
"光纤直放站直接耦合近端机",
"光纤直放站宽带远端机",
"干线放大器",
"移频直放站选频远端机",
"移频直放站直接耦合宽带近端机",
"双频光纤直放站远端机",
"双频光纤直放站直接耦合近端机",
"双向宽带塔放",
"双向选频塔放",
"移频直放站无线耦合宽带近端机",
"光纤直放站选频远端机",
"光纤载波池宽带基站端机",
"光纤载波池选频基站端机",
"光纤载波池宽带远端机",
"光纤载波池选频远端机",
"光纤直放站无线耦合近端机",
"移频直放站宽带远端机",
"移频直放站直接耦合选频近端机",
"移频直放站无线耦合选频近端机",
"基站放大器",
"",
};
char BatchStatus[][100]=
{
"",
"正在进行批量采样",
"正常关闭批量采样",
"采样启动失败",
"采样结束失败",
"",
};
char saFarInit[][100]=
{
"0455041B045404DD045304C3045104460450041E0441041F0440041F",
"0455041F045404DC045304C2045104460450041E0441041F0440041F",
"04550422045404DD045304C3045104460450041E0441041F0440041F",
"04550425045404D9045304BF045104460450041E0441041F0440041F",
"04550427045404D9045304BF045104460450041E0441041F0440041F",
"0455041B045404D9045304BF045104460450041E0441041F0440041F",
"0455041F045404D9045304BF045104460450041E0441041F0440041F",
"04550422045404D9045304BF045104460450041E0441041F0440041F",
"04550425045404D9045304BF045104460450041E0441041F0440041F",
"04550427045404D9045304BF045104460450041E0441041F0440041F",
"",
};
char saNearInit[][100]=
{
"0455041B045404FE045304EE045104460450041E0441041F0440041F",
"0455041F045404FE045304EE045104460450041E0441041F0440041F",
"04550422045404FE045304EE045104460450041E0441041F0440041F",
"04550425045404FE045304EE045104460450041E0441041F0440041F",
"04550427045404FE045304EE045104460450041E0441041F0440041F",
"",
};
void DealReceiveData()
{
INT16U iObjectId;
INT8U PosCRC;
INT8U *ptPackEnd,*ptPosLen,*ptPosObjectID,*ptVariable;
PosCRC = gReceivePackData.len_depack;
PosCRC -= 3;
gReceivePackData.depack_data[PosCRC++] = 0x00;
gReceivePackData.depack_data[PosCRC] = 0x00;
ptPackEnd = &gReceivePackData.depack_data[0] + gReceivePackData.len_depack - 1;
ptPosLen = &gReceivePackData.depack_data[PRTCL_POS_VARIABLE];
while(ptPosLen < ptPackEnd)
{
ptPosObjectID = ptPosLen + 1;
ptVariable = ptPosLen + 3;
CheckDataValid(ptPosObjectID, ptVariable, ptPosLen);
GetPackData(ptPosObjectID, ptVariable, ptPosLen);
ptPosLen += *ptPosLen;
if(*ptPosLen == 0)
{
break;
}
}
}
void CheckDataValid(INT8U *ptObjectID,INT8U *ptVariable,INT8U *ptLen)
{
INT16U mObjectID;
String InfoLine;
mObjectID = INT8Upt_2_INT16U(ptObjectID);
Swap_INT16U(&mObjectID);
mObjectID &= 0x0FFF;
if(mObjectID==0x0002)
{
if(*ptVariable<1 || *ptVariable>27)
{
InfoLine.sprintf("数值不合法:OID为%04X,数值为%02X",mObjectID, *ptVariable);
}
}
else if(mObjectID == 0x0003)
{
if(*ptVariable<1 || *ptVariable>22)
{
InfoLine.sprintf("数值不合法:OID为%04X,数值为%02X",mObjectID, *ptVariable);
}
}
else if(mObjectID == 0x0007 || mObjectID == 0x0008)
{
if(*ptVariable == 0xFF)
{
InfoLine.sprintf("数值不合法:OID为%04X,数值为%s",mObjectID, INT8U_2_Str(ptVariable,20));
}
}
else if(mObjectID == 0x0142)
{
if(*ptVariable<1 || *ptVariable>2)
{
InfoLine.sprintf("数值不合法:OID为%04X,数值为%02X",mObjectID, *ptVariable);
}
}
if(!InfoLine.IsEmpty())
MergeObjectInfo(InfoLine);
if(gObjectValue[mObjectID].bUsed && (*ptLen-3 != gObjectValue[mObjectID].Object_Length))
{
InfoLine.sprintf("数值不合法:OID为%04X长度错",mObjectID);
MergeObjectInfo(InfoLine);
}
}
void GetPackData(INT8U *ptObjectID,INT8U *ptVariable,INT8U *ptLen)
{
INT8U i;
INT16U mObjectID, code;
INT8U szKey[10];
char buf[100];
bool flag = false;
memset(buf, 0, 100);
mObjectID = INT8Upt_2_INT16U(ptObjectID);
Swap_INT16U(&mObjectID);
if(mObjectID >= 0x1000)
{
mObjectID &= 0x0FFF;
flag = true;
if(mObjectID == 0x04A2)
return;
}
else if(!gObjectValue[mObjectID].bUsed)
return;
memset(gObjectValue[mObjectID].ptVarible, 0, gObjectValue[mObjectID].Object_Length+1);
str_cpy((INT8U*)gObjectValue[mObjectID].ptVarible, ptVariable, gObjectValue[mObjectID].Object_Length);
if(gObjectValue[mObjectID].bSingle)
{
if(flag)
gp_ComGrid[mObjectID].pCbx->ItemIndex = -1;
else
{
if(mObjectID == 0x0002 || mObjectID == 0x0003 || mObjectID == 0x0141
||mObjectID == 0x0142 || mObjectID == 0x0166)
gp_ComGrid[mObjectID].pCbx->ItemIndex = *ptVariable - 1;
else
gp_ComGrid[mObjectID].pCbx->ItemIndex = *ptVariable;
}
}
else if(mObjectID>=0x0300 && mObjectID<=0x03FF)
{
if(*ptVariable == 0x01)
gp_ComGrid[mObjectID].pShp->Brush->Color = clRed;
else
gp_ComGrid[mObjectID].pShp->Brush->Color = clGreen;
gp_ComGrid[mObjectID].pShp->Refresh();
}
else if(mObjectID == 0x0528 || mObjectID == 0x0529)
{
if(flag)
gp_ComGrid[mObjectID].pEd->Text = "";
else
{
if(*ptVariable == 1)
gp_ComGrid[mObjectID].pEd->Text = "旁路";
else
gp_ComGrid[mObjectID].pEd->Text = "正常";
}
}
else if(mObjectID == 0x0605)
{
if(flag)
gp_ComGrid[mObjectID].pEd->Text = "";
else
{
gp_ComGrid[mObjectID].pEd->Text = BatchStatus[*ptVariable];
}
}
else if(mObjectID >= 0x052A && mObjectID <= 0x0531)
{
if(flag)
gp_ComGrid[mObjectID].pEd->Text = "";
else
{
if(*ptVariable == 1)
gp_ComGrid[mObjectID].pEd->Text = "备份";
else
gp_ComGrid[mObjectID].pEd->Text = "工作";
}
}
else if(mObjectID == 0x0142)
gp_ComGrid[mObjectID].pCbx->ItemIndex = (*ptVariable)-1;
else if(mObjectID == 0x0130 || mObjectID == 0x0160)
{
sprintf(buf, "%d.%d.%d.%d", *ptVariable, *(ptVariable+1), *(ptVariable+2), *(ptVariable+3));
gp_ComGrid[mObjectID].pEd->Text = buf;
}
else if(mObjectID == 0x0150 || mObjectID == 0x0601)
{
sprintf(buf, "%02X%02X-%02X-%02X %02X:%02X:%02X",*ptVariable, *(ptVariable+1), *(ptVariable+2), *(ptVariable+3),*(ptVariable+4), *(ptVariable+5), *(ptVariable+6), *(ptVariable+7));
gp_ComGrid[mObjectID].pEd->Text = buf;
}
else if(*ptLen>=23)
{
AnsiString Temp;
Temp = (char*)gObjectValue[mObjectID].ptVarible;
Temp.TrimLeft();
if(Temp.SubString(1,1)=="E")
{
Temp.Delete(1,1);
Temp = "东经" + Temp;
}
else if(Temp.SubString(1,1)=="W")
{
Temp.Delete(1,1);
Temp = "西经" + Temp;
}
else if (Temp.SubString(1,1)=="N")
{
Temp.Delete(1,1);
Temp = "北纬" + Temp;
}
else if (Temp.SubString(1,1)=="S")
{
Temp.Delete(1,1);
Temp = "南纬" + Temp;
}
if(mObjectID == 0x0007 || mObjectID == 0x0008)
gp_ComGrid[mObjectID].pEd->Text = Temp;
else
gp_ComGrid[mObjectID].pEd->Text = (char*)gObjectValue[mObjectID].ptVarible;
}
else if(*ptLen == 4)
{
if(gObjectValue[mObjectID].bSign == 1)
{
char tt = *ptVariable;
sprintf(buf, "%d", tt);
}
else if(gObjectValue[mObjectID].bZoom == 1)
{
sprintf(buf, "%.1f", *ptVariable/10.0);
}
else
{
sprintf(buf, "%d", *ptVariable);
}
if(flag)
gp_ComGrid[mObjectID].pEd->Text = "";
else
gp_ComGrid[mObjectID].pEd->Text = buf;
}
else if(*ptLen == 0x05)
{
code = INT8Upt_2_INT16U(ptVariable);
Swap_INT16U(&code);
if(gObjectValue[mObjectID].bZoom == 1 && gObjectValue[mObjectID].bSign == 1)
{
INT16S sCode = code;
sprintf(buf, "%.1f", sCode / 10.0);
}
else
sprintf(buf, "%ld", code);
if(flag)
gp_ComGrid[mObjectID].pEd->Text = "";
else
gp_ComGrid[mObjectID].pEd->Text = buf;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -