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

📄 basemain.cpp.bak

📁 符合移动协议的见空系统,很有使用简直,希望多下载
💻 BAK
📖 第 1 页 / 共 5 页
字号:
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop
#include "BaseMain.h"
#include "Global.h"
#include "PackData.h"
#include "SMS_Func.h"
#include "About.h"

//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "cxClasses"
#pragma link "cxControls"
#pragma link "cxCustomData"
#pragma link "cxData"
#pragma link "cxDataStorage"
#pragma link "cxEdit"
#pragma link "cxFilter"
#pragma link "cxGraphics"
#pragma link "cxGrid"
#pragma link "cxGridCustomTableView"
#pragma link "cxGridCustomView"
#pragma link "cxGridLevel"
#pragma link "cxGridTableView"
#pragma link "cxStyles"
#pragma link "trayicon"
#pragma resource "*.dfm"

extern HANDLE				gOkEvent, gErrEvent;
extern CDMA_MODEM 		mdm;
extern INT32U  glSiteNo;
extern INT8U guDeviceNo;
extern INT8U *pt_Rev, *pt_Read;
extern CPack *gp_SPack, *gp_RPack;
extern CDMA_PACK gRPackData, gSPackData, gReceivePackData;
extern HANDLE gpModemThread;
extern CRITICAL_SECTION	g_csSync;
extern bool gb_Direct;
extern TIniFile   *gpIniFile;
extern TADOQuery  *gpADOQuery;

_PtrClassMemFunc gpmemfun;

TForm1 *Form1;
TComControl gp_ComGrid[MAX_OBJECTID];
OBJGROUP  gObjectGroup[8]; //0x0001~0x06FF;

int gSendPackCount = 0;
int gObjectIdCount = 0;
CAVLTree<CIntPtrMap>  gSendPackTree;
String gsModuleAdd;

//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
  miOnce = 0;
  m_bWays = false;
  mbConnect = false;
  mhSubThread = NULL;
  InitObjectGroup();
  mpcxVCL = new TList;
  mptvVCL = new TList;

  mpcxVCL->Add(cxGrid0);
  mpcxVCL->Add(cxGrid1);
  mpcxVCL->Add(cxGrid2);

  mptvVCL->Add(tvGrid0);
  mptvVCL->Add(tvGrid1);
  mptvVCL->Add(tvGrid2);

  m_sqlstr="select * From tTran ORDER BY Oper_Date DESC";
  m_hEventArray[0] = gOkEvent;
  m_hEventArray[1] = gErrEvent;
  Init_sms_index();
}
void  __fastcall TForm1::InitObjectGroup()
{
  memset(gObjectGroup, 0, sizeof(gObjectGroup));
}

//---------------------------------------------------------------------------

void __fastcall TForm1::NCloseClick(TObject *Sender)
{
  FreeMemory();
  Close();
}
//---------------------------------------------------------------------------

void __fastcall TForm1::N4Click(TObject *Sender)
{
  if(N4->Checked)
  {
    N4->Checked = false;
    N5->Checked = true;
    Form2->SetMsgText("短信通信方式已成功设置为主从式!");
  }
  else
  {
    N4->Checked = true;
    N5->Checked = false;
    Form2->SetMsgText("短信通信方式已成功设置为群发式!");
  }
  Form2->ShowModal();
}
//---------------------------------------------------------------------------

void __fastcall TForm1::N5Click(TObject *Sender)
{
  if(N5->Checked)
  {
    N5->Checked = false;
    N4->Checked = true;
    Form2->SetMsgText("短信通信方式已成功设置为群发式!");
  }
  else
  {
    N4->Checked = false;
    N5->Checked = true;
    Form2->SetMsgText("短信通信方式已成功设置为主从式!");
  }
  Form2->ShowModal();
}
//---------------------------------------------------------------------------

