mend

来源:互联网 发布:淘宝中差评外包团队 编辑:程序博客网 时间:2024/06/03 17:46

//---------------------------------------------------------------------------

void __fastcall TfmMain::N66Click(TObject *Sender)
{//获取ARM版本号
    BYTE DataInfo[12];
    memset(DataInfo, 0, 12);
    int LINENUM = 0,SUNUM = 0;
//    LINENUM = GetLineNum(NodeParText);
    SUNUM = GetSuNum(NodeText);

    //DATAINFO
    DataInfo[0] = 0X02;//0 = DVR监控;1 = DVR录像;2=ARM;3=GAS 1B
    DataInfo[1] = 0X0B;//
    DataInfo[2] = 0X00;//序号 WORD  - 2B
    DataInfo[3] = 0XFF;//
    DataInfo[4] = 0X08;//长度 DWORD
    DataInfo[8] = 0X00;//命令码 DWORD

    MakePack(DataInfo,12,0X04,SUNUM,0XC1,0XC3,LINENUM,SUNUM,"获取ARM版本号命令");
}
//---------------------------------------------------------------------------

void __fastcall TfmMain::N67Click(TObject *Sender)
{//获取DVR版本号
    BYTE DataInfo[12];
    memset(DataInfo, 0, 12);
    int LINENUM = 0,SUNUM = 0;
//    LINENUM = GetLineNum(NodeParText);
    SUNUM = GetSuNum(NodeText);

    //DATAINFO
    DataInfo[0] = 0X00;//0 - 监控 1 - 录像  1B
    DataInfo[1] = 0X0C;//
    DataInfo[2] = 0X00;//序号 WORD  - 2B
    DataInfo[3] = 0XFF;//
    DataInfo[4] = 0X08;//长度 DWORD
    DataInfo[8] = 0X00;//命令码 DWORD

    MakePack(DataInfo,12,0X04,SUNUM,0XC1,0XC3,LINENUM,SUNUM,"获取DVR数据传输状态命令");
}
//---------------------------------------------------------------------------

void __fastcall TfmMain::N68Click(TObject *Sender)
{//获取DVR版本号
    BYTE DataInfo[12];
    memset(DataInfo, 0, 12);
    int LINENUM = 0,SUNUM = 0;
//    LINENUM = GetLineNum(NodeParText);
    SUNUM = GetSuNum(NodeText);

    //DATAINFO
    DataInfo[0] = 0X01;//0 - 监控 1 - 录像  1B
    DataInfo[1] = 0X0C;//
    DataInfo[2] = 0X00;//序号 WORD  - 2B
    DataInfo[3] = 0XFF;//
    DataInfo[4] = 0X08;//长度 DWORD
    DataInfo[8] = 0X00;//命令码 DWORD

    MakePack(DataInfo,12,0X04,SUNUM,0XC1,0XC3,LINENUM,SUNUM,"获取DVR数据传输状态命令");

}
//---------------------------------------------------------------------------

void __fastcall TfmMain::N69Click(TObject *Sender)
{//获取GAS数据传输状态
    BYTE DataInfo[12];
    memset(DataInfo, 0, 12);
    int LINENUM = 0,SUNUM = 0;
//    LINENUM = GetLineNum(NodeParText);
    SUNUM = GetSuNum(NodeText);

    //DATAINFO
    DataInfo[0] = 0X03;//0 = DVR监控;1 = DVR录像;2=ARM;3=GAS 1B
    DataInfo[1] = 0X0D;//
    DataInfo[2] = 0X00;//序号 WORD  - 2B
    DataInfo[3] = 0XFF;//
    DataInfo[4] = 0X08;//长度 DWORD
    DataInfo[8] = 0X00;//命令码 DWORD

    MakePack(DataInfo,12,0X04,SUNUM,0XC1,0XC3,LINENUM,SUNUM,"获取GAS版本号命令");
}
//---------------------------------------------------------------------------

void __fastcall TfmMain::N70Click(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] = 0XFF;//
    DataInfo[1] = SUNUM;//
    DataInfo[2] = 0;//
    DataInfo[3] = 0;//
    DataInfo[4] = 0;//
    MakePack(DataInfo,5,0X04,SUNUM,0X00,0XD3,LINENUM,SUNUM,"获取主控版本号命令");
}
//---------------------------------------------------------------------------

 

void __fastcall TfmMain::MenuItem8Click(TObject *Sender)
{
 GacHuaLu->Enabled = true;
    MenuItem8->Enabled = false;
    fmGacHuaLu->ListView1->Items->Clear();
}
//---------------------------------------------------------------------------

void __fastcall TfmMain::MenuItem13Click(TObject *Sender)
{
 GacDuanKou->Enabled = true;
    MenuItem13->Enabled = false;
    GacDuanKoulag = 10;
    fmGacDuanKou->ListView1->Items->Clear();
}
//---------------------------------------------------------------------------

void __fastcall TfmMain::MenuItem14Click(TObject *Sender)
{
 GacQieHuan->Enabled = true;
    MenuItem14->Enabled = false;
    GacQieHuanFlag = 19;
    memset(Gac4pBufTemp,0,640);
    GacQieHuanCount = 0;
}
//---------------------------------------------------------------------------

void __fastcall TfmMain::GacHuaLuTimer(TObject *Sender)
{
 String SMNAME = tvDevice->Selected->Text;
    AnsiString asSql = "select * from CT_DEV where SMNAME='" + SMNAME + "'";
    ADOSelect->Close();
    ADOSelect->SQL->Clear();
    ADOSelect->SQL->Add(asSql);
    ADOSelect->Open();

    int SMADDR = ADOSelect->FieldByName("SMADDR")->AsInteger;
 GacHuaLuFlag += 1;
    if(GacHuaLuFlag >= 5)
    {
        GacHuaLu->Enabled = false;
        GacHuaLuFlag = 0;
        MenuItem8->Enabled = true;
        return;
    }
    switch(GacHuaLuFlag)
    {
     case 1:
        {
         BYTE DataInfo[6];
            memset(DataInfo, 0, 6);
            int LINENUM = 0,SUNUM = 0;

            DataInfo[0] = 0X04;//
            DataInfo[1] = GacHuaLuFlag;//
            DataInfo[2] = 0X20;//
            DataInfo[3] = 0X00;//
            DataInfo[4] = 0X20;//
            DataInfo[5] = 0X3F;//
            if(!ClientSocket->Active)
            {//判断是否和服务器处于正常连接状态
             GacHuaLu->Enabled = false;
                MenuItem8->Enabled = true;
                MessageShow("网络连接失败,请先确认网络连接状态!");
                return;
            }
            MakePack(DataInfo,6,0X04,SMADDR,0XD4,0X42,LINENUM,SUNUM,"查看GAC-4音频话路信息命令");
         break;
        }
        case 2:
        {
         BYTE DataInfo[6];
            memset(DataInfo, 0, 6);
            int LINENUM = 0,SUNUM = 0;

            DataInfo[0] = 0X04;//
            DataInfo[1] = GacHuaLuFlag;//
            DataInfo[2] = 0X20;//
            DataInfo[3] = 0X40;//
            DataInfo[4] = 0X20;//
            DataInfo[5] = 0X7F;//
            if(!ClientSocket->Active)
            {//判断是否和服务器处于正常连接状态
             GacHuaLu->Enabled = false;
                MenuItem8->Enabled = true;
                MessageShow("网络连接失败,请先确认网络连接状态!");
                return;
            }
            MakePack(DataInfo,6,0X04,SMADDR,0XD4,0X42,LINENUM,SUNUM,"查看GAC-4音频话路信息命令");
         break;
        }
        case 3:
        {
         BYTE DataInfo[6];
            memset(DataInfo, 0, 6);
            int LINENUM = 0,SUNUM = 0;

            DataInfo[0] = 0X04;//
            DataInfo[1] = GacHuaLuFlag;//
            DataInfo[2] = 0X20;//
            DataInfo[3] = 0X80;//
            DataInfo[4] = 0X20;//
            DataInfo[5] = 0XBF;//
            if(!ClientSocket->Active)
            {//判断是否和服务器处于正常连接状态
             GacHuaLu->Enabled = false;
                MenuItem8->Enabled = true;
                MessageShow("网络连接失败,请先确认网络连接状态!");
                return;
            }
            MakePack(DataInfo,6,0X04,SMADDR,0XD4,0X42,LINENUM,SUNUM,"查看GAC-4音频话路信息命令");
         break;
        }
        case 4:
        {
         BYTE DataInfo[6];
            memset(DataInfo, 0, 6);
            int LINENUM = 0,SUNUM = 0;

            DataInfo[0] = 0X04;//
            DataInfo[1] = GacHuaLuFlag;//
            DataInfo[2] = 0X20;//
            DataInfo[3] = 0XC0;//
            DataInfo[4] = 0X20;//
            DataInfo[5] = 0XFF;//
            if(!ClientSocket->Active)
            {//判断是否和服务器处于正常连接状态
             GacHuaLu->Enabled = false;
                MenuItem8->Enabled = true;
                MessageShow("网络连接失败,请先确认网络连接状态!");
                return;
            }
            MakePack(DataInfo,6,0X04,SMADDR,0XD4,0X42,LINENUM,SUNUM,"查看GAC-4音频话路信息命令");
         break;
        }
    }
}
//---------------------------------------------------------------------------


