📄 basemain.cpp.bak
字号:
//---------------------------------------------------------------------------
#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 + -