m2

/// <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();
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章