void __fastcall TfmMain::GacDuanKouTimer(TObject *Sender)
{
 String SMNAME = tvDevice->Selected->Text;
    AnsiString asSql = "select * from CT_DEV where SMNAME='" + SMNAME + "'";
    ADOSelect->Close();
    ADOSelect->SQL->Clear();
    ADOSelect->SQL->Add(asSql);
    ADOSelect->Open();

    int SMADDR = ADOSelect->FieldByName("SMADDR")->AsInteger;
 GacDuanKoulag += 1;
    if(GacDuanKoulag >= 19)
    {
        GacDuanKou->Enabled = false;
        GacDuanKoulag = 10;
        MenuItem13->Enabled = true;
        return;
    }
    switch(GacDuanKoulag)
    {
     case 11:
        {
         BYTE DataInfo[6];
            memset(DataInfo, 0, 6);
            int LINENUM = 0,SUNUM = 0;

            DataInfo[0] = 0X04;//
            DataInfo[1] = GacDuanKoulag;//
            DataInfo[2] = 0X21;//
            DataInfo[3] = 0X00;//
            DataInfo[4] = 0X21;//
            DataInfo[5] = 0X3F;//
            if(!ClientSocket->Active)
            {//判断是否和服务器处于正常连接状态
             GacDuanKou->Enabled = false;
                MenuItem13->Enabled = true;
                MessageShow("网络连接失败,请先确认网络连接状态!");
                return;
            }
            MakePack(DataInfo,6,0X04,SMADDR,0XD4,0X42,LINENUM,SUNUM,"查看GAC-4音频端口信息命令");
         break;
        }
        case 12:
        {
         BYTE DataInfo[6];
            memset(DataInfo, 0, 6);
            int LINENUM = 0,SUNUM = 0;

            DataInfo[0] = 0X04;//
            DataInfo[1] = GacDuanKoulag;//
            DataInfo[2] = 0X21;//
            DataInfo[3] = 0X40;//
            DataInfo[4] = 0X21;//
            DataInfo[5] = 0X7F;//
            if(!ClientSocket->Active)
            {//判断是否和服务器处于正常连接状态
             GacDuanKou->Enabled = false;
                MenuItem13->Enabled = true;
                MessageShow("网络连接失败,请先确认网络连接状态!");
                return;
            }
            MakePack(DataInfo,6,0X04,SMADDR,0XD4,0X42,LINENUM,SUNUM,"查看GAC-4音频端口信息命令");
         break;
        }
        case 13:
        {
         BYTE DataInfo[6];
            memset(DataInfo, 0, 6);
            int LINENUM = 0,SUNUM = 0;

            DataInfo[0] = 0X04;//
            DataInfo[1] = GacDuanKoulag;//
            DataInfo[2] = 0X21;//
            DataInfo[3] = 0X80;//
            DataInfo[4] = 0X21;//
            DataInfo[5] = 0XBF;//
            if(!ClientSocket->Active)
            {//判断是否和服务器处于正常连接状态
             GacDuanKou->Enabled = false;
                MenuItem13->Enabled = true;
                MessageShow("网络连接失败,请先确认网络连接状态!");
                return;
            }
            MakePack(DataInfo,6,0X04,SMADDR,0XD4,0X42,LINENUM,SUNUM,"查看GAC-4音频端口信息命令");
         break;
        }
        case 14:
        {
         BYTE DataInfo[6];
            memset(DataInfo, 0, 6);
            int LINENUM = 0,SUNUM = 0;

            DataInfo[0] = 0X04;//
            DataInfo[1] = GacDuanKoulag;//
            DataInfo[2] = 0X21;//
            DataInfo[3] = 0XC0;//
            DataInfo[4] = 0X21;//
            DataInfo[5] = 0XFF;//
            if(!ClientSocket->Active)
            {//判断是否和服务器处于正常连接状态
             GacDuanKou->Enabled = false;
                MenuItem13->Enabled = true;
                MessageShow("网络连接失败,请先确认网络连接状态!");
                return;
            }
            MakePack(DataInfo,6,0X04,SMADDR,0XD4,0X42,LINENUM,SUNUM,"查看GAC-4音频端口信息命令");
         break;
        }

        case 15:
        {
         BYTE DataInfo[6];
            memset(DataInfo, 0, 6);
            int LINENUM = 0,SUNUM = 0;

            DataInfo[0] = 0X04;//
            DataInfo[1] = GacDuanKoulag;//
            DataInfo[2] = 0X22;//
            DataInfo[3] = 0X00;//
            DataInfo[4] = 0X22;//
            DataInfo[5] = 0X3F;//
            if(!ClientSocket->Active)
            {//判断是否和服务器处于正常连接状态
             GacDuanKou->Enabled = false;
                MenuItem13->Enabled = true;
                MessageShow("网络连接失败,请先确认网络连接状态!");
                return;
            }
            MakePack(DataInfo,6,0X04,SMADDR,0XD4,0X42,LINENUM,SUNUM,"查看GAC-4音频端口信息命令");
         break;
        }
        case 16:
        {
         BYTE DataInfo[6];
            memset(DataInfo, 0, 6);
            int LINENUM = 0,SUNUM = 0;

            DataInfo[0] = 0X04;//
            DataInfo[1] = GacDuanKoulag;//
            DataInfo[2] = 0X22;//
            DataInfo[3] = 0X40;//
            DataInfo[4] = 0X22;//
            DataInfo[5] = 0X7F;//
            if(!ClientSocket->Active)
            {//判断是否和服务器处于正常连接状态
             GacDuanKou->Enabled = false;
                MenuItem13->Enabled = true;
                MessageShow("网络连接失败,请先确认网络连接状态!");
                return;
            }
            MakePack(DataInfo,6,0X04,SMADDR,0XD4,0X42,LINENUM,SUNUM,"查看GAC-4音频端口信息命令");
         break;
        }
        case 17:
        {
         BYTE DataInfo[6];
            memset(DataInfo, 0, 6);
            int LINENUM = 0,SUNUM = 0;

            DataInfo[0] = 0X04;//
            DataInfo[1] = GacDuanKoulag;//
            DataInfo[2] = 0X22;//
            DataInfo[3] = 0X80;//
            DataInfo[4] = 0X22;//
            DataInfo[5] = 0XBF;//
            if(!ClientSocket->Active)
            {//判断是否和服务器处于正常连接状态
             GacDuanKou->Enabled = false;
                MenuItem13->Enabled = true;
                MessageShow("网络连接失败,请先确认网络连接状态!");
                return;
            }
            MakePack(DataInfo,6,0X04,SMADDR,0XD4,0X42,LINENUM,SUNUM,"查看GAC-4音频端口信息命令");
         break;
        }
        case 18:
        {
         BYTE DataInfo[6];
            memset(DataInfo, 0, 6);
            int LINENUM = 0,SUNUM = 0;

            DataInfo[0] = 0X04;//
            DataInfo[1] = GacDuanKoulag;//
            DataInfo[2] = 0X22;//
            DataInfo[3] = 0XC0;//
            DataInfo[4] = 0X22;//
            DataInfo[5] = 0XFF;//
            if(!ClientSocket->Active)
            {//判断是否和服务器处于正常连接状态
             GacDuanKou->Enabled = false;
                MenuItem13->Enabled = true;
                MessageShow("网络连接失败,请先确认网络连接状态!");
                return;
            }
            MakePack(DataInfo,6,0X04,SMADDR,0XD4,0X42,LINENUM,SUNUM,"查看GAC-4音频端口信息命令");
         break;
        }
    } 
}
//---------------------------------------------------------------------------