void __fastcall TForm1::RefreshScreen()
{
  CRect s_rectColWidth;

  int t1, t2;

  static int cxColWidth[10][9] =
  {
    {25,130,190,25,130,190,0,0,0},
    {25,130,190,25,130,190,0,0,0},
    {25,159,70,25,159,70,25,159,70},
    {25,159,40,25,159,40,25,159,40},
    {25,170,80,25,170,80,25,170,80},
    {25,160,70,25,160,70,25,160,70},
    {25,130,120,25,130,120,0,0,0},
  };
  static int cxUnitWidth[10][4]=
  {
    {21,129, 188, 20},
    {21,129, 188, 20},
    {21,158, 68, 20},
    {21,158, 38, 20},
    {21,169, 78, 20},
    {21,159, 68, 20},
    {21,129, 118, 20},
  };

  miStPoint[0] = 45;
  miStPoint[1] = 390;
  miColWidth[0] = 129;
  miColWidth[1] = 129;

  for(int i = 0; i<3; i++)
  {
    DispGrid(i, cxUnitWidth[i], cxColWidth[i]);
  }
  TabbedNotebook1->PageIndex = 0;
}

void __fastcall TForm1::DispGrid(int i, int UnitWidth[], int ColWidth[])
{
  int t1;
  TcxGrid *pcxGrid;
  TcxGridTableView *ptvGrid;
  pcxGrid = ((TcxGrid*)mpcxVCL->Items[i]);
  ptvGrid = ((TcxGridTableView*)mptvVCL->Items[i]);
  if(i < 2 || i == 6)
  {
    t1 = (gObjectGroup[i].ObjCount + 1) / 2;
  }
  else
  {
    t1 = (gObjectGroup[i].ObjCount + 2) / 3;
  }
  GetActualWidth(&gObjectGroup[i], pcxGrid, UnitWidth, ColWidth);
  pcxGrid->Width = micxGridWidth;

  pcxGrid->Height = (t1+1) * 21 + 4;
  if(i<2 || i==6)
    CreateSpreadSheet(ptvGrid, ColWidth, t1, 6);
  else
    CreateSpreadSheet(ptvGrid, ColWidth, t1, 9);
  InitObject(i, UnitWidth);
}

void __fastcall TForm1::FormCreate(TObject *Sender)
{
  //ListFromSystem();
  CmbBand->ItemIndex = gpIniFile->ReadInteger("配置表", "波特率", 3);
	m_nBaud = StrToInt(CmbBand->Text);
  CmbPort->ItemIndex = 0;
	m_cParity='N';
	m_nDatabits=8;
	m_nStopbits=1;
	m_dwCommEvents = EV_RXFLAG | EV_RXCHAR;
  m_bOpenPort=FALSE;

  AnsiString SiteNo, DeviceNo, TelNo;
  gsModuleAdd = gpIniFile->ReadString("配置表", "模块地址", "");

  m_nCom = strtol(((CmbPort->Text).SubString(4,1)).c_str(), NULL, 10);
  txtAddr->Text = gsModuleAdd;
  if(m_Port.InitPort(m_nCom, m_nBaud,m_cParity,m_nDatabits,m_nStopbits,m_dwCommEvents,512))
  {
    m_Port.StartMonitoring();
    ShpPort->Brush->Color = clRed;
    btnOpen->Caption = "关闭";
  }
  else
  {
    Memo1->Lines->Add("对端口“COM1”的访问被拒绝。");
    m_bOpenPort = true;
    ShpPort->Brush->Color = clBlack;
    btnOpen->Caption = "打开";
  }
  GenerateObjIdTree();
  GenerateDynamicObjectFromFile("上次建站的设备");

  InitControlObject();

  if(CmbWays->Text == "本地")
  {
    if(gp_SPack)
      delete gp_SPack;
    gp_SPack = new CPack485Local();
    if(gp_RPack)
      delete gp_RPack;
    gp_RPack = new CPack485Local();
    gb_Direct = true;
    Thread_Status(false);
  }
  gp_SPack->SetSerialPort(&m_Port);
  RefreshScreen();

  pBar->Top=2;
  pBar->Left=322;
  pBar->Width=220;
  pBar->Height=15;
  pBar->Visible=true;
  pBar->Parent=this->StatusBar1;
  pBar->Min=0;
  pBar->Step=1;
  EmptyGridData();
}
//---------------------------------------------------------------------------




void __fastcall TForm1::btnClearClick(TObject *Sender)
{
  Memo1->Clear();
}
//---------------------------------------------------------------------------



//---------------------------------------------------------------------------

