Ejemplo n.º 1
0
        private void IPChannelConfig_Load(object sender, EventArgs e)
        {
            int i;

            //获取设备支持IPC协议列表
            if (ChcNetSdk.NET_DVR_GetIPCProtoList(MlUserId, ref _mStruProtoList))
            {
                for (i = 0; i < (int)_mStruProtoList.dwProtoNum; i++)
                {
                    comboBoxFactory.Items.Add(_mStruProtoList.struProto[i].byDescribe);
                }
            }

            comboBoxStreamType.SelectedIndex = 0;
            comboBoxFactory.SelectedIndex    = 0;
            comboBoxStream.SelectedIndex     = 0;
            comboBoxProtocol.SelectedIndex   = 0;

            /***********************************************************
             * 显示当前IP通道配置
             * **********************************************************/
            if (IpDevIndex < 0)
            {
                //该通道未添加有设备,空闲状态
                return;
            }

            comboBoxStreamType.SelectedIndex = MStruIpParaCfgV40.struStreamMode[ChanIndex].byGetStreamType; //取流方式
            textBoxIPAddr.Text   = MStruIpParaCfgV40.struIPDevInfo[IpDevIndex].struIP.sIpV4;                //前端设备IP地址
            textBoxPort.Text     = Convert.ToString(MStruIpParaCfgV40.struIPDevInfo[IpDevIndex].wDVRPort);  //前端设备端口
            textBoxUserName.Text = MStruIpParaCfgV40.struIPDevInfo[IpDevIndex].sUserName;                   //前端设备用户名
            textBoxPsw.Text      = MStruIpParaCfgV40.struIPDevInfo[IpDevIndex].sPassword;                   //前端设备密码
            for (i = 0; i < (int)_mStruProtoList.dwProtoNum; i++)
            {
                //设备(厂家)协议类型,通过NET_DVR_GetIPCProtoList获取
                if (_mStruProtoList.struProto[i].dwType == MStruIpParaCfgV40.struIPDevInfo[IpDevIndex].byProType)
                {
                    comboBoxFactory.SelectedIndex = i;
                }
            }

            switch (MStruIpParaCfgV40.struStreamMode[ChanIndex].byGetStreamType)
            {
            case 0:     //直接从设备取流,对应联合体中结构NET_DVR_IPCHANINFO
                var ptrChanInfo = Marshal.AllocHGlobal((int)DwUnionSize);
                Marshal.StructureToPtr(MStruIpParaCfgV40.struStreamMode[ChanIndex].uGetStream, ptrChanInfo, false);
                _mStruChanInfo      = (ChcNetSdk.NetDvrIpchaninfo)Marshal.PtrToStructure(ptrChanInfo, typeof(ChcNetSdk.NetDvrIpchaninfo));
                textBoxChannel.Text = Convert.ToString(_mStruChanInfo.byChannel);
                Marshal.FreeHGlobal(ptrChanInfo);
                break;

            case 6:    //直接从设备取流(扩展),对应联合体中结构NET_DVR_IPCHANINFO_V40
                var ptrChanInfoV40 = Marshal.AllocHGlobal((int)DwUnionSize);
                Marshal.StructureToPtr(MStruIpParaCfgV40.struStreamMode[ChanIndex].uGetStream, ptrChanInfoV40, false);
                _mStruChanInfoV40              = (ChcNetSdk.NetDvrIpchaninfoV40)Marshal.PtrToStructure(ptrChanInfoV40, typeof(ChcNetSdk.NetDvrIpchaninfoV40));
                textBoxChannel.Text            = Convert.ToString(_mStruChanInfoV40.dwChannel);
                comboBoxStream.SelectedIndex   = _mStruChanInfoV40.byTransMode;
                comboBoxProtocol.SelectedIndex = _mStruChanInfoV40.byTransProtocol;
                Marshal.FreeHGlobal(ptrChanInfoV40);
                break;
            }
        }