void __fastcall TfmMain::GacQieHuanTimer(TObject *Sender)
{
 String SMNAME = tvDevice->Selected->Text;
    AnsiString asSql = "select * from CT_DEV where SMNAME='" + SMNAME + "'";
    ADOSelect->Close();
    ADOSelect->SQL->Clear();
    ADOSelect->SQL->Add(asSql);
    ADOSelect->Open();

    int SMADDR = ADOSelect->FieldByName("SMADDR")->AsInteger;
 GacQieHuanFlag += 1;
    if(GacQieHuanFlag >= 30)
    {
        GacQieHuan->Enabled = false;
        GacQieHuanFlag = 19;
        MenuItem14->Enabled = true;
        return;
    }
    switch(GacQieHuanFlag)
    {
     case 20:
        {
         BYTE DataInfo[6];
            memset(DataInfo, 0, 6);
            int LINENUM = 0,SUNUM = 0;

            DataInfo[0] = 0X04;//
            DataInfo[1] = GacQieHuanFlag;//
            DataInfo[2] = 0X21;//
            DataInfo[3] = 0X00;//
            DataInfo[4] = 0X21;//
            DataInfo[5] = 0X3F;//
            if(!ClientSocket->Active)
            {//判断是否和服务器处于正常连接状态
             GacQieHuan->Enabled = false;
                MenuItem14->Enabled = true;
                MessageShow("网络连接失败,请先确认网络连接状态!");
                return;
            }
            MakePack(DataInfo,6,0X04,SMADDR,0XD4,0X42,LINENUM,SUNUM,"查看GAC-4混音切换信息命令");
         break;
        }
        case 21:
        {
         BYTE DataInfo[6];
            memset(DataInfo, 0, 6);
            int LINENUM = 0,SUNUM = 0;

            DataInfo[0] = 0X04;//
            DataInfo[1] = GacQieHuanFlag;//
            DataInfo[2] = 0X21;//
            DataInfo[3] = 0X40;//
            DataInfo[4] = 0X21;//
            DataInfo[5] = 0X7F;//
            if(!ClientSocket->Active)
            {//判断是否和服务器处于正常连接状态
             GacQieHuan->Enabled = false;
                MenuItem14->Enabled = true;
                MessageShow("网络连接失败,请先确认网络连接状态!");
                return;
            }
            MakePack(DataInfo,6,0X04,SMADDR,0XD4,0X42,LINENUM,SUNUM,"查看GAC-4混音切换信息命令");
         break;
        }
        case 22:
        {
         BYTE DataInfo[6];
            memset(DataInfo, 0, 6);
            int LINENUM = 0,SUNUM = 0;

            DataInfo[0] = 0X04;//
            DataInfo[1] = GacQieHuanFlag;//
            DataInfo[2] = 0X21;//
            DataInfo[3] = 0X80;//
            DataInfo[4] = 0X21;//
            DataInfo[5] = 0XBF;//
            if(!ClientSocket->Active)
            {//判断是否和服务器处于正常连接状态
             GacQieHuan->Enabled = false;
                MenuItem14->Enabled = true;
                MessageShow("网络连接失败,请先确认网络连接状态!");
                return;
            }
            MakePack(DataInfo,6,0X04,SMADDR,0XD4,0X42,LINENUM,SUNUM,"查看GAC-4混音切换信息命令");
         break;
        }
        case 23:
        {
         BYTE DataInfo[6];
            memset(DataInfo, 0, 6);
            int LINENUM = 0,SUNUM = 0;

            DataInfo[0] = 0X04;//
            DataInfo[1] = GacQieHuanFlag;//
            DataInfo[2] = 0X21;//
            DataInfo[3] = 0XC0;//
            DataInfo[4] = 0X21;//
            DataInfo[5] = 0XFF;//
            if(!ClientSocket->Active)
            {//判断是否和服务器处于正常连接状态
             GacQieHuan->Enabled = false;
                MenuItem14->Enabled = true;
                MessageShow("网络连接失败,请先确认网络连接状态!");
                return;
            }
            MakePack(DataInfo,6,0X04,SMADDR,0XD4,0X42,LINENUM,SUNUM,"查看GAC-4混音切换信息命令");
         break;
        }

        case 24:
        {
         BYTE DataInfo[6];
            memset(DataInfo, 0, 6);
            int LINENUM = 0,SUNUM = 0;

            DataInfo[0] = 0X04;//
            DataInfo[1] = GacQieHuanFlag;//
            DataInfo[2] = 0X22;//
            DataInfo[3] = 0X00;//
            DataInfo[4] = 0X22;//
            DataInfo[5] = 0X3F;//
            if(!ClientSocket->Active)
            {//判断是否和服务器处于正常连接状态
             GacQieHuan->Enabled = false;
                MenuItem14->Enabled = true;
                MessageShow("网络连接失败,请先确认网络连接状态!");
                return;
            }
            MakePack(DataInfo,6,0X04,SMADDR,0XD4,0X42,LINENUM,SUNUM,"查看GAC-4混音切换信息命令");
         break;
        }
        case 25:
        {
         BYTE DataInfo[6];
            memset(DataInfo, 0, 6);
            int LINENUM = 0,SUNUM = 0;

            DataInfo[0] = 0X04;//
            DataInfo[1] = GacQieHuanFlag;//
            DataInfo[2] = 0X22;//
            DataInfo[3] = 0X40;//
            DataInfo[4] = 0X22;//
            DataInfo[5] = 0X7F;//
            if(!ClientSocket->Active)
            {//判断是否和服务器处于正常连接状态
             GacQieHuan->Enabled = false;
                MenuItem14->Enabled = true;
                MessageShow("网络连接失败,请先确认网络连接状态!");
                return;
            }
            MakePack(DataInfo,6,0X04,SMADDR,0XD4,0X42,LINENUM,SUNUM,"查看GAC-4混音切换信息命令");
         break;
        }
        case 26:
        {
         BYTE DataInfo[6];
            memset(DataInfo, 0, 6);
            int LINENUM = 0,SUNUM = 0;

            DataInfo[0] = 0X04;//
            DataInfo[1] = GacQieHuanFlag;//
            DataInfo[2] = 0X22;//
            DataInfo[3] = 0X80;//
            DataInfo[4] = 0X22;//
            DataInfo[5] = 0XBF;//
            if(!ClientSocket->Active)
            {//判断是否和服务器处于正常连接状态
             GacQieHuan->Enabled = false;
                MenuItem14->Enabled = true;
                MessageShow("网络连接失败,请先确认网络连接状态!");
                return;
            }
            MakePack(DataInfo,6,0X04,SMADDR,0XD4,0X42,LINENUM,SUNUM,"查看GAC-4混音切换信息命令");
         break;
        }
        case 27:
        {
         BYTE DataInfo[6];
            memset(DataInfo, 0, 6);
            int LINENUM = 0,SUNUM = 0;

            DataInfo[0] = 0X04;//
            DataInfo[1] = GacQieHuanFlag;//
            DataInfo[2] = 0X22;//
            DataInfo[3] = 0XC0;//
            DataInfo[4] = 0X22;//
            DataInfo[5] = 0XFF;//
            if(!ClientSocket->Active)
            {//判断是否和服务器处于正常连接状态
             GacQieHuan->Enabled = false;
                MenuItem14->Enabled = true;
                MessageShow("网络连接失败,请先确认网络连接状态!");
                return;
            }
            MakePack(DataInfo,6,0X04,SMADDR,0XD4,0X42,LINENUM,SUNUM,"查看GAC-4混音切换信息命令");
         break;
        }
        case 28:
        {
         BYTE DataInfo[6];
            memset(DataInfo, 0, 6);
            int LINENUM = 0,SUNUM = 0;

            DataInfo[0] = 0X04;//
            DataInfo[1] = GacQieHuanFlag;//
            DataInfo[2] = 0X22;//
            DataInfo[3] = 0X80;//
            DataInfo[4] = 0X22;//
            DataInfo[5] = 0XBF;//
            if(!ClientSocket->Active)
            {//判断是否和服务器处于正常连接状态
             GacQieHuan->Enabled = false;
                MenuItem14->Enabled = true;
                MessageShow("网络连接失败,请先确认网络连接状态!");
                return;
            }
            MakePack(DataInfo,6,0X04,SMADDR,0XD4,0X42,LINENUM,SUNUM,"查看GAC-4混音切换信息命令");
         break;
        }
        case 29:
        {
         BYTE DataInfo[6];
            memset(DataInfo, 0, 6);
            int LINENUM = 0,SUNUM = 0;

            DataInfo[0] = 0X04;//
            DataInfo[1] = GacQieHuanFlag;//
            DataInfo[2] = 0X22;//
            DataInfo[3] = 0XC0;//
            DataInfo[4] = 0X22;//
            DataInfo[5] = 0XFF;//
            if(!ClientSocket->Active)
            {//判断是否和服务器处于正常连接状态
             GacQieHuan->Enabled = false;
                MenuItem14->Enabled = true;
                MessageShow("网络连接失败,请先确认网络连接状态!");
                return;
            }
            MakePack(DataInfo,6,0X04,SMADDR,0XD4,0X42,LINENUM,SUNUM,"查看GAC-4混音切换信息命令");
         break;
        }
    } 
}
//---------------------------------------------------------------------------

//后台GAC-4设备返回数据
void __fastcall TfmMain::GacParamsBack(BYTE *pRecBuf)
{
 switch(pRecBuf[20])
    {
        case 1:
        case 2:
        case 3:
        case 4:
        {
         for(int i =0 ;i < 4;i++)
            {
                String str1,str2,str3,str4,str5,str6;
                if((pRecBuf[21 + i * 16] & 0X80) == 0X80)
                {
                    str1 = "话路占用";
                }
                else if((pRecBuf[21 + i * 16] & 0X80) == 0X00)
                {
                    str1 = "话路空闲";
                }
                if((pRecBuf[21 + i * 16] & 0X40) == 0X40)
                {
                    str2 = "有";
                }
                else if((pRecBuf[21 + i * 16] & 0X40) == 0X00)
                {
                    str2 = "无";
                }

                if((pRecBuf[21 + i * 16] & 0X20) == 0X20)
                {
                    str3 = "有";
                }
                else if((pRecBuf[21 + i * 16] & 0X20) == 0X00)
                {
                    str3 = "无";
                }

                str4 = IntToStr(pRecBuf[22 + i * 16]);
                str5 = IntToStr(pRecBuf[23 + i * 16]);
                str6 = IntToStr(pRecBuf[24 + i * 16]);
                fmGacHuaLu->InsertListView(IntToStr(i + 1 + (pRecBuf[20] - 1) * 4),str1,str2,str3,str4,str5,str6);
            }
            if(!fmGacHuaLu->Showing)
            {
                fmGacHuaLu->ShowModal();
            }
            break;
        }
        case 11:
        case 12:
        case 13:
        case 14:
        case 15:
        case 16:
        case 17:
        case 18:
        {
         for(int i =0 ;i < 4;i++)
            {
                String str1,str2,str3,str4,str5,str6,str7,str8,str9,str10;
                if((pRecBuf[21 + i * 16] & 0X80) == 0X80)
                {
                    str1 = "占用";
                }
                else if((pRecBuf[21 + i * 16] & 0X80) == 0X00)
                {
                    str1 = "空闲";
                }
                if((pRecBuf[21 + i * 16] & 0X40) == 0X40)
                {
                    str2 = "有";
                }
                else if((pRecBuf[21 + i * 16] & 0X40) == 0X00)
                {
                    str2 = "无";
                }
                if((pRecBuf[21 + i * 16] & 0X20) == 0X20)
                {
                    str3 = "有";
                }
                else if((pRecBuf[21 + i * 16] & 0X20) == 0X00)
                {
                    str3 = "无";
                }
                if((pRecBuf[21 + i * 16] & 0X10) == 0X10)
                {
                    str4 = "输出";
                }
                else if((pRecBuf[21 + i * 16] & 0X10) == 0X00)
                {
                    str4 = "输入";
                }
                if((pRecBuf[21 + i * 16] & 0X08) == 0X08)
                {
                    str5 = "静音";
                }
                else if((pRecBuf[21 + i * 16] & 0X08) == 0X00)
                {
                    str5 = "不静音";
                }
                str6 = IntToStr(pRecBuf[22 + i * 16]);
                str7 = IntToStr(pRecBuf[23 + i * 16]);
                str8 = IntToStr(pRecBuf[24 + i * 16]);
                str9 = IntToStr(pRecBuf[25 + i * 16]);
                str10 = IntToStr(pRecBuf[26 + i * 16]);
             fmGacDuanKou->InsertListView(IntToStr(i + 1 + (pRecBuf[20] - 10 - 1) * 4),str1,str2,str3,str4,str5,str6,str7,str8,str9,str10);
            }
            if(!fmGacDuanKou->Showing)
            {
                fmGacDuanKou->ShowModal();
            }
            break;
        }

        case 20:
        case 21:
        case 22:
        case 23:
        case 24:
        case 25:
        case 26:
        case 27:
        case 28:
        {
         GacQieHuanCount += 1;
         for(int i=21;i<85;i++)
            {
             Gac4pBufTemp[(i - 21) + 64 * (pRecBuf[20] - 20)] = pRecBuf[i];
            }
            break;
        }
        case 29:
        {
         GacQieHuanCount += 1;
         for(int i=21;i<85;i++)
            {
             Gac4pBufTemp[(i - 21) + 64 * (pRecBuf[20] - 20)] = pRecBuf[i];
            }
            if(GacQieHuanCount == 10)
            {
                for(int i =0 ;i < 8;i++)
                {
                    String str1,str2,str3,str4,str5;
                    if((Gac4pBufTemp[0 + i * 80] & 0X80) == 0X80)
                    {
                        str1 = "有";
                    }
                    else if((Gac4pBufTemp[0 + i * 80] & 0X80) == 0X00)
                    {
                        str1 = "无";
                    }

                    str2 = IntToStr(Gac4pBufTemp[1 + i * 80]);
                    str3 = IntToStr(Gac4pBufTemp[2 + i * 80]);
                    str4 = IntToStr(Gac4pBufTemp[3 + i * 80]);
                    str5 = IntToStr(Gac4pBufTemp[4 + i * 80]);
                    fmGacHunYin->InsertListView(IntToStr(i + 1),str1,str2,str3,str4,str5);
                    String StrTemp,Str;
                    for(int j = (16 + i * 80 ) ; j < ( 47 + i * 80 ) ; j++)
                    {//16 -- 47
                        StrTemp = "";
                        StrTemp.sprintf("%d",Gac4pBufTemp[j]);
                        if (StrLen(StrTemp.c_str()) == 1)
                        {
                            StrTemp = "0" + StrTemp;
                        }
                        Str += StrTemp + " ";
                    }
                    fmGacHunYin->LabelGac[0 + i * 2]->Caption = Str;

                    Str = "";
                    for(int j = (48 + i * 80 ) ; j < ( 79  + i * 80 ) ; j++)
                    {//16 -- 47
                        StrTemp = "";
                        StrTemp.sprintf("%d",Gac4pBufTemp[j]);
                        if (StrLen(StrTemp.c_str()) == 1)
                        {
                            StrTemp = "0" + StrTemp;
                        }
                        Str += StrTemp + " ";
                    }
                    fmGacHunYin->LabelGac[1 + i * 2]->Caption = Str;
                }
                if(!fmGacHunYin->Showing)
                {
                    fmGacHunYin->ShowModal();
                }
            }           
            break;
        }
    }
}
//---------------------------------------------------------------------------

