m2
来源:互联网 发布:淘宝中差评外包团队 编辑:程序博客网 时间:2024/06/01 23:12
//---------------------------------------------------------------------------
/******************************************************************************
* *
* 功能:将pBuff中Ip转化为一字符串 *
* 输入:BYTE * pBuff(从pBuff[0] ~ pBuff[3]为一Ip地址) *
* 输出:Str(包含一Ip地址的字符串,如:255.255.255.255) *
* 创建日期:2005-04-05 *
* *
*******************************************************************************/
String TfmMain::UniteIp(BYTE * pBuff)
{/* TODO : 合并Ip地址 */
String StrTemp = "",Str = "";
StrTemp.sprintf("%d",pBuff[0]);
StrTemp += ".";
Str = Str + StrTemp;
StrTemp.sprintf("%d",pBuff[1]);
StrTemp += ".";
Str = Str + StrTemp;
StrTemp.sprintf("%d",pBuff[2]);
StrTemp += ".";
Str = Str + StrTemp;
StrTemp.sprintf("%d",pBuff[3]);
Str = Str + StrTemp;
return Str;
}
//---------------------------------------------------------------------------
/******************************************************************************
* *
* 功能描述:分析Edit控件,发现它有一个KeyPress事件,只需将Key参数赋值为0, *
* 该键值便不会置入输入缓冲区,即该键值输入无效 *
* *
******************************************************************************/
void __fastcall TfmMain::CheckEditKeyPress(char & Key)
{
switch(Key)
{
case '0': //接受数据键0~9的输入
case '1':
case '2':
case '3':
case '4':
case '5':
case '6':
case '7':
case '8':
case '9':
case 8: //这是一个BackSpace键,不能禁止,否则不能实现删除功能了
{
break;
}
/*case '.': //检查是否存在小数点
{
if(DotInStr(Edit1->Text))
{
Key = 0;
}
break;
}
case '+':
case '-':
{
if(SignInStr(Edit1->Text))//检查是否已存在符号
{
Key = 0;
}
break;
}*/
default:
{
Key = 0;
break;
}
}
}
//---------------------------------------------------------------------------
//该函数检查字符串中是否已存在小数点
bool __fastcall TfmMain::DotInStr(String ass)
{
int ii,l1;
l1 = ass.Length() ;
for(int ii = 0;ii<l1;ii++)
{
if(ass.c_str() [ii] == '.')
{
return True;
}
}
return False;
}
//---------------------------------------------------------------------------
//该函数检查字符串前面是否已存在“+”、“-”符号
bool __fastcall TfmMain::SignInStr(AnsiString ass)
{
int ii,l1;
l1 = ass.Length() ;
for(ii = 0;ii<l1;ii++)
{
if((ass.c_str() [ii] == '+') || (ass.c_str() [ii] == '-'))
{
return True;
}
}
return False;
}
//---------------------------------------------------------------------------
void __fastcall TfmMain::CheckComboBoxKeyPress(char & Key)
{
Key = 0;//禁止输入数据
}
//---------------------------------------------------------------------------
void __fastcall TfmMain::UpDataClick(TObject *Sender)
{//远程升级
//运行arp.exe命令
SHELLEXECUTEINFO ShExecInfo = {0};
ShExecInfo.cbSize = sizeof(SHELLEXECUTEINFO);
ShExecInfo.fMask = SEE_MASK_NOCLOSEPROCESS;
ShExecInfo.hwnd = NULL;
ShExecInfo.lpVerb = NULL;
ShExecInfo.lpFile = "arp.exe";
ShExecInfo.lpParameters = " -d";
ShExecInfo.lpDirectory = NULL;
ShExecInfo.nShow = SW_HIDE;
ShExecInfo.hInstApp = NULL;
ShellExecuteEx(&ShExecInfo);
WaitForSingleObject(ShExecInfo.hProcess,INFINITE);
CloseHandle(ShExecInfo.hProcess);
//运行arp.exe命令 结束
if(UpDateFlag == 0)
{
UpDateFlag = 1;//远程升级标记
TTreeNode *Node1,*Node2;
String SuName,asSql;//,GKDNAME;
String LINENAME;
int LINENUM = 0;
int SUNUM = GetSuNum(NodeText);
UpDateSu = SUNUM;
// fmFarUpDateNew->LineNum->Text = LINENUM;
fmFarUpDateNew->SuNum->Text = IntToStr(SUNUM);
//fmFarUpDateNew->SmNum->Text = "";
fmFarUpDateNew->TreeView1->Items->Clear();
Node2 = fmFarUpDateNew->TreeView1->Items->Add(NULL, tvDevice->Selected->Text);
Node2->ImageIndex = 1;
Node1 = fmFarUpDateNew->TreeView1->Items->Item[0];
Node2 = fmFarUpDateNew->TreeView1->Items->AddChild(Node1, "信道控制器");
Node2->ImageIndex = 1;
asSql= "select * from ct_videoserverparams where SUNUM=" + IntToStr(SUNUM);
ADOSelect->Close();
ADOSelect->SQL->Clear();
ADOSelect->SQL->Add(asSql);
ADOSelect->Open();
int num = ADOSelect->RecordCount;
for(int i =0;i<num;i++)
{
int VIDEONUM = ADOSelect->FieldByName("VIDEONUM")->AsInteger;
int DVRLX = ADOSelect->FieldByName("DVRLX")->AsInteger;
if(DVRLX == 1)
{
Node2 = fmFarUpDateNew->TreeView1->Items->AddChild(Node1, "DVR"+IntToStr(VIDEONUM));
Node2->ImageIndex = 2;
}
else
{
Node2 = fmFarUpDateNew->TreeView1->Items->AddChild(Node1, "DVR"+IntToStr(VIDEONUM));
Node2->ImageIndex = 1;
}
ADOSelect->Next();
}
Node2 = fmFarUpDateNew->TreeView1->Items->AddChild(Node1, "ARM");
Node2->ImageIndex = 1;
Node2 = fmFarUpDateNew->TreeView1->Items->AddChild(Node1, "GAS");
Node2->ImageIndex = 1;
asSql= "select * from ct_stationparams where SUNUM=" + IntToStr(SUNUM);
ADOSelect->Close();
ADOSelect->SQL->Clear();
ADOSelect->SQL->Add(asSql);
ADOSelect->Open();
String MAINIP = ADOSelect->FieldByName("MAINIP")->AsString;
fmFarUpDateNew->SmIp->Text = MAINIP;
fmFarUpDateNew->TreeView1->Enabled = true;
fmFarUpDateNew->QuerySMState->Enabled = false;
BYTE DataInfo[2];
memset(DataInfo, 0, 2);
fmFarUpDateNew->MakePackNew(DataInfo,0,0X04,SUNUM,0X00,0XFE,LINENUM,SUNUM,"远程升级开始命令");
fmFarUpDateNew->CGauge1->Progress = 0;
fmFarUpDateNew->Show();
}
else if(UpDateFlag == 1)
{
int SUNUM = GetSuNum(NodeText);
asSql = "select * from CT_SU where SUNUM=" + IntToStr(UpDateSu);
ADOSelect->Close();
ADOSelect->SQL->Clear();
ADOSelect->SQL->Add(asSql);
ADOSelect->Open();
String SUNAME = ADOSelect->FieldByName("SUNAME")->AsString;
if(UpDateSu != SUNUM)
{
MessageShow(SUNAME+ "正在进行升级操作,其它车站此时不允许进行升级操作!");
}
else if(UpDateSu == SUNUM)
{
fmFarUpDateNew->Show();
}
}
}
//---------------------------------------------------------------------------
void __fastcall TfmMain::SpeedButton21Click(TObject *Sender)
{//主控参数复制
String SUNAME;
AnsiString asSql= "select * from CT_SU where SUNUM != 0 order by SUNUM";
ADOSelect->Close();
ADOSelect->SQL->Clear();
ADOSelect->SQL->Add(asSql);
ADOSelect->Open();
int SuCount = ADOSelect->RecordCount;
if(SuCount > 0)
{
fmCopySuParams->SourceSuName->Items->Clear() ;
fmCopySuParams->AimSuName->Items->Clear() ;
fmCopySuParams->SourceSuNum->Caption = ADOSelect->FieldByName("SUNUM")->AsInteger;
fmCopySuParams->AimSuNum->Caption = ADOSelect->FieldByName("SUNUM")->AsInteger;
for(int i = 0;i<SuCount;i++)
{
SUNAME = ADOSelect->FieldByName("SUNAME")->AsString;
fmCopySuParams->SourceSuName->Items->Add(SUNAME);
fmCopySuParams->AimSuName->Items->Add(SUNAME);
ADOSelect->Next();
}
fmCopySuParams->SourceSuName->ItemIndex = 0;
fmCopySuParams->AimSuName->ItemIndex = 0;
}
fmCopySuParams->ShowModal();
}
//---------------------------------------------------------------------------
void __fastcall TfmMain::QueryNetClick(TObject *Sender)
{//查看后台设备信息
int SMADDR,SMTYPE,PORT;
String SMNAME,ADDRESS;
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;
PORT = ADOSelect->FieldByName("PORT")->AsInteger;
SMNAME = ADOSelect->FieldByName("SMNAME")->AsString;
ADDRESS = ADOSelect->FieldByName("ADDRESS")->AsString;
fmDevInfo->SmAddr->Text = IntToStr(SMADDR);
fmDevInfo->SmType->Text = IntToStr(SMTYPE);
fmDevInfo->Port->Text = IntToStr(PORT);
fmDevInfo->SmName->Text = SMNAME;
fmDevInfo->Address->Text = ADDRESS;
fmDevInfo->SmAddr->Enabled = false;
fmDevInfo->SmType->Enabled = false;
fmDevInfo->Port->Enabled = false;
fmDevInfo->SmName->Enabled = false;
fmDevInfo->Address->Enabled = false;
asSql = "select * from CT_CLOCK where SMADDR="+IntToStr(SMADDR)/
+ " AND " + "CID1=" + IntToStr(SMTYPE);
ADOSelect->Close();
ADOSelect->SQL->Clear();
ADOSelect->SQL->Add(asSql);
ADOSelect->Open();
int CLOCKTYPE = ADOSelect->FieldByName("CLOCKTYPE")->AsInteger;
if(SMTYPE == 200)
{
if(CLOCKTYPE == 16)
{//主时钟
fmDevInfo->DevClock->Caption = "主时钟";
}
else
{
fmDevInfo->DevClock->Caption = "第"+IntToStr(CLOCKTYPE)+"码流时钟";
}
}
else
{
switch(CLOCKTYPE)
{
case 0:
{
fmDevInfo->DevClock->Caption = "从A向时钟";
break;
}
case 1:
{
fmDevInfo->DevClock->Caption = "从B向时钟";
break;
}
case 2:
{
fmDevInfo->DevClock->Caption = "主时钟";
break;
}
case 3:
{
fmDevInfo->DevClock->Caption = "外部时钟";
break;
}
}
}
fmDevInfo->ShowModal();
}
//---------------------------------------------------------------------------
void __fastcall TfmMain::tvDeviceClick(TObject *Sender)
{
idx = tvDevice->Selected->AbsoluteIndex ;
}
//---------------------------------------------------------------------------
void __fastcall TfmMain::DelNetClick(TObject *Sender)
{
String SMNAME;
int SMADDR,SMTYPE;
SMNAME = tvDevice->Selected->Text;
asSql = "select * from CT_DEV where SMNAME='" + NodeText + "'";
ADOIndex->Close();
ADOIndex->SQL->Clear();
ADOIndex->SQL->Add(asSql);
ADOIndex->Open();
SMADDR = ADOIndex->FieldByName("SMADDR")->AsInteger;
SMTYPE = ADOIndex->FieldByName("SMTYPE")->AsInteger;
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)
{
AnsiString asSql = "delete from CT_DEV where SMNAME='"+SMNAME + "'";
ADOSelect->Close();
ADOSelect->SQL->Clear();
ADOSelect->SQL->Add(asSql);
ADOSelect->ExecSQL();
asSql = "delete from CT_CLOCK where SMADDR="+IntToStr(SMADDR)/
+ " AND " + "CID1=" + IntToStr(SMTYPE);
fmMain->ADOSelect->Close();
fmMain->ADOSelect->SQL->Clear();
fmMain->ADOSelect->SQL->Add(asSql);
fmMain->ADOSelect->ExecSQL();
idx = idx - 1;
LoadData();
}
}
//---------------------------------------------------------------------------
void __fastcall TfmMain::N15Click(TObject *Sender)
{
//复位主控
SetMainParamsFuWei = 0;
BYTE DataInfo[2];
memset(DataInfo, 0, 2);
int LINENUM = 0,SUNUM = 0;
// LINENUM = GetLineNum(NodeParText);
SUNUM = GetSuNum(NodeText);
//DATAINFO
MakePack(DataInfo,0,0X04,0X00,0XCD,0XCD,LINENUM,SUNUM,"复位主控命令");
//MakePack(BYTE *DataInfo,int DataLength,int Protocol,
//int SmAddr,int Cid1,int Cid2,int LineNum,int SuNum);
/*int SMADDR,LINENUM,SUNUM;
LINENUM = GetLineNum(NodeParText);
SUNUM = GetSuNum(NodeText,NodeParText);
//复位主控
BYTE SendBuf[] = {0XEB,0X90,0X07,0X00,0X01,0X02,0X00,0X00,0X00,0X58,0X00,LINENUM,SUNUM,0X00,0X00};
int Length = sizeof(SendBuf);
if(ClientSocket->Active)
{
ClientSocket->Socket->SendBuf(SendBuf,Length);
SprintfData("-> -> 复位主控命令",SendBuf,Length);
}
else
{
MessageShow("网络连接失败,请先确认网络连接状态!");
}*/
}
//---------------------------------------------------------------------------
void __fastcall TfmMain::N17Click(TObject *Sender)
{
//复位信道控制器
BYTE DataInfo[2];
memset(DataInfo, 0, 2);
int LINENUM = 0,SUNUM = 0,ADDR = 0;
int SMTYPE = 1;
// LINENUM = GetLineNum(NodeParText);
SUNUM = GetSuNum(NodeText);
//信道控制器
String asSql = "select * from ct_smaddrparams where SUNUM="+IntToStr(SUNUM)/
+ " AND " + "LINENUM=" + IntToStr(LINENUM) + " AND " + "SMTYPE=" + IntToStr(SMTYPE)/
+ " order by 'NUM'";
ADOSelect->Close();
ADOSelect->SQL->Clear();
ADOSelect->SQL->Add(asSql);
ADOSelect->Open();
ADDR = ADOSelect->FieldByName("ADDR")->AsInteger;//
//DATAINFO
MakePack(DataInfo,0,0X04,ADDR,0XC0,0XCD,LINENUM,SUNUM,"复位信道控制器命令");
//MakePack(BYTE *DataInfo,int DataLength,int Protocol,
//int SmAddr,int Cid1,int Cid2,int LineNum,int SuNum);
/* int LINENUM = 0,SUNUM = 0,ADDR = 0;
LINENUM = GetLineNum(NodeParText);
SUNUM = GetSuNum(NodeText,NodeParText);
//选择为信道控制器 CID1 = 0XC0 模块地址 = 站号
BYTE SendBuf[] = {0XEB,0X90,0X07,0X00,0X01,0X02,0X00,0X00,0X00,0X58,0X00,LINENUM,SUNUM,SUNUM,0XC0};
int Length = sizeof(SendBuf);
if(ClientSocket->Active)
{
ClientSocket->Socket->SendBuf(SendBuf,Length);
SprintfData("-> -> 复位信道控制器命令",SendBuf,Length);
}
else
{
MessageShow("网络连接失败,请先确认网络连接状态!");
}*/
}
//---------------------------------------------------------------------------
void __fastcall TfmMain::FarUpdateBack()
{
/*switch(pBufParamsBack[9])
{//远程升级
case 0X59:
{//选择数据通道0x0059返回
if(fmFarUpDate->ResetFlag == false)
{
int LINENUM = 0,SUNUM = 0;
fmFarUpDate->TimeBeyond->Enabled = false;
LINENUM = fmFarUpDate->LineNum->Text.ToInt();
SUNUM = fmFarUpDate->SuNum->Text.ToInt();
if(fmFarUpDate->TreeView1->Selected->Text != "信道控制器")
{
if(fmFarUpDate->TreeView1->Selected->Level == 0)
{//选择的是站
fmFarUpDate->TimerSendData->Enabled = true;
}
else if(fmFarUpDate->TreeView1->Selected->Level == 1)
{//选择的是模块 CID1 = 0XC4
//停止扫描命令
BYTE SendBuf[] = {0XEB,0X90,0X07,0X00,0X01,0X02,0X00,0X00,0X00,0X50,0X00,LINENUM,SUNUM,0X00,0X00};
int Length = sizeof(SendBuf);
if(ClientSocket->Active)
{
ClientSocket->Socket->SendBuf(SendBuf,Length);
SprintfData("-> -> ",SendBuf,Length);
//MessageShow("下发成功!");
}
else
{
MessageShow("网络连接失败,请先确认网络连接状态!");
}
fmFarUpDate->TimeBeyond->Interval = TM_FRAMEWAITE;
fmFarUpDate->TimeBeyond->Enabled = true;
}
}
else if(fmFarUpDate->TreeView1->Selected->Text == "信道控制器")
{//选择为信道控制器 CID1 = 0XC0 模块地址 = 站号
//停止扫描命令
BYTE SendBuf[] = {0XEB,0X90,0X07,0X00,0X01,0X02,0X00,0X00,0X00,0X50,0X00,LINENUM,SUNUM,0X00,0X00};
int Length = sizeof(SendBuf);
if(ClientSocket->Active)
{
ClientSocket->Socket->SendBuf(SendBuf,Length);
SprintfData("-> -> ",SendBuf,Length);
//MessageShow("下发成功!");
}
else
{
MessageShow("网络连接失败,请先确认网络连接状态!");
}
fmFarUpDate->TimeBeyond->Interval = TM_FRAMEWAITE;
fmFarUpDate->TimeBeyond->Enabled = true;
}
}
break;
}
case 0X50:
{//停止扫描返回
fmFarUpDate->TimeBeyond->Enabled = false;
fmFarUpDate->TimerSendData->Enabled = true;
break;
}
case 0X51:
{//远程升级查询状态返回数据
if(pBufParamsBack[15] == 0xff)
{
TfmMessage *message = new TfmMessage(Application);
message->lbMessage->Caption = "查询状态失败!";
message->ShowModal();
break;
}
else
{
char *str1,*str2;
int SMADDR = 0,LINENUM = 0,SUNUM = 0;
int yehao = 0,banbenghao = 0;
yehao = fmFarUpDate->PageNum;
banbenghao = fmFarUpDate->bUpEdition;
LINENUM = fmFarUpDate->LineNum->Text.ToInt();
SUNUM = fmFarUpDate->SuNum->Text.ToInt();
fmFarUpDate->TimerSendData->Enabled = false;
fmFarUpDate->EnabledFlag->Caption = 1; //升级页标记
fmFarUpDate->TimeBeyond->Enabled = false; //以防万一,其实没用
if(CompleteFlag)
{//如果是结束之后和设为活动页的查询状态,则再加发一条激活命令
if(fmFarUpDate->TreeView1->Selected->Text != "信道控制器")
{
if(fmFarUpDate->TreeView1->Selected->Level == 0)
{//选择的是站
BYTE SendBuf[] = {0XEB,0X90,0X09,0X00,0X01,0X03,0X00,0X00,0X00,0X56,0X00,LINENUM,SUNUM,0X00,0X00,yehao,banbenghao};
int Length = sizeof(SendBuf);
if(ClientSocket->Active)
{
ClientSocket->Socket->SendBuf(SendBuf,Length);
SprintfData("-> -> ",SendBuf,Length);
//MessageShow("下发成功!");
}
else
{
MessageShow("网络连接失败,请先确认网络连接状态!");
}
}
else if(fmFarUpDate->TreeView1->Selected->Level == 1)
{//选择的是模块 CID1 = 0XC4
SMADDR = fmFarUpDate->SmAddr->Text.ToInt();
BYTE SendBuf[] = {0XEB,0X90,0X09,0X00,0X01,0X03,0X00,0X00,0X00,0X56,0X00,LINENUM,SUNUM,SMADDR,0XC4,yehao,banbenghao};
int Length = sizeof(SendBuf);
if(ClientSocket->Active)
{
ClientSocket->Socket->SendBuf(SendBuf,Length);
SprintfData("-> -> ",SendBuf,Length);
//MessageShow("下发成功!");
}
else
{
MessageShow("网络连接失败,请先确认网络连接状态!");
}
}
}
else if(fmFarUpDate->TreeView1->Selected->Text == "信道控制器")
{//选择为信道控制器 CID1 = 0XC0 模块地址 = 站号
BYTE SendBuf[] = {0XEB,0X90,0X09,0X00,0X01,0X03,0X00,0X00,0X00,0X56,0X00,LINENUM,SUNUM,SUNUM,0XC0,yehao,banbenghao};
int Length = sizeof(SendBuf);
if(ClientSocket->Active)
{
ClientSocket->Socket->SendBuf(SendBuf,Length);
SprintfData("-> -> ",SendBuf,Length);
//MessageShow("下发成功!");
}
else
{
MessageShow("网络连接失败,请先确认网络连接状态!");
}
}
}
CompleteFlag = false;
}
VerH0 = pBufParamsBack[19]& 0X7F;
VerH1 = pBufParamsBack[20]& 0X7F;
VerH2 = pBufParamsBack[21]& 0X7F;
VerH3 = pBufParamsBack[22]& 0X7F;
for(int i=0;i<4;i++)
{
if(pBufParamsBack[19 + i] == 0X00)
{
fmFarUpDate->ImageList2->Draw(fmFarUpDate->Image[i]->Canvas,0,0,4,true);
fmFarUpDate->Image[i]->Canvas->TextOutA(0,0,"");
fmFarUpDate->Ver[i]->Caption = "V0.0";
fmFarUpDate->Ver[i]->Left = (26 + i * 72);
fmFarUpDate->State[i]->Left = (24 + i * 72);
fmFarUpDate->State[i]->Caption = "无效页";
}
else
{
int Version0 = 0,Version1 = 0;
Version0 = (pBufParamsBack[19 + i] & 0X70) / 0X0F;
Version1 = (pBufParamsBack[19 + i] & 0X0F);
if((pBufParamsBack[19 + i] & 0X80) == 0X80)
{//活动页标志=1,表示该页内容为活动页, 存放不可修改版本号。
if(i == 0)
{
fmFarUpDate->ImageList2->Draw(fmFarUpDate->Image[i]->Canvas,0,0,3,true);
}
else
{
fmFarUpDate->ImageList2->Draw(fmFarUpDate->Image[i]->Canvas,0,0,0,true);
}
fmFarUpDate->Image[i]->Canvas->TextOutA(0,0,"");
if(Version1 < 10)
{
if(Version1 == 0)
{
fmFarUpDate->Ver[i]->Caption = "V" + FloatToStr(Version0) + ".0";
}
else
{
fmFarUpDate->Ver[i]->Caption = "V" + FloatToStr(Version0 + Version1/10.0);
}
fmFarUpDate->Ver[i]->Left = (26 + i * 72);
}
else if(Version1 >= 10)
{
if(Version1 == 0)
{
fmFarUpDate->Ver[i]->Caption = "V" + FloatToStr(Version0) + ".0";
}
else
{
fmFarUpDate->Ver[i]->Caption = "V" + FloatToStr(Version0 + Version1/100.00);
}
fmFarUpDate->Ver[i]->Left = (24 + i * 72);
}
if(i == 0)
{
fmFarUpDate->State[i]->Left = (10 + i * 72);
fmFarUpDate->State[i]->Caption = "保留页(活动)";
}
else
{
fmFarUpDate->State[i]->Left = (23 + i * 72);
fmFarUpDate->State[i]->Caption = "活动页";
}
}
else if((pBufParamsBack[19 + i] & 0X80) == 0X00)
{//活动页标志=0,表示该页内容为非活动页, 存放可修改版本号。
if(i == 0)
{
fmFarUpDate->ImageList2->Draw(fmFarUpDate->Image[i]->Canvas,0,0,3,true);
}
else
{
fmFarUpDate->ImageList2->Draw(fmFarUpDate->Image[i]->Canvas,0,0,1,true);
}
fmFarUpDate->Image[i]->Canvas->TextOutA(0,0,"");
if(Version1 < 10)
{
if(Version1 == 0)
{
fmFarUpDate->Ver[i]->Caption = "V" + FloatToStr(Version0) + ".0";
}
else
{
fmFarUpDate->Ver[i]->Caption = "V" + FloatToStr(Version0 + Version1/10.0);
}
fmFarUpDate->Ver[i]->Left = (26 + i * 72);
}
else if(Version1 >= 10)
{
if(Version1 == 0)
{
fmFarUpDate->Ver[i]->Caption = "V" + FloatToStr(Version0) + ".0";
}
else
{
fmFarUpDate->Ver[i]->Caption = "V" + FloatToStr(Version0 + Version1/100.00);
}
fmFarUpDate->Ver[i]->Left = (24 + i * 72);
}
if(i == 0)
{
fmFarUpDate->State[i]->Left = (10 + i * 72);
fmFarUpDate->State[i]->Caption = "保留页(非活动)";
}
else
{
fmFarUpDate->State[i]->Left = (15 + i * 72);
fmFarUpDate->State[i]->Caption = "非活动页";
}
}
}
}
fmFarUpDate->DisableState(false);
break;
}
case 0X52:
{//远程升级预发页版量0x0052返回报文
if(fmFarUpDate->UpdataActive == true)
{//开始下发程序数据
fmFarUpDate->UpdataCount += 1;
fmFarUpDate->TimerSendVer->Enabled = false;
fmFarUpDate->TUpdata->Enabled = true;
if(fmFarUpDate->ProgressBar1->Visible)
{
fmFarUpDate->ProgressBar1->Position +=2;
}
fmFarUpDate->TimeBeyond->Enabled = false;
}
break;
}
case 0X53:
{//程序下载命令0x0053返回报文
if(fmFarUpDate->UpdataActive == true)
{//还处于升级状态,即没有点“返回”按钮
if(pBufParamsBack[15] != 0X05)
{
fmFarUpDate->TimeBeyond->Enabled = false;
if(fmFarUpDate->UpdataCompl == true)
{//程序报文下发完成
fmFarUpDate->TUpdata->Enabled = false;
fmFarUpDate->TimerDataComp->Enabled = true;
}
else
{
fmFarUpDate->UpdataCount += 1;
fmFarUpDate->TUpdata->Enabled = true; //其实没用 ,以防万一
if(fmFarUpDate->ProgressBar1->Visible)
{
fmFarUpDate->ProgressBar1->Position +=2;
}
}
}
}
break;
}
case 0X54:
{//发送结束报文0x0054返回确认
if(fmFarUpDate->UpdataActive == true)
{
if(pBufParamsBack[15] != 0X05)
{
fmFarUpDate->TimeBeyond->Enabled = false;
if(fmFarUpDate->UpdataCompl == true)
{//程序报文下发完成
fmFarUpDate->TimerDataComp->Enabled = false;
//关闭发送结束报文0x0054
int SMADDR = 0,LINENUM = 0,SUNUM = 0;
fmFarUpDate->TimeBeyond->Interval = TM_TIMEBEYOND;
fmFarUpDate->TimeBeyond->Enabled = true;
LINENUM = fmFarUpDate->LineNum->Text.ToInt();
SUNUM = fmFarUpDate->SuNum->Text.ToInt();
if(fmFarUpDate->ProgressBar1->Visible)
{
fmFarUpDate->ProgressBar1->Position = fmFarUpDate->ProgressBar1->Max/2;
}
fmFarUpDate->TimerWriteFalsh->Enabled = true;
//打开写FLASH命令定时器 0X55
//开始发送写FLASH报文0x0055
if(fmFarUpDate->TreeView1->Selected->Text != "信道控制器")
{
if(fmFarUpDate->TreeView1->Selected->Level == 0)
{//选择的是站
BYTE SendBuf[] = {0XEB,0X90,0X07,0X00,0X01,0X03,0X00,0X00,0X00,0X55,0X00,LINENUM,SUNUM,0X00,0X00};
int Length = sizeof(SendBuf);
//fmMain->ClientSocket->Socket->SendBuf(SendBuf,Length);
String StrTemp;
String Str = "";
for(int i = 0;i < Length; i++)
{
StrTemp = "";
StrTemp.sprintf("%X",SendBuf[i]);
if (StrLen(StrTemp.c_str()) == 1)
{
StrTemp = "0" + StrTemp;
}
Str += StrTemp + " ";
}
fmReceiveData->Memo2->Lines->Add("-> -> " + Str);
}
else if(fmFarUpDate->TreeView1->Selected->Level == 1)
{//选择的是模块 CID1 = 0XC4
SMADDR = fmFarUpDate->SmAddr->Text.ToInt();
BYTE SendBuf[] = {0XEB,0X90,0X07,0X00,0X01,0X03,0X00,0X00,0X00,0X55,0X00,LINENUM,SUNUM,SMADDR,0XC4};
int Length = sizeof(SendBuf);
if(ClientSocket->Active)
{
ClientSocket->Socket->SendBuf(SendBuf,Length);
SprintfData("-> -> ",SendBuf,Length);
//MessageShow("下发成功!");
}
else
{
MessageShow("网络连接失败,请先确认网络连接状态!");
}
}
}
else if(fmFarUpDate->TreeView1->Selected->Text == "信道控制器")
{//选择为信道控制器 CID1 = 0XC0 模块地址 = 站号
BYTE SendBuf[] = {0XEB,0X90,0X07,0X00,0X01,0X03,0X00,0X00,0X00,0X55,0X00,LINENUM,SUNUM,SUNUM,0XC0};
int Length = sizeof(SendBuf);
if(ClientSocket->Active)
{
ClientSocket->Socket->SendBuf(SendBuf,Length);
SprintfData("-> -> ",SendBuf,Length);
//MessageShow("下发成功!");
}
else
{
MessageShow("网络连接失败,请先确认网络连接状态!");
}
}
}
}
}
break;
}
case 0X55:
{//写FLASH命令0x0055完成之后反校数据
if(fmFarUpDate->UpdataActive == true)
{//还处于升级状态,即没有点“返回”按钮
fmFarUpDate->TimeBeyond->Enabled = false;
if(fmFarUpDate->UpdataCompl == true)
{
fmFarUpDate->TimerWriteFalsh->Enabled = false;
//关闭写FLASH定时器 0X55
if(fmFarUpDate->ProgressBar1->Visible)
{
fmFarUpDate->ProgressBar1->Position +=2;
}
fmFarUpDate->TimerFJ->Enabled = true;
//打开反校验确认定时器 0X57
if(RecLen_t > 20)
{
DataCount = pBufParamsBack[19]; //返回校验数据总包数
DataNum = pBufParamsBack[20]; //返回校验数据包序号
CheckSum = 0;
for(int i = 21 ; i < RecLen_t; i++)
{
CheckSum = CheckSum + pBufParamsBack[i];
}
}
else
{
DataCount = 0; //返回校验数据总包数
DataNum = 1; //返回校验数据包序号
}
fmFarUpDate->fp=fopen(fmFarUpDate->FileName->Text.c_str() ,"rb");
}
}
break;
}
case 0X56:
{//启动下载程序0x0056返回报文
if(CompleteFlag)
{
fmFarUpDate->TimeBeyond->Enabled = false;
fmFarUpDate->TimerStart->Enabled = false;
fmFarUpDate->TimerSendData->Enabled = true;
}
else
{
fmFarUpDate->ProgressBar1->Position = 0 ;
}
break;
}
case 0X57:
{//反校验确认
if(fmFarUpDate->UpdataActive == true)
{//还处于升级状态,即没有点“返回”按钮
fmFarUpDate->TimeBeyond->Enabled = false;
//关闭超时等待定时器
if(fmFarUpDate->UpdataCompl == true)
{
int SMADDR = 0,LINENUM = 0,SUNUM = 0;
LINENUM = fmFarUpDate->LineNum->Text.ToInt();
SUNUM = fmFarUpDate->SuNum->Text.ToInt();
if(fmFarUpDate->ProgressBar1->Visible)
{
fmFarUpDate->ProgressBar1->Position +=2;
}
CheckSum = 0;
DataCount = pBufParamsBack[19]; //返回校验数据总包数
DataNum = pBufParamsBack[20]; //返回校验数据包序号
for(int i = 21 ; i < RecLen_t ; i++)
{
CheckSum = CheckSum + pBufParamsBack[i];
}
CheckSum = CheckSum % 0XFFFF;
//fmFarUpDate->TimerFJ->Enabled = true;
if(pBufParamsBack[19] == pBufParamsBack[20])
{//反校验结束 目标码包总数 == 目标码包序号
if(fmFarUpDate->TreeView1->Selected->Text != "信道控制器")
{
if(fmFarUpDate->TreeView1->Selected->Level == 0)
{//选择的是站
BYTE SendBuf[] = {0XEB,0X90,0X08,0X00,0X01,0X03,0X00,0X00,0X00,0X57,0X00,LINENUM,SUNUM,0X00,0X00,0X00};
int Length = sizeof(SendBuf);
if(ClientSocket->Active)
{
ClientSocket->Socket->SendBuf(SendBuf,Length);
SprintfData("-> -> ",SendBuf,Length);
//MessageShow("下发成功!");
}
else
{
MessageShow("网络连接失败,请先确认网络连接状态!");
}
}
else if(fmFarUpDate->TreeView1->Selected->Level == 1)
{//选择的是模块 CID1 = 0XC4
SMADDR = fmFarUpDate->SmAddr->Text.ToInt();
BYTE SendBuf[] = {0XEB,0X90,0X08,0X00,0X01,0X03,0X00,0X00,0X00,0X57,0X00,LINENUM,SUNUM,SMADDR,0XC4,0X00};
int Length = sizeof(SendBuf);
if(ClientSocket->Active)
{
ClientSocket->Socket->SendBuf(SendBuf,Length);
SprintfData("-> -> ",SendBuf,Length);
//MessageShow("下发成功!");
}
else
{
MessageShow("网络连接失败,请先确认网络连接状态!");
}
}
}
else if(fmFarUpDate->TreeView1->Selected->Text == "信道控制器")
{//选择为信道控制器 CID1 = 0XC0 模块地址 = 站号
BYTE SendBuf[] = {0XEB,0X90,0X08,0X00,0X01,0X03,0X00,0X00,0X00,0X57,0X00,LINENUM,SUNUM,SUNUM,0XC0,0X00};
int Length = sizeof(SendBuf);
if(ClientSocket->Active)
{
ClientSocket->Socket->SendBuf(SendBuf,Length);
SprintfData("-> -> ",SendBuf,Length);
//MessageShow("下发成功!");
}
else
{
MessageShow("网络连接失败,请先确认网络连接状态!");
}
}
fmFarUpDate->TimeBeyond->Enabled = false;
if(fmFarUpDate->ProgressBar1->Visible)
{
fmFarUpDate->ProgressBar1->Position = fmFarUpDate->ProgressBar1->Max;
}
fmFarUpDate->EnabledFlag->Caption = 1; //升级页标记
fmFarUpDate->TimerFJ->Enabled = false;
fmFarUpDate->UpdataActive = false; //升级开始标记
fmFarUpDate->UpdataCompl = false; //升级结束标记
TfmOkCancel *okcancel = new TfmOkCancel(Application);
okcancel->LabelTitle->Caption = "提示信息...";
okcancel->lbMessage->Caption = "程序传送完毕,是否激活该页?";
okcancel->ShowModal();
fmFarUpDate->StateMessage->Visible = false;
fmFarUpDate->StateMessage->Caption = "";
if(okcancel->bOk)
{//下发启动程序0x0056
CompleteFlag = true;
fmFarUpDate->TimerStart->Enabled = true;
}
else
{
CompleteFlag = false;
fmFarUpDate->DisableState(false);
}
}
}
}
break;
}
///*case 0X58:
{//复位返回数据
if(pBufParamsBack[15] == 0X00)
{
if(pBufParamsBack[14] == 0X00)
{
TfmMessage *message = new TfmMessage(Application);
message->lbMessage->Caption = "主控复位成功!";
message->ShowModal();
}
else if (pBufParamsBack[14] == 0XC4)
{
TfmMessage *message = new TfmMessage(Application);
message->lbMessage->Caption = "键盘控制器复位成功!";
message->ShowModal();
}
else if (pBufParamsBack[14] == 0XC0)
{
TfmMessage *message = new TfmMessage(Application);
message->lbMessage->Caption = "信道控制器复位成功!";
message->ShowModal();
}
else if (pBufParamsBack[14] == 0XC8)
{
TfmMessage *message = new TfmMessage(Application);
message->lbMessage->Caption = "DXC复位成功!";
message->ShowModal();
}
else if (pBufParamsBack[14] == 0XC6)
{
TfmMessage *message = new TfmMessage(Application);
message->lbMessage->Caption = "G2MP复位成功!";
message->ShowModal();
}
else if (pBufParamsBack[14] == 0XD4)
{
TfmMessage *message = new TfmMessage(Application);
message->lbMessage->Caption = "GAC4复位成功!";
message->ShowModal();
}
else if (pBufParamsBack[14] == 0XC9)
{
TfmMessage *message = new TfmMessage(Application);
message->lbMessage->Caption = "V35复位成功!";
message->ShowModal();
}
else if (pBufParamsBack[14] == 0XC5)
{
TfmMessage *message = new TfmMessage(Application);
message->lbMessage->Caption = "GPA复位成功!";
message->ShowModal();
}
}
else
{
if(pBufParamsBack[14] == 0X00)
{
TfmMessage *message = new TfmMessage(Application);
message->lbMessage->Caption = "主控复位失败!";
message->ShowModal();
}
else if (pBufParamsBack[14] == 0XC4)
{
TfmMessage *message = new TfmMessage(Application);
message->lbMessage->Caption = "键盘控制器复位失败!";
message->ShowModal();
}
else if (pBufParamsBack[14] == 0XC0)
{
TfmMessage *message = new TfmMessage(Application);
message->lbMessage->Caption = "信道控制器复位失败!";
message->ShowModal();
}
else if (pBufParamsBack[14] == 0XC8)
{
TfmMessage *message = new TfmMessage(Application);
message->lbMessage->Caption = "DXC复位失败!";
message->ShowModal();
}
else if (pBufParamsBack[14] == 0XC6)
{
TfmMessage *message = new TfmMessage(Application);
message->lbMessage->Caption = "G2MP复位失败!";
message->ShowModal();
}
else if (pBufParamsBack[14] == 0XD4)
{
TfmMessage *message = new TfmMessage(Application);
message->lbMessage->Caption = "GAC4复位失败!";
message->ShowModal();
}
else if (pBufParamsBack[14] == 0XC9)
{
TfmMessage *message = new TfmMessage(Application);
message->lbMessage->Caption = "V35复位失败!";
message->ShowModal();
}
else if (pBufParamsBack[14] == 0XC5)
{
TfmMessage *message = new TfmMessage(Application);
message->lbMessage->Caption = "GPA复位失败!";
message->ShowModal();
}
}
break;
}
}*/
}
//---------------------------------------------------------------------------
void __fastcall TfmMain::QtMainParamsBack(BYTE *pRecBuf)
{
int LINENUM = 0,SUNUM = 0;
WORD DataLength = *(WORD *)(pRecBuf + 2) + 8;//返回报文的全长
if(DataLength < 20)
{
MessageShow("返回数据为空!");
return;
}
LINENUM = pBufParamsBack[11];//线路号
SUNUM = pBufParamsBack[12];//站号
if(pBufParamsBack[9] == 0XC5)
{//获取主控参数返回数据
if(pBufParamsBack[14] == 0XC0)
{
switch(pBufParamsBack[19])
{
case 6:
{//获取2M告警返回
if((pBufParamsBack[20] & 0X01) == 1)
{//A向本地告警,包括无码和失步,0输出正常,1输出告警
fmTwoMalarmBack->Label2->Caption = "告警(无码和失步)";
}
else if((pBufParamsBack[20] & 0X01) == 0)
{//A向本地正常
fmTwoMalarmBack->Label2->Caption = "正常";
}
if((pBufParamsBack[20] & 0X02) == 2)
{//A向对端告警,即对端有无码和失步,0输出正常,1输出告警
fmTwoMalarmBack->Label1->Caption = "告警(对端有无码和失步)";
}
else if((pBufParamsBack[20] & 0X02) == 0)
{//A向对端正常
fmTwoMalarmBack->Label1->Caption = "正常";
}
if((pBufParamsBack[20] & 0X04) == 4)
{//B向本地告警,包括无码和失步,0输出正常,1输出告警
fmTwoMalarmBack->Label4->Caption = "告警(无码和失步)";
}
else if((pBufParamsBack[20] & 0X04) == 0)
{//B向本地正常
fmTwoMalarmBack->Label4->Caption = "正常";
}
if((pBufParamsBack[20] & 0X08) == 8)
{//B向对端告警,即对端有无码和失步,0输出正常,1输出告警
fmTwoMalarmBack->Label3->Caption = "告警(对端有无码和失步)";
}
else if((pBufParamsBack[20] & 0X08) == 0)
{//B向对端正常
fmTwoMalarmBack->Label3->Caption = "正常";
}
fmTwoMalarmBack->ShowModal();
break;
}
case 7:
{//
if(E1TimeWorkFlag)
{//获取E1时钟工作方式返回
fmE1TimeWorkInfo->RadioGroup1->ItemIndex = pBufParamsBack[20];
fmE1TimeWorkInfo->ShowModal();
}
else if(!E1TimeWorkFlag)
{//获取时隙配置信息返回
BYTE DATAINFO[24] ;
memcpy(DATAINFO,pBufParamsBack+20,24);
DisposeGetInfoControl(DATAINFO);
GetInfoControlForm1->ShowModal();
}
break;
}
case 8:
{//视频切换信息
BYTE DATAINFO[12*4] ;
memcpy(DATAINFO,pBufParamsBack+20,48);
DisposeGetVedioSwitchStatusRByte(DATAINFO,SUNUM,LINENUM);
break;
}
case 9:
{//音频切换信息
BYTE DATAINFO[12*4] ;
memcpy(DATAINFO,pBufParamsBack+20,96);
DisposeGetAudioSwitchStatusRByte(DATAINFO,SUNUM,LINENUM);
break;
}
}
}
else
{
switch(pBufParamsBack[19])
{
/* TODO : 获取基本站名和镜头信息 01*/
case 0X01:
{//获取基本站名和镜头信息
String SuName = "",SmName = "";
int SmNum = 0,SmType = 0,AudioNum = 0,SwAddr = 0;
BYTE *sName = new BYTE[16];
memset(sName,0,16);
memcpy(sName, (char *)(pBufParamsBack+20), 16);
//memcpy(fmSuSmInfo->pBuff, (char *)(pRecBuf+37), TempCount - 36);
SuName.sprintf("%s",sName);//站名
int SmCount = pBufParamsBack[36];//镜头个数
fmSuSmInfo->SuName->Caption = SuName;
fmSuSmInfo->SmCount->Caption = SmCount;
SmNum = pBufParamsBack[37];//镜头编号
if(pBufParamsBack[38] == 255)
{//站长室镜头
SmType = pBufParamsBack[38];//镜头类型
fmSuSmInfo->EnableRec->Caption = "不录像";
fmSuSmInfo->Label10->Caption = "无";
fmSuSmInfo->Label12->Caption = "无";
fmSuSmInfo->Label20->Caption = "无返回";
}
else
{
SmType = pBufParamsBack[38] & 0X0F;//镜头类型
int ENABLEREC = pBufParamsBack[38] & 0X80;//该镜头是否有录像
if(ENABLEREC == 0X80)
{//有录像
fmSuSmInfo->EnableRec->Caption = "录像";
}
else if(ENABLEREC == 0)
{//不录像
fmSuSmInfo->EnableRec->Caption = "不录像";
}
if((pBufParamsBack[38] & 0X40) == 0X40)
{//有灯控
fmSuSmInfo->Label10->Caption = "有";
}
else if((pBufParamsBack[38] & 0X40) == 0)
{//无灯控
fmSuSmInfo->Label10->Caption = "无";
}
if((pBufParamsBack[38] & 0X20) == 0X20)
{//有预置点巡航
fmSuSmInfo->Label12->Caption = "有";
}
else if((pBufParamsBack[38] & 0X20) == 0)
{//无预置点巡航
fmSuSmInfo->Label12->Caption = "无";
}
if((pBufParamsBack[38] & 0X10) == 0X10)
{//无云台有返回
fmSuSmInfo->Label20->Caption = "无返回";
}
else if((pBufParamsBack[38] & 0X10) == 0)
{//有云台有返回
fmSuSmInfo->Label20->Caption = "有返回";
}
if((pBufParamsBack[38] & 0X08) == 0X08)
{//有雨刷
fmSuSmInfo->Label22->Caption = "有";
}
else if((pBufParamsBack[38] & 0X08) == 0)
{//无雨刷
fmSuSmInfo->Label22->Caption = "无";
}
}
switch(SmType)
{
case 0:
{
fmSuSmInfo->SmType->Caption = "固定镜头";
break;
}
case 1:
{
fmSuSmInfo->SmType->Caption = "云台镜头";
break;
}
case 2:
{
fmSuSmInfo->SmType->Caption = "快球镜头";
break;
}
case 255:
{
fmSuSmInfo->SmType->Caption = "会议镜头";
break;
}
}
memset(sName,0,16);
memcpy(sName, (char *)(pBufParamsBack+39), 16);
SmName.sprintf("%s",sName);//镜头名
AudioNum = pBufParamsBack[55];//音频编号
SwAddr = pBufParamsBack[56];//切换器地址
fmSuSmInfo->Label14->Caption = *(WORD *)(pBufParamsBack + 57);//
fmSuSmInfo->Label16->Caption = *(WORD *)(pBufParamsBack + 59);//
fmSuSmInfo->Label18->Caption = *(WORD *)(pBufParamsBack + 61);//
fmSuSmInfo->SmNum->Caption = SmNum;
fmSuSmInfo->SmName->Caption = SmName;
fmSuSmInfo->AudioNum->Caption = AudioNum;
fmSuSmInfo->SwAddr->Caption = SwAddr;
if(SmCount > 1)
{
fmSuSmInfo->SpeedButton7->Enabled = true;
fmSuSmInfo->SpeedButton6->Enabled = false;
fmSuSmInfo->SpeedButton8->Enabled = true;
fmSuSmInfo->SpeedButton9->Enabled = false;
}
fmSuSmInfo->ShowModal();
break;
}
/*case 0X01:
{//获取基本站名和镜头信息
String SuName = "",SmName = "";
int SmNum = 0,SmType = 0,AudioNum = 0,SwAddr = 0;
BYTE *sName = new BYTE[16];
memset(sName,0,16);
memcpy(sName, (char *)(pBufParamsBack+20), 16);
//memcpy(fmSuSmInfo->pBuff, (char *)(pRecBuf+37), TempCount - 36);
SuName.sprintf("%s",sName);//站名
int SmCount = pBufParamsBack[36];//镜头个数
fmSuSmInfo->SuName->Caption = SuName;
fmSuSmInfo->SmCount->Caption = SmCount;
SmNum = pBufParamsBack[37];//镜头编号
if(pBufParamsBack[38] == 255)
{//站长室镜头
SmType = pBufParamsBack[38];//镜头类型
fmSuSmInfo->EnableRec->Caption = "不录像";
}
else
{
SmType = pBufParamsBack[38] & 0X7F;//镜头类型
int ENABLEREC = pBufParamsBack[38] & 0X80;//该镜头是否有录像
if(ENABLEREC == 0X80)
{//有录像
fmSuSmInfo->EnableRec->Caption = "录像";
}
else if(ENABLEREC == 0)
{//不录像
fmSuSmInfo->EnableRec->Caption = "不录像";
}
}
switch(SmType)
{
case 0:
{
fmSuSmInfo->SmType->Caption = "固定镜头";
break;
}
case 1:
{
fmSuSmInfo->SmType->Caption = "云台镜头";
break;
}
case 2:
{
fmSuSmInfo->SmType->Caption = "快球镜头";
break;
}
case 255:
{
fmSuSmInfo->SmType->Caption = "会议镜头";
break;
}
}
memset(sName,0,16);
memcpy(sName, (char *)(pBufParamsBack+39), 16);
SmName.sprintf("%s",sName);//镜头名
AudioNum = pBufParamsBack[55];//音频编号
SwAddr = pBufParamsBack[56];//切换器地址
fmSuSmInfo->SmNum->Caption = SmNum;
fmSuSmInfo->SmName->Caption = SmName;
fmSuSmInfo->AudioNum->Caption = AudioNum;
fmSuSmInfo->SwAddr->Caption = SwAddr;
if(SmCount > 1)
{
fmSuSmInfo->SpeedButton7->Enabled = true;
fmSuSmInfo->SpeedButton6->Enabled = false;
fmSuSmInfo->SpeedButton8->Enabled = true;
fmSuSmInfo->SpeedButton9->Enabled = false;
}
fmSuSmInfo->ShowModal();
break;
}*/
/* TODO : 获取IP地址信息 02*/
case 0X02:
{//获取IP地址信息
int VideoServerCount = 0,AudioServerCount = 0,TransServerCount = 0,/
VideoServerNum = 0,AvType = 0,DvrLx = 0,DvrPlace = 0;
int NumTemp = 0;
VideoServerCount = pBufParamsBack[20]; //视频服务器的个数
VideoServerNum = pBufParamsBack[21]; //视频服务器编号
AvType = pBufParamsBack[22] & 0X0F; //AV板类型(0:两路;1:四路)
switch(AvType)
{
case 0:
{
fmQtServerIpIfo->AvType->Caption = "两路";
break;
}
case 1:
{
fmQtServerIpIfo->AvType->Caption = "四路";
break;
}
}
DvrPlace = pBufParamsBack[22] / 16;//DVR板位置 0 -右侧 1-左侧
if(DvrPlace == 0)
{
fmQtServerIpIfo->Label14->Visible = false;
fmQtServerIpIfo->Label16->Visible = false;
fmQtServerIpIfo->Label17->Visible = false;
fmQtServerIpIfo->Label18->Visible = false;
fmQtServerIpIfo->Label15->Visible = true;
fmQtServerIpIfo->Label21->Visible = true;
fmQtServerIpIfo->Label20->Visible = true;
fmQtServerIpIfo->Label19->Visible = true;
fmQtServerIpIfo->DvrPlace->Caption = "右侧";
}
else if(DvrPlace == 1)
{
fmQtServerIpIfo->Label14->Visible = true;
fmQtServerIpIfo->Label16->Visible = true;
fmQtServerIpIfo->Label17->Visible = true;
fmQtServerIpIfo->Label18->Visible = true;
fmQtServerIpIfo->Label15->Visible = false;
fmQtServerIpIfo->Label21->Visible = false;
fmQtServerIpIfo->Label20->Visible = false;
fmQtServerIpIfo->Label19->Visible = false;
fmQtServerIpIfo->DvrPlace->Caption = "左侧";
}
DvrLx = pBufParamsBack[23]; //DVR是否带录像功能 0:不带;1:带
switch(DvrLx)
{
case 0:
{
fmQtServerIpIfo->DvrLx->Caption = "不带";
break;
}
case 1:
{
fmQtServerIpIfo->DvrLx->Caption = "带录像";
break;
}
}
String FalseVideoServerIp = UniteIp(pBufParamsBack+24);
String TrueVideoServerIp = UniteIp(pBufParamsBack+28);
fmQtServerIpIfo->VideoCount->Caption = VideoServerCount;
fmQtServerIpIfo->VideoNum->Caption = VideoServerNum;
fmQtServerIpIfo->FalseVideoServerIp->Caption = FalseVideoServerIp;
fmQtServerIpIfo->TrueVideoServerIp->Caption = TrueVideoServerIp;
if(VideoServerCount > 1)
{
fmQtServerIpIfo->SpeedButton7->Enabled = true;
fmQtServerIpIfo->SpeedButton6->Enabled = false;
fmQtServerIpIfo->SpeedButton8->Enabled = true;
fmQtServerIpIfo->SpeedButton9->Enabled = false;
}
NumTemp = 20 + VideoServerCount * 11;
AudioServerCount = pBufParamsBack[NumTemp + 1]; //音频服务器的个数
fmQtServerIpIfo->AudioCount->Caption = AudioServerCount;
fmQtServerIpIfo->AudioNum->Caption = pBufParamsBack[NumTemp + 2]; //音频服务器编号
fmQtServerIpIfo->AudioIp->Caption = UniteIp(pBufParamsBack+NumTemp + 3);
if(AudioServerCount > 1)
{
fmQtServerIpIfo->SpeedButton2->Enabled = true;
fmQtServerIpIfo->SpeedButton1->Enabled = false;
fmQtServerIpIfo->SpeedButton3->Enabled = true;
fmQtServerIpIfo->SpeedButton4->Enabled = false;
}
NumTemp += AudioServerCount * 5 + 1;
TransServerCount = pBufParamsBack[NumTemp + 1]; //转发服务器的个数
fmQtServerIpIfo->TransCount->Caption = TransServerCount;
fmQtServerIpIfo->TransNum->Caption = pBufParamsBack[NumTemp + 2]; //转发服务器编号
fmQtServerIpIfo->TransIp->Caption = UniteIp(pBufParamsBack+NumTemp + 3);
if(TransServerCount > 1)
{
fmQtServerIpIfo->SpeedButton10->Enabled = true;
fmQtServerIpIfo->SpeedButton5->Enabled = false;
fmQtServerIpIfo->SpeedButton11->Enabled = true;
fmQtServerIpIfo->SpeedButton12->Enabled = false;
}
NumTemp += TransServerCount * 5 + 1;
fmQtServerIpIfo->StationIp->Caption = UniteIp(pBufParamsBack+NumTemp + 1);
fmQtServerIpIfo->MainIp->Caption = UniteIp(pBufParamsBack+NumTemp + 1 + 4);
fmQtServerIpIfo->ShowModal();
break;
}
/* TODO : 获取模块地址信息03 */
case 0X03:
{//获取模块地址信息
int TempCount = 0;
int AudioSwCount = 0,VideoSwCount = 0,YtSwCount = 0,KqSwCount = 0;
fmSmAddrInfo->MainAddr->Caption = pBufParamsBack[20];//主控模块地址 20
fmSmAddrInfo->ControlAddr->Caption = pBufParamsBack[21];//信道控制模块地址 21
AudioSwCount = pBufParamsBack[22];//音频切换器的个数 22
fmSmAddrInfo->AudioSwCount->Caption = AudioSwCount;
fmSmAddrInfo->AudioSwAddr->Caption = pBufParamsBack[23];//音频切换器1的模块地址 23
if(AudioSwCount > 1)
{
fmSmAddrInfo->SpeedButton3->Enabled = true;
fmSmAddrInfo->SpeedButton2->Enabled = false;
fmSmAddrInfo->SpeedButton4->Enabled = true;
fmSmAddrInfo->SpeedButton1->Enabled = false;
}
TempCount = 22 + AudioSwCount * 1 + 1;
VideoSwCount = pBufParamsBack[TempCount];//视频切换器的个数 24
fmSmAddrInfo->VideoCount->Caption = VideoSwCount;
fmSmAddrInfo->VideoAddr->Caption = pBufParamsBack[TempCount + 1];//视频切换器1的模块地址 25
if(VideoSwCount > 1)
{
fmSmAddrInfo->SpeedButton7->Enabled = true;
fmSmAddrInfo->SpeedButton6->Enabled = false;
fmSmAddrInfo->SpeedButton8->Enabled = true;
fmSmAddrInfo->SpeedButton5->Enabled = false;
}
TempCount += VideoSwCount * 1 + 1;
YtSwCount = pBufParamsBack[TempCount];//云台控制器的个数 26
fmSmAddrInfo->YtCount->Caption = YtSwCount;
fmSmAddrInfo->YtAddr->Caption = pBufParamsBack[TempCount + 1];//云台控制器1的模块地址 27
if(YtSwCount > 1)
{
fmSmAddrInfo->SpeedButton11->Enabled = true;
fmSmAddrInfo->SpeedButton10->Enabled = false;
fmSmAddrInfo->SpeedButton12->Enabled = true;
fmSmAddrInfo->SpeedButton9->Enabled = false;
}
TempCount += YtSwCount * 1 + 1;
KqSwCount = pBufParamsBack[TempCount];//快球控制器的个数 29
fmSmAddrInfo->KqCount->Caption = KqSwCount;
fmSmAddrInfo->KqAddr->Caption = pBufParamsBack[TempCount + 1];//快球控制器1的模块地址 30
if(KqSwCount > 1)
{
fmSmAddrInfo->SpeedButton15->Enabled = true;
fmSmAddrInfo->SpeedButton14->Enabled = false;
fmSmAddrInfo->SpeedButton16->Enabled = true;
fmSmAddrInfo->SpeedButton13->Enabled = false;
}
fmSmAddrInfo->ShowModal();
break;
}
/* TODO : 获取视频切换方面的参数信息04 */
case 0X04:
{//获取视频切换方面的参数信息返回数据
int SmCount = 0;
SmCount = pBufParamsBack[20];//镜头个数
fmGetVideoSwInfo->SmCount->Caption = pBufParamsBack[20];//镜头个数
if(SmCount > 0)
{
fmGetVideoSwInfo->SpeedButton3->Enabled = true;
fmGetVideoSwInfo->SpeedButton2->Enabled = false;
fmGetVideoSwInfo->SpeedButton4->Enabled = true;
fmGetVideoSwInfo->SpeedButton1->Enabled = false;
}
asSql = "select * from CT_SM where SUNUM=" + IntToStr(SUNUM)/
+ " AND " + "SMNUM=" + IntToStr(pBufParamsBack[21]);
ADOSelect->Close();
ADOSelect->SQL->Clear();
ADOSelect->SQL->Add(asSql);
ADOSelect->Open();
fmGetVideoSwInfo->SmName->Caption = ADOSelect->FieldByName("SMNAME")->AsString;//镜头名称
fmGetVideoSwInfo->SmNum->Caption = pBufParamsBack[21];//镜头编号
fmGetVideoSwInfo->SuName->Caption = NodeText;//站名
fmGetVideoSwInfo->SuNum->Caption = SUNUM;//
fmGetVideoSwInfo->SwInPort->Caption = pBufParamsBack[22];//
if(pBufParamsBack[23] == 0)
{//0-表示没有级联
fmGetVideoSwInfo->ClassType->Caption = "无级联";
}
else if(pBufParamsBack[23] == 1)
{//1-表示有级联
fmGetVideoSwInfo->ClassType->Caption = "有级联";
}
fmGetVideoSwInfo->ClassSwAddr->Caption = pBufParamsBack[24];//级联切换器地址
int TwoClassType = 20 + pBufParamsBack[20] * 4 + 1;//二级级联类型
if(pBufParamsBack[(TwoClassType + 1)] > 0) //级联切换器端口个数M
{//有二级切换
fmGetVideoSwInfo->ClassSwCount->Caption = pBufParamsBack[(TwoClassType + 1)];//级联切换器端口个数M
fmGetVideoSwInfo->DvrChannels->Caption = pBufParamsBack[(TwoClassType + 2)];//DVR通道号
fmGetVideoSwInfo->OneSwInPort->Caption = pBufParamsBack[(TwoClassType + 3)];//一级切换器输入端口
fmGetVideoSwInfo->TwoClassSwOutPort->Caption = pBufParamsBack[(TwoClassType + 4)];//一级切换器输入端口对应的二级级联切换器输出端口
fmGetVideoSwInfo->TwoClassSwAddr->Caption = pBufParamsBack[(TwoClassType + 5)];//一级切换器输入端口对应的二级级联切换器地址
fmGetVideoSwInfo->SpeedButton7->Enabled = true;
fmGetVideoSwInfo->SpeedButton6->Enabled = false;
fmGetVideoSwInfo->SpeedButton8->Enabled = true;
fmGetVideoSwInfo->SpeedButton5->Enabled = false;
}
else if(pBufParamsBack[(TwoClassType + 1)] == 0)
{//没有二级切换
fmGetVideoSwInfo->ClassSwCount->Caption = 0;
fmGetVideoSwInfo->DvrChannels->Caption = 0;
fmGetVideoSwInfo->OneSwInPort->Caption = 0;
fmGetVideoSwInfo->TwoClassSwOutPort->Caption = 0;
fmGetVideoSwInfo->TwoClassSwAddr->Caption = 0;
fmGetVideoSwInfo->SpeedButton7->Enabled = false;
fmGetVideoSwInfo->SpeedButton6->Enabled = false;
fmGetVideoSwInfo->SpeedButton8->Enabled = false;
fmGetVideoSwInfo->SpeedButton5->Enabled = false;
}
fmGetVideoSwInfo->ShowModal();
break;
}
/* TODO : 获取网络控制方面的参数信息05 */
case 0X05:
{//获取网络控制方面的参数信息
fmGetNetControl->Label12->Caption = UniteIp(pBufParamsBack+20);//视频服务器的组播地址
fmGetNetControl->Label13->Caption = *(WORD *)(pBufParamsBack + 24);//视频服务器的组播起始端口
fmGetNetControl->Label14->Caption = pBufParamsBack[26];//视频服务器的组播端口个数
fmGetNetControl->Label15->Caption = UniteIp(pBufParamsBack+27);//音频服务器的组播地址
fmGetNetControl->Label16->Caption = *(WORD *)(pBufParamsBack + 31);//音频服务器的组播起始端口
fmGetNetControl->Label17->Caption = pBufParamsBack[33];//音频服务器的组播端口个数
fmGetNetControl->Label18->Caption = UniteIp(pBufParamsBack+34);//转发服务器的组播地址
fmGetNetControl->Label19->Caption = *(WORD *)(pBufParamsBack + 38);//转发服务器的组播起始端口
fmGetNetControl->Label21->Caption = pBufParamsBack[40];//转发服务器的组播端口个数
fmGetNetControl->Label22->Caption = UniteIp(pBufParamsBack+41);//视讯会议终端的组播地址
fmGetNetControl->Label23->Caption = *(WORD *)(pBufParamsBack + 45);//视讯会议终端的组播起始端口
fmGetNetControl->Label24->Caption = pBufParamsBack[47];//视讯会议终端的组播端口个数
fmGetNetControl->Label30->Caption = UniteIp(pBufParamsBack+48);//视讯会议终端的音频组播地址
fmGetNetControl->Label29->Caption = *(WORD *)(pBufParamsBack + 52);//视讯会议终端的音频组播起始端口
fmGetNetControl->Label28->Caption = pBufParamsBack[54];//视讯会议终端的音频组播端口个数
fmGetNetControl->ShowModal();
break;
}
case 0X0A:
{
WORD RELEASETIME = *(WORD *)(pBufParamsBack + 20);
int IfVideo = 0,OutPutPort = 0;
IfVideo = pBufParamsBack[22];
OutPutPort = pBufParamsBack[23];
//MessageShow(NodeText + "当前前台释放权限时间为:" + IntToStr(RELEASETIME) + "秒");
fmControlBackInfo->Label1->Caption = NodeText + "当前前台释放权限时间为:" + IntToStr(RELEASETIME) + "秒";
if(IfVideo == 1)
{
fmControlBackInfo->Label2->Caption = "视讯会议模拟终端:模拟图像";
}
else
{
fmControlBackInfo->Label2->Caption = "视讯会议模拟终端:数字图像";
}
fmControlBackInfo->Label3->Caption = "模拟图像输出端口(0~255):" + IntToStr(OutPutPort);
if(pBufParamsBack[24] == 1)
{
fmControlBackInfo->Label4->Caption = "视讯会议终端声音:模拟声音";
}
else
{
fmControlBackInfo->Label4->Caption = "视讯会议终端声音:数字声音";
}
fmControlBackInfo->Label5->Caption = "模拟声音输出端口(0~11):" + IntToStr(pBufParamsBack[25]);
fmControlBackInfo->ShowModal();
break;
}
case 0X0B:
{
int VideoServerCount = 0,AudioServerCount = 0,TransServerCount = 0,/
VideoServerNum = 0,AvType = 0,DvrLx = 0,DvrPlace = 0;
int NumTemp = 0;
int SINGLEPORT = 0,SINGLEPORTNUM = 0,SM1 = 0,SM2 = 0,SM3 = 0,SM4 = 0;
int SMCOUNT = 0;
int LINENUM = 0,SUNUM = 0;
String asSql = "";
LINENUM = pBufParamsBack[11];
SUNUM = pBufParamsBack[12];
VideoServerCount = pBufParamsBack[20]; //视频服务器的个数
VideoServerNum = pBufParamsBack[21]; //视频服务器编号
AvType = pBufParamsBack[22] & 0X01; //AV板类型(0:两路;1:四路)
switch(AvType)
{
case 0:
{
fmExtendDvrBack->AvType->Caption = "四路";
break;
}
case 1:
{
fmExtendDvrBack->AvType->Caption = "两路";
break;
}
}
DvrLx = (AvType & 0X02) / 2; //DVR是否带录像功能 0:不带;1:带
switch(DvrLx)
{
case 0:
{
fmExtendDvrBack->DvrLx->Caption = "不录像";
break;
}
case 1:
{
fmExtendDvrBack->DvrLx->Caption = "带录像";
break;
}
}
String FalseVideoServerIp = UniteIp(pBufParamsBack+23);
String TrueVideoServerIp = UniteIp(pBufParamsBack+27);
fmExtendDvrBack->VideoCount->Caption = VideoServerCount;
fmExtendDvrBack->VideoNum->Caption = VideoServerNum;
fmExtendDvrBack->FalseVideoServerIp->Caption = FalseVideoServerIp;
fmExtendDvrBack->TrueVideoServerIp->Caption = TrueVideoServerIp;
BYTE *SINGLEPORTTempBuf = new BYTE[2];
memset(SINGLEPORTTempBuf, 0, 2);
SINGLEPORTTempBuf[0] = pBufParamsBack[32];
SINGLEPORTTempBuf[1] = pBufParamsBack[31];
SINGLEPORT = *(WORD *)(SINGLEPORTTempBuf);//
SINGLEPORTNUM = pBufParamsBack[33]; //
SMCOUNT = pBufParamsBack[34]; //
SM1 = pBufParamsBack[35]; //
SM2 = pBufParamsBack[36]; //
SM3 = pBufParamsBack[37]; //
SM4 = pBufParamsBack[38]; //
fmExtendDvrBack->SinglePort->Caption = SINGLEPORT;
fmExtendDvrBack->SinglePortNum->Caption = SINGLEPORTNUM;
fmExtendDvrBack->SmCount->Caption = SMCOUNT;
asSql = "select * from CT_SM where SUNUM=" + IntToStr(SUNUM) + " AND " + "SMNUM=" + IntToStr(SM1);
fmMain->ADOSelect->Close();
fmMain->ADOSelect->SQL->Clear();
fmMain->ADOSelect->SQL->Add(asSql);
fmMain->ADOSelect->Open();
int num = fmMain->ADOSelect->RecordCount;
if(num > 0)
{
fmExtendDvrBack->Sm1->Caption = fmMain->ADOSelect->FieldByName("SMNAME")->AsString;
}
else
{
fmExtendDvrBack->Sm1->Caption = "";
}
asSql = "select * from CT_SM where SUNUM=" + IntToStr(SUNUM) + " AND " + "SMNUM=" + IntToStr(SM2);
fmMain->ADOSelect->Close();
fmMain->ADOSelect->SQL->Clear();
fmMain->ADOSelect->SQL->Add(asSql);
fmMain->ADOSelect->Open();
num = fmMain->ADOSelect->RecordCount;
if(num > 0)
{
fmExtendDvrBack->Sm2->Caption = fmMain->ADOSelect->FieldByName("SMNAME")->AsString;
}
else
{
fmExtendDvrBack->Sm2->Caption = "";
}
asSql = "select * from CT_SM where SUNUM=" + IntToStr(SUNUM) + " AND " + "SMNUM=" + IntToStr(SM3);
fmMain->ADOSelect->Close();
fmMain->ADOSelect->SQL->Clear();
fmMain->ADOSelect->SQL->Add(asSql);
fmMain->ADOSelect->Open();
num = fmMain->ADOSelect->RecordCount;
if(num > 0)
{
fmExtendDvrBack->Sm3->Caption = fmMain->ADOSelect->FieldByName("SMNAME")->AsString;
}
else
{
fmExtendDvrBack->Sm3->Caption = "";
}
asSql = "select * from CT_SM where SUNUM=" + IntToStr(SUNUM) + " AND " + "SMNUM=" + IntToStr(SM4);
fmMain->ADOSelect->Close();
fmMain->ADOSelect->SQL->Clear();
fmMain->ADOSelect->SQL->Add(asSql);
fmMain->ADOSelect->Open();
num = fmMain->ADOSelect->RecordCount;
if(num > 0)
{
fmExtendDvrBack->Sm4->Caption = fmMain->ADOSelect->FieldByName("SMNAME")->AsString;
}
else
{
fmExtendDvrBack->Sm4->Caption = "";
}
if(VideoServerCount > 1)
{
fmExtendDvrBack->SpeedButton7->Enabled = true;
fmExtendDvrBack->SpeedButton6->Enabled = false;
fmExtendDvrBack->SpeedButton8->Enabled = true;
fmExtendDvrBack->SpeedButton9->Enabled = false;
}
fmExtendDvrBack->ShowModal();
break;
}
case 0X0C:
{
fmExtendAudioBack->SmCount->Caption = pBufParamsBack[20];//镜头个数
fmExtendAudioBack->SmNum->Caption = pBufParamsBack[21];//镜头号
if(pBufParamsBack[22] == 0)//声音是否级联
{
fmExtendAudioBack->Ev_jilian->Caption = "不级联";
}
else
{
fmExtendAudioBack->Ev_jilian->Caption = "级联";
}
fmExtendAudioBack->Ev_mainselfinport->Caption = pBufParamsBack[23];//主控本身的声音输入口
fmExtendAudioBack->Ev_swaddr->Caption = pBufParamsBack[24];//级联音频切换器的地址
fmExtendAudioBack->Ev_swoutport->Caption = pBufParamsBack[25];//级联音频切换器的输出口
fmExtendAudioBack->Ev_swinport->Caption = pBufParamsBack[26];//级联音频切换器的输入口
if(pBufParamsBack[20] > 1)
{
fmExtendAudioBack->SpeedButton7->Enabled = true;
fmExtendAudioBack->SpeedButton6->Enabled = false;
fmExtendAudioBack->SpeedButton8->Enabled = true;
fmExtendAudioBack->SpeedButton9->Enabled = false;
}
fmExtendAudioBack->ShowModal();
break;
}
case 0X0D:
{
fmExtendVideoBack->SmCount->Caption = pBufParamsBack[20];//镜头个数
fmExtendVideoBack->SmNum->Caption = pBufParamsBack[21];//镜头号
fmExtendVideoBack->Vs_addr->Caption = pBufParamsBack[22];//视频切换器的地址
fmExtendVideoBack->Vs_inport->Caption = pBufParamsBack[23];//视频切换器的输入口
fmExtendVideoBack->Vs_outport->Caption = pBufParamsBack[24];//视频切换器的输出口
if(pBufParamsBack[20] > 1)
{
fmExtendVideoBack->SpeedButton7->Enabled = true;
fmExtendVideoBack->SpeedButton6->Enabled = false;
fmExtendVideoBack->SpeedButton8->Enabled = true;
fmExtendVideoBack->SpeedButton9->Enabled = false;
}
fmExtendVideoBack->ShowModal();
break;
}
}
}
}
}
//---------------------------------------------------------------------------
void __fastcall TfmMain::G2MPDxcClick(TObject *Sender)
{//获取G2MP时隙参数
int SMADDR,TYPE;
String SmName;
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;
TYPE = 0X00;
G2mpGetParamsFlag = true;
BYTE SendBuf[] = {0XEB,0X90,0X06,0X00,0X01,0X02,0X00,0X00,0X00,0X77,0X00,0XC6,SMADDR,TYPE};
int Length = sizeof(SendBuf);
if(ClientSocket->Active)
{
ClientSocket->Socket->SendBuf(SendBuf,Length);
SprintfData("-> -> 获取G2MP时隙参数命令:",SendBuf,Length);
}
else
{
MessageShow("网络连接失败,请先确认网络连接状态!");
}
}
//---------------------------------------------------------------------------
void __fastcall TfmMain::G2MPE1Click(TObject *Sender)
{//获取G2MPE1时钟参数
/*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[0] = 0X02;//
MakePack(DataInfo,1,0X04,SMADDR,0XC6,0X47,LINENUM,SUNUM);*/
int SMADDR,TYPE;
String SmName;
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;
TYPE = 0X02;
BYTE SendBuf[] = {0XEB,0X90,0X06,0X00,0X01,0X02,0X00,0X00,0X00,0X77,0X00,0XC6,SMADDR,TYPE};
int Length = sizeof(SendBuf);
if(ClientSocket->Active)
{
ClientSocket->Socket->SendBuf(SendBuf,Length);
SprintfData("-> -> 获取G2MPE1时钟参数命令:",SendBuf,Length);
}
else
{
MessageShow("网络连接失败,请先确认网络连接状态!");
}
}
//---------------------------------------------------------------------------
void __fastcall TfmMain::DXCN7Click(TObject *Sender)
{//DXC获取时钟配置
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,0X42};
int Length = sizeof(SendBuf);
if(ClientSocket->Active)
{
ClientSocket->Socket->SendBuf(SendBuf,Length);
SprintfData("-> -> 获取DXC时钟配置命令:",SendBuf,Length);
}
else
{
MessageShow("网络连接失败,请先确认网络连接状态!");
}
}
//---------------------------------------------------------------------------
void __fastcall TfmMain::DxcBack(BYTE * pRecBuf)
{
int DXCIN,TSINBEGIN,TempData;
int DXCMLNUM;//DXC 码流号
int DXCSXNUM;//DXC 时隙号
switch(pRecBuf[9])
{
case 0x79:
{//DXC 获取参数返回报文
if(pRecBuf[12] == 0xff)
{
TfmMessage *message = new TfmMessage(Application);
message->lbMessage->Caption = "获取配置失败!";
message->ShowModal();
}
else
{
imgMain->Canvas->Brush->Color = clBlue;
imgMain->Canvas->Font->Color = clWhite;
switch(pRecBuf[16])
{
case 0x41:
{//获取接续配置数据返回
int TempAdd = 0;
for(DXCMLNUM = 0 ; DXCMLNUM < 16 ; DXCMLNUM++)
{
for(DXCSXNUM = 0 ; DXCSXNUM < 32 ; DXCSXNUM++)
{
TempData = pRecBuf[TempAdd + 17] & 0X80 ;
if(TempData == 128)
{//交换方式
DXCIN = pRecBuf[TempAdd + 17] & 0X0F;
TSINBEGIN = pRecBuf[TempAdd + 18] & 0X1F;
imgMain->Canvas->FillRect(TRect(117+1+DXCSXNUM*20,62+1+DXCMLNUM*32,135-0+DXCSXNUM*20,76-0+DXCMLNUM*32));
imgMain->Canvas->TextOutA(117+2+DXCSXNUM*20,62+1+DXCMLNUM*32,IntToStr(DXCIN));
imgMain->Canvas->FillRect(TRect(117+1+DXCSXNUM*20,78+1+DXCMLNUM*32,135-0+DXCSXNUM*20,92-0+DXCMLNUM*32));
imgMain->Canvas->TextOutA(117+2+DXCSXNUM*20,78+1+DXCMLNUM*32,IntToStr(TSINBEGIN));
}
else
{//消息方式
imgMain->Canvas->FillRect(TRect(117+1+DXCSXNUM*20,62+1+DXCMLNUM*32,135-0+DXCSXNUM*20,76-0+DXCMLNUM*32));
imgMain->Canvas->TextOutA(117+2+DXCSXNUM*20,62+1+DXCMLNUM*32,IntToStr(55));
imgMain->Canvas->FillRect(TRect(117+1+DXCSXNUM*20,78+1+DXCMLNUM*32,135-0+DXCSXNUM*20,92-0+DXCMLNUM*32));
imgMain->Canvas->TextOutA(117+2+DXCSXNUM*20,78+1+DXCMLNUM*32,IntToStr(55));
}
TempAdd = TempAdd + 2;
}
}
break;
}
case 0x42:
{//获取时钟选择配置数据返回
if(pRecBuf[17] == 0X10)
{
//MessageShow("DXC时钟:主时钟");
fmDxcSetR->Label2->Caption = "主时钟";
fmDxcSetR->GroupBox1->Enabled = false;
fmDxcSetR->ShowModal();
}
else
{
int DXCML = pRecBuf[17];
//MessageShow("DXC时钟:" + IntToStr(DXCML) + " 码流时钟");
fmDxcSetR->Label2->Caption = IntToStr(DXCML) + " 码流时钟";
fmDxcSetR->GroupBox1->Enabled = false;
fmDxcSetR->ShowModal();
}
break;
}
case 0x43:
{//获取码流方式配置数据返回
String asSql = "CREATE TABLE `DXCTEMP` (`DXCNUM` int(10) NOT NULL default '0',/
`WORKMODE` int(10) NOT NULL default '0', PRIMARY KEY (`DXCNUM`,`WORKMODE`))";
CreateTable(asSql);
for(int i = 0 ; i < 16 ; i++)
{
AnsiString asSql = "insert into DXCTEMP values("+IntToStr(i) +","+IntToStr(pRecBuf[17 + i])+")";
ADOUI->Close();
ADOUI->SQL->Clear();
ADOUI->SQL->Add(asSql);
ADOUI->ExecSQL();
}
fmDxcSetR->GroupBox1->Enabled = true;
fmDxcSetR->ShowModal();
break;
}
}
}
break;
}
case 0x7A:
{//查询DXC码流工作状态返回数据
if(pRecBuf[12] == 0xff)
{
TfmMessage *message = new TfmMessage(Application);
message->lbMessage->Caption = "获取配置失败!";
message->ShowModal();
}
else
{
imgMain->Canvas->Brush->Color = clRed;
imgMain->Canvas->Font->Color = clWhite;
for(DXCMLNUM = 0;DXCMLNUM < 16;DXCMLNUM++)
{
switch(pRecBuf[DXCMLNUM + 16])
{//imgMain->Canvas->Ellipse(37+1,62+1,37-2+20,62-2+32);
case 1:
{// 无码
imgMain->Canvas->Ellipse(37+1,62+1+DXCMLNUM*32,37-2+20,94-2+DXCMLNUM*32);
break;
}
case 2:
{// 失步
imgMain->Canvas->Ellipse(57+1,62+1+DXCMLNUM*32,57-2+20,94-2+DXCMLNUM*32);
break;
}
case 3:
{// 对告
imgMain->Canvas->Ellipse(77+1,62+1+DXCMLNUM*32,77-2+20,94-2+DXCMLNUM*32);
break;
}
case 4:
{// 全1
imgMain->Canvas->Ellipse(97+1,62+1+DXCMLNUM*32,97-2+20,94-2+DXCMLNUM*32);
break;
}
}
}
}
break;
}
}
}
//---------------------------------------------------------------------------
//在数据库中创建一个新表
bool TfmMain::CreateTable(String AsSql)
{
ADOSelect->Close();
ADOSelect->SQL->Clear();
ADOSelect->SQL->Add(AsSql);
try
{
ADOSelect->ExecSQL();
return true;
}
catch(...)
{
return false;
}
}
//---------------------------------------------------------------------------
void __fastcall TfmMain::DeleteTable(String AsSql)
{
ADOSelect->Close();
ADOSelect->SQL->Clear();
ADOSelect->SQL->Add(AsSql);
try
{
ADOSelect->ExecSQL();
}
catch(...)
{
return ;
}
}
//---------------------------------------------------------------------------
void __fastcall TfmMain::N10Click(TObject *Sender)
{//获取码流方式配置
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,0X43};
int Length = sizeof(SendBuf);
if(ClientSocket->Active)
{
ClientSocket->Socket->SendBuf(SendBuf,Length);
SprintfData("-> -> 获取DXC码流方式配置命令:",SendBuf,Length);
}
else
{
MessageShow("网络连接失败,请先确认网络连接状态!");
}
}
//---------------------------------------------------------------------------
void __fastcall TfmMain::N11Click(TObject *Sender)
{//查询码流工作状态
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,0X04,0X00,0X01,0X02,0X00,0X00,0X00,0X7A,0X00,SMADDR};
int Length = sizeof(SendBuf);
if(ClientSocket->Active)
{
ClientSocket->Socket->SendBuf(SendBuf,Length);
SprintfData("-> -> 查询DXC码流工作状态命令:",SendBuf,Length);
}
else
{
MessageShow("网络连接失败,请先确认网络连接状态!");
}
}
//---------------------------------------------------------------------------
void __fastcall TfmMain::DevBack(BYTE *pRecBuf)
{
switch(pRecBuf[9])
{
case 0X77:
{// 获取后台设备参数 返回数据
switch(pRecBuf[11])
{
case 0XC9:
{// V35 返回数据
if(pRecBuf[13] == 0xff)
{//获取失败
switch(pRecBuf[17])
{
case 0X00:
{//获取E1时钟参数失败
TfmMessage *message = new TfmMessage(Application);
message->lbMessage->Caption = "获取E1时钟参数失败!";
message->ShowModal();
break;
}
case 0X01:
{//获取E1码流方式参数失败
TfmMessage *message = new TfmMessage(Application);
message->lbMessage->Caption = "获取E1码流方式参数失败!";
message->ShowModal();
break;
}
case 0X02:
{//获取子速率端口参数失败
TfmMessage *message = new TfmMessage(Application);
message->lbMessage->Caption = "获取子速率端口参数失败!";
message->ShowModal();
break;
}
default:
{
TfmMessage *message = new TfmMessage(Application);
message->lbMessage->Caption = "获取参数失败!";
message->ShowModal();
}
}
}
else
{
switch(pRecBuf[17])
{
case 0X00:
{//获取E1时钟参数返回数据
switch(pRecBuf[18])
{
case 0X02:
{// 主时钟
RadioGroup10->ItemIndex = 2;
break;
}
case 0X00:
{//从A向时钟
RadioGroup10->ItemIndex = 0;
break;
}
case 0X01:
{//从B向时钟
RadioGroup10->ItemIndex = 1;
break;
}
}
break;
}
case 0X01:
{//获取E1码流方式参数返回数据
if((pRecBuf[18] & 0X20) == 0X00)
{
RadioGroup13->ItemIndex = 0;
}
else if((pRecBuf[18] & 0X20) == 0X20)
{
RadioGroup13->ItemIndex = 1;
}
if((pRecBuf[18] & 0X10) == 0X00)
{
RadioGroup14->ItemIndex = 0;
}
else if((pRecBuf[18] & 0X10) == 0X10)
{
RadioGroup14->ItemIndex = 1;
}
if((pRecBuf[18] & 0X02) == 0X00)
{
RadioGroup12->ItemIndex = 0;
}
else if((pRecBuf[18] & 0X02) == 0X02)
{
RadioGroup12->ItemIndex = 1;
}
if((pRecBuf[18] & 0X01) == 0X00)
{
RadioGroup11->ItemIndex = 0;
}
else if((pRecBuf[18] & 0X01) == 0X01)
{
RadioGroup11->ItemIndex = 1;
}
break;
}
case 0X02:
{//获取子速率端口参数返回数据
int V35SET = 0,V35TS = 0;
V35Num->Clear();
String asSql = "CREATE TABLE `V35TEMP` (`V35NUM` int(10) NOT NULL default '0',/
`V35SET` int(10) NOT NULL default '0',`V35TS` int(10) NOT NULL default '0',/
PRIMARY KEY (`V35NUM`,`V35SET`,`V35TS`))";
if(!CreateTable(asSql))
{
AnsiString asSqldel = "delete from V35TEMP";
ADOUI->Close();
ADOUI->SQL->Clear();
ADOUI->SQL->Add(asSqldel);
ADOUI->ExecSQL();
}
for(int i=0;i<30;i++)
{
V35SET = pRecBuf[18 + i * 2];
V35TS = pRecBuf[18 + i * 2 + 1];
/*if((V35SET == 0) && (V35TS == 0))
{
break;
} */
//else
{
AnsiString asSql = "insert into V35TEMP values("+IntToStr(i) +","+IntToStr(V35SET)/
+","+IntToStr(V35TS)+")";
ADOUI->Close();
ADOUI->SQL->Clear();
ADOUI->SQL->Add(asSql);
ADOUI->ExecSQL();
V35Num->Items->Add("端口" + IntToStr(i + 1));
}
}
V35Num->DropDownCount = V35Num->Items->Count;
V35Num->ItemIndex = 0;
//读取第一条记录
int V35NUM;
V35NUM = V35Num->ItemIndex;
asSql = "select * from V35TEMP where V35NUM=" + IntToStr(0);
ADOUI->Close();
ADOUI->SQL->Clear();
ADOUI->SQL->Add(asSql);
ADOUI->Open();
V35SET = ADOUI->FieldByName("V35SET")->AsInteger;
V35TS = ADOUI->FieldByName("V35TS")->AsInteger;
if((V35SET & 0X80) == 0X00)
{// 该 端 口 关 闭
RadioGroup4->ItemIndex = 0;
}
else if((V35SET & 0X80) == 0X80)
{// 该 端 口 打 开
RadioGroup4->ItemIndex = 1;
}
if((V35SET & 0X40) == 0X00)
{//0表示复用到A向
RadioGroup5->ItemIndex = 0;
}
else if((V35SET & 0X40) == 0X40)
{//1表示复用到B向
RadioGroup5->ItemIndex = 1;
}
Edit2->Text = IntToStr((V35SET & 0X1F));
Edit3->Text = IntToStr((V35TS & 0X1F));
/*if((V35SET & 0X80) == 0X00)
{// 该 端 口 关 闭
RadioGroup4->ItemIndex = 0;
}
else if((V35SET & 0X80) == 0X80)
{// 该 端 口 打 开
RadioGroup4->ItemIndex = 1;
}
if((V35SET & 0X40) == 0X00)
{//0表示复用到A向
RadioGroup5->ItemIndex = 0;
}
else if((V35SET & 0X40) == 0X40)
{//1表示复用到B向
RadioGroup5->ItemIndex = 1;
}
if((V35SET & 0X20) == 0X00)
{
RadioGroup6->ItemIndex = 0;
}
else if((V35SET & 0X20) == 0X20)
{
RadioGroup6->ItemIndex = 1;
}
Edit2->Text = IntToStr((V35SET & 0X1F));
/*if((V35TS & 0X80) == 0X00)
{// 该 端 口 关 闭
RadioGroup7->ItemIndex = 0;
}
else if((V35TS & 0X80) == 0X80)
{// 该 端 口 打 开
RadioGroup7->ItemIndex = 1;
}
if((V35TS & 0X40) == 0X00)
{
RadioGroup8->ItemIndex = 0;
}
else if((V35TS & 0X40) == 0X40)
{
RadioGroup8->ItemIndex = 1;
}
if((V35SET & 0X20) == 0X20)
{
if((V35TS & 0X20) == 0X00)
{
RadioGroup9->ItemIndex = 0;
}
else if((V35TS & 0X20) == 0X20)
{
RadioGroup9->ItemIndex = 1;
}
}
else
{
RadioGroup9->ItemIndex = -1;
}
Edit3->Text = IntToStr((V35TS & 0X1F));*/
GroupBox28->Enabled = true;
break;
}
}
}
break;
}
case 0XC5:
{//GPA 返回数据
if(pRecBuf[13] == 0xff)
{//获取失败
switch(pRecBuf[18])
{
case 0X00:
{//获取时隙参数失败
TfmMessage *message = new TfmMessage(Application);
message->lbMessage->Caption = "获取时隙参数失败!";
message->ShowModal();
break;
}
case 0X02:
{//获取E1时钟参数失败
TfmMessage *message = new TfmMessage(Application);
message->lbMessage->Caption = "获取E1 时钟参数失败!";
message->ShowModal();
break;
}
default:
{
TfmMessage *message = new TfmMessage(Application);
message->lbMessage->Caption = "获取参数失败!";
message->ShowModal();
}
}
}
else
{//获取成功
SelectDataFlag = true;
spbCancel->Enabled = false;
switch(pRecBuf[18])
{
case 0X00:
{//获取时隙参数返回数据
int GpaNum = 0,GPAH = 0,GPAL = 0;
GpaNum = pRecBuf[RecLen_t - 1];
GpaPortNum->Clear();
String asSql = "CREATE TABLE `GPATEMP` (`NUM` int(10) NOT NULL default '0',/
`GPAH` int(10) NOT NULL default '0',`GPAL` int(10) NOT NULL default '0',/
PRIMARY KEY (`NUM`,`GPAH`,`GPAL`))";
if(!CreateTable(asSql))
{
AnsiString asSqldel = "delete from GPATEMP";
ADOUI->Close();
ADOUI->SQL->Clear();
ADOUI->SQL->Add(asSqldel);
ADOUI->ExecSQL();
}
for(int i=0;i<GpaNum;i++)
{
GPAH = pRecBuf[20 + i * 2];
GPAL = pRecBuf[20 + i * 2 + 1];
AnsiString asSql = "insert into GPATEMP values("+IntToStr(i) +","+IntToStr(GPAH)/
+","+IntToStr(GPAL)+")";
ADOUI->Close();
ADOUI->SQL->Clear();
ADOUI->SQL->Add(asSql);
ADOUI->ExecSQL();
GpaPortNum->Items->Add("端口" + IntToStr(i + 1));
}
GpaPortNum->DropDownCount = GpaPortNum->Items->Count;
GpaPortNum->ItemIndex = 0;
//读取第一条记录
int GPATS;
GPAL = 1;
asSql = "select * from GPATEMP where GPAL=" + IntToStr(GPAL);
ADOUI->Close();
ADOUI->SQL->Clear();
ADOUI->SQL->Add(asSql);
ADOUI->Open();
GPAH = ADOUI->FieldByName("GPAH")->AsInteger;
if((GPAH & 0X80) == 0X00)
{// 该 端 口 关 闭
RadioGroup1->ItemIndex = 0;
}
else if((GPAH & 0X80) == 0X80)
{// 该 端 口 打 开
RadioGroup1->ItemIndex = 1;
}
if((GPAH & 0X40) == 0X00)
{// A 向收发
RadioGroup2->ItemIndex = 0;
}
else if((GPAH & 0X40) == 0X40)
{// B 向收发
RadioGroup2->ItemIndex = 1;
}
GPATS = (GPAH & 0X1F);
Edit1->Text = IntToStr(GPATS);
GroupBox13->Enabled = true;
break;
}
case 0X02:
{//获取E1 时钟参数返回数据
switch(pRecBuf[19])
{
case 0X00:
{// 从A向时钟
RadioGroup3->ItemIndex = 1;
break;
}
case 0X01:
{//从B向时钟
RadioGroup3->ItemIndex = 2;
break;
}
case 0X02:
{//主时钟
RadioGroup3->ItemIndex = 0;
break;
}
case 0X03:
{//外部时钟
RadioGroup3->ItemIndex = 3;
break;
}
default :
{
RadioGroup3->ItemIndex = 1;
break;
}
}
break;
}
}
}
break;
}
case 0XC6:
{//G2MP返回数据
if(pRecBuf[13] == 0xff)
{//获取失败
switch(pRecBuf[18])
{
case 0X00:
{//获取时隙参数失败
TfmMessage *message = new TfmMessage(Application);
message->lbMessage->Caption = "获取时隙参数失败!";
message->ShowModal();
break;
}
case 0X02:
{//获取E1时钟参数失败
TfmMessage *message = new TfmMessage(Application);
message->lbMessage->Caption = "获取E1 时钟参数失败!";
message->ShowModal();
break;
}
default:
{
TfmMessage *message = new TfmMessage(Application);
message->lbMessage->Caption = "获取参数失败!";
message->ShowModal();
}
}
}
else
{//获取成功
SelectDataFlag = true;
G2mpSave->Enabled = false;
G2mpUpdate->Enabled = false;
G2mpDel->Enabled = false;
switch(pRecBuf[18])
{
case 0X00:
{//获取时隙参数返回数据
int G2mpNum = 0,G2mpH = 0,G2mpL = 0;
G2mpNum = pRecBuf[20];
G2mpPortNum->Clear();
String asSql = "CREATE TABLE `G2MPTEMP` (`NUM` int(10) NOT NULL default '0',/
`G2MPH` int(10) NOT NULL default '0',`G2MPL` int(10) NOT NULL default '0',/
PRIMARY KEY (`NUM`,`G2MPH`,`G2MPL`))";
if(!CreateTable(asSql))
{
AnsiString asSqldel = "delete from G2MPTEMP";
ADOUI->Close();
ADOUI->SQL->Clear();
ADOUI->SQL->Add(asSqldel);
ADOUI->ExecSQL();
}
for(int i=0;i<G2mpNum;i++)
{
G2mpH = pRecBuf[21 + i * 2];
G2mpL = pRecBuf[21 + i * 2 + 1];
AnsiString asSql = "insert into G2MPTEMP values("+IntToStr(i) +","+IntToStr(G2mpH)/
+","+IntToStr(G2mpL)+")";
ADOUI->Close();
ADOUI->SQL->Clear();
ADOUI->SQL->Add(asSql);
ADOUI->ExecSQL();
G2mpPortNum->Items->Add("端口" + IntToStr(i + 1));
}
G2mpPortNum->DropDownCount = G2mpPortNum->Items->Count;
G2mpPortNum->ItemIndex = 0;
GroupBox32->Enabled = true;
int G2MPH,G2MPL,G2MPTS,NUM,G2MPTS2;
NUM = 0;//读取第一条记录
asSql = "select * from G2MPTEMP where NUM=" + IntToStr(NUM);
ADOUI->Close();
ADOUI->SQL->Clear();
ADOUI->SQL->Add(asSql);
ADOUI->Open();
G2MPH = ADOUI->FieldByName("G2MPH")->AsInteger;
G2MPL = ADOUI->FieldByName("G2MPL")->AsInteger;
if((G2MPH & 0X80) == 0X00)
{// 该 端 口 关 闭
RadioGroup15->ItemIndex = 0;
}
else if((G2MPH & 0X80) == 0X80)
{// 该 端 口 打 开
RadioGroup15->ItemIndex = 1;
}
if((G2MPH & 0X40) == 0X00)
{// A 向收发
RadioGroup16->ItemIndex = 0;
}
else if((G2MPH & 0X40) == 0X40)
{// B 向收发
RadioGroup16->ItemIndex = 1;
}
G2MPTS = (G2MPH & 0X1F);
Edit4->Text = IntToStr(G2MPTS);
G2MPTS2 = (G2MPL & 0X1F);
Edit5->Text = IntToStr(G2MPTS2);
break;
}
case 0X02:
{//获取E1 时钟参数返回数据
switch(pRecBuf[19])
{
case 0X00:
{// 从A向时钟
RadioGroup17->ItemIndex = 1;
break;
}
case 0X01:
{//从B向时钟
RadioGroup17->ItemIndex = 2;
break;
}
case 0X02:
{//主时钟
RadioGroup17->ItemIndex = 0;
break;
}
case 0X03:
{//外部时钟
RadioGroup17->ItemIndex = 3;
break;
}
default :
{
RadioGroup17->ItemIndex = 1;
break;
}
}
break;
}
}
}
break;
}
}
break;
}
}
}
//---------------------------------------------------------------------------
void __fastcall TfmMain::G2mpPortNumChange(TObject *Sender)
{
if(SelectDataFlag)
{//硬件返回数据
int G2MPH,G2MPL,G2MPTS,NUM,G2MPTS2;
NUM = G2mpPortNum->ItemIndex;
AnsiString asSql = "select * from G2MPTEMP where NUM=" + IntToStr(NUM);
ADOUI->Close();
ADOUI->SQL->Clear();
ADOUI->SQL->Add(asSql);
ADOUI->Open();
G2MPH = ADOUI->FieldByName("G2MPH")->AsInteger;
G2MPL = ADOUI->FieldByName("G2MPL")->AsInteger;
if((G2MPH & 0X80) == 0X00)
{// 该 端 口 关 闭
RadioGroup15->ItemIndex = 0;
}
else if((G2MPH & 0X80) == 0X80)
{// 该 端 口 打 开
RadioGroup15->ItemIndex = 1;
}
if((G2MPH & 0X40) == 0X00)
{// A 向收发
RadioGroup16->ItemIndex = 0;
}
else if((G2MPH & 0X40) == 0X40)
{// B 向收发
RadioGroup16->ItemIndex = 1;
}
G2MPTS = (G2MPH & 0X1F);
Edit4->Text = IntToStr(G2MPTS);
G2MPTS2 = (G2MPL & 0X1F);
Edit5->Text = IntToStr(G2MPTS2);
}
/*else
{//查看数据库数据
int MODENUM,G2MPADDR,G2MPPORT,TSBEGIN,TSCOUNT,PORTDIR;
MODENUM = fmSelectMode->ModeNum->Caption.ToInt();
G2MPADDR = fmSelectMode->SmAddr->Caption.ToInt();
G2MPPORT = G2mpPortNum->Text.ToInt();
AnsiString asSql = "select * from CT_TSG2MP where MODENUM=" + IntToStr(MODENUM)/
+" AND "+"G2MPADDR="+IntToStr(G2MPADDR)/
+" AND "+"G2MPPORT="+IntToStr(G2MPPORT) ;
ADOSelect->Close();
ADOSelect->SQL->Clear();
ADOSelect->SQL->Add(asSql);
ADOSelect->Open();
TSBEGIN = ADOSelect->FieldByName("TSBEGIN")->AsInteger;
TSCOUNT = ADOSelect->FieldByName("TSCOUNT")->AsInteger;
PORTDIR = ADOSelect->FieldByName("PORTDIR")->AsInteger;
Edit4->Text = IntToStr(TSBEGIN);
Edit5->Text = IntToStr(TSCOUNT);
if(PORTDIR == 0)
{// A 向收发
RadioGroup16->ItemIndex = 0;
}
else if(PORTDIR == 64)
{// B 向收发
RadioGroup16->ItemIndex = 1;
}
}*/
}
//---------------------------------------------------------------------------
void __fastcall TfmMain::ResetG2mpClick(TObject *Sender)
{//复位G2mp
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,0XC6,0X91,LINENUM,SUNUM,"复位G2MP命令");
/*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("-> -> 复位G2mp命令:",SendBuf,Length);
}
else
{
MessageShow("网络连接失败,请先确认网络连接状态!");
}*/
}
//---------------------------------------------------------------------------
void __fastcall TfmMain::ResetGpaClick(TObject *Sender)
{//复位GPA
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,0XC5,0X91,LINENUM,SUNUM,"复位GPA命令");
/*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("-> -> 复位GPA命令:",SendBuf,Length);
}
else
{
MessageShow("网络连接失败,请先确认网络连接状态!");
}*/
}
//---------------------------------------------------------------------------
void __fastcall TfmMain::GPADxcClick(TObject *Sender)
{//获取时隙参数
int SMADDR,TYPE;
String SmName;
GPAGetParamsFlag = true;
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;
TYPE = 0X00;
BYTE SendBuf[] = {0XEB,0X90,0X06,0X00,0X01,0X02,0X00,0X00,0X00,0X77,0X00,0XC5,SMADDR,TYPE};
int Length = sizeof(SendBuf);
if(ClientSocket->Active)
{
ClientSocket->Socket->SendBuf(SendBuf,Length);
SprintfData("-> -> 获取GPA时隙参数命令:",SendBuf,Length);
}
else
{
MessageShow("网络连接失败,请先确认网络连接状态!");
}
}
//---------------------------------------------------------------------------
void __fastcall TfmMain::GPAE1Click(TObject *Sender)
{//获取E1 时钟参数
int SMADDR,TYPE;
String SmName;
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;
TYPE = 0X02;
BYTE SendBuf[] = {0XEB,0X90,0X06,0X00,0X01,0X02,0X00,0X00,0X00,0X77,0X00,0XC5,SMADDR,TYPE};
int Length = sizeof(SendBuf);
if(ClientSocket->Active)
{
ClientSocket->Socket->SendBuf(SendBuf,Length);
SprintfData("-> -> 获取GPA E1 时钟参数命令:",SendBuf,Length);
}
else
{
MessageShow("网络连接失败,请先确认网络连接状态!");
}
}
//---------------------------------------------------------------------------
void __fastcall TfmMain::ResetV35Click(TObject *Sender)
{//复位V35
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,0XC9,0X91,LINENUM,SUNUM,"复位GVG(V35)命令");
/*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("-> -> 复位V35命令:",SendBuf,Length);
}
else
{
MessageShow("网络连接失败,请先确认网络连接状态!");
}*/
}
//---------------------------------------------------------------------------
void __fastcall TfmMain::V35FClockClick(TObject *Sender)
{//获取E1时钟参数
int SMADDR,TYPE;
String SmName;
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;
TYPE = 0X00;
BYTE SendBuf[] = {0XEB,0X90,0X06,0X00,0X01,0X02,0X00,0X00,0X00,0X77,0X00,0XC9,SMADDR,TYPE};
int Length = sizeof(SendBuf);
if(ClientSocket->Active)
{
ClientSocket->Socket->SendBuf(SendBuf,Length);
SprintfData("-> -> 获取V35 E1时钟参数命令:",SendBuf,Length);
}
else
{
MessageShow("网络连接失败,请先确认网络连接状态!");
}
}
//---------------------------------------------------------------------------
void __fastcall TfmMain::V35E1Click(TObject *Sender)
{//获取E1码流方式参数
int SMADDR,TYPE;
String SmName;
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;
TYPE = 0X01;
BYTE SendBuf[] = {0XEB,0X90,0X06,0X00,0X01,0X02,0X00,0X00,0X00,0X77,0X00,0XC9,SMADDR,TYPE};
int Length = sizeof(SendBuf);
if(ClientSocket->Active)
{
ClientSocket->Socket->SendBuf(SendBuf,Length);
SprintfData("-> -> 获取V35 E1码流方式参数命令:",SendBuf,Length);
}
else
{
MessageShow("网络连接失败,请先确认网络连接状态!");
}
}
//---------------------------------------------------------------------------
void __fastcall TfmMain::V35ZslClick(TObject *Sender)
{//获取子速率端口参数
int SMADDR,TYPE;
String SmName;
V35GetParamsFlag = true;
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;
TYPE = 0X02;
BYTE SendBuf[] = {0XEB,0X90,0X06,0X00,0X01,0X02,0X00,0X00,0X00,0X77,0X00,0XC9,SMADDR,TYPE};
int Length = sizeof(SendBuf);
if(ClientSocket->Active)
{
ClientSocket->Socket->SendBuf(SendBuf,Length);
SprintfData("-> -> 获取V35子速率端口参数:",SendBuf,Length);
}
else
{
MessageShow("网络连接失败,请先确认网络连接状态!");
}
}
//---------------------------------------------------------------------------
void __fastcall TfmMain::V35NumChange(TObject *Sender)
{
int V35SET,V35TS,V35NUM;
V35NUM = V35Num->ItemIndex;
AnsiString asSql = "select * from V35TEMP where V35NUM=" + IntToStr(V35NUM);
ADOUI->Close();
ADOUI->SQL->Clear();
ADOUI->SQL->Add(asSql);
ADOUI->Open();
V35SET = ADOUI->FieldByName("V35SET")->AsInteger;
V35TS = ADOUI->FieldByName("V35TS")->AsInteger;
if((V35SET & 0X80) == 0X00)
{// 该 端 口 关 闭
RadioGroup4->ItemIndex = 0;
}
else if((V35SET & 0X80) == 0X80)
{// 该 端 口 打 开
RadioGroup4->ItemIndex = 1;
}
if((V35SET & 0X40) == 0X00)
{//0表示复用到A向
RadioGroup5->ItemIndex = 0;
}
else if((V35SET & 0X40) == 0X40)
{//1表示复用到B向
RadioGroup5->ItemIndex = 1;
}
Edit2->Text = IntToStr((V35SET & 0X1F));
Edit3->Text = IntToStr((V35TS & 0X1F));
/*if((V35SET & 0X80) == 0X00)
{// 该 端 口 关 闭
RadioGroup4->ItemIndex = 0;
}
else if((V35SET & 0X80) == 0X80)
{// 该 端 口 打 开
RadioGroup4->ItemIndex = 1;
}
if((V35SET & 0X40) == 0X00)
{
RadioGroup5->ItemIndex = 0;
}
else if((V35SET & 0X40) == 0X40)
{
RadioGroup5->ItemIndex = 1;
}
if((V35SET & 0X20) == 0X00)
{
RadioGroup6->ItemIndex = 0;
}
else if((V35SET & 0X20) == 0X20)
{
RadioGroup6->ItemIndex = 1;
}
Edit2->Text = IntToStr((V35SET & 0X1F));
if((V35TS & 0X80) == 0X00)
{// 该 端 口 关 闭
RadioGroup7->ItemIndex = 0;
}
else if((V35TS & 0X80) == 0X80)
{// 该 端 口 打 开
RadioGroup7->ItemIndex = 1;
}
if((V35TS & 0X40) == 0X00)
{
RadioGroup8->ItemIndex = 0;
}
else if((V35TS & 0X40) == 0X40)
{
RadioGroup8->ItemIndex = 1;
}
if((V35SET & 0X20) == 0X20)
{
if((V35TS & 0X20) == 0X00)
{
RadioGroup9->ItemIndex = 0;
}
else if((V35TS & 0X20) == 0X20)
{
RadioGroup9->ItemIndex = 1;
}
}
else
{
RadioGroup9->ItemIndex = -1;
}
Edit3->Text = IntToStr((V35TS & 0X1F));*/
}
//---------------------------------------------------------------------------
void __fastcall TfmMain::GpaPortNumChange(TObject *Sender)
{
if(SelectDataFlag)
{//硬件返回数据
int GPAH,GPAL,GPATS;
GPAL = GpaPortNum->ItemIndex + 1;
AnsiString asSql = "select * from GPATEMP where GPAL=" + IntToStr(GPAL);
ADOUI->Close();
ADOUI->SQL->Clear();
ADOUI->SQL->Add(asSql);
ADOUI->Open();
GPAH = ADOUI->FieldByName("GPAH")->AsInteger;
if((GPAH & 0X80) == 0X00)
{// 该 端 口 关 闭
RadioGroup1->ItemIndex = 0;
}
else if((GPAH & 0X80) == 0X80)
{// 该 端 口 打 开
RadioGroup1->ItemIndex = 1;
}
if((GPAH & 0X40) == 0X00)
{// A 向收发
RadioGroup2->ItemIndex = 0;
}
else if((GPAH & 0X40) == 0X40)
{// B 向收发
RadioGroup2->ItemIndex = 1;
}
GPATS = (GPAH & 0X1F);
Edit1->Text = IntToStr(GPATS);
}
/*else
{//查看数据库中数据
int MODENUM,GPAPORT,TSNUM,PORTDIR;
MODENUM = fmSelectMode->ModeNum->Caption.ToInt();
GPAPORT = GpaPortNum->Text.ToInt();
AnsiString asSql = "select * from CT_TSGPA where MODENUM=" + IntToStr(MODENUM)/
+" AND "+"GPAPORT="+IntToStr(GPAPORT) ;
ADOSelect->Close();
ADOSelect->SQL->Clear();
ADOSelect->SQL->Add(asSql);
ADOSelect->Open();
TSNUM = ADOSelect->FieldByName("TSNUM")->AsInteger;
PORTDIR = ADOSelect->FieldByName("PORTDIR")->AsInteger;
Edit1->Text = IntToStr(TSNUM);
if(PORTDIR == 0)
{// A 向收发
RadioGroup2->ItemIndex = 0;
}
else if(PORTDIR == 64)
{// B 向收发
RadioGroup2->ItemIndex = 1;
}
}*/
}
//---------------------------------------------------------------------------
void __fastcall TfmMain::ARM1Click(TObject *Sender)
{//复位前台ARM板 地址 = 01H CID1 = C2H
BYTE DataInfo[2];
memset(DataInfo, 0, 2);
int LINENUM = 0,SUNUM = 0,ADDR = 0;
// LINENUM = GetLineNum(NodeParText);
SUNUM = GetSuNum(NodeText);
//DATAINFO
MakePack(DataInfo,0,0X04,0X01,0XC2,0XCD,LINENUM,SUNUM,"复位前台ARM板命令");
//MakePack(BYTE *DataInfo,int DataLength,int Protocol,
//int SmAddr,int Cid1,int Cid2,int LineNum,int SuNum);
}
//---------------------------------------------------------------------------
void __fastcall TfmMain::N19Click(TObject *Sender)
{//前台复用器板复位 地址 = 02H CID1 = C2H
BYTE DataInfo[2];
memset(DataInfo, 0, 2);
int LINENUM = 0,SUNUM = 0,ADDR = 0;
// LINENUM = GetLineNum(NodeParText);
SUNUM = GetSuNum(NodeText);
//DATAINFO
MakePack(DataInfo,0,0X04,0X02,0XC2,0XCD,LINENUM,SUNUM,"复位前台复用器板命令");
//MakePack(BYTE *DataInfo,int DataLength,int Protocol,
//int SmAddr,int Cid1,int Cid2,int LineNum,int SuNum);
}
//---------------------------------------------------------------------------
void __fastcall TfmMain::N20Click(TObject *Sender)
{//前台视频切换器板复位 地址 = 10H CID1 = D3H
BYTE DataInfo[2];
memset(DataInfo, 0, 2);
int LINENUM = 0,SUNUM = 0,ADDR = 0;
// LINENUM = GetLineNum(NodeParText);
SUNUM = GetSuNum(NodeText);
//DATAINFO
MakePack(DataInfo,0,0X04,0X10,0XD3,0XCD,LINENUM,SUNUM,"复位前台视频切换器板命令");
//MakePack(BYTE *DataInfo,int DataLength,int Protocol,
//int SmAddr,int Cid1,int Cid2,int LineNum,int SuNum);
}
//---------------------------------------------------------------------------
void __fastcall TfmMain::N23Click(TObject *Sender)
{//前台音频服务器板复位 地址 = 19H CID1 = CBH
BYTE DataInfo[2];
memset(DataInfo, 0, 2);
int LINENUM = 0,SUNUM = 0,ADDR = 0;
// LINENUM = GetLineNum(NodeParText);
SUNUM = GetSuNum(NodeText);
//DATAINFO
MakePack(DataInfo,0,0X04,0X19,0XCB,0XCD,LINENUM,SUNUM,"复位前台音频服务器板命令");
//MakePack(BYTE *DataInfo,int DataLength,int Protocol,
//int SmAddr,int Cid1,int Cid2,int LineNum,int SuNum);
}
//---------------------------------------------------------------------------
void __fastcall TfmMain::N24Click(TObject *Sender)
{//前台网桥板一路复位 地址 = 20H CID1 = C3H
BYTE DataInfo[2];
memset(DataInfo, 0, 2);
int LINENUM = 0,SUNUM = 0,ADDR = 0;
// LINENUM = GetLineNum(NodeParText);
SUNUM = GetSuNum(NodeText);
//DATAINFO
MakePack(DataInfo,0,0X04,0X20,0XC3,0XCD,LINENUM,SUNUM,"复位前台网桥板一路命令");
//MakePack(BYTE *DataInfo,int DataLength,int Protocol,
//int SmAddr,int Cid1,int Cid2,int LineNum,int SuNum);
}
//---------------------------------------------------------------------------
void __fastcall TfmMain::N25Click(TObject *Sender)
{//前台网桥板二路复位 地址 = 30H CID1 = C3H
BYTE DataInfo[2];
memset(DataInfo, 0, 2);
int LINENUM = 0,SUNUM = 0,ADDR = 0;
// LINENUM = GetLineNum(NodeParText);
SUNUM = GetSuNum(NodeText);
//DATAINFO
MakePack(DataInfo,0,0X04,0X30,0XC3,0XCD,LINENUM,SUNUM,"复位前台网桥板二路命令");
//MakePack(BYTE *DataInfo,int DataLength,int Protocol,
//int SmAddr,int Cid1,int Cid2,int LineNum,int SuNum);
}
//---------------------------------------------------------------------------
void __fastcall TfmMain::N26Click(TObject *Sender)
{//前台右侧视频服务器板复位 地址 = 40H CID1 = C1H
BYTE DataInfo[2];
memset(DataInfo, 0, 2);
int LINENUM = 0,SUNUM = 0,ADDR = 0;
// LINENUM = GetLineNum(NodeParText);
SUNUM = GetSuNum(NodeText);
//DATAINFO
MakePack(DataInfo,0,0X04,0X40,0XC1,0XCD,LINENUM,SUNUM,"复位前台右侧视频服务器板命令");
//MakePack(BYTE *DataInfo,int DataLength,int Protocol,
//int SmAddr,int Cid1,int Cid2,int LineNum,int SuNum);
}
//---------------------------------------------------------------------------
void __fastcall TfmMain::N27Click(TObject *Sender)
{//前台左侧视频服务器板复位 地址 = 50H CID1 = C1H
BYTE DataInfo[2];
memset(DataInfo, 0, 2);
int LINENUM = 0,SUNUM = 0,ADDR = 0;
// LINENUM = GetLineNum(NodeParText);
SUNUM = GetSuNum(NodeText);
//DATAINFO
MakePack(DataInfo,0,0X04,0X50,0XC1,0XCD,LINENUM,SUNUM,"复位前台左侧视频服务器板命令");
//MakePack(BYTE *DataInfo,int DataLength,int Protocol,
//int SmAddr,int Cid1,int Cid2,int LineNum,int SuNum);
}
//---------------------------------------------------------------------------
void __fastcall TfmMain::N22Click(TObject *Sender)
{//前台音频切换器板复位 地址 = 18H CID1 = D4H
BYTE DataInfo[2];
memset(DataInfo, 0, 2);
int LINENUM = 0,SUNUM = 0,ADDR = 0;
// LINENUM = GetLineNum(NodeParText);
SUNUM = GetSuNum(NodeText);
//DATAINFO
MakePack(DataInfo,0,0X04,0X18,0XD4,0XCD,LINENUM,SUNUM,"复位前台音频切换器板命令");
//MakePack(BYTE *DataInfo,int DataLength,int Protocol,
//int SmAddr,int Cid1,int Cid2,int LineNum,int SuNum);
}
//---------------------------------------------------------------------------
void __fastcall TfmMain::IO1Click(TObject *Sender)
{//全部I/O模块复位
BYTE DataInfo[2];
memset(DataInfo, 0, 2);
int LINENUM = 0,SUNUM = 0;
// LINENUM = GetLineNum(NodeParText);
SUNUM = GetSuNum(NodeText);
//DATAINFO
MakePack(DataInfo,0,0X04,0XFF,0X00,0XCD,LINENUM,SUNUM,"复位全部I/O模块命令");
}
//---------------------------------------------------------------------------
void __fastcall TfmMain::N33Click(TObject *Sender)
{
char* szBuffer = new char[30];
String NodeTextTemp = NodeText;
int LINENUM = 0;
int 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];
}
//if(N33->Caption > "复位云台控制器")
if(strstr(N33->Caption.c_str() ,"复位云台控制器"))
{//判断N33->Caption里是否有“复位云台控制器”字符串
//复位云台控制器
BYTE DataInfo[2];
memset(DataInfo, 0, 2);
String asSql = "select * from ct_sm where SUNUM="+IntToStr(SUNUM)/
+ " AND " + "SMNUM=" + NodeTextTemp;
ADOSelect->Close();
ADOSelect->SQL->Clear();
ADOSelect->SQL->Add(asSql);
ADOSelect->Open();
int SWADDR = ADOSelect->FieldByName("SWADDR")->AsInteger;//
//DATAINFO
MakePack(DataInfo,0,0X04,SWADDR,0XD2,0XCD,LINENUM,SUNUM,"复位云台控制器命令");
//MakePack(BYTE *DataInfo,int DataLength,int Protocol,
//int SmAddr,int Cid1,int Cid2,int LineNum,int SuNum);
}
else if(strstr(N33->Caption.c_str() ,"复位快球控制器"))
//else if(N33->Caption > "复位快球控制器")
{
//复位快球控制器
BYTE DataInfo[2];
memset(DataInfo, 0, 2);
String asSql = "select * from ct_sm where SUNUM="+IntToStr(SUNUM)/
+ " AND " + "SMNUM=" + NodeTextTemp;
ADOSelect->Close();
ADOSelect->SQL->Clear();
ADOSelect->SQL->Add(asSql);
ADOSelect->Open();
int SWADDR = ADOSelect->FieldByName("SWADDR")->AsInteger;//
//DATAINFO
MakePack(DataInfo,0,0X04,SWADDR,0XD6,0XCD,LINENUM,SUNUM,"复位快球控制器命令");
//MakePack(BYTE *DataInfo,int DataLength,int Protocol,
//int SmAddr,int Cid1,int Cid2,int LineNum,int SuNum);
}
}
//---------------------------------------------------------------------------
/*---------------------------------------------------------------------------
获取DVRIp地址事件
--------------------------------------------------------------------------- */
void __fastcall TfmMain::GetIpClick(TObject *Sender)
{//获取DVR板IP地址
/* Old Cmd
AnsiString SUNUM,LINENUM ;
GetStationInfo(&LINENUM,&SUNUM) ;
GetIPConfig(SUNUM,LINENUM);
*/
//
BYTE DataInfo[24];
memset(DataInfo, 0, 24);
int LINENUM = 0,SUNUM = 0;
// LINENUM = GetLineNum(NodeParText);
SUNUM = GetSuNum(NodeText);
//DATAINFO
DataInfo[0] = 0X01;//0 - 监控 1 - 录像
DataInfo[1] = 0X02;//
DataInfo[2] = 0X00;//序号 WORD
DataInfo[3] = 0XFF;//
DataInfo[4] = 0X14;//长度 DWORD
DataInfo[8] = 0X04;//命令码 DWORD
MakePack(DataInfo,24,0X04,SUNUM,0XC1,0XC3,LINENUM,SUNUM,"获取DVR板IP地址命令");
}
/*---------------------------------------------------------------------------
获取DVRIp地址命令
--------------------------------------------------------------------------- */
void __fastcall TfmMain::GetIPConfig(AnsiString StationNo,AnsiString LineNo)
{
/*BYTE pBuff[2048];
SetSubHeader(pBuff,12,RMIP_GET_IPCONFIG,0xC1,0xC3) ;//设置子报文头
SetZHeader(pBuff,0,0xC3,0,LineNo.ToInt(),0,1,StationNo.ToInt()) ;//设置总报文头
SetZLength(pBuff) ;//设置报文的长度位[12],[13] ,
Set4567pBuff(pBuff) ; //将第二个EB90 替换 为总长度-8
SetSubCheckNum(pBuff) ; //设置子校验 (部颁报文)
SetEndSymbol(pBuff) ;//报文结束符
SetZCheck(pBuff) ; //设置主校验
if(!SendMessage(pBuff,GetLength(pBuff)))
{
return ;
}
//ClientSocket->Socket->SendBuf(pBuff,GetLength(pBuff));
AnsiString SendMessage = GetDemoStr(GetLength(pBuff),pBuff);
fmReceiveData->Memo2->Lines->Add("-> -> " + SendMessage);
Command = RMIP_GET_IPCONFIG ;
IsOvertimeTimer->Enabled = true ;
SetSendRestrict(true);*/
}
//---------------------------------------------------------------------------
//根据当前选择的站点名获取站点的LineNo,StationNo
void __fastcall TfmMain::GetStationInfo(AnsiString * LINENUM, AnsiString * SUNUM)
{
//Get站点信息
String SUNAME,LINENAME;
AnsiString asSql;
//int SUNUM;
/* LINENAME = tvDevice->Selected->Parent->Text;
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+"'" + " AND " + "LINENUM=" + *LINENUM;
ADOSelect->Close();
ADOSelect->SQL->Clear();
ADOSelect->SQL->Add(asSql);
ADOSelect->Open();
// *LINENUM = ADOSelect->FieldByName("LINENUM")->AsInteger;
*SUNUM = ADOSelect->FieldByName("SUNUM")->AsInteger;
}
//---------------------------------------------------------------------------
//
void __fastcall TfmMain::FormatDiskMenuClick(TObject *Sender)
{//格式化硬盘
BYTE DataInfo[2];
memset(DataInfo, 0, 2);
int LINENUM = 0,SUNUM = 0;
// LINENUM = fmMain->GetLineNum(fmMain->NodeParText);
SUNUM = fmMain->GetSuNum(fmMain->NodeText);
fmFarUpDateNew->MakePackNew(DataInfo,0,0X04,SUNUM,0X00,0XFE,LINENUM,SUNUM,"远程升级开始命令");
FormatDiskFrom1->StationNoEdit->Text = SUNUM ;
// FormatDiskFrom1->LineNoEdit->Text = LINENUM ;
FormatDiskFrom1->DVRTYPE->Caption = 1;
FormatDiskFrom1->ShowModal();
/*AnsiString SUNUM,LINENUM ;
GetStationInfo(&LINENUM,&SUNUM) ;
FormatDiskFrom1->StationNoEdit->Value = StrToInt(SUNUM);
FormatDiskFrom1->StationNoEdit->Enabled = false ;
FormatDiskFrom1->LineNoEdit->Value = StrToInt(LINENUM);
FormatDiskFrom1->LineNoEdit->Enabled = false ;
FormatDiskFrom1->ShowModal();*/
}
//---------------------------------------------------------------------------
/// <summary>格式化磁盘组报文,下发</summary>
/// <param name="stationNo">站点号码</param>
/// <param name="LineNo">线路号</param>
/// <param name="DiskNo">磁盘号(用户输入)</param>
/// <param name="CountNo">分区数目(用户shuru)</param>
/// <param name="Size">分区大小(用户输入)</param>
/// <returns>空</returns>
void __fastcall TfmMain::FormatDisk(AnsiString StationNo, AnsiString LineNo,int DiskNo,int Count,long Size)
{
BYTE pBuff[2048];
SetSubHeader(pBuff,(Count+2)*4,RMIP_FORMAT_DISK,0xC1,0xC3) ;//设置子报文头
SetZHeader(pBuff,0,0xC3,0,LineNo.ToInt(),0,1,StationNo.ToInt()) ;//设置总报文头
SetZLength(pBuff) ;//设置报文的长度位[12],[13] ,
Set4567pBuff(pBuff) ; //将第二个EB90 替换 为总长度-8
pBuff[31] = DiskNo ;
pBuff[35] = Count ;
int i = 0 ;
for(i = 0 ;i<Count-1;i++)
{
memcpy(pBuff+39+i*4,&Size,4);
}
pBuff[39+i*Count*4] = 0x00 ;
SetSubCheckNum(pBuff) ; //设置子校验 (部颁报文)
SetEndSymbol(pBuff) ;//报文结束符
SetZCheck(pBuff) ; //设置主校验
if(!SendMessage(pBuff,GetLength(pBuff)))
{
return ;
}
//ClientSocket->Socket->SendBuf(pBuff,GetLength(pBuff));
AnsiString SendMessage = GetDemoStr(GetLength(pBuff),pBuff);
fmReceiveData->Memo2->Lines->Add("-> -> " + SendMessage);
Command = RMIP_FORMAT_DISK ;
IsOvertimeTimer->Enabled = true ;
SetSendRestrict(true);
}
//-----------------------------------------------------
//列出当前数据传输和录像的状态
void __fastcall TfmMain::DataTransferStateMenuClick(TObject *Sender)
{//获取DVR数据传输状态
/*AnsiString SUNUM,LINENUM ;
GetStationInfo(&LINENUM,&SUNUM) ;
GetCurDataTransferState(SUNUM,LINENUM);*/
BYTE DataInfo[20];
memset(DataInfo, 0, 20);
int LINENUM = 0,SUNUM = 0;
// LINENUM = GetLineNum(NodeParText);
SUNUM = GetSuNum(NodeText);
//DATAINFO
DataInfo[0] = 0X01;//0 - 监控 1 - 录像
DataInfo[1] = 0X07;//
DataInfo[2] = 0X00;//序号 WORD
DataInfo[3] = 0XFF;//
DataInfo[4] = 0X10;//长度 DWORD
DataInfo[8] = 0X5E;//命令码 DWORD
MakePack(DataInfo,20,0X04,SUNUM,0XC1,0XC3,LINENUM,SUNUM,"获取DVR数据传输状态命令");
}
//---------------------------------------------------------------------------
void __fastcall TfmMain::GetCurDataTransferState(AnsiString StationNo, AnsiString LineNo)
{
/*BYTE pBuff[2048];
SetSubHeader(pBuff,8,RMIP_LIST_TRANSFER_STATUS,0xC1,0XC3) ;//设置子报文头
SetZHeader(pBuff,0,0xC3,0,LineNo.ToInt(),0,1,StationNo.ToInt()) ;//设置总报文头
SetZLength(pBuff) ;//设置报文的长度位[12],[13] ,
Set4567pBuff(pBuff) ; //将第二个EB90 替换 为总长度-8
SetSubCheckNum(pBuff) ; //设置子校验 (部颁报文)
SetEndSymbol(pBuff) ;//报文结束符
SetZCheck(pBuff) ; //设置主校验
if(!SendMessage(pBuff,GetLength(pBuff)))
{
return ;
}
//ClientSocket->Socket->SendBuf(pBuff,GetLength(pBuff));
AnsiString SendMessage = GetDemoStr(GetLength(pBuff),pBuff);
fmReceiveData->Memo2->Lines->Add("-> -> " + SendMessage);
Command = RMIP_LIST_TRANSFER_STATUS ;
IsOvertimeTimer->Enabled = true ;
//SetSendRestrict(true);*/
}
//--------------------------------------------------------------------------------
//获得站点名
//返回值:成功 站名 ,失败 空串
AnsiString __fastcall TfmMain::GetStationName(int StationNo,int LineNo)
{
//Get站信息
String SUNAME,LINENAME;
AnsiString asSql;
asSql = "select * from CT_SU where SUNUM ='"+ IntToStr(StationNo) +"'" + " AND " + "LINENUM=" + LineNo ;
try
{
ADOSelect->Close();
ADOSelect->SQL->Clear();
ADOSelect->SQL->Add(asSql);
ADOSelect->Open();
}
catch(...)
{
return "" ;
}
SUNAME = ADOSelect->FieldByName("SUNAME")->AsString;
return SUNAME ;
}
//--------------------------------------------------------------------------------
//获得线路名
//返回值:成功 线路名 ,失败 空串
AnsiString __fastcall TfmMain::GetLineName(int LineNo)
{
//Get线路信息
String LINENAME;
AnsiString asSql = "select * from CT_LINE where LINENUM=" + IntToStr(LineNo);
try
{
ADOSelect->Close();
ADOSelect->SQL->Clear();
ADOSelect->SQL->Add(asSql);
ADOSelect->Open();
}
catch(...)
{
return "" ;
}
LINENAME = ADOSelect->FieldByName("LINENAME")->AsString;
return LINENAME ;
}
//---------------------------------------------------------------------------
void __fastcall TfmMain::InforControlStateMenuClick(TObject *Sender)
{//获取时隙配置信息
BYTE DataInfo[2];
memset(DataInfo, 0, 2);
int LINENUM = 0,SUNUM = 0;
// LINENUM = GetLineNum(NodeParText);
SUNUM = GetSuNum(NodeText);
E1TimeWorkFlag = false;
//DATAINFO
DataInfo[0] = 0X07;//COMMAND TYPE 参数型号
MakePack(DataInfo,1,0X04,SUNUM,0X00,0XC5,LINENUM,SUNUM,"获取时隙配置命令");
/*AnsiString SUNUM,LINENUM ;
GetStationInfo(&LINENUM,&SUNUM) ;
//GetCurDataTransferState(SUNUM,LINENUM);
GetInforControlState(SUNUM,LINENUM) ;*/
}
//---------------------------------------------------------------------------
//获取信道控制器状态
void __fastcall TfmMain::GetInforControlState(AnsiString StationNo, AnsiString LineNo)
{
BYTE pBuff[2048];
SetGetControlStateSubTHeader(pBuff,StrToInt(StationNo),2,0,0xC0,0x47) ;
// SetSubHeader(pBuff,0,0,0xC0,0x47) ;//设置子报文头
SetZHeader(pBuff,0,0x47,0,LineNo.ToInt(),0,2,StationNo.ToInt()) ;//设置总报文头
SetZTLength(pBuff) ;//设置报文的长度位[12],[13] ,
Set4567pBuff(pBuff) ; //将第二个EB90 替换 为总长度-8
SetSubCheckNum(pBuff) ; //设置子校验 (部颁报文)
SetEndSymbol(pBuff) ;//报文结束符
SetZCheck(pBuff) ; //设置主校验
if(!SendMessage(pBuff,GetLength(pBuff)))
{
return ;
}
//ClientSocket->Socket->SendBuf(pBuff,GetLength(pBuff));
AnsiString SendMessage = GetDemoStr(GetLength(pBuff),pBuff);
fmReceiveData->Memo2->Lines->Add("-> -> " + SendMessage);
CurrentYinShiPinCommand = 9 ;
Command = 0x47 ;
IsOvertimeTimer->Enabled = true ;
SetSendRestrict(true);
}
//---------------------------------------------------------------------------
/********************************************************************************
设置报文总长度位的值 总长度值放在pBuff[12],pBuff[13]中,高前,底后
*********************************************************************************/
void __fastcall TfmMain::SetZLength(BYTE * pBuff)
{
int lj = pBuff[24];
lj = lj<<8;lj += pBuff[23] + 28;//28 报文固定部分的长度 子报文长度存在pBuff[23]
int ll = lj;
ll = ll&0xFF; //取低8位
int lh = lj&0xFF00; lh = lh/0x100; //取高8位
pBuff[12]=lh;pBuff[13]=ll;
}
//---------------------------------------------------------------------------
/********************************************************************************
设置报文总长度位的值 总长度值放在pBuff[12],pBuff[13]中,高前,底后(TianheBaoWen)
*********************************************************************************/
void __fastcall TfmMain::SetZTLength(BYTE * pBuff)
{
pBuff[12]=0;pBuff[13]=pBuff[22]+28;
}
//---------------------------------------------------------------------------
/********************************************************************************
设置的第二个EB 90值为报文总长度-8 总长度值放在pBuff[12],pBuff[13]中,高前,底后
*********************************************************************************/
void __fastcall TfmMain::Set4567pBuff(BYTE * pBuff)
{
int temp = MAKEWORD(pBuff[13],pBuff[12]);
temp-=8 ;
pBuff[3] = HIBYTE(temp);pBuff[2] = LOBYTE(temp);
}
//---------------------------------------------------------------------------
/********************************************************************************
设置总报文的校验和 总长度值放在pBuff[12],pBuff[13]中,高前,底后
校验和的算法为所有的报文(除掉总校验部分)的累加和 存于总报文的最后两位 高前底侯
*********************************************************************************/
void __fastcall TfmMain::SetZCheck(BYTE * pBuff)
{
int Length = GetLength(pBuff) ;
int CheckNum = 0 ;
for(int i = 0 ;i<Length-2;i++)
{
CheckNum +=pBuff[i] ;
}
int x = CheckNum;
int j = x; j = j&0xFF; //取低8位
x = x&0xFF00; x = x/0x100; //取高8位
pBuff[Length-1] = x;
pBuff[Length-2] = j;
}
//---------------------------------------------------------------------------
/********************************************************************************
设置子报文的校验和 子报文长度值放在pBuff[23]~~pBuff[26]中,高前,底后
校验和的算法为所有的报文(除掉总校验部分)的累加和 存于总报文的倒数第4,5位 高前底侯
*********************************************************************************/
void __fastcall TfmMain::SetSubCheckNum(BYTE * pBuff)
{
int InfoSum = 0;
int Length = GetLength(pBuff) ;
for(int i=17;i<Length-5;i++)
{
InfoSum += pBuff[i];
}
int x = InfoSum;
x = ~x; x += 1; //取反,+1
int j = x; j = j&0xFF; //取低8位
x = x&0xFF00; x = x/0x100; //取高8位
pBuff[Length-5] = x; pBuff[Length-4] = j;
}
//---------------------------------------------------------------------------
/********************************************************************************
设置报文结束符 放在主报文的倒数第三位
*********************************************************************************/
void __fastcall TfmMain::SetEndSymbol(BYTE * pBuff)
{
int Length = GetLength(pBuff) ;
pBuff[Length-3] = 0x0D ;
}
/********************************************************************************
获取报文的长度
参数: 报文指针
返回值: 报文长度
*********************************************************************************/
int __fastcall TfmMain::GetLength(BYTE * pBuff)
{
return(MAKEWORD(pBuff[13],pBuff[12]));
}
//---------------------------------------------------------------------------
/********************************************************************************
设置总报文的头
参数: 报文 ,系统路径=0,Expand1 = 255,Expand2 = 0,线路号,终端号 = 254,协议类型 = 1, 站号
返回值: 报文长度
*********************************************************************************/
void __fastcall TfmMain::SetZHeader(BYTE * pBuff, int Path, int Expand1, int Expand2, int LineNo, int Terminal, int Type, int StationNo)
{
pBuff[0] = 0xEB ;
pBuff[1] = 0x90 ;
pBuff[2] = 0xEB ;
pBuff[3] = 0x90 ;
pBuff[4] = 0xEB ;
pBuff[5] = 0x90 ;
pBuff[6] = 0x00 ;
pBuff[7] = Path ;//Path
pBuff[8] = Expand1 ;
pBuff[9] = Expand2 ;
pBuff[10] = LineNo ;
pBuff[11] = Terminal ;
pBuff[12] = 0;
pBuff[13] = 0; //总长度暂时置为 0
pBuff[14] = Type ;
pBuff[15] = StationNo ;
}
//---------------------------------------------------------------------------
/********************************************************************************
设置子报文的头
参数: 报文 ,系统路径=0,Expand1 = 255,Expand2 = 0,线路号,终端号 = 254,协议类型 = 1, 站号
返回值: 报文长度
*********************************************************************************/
void __fastcall TfmMain::SetSubHeader(BYTE * pBuff, int SubLength, int Cmd,int CID1,int CID2)
{
SReqHeader* reqHeader;//子报文头结构体
BYTE s_reqBuf[1024];
memset(s_reqBuf,0x00,1024);
reqHeader = (SReqHeader*)s_reqBuf;
reqHeader->cmd = Cmd;
reqHeader->len = ReqHeaderLen + SubLength;
pBuff[16] = 0x7E ;
pBuff[17] = 0x30 ;
pBuff[18] = 0x40 ;
pBuff[19] = CID1 ;
pBuff[20] = CID2 ;
pBuff[21] = 0xB0;
pBuff[22] = SubLength + 8;
memcpy(pBuff+23,reqHeader,reqHeader->len);
}
//---------------------------------------------------------------------------
/********************************************************************************
设置子报文的头(适用于天河协议)
参数: 报文 ,系统路径=0,Expand1 = 255,Expand2 = 0,线路号,终端号 = 254,协议类型 = 1, 站号
返回值: 报文长度
*********************************************************************************/
void __fastcall TfmMain::SetGetControlStateSubTHeader(BYTE * pBuff,int StationNo, int SubLength, int Cmd, int CID1, int CID2)
{
pBuff[16] = 0x7E ;
pBuff[17] = 0x30 ;
pBuff[18] = StationNo ;
pBuff[19] = CID1 ;
pBuff[20] = CID2 ;
pBuff[21] = 0xB0 ;
pBuff[22] = SubLength;
pBuff[23] = 0x00 ;
pBuff[24] = Cmd ;
}
//---------------------------------------------------------------------------
//信道控制器获取参数时,返回报文处理
//参数:返回报文指针去掉无用的报文头
void __fastcall TfmMain::DisposeGetInfoControl(BYTE * pBuf)
{
BYTE portMessage,portMessagep ;
AnsiString PortState = "" ;
AnsiString SendDirection = "" ;
AnsiString ShiXi = "" ;
AnsiString Send = "" ;
AnsiString Accept = "" ;
AnsiString HalfShiXi = "" ;
AnsiString StartShiXi = "" ;
AnsiString TbSate = "" ;
AnsiString TbShixi = "" ;
AnsiString TbDvrChannels = "" ;
AnsiString TbShixiCount = "" ;
switch(pBuf[0])
{
case 0:
{
GetInfoControlForm1->E1Clock->Caption = "从A向时钟";
break;
}
case 1:
{
GetInfoControlForm1->E1Clock->Caption = "从B向时钟";
break;
}
case 2:
{
GetInfoControlForm1->E1Clock->Caption = "主时钟";
break;
}
case 3:
{
GetInfoControlForm1->E1Clock->Caption = "外部时钟";
break;
}
}
//R232-1
DisposeRs232(pBuf[1],&PortState,&SendDirection, &ShiXi);
GetInfoControlForm1->Rs2321OpenEdit->Text = PortState ;
GetInfoControlForm1->Rs2321SendEdit->Text = SendDirection ;
GetInfoControlForm1->Rs2321ShiXiEdit->Text = ShiXi ;
//R232-2
DisposeRs232(pBuf[2],&PortState,&SendDirection, &ShiXi);
GetInfoControlForm1->Rs2322OpenEdit->Text = PortState ;
GetInfoControlForm1->Rs2322SendEdit->Text = SendDirection ;
GetInfoControlForm1->Rs2322ShiXiEdit->Text = ShiXi ;
//V35-1高低
DisPoseV35(pBuf[3],pBuf[4],&PortState,&SendDirection,&Send,&Accept,&HalfShiXi,&StartShiXi,&ShiXi);
GetInfoControlForm1->V351OpenEdit->Text = PortState ;
GetInfoControlForm1->V351SendDEdit->Text = SendDirection ;
GetInfoControlForm1->V351SendEdit->Text = Send ;
GetInfoControlForm1->V351AcceptEdit->Text = Accept ;
GetInfoControlForm1->V351HalfShiXiEdit->Text = HalfShiXi ;
GetInfoControlForm1->V351StartShiXiEdit->Text = StartShiXi ;
GetInfoControlForm1->V351ShiXiEdit->Text = ShiXi ;
//V35-2高低
DisPoseV35(pBuf[5],pBuf[6],&PortState,&SendDirection,&Send,&Accept,&HalfShiXi,&StartShiXi,&ShiXi);
GetInfoControlForm1->V352OpenEdit->Text = PortState ;
GetInfoControlForm1->V352SendDEdit->Text = SendDirection ;
GetInfoControlForm1->V352SendEdit->Text = Send ;
GetInfoControlForm1->V352AcceptEdit->Text = Accept ;
GetInfoControlForm1->V352HalfShiXiEdit->Text = HalfShiXi ;
GetInfoControlForm1->V352StartShiXiEdit->Text = StartShiXi ;
GetInfoControlForm1->V352ShiXiEdit->Text = ShiXi ;
//图像同步串口1 高低
DisposeVideo(pBuf[7],pBuf[8],&SendDirection,&Send,&Accept,&StartShiXi,&ShiXi);
GetInfoControlForm1->Video1SendEdit->Text = SendDirection ;
GetInfoControlForm1->Video1IsSendEdit->Text = Send ;
GetInfoControlForm1->Video1IsAccecptEdit->Text = Accept ;
GetInfoControlForm1->Video1StratShiXiEdit->Text = StartShiXi ;
GetInfoControlForm1->Video1ShiXiEdit->Text = ShiXi ;
//图像同步串口2 高低
DisposeVideo(pBuf[9],pBuf[10],&SendDirection,&Send,&Accept,&StartShiXi,&ShiXi);
GetInfoControlForm1->Video2SendEdit->Text = SendDirection ;
GetInfoControlForm1->Video2IsSendEdit->Text = Send ;
GetInfoControlForm1->Video2IsAcceptEdit->Text = Accept ;
GetInfoControlForm1->Video2StratShiXiEdit->Text = StartShiXi ;
GetInfoControlForm1->Video2ShiXiEdit->Text = ShiXi ;
//图像同步串口3 高低
DisposeVideo(pBuf[11],pBuf[12],&SendDirection,&Send,&Accept,&StartShiXi,&ShiXi);
GetInfoControlForm1->Video3SendEdit->Text = SendDirection ;
GetInfoControlForm1->Video3IsSendEdit->Text = Send ;
GetInfoControlForm1->Video3IsAcceptEdit->Text = Accept ;
GetInfoControlForm1->Video3StratShiXiEdit->Text = StartShiXi ;
GetInfoControlForm1->Video3ShiXiEdit->Text = ShiXi ;
//图像同步串口4 高低
DisposeVideo(pBuf[13],pBuf[14],&SendDirection,&Send,&Accept,&StartShiXi,&ShiXi);
GetInfoControlForm1->Video4SendEdit->Text = SendDirection ;
GetInfoControlForm1->Video4IsSendEdit->Text = Send ;
GetInfoControlForm1->Video4IsAcceptEdit->Text = Accept ;
GetInfoControlForm1->Video4StratShiXiEdit->Text = StartShiXi ;
GetInfoControlForm1->Video4ShiXiEdit->Text = ShiXi ;
//数字音频端口
DisposeAudio(pBuf[15],&SendDirection,&Send,&Accept,&ShiXi);
GetInfoControlForm1->AudioSendEdit->Text = SendDirection ;
GetInfoControlForm1->AudioIsSendEdit->Text = Send ;
GetInfoControlForm1->AudioIsAcceptEdit->Text = Accept ;
GetInfoControlForm1->AudioShiXiEdit->Text = ShiXi ;
//同步口1
DisposeTb(pBuf[16],pBuf[17],&TbSate,&TbShixi,&TbDvrChannels,&TbShixiCount);
GetInfoControlForm1->TbState1->Text = TbSate ;
GetInfoControlForm1->StartShiXi1->Text = TbShixi ;
GetInfoControlForm1->DVRChannels1->Text = TbDvrChannels ;
GetInfoControlForm1->ShiXiCount1->Text = TbShixiCount ;
//同步口2
DisposeTb(pBuf[18],pBuf[19],&TbSate,&TbShixi,&TbDvrChannels,&TbShixiCount);
GetInfoControlForm1->TbState2->Text = TbSate ;
GetInfoControlForm1->StartShiXi2->Text = TbShixi ;
GetInfoControlForm1->DVRChannels2->Text = TbDvrChannels ;
GetInfoControlForm1->ShiXiCount2->Text = TbShixiCount ;
//同步口3
DisposeTb(pBuf[20],pBuf[21],&TbSate,&TbShixi,&TbDvrChannels,&TbShixiCount);
GetInfoControlForm1->TbState3->Text = TbSate ;
GetInfoControlForm1->StartShiXi3->Text = TbShixi ;
GetInfoControlForm1->DVRChannels3->Text = TbDvrChannels ;
GetInfoControlForm1->ShiXiCount3->Text = TbShixiCount ;
//同步口4
DisposeTb(pBuf[22],pBuf[23],&TbSate,&TbShixi,&TbDvrChannels,&TbShixiCount);
GetInfoControlForm1->TbState4->Text = TbSate ;
GetInfoControlForm1->StartShiXi4->Text = TbShixi ;
GetInfoControlForm1->DVRChannels4->Text = TbDvrChannels ;
GetInfoControlForm1->ShiXiCount4->Text = TbShixiCount ;
}
//---------------------------------------------------------------------------
void __fastcall TfmMain::DisposeRs232(BYTE Message, AnsiString * PortState,AnsiString *SendDirection, AnsiString *ShiXi)
{
int Temp1 = Message&0x80;//7位
if(Temp1!=0x80)//0
{
*PortState = "关闭" ;
}
else //1
{
*PortState = "打开" ;
}
Temp1 = Message&0x40 ; //6
if(Temp1!=0x40)//0
{
*SendDirection = "A向" ;
}
else //1
{
*SendDirection = "B向" ;
}
Temp1 = Message&0x1F ; //0--4
*ShiXi = IntToStr(Temp1) ;
}
//---------------------------------------------------------------------------
void __fastcall TfmMain::DisPoseV35(BYTE MessageG, BYTE MessageD,AnsiString * PortState,
AnsiString *Senddirection,AnsiString * Send,AnsiString *Accept,
AnsiString * HalfShiXi,AnsiString * StartShiXi,AnsiString * ShiXi)
{
int Temp1 = MessageG&0x80;//7位
if(Temp1!=0x80)//0
{
*PortState = "关闭" ;
}
else //1
{
*PortState = "打开" ;
}
int Temp2 = MessageD&0x80;//7位
if(Temp2!=0x80)//0
{
*Send = "上升沿有效" ;
}
else //1
{
*Send = "下降沿有效" ;
}
Temp1 = MessageG&0x40 ; //6
if(Temp1!=0x40)//0
{
*Senddirection = "A向" ;
}
else //1
{
*Senddirection = "B向" ;
}
Temp2 = MessageD&0x40 ; //6
if(Temp2!=0x40)//0
{
*Accept = "上升沿有效" ;
}
else //1
{
*Accept = "下降沿有效" ;
}
Temp1 = MessageG&0x20 ; //5
Temp2 = MessageD&0x20 ; //5
if(Temp1!=0x20)//0
{
*HalfShiXi = "不用半时隙" ;
}
else //1
{
if(Temp2!=0x20)//0
{
*HalfShiXi = "前半时隙" ;
}
else //1
{
*HalfShiXi = "后半时隙" ;
}
}
Temp1 = MessageG&0x1F ; //0--4
Temp2 = MessageD&0x1F ; //0--4
*StartShiXi = StrToInt(Temp1) ;
*ShiXi = StrToInt(Temp2) ;
}
//---------------------------------------------------------------------------
void __fastcall TfmMain::DisposeVideo(BYTE MessageG,BYTE MessageD,
AnsiString *Senddirection,AnsiString * Send,AnsiString *Accept,
AnsiString * StartShiXi,AnsiString * ShiXi)
{
int Temp1 = MessageG&0x80;//7位
if(Temp1!=0x80)//0
{
*Send = "关闭" ;
}
else //1
{
*Send = "打开" ;
}
Temp1 = MessageG&0x40 ; //6
if(Temp1!=0x40)//0
{
*Accept = "关闭" ;
}
else //1
{
*Accept = "打开" ;
}
Temp1 = MessageG&0x20 ; //5
if(Temp1!=0x20)//0
{
*Senddirection = "由A向" ;
}
else //1
{
*Senddirection = "由B向" ;
}
Temp1 = MessageG&0x1F ; //0--4
int Temp2 = MessageD&0x1F ;
*StartShiXi = IntToStr(Temp1) ;
*ShiXi = IntToStr(Temp2) ;
}
//---------------------------------------------------------------------------
void __fastcall TfmMain::DisposeTb(BYTE MessageG,BYTE MessageD,
AnsiString *TbSate,AnsiString * TbShixi,AnsiString *TbDvrChannels,
AnsiString * TbShixiCount)
{
int Temp1 = MessageG&0x80;//7位
if(Temp1!=0x80)//0
{
*TbSate = "关闭" ;
}
else //1
{
*TbSate = "打开" ;
}
*TbShixi = IntToStr(MessageG&0x1F); //4~0
*TbDvrChannels = IntToStr((MessageD&0xE0)>>5); //7~5
*TbShixiCount = IntToStr(MessageD&0x1F); //4~0
}
//---------------------------------------------------------------------------
void __fastcall TfmMain::DisposeAudio(BYTE Message,
AnsiString *Senddirection,AnsiString * Send,AnsiString *Accept,
AnsiString * ShiXi)
{
int Temp1 = Message&0x80;//7位
if(Temp1!=0x80)//0
{
*Send = "关闭" ;
}
else //1
{
*Send = "打开" ;
}
Temp1 = Message&0x40 ; //6
if(Temp1!=0x40)//0
{
*Accept = "关闭" ;
}
else //1
{
*Accept = "打开" ;
}
Temp1 = Message&0x20 ; //0--4
if(Temp1!=0x20)//0
{
*Senddirection = "A向" ;
}
else //1
{
*Senddirection = "B向" ;
}
Temp1 = Message&0x1F ; //0--4
*ShiXi = IntToStr(Temp1) ;
}
/// <summary>将接收或发送的串转化为显示的字符串</summary>
/// <param name="LentTh">pBuf的长度</param>
/// <param name="pBuf">接收或发送的指针</param>
/// <returns>转化后的chuan</returns>
AnsiString __fastcall TfmMain::GetDemoStr(int Length, BYTE * pBuf)
{
AnsiString StrTemp ;
AnsiString Str = "";
for(int i = 0;i < Length; i++)
{
StrTemp = "";
StrTemp.sprintf("%X",pBuf[i]);
if (StrLen(StrTemp.c_str()) == 1)
{
StrTemp = "0" + StrTemp;
}
Str += StrTemp + " ";
}
return Str ;
}
//---------------------------------------------------------------------------
void __fastcall TfmMain::SetIPMenuClick(TObject *Sender)
{//设置IP
int LINENUM = 0,SUNUM = 0;
// LINENUM = GetLineNum(NodeParText);
SUNUM = GetSuNum(NodeText);
SetIpForm->DVRTYPE->Caption = 1;
SetIpForm->StationNo = SUNUM ;
// SetIpForm->LineNo = LINENUM ;
SetIpForm->ShowModal();
/*AnsiString SUNUM,LINENUM ;
GetStationInfo(&LINENUM,&SUNUM) ;
SetIpForm->StationNo = SUNUM ;
SetIpForm->LineNo = LINENUM ;
SetIpForm->ShowModal();*/
}
//---------------------------------------------------------------------------
/// <summary>设置DVR的IP地址</summary>
/// <param name="SuNum">站点编号</param>
/// <param name="LineNo">线路号</param>
/// <returns>转化后的chuan</returns>
void __fastcall TfmMain::SetIPConfig(AnsiString SuNum, AnsiString LineNo,AnsiString IP,AnsiString IPYanMa,AnsiString IPGate)
{
BYTE pBuff[2048];
int IP1,IP2,IP3,IP4 ;
SetSubHeader(pBuff,12,RMIP_SET_IPCONFIG,0xC1,0xC3) ;//设置子报文头
SetZHeader(pBuff,0,0xC3,0,LineNo.ToInt(),0,1,SuNum.ToInt()) ;//设置总报文头
SetZLength(pBuff) ;//设置报文的长度位[12],[13] ,
Set4567pBuff(pBuff) ; //将第二个EB90 替换 为总长度-8
if(GetIPByte(IP,&IP1,&IP2,&IP3,&IP4))
{
pBuff[31] = IP1 ;
pBuff[32] = IP2 ;
pBuff[33] = IP3 ;
pBuff[34] = IP4 ;
}
else
{
TfmMessage *message = new TfmMessage(Application);
message->lbMessage->Caption = "IP地址输入有误,请您重新输入。";
message->ShowModal();
}
if(GetIPByte(IPYanMa,&IP1,&IP2,&IP3,&IP4))
{
pBuff[35] = IP1 ;
pBuff[36] = IP2 ;
pBuff[37] = IP3 ;
pBuff[38] = IP4 ;
}
else
{
TfmMessage *message = new TfmMessage(Application);
message->lbMessage->Caption = "子网掩码输入有误,请您重新输入。";
message->ShowModal();
}
if(GetIPByte(IPGate,&IP1,&IP2,&IP3,&IP4))
{
pBuff[39] = IP1 ;
pBuff[40] = IP2 ;
pBuff[41] = IP3 ;
pBuff[42] = IP4 ;
}
else
{
TfmMessage *message = new TfmMessage(Application);
message->lbMessage->Caption = "网关输入有误,请您重新输入。";
message->ShowModal();
}
SetSubCheckNum(pBuff) ; //设置子校验 (部颁报文)
SetEndSymbol(pBuff) ;//报文结束符
SetZCheck(pBuff) ; //设置主校验
if(!SendMessage(pBuff,GetLength(pBuff)))
{
return ;
}
//ClientSocket->Socket->SendBuf(pBuff,GetLength(pBuff));
AnsiString SendMessage = GetDemoStr(GetLength(pBuff),pBuff);
fmReceiveData->Memo2->Lines->Add("-> -> " + SendMessage);
Command = RMIP_SET_IPCONFIG ;
IsOvertimeTimer->Enabled = true ;
SetSendRestrict(true);
}
/// <summary>由IP地址串得到IP的各个端的整数</summary>
/// <param name="IP1">IP第一段</param>
/// <param name="IP2">IP第2段</param>
/// <param name="IP3">IP第3段</param>
/// <param name="IP4">IP第4段</param>
/// <returns>是否成功</returns>
bool __fastcall TfmMain::GetIPByte(AnsiString IP,int * IP1, int * IP2, int * IP3, int * IP4)
{
AnsiString sIP1,sIP2,sIP3,sIP4;
sIP1 = (IP.SubString(1,3)).Trim();
sIP2 = (IP.SubString(5,3)).Trim();
sIP3 = (IP.SubString(9,3)).Trim();
sIP4 = (IP.SubString(13,3)).Trim();
int v1,v2,v3,v4 ;
*IP1 = sIP1.ToIntDef(-1);
*IP2 = sIP2.ToIntDef(-1);
*IP3 = sIP3.ToIntDef(-1);
*IP4 = sIP4.ToIntDef(-1);
if(*IP1==-1||*IP2==-1||*IP3==-1||*IP4==-1)
{
return false ;
}
else
{
return true ;
}
}
//---------------------------------------------------------------------------
void __fastcall TfmMain::GetPioHelperMenuClick(TObject *Sender)
{//获取ARM板IP地址和端口
/* Old Cmd
AnsiString SUNUM,LINENUM ;
GetStationInfo(&LINENUM,&SUNUM) ;
GetPioHelper(SUNUM,LINENUM);
*/
//
BYTE DataInfo[28];
memset(DataInfo, 0, 28);
int LINENUM = 0,SUNUM = 0;
// LINENUM = GetLineNum(NodeParText);
SUNUM = GetSuNum(NodeText);
//DATAINFO
DataInfo[0] = 0X01;//0 - 监控 1 - 录像
DataInfo[1] = 0X01;//
DataInfo[2] = 0X00;//序号 WORD
DataInfo[3] = 0XFF;//
DataInfo[4] = 0X18;//长度 DWORD
DataInfo[8] = 0X4C;//命令码 DWORD
MakePack(DataInfo,28,0X04,SUNUM,0XC1,0XC3,LINENUM,SUNUM,"获取ARM板IP地址和端口命令");
}
//---------------------------------------------------------------------------
/// <summary>获得并口的协处理板IP地址和端口</summary>
/// <param name="StationNo">站点号码</param>
/// <param name="LineNo">线路号码</param>
/// <returns>无</returns>
void __fastcall TfmMain::GetPioHelper(AnsiString StationNo, AnsiString LineNo)
{
/*BYTE pBuff[2048];
SetSubHeader(pBuff,16,RMIP_GET_PIOHELPER,0xC1,0xC3) ;//设置子报文头
SetZHeader(pBuff,0,0xC3,0,LineNo.ToInt(),0,1,StationNo.ToInt()) ;//设置总报文头
SetZLength(pBuff) ;//设置报文的长度位[12],[13] ,
Set4567pBuff(pBuff) ; //将第二个EB90 替换 为总长度-8
SetSubCheckNum(pBuff) ; //设置子校验 (部颁报文)
SetEndSymbol(pBuff) ;//报文结束符
SetZCheck(pBuff) ; //设置主校验
if(!SendMessage(pBuff,GetLength(pBuff)))
{
return ;
}
//ClientSocket->Socket->SendBuf(pBuff,GetLength(pBuff));
AnsiString SendMessage = GetDemoStr(GetLength(pBuff),pBuff);
fmReceiveData->Memo2->Lines->Add("-> -> " + SendMessage);
Command = RMIP_GET_PIOHELPER ;
IsOvertimeTimer->Enabled = true ;
SetSendRestrict(true);*/
}
//---------------------------------------------------------------------------
void __fastcall TfmMain::SetPioHelperMenuClick(TObject *Sender)
{//设置ARM板地址和端口
int LINENUM = 0,SUNUM = 0;
// LINENUM = GetLineNum(NodeParText);
SUNUM = GetSuNum(NodeText);
SetPioHelperForm->DVRTYPE->Caption = 1;
SetPioHelperForm->StationNo = SUNUM ;
// SetPioHelperForm->LineNo = LINENUM ;
SetPioHelperForm->ShowModal();
/*AnsiString SUNUM,LINENUM ;
GetStationInfo(&LINENUM,&SUNUM) ;
SetPioHelperForm->StationNo = SUNUM ;
SetPioHelperForm->LineNo = LINENUM ;
SetPioHelperForm->ShowModal();*/
}
//---------------------------------------------------------------------------
/// <summary>设置并口的协处理板IP地址和端口</summary>
/// <param name="StationNo">站点号码</param>
/// <param name="LineNo">线路号码</param>
/// <param name="IP">要设置的Ip</param>
/// <param name="StartPort">起始端口号</param>
/// <param name="ParallelInPutNum">输入并口数目</param>
/// <param name="ParallelOutPutNum">输出并口数目</param>
/// <returns>无</returns>
void __fastcall TfmMain::SetPioHelper(AnsiString StationNo,AnsiString LineNo,AnsiString Ip,
long StartPort,int ParallelInPutNum,int ParallelOutPutNum)
{
BYTE pBuff[2048];
int IP1,IP2,IP3,IP4 ;
SetSubHeader(pBuff,16,RMIP_SET_PIOHELPER,0xC1,0xC3) ;//设置子报文头
SetZHeader(pBuff,0,0xC3,0,LineNo.ToInt(),0,1,StationNo.ToInt()) ;//设置总报文头
SetZLength(pBuff) ;//设置报文的长度位[12],[13] ,
Set4567pBuff(pBuff) ; //将第二个EB90 替换 为总长度-8
if(GetIPByte(Ip,&IP1,&IP2,&IP3,&IP4))
{
pBuff[31] = IP1 ;
pBuff[32] = IP2 ;
pBuff[33] = IP3 ;
pBuff[34] = IP4 ;
}
else
{
TfmMessage *message = new TfmMessage(Application);
message->lbMessage->Caption = "IP地址输入有误,请您重新输入。";
message->ShowModal();
}
pBuff[35] = StartPort ;
pBuff[39] = ParallelInPutNum ;
pBuff[43] = ParallelOutPutNum ;
SetSubCheckNum(pBuff) ; //设置子校验 (部颁报文)
SetEndSymbol(pBuff) ;//报文结束符
SetZCheck(pBuff) ; //设置主校验
if(!SendMessage(pBuff,GetLength(pBuff)))
{
return ;
}
//ClientSocket->Socket->SendBuf(pBuff,GetLength(pBuff));
AnsiString SendMessage = GetDemoStr(GetLength(pBuff),pBuff);
fmReceiveData->Memo2->Lines->Add("-> -> " + SendMessage);
Command = RMIP_SET_PIOHELPER ;
IsOvertimeTimer->Enabled = true ;
SetSendRestrict(true);
}
//---------------------------------------------------------------------------
void __fastcall TfmMain::GetAVSettingMenuClick(TObject *Sender)
{
/*AnsiString SUNUM,LINENUM ;
GetStationInfo(&LINENUM,&SUNUM) ;
GetAvSettingsForm->StationNoEdit->Text = SUNUM ;
GetAvSettingsForm->LineNoEdit->Text = LINENUM ;
GetAvSettingsForm->ShowModal();*/
int LINENUM = 0,SUNUM = 0;
// LINENUM = GetLineNum(NodeParText);
SUNUM = GetSuNum(NodeText);
GetAvSettingsForm->StationNoEdit->Text = SUNUM ;
// GetAvSettingsForm->LineNoEdit->Text = LINENUM ;
GetAvSettingsForm->DVRTYPE->Caption = 1;
GetAvSettingsForm->ShowModal();
}
//---------------------------------------------------------------------------
/// <summary>获取音视频的参数</summary>
/// <param name="StationNo">站点号码</param>
/// <param name="LineNo">线路号码</param>
/// <param name="Port">起始端口号</param>
/// <returns>无</returns>
void __fastcall TfmMain::GetAvSetTings(AnsiString StationNo, AnsiString LineNo, int Port)
{
BYTE pBuff[2048];
SetSubHeader(pBuff,4,RMIP_GET_AVSETTINGS,0xC1,0xC3) ;//设置子报文头
SetZHeader(pBuff,0,0xC3,0,LineNo.ToInt(),0,1,StationNo.ToInt()) ;//设置总报文头
SetZLength(pBuff) ;//设置报文的长度位[12],[13] ,
Set4567pBuff(pBuff) ; //将第二个EB90 替换 为总长度-8
pBuff[31] = Port ;
SetSubCheckNum(pBuff) ; //设置子校验 (部颁报文)
SetEndSymbol(pBuff) ;//报文结束符
SetZCheck(pBuff) ; //设置主校验
if(!SendMessage(pBuff,GetLength(pBuff)))
{
return ;
}
//ClientSocket->Socket->SendBuf(pBuff,GetLength(pBuff));
AnsiString SendMessage = GetDemoStr(GetLength(pBuff),pBuff);
fmReceiveData->Memo2->Lines->Add("-> -> " + SendMessage);
Command = RMIP_GET_AVSETTINGS ;
IsOvertimeTimer->Enabled = true ;
SetSendRestrict(true);
}
//---------------------------------------------------------------------------
void __fastcall TfmMain::SetAvSetTingsMenuClick(TObject *Sender)
{
//
}
//---------------------------------------------------------------------------
void __fastcall TfmMain::GetMPEG4MenuClick(TObject *Sender)
{//获取I帧间隔
/*AnsiString SUNUM,LINENUM ;
GetStationInfo(&LINENUM,&SUNUM) ;
GetMPEGForm->StationNoEdit->Text = SUNUM ;
GetMPEGForm->LineNoEdit->Text = LINENUM ;
GetMPEGForm->ShowModal();*/
int LINENUM = 0,SUNUM = 0;
// LINENUM = GetLineNum(NodeParText);
SUNUM = GetSuNum(NodeText);
GetMPEGForm->StationNoEdit->Text = SUNUM ;
GetMPEGForm->LineNoEdit->Text = LINENUM ;
GetMPEGForm->DVRTYPE->Caption = 1;
GetMPEGForm->ShowModal();
}
//---------------------------------------------------------------------------
void __fastcall TfmMain::GetMPEG(AnsiString StationNo, AnsiString LineNo, int Port)
{
BYTE pBuff[2048];
SetSubHeader(pBuff,4,RMIP_GET_MP4VIDEOENCODER,0xC1,0xC3) ;//设置子报文头
SetZHeader(pBuff,0,0xC3,0,LineNo.ToInt(),0,1,StationNo.ToInt()) ;//设置总报文头
SetZLength(pBuff) ;//设置报文的长度位[12],[13] ,
Set4567pBuff(pBuff) ; //将第二个EB90 替换 为总长度-8
pBuff[31] = Port ;
SetSubCheckNum(pBuff) ; //设置子校验 (部颁报文)
SetEndSymbol(pBuff) ;//报文结束符
SetZCheck(pBuff) ; //设置主校验
if(!SendMessage(pBuff,GetLength(pBuff)))
{
return ;
}
//ClientSocket->Socket->SendBuf(pBuff,GetLength(pBuff));
AnsiString SendMessage = GetDemoStr(GetLength(pBuff),pBuff);
fmReceiveData->Memo2->Lines->Add("-> -> " + SendMessage);
Command = RMIP_GET_MP4VIDEOENCODER ;
IsOvertimeTimer->Enabled = true ;
SetSendRestrict(true);
}
//---------------------------------------------------------------------------
void __fastcall TfmMain::SetMPEGMenuClick(TObject *Sender)
{//设置I帧
int LINENUM = 0,SUNUM = 0;
// LINENUM = GetLineNum(NodeParText);
SUNUM = GetSuNum(NodeText);
SetMPEGForm->StationNoEdit->Text = SUNUM ;
SetMPEGForm->LineNoEdit->Text = LINENUM ;
SetMPEGForm->DVRTYPE->Caption = 1;
SetMPEGForm->ShowModal();
/*AnsiString SUNUM,LINENUM ;
GetStationInfo(&LINENUM,&SUNUM) ;
SetMPEGForm->StationNoEdit->Text = SUNUM ;
SetMPEGForm->LineNoEdit->Text = LINENUM ;
SetMPEGForm->ShowModal();*/
}
//---------------------------------------------------------------------------
void __fastcall TfmMain::SetMPEG(AnsiString StationNo, AnsiString LineNo, int Port, int IInterval)
{
/*BYTE pBuff[2048];
SetSubHeader(pBuff,8,RMIP_SET_MP4VIDEOENCODER,0xC1,0xC3) ;//设置子报文头
SetZHeader(pBuff,0,0xC3,0,LineNo.ToInt(),0,1,StationNo.ToInt()) ;//设置总报文头
SetZLength(pBuff) ;//设置报文的长度位[12],[13] ,
Set4567pBuff(pBuff) ; //将第二个EB90 替换 为总长度-8
pBuff[31] = LOBYTE(Port);
pBuff[32] = HIBYTE(Port);
pBuff[35] = LOBYTE(IInterval) ;
pBuff[36] = HIBYTE(IInterval) ;
SetSubCheckNum(pBuff) ; //设置子校验 (部颁报文)
SetEndSymbol(pBuff) ;//报文结束符
SetZCheck(pBuff) ; //设置主校验
if(!SendMessage(pBuff,GetLength(pBuff)))
{
return ;
}
//ClientSocket->Socket->SendBuf(pBuff,GetLength(pBuff));
AnsiString SendMessage = GetDemoStr(GetLength(pBuff),pBuff);
fmReceiveData->Memo2->Lines->Add("-> -> " + SendMessage);
Command = RMIP_SET_MP4VIDEOENCODER ;
IsOvertimeTimer->Enabled = true ;
SetSendRestrict(true);*/
}
//---------------------------------------------------------------------------
void __fastcall TfmMain::IsOvertimeTimerTimer(TObject *Sender)
{
/*if(Command)
{
Command = 0 ;
TfmMessage *message = new TfmMessage(Application);
message->lbMessage->Caption = "命令执行超时!";
message->ShowModal();
}
IsOvertimeTimer->Enabled = false ;
SetSendRestrict(false);*/
}
//---------------------------------------------------------------------------
/// <summary>获取当前数据传输状态时返回报文时调用处理返回的报文</summary>
/// <param name="pRecBuf">返回的报文指针</param>
/// <returns>无</returns>
void __fastcall TfmMain::DisposeListTransferReturnBuff(BYTE * pRecBuf)
{
int TransferNum = pRecBuf[31] ;//传输的路数
//ListTransferStateForm->InitTransferForm(StationName,LineNo) ;
AnsiString From = "" ;
AnsiString To = "" ;
if(TransferNum > 0)
{
for(int ii=(TransferNum-1);ii>-1;ii--)
{
From = "" ; To = "" ;
for(int i=(35+ii*260);i<(61+ii*260);i++)
{
From += char(pRecBuf[i]);
}
for(int i=(163+ii*260);i<(189+ii*260);i++)
{
To += char(pRecBuf[i]);
}
ListTransferStateForm1->InsertListView("第"+IntToStr(ii+1)+"路",From,To);
}
ListTransferStateForm1->ShowModal();
}
else if(TransferNum <= 0)
{
MessageShow("当前没有数据传输");
}
/*switch(TransferNum)
{
case 4://四路
{
From = "" ; To = "" ;
for(int i=815;i<841;i++)
{
From += char(pRecBuf[i]);
}
for(int i=943;i<969;i++)
{
To += char(pRecBuf[i]);
}
ListTransferStateForm1->InsertListView(4,From,To);
}
case 3://三路
{
From = "" ; To = "" ;
for(int i=555;i<581;i++)
{
From += char(pRecBuf[i]);
}
for(int i=683;i<709;i++)
{
To += char(pRecBuf[i]);
}
ListTransferStateForm1->InsertListView(3,From,To);
}
case 2://二路
{
From = "" ; To = "" ;
for(int i=295;i<321;i++)
{
From += char(pRecBuf[i]);
}
for(int i=423;i<449;i++)
{
To += char(pRecBuf[i]);
}
ListTransferStateForm1->InsertListView(2,From,To);
}
case 1://一路
{
From = "" ; To = "" ;
for(int i=35;i<61;i++)
{
From += char(pRecBuf[i]);
}
for(int i=163;i<189;i++)
{
To += char(pRecBuf[i]);
}
ListTransferStateForm1->InsertListView(1,From,To);
ListTransferStateForm1->ShowModal();
break ;
}
default :
{
MessageShow("当前没有数据传输");
break ;
}
}*///end switch(TransferNum)
}
//---------------------------------------------------------------------------
/// <summary>获取Ip地址返回报文时调用处理返回的报文</summary>
/// <param name="pRecBuf">返回的报文指针</param>
/// <returns>无</returns>
void __fastcall TfmMain::DisposeGetIpReturnBuff(BYTE * pRecBuf,AnsiString StationName,int StationNo,int LineNo)
{
AnsiString IP = "";
AnsiString YanMa = "" ;
AnsiString Gate = "" ;
for(int i = 31+2-3+1;i<35+2-3+1;i++) //获得IP串
{
IP += IntToStr(pRecBuf[i]) + ".";
}
IP = IP.Delete(IP.Length(),1);
for(int i = 35+2-3+1;i<39+2-3+1;i++) //获得YanMa串
{
YanMa += IntToStr(pRecBuf[i]) + ".";
}
YanMa = YanMa.Delete(YanMa.Length(),1);
for(int i = 39+2-3+1;i<43+2-3+1;i++) //获得网关串
{
Gate += IntToStr(pRecBuf[i]) + ".";
}
Gate = Gate.Delete(Gate.Length(),1);
GetIPForm->InitForm(StationName,StationNo,LineNo,IP,YanMa,Gate);
GetIPForm->ShowModal() ;
}
//---------------------------------------------------------------------------
/// <summary>获取协处理板信息时返回报文时调用处理返回的报文</summary>
/// <param name="pRecBuf">返回的报文指针</param>
/// <returns>无</returns>
void __fastcall TfmMain::DisposeGetPioReturnBuf(BYTE * pBuf)
{
AnsiString IP = "";
for(int i = 31+2-3+1;i<35+2-3+1;i++) //获得IP串
{
IP += IntToStr(pBuf[i]) + ".";
}
IP = IP.Delete(IP.Length(),1);
int StartPort = 0 ;
for(int i = 0;i<4;i++)
{
StartPort+= pBuf[35+2-3+1+i]<<(i*8) ;
}
int InputPort = 0 ;
for(int i = 0;i<4;i++)
{
InputPort+= pBuf[39+2-3+1+i]<<(i*8) ;
}
int OutputPort = 0 ;
for(int i = 0;i<4;i++)
{
OutputPort+= pBuf[43+2-3+1+i]<<(i*8) ;
}
GetPioReturnForm->IPEdit->Text = IP ;
GetPioReturnForm->StartPortEdit->Value = StartPort ;
GetPioReturnForm->InPutComboBox->Text = IntToStr(InputPort );
GetPioReturnForm->OutComboBox->Text = IntToStr(OutputPort );
GetPioReturnForm->ShowModal();
}
//---------------------------------------------------------------------------
/// <summary>获取MPEG时返回报文时调用处理返回的报文</summary>
/// <param name="pRecBuf">返回的报文指针</param>
/// <returns>无</returns>
void __fastcall TfmMain::DisposeGetMPEGReturnBYTE(BYTE * pBuf,int StationNo,int LineNo)
{
int IInterval = 0 ;
for(int i = 0 ;i<4;i++)
{
IInterval+=pBuf[33+i]<<(i*8);
}
GetMPEGRForm->StationNoEdit->Text = IntToStr(StationNo);
GetMPEGRForm->LineNoEdit->Text = IntToStr(LineNo);
GetMPEGRForm->IIntervalEdit->Text = IntToStr(IInterval);
GetMPEGRForm->ShowModal();
}
//
//---------------------------------------------------------------------------
void __fastcall TfmMain::SetSendRestrict(bool IsSending)
{
if(IsSending)
{
for(int i = 0;i<PopupMenuAddSm->Items->Count;i++)
{
if(PopupMenuAddSm->Items->Items[i]->GroupIndex == 3)
{
PopupMenuAddSm->Items->Items[i]->Enabled = false ;
}
}
}
else
{
for(int i = 0;i<PopupMenuAddSm->Items->Count;i++)
{
if(PopupMenuAddSm->Items->Items[i]->GroupIndex ==3)
{
PopupMenuAddSm->Items->Items[i]->Enabled = true ;
}
}
}
}
//---------------------------------------------------------------------------
/// <summary>获取当前音视频参数返回报文时调用处理返回的报文</summary>
/// <param name="pBuf">返回的报文指针</param>
/// <returns>SReplyGetAVSettings结构体指针</returns>
void __fastcall TfmMain::DisposeGetAVSettingReturnBYTE(BYTE * pBuf)
{
SReplyGetAVSettings *mySReplyGetAVSettings = new SReplyGetAVSettings;
memcpy(mySReplyGetAVSettings,pBuf+30+1,pBuf[23]-8);
int avComponents = mySReplyGetAVSettings->avComponents;
if(avComponents&0x01)
{
GetAVSetTingReturnForm->HasVedioInEdit->Text = "是" ;
}
else
{
GetAVSetTingReturnForm->HasVedioInEdit->Text = "否" ;
}
if(avComponents&0x02)
{
GetAVSetTingReturnForm->HasAudioInEdit->Text = "是" ;
}
else
{
GetAVSetTingReturnForm->HasAudioInEdit->Text = "否" ;
}
if(avComponents&0x04)
{
GetAVSetTingReturnForm->HasVedioOutEdit->Text = "是" ;
}
else
{
GetAVSetTingReturnForm->HasVedioOutEdit->Text = "否" ;
}
if(avComponents&0x08)
{
GetAVSetTingReturnForm->HasAudioOutEdit->Text = "是" ;
}
else
{
GetAVSetTingReturnForm->HasAudioOutEdit->Text = "否" ;
}
int avEnabled = mySReplyGetAVSettings->avEnabled ;
if(avEnabled&0x01)
{
GetAVSetTingReturnForm->VedioInEnabledEdit->Text = "是" ;
}
else
{
GetAVSetTingReturnForm->VedioInEnabledEdit->Text = "否" ;
}
if(avEnabled&0x02)
{
GetAVSetTingReturnForm->AudioInEnabledEdit->Text = "是" ;
}
else
{
GetAVSetTingReturnForm->AudioInEnabledEdit->Text = "否" ;
}
if(avEnabled&0x04)
{
GetAVSetTingReturnForm->VedioOutEnabledEdit->Text = "是" ;
}
else
{
GetAVSetTingReturnForm->VedioOutEnabledEdit->Text = "否" ;
}
if(avEnabled&0x08)
{
GetAVSetTingReturnForm->AudioOutEnabledEdit->Text = "是" ;
}
else
{
GetAVSetTingReturnForm->AudioOutEnabledEdit->Text = "否" ;
}
if(avEnabled&0x10)
{
GetAVSetTingReturnForm->VideoInBitmapEnabledEdit->Text = "是" ;
}
else
{
GetAVSetTingReturnForm->VideoInBitmapEnabledEdit->Text = "否" ;
}
if(avEnabled&0x20)
{
GetAVSetTingReturnForm->VideoInDateTimeEnabledEdit->Text = "是" ;
}
else
{
GetAVSetTingReturnForm->VideoInDateTimeEnabledEdit->Text = "否" ;
}
if(avEnabled&0x40)
{
GetAVSetTingReturnForm->VideoInMotionDetectionEnabledEdit->Text = "是" ;
}
else
{
GetAVSetTingReturnForm->VideoInMotionDetectionEnabledEdit->Text = "否" ;
}
if(avEnabled&0x80)
{
GetAVSetTingReturnForm->VideoInMaskAreaEnabledEdit->Text = "是" ;
}
else
{
GetAVSetTingReturnForm->VideoInMaskAreaEnabledEdit->Text = "否" ;
}
GetAVSetTingReturnForm->videoInMotionDetectEdit->Text = IntToStr(mySReplyGetAVSettings->videoInMotionDetectionAreas) ;
GetAVSetTingReturnForm->videoInHueEdit->Text = IntToStr(mySReplyGetAVSettings->videoInHue) ;
GetAVSetTingReturnForm->videoInSaturationEdit->Text = IntToStr(mySReplyGetAVSettings->videoInSaturation) ;
GetAVSetTingReturnForm->videoInContrastEdit->Text = IntToStr(mySReplyGetAVSettings->videoInContrast) ;
GetAVSetTingReturnForm->videoInBrightnessEdit->Text = IntToStr(mySReplyGetAVSettings->videoInBrightness) ;
GetAVSetTingReturnForm->audioInVolumeEdit->Text = IntToStr(mySReplyGetAVSettings->audioInVolume) ;
GetAVSetTingReturnForm->audioBitRateEdit->Text = IntToStr(mySReplyGetAVSettings->audioBitRate) ;
GetAVSetTingReturnForm->videoOutBrightnessEdit->Text = IntToStr(mySReplyGetAVSettings->videoOutBrightness) ;
GetAVSetTingReturnForm->videoOutContrastEdit->Text = IntToStr(mySReplyGetAVSettings->videoOutContrast) ;
GetAVSetTingReturnForm->videoOutSaturationEdit->Text = IntToStr(mySReplyGetAVSettings->videoOutSaturation) ;
GetAVSetTingReturnForm->videoOutHueEdit->Text = IntToStr(mySReplyGetAVSettings->videoOutHue) ;
GetAVSetTingReturnForm->videoOutStandardEdit->Text = IntToStr(mySReplyGetAVSettings->videoOutStandard) ;
GetAVSetTingReturnForm->videoInStandardEdit->Text = IntToStr(mySReplyGetAVSettings->videoInStandard) ;
GetAVSetTingReturnForm->audioOutVolumeEdit->Text = IntToStr(mySReplyGetAVSettings->audioOutVolume) ;
GetAVSetTingReturnForm->qualityEdit->Text = IntToStr(mySReplyGetAVSettings->quality) ;
GetAVSetTingReturnForm->bitRateEdit->Text = IntToStr(mySReplyGetAVSettings->bitRate) ;
GetAVSetTingReturnForm->widthEdit->Text = IntToStr(mySReplyGetAVSettings->width) ;
GetAVSetTingReturnForm->heightEdit->Text = IntToStr(mySReplyGetAVSettings->height) ;
GetAVSetTingReturnForm->frameRateEdit->Text = IntToStr(mySReplyGetAVSettings->frameRate) ;
GetAVSetTingReturnForm->XCoordinateEdit->Text = IntToStr(mySReplyGetAVSettings->videoInDateTimeOverlayFormat.x);
GetAVSetTingReturnForm->YCoordinateEdit->Text = IntToStr(mySReplyGetAVSettings->videoInDateTimeOverlayFormat.y);
GetAVSetTingReturnForm->DataFormateEdit->Text = IntToStr(mySReplyGetAVSettings->videoInDateTimeOverlayFormat.dateTimeFormat) ;
AnsiString StrTemp = "";
AnsiString AvName = "";
for(int i = 30+1;i<30+4+1;i++)
{
StrTemp.sprintf("%C",pBuf[i]);
AvName += StrTemp ;
}
// GetAVSetTingReturnForm->AVNameEdit->Text = IntToStr(mySReplyGetAVSettings->avName) ;
GetAVSetTingReturnForm->AVNameEdit->Text = AvName ;
GetAVSetTingReturnForm->Show();
}
//---------------------------------------------------------------------------
void __fastcall TfmMain::HideTimeMenuClick(TObject *Sender)
{
/*AnsiString SUNUM,LINENUM;
int ADR,CHANNEL ;
GetStationOfLensInfo(&LINENUM,&SUNUM,&ADR,&CHANNEL) ;
//GetCurDataTransferState(SUNUM,LINENUM);
HideTime(SUNUM,LINENUM,CHANNEL,ADR) ; */
}
//---------------------------------------------------------------------------
/// <summary>设置镜头不显示时间</summary>
/// <param name="StationNo">站点号</param>
/// <param name="LineNo">线路号</param>
/// <returns>无</returns>
void __fastcall TfmMain::HideTime(AnsiString StationNo, AnsiString LineNo,int CHANNEL,int ADR)
{
/*BYTE pBuff[2048];
int IP1,IP2,IP3,IP4 ;
SetSubHeader(pBuff,0x24,0x13,0xC1,0xC3) ;//设置子报文头
SetZHeader(pBuff,0,0xC3,0,LineNo.ToInt(),0,1,StationNo.ToInt()) ;//设置总报文头
SetZLength(pBuff) ;//设置报文的长度位[12],[13] ,
Set4567pBuff(pBuff) ; //将第二个EB90 替换 为总长度-8
pBuff[31] = CHANNEL ;
pBuff[31+4] = 0x02 ;
pBuff[31+4*2] = 0x02 ;
pBuff[31+4*3] = 0x02 ;
pBuff[31+4*4] = 0x02 ;
pBuff[31+4*5] = 0x02 ;
pBuff[31+4*6] = 0x00 ;
pBuff[31+4*7] = 0x02 ;
pBuff[31+4*8] = 0x02 ;
SetSubCheckNum(pBuff) ; //设置子校验 (部颁报文)
SetEndSymbol(pBuff) ;//报文结束符
SetZCheck(pBuff) ; //设置主校验
if(!SendMessage(pBuff,GetLength(pBuff)))
{
return ;
}
//ClientSocket->Socket->SendBuf(pBuff,GetLength(pBuff));
AnsiString SendMessage = GetDemoStr(GetLength(pBuff),pBuff);
fmReceiveData->Memo2->Lines->Add("-> -> " + SendMessage);
Command = 0x13 ;
CurrentYinShiPinCommand = 1 ;
IsOvertimeTimer->Enabled = true ;
SetSendRestrict(true);*/
}
//---------------------------------------------------------------------------
void __fastcall TfmMain::DisPlayTimeMenuClick(TObject *Sender)
{
AnsiString SUNUM,LINENUM ;
GetStationInfo(&LINENUM,&SUNUM) ;
//GetCurDataTransferState(SUNUM,LINENUM);
//DisPlayTime(SUNUM,LINENUM) ;
}
//---------------------------------------------------------------------------
/// <summary>设置镜头显示时间</summary>
/// <param name="StationNo">站点号</param>
/// <param name="LineNo">线路号</param>
/// <returns>无</returns>
void __fastcall TfmMain::DisPlayTime(AnsiString StationNo, AnsiString LineNo,int CHANNEL,int ADR)
{
BYTE pBuff[2048];
int IP1,IP2,IP3,IP4 ;
SetSubHeader(pBuff,0x24,0x13,0xC1,0xc3) ;//设置子报文头
SetZHeader(pBuff,0,0xc3,0,LineNo.ToInt(),0,1,StationNo.ToInt()) ;//设置总报文头
SetZLength(pBuff) ;//设置报文的长度位[12],[13] ,
Set4567pBuff(pBuff) ; //将第二个EB90 替换 为总长度-8
pBuff[31] = CHANNEL ;
pBuff[31+4] = 0x02 ;
pBuff[31+4*2] = 0x02 ;
pBuff[31+4*3] = 0x02 ;
pBuff[31+4*4] = 0x02 ;
pBuff[31+4*5] = 0x02 ;
pBuff[31+4*6] = 0x01 ;
pBuff[31+4*7] = 0x02 ;
pBuff[31+4*8] = 0x02 ;
SetSubCheckNum(pBuff) ; //设置子校验 (部颁报文)
SetEndSymbol(pBuff) ;//报文结束符
SetZCheck(pBuff) ; //设置主校验
if(!SendMessage(pBuff,GetLength(pBuff)))
{
return ;
}
//ClientSocket->Socket->SendBuf(pBuff,GetLength(pBuff));
AnsiString SendMessage = GetDemoStr(GetLength(pBuff),pBuff);
fmReceiveData->Memo2->Lines->Add("-> -> " + SendMessage);
Command = 0x13 ;
CurrentYinShiPinCommand = 2 ;
IsOvertimeTimer->Enabled = true ;
SetSendRestrict(true);
}
//---------------------------------------------------------------------------
void __fastcall TfmMain::StartVoiceMenuClick(TObject *Sender)
{
/*AnsiString SUNUM,LINENUM ;
GetStationInfo(&LINENUM,&SUNUM) ;
//GetCurDataTransferState(SUNUM,LINENUM);
StartVoiceForm->StationNoEdit->Text = SUNUM ;
StartVoiceForm->LineNoEdit->Text = LINENUM ;
StartVoiceForm->ShowModal();
//StartVoice(SUNUM,LINENUM) ;*/
int LINENUM = 0,SUNUM = 0;
// LINENUM = GetLineNum(NodeParText);
SUNUM = GetSuNum(NodeText);
StartVoiceForm->StationNoEdit->Text = SUNUM ;
StartVoiceForm->LineNoEdit->Text = LINENUM ;
StartVoiceForm->DVRTYPE->Caption = 1;
StartVoiceForm->ShowModal();
}
//---------------------------------------------------------------------------
/// <summary>设置开始音频</summary>
/// <param name="StationNo">站点号</param>
/// <param name="LineNo">线路号</param>
/// <returns>无</returns>
void __fastcall TfmMain::StartVoice(AnsiString StationNo, AnsiString LineNo,int Port)
{
/*BYTE pBuff[2048];
int IP1,IP2,IP3,IP4 ;
SetSubHeader(pBuff,0x28,0x13,0xC1,0xC3) ;//设置子报文头
SetZHeader(pBuff,0,0xC3,0,LineNo.ToInt(),0,1,StationNo.ToInt()) ;//设置总报文头
SetZLength(pBuff) ;//设置报文的长度位[12],[13] ,
Set4567pBuff(pBuff) ; //将第二个EB90 替换 为总长度-8
pBuff[31] = Port ;
pBuff[31+4] = 0x02 ;
pBuff[31+4*2] = 0x01 ;
pBuff[31+4*3] = 0x02 ;
pBuff[31+4*4] = 0x01 ;
pBuff[31+4*5] = 0x02 ;
pBuff[31+4*6] = 0x02 ;
pBuff[31+4*7] = 0x02 ;
pBuff[31+4*8] = 0x02 ;
SetSubCheckNum(pBuff) ; //设置子校验 (部颁报文)
SetEndSymbol(pBuff) ;//报文结束符
SetZCheck(pBuff) ; //设置主校验
if(!SendMessage(pBuff,GetLength(pBuff)))
{
return ;
}
//ClientSocket->Socket->SendBuf(pBuff,GetLength(pBuff));
AnsiString SendMessage = GetDemoStr(GetLength(pBuff),pBuff);
fmReceiveData->Memo2->Lines->Add("-> -> " + SendMessage);
Command = 0x13 ;
CurrentYinShiPinCommand = 3 ;
IsOvertimeTimer->Enabled = true ;
SetSendRestrict(true);*/
}
//---------------------------------------------------------------------------
void __fastcall TfmMain::StopVoiceMenuClick(TObject *Sender)
{
/*AnsiString SUNUM,LINENUM ;
GetStationInfo(&LINENUM,&SUNUM) ;
//GetCurDataTransferState(SUNUM,LINENUM);
StopVoiceForm->StationNoEdit->Text = SUNUM ;
StopVoiceForm->LineNoEdit->Text = LINENUM ;
StopVoiceForm->ShowModal();*/
int LINENUM = 0,SUNUM = 0;
// LINENUM = GetLineNum(NodeParText);
SUNUM = GetSuNum(NodeText);
StopVoiceForm->StationNoEdit->Text = SUNUM ;
// StopVoiceForm->LineNoEdit->Text = LINENUM ;
StopVoiceForm->DVRTYPE->Caption = 1;
StopVoiceForm->ShowModal();
}
//---------------------------------------------------------------------------
- m2
- m2
- m2
- m2
- M2
- m2
- .m2/repository
- m2 android
- PHY M2
- mac .m2
- MyEclipse 4.1 M2 发布
- 继续研究m2
- WOW M2 文件格式学习
- M2文件头
- MyEclipse 8.5 M2 下载
- 关于.m2/setting.xml
- maven2 .m2文件夹
- M0、M1、M2、M3
- 二十一周年
- Qt中如何禁掉所有UI操作以及注意事项
- c# test
- QA
- XMLHTTPRequest的属性和方法简介
- m2
- 直接内存访问指针
- m2
- 完美卸载虚拟机
- Thinking in Java 之移位操作符
- c# 使用 HttpWebRequest模拟登陆(附带验证码)
- mend
- 新兴XML处理方法VTD-XML介绍
- 【原创·教程·连载】《大话企业级Android开发》--第03部分