void TForm1::CreateSpreadSheet(TcxGridTableView *TblView, int ColWidth[10], int RecordCount, int ColCount)
{
  TblView->BeginUpdate();
  try{
    CreateColumns(TblView, ColWidth, ColCount);
    CreateRows(TblView, RecordCount,ColCount);
  }
  __finally{
    TblView->EndUpdate();
  }
}
//---------------------------------------------------------------------------

void TForm1::CreateColumns(TcxGridTableView *TblView, int ColWidth[10], int ColCount)
{
  String ColumnCaption[14]=
  {
    "","监控参数", "值", "", "监控参数", "值","", "监控参数", "值","",
  };
  TcxGridColumn *AColumn;
  for (int i = 0; i < ColCount; i++)
  {
    AColumn = TblView->CreateColumn();
    AColumn->Caption = ColumnCaption[i];
    AColumn->Options->Moving = false;
    AColumn->Options->HorzSizing = false;
    AColumn->HeaderAlignmentHorz = taCenter;
    AColumn->Width = ColWidth[i];
  }
}
//---------------------------------------------------------------------------

void TForm1::CreateRows(TcxGridTableView *TblView, int RecordCount, int ColCount)
{
  TblView->DataController->RecordCount = RecordCount;
  randomize();
  for (int I = 0; I < RecordCount; I++)
    for (int J = 0; J < ColCount; J++)
      ;
}


void GetSpecDataList(TADOQuery *pADOQuery)
{
  AnsiString FileName=ExtractFilePath(ParamStr(0))+"ConfigFiles\\AllObjectID.txt";
  FILE *fp = fopen(FileName.c_str(), "w");
  pADOQuery->Close();
  pADOQuery->SQL->Clear();
  pADOQuery->SQL->Add("select * from JCObject\n");
  pADOQuery->Open();
  pADOQuery->First();
  for(int i=0;i<pADOQuery->RecordCount;i++)
  {
    AnsiString StrRecord="";
    for(int j=0;j<pADOQuery->FieldCount;j++)
    {
      String StrRecord;
      StrRecord = pADOQuery->Fields->Fields[j]->AsString;
      fprintf(fp, "%s\t", StrRecord.c_str());
    }
    fprintf(fp, "\n");
    pADOQuery->Next();
  }
  fclose(fp);
}


void GenerateDynamicObjectFromFile(char *pStr)
{
  AnsiString FileName=ExtractFilePath(ParamStr(0))+"ConfigFiles\\StationOid.txt";
  CWorkFile wk(FileName.c_str(), "r");
  OpenAll(&wk, 0);
  char buf[_2K]="", *p1=NULL, TmpBuf[6];
  INT16U DataRange,i;
  //pStr = "基站放大器";
  while(wk.GetLine(buf))
  {
    if(!strncmp(buf,pStr, strlen(pStr)))
    {
      p1 = strchr(buf, ':');
      if(!p1) break;
      strcpy(buf, p1+1);
      break;
    }
  }
  for(p1=buf; *p1!=0; p1+=4)
  {
    if(strlen(p1)<4) break;
    strncpy(TmpBuf, p1, 4);
    TmpBuf[4] = 0;
    DataRange = strtol(TmpBuf,NULL, 16);
    if(DataRange==0x0141 || !gObjectValue[DataRange].bUsed)
      continue;
    if(DataRange<MAX_OBJECTID)
      i = DataRange>>8;
    else
      continue;
    gObjectGroup[i].ObjStr += TmpBuf;
    gObjectGroup[i].ObjCount ++;
    gObjectIdCount++;
  }
  CloseAll(&wk, 0);
}

void __fastcall TForm1::GetNextWidth(PTOBJGROUP pObj, int &iaMax1, int &iaMax2, int &iaMax3)
{
}