void __fastcall TfmMain::MenuItem18Click(TObject *Sender)
{
 String SMNAME = tvDevice->Selected->Text;
    AnsiString asSql = "select * from CT_DEV where SMNAME='" + SMNAME + "'";
    ADOSelect->Close();
    ADOSelect->SQL->Clear();
    ADOSelect->SQL->Add(asSql);
    ADOSelect->Open();

    int SMADDR = ADOSelect->FieldByName("SMADDR")->AsInteger;
 BYTE DataInfo[2];
    memset(DataInfo, 0, 2);
    int LINENUM = 0,SUNUM = 0;

    DataInfo[0] = 0X00;//
    DataInfo[1] = 0X00;//
    MakePack(DataInfo,2,0X04,SMADDR,0XCA,0X47,LINENUM,SUNUM,"获取Gmux-15E1时钟参数命令");
}
//---------------------------------------------------------------------------

void __fastcall TfmMain::MenuItem19Click(TObject *Sender)
{
 String SMNAME = tvDevice->Selected->Text;
    AnsiString asSql = "select * from CT_DEV where SMNAME='" + SMNAME + "'";
    ADOSelect->Close();
    ADOSelect->SQL->Clear();
    ADOSelect->SQL->Add(asSql);
    ADOSelect->Open();

    int SMADDR = ADOSelect->FieldByName("SMADDR")->AsInteger;
 BYTE DataInfo[2];
    memset(DataInfo, 0, 2);
    int LINENUM = 0,SUNUM = 0;

    DataInfo[0] = 0X00;//
    DataInfo[1] = 0X02;//
    MakePack(DataInfo,2,0X04,SMADDR,0XCA,0X47,LINENUM,SUNUM,"获取Gmux-15业务口配置参数命令");
}
//---------------------------------------------------------------------------

void __fastcall TfmMain::N3521Click(TObject *Sender)
{
String SMNAME = tvDevice->Selected->Text;
    AnsiString asSql = "select * from CT_DEV where SMNAME='" + SMNAME + "'";
    ADOSelect->Close();
    ADOSelect->SQL->Clear();
    ADOSelect->SQL->Add(asSql);
    ADOSelect->Open();

    int SMADDR = ADOSelect->FieldByName("SMADDR")->AsInteger;
 BYTE DataInfo[2];
    memset(DataInfo, 0, 2);
    int LINENUM = 0,SUNUM = 0;

    MakePack(DataInfo,0,0X04,SMADDR,0XCA,0X45,LINENUM,SUNUM,"查询Gmux-15业务口插卡状态命令");
}
//---------------------------------------------------------------------------

void __fastcall TfmMain::MenuItem20Click(TObject *Sender)
{
 String SMNAME = tvDevice->Selected->Text;
    AnsiString asSql = "select * from CT_DEV where SMNAME='" + SMNAME + "'";
    ADOSelect->Close();
    ADOSelect->SQL->Clear();
    ADOSelect->SQL->Add(asSql);
    ADOSelect->Open();

    int SMADDR = ADOSelect->FieldByName("SMADDR")->AsInteger;
 BYTE DataInfo[2];
    memset(DataInfo, 0, 2);
    int LINENUM = 0,SUNUM = 0;

    MakePack(DataInfo,0,0X04,SMADDR,0XCA,0X44,LINENUM,SUNUM,"获取Gmux-15E1告警状态命令");
}
//---------------------------------------------------------------------------

void __fastcall TfmMain::N72Click(TObject *Sender)
{
 String SMNAME = tvDevice->Selected->Text;
    AnsiString asSql = "select * from CT_DEV where SMNAME='" + SMNAME + "'";
    ADOSelect->Close();
    ADOSelect->SQL->Clear();
    ADOSelect->SQL->Add(asSql);
    ADOSelect->Open();

    int SMADDR = ADOSelect->FieldByName("SMADDR")->AsInteger;
 BYTE DataInfo[2];
    memset(DataInfo, 0, 2);
    int LINENUM = 0,SUNUM = 0;

    MakePack(DataInfo,0,0X04,SMADDR,0XCA,0X4F,LINENUM,SUNUM,"查询Gmux-15程序版本号命令");
}
//---------------------------------------------------------------------------

void __fastcall TfmMain::N71Click(TObject *Sender)
{
 String SMNAME = tvDevice->Selected->Text;
    AnsiString asSql = "select * from CT_DEV where SMNAME='" + SMNAME + "'";
    ADOSelect->Close();
    ADOSelect->SQL->Clear();
    ADOSelect->SQL->Add(asSql);
    ADOSelect->Open();

    int SMADDR = ADOSelect->FieldByName("SMADDR")->AsInteger;
 BYTE DataInfo[2];
    memset(DataInfo, 0, 2);
    int LINENUM = 0,SUNUM = 0;

    MakePack(DataInfo,0,0X04,SMADDR,0XCA,0X50,LINENUM,SUNUM,"查询Gmux-15设备地址命令");
}
//---------------------------------------------------------------------------

void __fastcall TfmMain::MenuItem9Click(TObject *Sender)
{
 String SMNAME = tvDevice->Selected->Text;
    AnsiString asSql = "select * from CT_DEV where SMNAME='" + SMNAME + "'";
    ADOSelect->Close();
    ADOSelect->SQL->Clear();
    ADOSelect->SQL->Add(asSql);
    ADOSelect->Open();

    int SMADDR = ADOSelect->FieldByName("SMADDR")->AsInteger;
 BYTE DataInfo[2];
    memset(DataInfo, 0, 2);
    int LINENUM = 0,SUNUM = 0;

    MakePack(DataInfo,0,0X04,SMADDR,0XCA,0X91,LINENUM,SUNUM,"复位Gmux-15命令");
}
//---------------------------------------------------------------------------


