⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 datalist.cpp

📁 符合移动协议的见空系统,很有使用简直,希望多下载
💻 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 + -