m1
来源:互联网 发布:淘宝店铺装修工具箱 编辑:程序博客网 时间:2024/05/01 05:22
/******************************************************************************
* *
* 文件名 : main.cpp *
* 开发人 : 胡智玮 *
* 开发时间: 2005.03.05 * *
* 版本 : 2.0.0.0 *
* *
******************************************************************************/
//---------------------------------------------------------------------------
#include <vcl.h>
#include <iostream.h>
#include <fstream.h>
#include <stdio.h>
#include <sys/stat.h>
#include <string.h>
#include <fcntl.h>
#include <io.h>
#include <Registry.hpp>//读写INI
#pragma hdrstop
#include "Main.h"
#include "AddGas.h"
#include "AddSu.h"
#include "AddSm.h"
#include "About.h"
#include "AddNet.h"
#include "SuInfo.h"
#include "SmInfo.h"
#include "AddDev.h"
#include "AddAvdServer.h"
#include "GacHuaLu.h"
#include "GacHunYin.h"
#include "GacDuanKou.h"
#include "GetBanBenHao.h"
#include "SetControlTime.h"
#include "GmuxYeWuKou.h"
#include "SocketOnly.h"
#include "GpaSqlInfo.h"
#include "ListTransferStateArm.h"
#include "DvrVideoParam.h"
#include "FarUpDateNew.h"
#include "HideTime.h"
#include "ShowTime.h"
#include "DxcSetR.h"
#include "DevInfo.h"
#include "Message.h"
#include "OkCancel.h"
#include "AddLine.h"
#include "LineInfo.h"
#include "SuSmInfo.h"
#include "FarUpDate.h"
#include "GpaParams.h"
#include "SetWorkNet.h"
#include "TwoMalarmBack.h"
#include "CopySuParams.h"
#include "SmAddrInfo.h"
#include "E1TimeWorkInfo.h"
#include "QtMainIpParams.h"
#include "ConnectionServer.h"
#include "SmAddrParams.h"
#include "GetVideoSwInfo.h"
#include "ReceiveData.h"
#include "GetNetControl.h"
#include "QtServerIpInfo.h"
#include "SetVideoSwParams.h"
#include "SetNetControlParams.h"
#include "ControlBackInfo.h"
#include "ExtendDvrInfo.h"
#include "ExtendDvr.h"
#include "ExtendDvrBack.h"
#include "ExtendAudioBack.h"
#include "ExtendVideoBack.h"
#include "rrstruct.h"
#include "GetIp.h"
#include "rmipdef.h"
#include "FormatDisk1.h"
#include "ListTransferState.h"
#include "GetInforControlForm1.h"
#include "SetIp.h"
#include "SetPioHelper.h"
#include "GetAVSetTing.h"
#include "GetMPEG.h"
#include "SetMPEG.h"
#include "GetMPEGR.h"
#include "ListTransferState1.h"
#include "GetAVSetTingReturn.h"
#include "GetAudioSwitchStatus.h"
#include "GetVedioSwitchStatus.h"
#include "DisposeAudioHuaLuStatus.h"
#include "FuYongQiAlarmStatus.h"
#include "HuaLuZhanYongStatus.h"
#include "PuTongQieHuan.h"
#include "DVRSwitch.h"
#include "StopVoice.h"
#include "StartVoice.h"
#include "GetPioReturn.h"
#include "SetE1WorkMode.h"
#include "VedioSwitch.h"
#include "FormDS2154.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "FormBaseMain"
#pragma link "CSPIN"
#pragma link "ZConnection"
#pragma link "ZAbstractRODataset"
#pragma link "ZDataset"
#pragma link "ZAbstractDataset"
#pragma link "ZConnection"
#pragma link "ZConnection"
#pragma link "XPMenu"
#pragma link "XPMenu"
#pragma resource "*.dfm"
#define TM_FRAMEWAITE 20000 //升级报文返回超时时间
#define TM_TIMEBEYOND 300000 //写FLASH等待超时时间
TfmMain *fmMain;
String DeviceInfo = "设备参数...";
AnsiString asSql;//全Sql查询专用
bool G2mpGetParamsFlag = false;//
bool V35GetParamsFlag = false;//
bool GPAGetParamsFlag = false;//
bool E1TimeWorkFlag = false;//
int DS2154Flag = 0;
int GacHuaLuFlag = 0;
int GacDuanKoulag = 10;
int GacQieHuanFlag = -1;
int GacQieHuanCount = 0;
String SaveLogPath = "";
int MainControlCount = 0;
int MainControlJS = 0;
BYTE Gac4pBufTemp[640];
int IniError = 0;
int SetMainParamsFuWei = 0;
int MainParamType = 0;//主控参数类型
//---------------------------------------------------------------------------
__fastcall TfmMain::TfmMain(TComponent* Owner)
: TfmBaseMain(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TfmMain::FormCreate(TObject *Sender)
{
Width = 952;
Height = 670;
idx = 0;
UpDateFlag = 0;
UpDateSu = -1;
SetContorlTimeFlag = 0;
IsOvertimeTimer->Enabled = false ;
//载入初始化界面 Beging
imgMain->Canvas->Brush->Color = clWhite;
imgMain->Canvas->FillRect(Rect(0,0,1024,768));
imgMain->Canvas->Draw(2,2,ImgSet[0]);
imgMain->Canvas->Font->Name = "宋体";
imgMain->Canvas->Font->Color = (TColor) 0xFFFFFF;
imgMain->Canvas->Font->Size = 9;
imgMain->Canvas->Font->Style = TFontStyles()<< fsBold;
imgMain->Canvas->Brush->Color = (TColor)0x00B76A49;
// imgMain->Canvas->TextOutA(48,11,"后台设备");
//载入初始化界面 End
LoadIni();//读取配置文件
if(IniError == 0)
{//读取配置文件正常
LoadData();//装载数据
LoadVideoParams();//从ct_sm装载站与镜头参数 装入 ct_videoswparams视频切换参数
SelectDataFlag = true; //查看数据标记 T--硬件返回数据 F--查看数据库数据
SaveToLog(" 安全监控系统-网络管理程序启动...",1);//添加到运行记录
}
}
//---------------------------------------------------------------------------
void __fastcall TfmMain::TmUpdateTimer(TObject *Sender)
{//程序启动时刷新树型图
tvDevice->Refresh() ;
TmUpdate->Enabled = false;
}
//---------------------------------------------------------------------------
void __fastcall TfmMain::LoadIni()
{// 读取数据库配置文件
FILE * fp;
if((fp = fopen("NetManager.ini","r+")) == NULL)
{//数据库配置文件不存在
if((fp = fopen("NetManager.ini","w+")) == NULL)
{
TfmMessage *message = new TfmMessage(Application);
message->lbMessage->Caption = "创建NetManager网络管理程序配置文件错误!";
message->ShowModal();
Close();
}
else
{//建立默认配置文件
String sProvider,sPassword,sPsi,sUsId,sDataS,sMode,sServerip;
AnsiString AppPath = ExtractFilePath(Application->ExeName);
String sIniFilename = AppPath + "NetManager.ini";
SaveLogPath = AppPath;
WriteStreamInToIni("★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★/n");
WriteStreamInToIni("★ ★/n");
WriteStreamInToIni("★ NetManager网络管理程序的配置文件 ★/n");
WriteStreamInToIni("★ ★/n");
WriteStreamInToIni("★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★/n/n");
WriteStreamInToIni("[Program Parameter]/n");
WriteStreamInToIni("Password=/n");
WriteStreamInToIni("★注释:连接数据库的密码,默认为空。/n/n");
WriteStreamInToIni("UserID=root/n");
WriteStreamInToIni("★注释:连接数据库的用户名,默认为root。/n/n");
WriteStreamInToIni("DataSourceName=cwddata/n");
WriteStreamInToIni("★注释:数据库的名称,默认为cwddata。/n/n");
WriteStreamInToIni("DataSourceIp=127.0.0.1/n");
WriteStreamInToIni("★注释:数据库所在计算机的Ip地址。/n/n");
WriteStreamInToIni("Serverip=127.0.0.1/n");
WriteStreamInToIni("★注释:服务器程序所在计算机的Ip地址或前台主控Ip地址,由ServerType限定。/n/n");
WriteStreamInToIni("Port=4100/n");
WriteStreamInToIni("★注释:连接服务器程序的端口,默认为4100或连接前台主控的端口,默认为3000。由ServerType限定。/n/n");
WriteStreamInToIni("UpDatePort=2000/n");
WriteStreamInToIni("★注释:前台设备远程升级端口,默认为2000。/n/n");
WriteStreamInToIni("UpDateInterval=100/n");
WriteStreamInToIni("★注释:前台设备远程升级下发每包数据时间间隔。/n/n");
WriteStreamInToIni("UpDateSize=1024/n");
WriteStreamInToIni("★注释:前台设备远程升级下发每包数据大小,单位为字节。/n/n");
WriteStreamInToIni("ServerType=0/n");
WriteStreamInToIni("★注释:服务器类型,0-后台服务器,1-前台主控。");
/*TIniFile *ini;
ini = new TIniFile(sIniFilename);
ini->WriteString("Program Parameter","Password","");
ini->WriteString("Program Parameter","UserID","root");
ini->WriteString("Program Parameter","DataSourceName","cwddata");
ini->WriteString("Program Parameter","DataSourceIp","133.124.42.53");
ini->WriteString("Program Parameter","Serverip","127.0.0.1");
ini->WriteString("Program Parameter","Port","4100");
ini->WriteString("Program Parameter","UpDatePort","2000");
ini->WriteString("Program Parameter","UpDateInterval","100");
ini->WriteString("Program Parameter","UpDateSize","1024");*/
IniError = 1;
TfmMessage *message = new TfmMessage(Application);
message->lbMessage->Caption = "配置文件不存在!";
message->lbMessage2->Caption = "生成默认配置文件NetManager.ini,程序将被关闭,请检查配置文件!";
message->Width = message->lbMessage2->Width + 80;
message->spbAdd->Left = message->Width / 2 - message->spbAdd->Width / 2;
message->spbAdd->Top += 5;
message->ShowModal();
Application->Terminate();
}
fclose(fp);
}
else
{//读取配置文件
String Password = "",UsId = "",DataSourceName = "",DataSourceIp = "",serverip = "",Port = ""; AnsiString AppPath = ExtractFilePath(Application->ExeName);
String sIniFilename = AppPath + "NetManager.ini";
SaveLogPath = AppPath;
TIniFile *ini;
ini = new TIniFile(sIniFilename);
Password = ini->ReadString("Program Parameter","Password","");
UsId = ini->ReadString("Program Parameter","UserID","");
DataSourceName = ini->ReadString("Program Parameter","DataSourceName","");
DataSourceIp = ini->ReadString("Program Parameter","DataSourceIp","");
serverip = ini->ReadString("Program Parameter","Serverip","");
Port = ini->ReadString("Program Parameter","Port","");
ServerType = ini->ReadInteger("Program Parameter","ServerType",0);
delete ini;
ZConnection1->Password = Password;
ZConnection1->User = UsId;
ZConnection1->Database = DataSourceName;
ZConnection1->HostName = DataSourceIp;
try
{
ZConnection1->Connected = true ;
}
catch(...)
{
ZConnection1->Connected = false;
AnsiString str = "数据库链接失败,请确认数据库正常后重新启动程序!" ;
MessageShow(str);
Application->Terminate();
return ;
}
TimerConnectArm->Enabled = true;
//连接服务器
if(ClientSocket->Active)
{
ClientSocket->Active = false;
}
ClientSocket->Host = serverip;
ClientSocket->Port = Port.ToInt() ;
ClientSocket->Active = true;
fclose(fp);
}
/******************读取配置文件结束************************************/
}
//---------------------------------------------------------------------------
void __fastcall TfmMain::ClientSocketError(TObject *Sender,
TCustomWinSocket *Socket, TErrorEvent ErrorEvent, int &ErrorCode)
{
String str;
str = "错误,和服务器 " + ClientSocket->Host + " 连接失败!";
StatusBar1->Panels->Items[0]->Text = "连接状态:" + str;
MessageShow(str);
ErrorCode = 0;
SaveToLog(" " + str,1);//添加到运行记录
}
//---------------------------------------------------------------------------
void __fastcall TfmMain::MessageShow(String Str)
{
TfmMessage *message = new TfmMessage(Application);
message->lbMessage->Caption = Str;
if(message->lbMessage->Width > 252)
{
message->Width = message->lbMessage->Width + 80;
message->spbAdd->Left = message->Width / 2 - message->spbAdd->Width / 2;
}
/*else
{
message->lbMessage->Left = message->Width/2 - message->lbMessage->Width/2;
} */
message->ShowModal();
}
//---------------------------------------------------------------------------
void __fastcall TfmMain::ClientSocketDisconnect(TObject *Sender,
TCustomWinSocket *Socket)
{
String str;
str = "请注意,和服务器 ("+Socket->RemoteAddress +")"+"连接断开!";
MessageShow(str);
SaveToLog(" " + str,1);//添加到运行记录
}
//---------------------------------------------------------------------------
void __fastcall TfmMain::ClientSocketConnect(TObject *Sender,
TCustomWinSocket *Socket)
{
String str;
str = "和服务器 ("+Socket->RemoteAddress+")"+"连接成功!";
StatusBar1->Panels->Items[0]->Text = "连接状态:" + str;
//MessageShow(str);
SaveToLog(" " + str,1);//添加到运行记录
}
//---------------------------------------------------------------------------
void __fastcall TfmMain::LoadData()
{
/***************************装载设备节点****************************************/
String SUNAME,GKDNAME,SetName,NETNAME,SMNAME;
int Count = 0,SMNUM = 0,SetNum = 0;
int SuCount = 0,CountSm = 0;
TTreeNode *Node1,*Node2;
AnsiString asSql,asSqlGkd;
tvDevice->Items->Clear();
Node2 = tvDevice->Items->Add(NULL, "网络管理程序");
Node2->ImageIndex = 4;
Node2->SelectedIndex = 5;
asSql = "select * from CT_SU order by SUNUM";
ADOIndex->Close();
ADOIndex->SQL->Clear();
ADOIndex->SQL->Add(asSql);
ADOIndex->Open();
SuCount = ADOIndex->RecordCount;
if(SuCount > 0)
{
// Count = SuCount+1;
// CountSm = Count+1;
//添加站
Node1 = tvDevice->Items->Item[0];
for(int i=0;i<SuCount;i++)
{
SUNAME = ADOIndex->FieldByName("SUNAME")->AsString;
Node2 = tvDevice->Items->AddChild(Node1, SUNAME);
Node2->ImageIndex = 1;
ADOIndex->Next() ;
}
ADOIndex->First();
//SUCount ==站数--添加镜头
for(int i=0;i<SuCount;i++)
{
int SUNUM = ADOIndex->FieldByName("SUNUM")->AsInteger;
ADOIndex->Next(); //防止线路号不按0,1,2....正常顺序排列
asSql = "select * from CT_SM where SUNUM = '"+IntToStr(SUNUM)+"'" + " order by 'SMNUM'";
ADOSelect->Close();
ADOSelect->SQL->Clear();
ADOSelect->SQL->Add(asSql);
ADOSelect->Open();
int SMCount = ADOSelect->RecordCount;
Node1 = tvDevice->Items->Item[Count+1];
for(int i=0;i<SMCount;i++)
{
SUNAME = ADOSelect->FieldByName("SMNAME")->AsString;
SMNUM = ADOSelect->FieldByName("SMNUM")->AsInteger;
Node2 = tvDevice->Items->AddChild(Node1,(Trim(SUNAME) + "_" +IntToStr(SMNUM)));
Node2->ImageIndex =1;
ADOSelect->Next();
}
Count = Count + SMCount +1;
}
}
/***************************装载设备数据结束************************************/
/* TODO : 展开站 */
tvDevice->FullCollapse();
for(int i=0;i<tvDevice->Items->Count;i++)
{
TTreeNode *p1 = tvDevice->Items->Item[i];
if(p1->Level == 0 || p1->Level == 1||p1->Level == 2)
//if(p1->Level == 0||p1->Level == 1||p1->Level == 2)
{
p1->Expand(false);
}
}
tvDevice->Selected = tvDevice->Items->Item[idx];
}
//---------------------------------------------------------------------------
void __fastcall TfmMain::ConnectServerClick(TObject *Sender)
{//连接服务器
fmConnectiongServer->ShowModal();
}
//---------------------------------------------------------------------------
void __fastcall TfmMain::SpAboutClick(TObject *Sender)
{
fmAbout->ShowModal();
}
//---------------------------------------------------------------------------
void __fastcall TfmMain::SpExitClick(TObject *Sender)
{
Close();
}
//---------------------------------------------------------------------------
void __fastcall TfmMain::FormCloseQuery(TObject *Sender, bool &CanClose)
{
TfmOkCancel *okcancel = new TfmOkCancel(Application);
okcancel->LabelTitle->Caption = "提示信息...";
okcancel->lbMessage->Caption = "确定要退出网管程序吗?";
okcancel->ShowModal();
if(okcancel->bOk)
{
CanClose = true;
/* if(G2mpGetParamsFlag)
{
DeleteTable("DROP TABLE G2MPTEMP");//删除获取G2mp参数时产生的临时表
G2mpGetParamsFlag = false;
}
if(V35GetParamsFlag)
{
DeleteTable("DROP TABLE V35TEMP");//删除获取V35参数时产生的临时表
V35GetParamsFlag = false;
}
if(GPAGetParamsFlag)
{
DeleteTable("DROP TABLE GPATEMP");//删除获取GPA参数时产生的临时表
GPAGetParamsFlag = false;
} */
/*if(fmReceiveData->Memo2->Lines->Count > 0)
{
SaveToLog(fmReceiveData->Memo2->Text,0);
}*/
SaveToLog(" GS9.0安全监控系统-网络管理程序退出...",1);//添加到运行记录
}
else
{
CanClose = false;
}
}
//---------------------------------------------------------------------------
void __fastcall TfmMain::tvDeviceChange(TObject *Sender, TTreeNode *Node)
{
/* if(G2mpGetParamsFlag)
{
DeleteTable("DROP TABLE G2MPTEMP");//删除获取G2mp参数时产生的临时表
G2mpGetParamsFlag = false;
}
if(V35GetParamsFlag)
{
DeleteTable("DROP TABLE V35TEMP");//删除获取V35参数时产生的临时表
V35GetParamsFlag = false;
}
if(GPAGetParamsFlag)
{
DeleteTable("DROP TABLE GPATEMP");//删除获取GPA参数时产生的临时表
GPAGetParamsFlag = false;
}
//GPA设备
spbCancel->Enabled = false;
SpeedButton4->Enabled = false;
SpeedButton5->Enabled = false;
G2mpSave->Enabled = false;
G2mpUpdate->Enabled = false;
G2mpDel->Enabled = false;
GroupBox37->Enabled = false;
//pnlGAC
GroupBox37->Enabled = false;
GroupBox36->Enabled = false;
//G2mp
GroupBox32->Enabled = false;
GroupBox33->Enabled = false;
GroupBox13->Enabled = false;
GroupBox24->Enabled = false;
SpeedButton6->Enabled = false;
SpeedButton9->Enabled = false;
GroupBox38->Enabled = false;
// SpeedButton12->Enabled = false;
// SpeedButton11->Enabled = false;
SpeedButton13->Enabled = false;
SpeedButton14->Enabled = false;
SpeedButton15->Enabled = false;
//GEDN
NetSave->Enabled = false;
NetUpdate->Enabled = false;
GroupBox38->Enabled = false; */
NodeText = tvDevice->Selected->Text;//当前被选中的节点名称
if(tvDevice->Selected->Level > 1)
{
NodeParText = tvDevice->Selected->Parent->Text; //当前被选中的上一级节点名称
}
/* if(tvDevice->Selected->Level > 2)
{
NodeParParText = tvDevice->Selected->Parent->Parent->Text; //当前被选中的上一级的上一级的节点名称
} */
DrawFace(0); //恢复默认
pnlGPA->Visible = false;
pnlV35->Visible = false;
pnlG2MP->Visible = false;
pnlGAC4->Visible = false;
pnlNet->Visible = false;
pnlGAS->Visible = false;
pnlGMUX->Visible = false;
pnlAVDSERVER->Visible = false;
/* asSql = "select * from CT_GASINFO where GASNAME='" + NodeText + "'";
ADOIndex->Close();
ADOIndex->SQL->Clear();
ADOIndex->SQL->Add(asSql);
ADOIndex->Open();
int GASCount = ADOIndex->RecordCount;
if(GASCount > 0)
{
tvDevice->PopupMenu = PopupMenuGAS;
pnlGAS->Visible = true;
Label7->Caption = NodeText + "设备参数...";
asSql = "select * from CT_GACS where GASNAME='" + NodeText + "' order by GASPORT";
ADOIndex->Close();
ADOIndex->SQL->Clear();
ADOIndex->SQL->Add(asSql);
ADOIndex->Open();
int GASPORT = 0,GACOUTPORT = 0;
String GASNAME,GASADDR;
GASPORT = ADOIndex->FieldByName("GASPORT")->AsInteger;
GACOUTPORT = ADOIndex->FieldByName("GACOUTPORT")->AsInteger;
GASNAME = ADOIndex->FieldByName("GASNAME")->AsString;
GASADDR = ADOIndex->FieldByName("GASADDR")->AsString;
GasName->Caption = GASNAME;
GasAddr->Caption = GASADDR;
GasPort->Caption = GASPORT;
GacOutPort->Text = GACOUTPORT;
SpeedButton11->Enabled = false;
SpeedButton17->Enabled = false;
SpeedButton12->Enabled = true;
SpeedButton16->Enabled = true;
SpeedButton1->Enabled = false;
SpeedButton2->Enabled = true;
GacOutPort->Enabled = false;
return;
} */
/* asSql = "select * from ct_avdserver where NAME='" + NodeText + "'";
ADOIndex->Close();
ADOIndex->SQL->Clear();
ADOIndex->SQL->Add(asSql);
ADOIndex->Open();
int AvdServerCount = ADOIndex->RecordCount;
if(AvdServerCount > 0)
{
tvDevice->PopupMenu = PopupMenuAvdServer;
pnlAVDSERVER->Visible = true;
Label7->Caption = NodeText + " AvdServer设备参数...";
asSql = "select * from ct_avdserver where name='" + NodeText + "' order by ID";
ADOIndex->Close();
ADOIndex->SQL->Clear();
ADOIndex->SQL->Add(asSql);
ADOIndex->Open(); */
/*int GASPORT = 0,GACOUTPORT = 0;
String GASNAME,GASADDR;
/*GASPORT = ADOIndex->FieldByName("GASPORT")->AsInteger;
GACOUTPORT = ADOIndex->FieldByName("GACOUTPORT")->AsInteger;
GASNAME = ADOIndex->FieldByName("GASNAME")->AsString;
GASADDR = ADOIndex->FieldByName("GASADDR")->AsString;*/
/* AvdServerIp->Text = ADOIndex->FieldByName("IpAddr")->AsString;
AvdServerPort->Text = ADOIndex->FieldByName("ConnPort")->AsInteger;
AvdServerName->Text = ADOIndex->FieldByName("Name")->AsString;
AvdServerDaikuan->Text = ADOIndex->FieldByName("MaxBandWidth")->AsInteger; */
/*GasName->Caption = GASNAME;
GasAddr->Caption = GASADDR;
GasPort->Caption = GASPORT;
GacOutPort->Text = GACOUTPORT;
SpeedButton11->Enabled = false;
SpeedButton17->Enabled = false;
SpeedButton12->Enabled = true;
SpeedButton16->Enabled = true;
SpeedButton1->Enabled = false;
SpeedButton2->Enabled = true;
GacOutPort->Enabled = false;*/
/* return;
} */
/* asSql = "select * from CT_DEV where SMNAME='" + NodeText + "'";
ADOIndex->Close();
ADOIndex->SQL->Clear();
ADOIndex->SQL->Add(asSql);
ADOIndex->Open();
int Count = ADOIndex->RecordCount; */
/* if(Count > 0)
{//为后台设备
int SMTYPE = ADOIndex->FieldByName("SMTYPE")->AsInteger;
switch(SMTYPE)
{
case 197:
{//GPA
tvDevice->PopupMenu = PopupMenuGPA;
pnlGPA->Visible = true;
Label3->Caption = NodeText + DeviceInfo;
Panel5->Left = pnlGPA->Width/2 - Panel5->Width/2;
Panel5->Top = pnlGPA->Height/2 - Panel5->Height/2;
break;
}
case 198:
{// g2mp
tvDevice->PopupMenu = PopupMenuG2MP;
pnlG2MP->Visible = true;
Label1->Caption = NodeText + DeviceInfo;
Panel8->Left = pnlG2MP->Width/2 - Panel8->Width/2;
Panel8->Top = pnlG2MP->Height/2 - Panel8->Height/2;
RadioGroup17->ItemIndex = -1;
break;
}
case 200:
{//DXC
tvDevice->PopupMenu = PopupMenuDXC;
DrawFace(1);
break;
}
case 201:
{//V35
tvDevice->PopupMenu = PopupMenuHLQ;
pnlV35->Visible = true;
Label2->Caption = NodeText + DeviceInfo;
Panel7->Left = pnlV35->Width/2 - Panel7->Width/2;
Panel7->Top = pnlV35->Height/2 - Panel7->Height/2;
RadioGroup10->ItemIndex = -1;
GroupBox28->Enabled = false;
break;
}
case 212:
{//GAC4
tvDevice->PopupMenu = PopupMenuGAC;
pnlGAC4->Visible = true;
Label8->Caption = NodeText + DeviceInfo;
Panel3->Left = pnlGAC4->Width/2 - Panel3->Width/2;
Panel3->Top = pnlGAC4->Height/2 - Panel3->Height/2;
break;
}
case 202:
{//GMUX-15
tvDevice->PopupMenu = PopupMenuGMUX;
pnlGMUX->Visible = true;
Label16->Caption = NodeText + DeviceInfo;
Panel11->Left = pnlGMUX->Width/2 - Panel11->Width/2;
Panel11->Top = pnlGMUX->Height/2 - Panel11->Height/2;
RadioGroup18->ItemIndex = -1;
GroupBox7->Enabled = false;
break;
}
default :
{
DrawFace(0); //恢复默认
pnlGPA->Visible = false;
pnlV35->Visible = false;
pnlG2MP->Visible = false;
pnlGAC4->Visible = false;
pnlNet->Visible = false;
}
}
} */
/* else
{//非后台设备
String NETNAME = Node->Text;
asSql = "select * from CT_NET where GEDN_NAME='" + NETNAME + "'"; //网络编解码器
ADOIndex->Close();
ADOIndex->SQL->Clear();
ADOIndex->SQL->Add(asSql);
ADOIndex->Open();
int NetCount = ADOIndex->RecordCount;
if(NetCount > 0)
{
String GEDN_NAME,GEDN_IP;
int GEDN_PORT;
GEDN_IP = ADOIndex->FieldByName("GEDN_IP")->AsString;
GEDN_PORT = ADOIndex->FieldByName("GEDN_PORT")->AsInteger;
GEDN_NAME = ADOIndex->FieldByName("GEDN_NAME")->AsString;
NodeParText = Node->Parent->Text;
NodeText = Node->Text;
Label4->Caption = "网络编解码设备(GEDN)名称:" + NodeText + " " + DeviceInfo;
tvDevice->PopupMenu = PopupMenuNet;
NetSave->Enabled = false;
NetUpdate->Enabled = true;
pnlNet->Visible = true;
NetIp->Text = GEDN_IP;
NetPort->Text = GEDN_PORT;
NetName->Text = GEDN_NAME;
bGroupNum->Caption = ADOIndex->FieldByName("groupnum")->AsString;
Panel6->Left = pnlNet->Width/2 - Panel6->Width/2;
Panel6->Top = pnlNet->Height/2 - Panel6->Height/2;
return;
} */
if(tvDevice->Selected->Level == 2) //代码变动
{//模块
tvDevice->PopupMenu = PopupMenuSmInfo;
int LINENUM = 0,SUNUM = 0;
char* szBuffer = new char[30];
String NodeTextTemp;
NodeTextTemp = NodeText;
// LINENUM = GetLineNum(NodeParParText);
SUNUM = GetSuNum(NodeParText);
/*int LenTemp = StrLen(NodeTextTemp.c_str());
StrCopy(szBuffer,NodeTextTemp.c_str());
NodeTextTemp = szBuffer[LenTemp - 1];//获得镜头号
*/
int LenTemp = StrLen(NodeTextTemp.c_str());
StrCopy(szBuffer,NodeTextTemp.c_str());
int Temp_ = 0;
for(int i = 0;i<LenTemp;i++)
{
if(szBuffer[i] == 0X5F)
{//"_"
Temp_ = i+1;
break;
}
}
if((LenTemp - Temp_) == 1)
{
NodeTextTemp = szBuffer[LenTemp - 1];//获得镜头号
}
else if((LenTemp - Temp_) == 2)
{
NodeTextTemp = szBuffer[LenTemp - 2];
NodeTextTemp = NodeTextTemp + szBuffer[LenTemp - 1];
}
asSql = "select * from CT_SM where SUNUM=" + IntToStr(SUNUM) + " AND " + "SMNUM=" + NodeTextTemp;
ADOSelect->Close();
ADOSelect->SQL->Clear();
ADOSelect->SQL->Add(asSql);
ADOSelect->Open();
int SMTYPE = ADOSelect->FieldByName("SMTYPE")->AsInteger;
switch(SMTYPE)
{
case 1:
{//云台
N33->Caption = "复位云台控制器";
N33->Enabled = true;
break;
}
case 2:
{//快球
N33->Caption = "复位快球控制器";
N33->Enabled = true;
break;
}
default:
{
N33->Caption = "控制器不可用";
N33->Enabled = false;
break;
}
}
}
else if(tvDevice->Selected->Level == 0)
//else if(Node->Text == "网络管理系统")
{
tvDevice->PopupMenu = PopupMenuAddSu;
}
// else if(Node->Text == "后台设备")
// {
// tvDevice->PopupMenu = PopupMenuAddDev;
// }
// else if((Node->Text != "后台设备") && (tvDevice->Selected->Level == 1))
// {//线路
// tvDevice->PopupMenu = PopupMenuAddSu;
// }
else if(tvDevice->Selected->Level == 1)
{//站
int LINENUM = 0,SUNUM = 0,AVTYPE = 0;
SUNUM = GetSuNum(NodeText);
N38->Enabled = false;//左侧
N39->Enabled = false;//右侧
N42->Enabled = false;
FormatDiskMenu->Enabled = false;
asSql = "select * from ct_videoserverparams where LINENUM=" + IntToStr(LINENUM)/
+ " AND " + "SUNUM=" + IntToStr(SUNUM) + " order by VIDEONUM";
ADOSelect->Close();
ADOSelect->SQL->Clear();
ADOSelect->SQL->Add(asSql);
ADOSelect->Open();
//AVTYPE = (ADOSelect->FieldByName("AVTYPE")->AsInteger & 0XF0)>>4;//0 -右侧 1 - 左侧
int num = ADOSelect->RecordCount;
if(num == 1)
{
N39->Enabled = true;//监控DVR
if(ADOSelect->FieldByName("DVRLX")->AsInteger == 0)
{//DVR不带录像
N42->Enabled = false;
}
else if(ADOSelect->FieldByName("DVRLX")->AsInteger == 1)
{//DVR带录像
N42->Enabled = true;
}
/*if(AVTYPE == 0)
{
N39->Enabled = true;
}
else if(AVTYPE == 1)
{
N38->Enabled = true;
}*/
}
else if(num > 1)
{
N39->Enabled = true;//监控DVR
N38->Enabled = true;//录像DVR
N42->Enabled = true;
FormatDiskMenu->Enabled = true;
/*if(AVTYPE == 0)
{
N39->Enabled = true;
}
else if(AVTYPE == 1)
{
N38->Enabled = true;
}
ADOSelect->Next();
AVTYPE = (ADOSelect->FieldByName("AVTYPE")->AsInteger & 0XF0)>>4;//0 -右侧 1 - 左侧
if(AVTYPE == 0)
{
N39->Enabled = true;
}
else if(AVTYPE == 1)
{
N38->Enabled = true;
}*/
}
tvDevice->PopupMenu = PopupMenuAddSm;
}
}
//---------------------------------------------------------------------------
/***************************************************************/
**功能描述:加载设备界面
/***************************************************************/
void __fastcall TfmMain::DrawFace(int iType)
{
int SUNUM = 0;
switch(iType)
{
case 0:
{
imgMain->Canvas->Brush->Color = clWhite;
imgMain->Canvas->FillRect(Rect(0,0,1024,768));
imgMain->Canvas->Draw(2,2,ImgSet[0]);
imgMain->Canvas->Font->Name = "宋体";
imgMain->Canvas->Font->Color = (TColor) 0xFFFFFF;
imgMain->Canvas->Font->Size = 9;
imgMain->Canvas->Font->Style = TFontStyles()<< fsBold;
imgMain->Canvas->Brush->Color = (TColor)0x00B76A49;
switch(tvDevice->Selected->Level)
{
/* case 1:
{//线路一级
if(tvDevice->Selected->Text == "后台设备")
{
imgMain->Canvas->TextOutA(48,11,NodeText);
}
else
{
LINENUM = GetLineNum(NodeText);
imgMain->Canvas->TextOutA(48,11,NodeText + "(线路号:" +IntToStr(LINENUM) + ")");
}
break;
} */
case 1:
{//站一级
// LINENUM = GetLineNum(NodeParText);
SUNUM = GetSuNum(NodeText);
imgMain->Canvas->TextOutA(48,11,NodeText + "(站号:" +IntToStr(SUNUM) + ")");
break;
}
case 2:
{//镜头一级
String SmName,Str,SmNum;
int Length = 0;
char* szBuffer = new char[30];
SmName = tvDevice->Selected->Text;
Length = strlen(SmName.c_str() );
Str = SmName.SubString(1,Length-2);
int LenTemp = StrLen(SmName.c_str());
StrCopy(szBuffer,SmName.c_str());
int Temp_ = 0;
for(int i = 0;i<LenTemp;i++)
{
if(szBuffer[i] == 0X5F)
{//"_"
Temp_ = i+1;
break;
}
}
if((LenTemp - Temp_) == 1)
{
SmNum = SmName.SubString(Length,1);
}
else if((LenTemp - Temp_) == 2)
{
SmNum = SmName.SubString((Length - 1),2);
}
//SmNum = SmName.SubString(Length,1);
// LINENUM = GetLineNum(NodeParParText);
SUNUM = GetSuNum(NodeParText);
imgMain->Canvas->TextOutA(48,11, NodeParText + "(站号:" +IntToStr(SUNUM) + ")" + "__" + Str/
+ "镜头" + "(镜头号:" + SmNum + ")");
break;
}
}
break;
}
case 1:
{//交叉连接
imgMain->Canvas->Draw(0,0,ImgSet[1]);
imgMain->Canvas->Font->Color = (TColor) 0xFFFFFF;
break;
}
case 2:
{//
imgMain->Canvas->Draw(0,0,ImgSet[2]);
imgMain->Canvas->Font->Color = (TColor) 0xFFFFFF;
break;
}
case 3:
{
Image6->Canvas->Brush->Color = clWhite;
Image6->Canvas->FillRect(Rect(0,0,1024,768));
Image6->Canvas->Draw(2,2,ImgSet[0]);
Image6->Canvas->Font->Name = "宋体";
Image6->Canvas->Font->Color = (TColor) 0xFFFFFF;
Image6->Canvas->Font->Size = 9;
Image6->Canvas->Font->Style = TFontStyles()<< fsBold;
Image6->Canvas->Brush->Color = (TColor)0x00B76A49;
imgMain->Canvas->TextOutA(48,11,NodeText + "设备");
break;
}
}
}
//---------------------------------------------------------------------------
void __fastcall TfmMain::DelLineClick(TObject *Sender)
{//删除线路
int LINENUM = 0;
String LINENAME = NodeText;
//AnsiString asSql;
// NodeText = tvDevice->Selected->Text;
TfmOkCancel *okcancel = new TfmOkCancel(Application);
okcancel->LabelTitle->Caption = "提示信息...";
okcancel->lbMessage->Caption = "删除该条线路,该条线路下的站和镜头均将被删除,确定吗?";
if(okcancel->lbMessage->Width > 216)
{
okcancel->Width = okcancel->lbMessage->Width + 70;
okcancel->spbAdd->Left = (okcancel->Width/2 - 75)/2 + 22;
okcancel->spbCancel->Left = okcancel->spbAdd->Left + 111;
}
okcancel->ShowModal();
if(okcancel->bOk)
{
asSql = "select * from CT_LINE where LINENAME='"+NodeText+"'";
ADOSelect->Close();
ADOSelect->SQL->Clear();
ADOSelect->SQL->Add(asSql);
ADOSelect->Open();
LINENUM = ADOSelect->FieldByName("LINENUM")->AsInteger;
asSql = "delete from CT_LINE where LINENAME='"+NodeText+"'";
ADOSelect->Close();
ADOSelect->SQL->Clear();
ADOSelect->SQL->Add(asSql);
ADOSelect->ExecSQL() ;
//因为镜头表里没有线路号,所以先删除镜头表(ct_sm),然后再删除(ct_su)表中内容
asSql = "select * from CT_SU where LINENUM='"+IntToStr(LINENUM)+"'" + " order by SUNUM";
fmMain->ADOSelect->Close();
fmMain->ADOSelect->SQL->Clear();
fmMain->ADOSelect->SQL->Add(asSql);
fmMain->ADOSelect->Open();
int num = fmMain->ADOSelect->RecordCount;
for (int i=0;i < num;i++)
{
int SUNUM = ADOSelect->FieldByName("SUNUM")->AsInteger;
fmMain->ADOSelect->Next();
asSql = "delete from CT_SM where SUNUM="+IntToStr(SUNUM);
ADOUI->Close();
ADOUI->SQL->Clear();
ADOUI->SQL->Add(asSql);
ADOUI->ExecSQL();
asSql = "delete from ct_videoswparams where SUNUM=" + IntToStr(SUNUM);
ADOUI->Close();
ADOUI->SQL->Clear();
ADOUI->SQL->Add(asSql);
ADOUI->ExecSQL();
}
asSql = "delete from CT_SU where LINENUM="+IntToStr(LINENUM);
ADOSelect->Close();
ADOSelect->SQL->Clear();
ADOSelect->SQL->Add(asSql);
ADOSelect->ExecSQL() ;
idx = idx - 1;
LoadData();
fmMain->SaveToLog(" 删除线路:线路名("+LINENAME+")线路号("+IntToStr(LINENUM)+")",1);//添加到运行记录
}
}
//---------------------------------------------------------------------------
void __fastcall TfmMain::LookLineInfoClick(TObject *Sender)
{//查看线路信息
int LINENUM = 0,LINEPORT = 0,DXCADDR = 0,DXC_LINE = 0/
,DXC_CONTROL = 0,G2MPADDR = 0,DXC_G2MP = 0,GPAADDR = 0,DXC_GPA = 0,/
OAADDR = 0,DXC_OA = 0,RECADDR = 0,DXC_REC = 0,ARMPORT = 0,DBEGIN = 0,/
DCOUNT = 0,DDBEGIN = 0,VBEGIN = 0,VCOUNT = 0,VDBEGIN = 0,ABEGIN = 0,/
ACOUNT = 0,ADBEGIN = 0,OABEGIN = 0,OACOUNT = 0,OADBEGIN = 0,/
RECBEGIN = 0,RECCOUNT = 0,RECDBEGIN = 0;
String LINENAME,LINEADDR,ARMADDR;
asSql = "select * from CT_LINE where LINENAME='"+NodeText + "'";
ADOSelect->Close();
ADOSelect->SQL->Clear();
ADOSelect->SQL->Add(asSql);
ADOSelect->Open();
LINENUM = ADOSelect->FieldByName("LINENUM")->AsInteger;
LINENAME = ADOSelect->FieldByName("LINENAME")->AsString;
LINEADDR = ADOSelect->FieldByName("LINEADDR")->AsString;
LINEPORT = ADOSelect->FieldByName("LINEPORT")->AsInteger;
DXCADDR = ADOSelect->FieldByName("DXCADDR")->AsInteger;
DXC_LINE = ADOSelect->FieldByName("DXC_LINE")->AsInteger;
DXC_CONTROL = ADOSelect->FieldByName("DXC_CONTROL")->AsInteger;
G2MPADDR = ADOSelect->FieldByName("G2MPADDR")->AsInteger;
DXC_G2MP = ADOSelect->FieldByName("DXC_G2MP")->AsInteger;
GPAADDR = ADOSelect->FieldByName("GPAADDR")->AsInteger;
DXC_GPA = ADOSelect->FieldByName("DXC_GPA")->AsInteger;
OAADDR = ADOSelect->FieldByName("OAADDR")->AsInteger;
DXC_OA = ADOSelect->FieldByName("DXC_OA")->AsInteger;
RECADDR = ADOSelect->FieldByName("RECADDR")->AsInteger;
DXC_REC = ADOSelect->FieldByName("DXC_REC")->AsInteger;
ARMADDR = ADOSelect->FieldByName("ARMADDR")->AsString;
ARMPORT = ADOSelect->FieldByName("ARMPORT")->AsInteger;
DBEGIN = ADOSelect->FieldByName("DBEGIN")->AsInteger;
DCOUNT = ADOSelect->FieldByName("DCOUNT")->AsInteger;
DDBEGIN = ADOSelect->FieldByName("DDBEGIN")->AsInteger;
VBEGIN = ADOSelect->FieldByName("VBEGIN")->AsInteger;
VCOUNT = ADOSelect->FieldByName("VCOUNT")->AsInteger;
VDBEGIN = ADOSelect->FieldByName("VDBEGIN")->AsInteger;
ABEGIN = ADOSelect->FieldByName("ABEGIN")->AsInteger;
ACOUNT = ADOSelect->FieldByName("ACOUNT")->AsInteger;
ADBEGIN = ADOSelect->FieldByName("ADBEGIN")->AsInteger;
OABEGIN = ADOSelect->FieldByName("OABEGIN")->AsInteger;
OACOUNT = ADOSelect->FieldByName("OACOUNT")->AsInteger;
OADBEGIN = ADOSelect->FieldByName("OADBEGIN")->AsInteger;
RECBEGIN = ADOSelect->FieldByName("RECBEGIN")->AsInteger;
RECCOUNT = ADOSelect->FieldByName("RECCOUNT")->AsInteger;
RECDBEGIN = ADOSelect->FieldByName("RECDBEGIN")->AsInteger;
fmLineInfo->LineNum->Caption = IntToStr(LINENUM);
fmLineInfo->LineName->Text = LINENAME;
fmLineInfo->LineAddr->Text =LINEADDR ;
fmLineInfo->LinePort->Text = IntToStr(LINEPORT);
fmLineInfo->DxcAddr->Text = IntToStr(DXCADDR);
fmLineInfo->Dxc_Line->Text = IntToStr(DXC_LINE);
fmLineInfo->Dxc_Control->Text = IntToStr(DXC_CONTROL);
fmLineInfo->G2mpAddr->Text = IntToStr(G2MPADDR);
fmLineInfo->Dxc_G2mp->Text = IntToStr(DXC_G2MP);
fmLineInfo->GpaAddr->Text = IntToStr(GPAADDR);
fmLineInfo->Dxc_Gpa->Text = IntToStr(DXC_GPA);
fmLineInfo->OaAddr->Text = IntToStr(OAADDR);
fmLineInfo->Dxc_Oa->Text = IntToStr(DXC_OA);
fmLineInfo->RecAddr->Text = IntToStr(RECADDR);
fmLineInfo->Dxc_Rec->Text = IntToStr(DXC_REC);
fmLineInfo->ArmAddr->Text = ARMADDR;
fmLineInfo->ArmPort->Text = IntToStr(ARMPORT);
fmLineInfo->DBegin->Text = IntToStr(DBEGIN);
fmLineInfo->DCount->Text = IntToStr(DCOUNT);
fmLineInfo->DDBegin->Text = IntToStr(DDBEGIN);
fmLineInfo->VBegin->Text = IntToStr(VBEGIN);
fmLineInfo->VCount->Text = IntToStr(VCOUNT);
fmLineInfo->VDBegiin->Text = IntToStr(VDBEGIN);
fmLineInfo->ABegin->Text = IntToStr(ABEGIN);
fmLineInfo->ACount->Text = IntToStr(ACOUNT);
fmLineInfo->ADBegin->Text = IntToStr(ADBEGIN);
fmLineInfo->OABegin->Text = IntToStr(OABEGIN);
fmLineInfo->OACount->Text = IntToStr(OACOUNT);
fmLineInfo->OADBegin->Text = IntToStr(OADBEGIN);
fmLineInfo->RecBegin->Text = IntToStr(RECBEGIN);
fmLineInfo->RecCount->Text = IntToStr(RECCOUNT);
fmLineInfo->RecDBegin->Text = IntToStr(RECDBEGIN);
//fmLineInfo->LineNum->ReadOnly = true;
fmLineInfo->LineName->ReadOnly = true;
fmLineInfo->LineAddr->ReadOnly = true;
fmLineInfo->LinePort->ReadOnly = true;
fmLineInfo->DxcAddr->ReadOnly = true;
fmLineInfo->Dxc_Line->ReadOnly = true;
fmLineInfo->Dxc_Control->ReadOnly = true;
fmLineInfo->G2mpAddr->ReadOnly = true;
fmLineInfo->Dxc_G2mp->ReadOnly = true;
fmLineInfo->GpaAddr->ReadOnly = true;
fmLineInfo->Dxc_Gpa->ReadOnly = true;
fmLineInfo->OaAddr->ReadOnly = true;
fmLineInfo->Dxc_Oa->ReadOnly = true;
fmLineInfo->RecAddr->ReadOnly = true;
fmLineInfo->Dxc_Rec->ReadOnly = true;
fmLineInfo->ArmAddr->ReadOnly = true;
fmLineInfo->ArmPort->ReadOnly = true;
fmLineInfo->DBegin->ReadOnly = true;
fmLineInfo->DCount->ReadOnly = true;
fmLineInfo->DDBegin->ReadOnly = true;
fmLineInfo->VBegin->ReadOnly = true;
fmLineInfo->VCount->ReadOnly = true;
fmLineInfo->VDBegiin->ReadOnly = true;
fmLineInfo->ABegin->ReadOnly = true;
fmLineInfo->ACount->ReadOnly = true;
fmLineInfo->ADBegin->ReadOnly = true;
fmLineInfo->OABegin->ReadOnly = true;
fmLineInfo->OACount->ReadOnly = true;
fmLineInfo->OADBegin->ReadOnly = true;
fmLineInfo->RecBegin->ReadOnly = true;
fmLineInfo->RecCount->ReadOnly = true;
fmLineInfo->RecDBegin->ReadOnly = true;
fmLineInfo->spbSave->Enabled = false;
fmLineInfo->spbUpDate->Enabled = true;
fmLineInfo->ShowModal();
}
//---------------------------------------------------------------------------
void __fastcall TfmMain::AddSuClick(TObject *Sender)
{//添加站
fmAddSu->ShowModal();
}
//---------------------------------------------------------------------------
void __fastcall TfmMain::LookSuInfoClick(TObject *Sender)
{//查看站信息
String SUNAME,LINENAME,SUIP;
AnsiString asSql;
int SUNUM,RECORDER_SELECT,SUPORT;
/* LINENAME = NodeParText;
asSql = "select * from CT_LINE where LINENAME='"+LINENAME+"'";
ADOSelect->Close();
ADOSelect->SQL->Clear();
ADOSelect->SQL->Add(asSql);
ADOSelect->Open();
LINENUM = ADOSelect->FieldByName("LINENUM")->AsInteger; */
SUNAME = tvDevice->Selected->Text;
asSql = "select * from CT_SU where SUNAME='"+SUNAME+"'" ;
ADOSelect->Close();
ADOSelect->SQL->Clear();
ADOSelect->SQL->Add(asSql);
ADOSelect->Open();
// LINENUM = ADOSelect->FieldByName("LINENUM")->AsInteger;
SUNUM = ADOSelect->FieldByName("SUNUM")->AsInteger;
RECORDER_SELECT = ADOSelect->FieldByName("RECORDER_SELECT")->AsInteger;
SUIP = ADOSelect->FieldByName("SUADDRESS")->AsString;
SUPORT = ADOSelect->FieldByName("PORT")->AsInteger;
// fmSuInfo->LineNum->Caption = IntToStr(LINENUM);
fmSuInfo->RadioGroup2->ItemIndex = RECORDER_SELECT;
fmSuInfo->SuNum->Caption = IntToStr(SUNUM);
fmSuInfo->SuName->Text = SUNAME;
fmSuInfo->Address->Text = SUIP;
fmSuInfo->port->Text = IntToStr(SUPORT);
fmSuInfo->SuName->ReadOnly = true;
fmSuInfo->spbSave->Enabled = false;
fmSuInfo->spbUpDate->Enabled = true;
fmSuInfo->RadioGroup2->Enabled = false;
fmSuInfo->port->ReadOnly = true;
fmSuInfo->Address->ReadOnly = true;
fmSuInfo->ShowModal();
}
//---------------------------------------------------------------------------
void __fastcall TfmMain::DelSuClick(TObject *Sender)
{//删除站
int SUNUM;
AnsiString asSql;
String SUNAME;
// LINENAME = NodeParText;
SUNAME = NodeText;
/* asSql = "select * from CT_LINE where LINENAME='"+LINENAME+"'";
ADOSelect->Close();
ADOSelect->SQL->Clear();
ADOSelect->SQL->Add(asSql);
ADOSelect->Open();
LINENUM = ADOSelect->FieldByName("LINENUM")->AsInteger; */
//NodeText = tvDevice->Selected->Text;
TfmOkCancel *okcancel = new TfmOkCancel(Application);
okcancel->LabelTitle->Caption = "提示信息...";
okcancel->lbMessage->Caption = "删除该站,该站下的镜头均将被删除,确定吗?";
if (okcancel->lbMessage->Width > 216)
{
okcancel->Width = okcancel->lbMessage->Width + 70;
okcancel->spbAdd->Left = (okcancel->Width/2 - 75)/2 + 22;
okcancel->spbCancel->Left = okcancel->spbAdd->Left + 111;
}
okcancel->ShowModal();
if(okcancel->bOk)
{
asSql = "select * from CT_SU where SUNAME='"+SUNAME+"'" ;
ADOSelect->Close();
ADOSelect->SQL->Clear();
ADOSelect->SQL->Add(asSql);
ADOSelect->Open();
SUNUM = ADOSelect->FieldByName("SUNUM")->AsInteger;
asSql = "delete from CT_SU where SUNUM="+IntToStr(SUNUM) ;
ADOSelect->Close();
ADOSelect->SQL->Clear();
ADOSelect->SQL->Add(asSql);
ADOSelect->ExecSQL() ;
asSql = "delete from CT_SM where SUNUM="+IntToStr(SUNUM);
ADOSelect->Close();
ADOSelect->SQL->Clear();
ADOSelect->SQL->Add(asSql);
ADOSelect->ExecSQL() ;
asSql = "delete from ct_videoswparams where SUNUM=" + IntToStr(SUNUM);
ADOSelect->Close();
ADOSelect->SQL->Clear();
ADOSelect->SQL->Add(asSql);
ADOSelect->ExecSQL();
idx = idx - 1;
LoadData();
fmMain->SaveToLog("删除站:站名("+ SUNAME+") 站号(" +IntToStr(SUNUM) +")",1);//添加到运行记录
}
}
//---------------------------------------------------------------------------
void __fastcall TfmMain::AddSmClick(TObject *Sender)
{//添加镜头
int LINENUM,SUNUM,SMNUM;
String SuName;
AnsiString asSql;
String LINENAME;
// LINENAME = NodeParText;
/* asSql = "select * from CT_LINE where LINENAME='"+LINENAME+"'";
ADOSelect->Close();
ADOSelect->SQL->Clear();
ADOSelect->SQL->Add(asSql);
ADOSelect->Open();
LINENUM = ADOSelect->FieldByName("LINENUM")->AsInteger;//获取线路号 */
SuName = NodeText;
asSql = "select * from CT_SU where SUNAME='"+SuName + "'";
ADOSelect->Close();
ADOSelect->SQL->Clear();
ADOSelect->SQL->Add(asSql);
ADOSelect->Open();
// LINENUM = ADOSelect->FieldByName("LINENUM")->AsInteger;
SUNUM = ADOSelect->FieldByName("SUNUM")->AsInteger; //获取线路号和站号
asSql = "select * from CT_SM where SUNUM != 0 order by SMPORT";
ADOSelect->Close();
ADOSelect->SQL->Clear();
ADOSelect->SQL->Add(asSql);
ADOSelect->Open();//排除中心镜头
ADOSelect->Last() ;//设定新镜头的端口号
fmAddSm->SmPort->Text = IntToStr(ADOSelect->FieldByName("SMPORT")->AsInteger + 1);
asSql = "select * from CT_SM where SUNUM=" + IntToStr(SUNUM) + " order by SUNUM";
ADOSelect->Close();
ADOSelect->SQL->Clear();
ADOSelect->SQL->Add(asSql);
ADOSelect->Open();
int num = ADOSelect->RecordCount;//已有镜头数
if (num > 0)
{
ADOSelect->Last();
SMNUM = ADOSelect->FieldByName("SMNUM")->AsInteger;
fmAddSm->SmNum->Text = IntToStr(SMNUM + 1);
}
else
{
fmAddSm->SmNum->Text = IntToStr(0);
}
fmAddSm->ShowModal();
}
//---------------------------------------------------------------------------
void __fastcall TfmMain::DelSmClick(TObject *Sender)
{//删除该镜头
int LINENUM,SUNUM;
AnsiString asSql;
char* szBuffer = new char[30];
// String LINENAME = NodeParParText;
String SUNAME = NodeParText;
/* asSql = "select * from CT_LINE where LINENAME='"+LINENAME + "'";
ADOSelect->Close();
ADOSelect->SQL->Clear();
ADOSelect->SQL->Add(asSql);
ADOSelect->Open();
LINENUM = ADOSelect->FieldByName("LINENUM")->AsInteger; */
/*StrCopy(szBuffer,NodeText.c_str());
int TempL = strlen(NodeText.c_str());
NodeText = szBuffer[TempL - 1];*/
int LenTemp = StrLen(NodeText.c_str());
StrCopy(szBuffer,NodeText.c_str());
int Temp_ = 0;
for (int i = 0;i<LenTemp;i++)
{
if(szBuffer[i] == 0X5F)
{//"_"
Temp_ = i+1;
break;
}
}
if((LenTemp - Temp_) == 1)
{
NodeText = szBuffer[LenTemp - 1];//获得镜头号
}
else if((LenTemp - Temp_) == 2)
{
NodeText = szBuffer[LenTemp - 2];
NodeText = NodeText + szBuffer[LenTemp - 1];
}
asSql = "select * from CT_SU where SUNAME='"+NodeParText+"'" ;
ADOSelect->Close();
ADOSelect->SQL->Clear();
ADOSelect->SQL->Add(asSql);
ADOSelect->Open();
// LINENUM = ADOSelect->FieldByName("LINENUM")->AsInteger;
SUNUM = ADOSelect->FieldByName("SUNUM")->AsInteger;
asSql = "select * from CT_SM where SUNUM=" + IntToStr(SUNUM) + " AND " + "SMNUM=" + NodeText;
ADOSelect->Close();
ADOSelect->SQL->Clear();
ADOSelect->SQL->Add(asSql);
ADOSelect->Open();
String SMNAME = ADOSelect->FieldByName("SMNAME")->AsString;
TfmOkCancel *okcancel = new TfmOkCancel(Application);
okcancel->LabelTitle->Caption = "提示信息...";
okcancel->lbMessage->Caption = "确定要删除该镜头?";
okcancel->ShowModal();
if(okcancel->bOk)
{
asSql = "delete from CT_SM where SUNUM=" + IntToStr(SUNUM) + " AND " + "SMNUM=" + NodeText;
ADOSelect->Close();
ADOSelect->SQL->Clear();
ADOSelect->SQL->Add(asSql);
ADOSelect->ExecSQL();
asSql = "delete from ct_videoswparams where SUNUM=" + IntToStr(SUNUM) + " AND " + "SMNUM=" + NodeText;
ADOSelect->Close();
ADOSelect->SQL->Clear();
ADOSelect->SQL->Add(asSql);
ADOSelect->ExecSQL();
idx = idx - 1;
LoadData();
fmMain->SaveToLog("在"+SUNAME+"(站号:"+IntToStr(SUNUM)+")下删除镜头:镜头名("+ SMNAME+")",1);//添加到运行记录
}
}
//---------------------------------------------------------------------------
void __fastcall TfmMain::LookSmInfoClick(TObject *Sender)
{//查看该镜头信息
int SUNUM;
AnsiString asSql;
String NodeTextTemp;
char* szBuffer = new char[30];
String LINENAME;
/* LINENAME = NodeParParText;
asSql = "select * from CT_LINE where LINENAME='"+LINENAME+"'";
ADOSelect->Close();
ADOSelect->SQL->Clear();
ADOSelect->SQL->Add(asSql);
ADOSelect->Open();
LINENUM = ADOSelect->FieldByName("LINENUM")->AsInteger; */
NodeTextTemp = NodeText;
int LenTemp = StrLen(NodeTextTemp.c_str());
StrCopy(szBuffer,NodeTextTemp.c_str());
int Temp_ = 0;
for (int i = 0;i<LenTemp;i++)
{
if (szBuffer[i] == 0X5F)
{//"_"
Temp_ = i+1;
break;
}
}
if ((LenTemp - Temp_) == 1)
{
NodeTextTemp = szBuffer[LenTemp - 1];//获得镜头号
}
else if ((LenTemp - Temp_) == 2)
{
NodeTextTemp = szBuffer[LenTemp - 2];
NodeTextTemp = NodeTextTemp + szBuffer[LenTemp - 1];
}
asSql = "select * from CT_SU where SUNAME='"+NodeParText+"'";
ADOSelect->Close();
ADOSelect->SQL->Clear();
ADOSelect->SQL->Add(asSql);
ADOSelect->Open();
// LINENUM = ADOSelect->FieldByName("LINENUM")->AsInteger;
SUNUM = ADOSelect->FieldByName("SUNUM")->AsInteger;
asSql = "select * from CT_SM where SUNUM=" + IntToStr(SUNUM) + " AND " + "SMNUM=" + NodeTextTemp;
ADOSelect->Close();
ADOSelect->SQL->Clear();
ADOSelect->SQL->Add(asSql);
ADOSelect->Open();
SUNUM = ADOSelect->FieldByName("SUNUM")->AsInteger;
int SMNUM = ADOSelect->FieldByName("SMNUM")->AsInteger;
String SMNAME = ADOSelect->FieldByName("SMNAME")->AsString;
int SMTYPE = ADOSelect->FieldByName("SMTYPE")->AsInteger;
int SWADDR = ADOSelect->FieldByName("SWADDR")->AsInteger;
int SMPORT = ADOSelect->FieldByName("SMPORT")->AsInteger;
String SMIP = ADOSelect->FieldByName("SMIP")->AsString;
int ENABLEAUDIO = ADOSelect->FieldByName("ENABLEAUDIO")->AsInteger;
int ENABLEREC = ADOSelect->FieldByName("ENABLEREC")->AsInteger;
int ENABLEYZD = ADOSelect->FieldByName("ENABLEYZD")->AsInteger;
int YTCIRCLETIME = ADOSelect->FieldByName("YTCIRCLETIME")->AsInteger;
int YTSTAYTIME = ADOSelect->FieldByName("YTSTAYTIME")->AsInteger;
int YZDTIME = ADOSelect->FieldByName("YZDTIME")->AsInteger;
fmSmInfo->SuNum->Caption = IntToStr(SUNUM);
fmSmInfo->SmNum->Caption = IntToStr(SMNUM);
fmSmInfo->SmName->Text = SMNAME;
if (SMTYPE == 255)
{
fmSmInfo->SmType->ItemIndex = 3;
}
else
{
fmSmInfo->SmType->ItemIndex = SMTYPE;
}
fmSmInfo->RadioGroup1->ItemIndex = ENABLEAUDIO;
fmSmInfo->RadioGroup2->ItemIndex = ENABLEREC;
fmSmInfo->RadioGroup3->ItemIndex = ADOSelect->FieldByName("ENABLELAMP")->AsInteger;
fmSmInfo->RadioGroup4->ItemIndex = ENABLEYZD;
fmSmInfo->RadioGroup5->ItemIndex = ADOSelect->FieldByName("YTBACK")->AsInteger;
fmSmInfo->RadioGroup6->ItemIndex = ADOSelect->FieldByName("ENABLEYUSHUA")->AsInteger;
fmSmInfo->Edit1->Text = IntToStr(YTCIRCLETIME);
fmSmInfo->Edit2->Text = IntToStr(YTSTAYTIME);
fmSmInfo->Edit3->Text = IntToStr(YZDTIME);
fmSmInfo->Edit4->Text = ADOSelect->FieldByName("AUDIONUM")->AsInteger;
fmSmInfo->SwAddr->Text = IntToStr(SWADDR);
fmSmInfo->SmPort->Text = IntToStr(SMPORT);
fmSmInfo->SmIp->Text = SMIP;
fmSmInfo->SmType->Enabled = false;
fmSmInfo->SwAddr->ReadOnly = true;
fmSmInfo->SmName->ReadOnly = true;
fmSmInfo->SwAddr->ReadOnly = true;
fmSmInfo->SmPort->ReadOnly = true;
fmSmInfo->Edit4->ReadOnly = true;
fmSmInfo->RadioGroup1->Enabled = false;
fmSmInfo->RadioGroup2->Enabled = false;
fmSmInfo->RadioGroup3->Enabled = false;
fmSmInfo->RadioGroup4->Enabled = false;
fmSmInfo->RadioGroup5->Enabled = false;
fmSmInfo->RadioGroup6->Enabled = false;
fmSmInfo->SmIp->ReadOnly = true;
fmSmInfo->spbSave->Enabled = false;
fmSmInfo->spbUpDate->Enabled = true;
fmSmInfo->Edit1->ReadOnly = true;
fmSmInfo->Edit2->ReadOnly = true;
fmSmInfo->Edit3->ReadOnly = true;
fmSmInfo->Ev_jilian->ItemIndex = ADOSelect->FieldByName("EV_JILIAN")->AsInteger;
fmSmInfo->Ev_mainselfinport->Text = ADOSelect->FieldByName("EV_MAINSELFINPORT")->AsInteger;
fmSmInfo->Ev_swaddr->Text = ADOSelect->FieldByName("EV_SWADDR")->AsInteger;
fmSmInfo->Ev_swoutport->Text = ADOSelect->FieldByName("EV_SWOUTPORT")->AsInteger;
fmSmInfo->Ev_swinport->Text = ADOSelect->FieldByName("EV_SWINPORT")->AsInteger;
fmSmInfo->Vs_addr->Text = ADOSelect->FieldByName("VS_ADDR")->AsInteger;
fmSmInfo->Vs_inport->Text = ADOSelect->FieldByName("VS_INPORT")->AsInteger;
fmSmInfo->Vs_outport->Text = ADOSelect->FieldByName("VS_OUTPORT")->AsInteger;
fmSmInfo->bGroupNum->Value = ADOSelect->FieldByName("GROUPNUM")->AsInteger;
fmSmInfo->Ev_jilian->Enabled = false;
fmSmInfo->Ev_mainselfinport->Enabled = false;
fmSmInfo->Ev_swaddr->Enabled = false;
fmSmInfo->Ev_swoutport->Enabled = false;
fmSmInfo->Ev_swinport->Enabled = false;
fmSmInfo->Vs_addr->Enabled = false;
fmSmInfo->Vs_inport->Enabled = false;
fmSmInfo->Vs_outport->Enabled = false;
fmSmInfo->bGroupNum->Enabled = false;
fmSmInfo->ShowModal();
}
//---------------------------------------------------------------------------
void __fastcall TfmMain::AddsetClick(TObject *Sender)
{//添加后台设备
// fmAddDev->ShowModal();
}
//---------------------------------------------------------------------------
void __fastcall TfmMain::SetSuSmParamsClick(TObject *Sender)
{//设置站和镜头参数
String SUNAME,SMNAME;
int SUNUM = 0,SMNUM = 0,SMTYPE = 0,AUDIONUM = 0,LINENUM = 0,ENABLEAUDIO = 0,ENABLEREC = 0;
int ENABLELAMP = 0,ENABLEYZD = 0,YTCIRCLETIME = 0,YTSTAYTIME = 0,YZDTIME = 0,YTBACK = 0;
int ENABLEYUSHUA = 0;
int SWADDR = 0;
SUNAME = NodeText;//当前站名
// LINENAME = NodeParText;//当前线路号
fmMain->SetContorlTimeFlag = 0;
// LINENUM = GetLineNum(NodeParText);
SUNUM = GetSuNum(NodeText);
SetMainParamsFuWei = 1;
MainControlJS = 4;
MainParamType = 1;
BYTE DataInfo[2000];
memset(DataInfo, 0, 2000);
//DATAINFO
DataInfo[0] = 0X01;//COMMAND TYPE 参数型号
int SuNameLength = SUNAME.Length();
memcpy((char *)DataInfo + 1, SUNAME.c_str(), SuNameLength);//站名
asSql = "select * from CT_SM where SUNUM=" + IntToStr(SUNUM) + " order by 'SMNUM'";
fmMain->ADOSelect->Close();
fmMain->ADOSelect->SQL->Clear();
fmMain->ADOSelect->SQL->Add(asSql);
fmMain->ADOSelect->Open();
int SmCount = fmMain->ADOSelect->RecordCount;//镜头个数
FuWeiZhuKong->Interval = SmCount * 5000;
DataInfo[17 + 0] = SmCount;//镜头个数
for(int i = 0;i<SmCount;i++)
{
SMNUM = ADOSelect->FieldByName("SMNUM")->AsInteger;//镜头编号
SMTYPE = ADOSelect->FieldByName("SMTYPE")->AsInteger;//镜头类型
SMNAME = ADOSelect->FieldByName("SMNAME")->AsString;//镜头名
ENABLEAUDIO = ADOSelect->FieldByName("ENABLEAUDIO")->AsInteger;//是否有音频
ENABLEREC = ADOSelect->FieldByName("ENABLEREC")->AsInteger;//是否有录像
SWADDR = ADOSelect->FieldByName("SWADDR")->AsInteger;//切换器地址
ENABLELAMP = ADOSelect->FieldByName("ENABLELAMP")->AsInteger;//
ENABLEYZD = ADOSelect->FieldByName("ENABLEYZD")->AsInteger;//
YTCIRCLETIME = ADOSelect->FieldByName("YTCIRCLETIME")->AsInteger;//
YTSTAYTIME = ADOSelect->FieldByName("YTSTAYTIME")->AsInteger;//
YZDTIME = ADOSelect->FieldByName("YZDTIME")->AsInteger;//
YTBACK = ADOSelect->FieldByName("YTBACK")->AsInteger;//
AUDIONUM = ADOSelect->FieldByName("AUDIONUM")->AsInteger;//
ENABLEYUSHUA = ADOSelect->FieldByName("ENABLEYUSHUA")->AsInteger;//
if(SMTYPE != 255)
{
SMTYPE = ENABLEREC * 0X80 + SMTYPE;//第8位
SMTYPE = ENABLELAMP * 0X40 + SMTYPE;//第7位
SMTYPE = ENABLEYZD * 0X20 + SMTYPE;//第6位
SMTYPE = YTBACK * 0X10 + SMTYPE;//第5位
SMTYPE = ENABLEYUSHUA * 0X08 + SMTYPE;//第4位
}
if(ENABLEAUDIO)
{
//AUDIONUM += 1;
DataInfo[17 + 19 + i * 26] = AUDIONUM;//AUDIONUM;//音频编号1 空闲用FF补
}
else
{
DataInfo[17 + 19 + i * 26] = 0XFF;//AUDIONUM;//音频编号1 空闲用FF补
//AUDIONUM = 0XFF;
}
DataInfo[17 + 20 + i * 26] = SWADDR;//切换器地址
*(WORD *)(DataInfo + 17 + 21 + i * 26) = YTCIRCLETIME;//
*(WORD *)(DataInfo + 17 + 23 + i * 26) = YTSTAYTIME;//
*(WORD *)(DataInfo + 17 + 25 + i * 26) = YZDTIME;//
//总共19字节
DataInfo[17 + 1 + i * 26] = SMNUM;//镜头编号
DataInfo[17 + 2 + i * 26] = SMTYPE;//镜头类型 0=固定;1云台;2=快球
/*DataInfo[17 + 3] = 0X00;//镜头名称1 16个字节(空闲字节请用0补)
DataInfo[17 + 4] = 0X00;//
DataInfo[17 + 5] = 0X00;//
DataInfo[17 + 6] = 0X00;//
DataInfo[17 + 7] = 0X00;//
DataInfo[17 + 8] = 0X00;//
DataInfo[17 + 9] = 0X00;//
DataInfo[17 + 10] = 0X00;//
DataInfo[17 + 11] = 0X00;//
DataInfo[17 + 12] = 0X00;//
DataInfo[17 + 13] = 0X00;//
DataInfo[17 + 14] = 0X00;//
DataInfo[17 + 15] = 0X00;//
DataInfo[17 + 16] = 0X00;//
DataInfo[17 + 17] = 0X00;//
DataInfo[17 + 18] = 0X00;//镜头名称*/
BYTE pSmName[16];
memset(pSmName, 0, 16);
memcpy((char *)pSmName, SMNAME.c_str(), SMNAME.Length());
memcpy(DataInfo+(17 + 3 + i * 26), (char *)(pSmName), 16);//拷贝镜头名
//DataInfo[17 + 19 + i * 19] = AUDIONUM;//AUDIONUM;//音频编号1 空闲用FF补
ADOSelect->Next();
}
int DataLength = 17 + 1 + SmCount * 26;//DATAInfo长度
MakePack(DataInfo,DataLength,0X04,SUNUM,0X00,0XC4,LINENUM,SUNUM,"设置主控参数(站和镜头信息)命令");
}
//---------------------------------------------------------------------------
void __fastcall TfmMain::MakePack(BYTE *DataInfo,int DataLength, int Protocol/
,int SmAddr,int Cid1, int Cid2, int LineNum, int SuNum,String CmdName)
{
if(ServerType == 0)
{//连接后台服务器
int Length = 0;
Length = DataLength + 7;//7个字节含义
//1B USERLEVEL 用户级别
//+
//6B
//9-10 CMDWORD 命令码2B
//11 LINE 线路号1B
//12 STATION 站号1B
//13 MODEL 模块号1B
//14 CID1 设备类型码 1B
//swab((char*)&Length, (char*)&Length, 2);
BYTE *pFrame = new BYTE[2000];
memset(pFrame, 0, 2000);
pFrame[0] = 0XEB;
pFrame[1] = 0X90;
*(WORD *)(pFrame + 2) = Length;//DATA部分长度 2B
//pFrame[2] = 0X00;//LENGTH DATA部分长度
//pFrame[3] = 0X00;
pFrame[4] = 0X01;//VERSION 1B协议版本号
pFrame[5] = Protocol;//PROTOCOL 1B协议类型
//pFrame[6] = 0X00;//TERMID 1B 终端号
//pFrame[7] = 0X00;//RESERVED 1B保留字节(多级扩展字段,已使用)
//DATA
pFrame[8] = 0XAA;//USERLEVEL 用户级别1B
pFrame[9] = Cid2;//CMDWORD 命令码2B CID2
pFrame[10] = 0X00;//CMDWORD 命令码2B CID2
pFrame[11] = LineNum; //LINE 线路号1B
pFrame[12] = SuNum;//STATION 站号1B
pFrame[13] = SmAddr;//MODEL 模块号1B
pFrame[14] = Cid1;//CID1 设备类型码 1B
//INFO
//pFrame[15] = CommandType;//COMMAND TYPE 基本站名和镜头信息 参数型号
/*pFrame[16] = 0X00;//站名 16个字节(空闲字节请用0补)
pFrame[17] = 0X00;//
pFrame[18] = 0X00;//
pFrame[19] = 0X00;//
pFrame[20] = 0X00;//
pFrame[21] = 0X00;//
pFrame[22] = 0X00;//
pFrame[23] = 0X00;//
pFrame[24] = 0X00;//
pFrame[25] = 0X00;//
pFrame[26] = 0X00;//
pFrame[27] = 0X00;//
pFrame[28] = 0X00;//
pFrame[29] = 0X00;//
pFrame[30] = 0X00;//
pFrame[31] = 0X00;//站名结束*/
memcpy(pFrame+15, DataInfo, DataLength);//拷贝DATAINFO
SocketSend(pFrame,Length + 8,CmdName);//8个字节的包头 -- HEAD
}
else if(ServerType == 1)
{//连接主控
int Length = 0;
Length = DataLength + 7;//7个字节含义
//1B USERLEVEL 用户级别
//+
//6B
//9-10 CMDWORD 命令码2B
//11 LINE 线路号1B
//12 STATION 站号1B
//13 MODEL 模块号1B
//14 CID1 设备类型码 1B
//swab((char*)&Length, (char*)&Length, 2);
BYTE *pFrame = new BYTE[2000];
memset(pFrame, 0, 2000);
pFrame[0] = 0XEB;
pFrame[1] = 0X90;
*(WORD *)(pFrame + 2) = Length;//DATA部分长度 2B
//pFrame[2] = 0X00;//LENGTH DATA部分长度
//pFrame[3] = 0X00;
pFrame[4] = 0X01;//VERSION 1B协议版本号
pFrame[5] = Protocol;//PROTOCOL 1B协议类型
//pFrame[6] = 0X00;//TERMID 1B 终端号
//pFrame[7] = 0X00;//RESERVED 1B保留字节(多级扩展字段,已使用)
//DATA
pFrame[8] = 0XAA;//USERLEVEL 用户级别1B
pFrame[9] = Cid2;//CMDWORD 命令码2B CID2
pFrame[10] = 0X00;//CMDWORD 命令码2B CID2
pFrame[11] = LineNum; //LINE 线路号1B
pFrame[12] = SuNum;//STATION 站号1B
pFrame[13] = SmAddr;//MODEL 模块号1B
pFrame[14] = Cid1;//CID1 设备类型码 1B
//INFO
//pFrame[15] = CommandType;//COMMAND TYPE 基本站名和镜头信息 参数型号
/*pFrame[16] = 0X00;//站名 16个字节(空闲字节请用0补)
pFrame[17] = 0X00;//
pFrame[18] = 0X00;//
pFrame[19] = 0X00;//
pFrame[20] = 0X00;//
pFrame[21] = 0X00;//
pFrame[22] = 0X00;//
pFrame[23] = 0X00;//
pFrame[24] = 0X00;//
pFrame[25] = 0X00;//
pFrame[26] = 0X00;//
pFrame[27] = 0X00;//
pFrame[28] = 0X00;//
pFrame[29] = 0X00;//
pFrame[30] = 0X00;//
pFrame[31] = 0X00;//站名结束*/
memcpy(pFrame+15, DataInfo, DataLength);//拷贝DATAINFO
//SocketSend(pFrame,Length + 8,CmdName);//8个字节的包头 -- HEAD
ProcHtParamCMD(pFrame,Length + 8,0,CmdName);
}
}
//---------------------------------------------------------------------------
void __fastcall TfmMain::SocketSend(BYTE * pFrame,int SendLength,String CmdName)
{
if(ClientSocket->Active)
{
ClientSocket->Socket->SendBuf(pFrame,SendLength);
SprintfData("-> -> "+CmdName + ":",pFrame,SendLength);
//MessageShow("下发成功!");
}
else
{
MessageShow("网络连接失败,请先确认网络连接状态!");
}
}
//---------------------------------------------------------------------------
void __fastcall TfmMain::MakePack(BYTE *DataInfo,int DataLength, int Protocol/
,int SmAddr,int Cid1, int Cid2, int LineNum, int SuNum)
{
int Length = 0;
Length = DataLength + 7;//Data长度
//swab((char*)&Length, (char*)&Length, 2);
BYTE *pFrame = new BYTE[2000];
memset(pFrame, 0, 2000);
pFrame[0] = 0XEB;
pFrame[1] = 0X90;
*(WORD *)(pFrame + 2) = Length;
//pFrame[2] = 0X00;//LENGTH DATA部分长度
//pFrame[3] = 0X00;
pFrame[4] = 0X01;//VERSION 1B协议版本号
pFrame[5] = Protocol;//PROTOCOL 1B协议类型
//pFrame[6] = 0X00;//TERMID 1B 终端号
//pFrame[7] = 0X00;//RESERVED 1B保留字节(多级扩展字段,已使用)
//DATA
pFrame[8] = 0XAA;//USERLEVEL 用户级别1B
pFrame[9] = Cid2;//CMDWORD 命令码2B CID2
pFrame[10] = 0X00;//CMDWORD 命令码2B CID2
pFrame[11] = LineNum; //LINE 线路号1B
pFrame[12] = SuNum;//STATION 站号1B
pFrame[13] = SmAddr;//MODEL 模块号1B
pFrame[14] = Cid1;//CID1 设备类型码 1B
//INFO
//pFrame[15] = CommandType;//COMMAND TYPE 基本站名和镜头信息 参数型号
/*pFrame[16] = 0X00;//站名 16个字节(空闲字节请用0补)
pFrame[17] = 0X00;//
pFrame[18] = 0X00;//
pFrame[19] = 0X00;//
pFrame[20] = 0X00;//
pFrame[21] = 0X00;//
pFrame[22] = 0X00;//
pFrame[23] = 0X00;//
pFrame[24] = 0X00;//
pFrame[25] = 0X00;//
pFrame[26] = 0X00;//
pFrame[27] = 0X00;//
pFrame[28] = 0X00;//
pFrame[29] = 0X00;//
pFrame[30] = 0X00;//
pFrame[31] = 0X00;//站名结束*/
memcpy(pFrame+15, DataInfo, DataLength);//拷贝DATAINFO
SocketSend(pFrame,Length);
}
//---------------------------------------------------------------------------
void __fastcall TfmMain::SocketSend(BYTE * pFrame,int SendLength)
{
if(ClientSocket->Active)
{
ClientSocket->Socket->SendBuf(pFrame,(8 +SendLength));
SprintfData("-> -> ",pFrame,8 +SendLength);
//MessageShow("下发成功!");
}
else
{
MessageShow("网络连接失败,请先确认网络连接状态!");
}
}
//---------------------------------------------------------------------------
void __fastcall TfmMain::IP1Click(TObject *Sender)
{//设置前台IP参数
SetMainParamsFuWei = 1;
MainControlJS = 4;
MainParamType = 0;
fmQtMainParams->ShowModal();
}
//---------------------------------------------------------------------------
int __fastcall TfmMain::GetLineNum(String LineName)
{//通过线路名获得线路号
/* asSql = "select * from CT_LINE where LINENAME='"+LineName+"'";
ADOSelect->Close();
ADOSelect->SQL->Clear();
ADOSelect->SQL->Add(asSql);
ADOSelect->Open();
int LINENUM = ADOSelect->FieldByName("LINENUM")->AsInteger;
return LINENUM; */
}
//---------------------------------------------------------------------------
int __fastcall TfmMain::GetSuNum(String SuName)
{//通过站名获得站号
// int LineNum = 0;
// LineNum = GetLineNum(LineName);
asSql = "select * from CT_SU where SUNAME='"+SuName + "'";
ADOSelect->Close();
ADOSelect->SQL->Clear();
ADOSelect->SQL->Add(asSql);
ADOSelect->Open();
int SUNUM = ADOSelect->FieldByName("SUNUM")->AsInteger;
return SUNUM;
}
//---------------------------------------------------------------------------
/******************************************************************************
* *
* 功能:将StrIp中Ip转化到pBuff中 *
* 输入:StrIp = 192.168.1.12 *
* 输出:pBuff[0] = 192 pBuff[1] = 168 pBuff[2] = 1 pBuff[3] = 12 *
* 创建日期: *
* *
******************************************************************************/
/* TODO : 拆分Ip */
void __fastcall TfmMain::SplitIp(BYTE pBuff[4],String StrIp)
{//拆分IP 例:StrIp = 192.168.1.12 处理之后:pBuff[0] = 192 pBuff[1] = 168 pBuff[2] = 1 pBuff[3] = 12
String str1,str2;
int j1 = -1;
memset(pBuff,0,4);
int Legth1 = strlen(StrIp.c_str());
for(int i1 = 1;i1 < (Legth1 + 2);i1++)
{
str1 = StrIp.SubString(i1,1);
if(str1 == "." || (i1 == (Legth1+1)))
{
j1 = j1+1;
pBuff[j1] = StrToInt(str2);
str1 = "";
str2 = "";
if(i1 == (Legth1 + 1))
{
break;
}
}
else
{
str2 = str2 + str1;
}
}
}
//---------------------------------------------------------------------------
void __fastcall TfmMain::SetSmAddrClick(TObject *Sender)
{//设置模块地址参数
int LINENUM = 0,SUNUM = 0;
// LINENUM = GetLineNum(NodeParText);
SUNUM = GetSuNum(NodeText);
SetMainParamsFuWei = 1;
MainControlJS = 4;
MainParamType = 0;
// fmSmAddrParams->LineNum->Caption = IntToStr(LINENUM);
fmSmAddrParams->SuNum->Caption = IntToStr(SUNUM);
fmSmAddrParams->Edit6->Text = IntToStr(SUNUM);//主控模块地址:
fmSmAddrParams->Edit1->Text = IntToStr(1);//信道控制器地址:
fmSmAddrParams->ShowModal();
}
//---------------------------------------------------------------------------
void __fastcall TfmMain::SpeedButton10Click(TObject *Sender)
{
fmReceiveData->ShowModal();
}
//---------------------------------------------------------------------------
void __fastcall TfmMain::LoadVideoParams()
{//装载视频参数 从ct_sm读取站号、镜头号、镜头名装入ct_videoswparams表中
int SUNUM = 0,SMNUM = 0,SMTYPE = 0;
AnsiString asSql,SMNAME;
//清空ct_videoswparams表
/*asSql = "delete from ct_videoswparams";
ADOUI->Close();
ADOUI->SQL->Clear();
ADOUI->SQL->Add(asSql);
ADOUI->ExecSQL();
*/
asSql = "select * from ct_sm order by SUNUM";
ADOSelect->Close();
ADOSelect->SQL->Clear();
ADOSelect->SQL->Add(asSql);
ADOSelect->Open();
int Count = ADOSelect->RecordCount ;
for(int i = 0 ;i < Count ;i++)
{
SUNUM = ADOSelect->FieldByName("SUNUM")->AsInteger;
SMNUM = ADOSelect->FieldByName("SMNUM")->AsInteger;
SMNAME = ADOSelect->FieldByName("SMNAME")->AsString;
SMTYPE = ADOSelect->FieldByName("SMTYPE")->AsInteger;
asSql = "select * from ct_videoswparams where SUNUM=" + IntToStr(SUNUM)/
+ " AND "+ "SMNUM=" + IntToStr(SMNUM)/
+ " AND "+ "SMTYPE=" + IntToStr(SMTYPE)/
+ " AND " + "SMNAME='" + SMNAME + "'";
ADOUI->Close();
ADOUI->SQL->Clear();
ADOUI->SQL->Add(asSql);
ADOUI->Open();
int Count = ADOUI->RecordCount ;
if(Count == 0)
{
asSql = "insert into ct_videoswparams values("+IntToStr(SUNUM)/
+","+IntToStr(SMNUM) +",'"+ SMNAME +"',"+IntToStr(SMTYPE)/
+","+IntToStr(SMNUM)+","+IntToStr(0)+","+IntToStr(0) + ")";
ADOUI->Close();
ADOUI->SQL->Clear();
ADOUI->SQL->Add(asSql);
ADOUI->ExecSQL();
}
ADOSelect->Next();
}
}
//---------------------------------------------------------------------------
void __fastcall TfmMain::N4Click(TObject *Sender)
{//设置视频切换参数
int SUNUM = 0,SMNUM = 0,SWINPORT = 0,CLASSTYPE = 0,CLASSSWADDR = 0,/
DVRCHANNELS = 0,ONESWINPORT = 0,TWOCLASSSWOUTPORT = 0,TWOCLASSSWADDR = 0;
String asSql,SMNAME;
SetMainParamsFuWei = 1;
MainControlJS = 4;
MainParamType = 0;
// int LINENUM = GetLineNum(NodeParText);
SUNUM = GetSuNum(NodeText);
fmSetVideoSwParams->GroupBox2->Caption = NodeText + "参数...";
asSql = "select * from ct_videoswparams where SUNUM=" + IntToStr(SUNUM) + " order by SMNUM";
ADOSelect->Close();
ADOSelect->SQL->Clear();
ADOSelect->SQL->Add(asSql);
ADOSelect->Open();
//int Count = ADOSelect->RecordCount ;
SMNUM = fmMain->ADOSelect->FieldByName("SMNUM")->AsInteger;
SMNAME = fmMain->ADOSelect->FieldByName("SMNAME")->AsString;
SWINPORT = fmMain->ADOSelect->FieldByName("SWINPORT")->AsInteger;
CLASSTYPE = fmMain->ADOSelect->FieldByName("CLASSTYPE")->AsInteger;
CLASSSWADDR = fmMain->ADOSelect->FieldByName("CLASSSWADDR")->AsInteger;
/*DVRCHANNELS = fmMain->ADOSelect->FieldByName("DVRCHANNELS")->AsInteger;
ONESWINPORT = fmMain->ADOSelect->FieldByName("ONESWINPORT")->AsInteger;
TWOCLASSSWOUTPORT = fmMain->ADOSelect->FieldByName("TWOCLASSSWOUTPORT")->AsInteger;
TWOCLASSSWADDR = fmMain->ADOSelect->FieldByName("TWOCLASSSWADDR")->AsInteger;*/
fmSetVideoSwParams->SmNum->Caption = IntToStr(SMNUM);
fmSetVideoSwParams->SmName->Caption = SMNAME;
fmSetVideoSwParams->SwInPort->Text = IntToStr(SWINPORT);
fmSetVideoSwParams->ClassType->ItemIndex = CLASSTYPE;
fmSetVideoSwParams->ClassSwAddr->Text = IntToStr(CLASSSWADDR);
/*fmSetVideoSwParams->DvrChannels->Text = IntToStr(DVRCHANNELS);
fmSetVideoSwParams->OneSwInPort->Text = IntToStr(ONESWINPORT);
fmSetVideoSwParams->TwoClassSwOutPort->Text = IntToStr(TWOCLASSSWOUTPORT);
fmSetVideoSwParams->TwoClassSwAddr->Text = IntToStr(TWOCLASSSWADDR);*/
fmSetVideoSwParams->SwInPort->Enabled = false;
fmSetVideoSwParams->ClassType->Enabled = false;
fmSetVideoSwParams->ClassSwAddr->Enabled = false;
/*fmSetVideoSwParams->DvrChannels->Enabled = false;
fmSetVideoSwParams->OneSwInPort->Enabled = false;
fmSetVideoSwParams->TwoClassSwOutPort->Enabled = false;
fmSetVideoSwParams->TwoClassSwAddr->Enabled = false;*/
fmSetVideoSwParams->SpeedButton7->Enabled = true;
fmSetVideoSwParams->SpeedButton6->Enabled = false;
fmSetVideoSwParams->SpeedButton8->Enabled = true;
fmSetVideoSwParams->SpeedButton9->Enabled = false;
fmSetVideoSwParams->spbSave->Enabled = false;
fmSetVideoSwParams->spbUpDate->Enabled = true;
// fmSetVideoSwParams->LineNum->Caption = IntToStr(LINENUM);
fmSetVideoSwParams->SuNum->Caption = IntToStr(SUNUM);
asSql = "select * from ct_videotwoswparams where SUNUM=" + IntToStr(SUNUM) + " order by DVRCHANNELS";
ADOIndex->Close();
ADOIndex->SQL->Clear();
ADOIndex->SQL->Add(asSql);
ADOIndex->Open();
if(ADOIndex->RecordCount == 0)
{
fmSetVideoSwParams->Label10->Caption = "无记录";
fmSetVideoSwParams->DvrChannels->Text = "";
fmSetVideoSwParams->OneSwInPort->Text = "";
fmSetVideoSwParams->TwoClassSwOutPort->Text = "";
fmSetVideoSwParams->TwoClassSwAddr->Text = "";
fmSetVideoSwParams->SpeedButton5->Enabled = false;
fmSetVideoSwParams->SpeedButton4->Enabled = false;
fmSetVideoSwParams->SpeedButton10->Enabled = false;
fmSetVideoSwParams->SpeedButton11->Enabled = false;
}
else
{
fmSetVideoSwParams->Label10->Caption = "共" + IntToStr(ADOIndex->RecordCount) + "条记录";
DVRCHANNELS = fmMain->ADOIndex->FieldByName("DVRCHANNELS")->AsInteger;
ONESWINPORT = fmMain->ADOIndex->FieldByName("ONESWINPORT")->AsInteger;
TWOCLASSSWOUTPORT = fmMain->ADOIndex->FieldByName("TWOCLASSSWOUTPORT")->AsInteger;
TWOCLASSSWADDR = fmMain->ADOIndex->FieldByName("TWOCLASSSWADDR")->AsInteger;
fmSetVideoSwParams->DvrChannels->Text = IntToStr(DVRCHANNELS);
fmSetVideoSwParams->OneSwInPort->Text = IntToStr(ONESWINPORT);
fmSetVideoSwParams->TwoClassSwOutPort->Text = IntToStr(TWOCLASSSWOUTPORT);
fmSetVideoSwParams->TwoClassSwAddr->Text = IntToStr(TWOCLASSSWADDR);
fmSetVideoSwParams->SpeedButton5->Enabled = true;
fmSetVideoSwParams->SpeedButton4->Enabled = false;
fmSetVideoSwParams->SpeedButton10->Enabled = true;
fmSetVideoSwParams->SpeedButton11->Enabled = false;
}
fmSetVideoSwParams->ShowModal();
}
//---------------------------------------------------------------------------
void __fastcall TfmMain::N5Click(TObject *Sender)
{//设置网络控制参数
int LINENUM = 0,SUNUM = 0;
// LINENUM = GetLineNum(NodeParText);
SUNUM = GetSuNum(NodeText);
SetMainParamsFuWei = 1;
MainControlJS = 4;
MainParamType = 0;
// fmSetNetControlParams->LineNum->Caption = IntToStr(LINENUM);
fmSetNetControlParams->SuNum->Caption = IntToStr(SUNUM);
fmSetNetControlParams->ShowModal();
}
//---------------------------------------------------------------------------
void __fastcall TfmMain::N6Click(TObject *Sender)
{//获取站和镜头参数
BYTE DataInfo[2];
memset(DataInfo, 0, 2);
int LINENUM = 0,SUNUM = 0;
// LINENUM = GetLineNum(NodeParText);
SUNUM = GetSuNum(NodeText);
//DATAINFO
DataInfo[0] = 0X01;//COMMAND TYPE 参数型号
MakePack(DataInfo,1,0X04,SUNUM,0X00,0XC5,LINENUM,SUNUM,"获取主控参数(站和镜头信息)命令");
}
//---------------------------------------------------------------------------
void __fastcall TfmMain::IP2Click(TObject *Sender)
{//获取前台IP参数
BYTE DataInfo[2];
memset(DataInfo, 0, 2);
int LINENUM = 0,SUNUM = 0;
// LINENUM = GetLineNum(NodeParText);
SUNUM = GetSuNum(NodeText);
//DATAINFO
DataInfo[0] = 0X02;//COMMAND TYPE 参数型号
MakePack(DataInfo,1,0X04,SUNUM,0X00,0XC5,LINENUM,SUNUM,"获取主控参数(前台IP地址信息)命令");
}
//---------------------------------------------------------------------------
void __fastcall TfmMain::N7Click(TObject *Sender)
{//获取模块地址参数
BYTE DataInfo[2];
memset(DataInfo, 0, 2);
int LINENUM = 0,SUNUM = 0;
// LINENUM = GetLineNum(NodeParText);
SUNUM = GetSuNum(NodeText);
//DATAINFO
DataInfo[0] = 0X03;//COMMAND TYPE 参数型号
MakePack(DataInfo,1,0X04,SUNUM,0X00,0XC5,LINENUM,SUNUM,"获取主控参数(模块地址信息)命令");
}
//---------------------------------------------------------------------------
void __fastcall TfmMain::N8Click(TObject *Sender)
{//获取视频切换参数
BYTE DataInfo[2];
memset(DataInfo, 0, 2);
int LINENUM = 0,SUNUM = 0;
// LINENUM = GetLineNum(NodeParText);
SUNUM = GetSuNum(NodeText);
//DATAINFO
DataInfo[0] = 0X04;//COMMAND TYPE 参数型号
MakePack(DataInfo,1,0X04,SUNUM,0X00,0XC5,LINENUM,SUNUM,"获取主控参数(视频切换信息)命令");
}
//---------------------------------------------------------------------------
void __fastcall TfmMain::N9Click(TObject *Sender)
{//获取网络控制参数
BYTE DataInfo[2];
memset(DataInfo, 0, 2);
int LINENUM = 0,SUNUM = 0;
// LINENUM = GetLineNum(NodeParText);
SUNUM = GetSuNum(NodeText);
//DATAINFO
DataInfo[0] = 0X05;//COMMAND TYPE 参数型号
MakePack(DataInfo,1,0X04,SUNUM,0X00,0XC5,LINENUM,SUNUM,"获取主控参数(网络控制信息)命令");
}
//---------------------------------------------------------------------------
void __fastcall TfmMain::ClientSocketRead(TObject *Sender,
TCustomWinSocket *Socket)
{
AnsiString asSql;
pBufParamsBack = new BYTE[10240];
String StrTemp;
String Str = "";
memset(pBufParamsBack,0,10240);
//size_t RecLen_t;
int TempCount = 0;
RecLen_t = Socket->ReceiveLength();
Socket->ReceiveBuf(pBufParamsBack,RecLen_t);
TempCount = RecLen_t;
SprintfData("<- <- ",pBufParamsBack,TempCount);
if(ServerType == 1)
{//连接前台主控返回
ProcQtParamCMD(pBufParamsBack,TempCount,pBufParamsBack);
}
/* TODO : 远程升级返回数据 */
//FarUpdateBack(); //
if(pBufParamsBack[9] == 0XFE && pBufParamsBack[10] == 0XFE)
{//远程升级信道打通返回报文
if(pBufParamsBack[15] == 0 && pBufParamsBack[16] == 0 && pBufParamsBack[17] == 0 &&pBufParamsBack[18] == 0)
{
fmFarUpDateNew->Timer1->Enabled = true;
}
return;
}
if(pBufParamsBack[9] == 0X91)
{//后台设备复位返回
switch(pBufParamsBack[14])
{
case 0XC5:
{
if(pBufParamsBack[15] == 0X00 && pBufParamsBack[16] == 0X00/
&& pBufParamsBack[17] == 0X00 && pBufParamsBack[18] == 0X00)
{
MessageShow("GPA复位成功!");
return;
}
else
{
MessageShow("GPA复位失败!");
return;
}
break;
}
case 0XC6:
{
if(pBufParamsBack[15] == 0X00 && pBufParamsBack[16] == 0X00/
&& pBufParamsBack[17] == 0X00 && pBufParamsBack[18] == 0X00)
{
MessageShow("G2MP复位成功!");
return;
}
else
{
MessageShow("G2MP复位失败!");
return;
}
break;
}
case 0XC8:
{
if(pBufParamsBack[15] == 0X00 && pBufParamsBack[16] == 0X00/
&& pBufParamsBack[17] == 0X00 && pBufParamsBack[18] == 0X00)
{
MessageShow("DXC复位成功!");
return;
}
else
{
MessageShow("DXC复位失败!");
return;
}
break;
}
case 0XC9:
{
if(pBufParamsBack[15] == 0X00 && pBufParamsBack[16] == 0X00/
&& pBufParamsBack[17] == 0X00 && pBufParamsBack[18] == 0X00)
{
MessageShow("GVG(V35)复位成功!");
return;
}
else
{
MessageShow("GVG(V35)复位失败!");
return;
}
break;
}
case 0XD4:
{
if(pBufParamsBack[15] == 0X00 && pBufParamsBack[16] == 0X00/
&& pBufParamsBack[17] == 0X00 && pBufParamsBack[18] == 0X00)
{
MessageShow("GAC4复位成功!");
return;
}
else
{
MessageShow("GAC4复位失败!");
return;
}
break;
}
case 0XCA:
{
if(pBufParamsBack[15] == 0X00 && pBufParamsBack[16] == 0X00/
&& pBufParamsBack[17] == 0X00 && pBufParamsBack[18] == 0X00)
{
MessageShow("Gmux-15复位成功!");
return;
}
else
{
MessageShow("Gmux-15复位失败!");
return;
}
break;
}
}
return;
}
if(pBufParamsBack[9] == 0X42 && pBufParamsBack[14] == 0XD4)
{//后台GAC-4返回
GacParamsBack(pBufParamsBack);
return;
}
if(pBufParamsBack[14] == 0XCA)
{//后台GMUX-15返回
GmuxParamsBack(pBufParamsBack);
return;
}
if(pBufParamsBack[9] == 0XCB)
{//清除办公网时隙返回
if(pBufParamsBack[15] == 0X00 && pBufParamsBack[16] == 0X00/
&& pBufParamsBack[17] == 0X00 && pBufParamsBack[18] == 0X00)
{
MessageShow("清除办公网时隙成功!");
return;
}
else
{
MessageShow("清除办公网时隙失败!");
return;
}
return;
}
/* TODO : 服务器发过来的错误提示信息 */
if(pBufParamsBack[9] == 0X9C)
{
String HintInfo = "";
BYTE *HintInfopBuff = new BYTE[256];
memset(HintInfopBuff,0,256);
memcpy(HintInfopBuff, (char *)(pBufParamsBack+11), 256);
HintInfo.sprintf("%s",HintInfopBuff);
MessageShow(HintInfo);
SaveToAlarm(HintInfo);
return;
}
/* TODO : 设置主控参数返回数据 */
//if(MainControlCount == 5)
{
if(pBufParamsBack[9] == 0XC4)
{//设置主控参数返回数据
if(!SetContorlTimeFlag)
{
if(pBufParamsBack[15] == 0X00 && pBufParamsBack[16] == 0X00/
&& pBufParamsBack[17] == 0X00 && pBufParamsBack[18] == 0X00)
{
MainControlJS += 1;
if(MainControlJS == 5)
{
if(MainParamType == 1)
{
FuWeiZhuKong->Enabled = true;
MessageShow("主控参数设置成功!");
}
else
{
FuWeiZhuKong->Interval = 2000;
FuWeiZhuKong->Enabled = true;
MessageShow("主控参数设置成功!");
}
}
return;
}
else
{
MessageShow("主控参数设置失败!");
return;
}
}
else
{
if(pBufParamsBack[15] == 0X00 && pBufParamsBack[16] == 0X00/
&& pBufParamsBack[17] == 0X00 && pBufParamsBack[18] == 0X00)
{
MessageShow("前台权限释放时间设置成功!");
return;
}
else
{
MessageShow("前台权限释放时间设置失败!");
return;
}
}
}
}
/* TODO : 设置E1时钟工作方式返回数据 */
if(pBufParamsBack[9] == 0XCC)
{
if(pBufParamsBack[15] == 0X00 && pBufParamsBack[16] == 0X00/
&& pBufParamsBack[17] == 0X00 && pBufParamsBack[18] == 0X00)
{
MessageShow("设置E1时钟工作方式成功!");
return;
}
else
{
MessageShow("设置E1时钟工作方式失败!");
return;
}
}
if(pBufParamsBack[9] == 0XD3)
{//获取程序的版本号和芯片类型信息返回信息
int COMMAND_FLAG = pBufParamsBack[19];//模块类型
String COMMAND_TYPE = "";
COMMAND_TYPE.sprintf("%X",pBufParamsBack[20]);//芯片类型
BYTE COMMAND_DATATemp = pBufParamsBack[21];
String COMMAND_DATA = IntToStr(pBufParamsBack[21] >> 4) + "." + IntToStr(COMMAND_DATATemp & 0X0F);
switch(COMMAND_FLAG)
{
case 0XFF:
{//主控
//MessageShow("主控当前版本号为:V" + COMMAND_DATA + " 芯片类型为:" + COMMAND_TYPE);
MessageShow("主控当前版本号为:V" + COMMAND_DATA);
break;
}
case 0XC0:
{//信道控制器
if(pBufParamsBack[20] == 0X0C)
{
COMMAND_TYPE = "89C58";
}
else if(pBufParamsBack[20] == 0X0E)
{
COMMAND_TYPE = "89E58";
}
else
{
COMMAND_TYPE = "未知类型";
}
MessageShow("信道控制器当前版本号为:V" + COMMAND_DATA + " 芯片类型为:" + COMMAND_TYPE);
break;
}
}
}
/* TODO : 复位主控和信道控制器返回 */
if(pBufParamsBack[9] == 0XCD)
{//复位返回
String SmName = "";
switch(pBufParamsBack[14])
{
case 0XC0:
{//信道控制器复位成功
SmName = "信道控制器";
break;
}
case 0XC2:
{
if(pBufParamsBack[13] == 0X01)
{//前台ARM板复位成功
SmName = "前台ARM板";
}
else if(pBufParamsBack[13] == 0X02)
{//前台复用器板复位成功
SmName = "前台复用器";
}
break;
}
case 0XD3:
{//前台视频切换器板成功
SmName = "前台视频切换器板";
break;
}
case 0XD4:
{//前台音频切换器板成功
SmName = "前台音频切换器板" ;
break;
}
case 0XCB:
{//前台音频服务器板成功
SmName = "前台音频服务器板" ;
break;
}
case 0XC3:
{//成功
if(pBufParamsBack[13] == 0X20)
{//前台网桥板一路复位成功
SmName = "前台网桥板一路";
}
else if(pBufParamsBack[13] == 0X30)
{//前台网桥板二路复位成功
SmName = "前台网桥板二路";
}
break;
}
case 0XC1:
{//成功
if(pBufParamsBack[13] == 0X40)
{//前台右侧视频服务器板复位成功
SmName = "前台右侧视频服务器板";
}
else if(pBufParamsBack[13] == 0X50)
{//前台左侧视频服务器板复位成功
SmName = "前台左侧视频服务器板" ;
}
break;
}
}
if(pBufParamsBack[13] != 0 && pBufParamsBack[13] != 0XFF)
{
if(pBufParamsBack[15] == 0X00 && pBufParamsBack[16] == 0X00/
&& pBufParamsBack[17] == 0X00 && pBufParamsBack[18] == 0X00)
{
MessageShow(SmName + "复位成功!");
return;
}
else
{
MessageShow(SmName + "复位失败!");
return;
}
}
if(pBufParamsBack[13] == 0X00)
{//主控复位成功
if(pBufParamsBack[15] == 0X00 && pBufParamsBack[16] == 0X00/
&& pBufParamsBack[17] == 0X00 && pBufParamsBack[18] == 0X00)
{
if(!SetMainParamsFuWei)
{
MessageShow("主控复位成功!");
}
return;
}
else
{
if(!SetMainParamsFuWei)
{
MessageShow("主控复位失败!");
}
return;
}
}
if(pBufParamsBack[13] == 0XFF)
{//主控复位成功
if(pBufParamsBack[15] == 0X00 && pBufParamsBack[16] == 0X00/
&& pBufParamsBack[17] == 0X00 && pBufParamsBack[18] == 0X00)
{
MessageShow("全部I/O模块复位成功!");
return;
}
else
{
MessageShow("全部I/O模块复位失败!");
return;
}
}
}
/*if((pBufParamsBack[0] == 0XEB) && (pBufParamsBack[1] == 0X90) && (pBufParamsBack[2] == 0XEB) && (pBufParamsBack[3] == 0X90) && (pBufParamsBack[4] == 0XEB) && (pBufParamsBack[5] == 0X90))
{//获取信道控制器软件版本号
AnsiString Message = "" ;
if(pBufParamsBack[20] == 0)
{
AnsiString StrTemp = "" ;
StrTemp.sprintf("%X",pBufParamsBack[17]);
StrTemp = StrTemp.Insert(".",2) ;
Message = "当前软件的版本号为:" + StrTemp;
}
else
{
Message = " 获取软件版本号失败. ";
}
MessageShow(Message);
return;
}*/
/* TODO : 获取主控参数返回数据 */
if(pBufParamsBack[9] == 0XC5)
{
QtMainParamsBack(pBufParamsBack);
}
else if(pBufParamsBack[9] == 0X79 || pBufParamsBack[9] == 0X7A)
{
DxcBack(pBufParamsBack);//DXC返回数据
}
else if(pBufParamsBack[9] == 0X77)
{
DevBack(pBufParamsBack);//后台设备返回数据
}
else if(pBufParamsBack[9] == 0XD2 || pBufParamsBack[9] == 0XC3)
{
DvrBackInfo(pBufParamsBack);//Dvr和站点控制返回信息
}
}
//---------------------------------------------------------------------------
void __fastcall TfmMain::DXCN5Click(TObject *Sender)
{//获取DXC接续配置数据
/*String SMNAME;
int SMADDR = 0,LINENUM = 0,SUNUM = 0;
SMNAME = tvDevice->Selected->Text;
AnsiString asSqlIndex = "select * from CT_DEV where SMNAME='" + SMNAME + "'";
ADOIndex->Close();
ADOIndex->SQL->Clear();
ADOIndex->SQL->Add(asSqlIndex);
ADOIndex->Open();
SMADDR = ADOIndex->FieldByName("SMADDR")->AsInteger;
BYTE DataInfo[2];
memset(DataInfo, 0, 2);
//DATAINFO
DataInfo[1] = 0X41;//
MakePack(DataInfo,2,0X04,SMADDR,0XC8,0XB5,LINENUM,SUNUM);*/
String SMNAME;
int SMADDR;
SMNAME = tvDevice->Selected->Text;
AnsiString asSqlIndex = "select * from CT_DEV where SMNAME='" + SMNAME + "'";
ADOIndex->Close();
ADOIndex->SQL->Clear();
ADOIndex->SQL->Add(asSqlIndex);
ADOIndex->Open();
SMADDR = ADOIndex->FieldByName("SMADDR")->AsInteger;
BYTE SendBuf[] = {0XEB,0X90,0X05,0X00,0X01,0X02,0X00,0X00,0X00,0X79,0X00,SMADDR,0X41};
int Length = sizeof(SendBuf);
if(ClientSocket->Active)
{
ClientSocket->Socket->SendBuf(SendBuf,Length);
SprintfData("-> -> 获取DXC接续配置命令:",SendBuf,Length);
//MessageShow("下发成功!");
}
else
{
MessageShow("网络连接失败,请先确认网络连接状态!");
}
}
//---------------------------------------------------------------------------
/* TODO : 打印下行/上行数据 */
void __fastcall TfmMain::SprintfData(String Direct, BYTE *pBuff, long Length)
{//打印发送/接收到的数据
String StrTemp;
String Str = "";
AnsiString sTime = Now().FormatString("yyyy-mm-dd hh:nn:ss ");
for(long i = 0;i < Length; i++)
{
StrTemp = "";
StrTemp.sprintf("%X",pBuff[i]);
if (StrLen(StrTemp.c_str()) == 1)
{
StrTemp = "0" + StrTemp;
}
Str += StrTemp + " ";
}
fmReceiveData->Memo2->Lines->Add(sTime + Direct + Str);
fmReceiveData->Memo2->Lines->Add(" ");
SaveToLog(sTime + Direct + Str,0);
}
//---------------------------------------------------------------------------
void __fastcall TfmMain::ResetDxcClick(TObject *Sender)
{//复位DXC
String SMNAME = tvDevice->Selected->Text;
AnsiString asSql = "select * from CT_DEV where SMNAME='" + SMNAME + "'";
ADOSelect->Close();
ADOSelect->SQL->Clear();
ADOSelect->SQL->Add(asSql);
ADOSelect->Open();
int SMADDR = ADOSelect->FieldByName("SMADDR")->AsInteger;
BYTE DataInfo[2];
memset(DataInfo, 0, 2);
int LINENUM = 0,SUNUM = 0;
MakePack(DataInfo,0,0X04,SMADDR,0XC8,0X91,LINENUM,SUNUM,"复位DXC命令");
/* int SMADDR,SMTYPE;
String SMNAME;
SMNAME = tvDevice->Selected->Text;
AnsiString asSql = "select * from CT_DEV where SMNAME='" + SMNAME + "'";
ADOSelect->Close();
ADOSelect->SQL->Clear();
ADOSelect->SQL->Add(asSql);
ADOSelect->Open();
SMADDR = ADOSelect->FieldByName("SMADDR")->AsInteger;
SMTYPE = ADOSelect->FieldByName("SMTYPE")->AsInteger;
BYTE SendBuf[] = {0XEB,0X90,0X07,0X00,0X01,0X02,0X00,0X00,0X00,0X58,0X00,0X00,0X00,SMADDR,SMTYPE};
int Length = sizeof(SendBuf);
if(ClientSocket->Active)
{
ClientSocket->Socket->SendBuf(SendBuf,Length);
SprintfData("-> -> 复位DXC命令:",SendBuf,Length);
}
else
{
MessageShow("网络连接失败,请先确认网络连接状态!");
}*/
}
//---------------------------------------------------------------------------
- m1
- m1
- m1
- M1
- M1
- m1
- Lamobo M1
- Eclipse 3.3 M1 发布!
- NetBeans 6.5 M1 Released
- netbeans 7.8 m1
- MyEclipse 8.5 M1 优化
- MyEclipse 8.5 M1注册码
- MyEclipse 8.5 M1注册码
- M0、M1、M2、M3
- MyEclipse7.0 M1
- M1 开发过程
- M0、M1、M2
- 食堂M1卡饭卡测试
- XML and Java technologies: Data binding, Part 2: Performance
- 无法删除代码R3
- 331--Mapping the Swaps
- 项目中采用J2EE体系架构分析
- java 动态代理学习(Proxy,InvocationHandler)——自己的理解
- m1
- XML and Java technologies: Document models, Part 1: Performance
- m1
- 二十一周年
- Qt中如何禁掉所有UI操作以及注意事项
- c# test
- QA
- XMLHTTPRequest的属性和方法简介
- m2