void __fastcall TfmMain::GmuxParamsBack(BYTE *pRecBuf)
{
 switch(pRecBuf[9])
    {
     case 0X47:
        {//E1时钟返回 + 业务口配置
         if(pRecBuf[20] == 0)
            {//E1时钟
             switch(pRecBuf[21])
                {
                 case 0X00:
                    {//从A向时钟
                        RadioGroup18->ItemIndex = 0;
                        break;
                    }
                    case 0X01:
                    {//从B向时钟
                        RadioGroup18->ItemIndex = 1;
                        break;
                    }
                    case 0X02:
                    {// 主时钟
                        RadioGroup18->ItemIndex = 2;
                        break;
                    }
                    default :
                    {
                        RadioGroup18->ItemIndex = -1;
                        break;
                    }
                }
            }
            else if(pRecBuf[20] == 2)
            {//业务口配置
                int V35SET = 0,V35TS = 0,GMUXCARD = 0;

                GMUXNum->Clear();
                String asSql = "CREATE TABLE `GMUXTEMP` (`V35NUM` int(10) NOT NULL default '0',/
                `V35SET` int(10) NOT NULL default '0',`V35TS` int(10) NOT NULL default '0'/
                ,`GMUXCARD` int(10) NOT NULL default '0',/
                PRIMARY KEY  (`V35NUM`,`V35SET`,`V35TS`,`GMUXCARD`))";
                if(!CreateTable(asSql))
                {
                    AnsiString asSqldel = "delete from GMUXTEMP";
                    ADOUI->Close();
                    ADOUI->SQL->Clear();
                    ADOUI->SQL->Add(asSqldel);
                    ADOUI->ExecSQL();
                }

                for(int i=0;i<15;i++)
                {
                    V35SET = pRecBuf[21 + i * 3];
                    V35TS = pRecBuf[21 + i * 3 + 1];
                    GMUXCARD = pRecBuf[21 + i * 3 + 2];
                    /*if((V35SET == 0) && (V35TS == 0))
                    {
                        break;
                    }*/
                    //else
                    {
                        AnsiString asSql = "insert into GMUXTEMP values("+IntToStr(i) +","+IntToStr(V35SET)/
                        +","+IntToStr(V35TS)+","+IntToStr(GMUXCARD)+")";
                        ADOUI->Close();
                        ADOUI->SQL->Clear();
                        ADOUI->SQL->Add(asSql);
                        ADOUI->ExecSQL();
                        GMUXNum->Items->Add("业务口" + IntToStr(i + 1));
                    }
                }
                GMUXNum->DropDownCount = GMUXNum->Items->Count;
                GMUXNum->ItemIndex = 0;
                //读取第一条记录
                int V35NUM;
                V35NUM = GMUXNum->ItemIndex;
                asSql = "select * from GMUXTEMP where V35NUM=" + IntToStr(0);
                ADOUI->Close();
                ADOUI->SQL->Clear();
                ADOUI->SQL->Add(asSql);
                ADOUI->Open();
                V35SET = ADOUI->FieldByName("V35SET")->AsInteger;
                V35TS = ADOUI->FieldByName("V35TS")->AsInteger;
                GMUXCARD = ADOUI->FieldByName("GMUXCARD")->AsInteger;
                RadioGroup29->ItemIndex = GMUXCARD;
                if((V35SET & 0X80) == 0X00)
                {// 该 端 口 关 闭
                    RadioGroup19->ItemIndex = 0;
                }
                else if((V35SET & 0X80) == 0X80)
                {// 该 端 口 打 开
                    RadioGroup19->ItemIndex = 1;
                }
                if((V35SET & 0X40) == 0X00)
                {
                    RadioGroup20->ItemIndex = 0;
                }
                else if((V35SET & 0X40) == 0X40)
                {
                    RadioGroup20->ItemIndex = 1;
                }
                if((V35SET & 0X20) == 0X00)
                {
                    RadioGroup21->ItemIndex = 0;
                }
                else if((V35SET & 0X20) == 0X20)
                {
                    RadioGroup21->ItemIndex = 1;
                }
                Edit6->Text = IntToStr((V35SET & 0X1F));
                if((V35TS & 0X80) == 0X00)
                {//
                    RadioGroup22->ItemIndex = 0;
                }
                else if((V35TS & 0X80) == 0X80)
                {//
                    RadioGroup22->ItemIndex = 1;
                }
                if((V35TS & 0X40) == 0X00)
                {
                    RadioGroup24->ItemIndex = 0;
                }
                else if((V35TS & 0X40) == 0X40)
                {
                    RadioGroup24->ItemIndex = 1;
                }
                if((V35SET & 0X20) == 0X20)
                {
                    if((V35TS & 0X20) == 0X00)
                    {
                        RadioGroup23->ItemIndex = 0;
                    }
                    else if((V35TS & 0X20) == 0X20)
                    {
                        RadioGroup23->ItemIndex = 1;
                    }
                }
                else
                {
                    RadioGroup23->ItemIndex = -1;
                }
                Edit7->Text = IntToStr((V35TS & 0X1F));

                GroupBox7->Enabled = true;
                break;
            }
         break;
        }
        case 0X44:
        {//E1告警状态
           if((pRecBuf[19] & 0X01) == 0)
            {
             RadioGroup25->ItemIndex = 0;
            }
            else if((pRecBuf[19] & 0X01) == 1)
            {
             RadioGroup25->ItemIndex = 1;
            }
           
            if((pRecBuf[19] & 0X02) == 0)
            {
             RadioGroup26->ItemIndex = 0;
            }
            else if((pRecBuf[19] & 0X02) == 2)
            {
             RadioGroup25->ItemIndex = 1;
            }

            if((pRecBuf[19] & 0X04)== 0)
            {
             RadioGroup28->ItemIndex = 0;
            }
            else if((pRecBuf[19] & 0X04) == 4)
            {
             RadioGroup28->ItemIndex = 1;
            }

            if((pRecBuf[19] & 0X08) == 0)
            {
             RadioGroup27->ItemIndex = 0;
            }
            else if((pRecBuf[19] & 0X08) == 8)
            {
             RadioGroup27->ItemIndex = 1;
            }

         break;
        }
        case 0X45:
        {//业务口插卡状态
         if((pRecBuf[20] & 0X01) == 0)
            {
             fmGmuxYeWuKou->RadioGroup1->ItemIndex = 0;
            }
            else if((pRecBuf[20] & 0X01) == 1)
            {
             fmGmuxYeWuKou->RadioGroup1->ItemIndex = 1;
            }

            if((pRecBuf[20] & 0X02) == 0)
            {
             fmGmuxYeWuKou->RadioGroup2->ItemIndex = 0;
            }
            else if((pRecBuf[20] & 0X02) == 2)
            {
             fmGmuxYeWuKou->RadioGroup2->ItemIndex = 1;
            }

            if((pRecBuf[20] & 0X04) == 0)
            {
             fmGmuxYeWuKou->RadioGroup3->ItemIndex = 0;
            }
            else if((pRecBuf[20] & 0X04) == 4)
            {
             fmGmuxYeWuKou->RadioGroup3->ItemIndex = 1;
            }

            if((pRecBuf[20] & 0X08) == 0)
            {
             fmGmuxYeWuKou->RadioGroup4->ItemIndex = 0;
            }
            else if((pRecBuf[20] & 0X08) == 8)
            {
             fmGmuxYeWuKou->RadioGroup4->ItemIndex = 1;
            }

            if((pRecBuf[20] & 0X10) == 0)
            {
             fmGmuxYeWuKou->RadioGroup5->ItemIndex = 0;
            }
            else if((pRecBuf[20] & 0X10) == 0X10)
            {
             fmGmuxYeWuKou->RadioGroup5->ItemIndex = 1;
            }

            if((pRecBuf[20] & 0X20) == 0)
            {
             fmGmuxYeWuKou->RadioGroup6->ItemIndex = 0;
            }
            else if((pRecBuf[20] & 0X20) == 0X20)
            {
             fmGmuxYeWuKou->RadioGroup6->ItemIndex = 1;
            }

            if((pRecBuf[20] & 0X40) == 0)
            {
             fmGmuxYeWuKou->RadioGroup7->ItemIndex = 0;
            }
            else if((pRecBuf[20] & 0X40) == 0X40)
            {
             fmGmuxYeWuKou->RadioGroup7->ItemIndex = 1;
            }

            if((pRecBuf[20] & 0X80) == 0)
            {
             fmGmuxYeWuKou->RadioGroup8->ItemIndex = 0;
            }
            else if((pRecBuf[20] & 0X80) == 0X80)
            {
             fmGmuxYeWuKou->RadioGroup8->ItemIndex = 1;
            }


            if((pRecBuf[19] & 0X01) == 0)
            {
             fmGmuxYeWuKou->RadioGroup9->ItemIndex = 0;
            }
            else if((pRecBuf[19] & 0X01) == 1)
            {
             fmGmuxYeWuKou->RadioGroup9->ItemIndex = 1;
            }

            if((pRecBuf[19] & 0X02) == 0)
            {
             fmGmuxYeWuKou->RadioGroup10->ItemIndex = 0;
            }
            else if((pRecBuf[19] & 0X02) == 2)
            {
             fmGmuxYeWuKou->RadioGroup10->ItemIndex = 1;
            }

            if((pRecBuf[19] & 0X04) == 0)
            {
             fmGmuxYeWuKou->RadioGroup11->ItemIndex = 0;
            }
            else if((pRecBuf[19] & 0X04) == 4)
            {
             fmGmuxYeWuKou->RadioGroup11->ItemIndex = 1;
            }

            if((pRecBuf[19] & 0X08) == 0)
            {
             fmGmuxYeWuKou->RadioGroup12->ItemIndex = 0;
            }
            else if((pRecBuf[19] & 0X08) == 8)
            {
             fmGmuxYeWuKou->RadioGroup12->ItemIndex = 1;
            }

            if((pRecBuf[19] & 0X10) == 0)
            {
             fmGmuxYeWuKou->RadioGroup13->ItemIndex = 0;
            }
            else if((pRecBuf[19] & 0X10) == 0X10)
            {
             fmGmuxYeWuKou->RadioGroup13->ItemIndex = 1;
            }

            if((pRecBuf[19] & 0X20) == 0)
            {
             fmGmuxYeWuKou->RadioGroup14->ItemIndex = 0;
            }
            else if((pRecBuf[19] & 0X20) == 0X20)
            {
             fmGmuxYeWuKou->RadioGroup14->ItemIndex = 1;
            }

            if((pRecBuf[19] & 0X40) == 0)
            {
             fmGmuxYeWuKou->RadioGroup15->ItemIndex = 0;
            }
            else if((pRecBuf[19] & 0X40) == 0X40)
            {
             fmGmuxYeWuKou->RadioGroup15->ItemIndex = 1;
            }
            fmGmuxYeWuKou->ShowModal();
           
          break;
        }
        case 0X91:
        {//复位命令
         if(pRecBuf[15] == 0 && pRecBuf[16] == 0 && pRecBuf[17] == 0 && pRecBuf[18] == 0)
            {
             MessageShow("GMUX-15复位成功!");
            }
            else
            {
            MessageShow("GMUX-15复位失败!");
            }
          break;
        }
        /*case 0X50:
        {//设备地址
          break;
        }
        case 0X4F:
        {//程序版本号
          break;
        }*/
    }
}

void __fastcall TfmMain::GMUXNumChange(TObject *Sender)
{
    int V35SET,V35TS,V35NUM,GMUXCARD = 0;
    V35NUM = GMUXNum->ItemIndex;
    AnsiString asSql = "select * from GMUXTEMP where V35NUM=" + IntToStr(V35NUM);
    ADOUI->Close();
    ADOUI->SQL->Clear();
    ADOUI->SQL->Add(asSql);
    ADOUI->Open();
    V35SET = ADOUI->FieldByName("V35SET")->AsInteger;
    V35TS = ADOUI->FieldByName("V35TS")->AsInteger;
    GMUXCARD = ADOUI->FieldByName("GMUXCARD")->AsInteger;

    RadioGroup29->ItemIndex = GMUXCARD;
    if((V35SET & 0X80) == 0X00)
    {// 该 端 口 关 闭
        RadioGroup19->ItemIndex = 0;
    }
    else if((V35SET & 0X80) == 0X80)
    {// 该 端 口 打 开
        RadioGroup19->ItemIndex = 1;
    }
    if((V35SET & 0X40) == 0X00)
    {
        RadioGroup20->ItemIndex = 0;
    }
    else if((V35SET & 0X40) == 0X40)
    {
        RadioGroup20->ItemIndex = 1;
    }
    if((V35SET & 0X20) == 0X00)
    {
        RadioGroup21->ItemIndex = 0;
    }
    else if((V35SET & 0X20) == 0X20)
    {
        RadioGroup21->ItemIndex = 1;
    }
    Edit6->Text = IntToStr((V35SET & 0X1F));
    if((V35TS & 0X80) == 0X00)
    {//
        RadioGroup22->ItemIndex = 0;
    }
    else if((V35TS & 0X80) == 0X80)
    {//
        RadioGroup22->ItemIndex = 1;
    }
    if((V35TS & 0X40) == 0X00)
    {
        RadioGroup24->ItemIndex = 0;
    }
    else if((V35TS & 0X40) == 0X40)
    {
        RadioGroup24->ItemIndex = 1;
    }
    if((V35SET & 0X20) == 0X20)
    {
        if((V35TS & 0X20) == 0X00)
        {
            RadioGroup23->ItemIndex = 0;
        }
        else if((V35TS & 0X20) == 0X20)
        {
            RadioGroup23->ItemIndex = 1;
        }
    }
    else
    {
        RadioGroup23->ItemIndex = -1;
    }
    Edit7->Text = IntToStr((V35TS & 0X1F));

    GroupBox7->Enabled = true;
}
//---------------------------------------------------------------------------


void __fastcall TfmMain::WriteStreamInToIni(String str)
{
 String LogName = SaveLogPath + "NetManager.ini";
    int Count = strlen(str.c_str());

    ofstream ofile(LogName.c_str(),ios::app);
    if(!ofile)
    {
        ShowMessage("创建NetManager网络管理程序配置文件错误!");
    }
    else
    {
        ofile.write(str.c_str(),Count);
        ofile.close() ;
    }
}

void __fastcall TfmMain::MenuItem6Click(TObject *Sender)
{
 String SMNAME = tvDevice->Selected->Text;
    AnsiString asSql = "select * from CT_DEV where SMNAME='" + SMNAME + "'";
    ADOSelect->Close();
    ADOSelect->SQL->Clear();
    ADOSelect->SQL->Add(asSql);
    ADOSelect->Open();

    int SMADDR = ADOSelect->FieldByName("SMADDR")->AsInteger;
 BYTE DataInfo[2];
    memset(DataInfo, 0, 2);
    int LINENUM = 0,SUNUM = 0;

    MakePack(DataInfo,0,0X04,SMADDR,0XD4,0X91,LINENUM,SUNUM,"复位GAC-4命令");
}
//---------------------------------------------------------------------------

void __fastcall TfmMain::FuWeiZhuKongTimer(TObject *Sender)
{//复位主控
    BYTE DataInfo[2];
    memset(DataInfo, 0, 2);
    int LINENUM = 0,SUNUM = 0;
//    LINENUM = GetLineNum(NodeParText);
    SUNUM = GetSuNum(NodeText);

    //DATAINFO
    MakePack(DataInfo,0,0X04,0X00,0XCD,0XCD,LINENUM,SUNUM,"复位主控命令");

    FuWeiZhuKong->Enabled = false; 
}
//---------------------------------------------------------------------------
//前台命令打包 -- 直接给主控发参数
WORD TfmMain::MakeQtPacket(WORD wInfoLen, BYTE *m_pSendBuf, BYTE bySUNo,BYTE byClientNo, /
             BYTE byLineNo, BYTE bySmAddr, BYTE byCID1, BYTE byCID2, BYTE byProtocolType,String CmdName)
{
    LPFRAMEHEADID pFrame;
    WORD wSumLen;

    /*if(wInfoLen + 28 > cdwSuFrameMaxLen)
    {
        return 0;  //长度超长
    }*/

    wSumLen = wInfoLen + 28;
    *(WORD*)(m_pSendBuf+0) = 0x90eb;
 *(WORD*)(m_pSendBuf+2) = 0x90eb;
 *(WORD*)(m_pSendBuf+4) = 0x90eb;

    pFrame = (LPFRAMEHEADID)m_pSendBuf;
    pFrame->gFrameHead.bySSNo = byProtocolType;         //SS号  存放协议类型
    pFrame->gFrameHead.byExtend1 = byCID2;              //扩展1存放服务器下发的前台命令命令字
    pFrame->gFrameHead.bySUNo = bySUNo;
 pFrame->gFrameHead.byScrAddr = byLineNo;   //源站地址
 pFrame->gFrameHead.byDestAddr = byClientNo;         //目的站址 存放(终端号)
    pFrame->bFrameHead.byHead = 0x7E;
    pFrame->bFrameHead.byVer = 0X40;                   //版本号
    pFrame->bFrameHead.byAddr = bySmAddr;               //模块地址
    pFrame->bFrameHead.byCID1 = byCID1;                 //设备号
    pFrame->bFrameHead.byCID2 = byCID2;                 //前台命令字

    if (bySUNo == 0)
    {
        pFrame->gFrameHead.byPath = 0x02;          //中心设备
    }
    else
    {
        pFrame->gFrameHead.byPath = 0x10;          //前台设备(新协议)
    }

    swab((char *)&wSumLen, (char *)&wSumLen, 2);
    pFrame->gFrameHead.wLength = wSumLen;
    swab((char *)&wInfoLen, (char *)&wInfoLen, 2);
    pFrame->bFrameHead.wLength = wInfoLen;

    bool iRet = FillDownFrameCHK(m_pSendBuf);
    if(!iRet)
    {
        return 0;
    }

    swab((char *)&wSumLen, (char *)&wSumLen, 2);

    BYTE *pFrameSend = new BYTE[wSumLen];
    memset(pFrameSend,0,wSumLen);
    memcpy(pFrameSend, pFrame, wSumLen);
    SocketSend(pFrameSend,wSumLen,CmdName);//发送数据
    return wSumLen;
}

//---------------------------------------------------------------------------
//类似服务器程序收到参数终端的命令后将其转化为发给前台设备的命令的功能
void TfmMain::ProcHtParamCMD(BYTE* pBuff, int iFrameLen, BYTE byClientNo,String CmdName)
{
/*
9-10 CMDWORD 命令码2B
11 LINE 线路号1B
12 STATION 站号1B
13 MODEL 模块号1B
14 CID1 设备类型码 1B
15 INFO 报文数据内容nB
*/
    BYTE byLineNo = pBuff[11];
    BYTE bySuNo = pBuff[12];
    BYTE byAdr = pBuff[13];
    BYTE byCID1 = pBuff[14];

    WORD wQtCmd = *(WORD *)(pBuff + 9);
    BYTE pFrame[ciMAXLENGTH];
    WORD wLen;

    if(pFrame != NULL)
    {
        memset(pFrame, 0, ciMAXLENGTH);
        if (iFrameLen >= 15)
        {
            memcpy(pFrame+ciDataPos, pBuff+15, iFrameLen-15);
        }

        BYTE byQtCmd = *(WORD *)(pBuff + 9);
        wLen = MakeQtPacket(iFrameLen-15, pFrame, bySuNo, byClientNo, /
             byLineNo, byAdr, byCID1, byQtCmd,0X04,CmdName);// byIsParam);
    }
}

//---------------------------------------------------------------------------
//前台命令校验和填充
bool TfmMain::FillDownFrameCHK(BYTE *pFrame)
{
    WORD wLen,wLen1 ;
 BYTE *pFrame1 ;
 WORD wSum,wSum1,wSum2 ;
 int  i ;

 pFrame1 = pFrame+16 ;
 wLen = *(WORD*)(pFrame+12) ;
 swab((char*)&wLen,(char*)&wLen,2) ;

 if(wLen >= 28 && wLen <= cdwSuFrameMaxLen )
    {
        wLen1 = wLen-28 ;
        *(pFrame+wLen-3) = 0x0d ; // EOI

        // 三重校验码必须自内向外计算并填写!
        wSum2 = (wLen1&0xf)+((wLen1>>4)&0xf)+((wLen1>>8)&0xf) ;
        wSum2 = ((~(wSum2%16))+1)<<12 ;
        wSum2 |= wLen1 ;
        swab((char*)&wSum2, (char*)&wSum2, 2);
        *(WORD*)(pFrame1+5) = wSum2;

        wSum1 = 0;
        for(i=0;i<(wLen1+6);i++)
        {
            wSum1 += *(pFrame1+1+i);
        }
        wSum1 = (~wSum1)+1 ;
        swab((char*)&wSum1,(char*)&wSum1,2);
        *(WORD*)(pFrame1+7+wLen1) = wSum1 ;

        wSum = 0 ;
        for(i=0;i<(wLen-2);i++)
        {
            wSum += *(pFrame+i) ;
        }
        swab((char*)&wSum,(char*)&wSum,2);
        *(WORD*)(pFrame+wLen-2) = wSum ;
        return true;
    }

    return false;
}

//---------------------------------------------------------------------------
//处理前台返回的参数终端命令(前台返回代码)
void TfmMain::ProcQtParamCMD(BYTE* pBuff, int iFrameLen,BYTE* pBuffBack)
{
    BYTE pFrame[ciMAXLENGTH];

    if(pFrame != NULL)
    {
        memset(pFrame, 0, ciMAXLENGTH);
        if (iFrameLen >= 28)
        {
            memcpy(pFrame+19, pBuff+ciDataPos, iFrameLen-28);
            pFrame[14] = pBuff[ciReturn-1];
        }
        MakeHtPacket(*(WORD *)(pBuff+ciExtend1), 0X04, pBuff[ciLineNo],    /
                 pBuff[ciSuNo], pBuff[ciSmNo], iFrameLen-28+10, pFrame,pBuffBack);

        //处理返回码:
        *(int *)(pFrame+15) = (int)pBuff[ciReturn];
    }
}

