/*! @function ******************************************************************************** <PRE> 函数名 : Aid1_Enable 功能 : (辅助1 开) 创建一条矩阵控制协议数据,用于辅助1 开。 参数 : [IN] decoderNum : 解码器号(01-0x400) 返回值 : 协议数据ProtocolDataItem结构体变量 </PRE> *******************************************************************************/ public ProtocolDataItem Aid1_Enable(int decoderNum) { /*#########运行时日志 2010-03-11新增###########*/ //RunLog("Aid1_Enable())", "MatrixProtocolBuilder.cpp"); /*#############################################*/ //辅助1 开/关 //数据:F2 IDL 11/12 01 00 00 CH IDH //ID:解码器号码(01-0x400) //IDL:解码器低8位 //IDH:解码器高8位 ProtocolDataItem protocolDataItem = new ProtocolDataItem(MyConstant.ProtocolDatalen); protocolDataItem.Data[0] = 0xF2; protocolDataItem.Data[1] = (byte)(decoderNum);//IDL:解码器低8位 protocolDataItem.Data[2] = 0x11; protocolDataItem.Data[3] = 0x01; protocolDataItem.Data[4] = 0; protocolDataItem.Data[5] = 0; protocolDataItem.Data[7] = (byte)(decoderNum>>8);//IDH:解码器高8位; //第7字节是数据校验码:Check = 字节2 + 字节3 + 字节4 + 字节5 + 字节6 + 字节8。 protocolDataItem.Data[6] = (byte)((protocolDataItem.Data[1])+0x11+0x01+(byte)(protocolDataItem.Data[7])); return protocolDataItem; }
/*! @function ******************************************************************************** <PRE> 函数名 : PTZControl_TiltRightDown 功能 : (云台向右下动作) 创建一条矩阵控制协议数据,用于控制摄像机的云台向右下动作。 参数 : [IN] decoderNum : 云台的解码器号(01-0x400) [IN] bySpeed_UpDown : 云台上下速度值(00-0x3F) [IN] bySpeed_LeftRight : 云台左右速度值(00-0x3F) 返回值 : 协议数据ProtocolDataItem结构体变量 </PRE> *******************************************************************************/ public ProtocolDataItem PTZControl_TiltRightDown(int decoderNum, byte bySpeed_UpDown, byte bySpeed_LeftRight) { /*#########运行时日志 2010-03-11新增###########*/ //RunLog("PTZControl_TiltRightDown())", "MatrixProtocolBuilder.cpp"); /*#############################################*/ //8、云台向右下动作 //数据:F2 IDL 0A SUD SLR 00 CH IDH //ID:解码器号码(01-0x400) //IDL:解码器低8位 //IDH:解码器高8位 //SUD:云台上下速度值(00-3F) //SLR:云台左右速度值(00-3F) ProtocolDataItem protocolDataItem = new ProtocolDataItem(MyConstant.ProtocolDatalen); protocolDataItem.Data[0] = 0xF2; protocolDataItem.Data[1] = (byte)(decoderNum);//IDL:解码器低8位 protocolDataItem.Data[2] = 0x0A; protocolDataItem.Data[3] = bySpeed_UpDown; protocolDataItem.Data[4] = bySpeed_LeftRight; protocolDataItem.Data[5] = 0; protocolDataItem.Data[7] = (byte)(decoderNum>>8);//IDH:解码器高8位; //第7字节是数据校验码:Check = 字节2 + 字节3 + 字节4 + 字节5 + 字节6 + 字节8。 protocolDataItem.Data[6] = (byte)((protocolDataItem.Data[1])+0x0A+bySpeed_UpDown+bySpeed_LeftRight+(byte)(protocolDataItem.Data[7])); return protocolDataItem; }
/*! @function ******************************************************************************** <PRE> 函数名 : PTZControl_DisableAutoScan 功能 : (云台自动扫描关) 创建一条矩阵控制协议数据,用于云台自动扫描关。 参数 : [IN] decoderNum : 解码器号(01-0x400) 返回值 : 协议数据ProtocolDataItem结构体变量 </PRE> *******************************************************************************/ public ProtocolDataItem PTZControl_DisableAutoScan(int decoderNum) { /*#########运行时日志 2010-03-11新增###########*/ //RunLog("PTZControl_DisableAutoScan())", "MatrixProtocolBuilder.cpp"); /*#############################################*/ //云台自动扫描开 //数据:F2 IDL 12 09 00 00 CH IDH //ID:解码器号码(01-400) //IDL:解码器低8位 //IDH:解码器高8位 ProtocolDataItem protocolDataItem = new ProtocolDataItem(MyConstant.ProtocolDatalen); protocolDataItem.Data[0] = 0xF2; protocolDataItem.Data[1] = (byte)(decoderNum);//IDL:解码器低8位 protocolDataItem.Data[2] = 0x12; protocolDataItem.Data[3] = 0x09; protocolDataItem.Data[4] = 0; protocolDataItem.Data[5] = 0; protocolDataItem.Data[7] = (byte)(decoderNum>>8);//IDH:解码器高8位; //第7字节是数据校验码:Check = 字节2 + 字节3 + 字节4 + 字节5 + 字节6 + 字节8。 protocolDataItem.Data[6] = (byte)((protocolDataItem.Data[1])+0x12+0x09+(byte)(protocolDataItem.Data[7])); return protocolDataItem; }
/*! @function ******************************************************************************** <PRE> 函数名 : ProgramNextChange 功能 : (后切) 创建一条矩阵控制协议数据,用于后切。 参数 : [IN] byMonitorNum : 监视器号(01-0x80) 返回值 : 协议数据ProtocolDataItem结构体变量 </PRE> *******************************************************************************/ public ProtocolDataItem ProgramNextChange(byte byMonitorNum) { /*#########运行时日志 2010-03-11新增###########*/ //RunLog("ProgramNextChange())", "MatrixProtocolBuilder.cpp"); /*#############################################*/ /*F4 00 2B MON 00 00 CH 00*/ ProtocolDataItem protocolDataItem = new ProtocolDataItem(MyConstant.ProtocolDatalen); protocolDataItem.Data[0] = 0xF4; protocolDataItem.Data[1] = 0; protocolDataItem.Data[2] = 0x2B; protocolDataItem.Data[3] = byMonitorNum; protocolDataItem.Data[4] = 0; protocolDataItem.Data[5] = 0; protocolDataItem.Data[7] = 0;//IDH:解码器高8位; //第7字节是数据校验码:Check = 字节2 + 字节3 + 字节4 + 字节5 + 字节6 + 字节8。 protocolDataItem.Data[6] = (byte) (protocolDataItem.Data[1] + protocolDataItem.Data[2] + (byte)(protocolDataItem.Data[3]) + protocolDataItem.Data[5]); return protocolDataItem; }
////////////////////////////////////////////////////////////////////////////////// //切换控制: ////////////////////////////////////////////////////////////////////////////////// /*! @function ******************************************************************************** <PRE> 函数名 : ProgramChange 功能 : (程序切换) 创建一条矩阵控制协议数据,用于程序切换。 参数 : [IN] byMonitorNum : 监视器号(01-0x80) [IN] PrormNum : 程序号 返回值 : 协议数据ProtocolDataItem结构体变量 </PRE> *******************************************************************************/ public ProtocolDataItem ProgramChange(byte byMonitorNum, byte PrormNum) { /*#########运行时日志 2010-03-11新增###########*/ //RunLog("ProgramChange())", "MatrixProtocolBuilder.cpp"); /*#############################################*/ /*程序切换 数据:F4 00 27 MON TU 00 CH 00 MON:监视器号(01-80) TU: 程序组号(00-40) */ ProtocolDataItem protocolDataItem = new ProtocolDataItem(MyConstant.ProtocolDatalen); protocolDataItem.Data[0] = 0xF4; protocolDataItem.Data[1] = 0; protocolDataItem.Data[2] = 0x27; protocolDataItem.Data[3] = byMonitorNum; protocolDataItem.Data[4] = PrormNum; protocolDataItem.Data[5] = 0; protocolDataItem.Data[7] = 0;//IDH:解码器高8位; //第7字节是数据校验码:Check = 字节2 + 字节3 + 字节4 + 字节5 + 字节6 + 字节8。 protocolDataItem.Data[6] = (byte)(protocolDataItem.Data[1] + protocolDataItem.Data[2] + (byte)(protocolDataItem.Data[3]) + (byte)(protocolDataItem.Data[4]) + protocolDataItem.Data[5]); return protocolDataItem; }
/*! @function ******************************************************************************** <PRE> 函数名 : Iris_Shrink 功能 : (镜头光圈缩小动作) 创建一条矩阵控制协议数据,用于控制摄像机的镜头光圈缩小动作。 参数 : [IN] decoderNum : 解码器号(01-0x400) 返回值 : 协议数据ProtocolDataItem结构体变量 </PRE> *******************************************************************************/ public ProtocolDataItem Iris_Shrink(int decoderNum) { /*#########运行时日志 2010-03-11新增###########*/ //RunLog("Iris_Shrink())", "MatrixProtocolBuilder.cpp"); /*#############################################*/ //2、镜头光圈(IRIS)-动作 //数据:F2 IDL 0C 00 00 00 CH IDH //ID:解码器号码(01-0x400) //IDL:解码器低8位 //IDH:解码器高8位 ProtocolDataItem protocolDataItem = new ProtocolDataItem(MyConstant.ProtocolDatalen); protocolDataItem.Data[0] = 0xF2; protocolDataItem.Data[1] = (byte)(decoderNum);//IDL:解码器低8位 protocolDataItem.Data[2] = 0x0C; protocolDataItem.Data[3] = 0; protocolDataItem.Data[4] = 0; protocolDataItem.Data[5] = 0; protocolDataItem.Data[7] = (byte)(decoderNum>>8);//IDH:解码器高8位; //第7字节是数据校验码:Check = 字节2 + 字节3 + 字节4 + 字节5 + 字节6 + 字节8。 protocolDataItem.Data[6] = (byte)((protocolDataItem.Data[1])+0x0C+(byte)(protocolDataItem.Data[7])); return protocolDataItem; }
/*! @function ******************************************************************************** <PRE> 函数名 : GroupSwitch 功能 : (群组切换) 创建一条矩阵控制协议数据,用于群组切换。 参数 : [IN] byMonitorNum : 监视器号(01-0x80) [IN] nQueueNum : 群组号(00-0x40) 返回值 : 协议数据ProtocolDataItem结构体变量 </PRE> *******************************************************************************/ public ProtocolDataItem GroupSwitch(byte byMonitorNum, byte nQueueNum) { /*#########运行时日志 2010-03-11新增###########*/ //RunLog("GroupSwitch())", "MatrixProtocolBuilder.cpp"); /*#############################################*/ //数据:F4 00 28 MON GP 00 CH 00 //MON:监视器号(01-80) GP:群组号(00-40) ProtocolDataItem protocolDataItem = new ProtocolDataItem(MyConstant.ProtocolDatalen); protocolDataItem.Data[0] = 0xF4; protocolDataItem.Data[1] = 0; protocolDataItem.Data[2] = 0x28; protocolDataItem.Data[3] = byMonitorNum; protocolDataItem.Data[4] = nQueueNum; protocolDataItem.Data[5] = 0; protocolDataItem.Data[7] = 0; //第7字节是数据校验码:Check = 字节2 + 字节3 + 字节4 + 字节5 + 字节6 + 字节8。 protocolDataItem.Data[6] = (byte)(0x28 + byMonitorNum + nQueueNum); return protocolDataItem; }
/*! @function ******************************************************************************** <PRE> 函数名 : ImageHold 功能 : (图像保持) 创建一条矩阵控制协议数据,用于图像保持。 参数 : [IN] byMonitorNum : 监视器号(01-0x80) 返回值 : 协议数据ProtocolDataItem结构体变量 </PRE> *******************************************************************************/ public ProtocolDataItem ImageHold(byte byMonitorNum) { /*#########运行时日志 2010-03-11新增###########*/ //RunLog("ImageHold())", "MatrixProtocolBuilder.cpp"); /*#############################################*/ //数据:F4 00 2D MON 00 00 CH 00 //MON:监视器号(01-80) ProtocolDataItem protocolDataItem = new ProtocolDataItem(MyConstant.ProtocolDatalen); protocolDataItem.Data[0] = 0xF4; protocolDataItem.Data[1] = 0; protocolDataItem.Data[2] = 0x2D; protocolDataItem.Data[3] = byMonitorNum; protocolDataItem.Data[4] = 0; protocolDataItem.Data[5] = 0; protocolDataItem.Data[7] = 0;//IDH:解码器高8位; //第7字节是数据校验码:Check = 字节2 + 字节3 + 字节4 + 字节5 + 字节6 + 字节8。 protocolDataItem.Data[6] = (byte)(0x2D + byMonitorNum); return protocolDataItem; }
/*! @function ******************************************************************************** <PRE> 函数名 : ARM_Linkage_Enable 功能 : (报警主机联动输出开) 创建一条矩阵控制协议数据,用于报警主机联动输出开。 参数 : [IN] alarmSiteNum : 警点号码(01-0x200)(可以是0,代表所有有警点) 返回值 : 协议数据ProtocolDataItem结构体变量 </PRE> *******************************************************************************/ public ProtocolDataItem ARM_Linkage_Enable(int alarmSiteNum) { /*#########运行时日志 2010-03-11新增###########*/ //RunLog("ARM_Linkage_Enable())", "MatrixProtocolBuilder.cpp"); /*#############################################*/ //报警主机联动输出开 //数据:F6 ARML 44 01 00 00 CH ARMH //ARM: 警点号码(01-200)(可以是0,代表所有有警点) //ARML:警点号码低8位 //ARMH:警点号码高8位 ProtocolDataItem protocolDataItem = new ProtocolDataItem(MyConstant.ProtocolDatalen); protocolDataItem.Data[0] = 0xF6; protocolDataItem.Data[1] = (byte)(alarmSiteNum);//ARML:警点号码低8位 protocolDataItem.Data[2] = 0x44; protocolDataItem.Data[3] = 0x01; protocolDataItem.Data[4] = 0; protocolDataItem.Data[5] = 0; protocolDataItem.Data[7] = (byte)(alarmSiteNum>>8);//ARMH:警点号码高8位 //第7字节是数据校验码:Check = 字节2 + 字节3 + 字节4 + 字节5 + 字节6 + 字节8。 protocolDataItem.Data[6] = (byte)((protocolDataItem.Data[1])+0x44+0x01+(byte)(protocolDataItem.Data[7])); return protocolDataItem; }
/*! @function ******************************************************************************** <PRE> 函数名 : Focus_Out 功能 : (镜头焦点后调动作(镜头聚焦+)) 创建一条矩阵控制协议数据,用于控制摄像机的镜头焦点后调动作(镜头聚焦+)。 参数 : [IN] decoderNum : 解码器号(01-0x400) 返回值 : 协议数据ProtocolDataItem结构体变量 </PRE> *******************************************************************************/ public ProtocolDataItem Focus_Out(int decoderNum) { /*#########运行时日志 2010-03-11新增###########*/ //RunLog("Focus_Out())", "MatrixProtocolBuilder.cpp"); /*#############################################*/ //3、镜头聚焦(FOCUS)+动作 //数据:数据:F2 IDL 0D 00 00 00 CH IDH //ID:解码器号码(01-0x400) //IDL:解码器低8位 //IDH:解码器高8位 ProtocolDataItem protocolDataItem = new ProtocolDataItem(MyConstant.ProtocolDatalen); protocolDataItem.Data[0] = 0xF2; protocolDataItem.Data[1] = (byte)(decoderNum);//IDL:解码器低8位 protocolDataItem.Data[2] = 0x0D; protocolDataItem.Data[3] = 0; protocolDataItem.Data[4] = 0; protocolDataItem.Data[5] = 0; protocolDataItem.Data[7] = (byte)(decoderNum>>8);//IDH:解码器高8位; //第7字节是数据校验码:Check = 字节2 + 字节3 + 字节4 + 字节5 + 字节6 + 字节8。 protocolDataItem.Data[6] = (byte)((protocolDataItem.Data[1])+0x0D+(byte)(protocolDataItem.Data[7])); return protocolDataItem; }
/*! @function ******************************************************************************** <PRE> 函数名 : ARM_AlarmQuery 功能 : (报警查询) 创建一条矩阵控制协议数据,用于报警查询。 参数 : [IN] nAlarmHostNum : 警点号码(01-0x200)(可以是0,代表所有有警点) 返回值 : 协议数据ProtocolDataItem结构体变量 </PRE> *******************************************************************************/ public ProtocolDataItem ARM_AlarmQuery(byte nAlarmHostNum) { /*#########运行时日志 2010-03-11新增###########*/ //RunLog("ARM_AlarmQuery())", "MatrixProtocolBuilder.cpp"); /*#############################################*/ //报警查询 //数据:F6 GARM 4A 10 00 00 CH 00 // //报警主机回送:F6 GARM 4B 10 DATA1 DATA2 CH 00 //GARM: 报警主机号码(01-20)(一台报警主机有16路警点) //DATA1,DATA2: 警情位功能(1:有警;0:无警) //DATA1:16路报警主机的低8路 //DATA2:16路报警主机的高8路 ProtocolDataItem protocolDataItem = new ProtocolDataItem(MyConstant.ProtocolDatalen); protocolDataItem.Data[0] = 0xF6; protocolDataItem.Data[1] = nAlarmHostNum;//报警主机号码(01-20) protocolDataItem.Data[2] = 0x4A; protocolDataItem.Data[3] = 0x10; protocolDataItem.Data[4] = 0; protocolDataItem.Data[5] = 0; protocolDataItem.Data[7] = 0;//ARMH:警点号码高8位 //第7字节是数据校验码:Check = 字节2 + 字节3 + 字节4 + 字节5 + 字节6 + 字节8。 protocolDataItem.Data[6] = (byte)(nAlarmHostNum + 0x4A + 0x10); return protocolDataItem; }
/*! @function ******************************************************************************** <PRE> 函数名 : UsePresettingBit 功能 : (调用预置位) 创建一条矩阵控制协议数据,用于调用预置位。 参数 : [IN] decoderNum : 解码器号(01-0x400) [IN] presettingBit:预置位 (01-0x80) 返回值 : 协议数据ProtocolDataItem结构体变量 </PRE> *******************************************************************************/ public ProtocolDataItem UsePresettingBit(int decoderNum, byte presettingBit) { /*#########运行时日志 2010-03-11新增###########*/ //RunLog("UsePresettingBit())", "MatrixProtocolBuilder.cpp"); /*#############################################*/ //调用预置位 //数据:F2 IDL 14 PRE 00 00 CH IDH //ID:解码器号码(01-0x400) //IDL:解码器低8位 //IDH:解码器高8位 //PRE:预置位 (01-0x80) ProtocolDataItem protocolDataItem = new ProtocolDataItem(MyConstant.ProtocolDatalen); protocolDataItem.Data[0] = 0xF2; protocolDataItem.Data[1] = (byte)(decoderNum);//IDL:解码器低8位 protocolDataItem.Data[2] = 0x14; protocolDataItem.Data[3] = presettingBit; protocolDataItem.Data[4] = 0; protocolDataItem.Data[5] = 0; protocolDataItem.Data[7] = (byte)(decoderNum>>8);//IDH:解码器高8位; //第7字节是数据校验码:Check = 字节2 + 字节3 + 字节4 + 字节5 + 字节6 + 字节8。 protocolDataItem.Data[6] = (byte)((protocolDataItem.Data[1])+0x14+presettingBit+(byte)(protocolDataItem.Data[7])); return protocolDataItem; }
////////////////////////////////////////////////////////////////////////////////////// //云台/镜头动作停: ////////////////////////////////////////////////////////////////////////////////////// /*! @function ******************************************************************************** <PRE> 函数名 : Stop_PTZControl 功能 : (云台动作停) 创建一条矩阵控制协议数据,用于控制摄像机的云台动作停。 参数 : [IN] decoderNum : 解码器号(01-0x400) 返回值 : 协议数据ProtocolDataItem结构体变量 </PRE> *******************************************************************************/ public ProtocolDataItem Stop_PTZControl(int decoderNum) { /*#########运行时日志 2010-03-11新增###########*/ //RunLog("Stop_PTZControl())", "MatrixProtocolBuilder.cpp"); /*#############################################*/ //1、云台动作停 //数据:F2 IDL 03 00 00 00 CH IDH //ID:解码器号码(01-0x400) //IDL:解码器低8位 //IDH:解码器高8位 ProtocolDataItem protocolDataItem = new ProtocolDataItem(MyConstant.ProtocolDatalen); protocolDataItem.Data[0] = 0xF2; protocolDataItem.Data[1] = (byte)(decoderNum);//IDL:解码器低8位 protocolDataItem.Data[2] = 0x03; protocolDataItem.Data[3] = 0; protocolDataItem.Data[4] = 0; protocolDataItem.Data[5] = 0; protocolDataItem.Data[7] = (byte)(decoderNum>>8);//IDH:解码器高8位; //第7字节是数据校验码:Check = 字节2 + 字节3 + 字节4 + 字节5 + 字节6 + 字节8。 protocolDataItem.Data[6] = (byte)((protocolDataItem.Data[1])+0x03+(byte)(protocolDataItem.Data[7])); return protocolDataItem; }
public ProtocolDataItem SelectMatrix(byte byMonitorNum, byte byMatrixNetNum) { /*#########运行时日志 2010-03-11新增###########*/ //RunLog("SelectMatrix())", "MatrixProtocolBuilder.cpp"); /*#############################################*/ //选择网络主机 //数据:F4 00 20 MON NET 00 CH 00 //MON:监视器号(01-0x80) NET:网络号(00-0x20) ProtocolDataItem protocolDataItem = new ProtocolDataItem(MyConstant.ProtocolDatalen); protocolDataItem.Data[0] = 0xF4; protocolDataItem.Data[1] = 0; protocolDataItem.Data[2] = 0x20; protocolDataItem.Data[3] = byMonitorNum; protocolDataItem.Data[4] = byMatrixNetNum; protocolDataItem.Data[5] = 0; protocolDataItem.Data[7] = 0; protocolDataItem.Data[6] = (byte)(0x20 + byMonitorNum + byMatrixNetNum); //第7字节是数据校验码:Check = 字节2 + 字节3 + 字节4 + 字节5 + 字节6 + 字节8。 //protocolDataItem.Data[6] = protocolDataItem.Data[1]+protocolDataItem.Data[2]+protocolDataItem.Data[3]+protocolDataItem.Data[4]+protocolDataItem.Data[5]+protocolDataItem.Data[7]; return protocolDataItem; }
/*! @function ******************************************************************************** <PRE> 函数名 : SelectCamera 功能 : (选择摄像机) 创建一条矩阵控制协议数据,用于选择使用主控矩阵上的摄像机!!! (注:该函数在效率上比返回值为ProtocolDataSet的SelectCamera重载函数要高,但 只能用于选择使用主控矩阵上的摄像机的情况!!!) 参数 : [IN] byFinalMonitorNum : 监视器号(直接与视频服务器相连接的监视器号)(01-0x80) [IN] byMatrixNetNum : 与摄像机所连接矩阵的网络号 [IN] nCameraNum : 摄像机在矩阵上的视频输入端口号(01H-400H) 返回值 : 协议数据ProtocolDataItem结构体变量 </PRE> *******************************************************************************/ public ProtocolDataItem SelectCamera(byte byFinalMonitorNum, byte byMatrixNetNum, int nCameraNum) { /*#########运行时日志 2010-03-11新增###########*/ //RunLog("MatrixProtocolBuilder::SelectCamera())", "MatrixProtocolBuilder.cpp"); /*#############################################*/ ProtocolDataItem protocolDataItem = new ProtocolDataItem(MyConstant.ProtocolDatalen); //选择摄像机号为“nCameraNum”的摄像机 //数据:F4 CAML 21 MON NET 00 CH CAMH //MON:监视器号(01-0x80) NET:网络号(00-0x20) CAM:摄像机号 //CAML:摄像机号低8位 CAMH:摄像机号高8位 protocolDataItem.Data[0] = 0xF4; protocolDataItem.Data[1] = (byte)(nCameraNum);//CAML:摄像机号低8位 protocolDataItem.Data[2] = 0x21; protocolDataItem.Data[3] = byFinalMonitorNum;//MON protocolDataItem.Data[4] = byMatrixNetNum;//NET protocolDataItem.Data[5] = 0; protocolDataItem.Data[7] = (byte)(nCameraNum>>8);//CAMH:摄像机号高8位 protocolDataItem.Data[6] = (byte)((protocolDataItem.Data[1]) + 0x21 + byFinalMonitorNum + byMatrixNetNum + (byte)(protocolDataItem.Data[7])); return protocolDataItem; }