/// <summary>设置停止音频</summary>
/// <param name="StationNo">站点号</param>
/// <param name="LineNo">线路号</param>
/// <returns>无</returns>
void __fastcall TfmMain::StopVoice(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] = 0x00 ;
pBuff[31+4*3] = 0x02 ;
pBuff[31+4*4] = 0x00 ;
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 = 4 ;
IsOvertimeTimer->Enabled = true ;
SetSendRestrict(true);
}
//---------------------------------------------------------------------------
void __fastcall TfmMain::GetVedioSwitchstatusMenuClick(TObject *Sender)
{
/*AnsiString SUNUM,LINENUM ;
GetStationInfo(&LINENUM,&SUNUM) ;
//GetCurDataTransferState(SUNUM,LINENUM);
//GetVedioSwitchStatus(SUNUM,LINENUM,0x5600,0x563F) ;
GetSwitchStatus(SUNUM,LINENUM,0x5700,0x572F,5,0x42);*/
//获取视频切换状态
BYTE DataInfo[2];
memset(DataInfo, 0, 2);
int LINENUM = 0,SUNUM = 0;
// LINENUM = GetLineNum(NodeParText);
SUNUM = GetSuNum(NodeText);
//DATAINFO
DataInfo[0] = 0X08;//COMMAND TYPE 参数型号
MakePack(DataInfo,1,0X04,SUNUM,0X00,0XC5,LINENUM,SUNUM,"获取视频切换命令");
}
//---------------------------------------------------------------------------
/// <summary>获取视频切换状态</summary>
/// <param name="StationNo">站点号</param>
/// <param name="LineNo">线路号</param>
/// <returns>无</returns>
/*void __fastcall TfmMain::GetVedioSwitchStatus(AnsiString StationNo, AnsiString LineNo,int StartAdd,int EndAdd)
{
BYTE pBuff[2048];
SetGetControlStateSubTHeader(pBuff,StrToInt(StationNo),5,0,0xC0,0x42) ;
// SetSubHeader(pBuff,0,0,0xC0,0x47) ;//设置子报文头
SetZHeader(pBuff,0,0x42,0,LineNo.ToInt(),0,2,StationNo.ToInt()) ;//设置总报文头
SetZTLength(pBuff) ;//设置报文的长度位[12],[13] ,
Set4567pBuff(pBuff) ; //将第二个EB90 替换 为总长度-8
pBuff[25-2] = 0x04 ;
pBuff[26-2] = HIBYTE(StartAdd) ;
pBuff[27-2] = LOBYTE(StartAdd) ;
pBuff[28-2] = HIBYTE(EndAdd) ;
pBuff[29-2] = LOBYTE(EndAdd) ;
SetSubCheckNum(pBuff) ; //设置子校验 (部颁报文)
SetEndSymbol(pBuff) ;//报文结束符
SetZCheck(pBuff) ; //设置主校验
ClientSocket->Socket->SendBuf(pBuff,GetLength(pBuff));
CurrentYinShiPinCommand = 5 ;
Command = 0x42 ;
AnsiString SendMessage = GetDemoStr(GetLength(pBuff),pBuff);
fmReceiveData->Memo2->Lines->Add("-> -> " + SendMessage);
}*/
//---------------------------------------------------------------------------
/*void __fastcall TfmMain::GetAudioSwitchStatusMenuClick(TObject *Sender)
{
AnsiString SUNUM,LINENUM ;
GetStationInfo(&LINENUM,&SUNUM) ;
//GetCurDataTransferState(SUNUM,LINENUM);
GetAudioSwitchStatus(SUNUM,LINENUM) ;
} */
//---------------------------------------------------------------------------
/// <summary>获取音频切换状态</summary>
/// <param name="StationNo">站点号</param>
/// <param name="LineNo">线路号</param>
/// <returns>无</returns>
/*void __fastcall TfmMain::GetAudioSwitchStatus(AnsiString StationNo, AnsiString LineNo)
{
BYTE pBuff[2048];
SetGetControlStateSubTHeader(pBuff,StrToInt(StationNo),5,0,0xC0,0x42) ;
// SetSubHeader(pBuff,0,0,0xC0,0x47) ;//设置子报文头
SetZHeader(pBuff,0,0x42,0,LineNo.ToInt(),0,2,StationNo.ToInt()) ;//设置总报文头
SetZTLength(pBuff) ;//设置报文的长度位[12],[13] ,
Set4567pBuff(pBuff) ; //将第二个EB90 替换 为总长度-8
pBuff[25-2] = 0x04 ;
pBuff[26-2] = 0x57 ;
pBuff[27-2] = 0x00 ;
pBuff[28-2] = 0x57 ;
pBuff[29-2] = 0x2F ;
SetSubCheckNum(pBuff) ; //设置子校验 (部颁报文)
SetEndSymbol(pBuff) ;//报文结束符
SetZCheck(pBuff) ; //设置主校验
ClientSocket->Socket->SendBuf(pBuff,GetLength(pBuff));
CurrentYinShiPinCommand = 6 ;
Command = 0x42 ;
AnsiString SendMessage = GetDemoStr(GetLength(pBuff),pBuff);
fmReceiveData->Memo2->Lines->Add("-> -> " + SendMessage);
}*/
//---------------------------------------------------------------------------
/// <summary>处理音频切换器状态返还报文</summary>
/// <param name="pBuf">报文指针</param>
/// <returns>无</returns>
void __fastcall TfmMain::DisposeGetAudioSwitchStatusRByte(BYTE * pBuf,int StationNo,int LineNo)
{
for(int i=0;i<24;i++)
{
/*if(pBuf[0 + i * 4] == 0X0A)
{
GetAudioSwitchStatusForm->Out[1 + i]->Caption = "10";
}
else if(pBuf[0 + i * 4] == 0X0B)
{
GetAudioSwitchStatusForm->Out[1 + i]->Caption = "11";
}
else
{
GetAudioSwitchStatusForm->Out[1 + i]->Caption = pBuf[0 + i * 4];
}*/
GetAudioSwitchStatusForm->Out[1 + i]->Caption = IntToStr(pBuf[0 + i * 4]);
if(pBuf[1 + i * 4] == 0X00)
{
GetAudioSwitchStatusForm->State[1 + i]->Caption = "空闲";
}
else
{
GetAudioSwitchStatusForm->State[1 + i]->Caption = pBuf[1 + i * 4];
}
GetAudioSwitchStatusForm->In[1 + i]->Caption = IntToStr(pBuf[2 + i * 4]);
}
GetAudioSwitchStatusForm->StationNameEdit->Text = StationNo;
GetAudioSwitchStatusForm->LineNoEdit->Text = LineNo;
GetAudioSwitchStatusForm->ShowModal();
/*for(int i = 0 ;i<16*8;i+=8)
{
BYTE temp = pBuf[i+1];
BYTE tempp = temp;
AnsiString Status ;
if(tempp&0x08)
{
Status = "中心控制" ;
}
else
{
Status = "键盘控制" ;
}
if(tempp&0x04)
{
Status += " 单向" ;
}
else
{
Status = " 双向" ;
}
tempp = temp&0x03 ;
if(tempp == 0)
{
Status = "空闲" ;
}
else if(tempp==0x01)
{
Status += "Dvr切换" ;
}
else if(tempp == 2)
{
Status += "普通切换" ;
}
else if(tempp== 3)
{
Status+="静音" ;
}
GetAudioSwitchStatusForm->ListView2->Items->Item[i/8]->SubItems->Strings[0] = Status ;
GetAudioSwitchStatusForm->ListView2->Items->Item[i/8]->SubItems->Strings[1] = IntToStr(pBuf[i+2]) ;
GetAudioSwitchStatusForm->ListView2->Items->Item[i/8]->SubItems->Strings[2] = IntToStr(pBuf[i+3]) ;
GetAudioSwitchStatusForm->ListView2->Items->Item[i/8]->SubItems->Strings[3] = IntToStr(pBuf[i+4]) ;
GetAudioSwitchStatusForm->ListView2->Items->Item[i/8]->SubItems->Strings[4] = IntToStr(pBuf[i+5]) ;
}
GetAudioSwitchStatusForm->ShowModal();*/
}
//---------------------------------------------------------------------------
///<summary>获取E1时间</summary>
/// <param name="StationNo">站点号</param>
/// <param name="LineNo">线路号</param>
/// <returns>无</returns>
void __fastcall TfmMain::GetE1Time(AnsiString StationNo, AnsiString LineNo)
{
BYTE pBuff[2048];
SetGetControlStateSubTHeader(pBuff,StrToInt(StationNo),2,0x02,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 = 8 ;
Command = 0x47 ;
IsOvertimeTimer->Enabled = true ;
SetSendRestrict(true);
}
//---------------------------------------------------------------------------
void __fastcall TfmMain::GetFuYongQiAlarmStatusMenuClick(TObject *Sender)
{
AnsiString SUNUM,LINENUM ;
GetStationInfo(&LINENUM,&SUNUM) ;
//GetCurDataTransferState(SUNUM,LINENUM);
GetFuYongQiAlarmStatus(SUNUM,LINENUM) ;
}
//---------------------------------------------------------------------------
/// <summary>获取复用器告警状态</summary>
/// <param name="StationNo">站点号</param>
/// <param name="LineNo">线路号</param>
/// <returns>无</returns>
void __fastcall TfmMain::GetFuYongQiAlarmStatus(AnsiString StationNo, AnsiString LineNo)
{
BYTE pBuff[2048];
memset(pBuff,0,2048);
//SetGetControlStateSubTHeader(pBuff,StrToInt(StationNo),0,0x02,0xC0,0x44) ;
SetGetControlStateSubTHeader(pBuff,StrToInt(StationNo),1,0x02,0xC0,0xC5) ;
//SetZHeader(pBuff,0,0x44,0,LineNo.ToInt(),0,2,StationNo.ToInt()) ;//设置总报文头
SetZHeader(pBuff,0,0xC5,0,LineNo.ToInt(),0,2,StationNo.ToInt()) ;//设置总报文头
SetZTLength(pBuff) ;//设置报文的长度位[12],[13] ,
Set4567pBuff(pBuff) ; //将第二个EB90 替换 为总长度-8
SetSubCheckNum(pBuff) ; //设置子校验 (部颁报文)
SetEndSymbol(pBuff) ;//报文结束符
SetZCheck(pBuff) ; //设置主校验
pBuff[23] = 0x06 ;
if(!SendMessage(pBuff,GetLength(pBuff)))
{
return ;
}
/*AnsiString SendMessage = GetDemoStr(GetLength(pBuff),pBuff);
AnsiString sTime = Now().FormatString("yyyy-mm-dd hh:nn:ss ");
fmReceiveData->Memo2->Lines->Add(sTime + "-> -> 获取版本号命令:" + SendMessage);*/
SprintfData("-> -> 获取版本号命令:",pBuff,GetLength(pBuff));
//CurrentYinShiPinCommand = 10 ;
//Command = 0x44 ;
//Command = 0xC5 ;
//IsOvertimeTimer->Enabled = true ;
//SetSendRestrict(true);
}
//---------------------------------------------------------------------------
/// <summary>处理视频切换器状态返还报文</summary>
/// <param name="pBuf">报文指针</param>
/// <returns>无</returns>
void __fastcall TfmMain::DisposeGetVedioSwitchStatusRByte(BYTE * pBuf,int StationNo,int LineNo)
{
for(int i=0;i<12;i++)
{
if(pBuf[0 + i * 4] == 0X0A)
{
GetVedioSwitchStatusForm->Out[1 + i]->Caption = "10";
}
else if(pBuf[0 + i * 4] == 0X0B)
{
GetVedioSwitchStatusForm->Out[1 + i]->Caption = "11";
}
else
{
GetVedioSwitchStatusForm->Out[1 + i]->Caption = pBuf[0 + i * 4];
}
if(pBuf[1 + i * 4] == 0X00)
{
GetVedioSwitchStatusForm->State[1 + i]->Caption = "空闲";
}
else
{
GetVedioSwitchStatusForm->State[1 + i]->Caption = pBuf[1 + i * 4];
}
GetVedioSwitchStatusForm->In[1 + i]->Caption = pBuf[2 + i * 4];
}
GetVedioSwitchStatusForm->StationNameEdit->Text = StationNo;
GetVedioSwitchStatusForm->LineNoEdit->Text = LineNo;
GetVedioSwitchStatusForm->ShowModal();
}
//---------------------------------------------------------------------------
void __fastcall TfmMain::GetAudioHuaLuStatusMenuClick(TObject *Sender)
{
AnsiString SUNUM,LINENUM ;
GetStationInfo(&LINENUM,&SUNUM) ;
//GetCurDataTransferState(SUNUM,LINENUM);
//GetAudioHuaLuStatus(SUNUM,LINENUM,0x5500,0x553F) ;
//GetAudioHuaLuStatus(SUNUM,LINENUM,0x5540,0x555F) ;
}
//---------------------------------------------------------------------------
void __fastcall TfmMain::DisposeGetAudioHuaLuStatusRByte(BYTE * pBuf)
{
for(int i = 0 ;i<16*4;i+=4)
{
BYTE temp = pBuf[i+1];
BYTE tempp = temp;
AnsiString Status = "" ;
tempp = temp&0x03 ;
switch(tempp)
{
case 0:
{
Status = "空闲" ;
break ;
}
case 1:
{
Status= "Dvr" ;
break ;
}
case 2 :
{
Status = "普通切换" ;
break ;
}
case 3 :
{
Status = "静音" ;
break ;
}
default :
{
Status = "错误信息" ;
}
}
GetAudioHuaLuStatusForm->ListView2->Items->Item[i/4]->SubItems->Strings[0] = Status ;
}
GetAudioHuaLuStatusForm->ShowModal();
}
//---------------------------------------------------------------------------
void __fastcall TfmMain::DisposeGetE1Time(BYTE Buf,int StationNo,int LineNo)
{
AnsiString Message = "站点"+ IntToStr(StationNo) + "所用的E1系统时钟工作方式:" ;
switch(Buf)
{
case 0:
{
Message += "从A向时钟" ;
break ;
}
case 1:
{
Message += "从B向时钟" ;
break ;
}
case 2:
{
Message += "主时钟" ;
break ;
}
case 3:
{
Message += "外部时钟" ;
break ;
}
default :
{
Message += "错误时钟信息" ;
break ;
}
}
TfmMessage *message = new TfmMessage(Application);
message->lbMessage->Caption = Message;
message->ShowModal();
}
//---------------------------------------------------------------------------
void __fastcall TfmMain::DisposeFuYongQiReturnByte(BYTE Buf,int StationNo,int LineNo)
{
AnsiString Message = "" ;
if(Buf&0x01)
{
GetFuYongQiAlarmStatusForm->ListView1->Items->Item[0]->ImageIndex = 1 ;
// GetFuYongQiAlarmStatusForm->AImage1->Visible = true ;
// GetFuYongQiAlarmStatusForm->AImage1p->Visible = false ;
//GetFuYongQiAlarmStatusForm->ImageList1-> ;
//Message = "A向本地告警,输出告警;" ;
}
else
{
GetFuYongQiAlarmStatusForm->ListView1->Items->Item[0]->ImageIndex = 0 ;
//GetFuYongQiAlarmStatusForm->AImage1->Visible = true ;
//GetFuYongQiAlarmStatusForm->AImage1p->Visible = false ;
//Message = "A向本地告警,输出正常;" ;
}
if(Buf&0x02)
{
GetFuYongQiAlarmStatusForm->ListView1->Items->Item[1]->ImageIndex = 1 ;
//Message += "A向对端告警,输出告警;" ;
}
else
{
GetFuYongQiAlarmStatusForm->ListView1->Items->Item[1]->ImageIndex = 0 ;
//Message += "A向对端告警,输出正常;" ;
}
if(Buf&0x04)
{
GetFuYongQiAlarmStatusForm->ListView1->Items->Item[2]->ImageIndex = 1 ;
//Message += "B向本地告警,输出告警;" ;
}
else
{
GetFuYongQiAlarmStatusForm->ListView1->Items->Item[2]->ImageIndex = 0 ;
//Message += "B向本地告警,输出正常;" ;
}
if(Buf&0x08)
{
GetFuYongQiAlarmStatusForm->ListView1->Items->Item[3]->ImageIndex = 1 ;
//Message += "B向对端告警,输出告警;" ;
}
else
{
GetFuYongQiAlarmStatusForm->ListView1->Items->Item[1]->ImageIndex = 0 ;
//Message += "B向对端告警,输出正常;" ;
}
/*TfmMessage *message = new TfmMessage(Application);
message->lbMessage->Caption = Message;
message->ShowModal();*/
GetFuYongQiAlarmStatusForm->StationNameEdit->Text = IntToStr(StationNo);
GetFuYongQiAlarmStatusForm->LineNoEdit->Text = IntToStr(LineNo);
GetFuYongQiAlarmStatusForm->ShowModal();
}
//---------------------------------------------------------------------------
void __fastcall TfmMain::HuaLuZhanYongTableMenuClick(TObject *Sender)
{
/* AnsiString SUNUM,LINENUM ;
GetStationInfo(&LINENUM,&SUNUM) ;
//GetCurDataTransferState(SUNUM,LINENUM);
GetSwitchStatus(SUNUM,LINENUM,0x5500,0x553B,11,0x42);
GetSwitchStatus(SUNUM,LINENUM,0x553C,0x555F,11,0x42);
//GetHuaLuZhanYongStatus(SUNUM,LINENUM,0x5500,0x553B) ;
//GetHuaLuZhanYongStatus(SUNUM,LINENUM,0x553C,0x555F) ;*/
MessageShow("Sorry,功能未完成!");
}
//---------------------------------------------------------------------------
void __fastcall TfmMain::DisposeGetHuaLuZhanYongSwitchStatusRByte(BYTE * pBuf,int Length,int StationNo,int LineNo)
{
int j ;
if(Length>64)
{
//GetHuaLuZhanYongForm->ListView2->Items->Clear();
j = 0;
}
else
{
j = 10 ;
}
for(int i = 0 ;i<Length-5;i+=6)
{
BYTE temp = pBuf[i+1];
BYTE tempp = temp;
AnsiString Status = "" ;
tempp = temp&0x03 ;
if(tempp==0)
{
Status = "空闲" ;
GetHuaLuZhanYongForm->ListView2->Items->Item[j++]->SubItems->Strings[0] = Status ;
continue ;
}
else if ( tempp == 0x01)
{
Status = "DVR切换" ;
}
else if ( tempp == 2)
{
Status = "普通切换" ;
}
tempp = (temp&12) ;
if(tempp==0)
{
//Status += ",正常" ;
}
else if(tempp==1)
{
Status+= ",连接" ;
}
else if(tempp==2)
{
Status += ",断开" ;
}
GetHuaLuZhanYongForm->ListView2->Items->Item[j]->SubItems->Strings[0] = Status ;
AnsiString InPutMessage = "AI-"+IntToStr(pBuf[i+2]+1) ;
/*if(pBuf[i+2]>0x10&&pBuf[i+2]<0x17)
{
InPutMessage +=",单向输入. " ;
}
else
{
InPutMessage +=",双向输入. " ;
} */
AnsiString OutPutMessage ;
if(pBuf[i+3]+1>8)
{
OutPutMessage = "AO-" + IntToStr(pBuf[i+3]+1)+ "(DVR1:AV" + IntToStr(pBuf[i+3]+1-8) + ")" ;
}
else
{
OutPutMessage = "AO-" + IntToStr(pBuf[i+3]+1);
}
GetHuaLuZhanYongForm->ListView2->Items->Item[j]->SubItems->Strings[1] = InPutMessage ;
GetHuaLuZhanYongForm->ListView2->Items->Item[j++]->SubItems->Strings[2] = OutPutMessage ;
}
GetHuaLuZhanYongForm->StationNameEdit->Text = IntToStr(StationNo);
GetHuaLuZhanYongForm->LineNoEdit->Text = IntToStr(LineNo);
GetHuaLuZhanYongForm->ShowModal();
}
//---------------------------------------------------------------------------
void __fastcall TfmMain::PuTongQieHuanMenuClick(TObject *Sender)
{
/* AnsiString SUNUM,LINENUM ;
GetStationInfo(&LINENUM,&SUNUM) ;
GetSwitchStatus(SUNUM,LINENUM,0x5560,0x559F,12,0x42);
GetSwitchStatus(SUNUM,LINENUM,0x55A0,0x55BF,12,0x42);*/
MessageShow("Sorry,功能未完成!");
}
//---------------------------------------------------------------------------
void __fastcall TfmMain::DisposePuTongSwitchStatusRByte(BYTE * pBuf,int Length,int StationNo,int LineNo)
{
int j ;
if(Length>64)
{
//GetHuaLuZhanYongForm->ListView2->Items->Clear();
j = 0;
}
else
{
j = 16 ;
}
for(int i = 0 ;i<Length-5;i+=4)
{
BYTE temp = pBuf[i+1];
BYTE tempp = temp;
AnsiString Status = "" ;
tempp = temp&0x03 ;
if(tempp==0)
{
Status = "空闲" ;
GetPuTongQieHuanForm->ListView2->Items->Item[j++]->SubItems->Strings[0] = Status ;
continue ;
}
else if ( tempp == 3)
{
Status = "静音用" ;
}
else if ( tempp == 2)
{
Status = "普通切换" ;
}
GetPuTongQieHuanForm->ListView2->Items->Item[j]->SubItems->Strings[0] = Status ;
tempp = (temp&0x30) ;
Status = "" ;
if(tempp==0)
{
Status = "空闲" ;
//GetPuTongQieHuanForm->ListView2->Items->Item[j++]->SubItems->Strings[1] = Status ;
//continue ;
}
else if(tempp==0x20)
{
Status= "普通切换" ;
}
else if(tempp==0x30)
{
Status = "静音用" ;
}
GetPuTongQieHuanForm->ListView2->Items->Item[j]->SubItems->Strings[1] = Status ;
GetPuTongQieHuanForm->ListView2->Items->Item[j]->SubItems->Strings[2] = IntToStr(pBuf[i+2]) ;
GetPuTongQieHuanForm->ListView2->Items->Item[j++]->SubItems->Strings[3] = IntToStr(pBuf[i+3]) ;
}
GetPuTongQieHuanForm->StationNameEdit->Text = IntToStr(StationNo);
GetPuTongQieHuanForm->LineNoEdit->Text = IntToStr(LineNo);
GetPuTongQieHuanForm->ShowModal();
}
//---------------------------------------------------------------------------
void __fastcall TfmMain::StatusMenuClick(TObject *Sender)
{
/* AnsiString SUNUM,LINENUM ;
GetStationInfo(&LINENUM,&SUNUM) ;
GetSwitchStatus(SUNUM,LINENUM,0x5600,0x561F,13,0x42);*/
MessageShow("Sorry,功能未完成!");
}
//---------------------------------------------------------------------------
void __fastcall TfmMain::DisposeDVRSwitchStatusRByte(BYTE * pBuf,int Length,int StationNo,int LineNo)
{
int j ;
//if(Length>64)
{
//GetHuaLuZhanYongForm->ListView2->Items->Clear();
j = 0;
}
//else
{
//j = 16 ;
}
for(int i = 0 ;i<Length-5;i+=4)
{
BYTE temp = pBuf[i+1];
BYTE tempp = temp;
AnsiString Status = "" ;
tempp = temp&0x03 ;
if(tempp==0)
{
Status = "空闲" ;
GetDVRSwitchForm->ListView2->Items->Item[j++]->SubItems->Strings[0] = Status ;
continue ;
}
else if ( tempp == 1)
{
Status = "录像机使用" ;
}
else if ( tempp == 3)
{
Status = "静音用" ;
}
GetDVRSwitchForm->ListView2->Items->Item[j]->SubItems->Strings[1] = Status ;
GetDVRSwitchForm->ListView2->Items->Item[j]->SubItems->Strings[2] = "AI-"+IntToStr(pBuf[i+2]+1) ;
GetDVRSwitchForm->ListView2->Items->Item[j++]->SubItems->Strings[3] = IntToStr(pBuf[i+3]) ;
}
GetDVRSwitchForm->StationNameEdit->Text = IntToStr(StationNo);
GetDVRSwitchForm->LineNoEdit->Text = IntToStr(LineNo);
GetDVRSwitchForm->ShowModal();
}
//---------------------------------------------------------------------------
void __fastcall TfmMain::GetSwitchStatus(AnsiString StationNo,
AnsiString LineNo,int StartAdd,int EndAdd,
int CurrentCommand,int ZCommand)
{
/*BYTE pBuff[2048];
SetGetControlStateSubTHeader(pBuff,StrToInt(StationNo),5,0,0xC0,0x42) ;
SetZHeader(pBuff,0,0x42,0,LineNo.ToInt(),0,2,StationNo.ToInt()) ;//设置总报文头
SetZTLength(pBuff) ;//设置报文的长度位[12],[13] ,
Set4567pBuff(pBuff) ; //将第二个EB90 替换 为总长度-8
pBuff[25-2] = 0x04 ;
pBuff[26-2] = HIBYTE(StartAdd) ;
pBuff[27-2] = LOBYTE(StartAdd) ;
pBuff[28-2] = HIBYTE(EndAdd) ;
pBuff[29-2] = LOBYTE(EndAdd) ;
SetSubCheckNum(pBuff) ; //设置子校验 (部颁报文)
SetEndSymbol(pBuff) ;//报文结束符
SetZCheck(pBuff) ; //设置主校验
if(!SendMessage(pBuff,GetLength(pBuff)))
{
return ;
}
//ClientSocket->Socket->SendBuf(pBuff,GetLength(pBuff));
CurrentYinShiPinCommand = CurrentCommand ;
Command = ZCommand ;
IsOvertimeTimer->Enabled = true ;
SetSendRestrict(true);
AnsiString SendMessage = GetDemoStr(GetLength(pBuff),pBuff);
fmReceiveData->Memo2->Lines->Add("-> -> " + SendMessage);*/
}
//---------------------------------------------------------------------------
//根据当前选择的镜头获取站点的LineNo,StationNo
void __fastcall TfmMain::GetStationOfLensInfo(AnsiString * LINENUM, AnsiString * SUNUM,int *ADR,int *CHANNEL)
{
//Get站点信息
String SUNAME,LINENAME;
AnsiString asSql;
//int SUNUM;
LINENAME = tvDevice->Selected->Parent->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->Parent->Text;
//SUNAME = SUNAME.Delete(SUNAME.Length()-1,2);
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;
char* szBuffer = new char[30];
AnsiString NodeTextTemp = tvDevice->Selected->Text;
/*int LenTemp = StrLen(NodeTextTemp.c_str());
StrCopy(szBuffer,NodeTextTemp.c_str());
NodeTextTemp = szBuffer[LenTemp - 1];*/
int LenTemp = StrLen(NodeTextTemp.c_str());
StrCopy(szBuffer,NodeTextTemp.c_str());
int Temp_ = 0;
for(int i = 0;i<LenTemp;i++)
{
if(szBuffer[i] == 0X5F)
{//"_"
Temp_ = i+1;
break;
}
}
if((LenTemp - Temp_) == 1)
{
NodeTextTemp = szBuffer[LenTemp - 1];//获得镜头号
}
else if((LenTemp - Temp_) == 2)
{
NodeTextTemp = szBuffer[LenTemp - 2];
NodeTextTemp = NodeTextTemp + szBuffer[LenTemp - 1];
}
asSql = "select DVRCHANNEL,DVRMODAL from CT_SM where LINENUM='"+(*LINENUM)/
+ "' AND " + "SUNUM='" + (*SUNUM) + "' AND " + "SMNUM=" + NodeTextTemp;
ADOSelect->Close();
ADOSelect->SQL->Clear();
ADOSelect->SQL->Add(asSql);
ADOSelect->Open();
*ADR = ADOSelect->FieldByName("DVRMODAL")->AsInteger;
*CHANNEL = ADOSelect->FieldByName("DVRCHANNEL")->AsInteger+1; //数据库中的通道号比实际中镜头的通道号小1
}
//---------------------------------------------------------------------------
void __fastcall TfmMain::ShowTimeMenuClick(TObject *Sender)
{
/*AnsiString SUNUM,LINENUM ;
int ADR,CHANNEL ;
GetStationOfLensInfo(&LINENUM,&SUNUM,&ADR,&CHANNEL) ;
DisPlayTime(SUNUM,LINENUM,CHANNEL,ADR) ;*/
}
//---------------------------------------------------------------------------
//*ToDo 设置E1时钟工作方式
void __fastcall TfmMain::SetE1MenuClick(TObject *Sender)
{
/* AnsiString SUNUM,LINENUM ;
GetStationInfo(&LINENUM,&SUNUM) ;
SetE1WorkModeForm->LINENUM = LINENUM ;
SetE1WorkModeForm->SUNUM = SUNUM ;
SetE1WorkModeForm->ShowModal() ;
//SetE1Time(SUNUM,LINENUM) ;*/
//设置E1系统时钟
/*BYTE DataInfo[2];
memset(DataInfo, 0, 2);
int LINENUM = 0,SUNUM = 0;
LINENUM = GetLineNum(NodeParText);
SUNUM = GetSuNum(NodeText,NodeParText);
//DATAINFO
MakePack(DataInfo,0,0X04,0X00,0X00,0XCC,LINENUM,SUNUM,"设置E1时钟命令");*/
SetE1WorkModeForm->ShowModal();
}
//---------------------------------------------------------------------------
//* ToDo 设置E1时钟工作方式 报文下发
void __fastcall TfmMain::SetE1TimeWorkMode(AnsiString SUNUM, AnsiString LINENUM, int TimeDirection)
{
BYTE pBuff[2048];
SetGetControlStateSubTHeader(pBuff,StrToInt(SUNUM),3,0x02,0xC0,0x49) ;
pBuff[25] = TimeDirection ;
SetZHeader(pBuff,0,0x49,0,LINENUM.ToInt(),0,2,SUNUM.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 = 14 ;
Command = 0x49 ;
IsOvertimeTimer->Enabled = true ;
SetSendRestrict(true);
}
//---------------------------------------------------------------------------
//信道诊断
void __fastcall TfmMain::DiagnoseContralMenuClick(TObject *Sender)
{
/*AnsiString SUNUM,LINENUM ;
GetStationInfo(&LINENUM,&SUNUM) ;
DiagnoseContral(SUNUM,LINENUM) ;*/
MessageShow("Sorry,功能未完成!");
}
//---------------------------------------------------------------------------
void __fastcall TfmMain::DiagnoseContral(AnsiString SUNUM, AnsiString LINENUM)
{
/*BYTE pBuff[2048];
SetGetControlStateSubTHeader(pBuff,StrToInt(SUNUM),4,0x02,0xC0,0x94) ;
pBuff[23] = 0xAA;
pBuff[24] = 0x55;
pBuff[25] = 0xAA;
pBuff[26] = 0x55;
SetZHeader(pBuff,0,0x94,0,LINENUM.ToInt(),0,2,SUNUM.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 = 15 ;
Command = 0x94 ;
// Command = RMIP_SET_IPCONFIG ;
IsOvertimeTimer->Enabled = true ;
SetSendRestrict(true);*/
}
//---------------------------------------------------------------------------
//获取信道控制器软件版本号
void __fastcall TfmMain::GetVersionNumMenuClick(TObject *Sender)
{//
BYTE DataInfo[5];
memset(DataInfo, 0, 5);
int LINENUM = 0,SUNUM = 0;
// LINENUM = GetLineNum(NodeParText);
SUNUM = GetSuNum(NodeText);
//DATAINFO
//DataInfo[0] = 0X05;//COMMAND TYPE 参数型号
DataInfo[0] = 0XC0;//
DataInfo[1] = 1;//
DataInfo[2] = 0;//
DataInfo[3] = 0;//
DataInfo[4] = 0;//
MakePack(DataInfo,5,0X04,SUNUM,0X00,0XD3,LINENUM,SUNUM,"获取信道控制器的版本号和芯片类型信息命令");
//DiagnoseContralMenuClick(NULL);
// GetFuYongQiAlarmStatusMenuClick(NULL) ;
//CurrentYinShiPinCommand = 16 ;
}
//---------------------------------------------------------------------------
//视频切换
void __fastcall TfmMain::VedioSwitchMenuClick(TObject *Sender)
{
/*
AnsiString SUNUM,LINENUM ;
GetStationInfo(&LINENUM,&SUNUM) ;
FormAudioVedioSwitch->SUNUM = SUNUM ;
FormAudioVedioSwitch->LINENUM = LINENUM ;
///*FormAudioVedioSwitch->Cmd = 0x82 ;
//FormAudioVedioSwitch->CID1 = 0xD3 ;
//FormAudioVedioSwitch->ADR = 0x10 ;
FormAudioVedioSwitch->BtnDVR->Caption = "DVR视频切换" ;
FormAudioVedioSwitch->BtnPuTong->Caption = "普通视频切换" ;
FormAudioVedioSwitch->LabelTitle->Caption = "视频切换..." ;
//CurrentYinShiPinCommand = 17 ;
FormAudioVedioSwitch->ShowModal() ;*/
MessageShow("Sorry,功能未完成!");
}
//---------------------------------------------------------------------------
//视频切换
void __fastcall TfmMain::AudioVedioSwitch(AnsiString SUNUM, AnsiString LINENUM,int ADR, int InputNum, int OutPutNo,int Cmd,int CID1)
{
BYTE pBuff[2048];
SetGetControlStateSubTHeader(pBuff,ADR,2,0x02,CID1,Cmd) ;
pBuff[23] = InputNum;
pBuff[24] = OutPutNo;
SetZHeader(pBuff,0,Cmd,0,LINENUM.ToInt(),0,2,SUNUM.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);
Command = Cmd ;
IsOvertimeTimer->Enabled = true ;
SetSendRestrict(true);
}
//---------------------------------------------------------------------------
//音频切换
void __fastcall TfmMain::AudioSwitchMenuClick(TObject *Sender)
{
/* AnsiString SUNUM,LINENUM ;
GetStationInfo(&LINENUM,&SUNUM) ;
FormAudioVedioSwitch->SUNUM = SUNUM ;
FormAudioVedioSwitch->LINENUM = LINENUM ;
///*FormAudioVedioSwitch->Cmd = 0x82 ;
//FormAudioVedioSwitch->CID1 = 0xD4 ;
//FormAudioVedioSwitch->ADR = 0x18 ;
FormAudioVedioSwitch->LabelTitle->Caption = "音频切换..." ;
FormAudioVedioSwitch->BtnDVR->Caption = "DVR音频切换" ;
FormAudioVedioSwitch->BtnPuTong->Caption = "普通音频切换" ;
//CurrentYinShiPinCommand = 18 ;
FormAudioVedioSwitch->ShowModal() ; */
MessageShow("Sorry,功能未完成!");
}
//---------------------------------------------------------------------------
//DVR音频切换
void __fastcall TfmMain::DVRAudioSwitchMenuClick(TObject *Sender)
{
AnsiString SUNUM,LINENUM ;
GetStationInfo(&LINENUM,&SUNUM) ;
FormAudioVedioSwitch->SUNUM = SUNUM ;
FormAudioVedioSwitch->LINENUM = LINENUM ;
FormAudioVedioSwitch->Cmd = 0x8E ;
FormAudioVedioSwitch->CID1 = 0xC1 ;
FormAudioVedioSwitch->ADR = 0x18 ;
FormAudioVedioSwitch->LabelTitle->Caption = "DVR音频切换..." ;
CurrentYinShiPinCommand = 19 ;
FormAudioVedioSwitch->ShowModal() ;
}
//---------------------------------------------------------------------------
//DVR视频切换
void __fastcall TfmMain::DVRVedioSwitchMenuClick(TObject *Sender)
{
AnsiString SUNUM,LINENUM ;
GetStationInfo(&LINENUM,&SUNUM) ;
FormAudioVedioSwitch->SUNUM = SUNUM ;
FormAudioVedioSwitch->LINENUM = LINENUM ;
FormAudioVedioSwitch->Cmd = 0x8F ;
FormAudioVedioSwitch->CID1 = 0xC1 ;
FormAudioVedioSwitch->ADR = 0x10 ;
FormAudioVedioSwitch->LabelTitle->Caption = "DVR视频切换..." ;
CurrentYinShiPinCommand = 20 ;
FormAudioVedioSwitch->ShowModal() ;
}
//---------------------------------------------------------------------------
//获取DS2154A向数据
void __fastcall TfmMain::GetADS21541MenuClick(TObject *Sender)
{//获取DS2154A向数据
if(!ClientSocket->Active)
{
MessageShow("网络连接失败,请先确认网络连接状态!");
return;
}
GetDS2154A->Enabled = true;
DS2154Form->Memo1->Clear() ;
/*BYTE DataInfo[6];
memset(DataInfo, 0, 6);
int LINENUM = 0,SUNUM = 0;
LINENUM = GetLineNum(NodeParText);
SUNUM = GetSuNum(NodeText,NodeParText);
//DATAINFO
DataInfo[0] = 0X01;//包序号
DataInfo[1] = 0X04;//
DataInfo[2] = 0X9E;//
DataInfo[3] = 0X00;//
DataInfo[4] = 0X9E;//
DataInfo[5] = 0X3F;//
MakePack(DataInfo,6,0X04,SUNUM,0X0A,0XD2,LINENUM,SUNUM,"获取DS2154A向数据命令");
Sleep(5000);
//DATAINFO
DataInfo[0] = 0X02;//包序号
//DataInfo[1] = 0X04;//
DataInfo[2] = 0X9E;//
DataInfo[3] = 0X40;//
DataInfo[4] = 0X9E;//
DataInfo[5] = 0X7F;//
MakePack(DataInfo,6,0X04,SUNUM,0X0A,0XD2,LINENUM,SUNUM,"获取DS2154A向数据命令");
Sleep(5000);
//DATAINFO
DataInfo[0] = 0X03;//包序号
//DataInfo[1] = 0X04;//
DataInfo[2] = 0X9E;//
DataInfo[3] = 0X80;//
DataInfo[4] = 0X9E;//
DataInfo[5] = 0XBF;//
MakePack(DataInfo,6,0X04,SUNUM,0X0A,0XD2,LINENUM,SUNUM,"获取DS2154A向数据命令");
Sleep(5000);
//DATAINFO
DataInfo[0] = 0X04;//包序号
//DataInfo[1] = 0X04;//
DataInfo[2] = 0X9E;//
DataInfo[3] = 0XC0;//
DataInfo[4] = 0X9E;//
DataInfo[5] = 0XFF;//
MakePack(DataInfo,6,0X04,SUNUM,0X0A,0XD2,LINENUM,SUNUM,"获取DS2154A向数据命令");*/
/*AnsiString SUNUM,LINENUM ;
GetStationInfo(&LINENUM,&SUNUM) ;
GetSwitchStatus(SUNUM,LINENUM,0x9E00,0x9E3F,21,0x42);
GetSwitchStatus(SUNUM,LINENUM,0x9E40,0x9E7F,21,0x42);
GetSwitchStatus(SUNUM,LINENUM,0x9E80,0x9EBF,21,0x42);
GetSwitchStatus(SUNUM,LINENUM,0x9EC0,0x9EFF,21,0x42);*/
}
//---------------------------------------------------------------------------
void __fastcall TfmMain::GetBDS2154MenuClick(TObject *Sender)
{//获取DS2154A向数据
if(!ClientSocket->Active)
{
MessageShow("网络连接失败,请先确认网络连接状态!");
return;
}
GetDS2154B->Enabled = true;
DS2154Form->Memo1->Clear() ;
/*BYTE DataInfo[6];
memset(DataInfo, 0, 6);
int LINENUM = 0,SUNUM = 0;
LINENUM = GetLineNum(NodeParText);
SUNUM = GetSuNum(NodeText,NodeParText);
//DATAINFO
DataInfo[0] = 0X05;//包序号
DataInfo[1] = 0X04;//
DataInfo[2] = 0X9F;//
DataInfo[3] = 0X00;//
DataInfo[4] = 0X9F;//
DataInfo[5] = 0X3F;//
MakePack(DataInfo,6,0X04,SUNUM,0X0A,0XD2,LINENUM,SUNUM,"获取DS2154B向数据命令");
Sleep(1000);
//DATAINFO
DataInfo[0] = 0X06;//包序号
//DataInfo[1] = 0X04;//
DataInfo[2] = 0X9F;//
DataInfo[3] = 0X40;//
DataInfo[4] = 0X9F;//
DataInfo[5] = 0X7F;//
MakePack(DataInfo,6,0X04,SUNUM,0X0A,0XD2,LINENUM,SUNUM,"获取DS2154B向数据命令");
Sleep(1000);
//DATAINFO
DataInfo[0] = 0X07;//包序号
//DataInfo[1] = 0X04;//
DataInfo[2] = 0X9F;//
DataInfo[3] = 0X80;//
DataInfo[4] = 0X9F;//
DataInfo[5] = 0XBF;//
MakePack(DataInfo,6,0X04,SUNUM,0X0A,0XD2,LINENUM,SUNUM,"获取DS2154B向数据命令");
Sleep(1000);
//DATAINFO
DataInfo[0] = 0X08;//包序号
//DataInfo[1] = 0X04;//
DataInfo[2] = 0X9F;//
DataInfo[3] = 0XC0;//
DataInfo[4] = 0X9F;//
DataInfo[5] = 0XFF;//
MakePack(DataInfo,6,0X04,SUNUM,0X0A,0XD2,LINENUM,SUNUM,"获取DS2154B向数据命令");*/
/* AnsiString SUNUM,LINENUM ;
GetStationInfo(&LINENUM,&SUNUM) ;
GetSwitchStatus(SUNUM,LINENUM,0x9F00,0x9F3F,22,0x42);
GetSwitchStatus(SUNUM,LINENUM,0x9F40,0x9F7F,22,0x42);
GetSwitchStatus(SUNUM,LINENUM,0x9F80,0x9FBF,22,0x42);
GetSwitchStatus(SUNUM,LINENUM,0x9FC0,0x9FFF,22,0x42);*/
}
//---------------------------------------------------------------------------
void __fastcall TfmMain::DisposeDS2154RByte(BYTE * pBuf,int Length,int StationNo,int LineNo)
{
/* AnsiString StrTemp ;
int DS2154Num = DS2154Form->ItemNum ;
if(DS2154Form->ItemNum>=32)
{
DS2154Form->InitListWiew() ;
}
for(int i = 0 ;i<64;i+=8)
{
AnsiString ZuNum = "第" + IntToStr(DS2154Form->ItemNum+1) + "组" ;
DS2154Form->ListView1->Items->Item[DS2154Form->ItemNum]->Caption = ZuNum ;
for(int j = 0 ;j<8;j++)
{
StrTemp = "";
StrTemp.sprintf("%X",pBuf[i+j]);
DS2154Form->ListView1->Items->Item[DS2154Form->ItemNum]->SubItems->Strings[j] = StrTemp;
}
DS2154Form->ItemNum+=1 ;
} */
AnsiString StrTemp ;
//int DS2154Num = DS2154Form->ItemNum ;
if(DS2154Form->Memo1->Lines->Count>=32)
{
DS2154Form->Memo1->Clear() ;
}
AnsiString ShowMessage = "" ;
for(int i = 0 ;i<64;i+=8)
{
//AnsiString ZuNum = "第" + IntToStr(DS2154Form->ItemNum+1) + "组" ;
if(DS2154Form->Memo1->Lines->Count < 9)
{
ShowMessage += "第0" + IntToStr(DS2154Form->Memo1->Lines->Count+1) + "组:" ;
}
else if(DS2154Form->Memo1->Lines->Count >= 9)
{
ShowMessage += "第" + IntToStr(DS2154Form->Memo1->Lines->Count+1) + "组:" ;
}
//DS2154Form->ListView1->Items->Item[DS2154Form->ItemNum]->Caption = ZuNum ;
for(int j = 0 ;j<8;j++)
{
StrTemp = "";
StrTemp.sprintf("%X",pBuf[i+j]);
if(StrTemp.Length()<2)
{
StrTemp += "0" ;
}
if(j == 0)
{
ShowMessage+= " " + StrTemp ;
}
else
{
ShowMessage+= " " + StrTemp ;
}
//DS2154Form->ListView1->Items->Item[DS2154Form->ItemNum]->SubItems->Strings[j] = StrTemp;
}
DS2154Form->Memo1->Lines->Insert(DS2154Form->Memo1->Lines->Count,ShowMessage);
ShowMessage = "" ;
}
}
//---------------------------------------------------------------------------
/// <summary>组完报文后下发报文</summary>
/// <param name="pBuf">报文指针</param>
/// <param name="Length">报文长度</param>
/// <returns>是否已下发报文</returns>
bool __fastcall TfmMain::SendMessage(BYTE * pBuf, int Length)
{
if(ClientSocket->Socket->Connected)
{
ClientSocket->Socket->SendBuf(pBuf,Length);
return true ;
}
else
{
MessageShow("网络连接失败,请先确认网络连接状态!");
/*TfmMessage *message = new TfmMessage(Application);
message->lbMessage->Caption = "抱歉,客户端和服务器没有连接,/n请重新链接后在发送.";
message->ShowModal();*/
return false ;
}
}
//---------------------------------------------------------------------------
void __fastcall TfmMain::N2M1Click(TObject *Sender)
{//获取2M告警
/* BYTE DataInfo[2];
memset(DataInfo, 0, 2);
int LINENUM = 0,SUNUM = 0;
// LINENUM = GetLineNum(NodeParText);
SUNUM = GetSuNum(NodeText);
//DATAINFO
DataInfo[0] = 0X06;//COMMAND TYPE 参数型号
MakePack(DataInfo,1,0X04,SUNUM,0XAA,0XC5,LINENUM,SUNUM,"获取2Μ告警命令"); */
}
//---------------------------------------------------------------------------
/* TODO : 站点控制、DVR、ARM、GAS返回数据 */
void __fastcall TfmMain::DvrBackInfo(BYTE *pRecBuf)
{
//if((pRecBuf[0] == 0XEB) && (pRecBuf[1] == 0X90) && (pRecBuf[2] == 0XEB) && (pRecBuf[3] == 0X90) && (pRecBuf[4] == 0XEB) && (pRecBuf[5] == 0X90))
{
long Cmd ;
Cmd = pRecBuf[9] ;
WORD DataLength = *(WORD *)(pRecBuf + 2) + 8;//返回报文的全长
int StationNo = pRecBuf[12] ;
int LineNo = pRecBuf[11] ;
AnsiString StationName,Message="" ;
StationName = GetStationName(StationNo,LineNo);
String LineName = GetLineName(LineNo);
/*if(Trim(StationName).Length()<=0)
{
MessageShow("返回报文有误!");
//Application->MessageBox("返回报文有误.","提示",MB_OK) ;
return ;
}*/
if(DataLength < 20)
{
MessageShow("返回数据为空!");
return;
}
switch(Cmd) //命令码
{
case 0XD2:
{//获取DS2154寄存器A向数据和B向数据
if(DataLength > 20)
{//有效数据
if(pRecBuf[19] <= 4)
{//A向
BYTE DATAINFO[16*4] ;
memcpy(DATAINFO,pRecBuf+21,64);
DisposeDS2154RByte(DATAINFO,64,StationNo,LineNo);
DS2154Form->LabelTitle->Caption = "DS2154寄存器A向数据" ;
if(!DS2154Form->Showing)
{
DS2154Form->ShowModal();
}
}
else if(pRecBuf[19] >=5)
{//B向
BYTE DATAINFO[16*4] ;
memcpy(DATAINFO,pRecBuf+21,64);
DisposeDS2154RByte(DATAINFO,64,StationNo,LineNo);
DS2154Form->LabelTitle->Caption = "DS2154寄存器B向数据" ;
if(!DS2154Form->Showing)
{
DS2154Form->ShowModal();
}
}
}
break;
}
case 0xC3 : //dvr部分的命令
{
switch(pRecBuf[20])
{
case 1:
{//ARM板IP地址和端口
if(DataLength > 20)
{//有效数据
DisposeGetPioReturnBuf(pRecBuf) ;
}
break;
}
case 2:
{//DVR IP地址
if(DataLength > 20)
{//有效数据
DisposeGetIpReturnBuff(pRecBuf,StationName,StationNo,LineNo);
}
break;
}
case 3:
{//获取当前音频参数
if(DataLength > 20)
{//有效数据
DisposeGetAVSettingReturnBYTE(pRecBuf);
}
break;
}
case 4:
{//获取I帧间隔返回
if(DataLength > 20)
{//有效数据
int IInterval = 0 ;
for(int i = 0 ;i<4;i++)
{
IInterval+=pRecBuf[30+1+i]<<(i*8);
}
GetMPEGRForm->StationNoEdit->Text = IntToStr(pRecBuf[12]);
GetMPEGRForm->LineNoEdit->Text = IntToStr(pRecBuf[11]);
GetMPEGRForm->IIntervalEdit->Text = IntToStr(IInterval);
GetMPEGRForm->ShowModal();
}
break;
}
case 5:
{//打开声音
if(pRecBuf[26+1] == 1)
{
Message = "设置成功,但需要重新启动才能生效。";
}
else if(pRecBuf[26+1] == 0)
{
Message = "设置成功。 ";
}
else
{
Message = "设置失败。 ";
}
MessageShow("打开声音"+Message);
break;
}
case 6:
{//关闭声音
if(pRecBuf[26+1] == 1)
{
Message += "设置成功,但需要重新启动才能生效。";
}
else if(pRecBuf[26+1] == 0)
{
Message += "设置成功。 ";
}
else
{
Message += "设置失败。 ";
}
MessageShow("关闭声音"+Message);
break;
}
case 7:
{//数据传输录像状态返回数据
switch(pRecBuf[19])
{//pRecBuf[19]含义 0 = DVR监控;1 = DVR录像;2=ARM;3=GAS
case 0:
case 1:
{
ListTransferStateForm1->LabelTitle->Caption = "DVR数据传输状态...";
break;
}
case 2:
{
ListTransferStateForm1->LabelTitle->Caption = "ARM数据传输状态...";
break;
}
case 3:
{
ListTransferStateForm1->LabelTitle->Caption = "GAS数据传输状态...";
break;
}
}
ListTransferStateForm1->InitTransferForm(StationNo,StationName,LineNo,LineName) ;
DisposeListTransferReturnBuff(pRecBuf);
break;
}
case 8:
{//设置I帧间隔
if(pRecBuf[26+1] == 1)
{
Message += "成功,但需要重新启动才能生效。";
}
else if(pRecBuf[26+1] == 0)
{
Message += "成功。 ";
}
else
{
Message += "失败。 ";
}
MessageShow("设置I帧间隔"+Message);
break;
}
case 9:
{//设置IP地址
if(pRecBuf[26+1] == 1)
{
Message += "成功,但需要重新启动才能生效。";
}
else if(pRecBuf[26+1] == 0)
{
Message += "成功。 ";
}
else
{
Message += "失败。 ";
}
MessageShow("设置IP地址"+Message);
break;
}
case 0X0A:
{//格式化硬盘
if(pRecBuf[26+1] == 1)
{
Message += "格式化成功,但需要重新启动才能生效。";
}
else if(pRecBuf[26+1] == 0)
{
Message += "格式化成功。 ";
}
else
{
Message += "格式化失败。 ";
}
MessageShow(Message);
break;
}
case 0X0B:
{//查看ARM版本号返回
BYTE pRecBufTemp[4];
memset(pRecBufTemp,0,4);
pRecBufTemp[0] = pRecBuf[33];
pRecBufTemp[1] = pRecBuf[34];
pRecBufTemp[2] = pRecBuf[31];
pRecBufTemp[3] = pRecBuf[32];
WORD BanBenH = *(WORD *)(pRecBufTemp);
WORD BanBenL = *(WORD *)(pRecBufTemp + 2);
MessageShow("ARM当前版本号:V" + IntToStr(BanBenH) + "." + IntToStr(BanBenL));
break;
}
case 0X0C:
{//查看DVR版本号返回
BYTE pRecBufTemp[4];
memset(pRecBufTemp,0,4);
pRecBufTemp[0] = pRecBuf[33];
pRecBufTemp[1] = pRecBuf[34];
pRecBufTemp[2] = pRecBuf[31];
pRecBufTemp[3] = pRecBuf[32];
WORD BanBenH = *(WORD *)(pRecBufTemp);
WORD BanBenL = *(WORD *)(pRecBufTemp + 2);
MessageShow("DVR当前版本号:V" + IntToStr(BanBenH) + "." + IntToStr(BanBenL));
break;
}
case 0X0D:
{//查看GAS版本号返回
BYTE pRecBufTemp[4];
memset(pRecBufTemp,0,4);
pRecBufTemp[0] = pRecBuf[33];
pRecBufTemp[1] = pRecBuf[34];
pRecBufTemp[2] = pRecBuf[31];
pRecBufTemp[3] = pRecBuf[32];
WORD BanBenH = *(WORD *)(pRecBufTemp);
WORD BanBenL = *(WORD *)(pRecBufTemp + 2);
MessageShow("GAS当前版本号:V" + IntToStr(BanBenH) + "." + IntToStr(BanBenL));
break;
}
case 0X10:
{//设ARM板地址和端口
if(pRecBuf[26+1] == 1)
{
Message += "成功,但需要重新启动才能生效。";
}
else if(pRecBuf[26+1] == 0)
{
Message += "成功。 ";
}
else
{
Message += "失败。 ";
}
MessageShow("设置ARM板地址和端口"+Message);
break;
}
case 0X11:
{//显示时间
if(pRecBuf[26+1] == 1)
{
Message = "设置成功,但需要重新启动才能生效。";
}
else if(pRecBuf[26+1] == 0)
{
Message = "设置成功。 ";
}
else
{
Message = "设置失败。 ";
}
MessageShow("显示时间"+Message);
break;
}
case 0X12:
{//去掉时间
if(pRecBuf[26+1] == 1)
{
Message += "设置成功,但需要重新启动才能生效。";
}
else if(pRecBuf[26+1] == 0)
{
Message += "设置成功。 ";
}
else
{
Message += "设置失败。 ";
}
MessageShow("去掉时间"+Message);
break;
}
}
/*switch(Command)
{
case RMIP_GET_IPCONFIG : //获取IP
{
DisposeGetIpReturnBuff(pRecBuf,StationName,StationNo,LineNo);
break ;
}
case RMIP_SET_IPCONFIG : //设置IP
{
AnsiString Message ;
if(pRecBuf[29] == 1)
{
Message = " IP地址设置成功,但需要重新启动才能生效. ";
}
else if(pRecBuf[29] == 0)
{
Message = " IP地址设置成功. ";
}
else
{
Message = " IP地址设置失败. ";
}
TfmMessage *message = new TfmMessage(Application);
message->lbMessage->Caption = Message;
message->Show();
break ;
}
case RMIP_LIST_TRANSFER_STATUS : //列出数据传输状态
{
ListTransferStateForm1->InitTransferForm(StationName,LineNo) ;
DisposeListTransferReturnBuff(pRecBuf);
IsOvertimeTimerTimer(this->IsOvertimeTimer);
break ;
}
case RMIP_FORMAT_DISK : //格式化磁盘
{
AnsiString Message ;
if(pRecBuf[29] == 1)
{
Message = " 磁盘格式化成功,但需要重新启动才能生效. ";
}
else if(pRecBuf[29] == 0)
{
Message = " 磁盘格式化设置成功. ";
}
else
{
Message = " 磁盘格式化设置失败. ";
}
TfmMessage *message = new TfmMessage(Application);
message->lbMessage->Caption = Message;
message->Show();
break ;
}
case RMIP_SET_PIOHELPER:
{
AnsiString Message ;
if(pRecBuf[29] == 1)
{
Message = " 并口的协处理板设置成功,但需要重新启动才能生效. ";
}
else if(pRecBuf[29] == 0)
{
Message = " 并口的协处理板设置成功. ";
}
else
{
Message = " 并口的协处理板设置失败. ";
}
TfmMessage *message = new TfmMessage(Application);
message->lbMessage->Caption = Message;
message->Show();
break ;
}
case RMIP_GET_PIOHELPER :
{
AnsiString Message ;
if(pRecBuf[29]<0)
{
Message = " 协处理板获取参数失败. ";
TfmMessage *message = new TfmMessage(Application);
message->lbMessage->Caption = Message;
message->Show();
}
else
{
DisposeGetPioReturnBuf(pRecBuf) ;
}
break ;
}
case RMIP_SET_MP4VIDEOENCODER :
{
AnsiString Message = "" ;
if(pRecBuf[29] == 1)
{
Message = " 设置MPEG4视频编码参数成功,但需要重新启动才能生效. ";
}
else if(pRecBuf[29] == 0)
{
Message = " 设置MPEG4视频编码参数成功. ";
}
else
{
Message = " 设置MPEG4视频编码参数失败. ";
}
TfmMessage *message = new TfmMessage(Application);
message->lbMessage->Caption = Message;
message->Show();
break ;
}
case RMIP_GET_MP4VIDEOENCODER:
{
AnsiString Message ;
if(pRecBuf[29]<0)
{
Message = " 设置MPEG4视频编码参数失败. ";
TfmMessage *message = new TfmMessage(Application);
message->lbMessage->Caption = Message;
message->Show();
}
else
{
DisposeGetMPEGReturnBYTE(pRecBuf,StationNo,LineNo);
}
break ;
}
case RMIP_GET_AVSETTINGS:
{
AnsiString Message ;
if(pRecBuf[29]<0)
{
Message = " 获取音视频参数失败. ";
TfmMessage *message = new TfmMessage(Application);
message->lbMessage->Caption = Message;
message->Show();
}
else
{
DisposeGetAVSettingReturnBYTE(pRecBuf);
}
break ;
}
case 0x13://是否显示时间
{
AnsiString Message = "";
switch(CurrentYinShiPinCommand)
{
case 1:
{
Message = "隐藏时间" ;
break ;
}
case 2:
{
Message = "显示时间" ;
break ;
}
case 3:
{
Message = "打开音频" ;
break ;
}
case 4:
{
Message = "关闭音频" ;
break ;
}
default:
{
break ;
}
}
if(pRecBuf[29] == 1)
{
Message += "设置成功,但需要重新启动才能生效. ";
}
else if(pRecBuf[29] == 0)
{
Message += "设置成功. ";
}
else
{
Message += "设置失败. ";
}
TfmMessage *message = new TfmMessage(Application);
message->lbMessage->Caption = Message;
message->Show();
break ;
}
default:
{
break ;
}
}
Command = 0 ;
IsOvertimeTimerTimer(this->IsOvertimeTimer);
SetSendRestrict(false);
break ;*/
}
/*case 0x47://获取 信道控制器参数
{
switch(CurrentYinShiPinCommand)
{
case 8://E1Time
{
DisposeGetE1Time(pRecBuf[25],StationNo,LineNo);
break ;
}
case 9 :// 信道控制器时隙参数
{
BYTE DATAINFO[15] ;
memcpy(DATAINFO,pRecBuf+26,15);
DisposeGetInfoControl(DATAINFO) ;
GetInfoControlForm1->ShowShowModal();
break ;
}
}
Command = 0 ;
IsOvertimeTimerTimer(this->IsOvertimeTimer);
SetSendRestrict(false);
break ;
}
case 0x42://
{
switch(CurrentYinShiPinCommand)
{
case 5://视频切换器状态
{
BYTE DATAINFO[12*8] ;
memcpy(DATAINFO,pRecBuf+24,RecLen_t-25);
DisposeGetVedioSwitchStatusRByte(DATAINFO,StationNo,LineNo);
break ;
}
case 6://音频切换器状态
{
BYTE DATAINFO[16*8] ;
memcpy(DATAINFO,pRecBuf+25,16*8);
DisposeGetAudioSwitchStatusRByte(DATAINFO);
break ;
}
case 7://音频话路状态
{
BYTE DATAINFO[16*4] ;
memcpy(DATAINFO,pRecBuf+25,16*4);
DisposeGetAudioHuaLuStatusRByte(DATAINFO);
break ;
}
case 11://话lu占用状态
{
BYTE DATAINFO[16*4] ;
memcpy(DATAINFO,pRecBuf+24,RecLen_t-24);
DisposeGetHuaLuZhanYongSwitchStatusRByte(DATAINFO,RecLen_t-24,StationNo,LineNo);
break ;
}
case 12://putong占用状态
{
BYTE DATAINFO[16*4] ;
memcpy(DATAINFO,pRecBuf+24,RecLen_t-24);
DisposePuTongSwitchStatusRByte(DATAINFO,RecLen_t-24,StationNo,LineNo);
break ;
}
case 13://DVR占用状态
{
BYTE DATAINFO[16*4] ;
memcpy(DATAINFO,pRecBuf+24,RecLen_t-24);
DisposeDVRSwitchStatusRByte(DATAINFO,RecLen_t-24,StationNo,LineNo);
break ;
}
case 21 ://DS2154寄存器A向
{
BYTE DATAINFO[16*4] ;
memcpy(DATAINFO,pRecBuf+24,RecLen_t-24);
DisposeDS2154RByte(DATAINFO,RecLen_t-24-5,StationNo,LineNo);
DS2154Form->LabelTitle->Caption = "DS2154寄存器A向数据" ;
DS2154Form->ShowShowModal() ;
break ;
}
case 22 :
{
BYTE DATAINFO[16*4] ;
memcpy(DATAINFO,pRecBuf+24,RecLen_t-24);
DisposeDS2154RByte(DATAINFO,RecLen_t-24-5,StationNo,LineNo);
DS2154Form->LabelTitle->Caption = "DS2154寄存器B向数据" ;
DS2154Form->ShowShowModal() ;
break ;
}
}
Command = 0 ;
IsOvertimeTimerTimer(this->IsOvertimeTimer);
SetSendRestrict(false);
break ;
}
case 0x44 :
{
switch(CurrentYinShiPinCommand)
{
case 10://复用器告警状态
{
DisposeFuYongQiReturnByte(pRecBuf[23],StationNo,LineNo);
break ;
}
case 16://获取软件版本号返回
{
AnsiString Message = "" ;
if(pRecBuf[20] == 0)
{
AnsiString StrTemp = "" ;
StrTemp.sprintf("%X",pRecBuf[17]);
StrTemp = StrTemp.Insert(".",2) ;
Message = "当前软件的版本号为:" + StrTemp ;//+ IntToStr(pRecBuf[17])+ ".";
}
else
{
Message = " 获取软件版本号失败. ";
}
TfmMessage *message = new TfmMessage(Application);
message->lbMessage->Caption = Message;
message->Show();
break ;
}
}
Command = 0 ;
IsOvertimeTimerTimer(this->IsOvertimeTimer);
SetSendRestrict(false);
break;
}
case 0x49 :
{
switch(CurrentYinShiPinCommand)
{
case 14://设置时钟工作方式
{
AnsiString Message = "" ;
if(pRecBuf[20] == 0)
{
Message = " 设置时钟工作方式成功. ";
}
else
{
Message = " 设置时钟工作方式失败. ";
}
TfmMessage *message = new TfmMessage(Application);
message->lbMessage->Caption = Message;
message->Show();
break ;
}
}
Command = 0 ;
IsOvertimeTimerTimer(this->IsOvertimeTimer);
SetSendRestrict(false);
break;
}
case 0x94 :
{
switch(CurrentYinShiPinCommand)
{
case 15://信道诊断
{
AnsiString Message = "" ;
if(pRecBuf[20] == 0)
{
Message = " 信道诊断成功. ";
}
else
{
Message = " 信道诊断失败. ";
}
TfmMessage *message = new TfmMessage(Application);
message->lbMessage->Caption = Message;
message->Show();
Command = 0 ;
IsOvertimeTimerTimer(this->IsOvertimeTimer);
SetSendRestrict(false);
break ;
}
case 16://获取软件版本号返回
{
AnsiString Message = "" ;
if(pRecBuf[20] == 0)
{
Message = "当前软件的版本号为:" + IntToStr(pRecBuf[17])+ ".";
}
else
{
Message = " 获取软件版本号失败. ";
}
TfmMessage *message = new TfmMessage(Application);
message->lbMessage->Caption = Message;
message->Show();
break ;
}
}
Command = 0 ;
IsOvertimeTimerTimer(this->IsOvertimeTimer);
SetSendRestrict(false);
break;
}
case 0x82:
{
switch(CurrentYinShiPinCommand)
{
case 17://视频切换
{
AnsiString Message = "" ;
if(pRecBuf[20] == 0)
{
Message = " 视频切换成功. ";
}
else if(pRecBuf[20] == 5)
{
Message = " 视频切换失败. ";
}
TfmMessage *message = new TfmMessage(Application);
message->lbMessage->Caption = Message;
message->Show();
break ;
}
case 18://音频切换
{
AnsiString Message = "" ;
if(pRecBuf[20] == 0)
{
Message = " 音频切换成功. ";
}
else if(pRecBuf[20] == 5)
{
Message = " 音频切换失败. ";
}
TfmMessage *message = new TfmMessage(Application);
message->lbMessage->Caption = Message;
message->Show();
break ;
}
}
Command = 0 ;
IsOvertimeTimerTimer(this->IsOvertimeTimer);
SetSendRestrict(false);
break ;
}
case 0x8E:
{
switch(CurrentYinShiPinCommand)
{
case 20://DVR视频切换
{
AnsiString Message = "" ;
if(pRecBuf[20] == 0)
{
Message = " DVR视频切换成功. ";
}
else if(pRecBuf[20] == 5)
{
Message = " DVR视频切换失败. ";
}
TfmMessage *message = new TfmMessage(Application);
message->lbMessage->Caption = Message;
message->Show();
break ;
}
case 19://DVR音频切换
{
AnsiString Message = "" ;
if(pRecBuf[20] == 0)
{
Message = " DVR音频切换成功. ";
}
else if(pRecBuf[20] == 5)
{
Message = " DVR音频切换失败. ";
}
TfmMessage *message = new TfmMessage(Application);
message->lbMessage->Caption = Message;
message->Show();
break ;
}
}
Command = 0 ;
IsOvertimeTimerTimer(this->IsOvertimeTimer);
SetSendRestrict(false);
break ;
}*/
/* BYTE DATAINFO[12] ;
memcpy(DATAINFO,pRecBuf+26,12);
DisposeGetInfoControl(DATAINFO) ;
GetInfoControlForm1->ShowShowModal(); */
}
return;
}
}
//---------------------------------------------------------------------------
void __fastcall TfmMain::N35Click(TObject *Sender)
{
/* AnsiString SUNUM,LINENUM;
int ADR,CHANNEL ;
GetStationOfLensInfo(&LINENUM,&SUNUM,&ADR,&CHANNEL) ;
//GetCurDataTransferState(SUNUM,LINENUM);
HideTime(SUNUM,LINENUM,CHANNEL,ADR) ;*/
}
//---------------------------------------------------------------------------
void __fastcall TfmMain::N34Click(TObject *Sender)
{
/* AnsiString SUNUM,LINENUM ;
int ADR,CHANNEL ;
GetStationOfLensInfo(&LINENUM,&SUNUM,&ADR,&CHANNEL) ;
DisPlayTime(SUNUM,LINENUM,CHANNEL,ADR) ;*/
}
//---------------------------------------------------------------------------
void __fastcall TfmMain::N12Click(TObject *Sender)
{
//获取音频切换状态
BYTE DataInfo[2];
memset(DataInfo, 0, 2);
int LINENUM = 0,SUNUM = 0;
// LINENUM = GetLineNum(NodeParText);
SUNUM = GetSuNum(NodeText);
//DATAINFO
DataInfo[0] = 0X09;//COMMAND TYPE 参数型号
MakePack(DataInfo,1,0X04,SUNUM,0X00,0XC5,LINENUM,SUNUM,"获取音频切换命令");
}
//---------------------------------------------------------------------------
void __fastcall TfmMain::G1Click(TObject *Sender)
{
int LINENUM = 0,SUNUM = 0;
// LINENUM = GetLineNum(NodeParText);
SUNUM = GetSuNum(NodeText);
GetAvSettingsForm->StationNoEdit->Text = SUNUM ;
// GetAvSettingsForm->LineNoEdit->Text = LINENUM ;
GetAvSettingsForm->DVRTYPE->Caption = 0;
GetAvSettingsForm->ShowModal();
}
//---------------------------------------------------------------------------
void __fastcall TfmMain::IM1Click(TObject *Sender)
{
int LINENUM = 0,SUNUM = 0;
// LINENUM = GetLineNum(NodeParText);
SUNUM = GetSuNum(NodeText);
GetMPEGForm->StationNoEdit->Text = SUNUM ;
// GetMPEGForm->LineNoEdit->Text = LINENUM ;
GetMPEGForm->DVRTYPE->Caption = 0;
GetMPEGForm->ShowModal();
}
//---------------------------------------------------------------------------
void __fastcall TfmMain::Ip3Click(TObject *Sender)
{
BYTE DataInfo[24];
memset(DataInfo, 0, 24);
int LINENUM = 0,SUNUM = 0;
// LINENUM = GetLineNum(NodeParText);
SUNUM = GetSuNum(NodeText);
//DATAINFO
DataInfo[0] = 0X00;//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地址命令");
}
//---------------------------------------------------------------------------
void __fastcall TfmMain::ARMIP1Click(TObject *Sender)
{
BYTE DataInfo[28];
memset(DataInfo, 0, 28);
int LINENUM = 0,SUNUM = 0;
// LINENUM = GetLineNum(NodeParText);
SUNUM = GetSuNum(NodeText);
//DATAINFO
DataInfo[0] = 0X00;//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地址和端口命令");
}
//---------------------------------------------------------------------------
void __fastcall TfmMain::N43Click(TObject *Sender)
{//打开声音
int LINENUM = 0,SUNUM = 0;
// LINENUM = GetLineNum(NodeParText);
SUNUM = GetSuNum(NodeText);
StartVoiceForm->StationNoEdit->Text = SUNUM ;
// StartVoiceForm->LineNoEdit->Text = LINENUM ;
StartVoiceForm->DVRTYPE->Caption = 0;
StartVoiceForm->ShowModal();
}