//---------------------------------------------------------------------------
/*后台命令打包 (有线路号站号的)  wInfoLen是指从命令码开始的所有长度,一般是在
协议中列出的所有字段总长度
*/
void TfmMain::MakeHtPacket(WORD wHtCmdWord, BYTE byProtocolType, BYTE byLineNo,    /
                 BYTE bySUNo, BYTE bySmNo, WORD wInfoLen, BYTE *m_pSendBuf,BYTE* pBuffBack)
{
    LPHTHEAD       pFrame;
    WORD           wSumLen;

    //wSumLen = wInfoLen + sizeof(HTHEAD)-5;
    wSumLen = wInfoLen + 1;
    /*if(wSumLen > ciMAXLENGTH-8)
    {
        return 0;  //长度超长
    }*/

    *(WORD*)(m_pSendBuf+0) = 0x90eb;
    pFrame = (LPHTHEAD)m_pSendBuf;
    pFrame->wLength = wSumLen;
    pFrame->byVer = cbyVer;
    pFrame->byProtocolType = byProtocolType;
    pFrame->wCmdCode = wHtCmdWord;        //后台命令字
    pFrame->byLineNo = byLineNo;
    pFrame->bySUNo = bySUNo;
    pFrame->bySmNo = bySmNo;

    wSumLen += 8;

    memset(pBuffBack,0,10240);
    memcpy(pBuffBack, pFrame, wSumLen);

    SprintfData("直连主控转化后数据<- <-  ",pBuffBack,wSumLen);
}
//---------------------------------------------------------------------------
void __fastcall TfmMain::MenuItem25Click(TObject *Sender)
{
    TfmOkCancel *okcancel = new TfmOkCancel(Application);
    okcancel->LabelTitle->Caption = "提示信息...";
    okcancel->lbMessage->Caption = "确定删除该设备?";
    okcancel->ShowModal();
    if(okcancel->bOk)
    {
        asSql = "delete from ct_avdserver where name='"+NodeText+"'";
        ADOSelect->Close();
        ADOSelect->SQL->Clear();
        ADOSelect->SQL->Add(asSql);
        ADOSelect->ExecSQL() ;

        /*asSql = "delete from CT_GACS where GASNAME='"+NodeText+"'";
        ADOSelect->Close();
        ADOSelect->SQL->Clear();
        ADOSelect->SQL->Add(asSql);
        ADOSelect->ExecSQL() ;*/
        fmMain->idx = fmMain->idx - 1;
        fmMain->LoadData();
        fmMain->SaveToLog(" 删除AvdServer设备:设备名("+NodeText+")",1);//添加到运行记录
    }
}
//---------------------------------------------------------------------------

void __fastcall TfmMain::MenuItem23Click(TObject *Sender)
{//查看AvdServer数据传输状态
    BYTE DataInfo[16];
    BYTE pBuff[4];
    memset(DataInfo, 0, 16);
    int LINENUM = 0,SUNUM = 0;
//    LINENUM = GetLineNum(NodeParText);
    SUNUM = GetSuNum(NodeText);

    String asSql = "select * from ct_avdserver order by ID";
    ADOSelect->Close();
    ADOSelect->SQL->Clear();
    ADOSelect->SQL->Add(asSql);
    ADOSelect->Open();
    String AvdServerIP = ADOSelect->FieldByName("IpAddr")->AsString;
    fmMain->SplitIp(pBuff,AvdServerIP);
    String SocketTap = "",SocketTapTemp = "";

    for(int i = 0;i < 4; i++)
    {
        SocketTapTemp.sprintf("%d",pBuff[i]);
        SocketTap += SocketTapTemp;
    }
    //DATAINFO
    /*DataInfo[0] = 0X00;//0 - 监控 1 - 录像  1B
    DataInfo[1] = 0X07;//
    DataInfo[2] = 0X00;//序号 WORD  - 2B
    DataInfo[3] = 0XFF;//*/
    DataInfo[0] = 0X10;//长度 DWORD
    DataInfo[4] = 0X5E;//命令码 DWORD

    for(int i=0;i<19;i++)
    {
        if(fmSocketOnly->ClientSocketAvdServer[i+1]->Tag == SocketTap.ToInt())
        {
            if(fmSocketOnly->ClientSocketAvdServer[i+1]->Active)
            {
                fmSocketOnly->ClientSocketAvdServer[i+1]->Socket->SendBuf(DataInfo,16);
                SprintfData("-> ->  获取后台AvdServer数据传输状态:",DataInfo,16);
            }
            else
            {
                TfmOkCancel *okcancel = new TfmOkCancel(Application);
                okcancel->LabelTitle->Caption = "提示信息...";
                okcancel->lbMessage->Caption = "和后台AvdServer连接失败,是否重新连接?";
                okcancel->ShowModal();
                if(okcancel->bOk)
                {
                    fmSocketOnly->ClientSocketAvdServer[i+1]->Active = true;
                }
            }
        }
    } 
}
//---------------------------------------------------------------------------

void __fastcall TfmMain::N74Click(TObject *Sender)
{//添加后台设备
    fmAddDev->ShowModal();
}
//---------------------------------------------------------------------------

 

void __fastcall TfmMain::AvdServer1Click(TObject *Sender)
{
    fmAddAvdServer->ShowModal(); 
}
//---------------------------------------------------------------------------

void __fastcall TfmMain::SpHelpClick(TObject *Sender)
{//帮助文件
    AnsiString asAppPath = ExtractFilePath(Application->ExeName);
    asAppPath = asAppPath + "..//";
    AnsiString asHelpFileName = asAppPath + "Hlp//NMHELP.CHM";
 ShellExecute(Handle,"Open",asHelpFileName.c_str(),NULL,NULL,SW_NORMAL);
}
//---------------------------------------------------------------------------

void __fastcall TfmMain::N75Click(TObject *Sender)
{//清除办公网时隙
    BYTE DataInfo[3];
    memset(DataInfo, 0, 3);
    int LINENUM = 0,SUNUM = 0;
//    LINENUM = GetLineNum(NodeParText);
    SUNUM = GetSuNum(NodeText);

    //DATAINFO
    //DataInfo[0] = 0X05;//COMMAND TYPE 参数型号
    DataInfo[0] = 0X00;//
    DataInfo[1] = 0X00;//
    DataInfo[2] = 0X00;//
    MakePack(DataInfo,3,0X04,SUNUM,0X00,0XCB,LINENUM,SUNUM,"清除办公网时隙命令");
}
//---------------------------------------------------------------------------

void __fastcall TfmMain::N76Click(TObject *Sender)
{//查看灯控状态
    int SUNUM;
    AnsiString asSql;
    String NodeTextTemp;
    char* szBuffer = new char[30];
//    String LINENAME;

/*    LINENAME = NodeParParText;
    asSql = "select * from CT_LINE where LINENAME='"+LINENAME+"'";
    ADOSelect->Close();
    ADOSelect->SQL->Clear();
    ADOSelect->SQL->Add(asSql);
    ADOSelect->Open();
    LINENUM = ADOSelect->FieldByName("LINENUM")->AsInteger;          */

    NodeTextTemp = NodeText;

    /*int LenTemp = StrLen(NodeTextTemp.c_str());
    StrCopy(szBuffer,NodeTextTemp.c_str());
    NodeTextTemp = szBuffer[LenTemp - 1];//获得镜头号*/
    int LenTemp = StrLen(NodeTextTemp.c_str());
    StrCopy(szBuffer,NodeTextTemp.c_str());
    int Temp_ = 0;
    for(int i = 0;i<LenTemp;i++)
    {
        if(szBuffer[i] == 0X5F)
        {//"_"
            Temp_ = i+1;
            break;   
        }
    }

    if((LenTemp - Temp_) == 1)
    {
        NodeTextTemp = szBuffer[LenTemp - 1];//获得镜头号
    }
    else if((LenTemp - Temp_) == 2)
    {
        NodeTextTemp = szBuffer[LenTemp - 2];
        NodeTextTemp = NodeTextTemp + szBuffer[LenTemp - 1];
    }

    asSql = "select * from CT_SU where SUNAME='"+NodeParText+"'" ;
    ADOSelect->Close();
    ADOSelect->SQL->Clear();
    ADOSelect->SQL->Add(asSql);
    ADOSelect->Open();
//    LINENUM = ADOSelect->FieldByName("LINENUM")->AsInteger;
    SUNUM = ADOSelect->FieldByName("SUNUM")->AsInteger;

    asSql = "select * from CT_SM where SUNUM=" + IntToStr(SUNUM) + " AND " + "SMNUM=" + NodeTextTemp;
    ADOSelect->Close();
    ADOSelect->SQL->Clear();
    ADOSelect->SQL->Add(asSql);
    ADOSelect->Open();

    int LAMPMODE = ADOSelect->FieldByName("LAMPMODE")->AsInteger;
    String LAMPINFO = "";
    switch(LAMPMODE)
    {
     case 0:
        {
         LAMPINFO = "当前灯控状态为:定时方式";
         break;
        }
        case 1:
        {
         LAMPINFO = "当前灯控状态为:自动方式";
         break;
        }
        case 2:
        {
         LAMPINFO = "当前灯控状态为:手动方式";
         break;
        }
    }
    MessageShow(LAMPINFO);
}
//---------------------------------------------------------------------------

void __fastcall TfmMain::FormShow(TObject *Sender)
{
 XPMenu1->Active = true; 
}
//---------------------------------------------------------------------------

void __fastcall TfmMain::DVR1Click(TObject *Sender)
{
    SetMainParamsFuWei = 1;
 MainControlJS = 4;
    MainParamType = 0;

    String SUNAME,LINENAME,asSql;
    int LINENUM,SUNUM;

    SUNAME = fmMain->NodeText;//当前站名
    LINENAME = fmMain->NodeParText;//当前线路号

    asSql = "select * from CT_LINE where LINENAME='"+LINENAME+ "'";
    fmMain->ADOSelect->Close();
    fmMain->ADOSelect->SQL->Clear();
    fmMain->ADOSelect->SQL->Add(asSql);
    fmMain->ADOSelect->Open();
    LINENUM = fmMain->ADOSelect->FieldByName("LINENUM")->AsInteger;//当前线路号

    asSql = "select * from CT_SU where SUNAME='"+SUNAME+ "'";
    fmMain->ADOSelect->Close();
    fmMain->ADOSelect->SQL->Clear();
    fmMain->ADOSelect->SQL->Add(asSql);
    fmMain->ADOSelect->Open();
    SUNUM = fmMain->ADOSelect->FieldByName("SUNUM")->AsInteger;//当前站号

    fmExtendDvr->LineNum->Caption = LINENUM;
    fmExtendDvr->SuNum->Caption = SUNUM;
    fmExtendDvr->ShowModal();
}
//---------------------------------------------------------------------------

void __fastcall TfmMain::N111Click(TObject *Sender)
{//获取主控参数(扩展DVR信息)命令
    BYTE DataInfo[2];
    memset(DataInfo, 0, 2);
    int LINENUM = 0,SUNUM = 0;
//    LINENUM = GetLineNum(NodeParText);
    SUNUM = GetSuNum(NodeText);

    //DATAINFO
    DataInfo[0] = 0X0B;//COMMAND TYPE 参数型号
    MakePack(DataInfo,1,0X04,SUNUM,0X00,0XC5,LINENUM,SUNUM,"获取主控参数(扩展DVR信息)命令");   
}
//---------------------------------------------------------------------------

void __fastcall TfmMain::tvDeviceMouseDown(TObject *Sender,
      TMouseButton Button, TShiftState Shift, int X, int Y)
{
    TTreeNode *pNode = tvDevice->GetNodeAt(X,Y);

    if(pNode !=NULL)
    {
        if(Button == mbRight)
        {
            tvDevice->Select(pNode);
            idx = tvDevice->Selected->AbsoluteIndex ;
        }
    }
}
//---------------------------------------------------------------------------

void __fastcall TfmMain::DVR2Click(TObject *Sender)
{//设置扩展的声音
    String SUNAME,SMNAME,LINENAME;
    int SUNUM = 0,SMNUM = 0,SMTYPE = 0,AUDIONUM = 0,LINENUM = 0,ENABLEAUDIO = 0,ENABLEREC = 0;
    int ENABLELAMP = 0,ENABLEYZD = 0,YTCIRCLETIME = 0,YTSTAYTIME = 0,YZDTIME = 0,YTBACK = 0;
    int ENABLEYUSHUA = 0;
    int SWADDR = 0;
    int EV_JILIAN,EV_MAINSELFINPORT,EV_SWADDR,EV_SWOUTPORT,EV_SWINPORT;
    SUNAME = NodeText;//当前站名
//    LINENAME = NodeParText;//当前线路号

    fmMain->SetContorlTimeFlag = 0;

//    LINENUM = GetLineNum(NodeParText);
    SUNUM = GetSuNum(NodeText);

    SetMainParamsFuWei = 1;
    MainControlJS = 4;
    MainParamType = 1;
   
    BYTE DataInfo[2000];
    memset(DataInfo, 0, 2000);

    //DATAINFO
    DataInfo[0] = 0X08;//COMMAND TYPE 参数型号
    //int SuNameLength = SUNAME.Length();
    //memcpy((char *)DataInfo + 1, SUNAME.c_str(), SuNameLength);//站名

    asSql = "select * from CT_SM where SUNUM=" + IntToStr(SUNUM) + " order by 'SMNUM'";
    fmMain->ADOSelect->Close();
    fmMain->ADOSelect->SQL->Clear();
    fmMain->ADOSelect->SQL->Add(asSql);
    fmMain->ADOSelect->Open();
    int SmCount = fmMain->ADOSelect->RecordCount;//镜头个数
    FuWeiZhuKong->Interval = SmCount * 5000;
    DataInfo[1] = SmCount;//镜头个数
    for(int i = 0;i<SmCount;i++)
    {
        SMNUM = ADOSelect->FieldByName("SMNUM")->AsInteger;//镜头编号
        EV_JILIAN = ADOSelect->FieldByName("EV_JILIAN")->AsInteger;//
        EV_MAINSELFINPORT = ADOSelect->FieldByName("EV_MAINSELFINPORT")->AsInteger;//
        EV_SWADDR = ADOSelect->FieldByName("EV_SWADDR")->AsInteger;//
        EV_SWOUTPORT = ADOSelect->FieldByName("EV_SWOUTPORT")->AsInteger;//
        EV_SWINPORT = ADOSelect->FieldByName("EV_SWINPORT")->AsInteger;//

        DataInfo[2 + i * 16] = SMNUM;//
        DataInfo[3 + i * 16] = EV_JILIAN;//
        DataInfo[4 + i * 16] = EV_MAINSELFINPORT;//
        DataInfo[5 + i * 16] = EV_SWADDR;//
        DataInfo[6 + i * 16] = EV_SWOUTPORT;//
        DataInfo[7 + i * 16] = EV_SWINPORT;//

        DataInfo[8 + i * 16] = 0XAA;//

        //扩展10个字节
        DataInfo[17 + i * 16] = 0XAA;//
       
        ADOSelect->Next();
    }
    int DataLength = 2 + SmCount * 16;//DATAInfo长度
    MakePack(DataInfo,DataLength,0X04,SUNUM,0X00,0XC4,LINENUM,SUNUM,"设置扩展的声音参数命令");
}
//---------------------------------------------------------------------------

void __fastcall TfmMain::N78Click(TObject *Sender)
{//设置视频切换
    String SUNAME,SMNAME,LINENAME;
    int SUNUM = 0,SMNUM = 0,SMTYPE = 0,AUDIONUM = 0,LINENUM = 0,ENABLEAUDIO = 0,ENABLEREC = 0;
    int ENABLELAMP = 0,ENABLEYZD = 0,YTCIRCLETIME = 0,YTSTAYTIME = 0,YZDTIME = 0,YTBACK = 0;
    int ENABLEYUSHUA = 0;
    int SWADDR = 0;
    int VS_ADDR,VS_INPORT,VS_OUTPORT;
    SUNAME = NodeText;//当前站名
//    LINENAME = NodeParText;//当前线路号

    fmMain->SetContorlTimeFlag = 0;

//    LINENUM = GetLineNum(NodeParText);
    SUNUM = GetSuNum(NodeText);

    SetMainParamsFuWei = 1;
    MainControlJS = 4;
    MainParamType = 1;
   
    BYTE DataInfo[2000];
    memset(DataInfo, 0, 2000);

    //DATAINFO
    DataInfo[0] = 0X09;//COMMAND TYPE 参数型号
    //int SuNameLength = SUNAME.Length();
    //memcpy((char *)DataInfo + 1, SUNAME.c_str(), SuNameLength);//站名

    asSql = "select * from CT_SM where SUNUM=" + IntToStr(SUNUM) + " order by 'SMNUM'";
    fmMain->ADOSelect->Close();
    fmMain->ADOSelect->SQL->Clear();
    fmMain->ADOSelect->SQL->Add(asSql);
    fmMain->ADOSelect->Open();
    int SmCount = fmMain->ADOSelect->RecordCount;//镜头个数
    FuWeiZhuKong->Interval = SmCount * 5000;
    DataInfo[1] = SmCount;//镜头个数
    for(int i = 0;i<SmCount;i++)
    {
        SMNUM = ADOSelect->FieldByName("SMNUM")->AsInteger;//镜头编号
        VS_ADDR = ADOSelect->FieldByName("VS_ADDR")->AsInteger;//
        VS_INPORT = ADOSelect->FieldByName("VS_INPORT")->AsInteger;//
        VS_OUTPORT = ADOSelect->FieldByName("VS_OUTPORT")->AsInteger;//

        DataInfo[2 + i * 8] = SMNUM;//
        DataInfo[3 + i * 8] = VS_ADDR;//
        DataInfo[4 + i * 8] = VS_INPORT;//
        DataInfo[5 + i * 8] = VS_OUTPORT;//

        DataInfo[6 + i * 8] = 0XAA;//

        //扩展4个字节
        DataInfo[9 + i * 8] = 0XAA;//
       
        ADOSelect->Next();
    }
    int DataLength = 2 + SmCount * 8;//DATAInfo长度
    MakePack(DataInfo,DataLength,0X04,SUNUM,0X00,0XC4,LINENUM,SUNUM,"设置视频切换参数命令");   
}
//---------------------------------------------------------------------------

void __fastcall TfmMain::DVR3Click(TObject *Sender)
{//获取扩展的声音命令
    BYTE DataInfo[2];
    memset(DataInfo, 0, 2);
    int LINENUM = 0,SUNUM = 0;
//    LINENUM = GetLineNum(NodeParText);
    SUNUM = GetSuNum(NodeText);

    //DATAINFO
    DataInfo[0] = 0X0C;//COMMAND TYPE 参数型号
    MakePack(DataInfo,1,0X04,SUNUM,0X00,0XC5,LINENUM,SUNUM,"获取扩展的声音参数命令");

}
//---------------------------------------------------------------------------

void __fastcall TfmMain::DVR4Click(TObject *Sender)
{//获取扩展的视频切换
    BYTE DataInfo[2];
    memset(DataInfo, 0, 2);
    int LINENUM = 0,SUNUM = 0;
//    LINENUM = GetLineNum(NodeParText);
    SUNUM = GetSuNum(NodeText);

    //DATAINFO
    DataInfo[0] = 0X0D;//COMMAND TYPE 参数型号
    MakePack(DataInfo,1,0X04,SUNUM,0X00,0XC5,LINENUM,SUNUM,"获取扩展的视频切换参数命令");

}
//---------------------------------------------------------------------------