Ejemplo n.º 2
0
        public void InfoIpChannel()
        {
            var dwSize = (uint)Marshal.SizeOf(MStruIpParaCfgV40);

            var ptrIpParaCfgV40 = Marshal.AllocHGlobal((int)dwSize);

            Marshal.StructureToPtr(MStruIpParaCfgV40, ptrIpParaCfgV40, false);

            uint dwReturn = 0;
            var  iGroupNo = 0;

            if (!ChcNetSdk.NET_DVR_GetDVRConfig(_mLUserId, ChcNetSdk.NetDvrGetIpparacfgV40, iGroupNo, ptrIpParaCfgV40, dwSize, ref dwReturn))
            {
                _iLastErr = ChcNetSdk.NET_DVR_GetLastError();
                _str      = "NetDvrGetIpparacfgV40 failed, error code= " + _iLastErr;
                //获取IP资源配置信息失败,输出错误号 Failed to get configuration of IP channels and output the error code
                DebugInfo(_str);
            }
            else
            {
                DebugInfo("NetDvrGetIpparacfgV40 succ!");

                MStruIpParaCfgV40 = (ChcNetSdk.NetDvrIpparacfgV40)Marshal.PtrToStructure(ptrIpParaCfgV40, typeof(ChcNetSdk.NetDvrIpparacfgV40));

                for (_i = 0; _i < _dwAChanTotalNum; _i++)
                {
                    ListAnalogChannel(_i + 1, MStruIpParaCfgV40.byAnalogChanEnable[_i]);
                    _iChannelNum[_i] = _i + DeviceInfo.byStartChan;
                }

                for (_i = 0; _i < MStruIpParaCfgV40.dwDChanNum; _i++)
                {
                    _iChannelNum[_i + _dwAChanTotalNum] = _i + (int)MStruIpParaCfgV40.dwStartDChan;
                    var byStreamType = MStruIpParaCfgV40.struStreamMode[_i].byGetStreamType;

                    dwSize = (uint)Marshal.SizeOf(MStruIpParaCfgV40.struStreamMode[_i].uGetStream);
                    switch (byStreamType)
                    {
                    //目前NVR仅支持直接从设备取流 NVR supports only the mode: get stream from device directly
                    case 0:
                        var ptrChanInfo = Marshal.AllocHGlobal((int)dwSize);
                        Marshal.StructureToPtr(MStruIpParaCfgV40.struStreamMode[_i].uGetStream, ptrChanInfo, false);
                        MStruChanInfo = (ChcNetSdk.NetDvrIpchaninfo)Marshal.PtrToStructure(ptrChanInfo, typeof(ChcNetSdk.NetDvrIpchaninfo));

                        //列出IP通道 List the IP channel
                        ListIpChannel(_i + 1, MStruChanInfo.byEnable, MStruChanInfo.byIPID);
                        _iIpDevId[_i] = MStruChanInfo.byIPID + MStruChanInfo.byIPIDHigh * 256 - iGroupNo * 64 - 1;

                        Marshal.FreeHGlobal(ptrChanInfo);
                        break;

                    case 6:
                        var ptrChanInfoV40 = Marshal.AllocHGlobal((int)dwSize);
                        Marshal.StructureToPtr(MStruIpParaCfgV40.struStreamMode[_i].uGetStream, ptrChanInfoV40, false);
                        MStruChanInfoV40 = (ChcNetSdk.NetDvrIpchaninfoV40)Marshal.PtrToStructure(ptrChanInfoV40, typeof(ChcNetSdk.NetDvrIpchaninfoV40));

                        //列出IP通道 List the IP channel
                        ListIpChannel(_i + 1, MStruChanInfoV40.byEnable, MStruChanInfoV40.wIPID);
                        _iIpDevId[_i] = MStruChanInfoV40.wIPID - iGroupNo * 64 - 1;

                        Marshal.FreeHGlobal(ptrChanInfoV40);
                        break;
                    }
                }
            }
            Marshal.FreeHGlobal(ptrIpParaCfgV40);
        }