void __fastcall TForm1::GetActualWidth(PTOBJGROUP pObj, TcxGrid *pCxGrid, int UnitWidth[], int ColWidth[])
{
  AnsiString subid;
  INT16U  iObjectId;
  int i=1, iGrid=0;
  char Buf[_1K], Temp[100], szBuf[100];
  int iLen, iMax1=0, iMax2=0, iMax3=0;

   if(pCxGrid == cxGrid1 || pCxGrid == cxGrid0)
    HalfCount = (pObj->ObjCount + 1)/2;
  else
    HalfCount = (pObj->ObjCount + 2)/3;

  while(i <= pObj->ObjStr.Length())
  {
    subid = pObj->ObjStr.SubString(i, 4);
    iObjectId = strtol(subid.c_str(), NULL, 16);
    if(iObjectId>=MAX_OBJECTID)
    {
      i+=4;
      continue;
    }
    iLen = gp_ComGrid[iObjectId].pLb->Text.Length();
    if(!gObjectValue[iObjectId].bUsed)
    {
      i += 4;
      continue;
    }
    gp_ComGrid[iObjectId].SetObjectUsed(1);
    iGrid = i/4;
    if(iGrid<HalfCount)
    {
      if(iLen>iMax1) iMax1 = iLen;
      gp_ComGrid[iObjectId].iPosCol = 1;
    }
    else if(iGrid<2*HalfCount)
    {
      if(iLen>iMax2) iMax2 = iLen;
      gp_ComGrid[iObjectId].iPosCol = 2;
    }
    else
    {
      if(iLen>iMax3) iMax3 = iLen;
      gp_ComGrid[iObjectId].iPosCol = 3;
    }
    i+= 4;
  }

  miColWidth[0] = iMax1 * 6 + 1;
  miColWidth[1] = iMax2 * 6 + 1;
  miColWidth[2] = iMax3 * 6 + 1;

  miStPoint[1] = miStPoint[0] + UnitWidth[0] + 4 + miColWidth[0] + 1 + UnitWidth[2] + 2;
  miStPoint[2] = miStPoint[1] + UnitWidth[0] + 4 + miColWidth[1] + 1 + UnitWidth[2] + 2;
  ColWidth[1] = miColWidth[0]+1;
  ColWidth[4] = miColWidth[1]+1;
  ColWidth[7] = miColWidth[2]+1;

  micxGridWidth = 62;
  for(i = 0; i < 9; i++)
  {
    micxGridWidth += ColWidth[i];
  }
}

void __fastcall TForm1::InitObject(INT8U iPage, int UnitWidth[])
{
  int iLevel = 0, i=1;
  AnsiString subid;
  INT16U  iObjectId;
  
  while(i <= gObjectGroup[iPage].ObjStr.Length())
  {
    subid = gObjectGroup[iPage].ObjStr.SubString(i, 4);
    iObjectId = strtol(subid.c_str(), NULL, 16);
    iLevel = i/4;
    if(iObjectId>=MAX_OBJECTID)
    {
      i+=4;
      continue;
    }
    if(gObjectValue[iObjectId].bUsed == 0)
    {
      i += 4;
      continue;
    }
    if(gp_ComGrid[iObjectId].iPosCol == 1)
    {
      gp_ComGrid[iObjectId].SetPos(miStPoint[0], 21*(iLevel+1)+2, UnitWidth[0], miColWidth[0], UnitWidth[2], UnitWidth[3]);
    }
    else if(gp_ComGrid[iObjectId].iPosCol == 2)
    {
      gp_ComGrid[iObjectId].SetPos(miStPoint[1], 21*(iLevel%HalfCount + 1)+2, UnitWidth[0], miColWidth[1], UnitWidth[2], UnitWidth[3]);
    }
    else
      gp_ComGrid[iObjectId].SetPos(miStPoint[2],21*(iLevel%HalfCount + 1)+2, UnitWidth[0], miColWidth[2], UnitWidth[2], UnitWidth[3]);

    gp_ComGrid[iObjectId].pLb->TabStop = false;
    if(gp_ComGrid[iObjectId].EditStyle == 0)
    {
      gp_ComGrid[iObjectId].SetEditPosition();
      gp_ComGrid[iObjectId].pEd->TabStop = true;
    }
    else if(gp_ComGrid[iObjectId].EditStyle == 1)
    {
      gp_ComGrid[iObjectId].SetCombPosition();
      gp_ComGrid[iObjectId].pCbx->TabStop = true;
    }
    else if(gp_ComGrid[iObjectId].EditStyle == 2)
      gp_ComGrid[iObjectId].SetShapePosition();
    i += 4;
  }
}




⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -