/// <summary>
        /// 获取交换机的基础信息
        /// </summary>
        /// <param name="masProtocol"></param>
        /// <param name="deviceControl"></param>
        /// <param name="deviceCode"></param>
        /// <param name="commPort"></param>
        /// <returns></returns>
        public byte[] HandGetSwitchInfo(MasProtocol masProtocol, GetSwitchboardParamCommRequest getswicthInfo, ref string deviceCode)
        {
            NetworkDeviceInfo netmacobject = null;
            GetSwitchboardParamCommRequestCommand commandobject = new GetSwitchboardParamCommRequestCommand();

            byte[] sendbuff = null;
            if (getswicthInfo == null)
            {
                return(sendbuff);
            }
            netmacobject = Cache.CacheManager.GetItemByKey <NetworkDeviceInfo>(getswicthInfo.DeviceCode, true);//按照IP搜索对象
            if (netmacobject == null)
            {
                LogHelper.Error("获取交换机的基础信息,未找到对应的IP地址【" + getswicthInfo.DeviceCode + "】");
                return(sendbuff);
            }
            lock (Cache.LockWorkNet)//用缓存的连接号和接收时间进行更新
            {
                CacheNetWork curnet = Cache.LstWorkNet.Find(delegate(CacheNetWork p) { return(p.IP == netmacobject.IP); });
                if (curnet != null)
                {
                    netmacobject.NetID = curnet.NetID;
                }
            }
            if (netmacobject.NetID > 0)
            {
                deviceCode    = netmacobject.IP;
                commandobject = Basic.Framework.Common.ObjectConverter.Copy <GetSwitchboardParamCommRequest, GetSwitchboardParamCommRequestCommand>(getswicthInfo); //得到基础数据
                sendbuff      = commandobject.ToBytes();                                                                                                            //得到通讯命令的返回Buffer数组
            }
            return(sendbuff);
        }
        /// <summary>
        /// 获取网络模块参数
        /// </summary>
        /// <param name="networkModuleCacheRequest"></param>
        /// <returns></returns>
        public BasicResponse <NetDeviceSettingInfo> GetNetworkModuletParameters(NetworkModuletParametersGetRequest networkModuleCacheRequest)
        {
            BasicResponse <NetDeviceSettingInfo> Result = new BasicResponse <NetDeviceSettingInfo>();

            QuerytNetworkDeviceParamRequest searchAssignNetDeviceRequest = new QuerytNetworkDeviceParamRequest();

            searchAssignNetDeviceRequest.Mac = networkModuleCacheRequest.Mac;
            //searchAssignNetDeviceRequest.WaitTime = networkModuleCacheRequest.WaitTime;
            //todo 调用RPC组件获取数据
            MasProtocol masProtocol = new MasProtocol(SystemType.Security, DirectionType.Down, ProtocolType.QuerytNetworkDeviceParamRequest);

            masProtocol.Protocol = searchAssignNetDeviceRequest;

            //调用RPC发送搜索网络模块命令,并接收回传的参数
            var result = RpcService.Send <QuerytNetworkDeviceParamResponse>(masProtocol, RequestType.DeviceUdpRequest);

            if (result == null)
            {
                Result.Code    = 1;
                Result.Message = "获取网络模块参数失败!";
                return(Result);
            }
            Result.Data = result.NetworkDeviceParam;

            return(Result);
        }
Esempio n. 3
0
        /// <summary>
        /// 核心服务层同步缓存到网关的处理
        /// </summary>
        /// <param name="masProtocol"></param>
        public void HandleUpdateCacheDataRequest(MasProtocol masProtocol)
        {
            UpdateCacheDataRequest request = masProtocol.Deserialize <UpdateCacheDataRequest>();

            if (request == null)
            {
                return;
            }

            if (request.DeviceList != null)
            {
                HandleDeviceCache(request.DeviceList);//测点同步
            }
            if (request.DeviceTypeList != null)
            {
                HandleDeviceTypeCache(request.DeviceTypeList);//设备类型同步
            }
            if (request.NetworkDeviceList != null)
            {
                HandleNetworkDeviceCache(request.NetworkDeviceList);//网络模块同步
            }
            if (request.DeviceAcrossControlList != null)
            {
                HandleDeviceAcrossControlCache(request.DeviceAcrossControlList);//交叉控制同步
            }
        }
        public byte[] HandUpdateCancle(MasProtocol masProtocol, UpdateCancleRequest updateCancleRequest, ref string deviceCode)
        {
            DeviceInfo                 deviceinfoobject = null;
            DeviceTypeInfo             devicetypeobject = null;
            NetworkDeviceInfo          netmacobject     = null;
            UpdateCancleRequestCommand commandobject    = new UpdateCancleRequestCommand();

            byte[] sendbuff = null;
            if (masProtocol == null || updateCancleRequest == null)
            {
                return(sendbuff);
            }
            if (!GetDeviceObject(ref deviceinfoobject, ref devicetypeobject, ref netmacobject, ProtocolType.DeviceControlRequest, updateCancleRequest.DeviceCode))
            {
                return(sendbuff);
            }
            if (netmacobject.NetID > 0)
            {
                deviceCode    = netmacobject.MAC;                                                                                                   //向下的发送的MAC地址
                commandobject = Basic.Framework.Common.ObjectConverter.Copy <UpdateCancleRequest, UpdateCancleRequestCommand>(updateCancleRequest); //得到基础数据

                commandobject.DeviceId    = updateCancleRequest.DeviceId;
                commandobject.HardVersion = updateCancleRequest.HardVersion;
                commandobject.FileVersion = updateCancleRequest.FileVersion;

                commandobject.def = deviceinfoobject;        // Framework.Common.ObjectConverter.DeepCopy<DeviceInfo>(deviceinfoobject);//得到分站的对象必须是深度拷贝;
                sendbuff          = commandobject.ToBytes(); //得到通讯命令的返回Buffer数组
                //if (sendbuff != null)
                //{
                //    sendbuff = Cache.GetPackages(sendbuff, netmacobject, deviceinfoobject, 2, CommandCodes.ExtendCommand, (byte)devicetypeobject.LC2);//通过当前网络模块进行打包
                //}
            }
            return(sendbuff);
        }
        public byte[] HandQueryHistoryRealData(MasProtocol masProtocol, QueryHistoryRealDataRequest queryHistoryRealData, ref string deviceCode, ref int commPort)
        {
            DeviceInfo        deviceinfoobject = null;
            DeviceTypeInfo    devicetypeobject = null;
            NetworkDeviceInfo netmacobject     = null;
            QueryHistoryRealDataRequestCommand commandobject = new QueryHistoryRealDataRequestCommand();

            byte[] sendbuff = null;
            if (queryHistoryRealData == null)
            {
                return(sendbuff);
            }
            if (!GetDeviceObject(ref deviceinfoobject, ref devicetypeobject, ref netmacobject, ProtocolType.QueryHistoryRealDataRequest, queryHistoryRealData.DeviceCode))
            {
                return(sendbuff);
            }
            if (netmacobject.NetID > 0)
            {
                commPort                   = deviceinfoobject.K3;
                deviceCode                 = netmacobject.IP;                                                                                                                     //向下的发送的MAC地址
                commandobject              = Basic.Framework.Common.ObjectConverter.Copy <QueryHistoryRealDataRequest, QueryHistoryRealDataRequestCommand>(queryHistoryRealData); //得到基础数据
                commandobject.def          = deviceinfoobject;                                                                                                                    //得到分站的对象必须是深度拷贝
                commandobject.SerialNumber = queryHistoryRealData.SerialNumber;
                sendbuff                   = commandobject.ToBytes();                                                                                                             //得到通讯命令的返回Buffer数组
                //if (sendbuff != null)
                //{
                //    sendbuff = Cache.GetPackages(sendbuff, netmacobject, deviceinfoobject, 2, CommandCodes.ExtendCommand, (byte)devicetypeobject.LC2);//通过当前网络模块进行打包
                //}
            }
            return(sendbuff);
        }
        public byte[] HandSensorGradingAlarm(MasProtocol masProtocol, SetSensorGradingAlarmRequest sensorGradingAlarm, ref string deviceCode, ref int commPort)
        {
            DeviceInfo        deviceinfoobject = null;
            DeviceTypeInfo    devicetypeobject = null;
            NetworkDeviceInfo netmacobject     = null;
            SetSensorGradingAlarmRequestCommand commandobject = new SetSensorGradingAlarmRequestCommand();

            byte[] sendbuff = null;
            if (sensorGradingAlarm == null)
            {
                return(sendbuff);
            }
            if (!GetDeviceObject(ref deviceinfoobject, ref devicetypeobject, ref netmacobject, ProtocolType.SetSensorGradingAlarmRequest, sensorGradingAlarm.DeviceCode))
            {
                return(sendbuff);
            }
            if (netmacobject.NetID > 0)
            {
                commPort          = deviceinfoobject.K3;
                deviceCode        = netmacobject.IP;                                                                                                                     //向下的发送的MAC地址
                commandobject     = Basic.Framework.Common.ObjectConverter.Copy <SetSensorGradingAlarmRequest, SetSensorGradingAlarmRequestCommand>(sensorGradingAlarm); //得到基础数据
                commandobject.def = deviceinfoobject;                                                                                                                    //得到分站的对象必须是深度拷贝
                sendbuff          = commandobject.ToBytes();                                                                                                             //得到通讯命令的返回Buffer数组
                //if (sendbuff != null)
                //{
                //    sendbuff = Cache.GetPackages(sendbuff, netmacobject, deviceinfoobject, 2, CommandCodes.ExtendCommand, (byte)devicetypeobject.LC2);//通过当前网络模块进行打包
                //}
            }
            return(sendbuff);
        }
        public byte[] HandModificationDeviceAdress(MasProtocol masProtocol, ModificationDeviceAdressRequest modificationDeviceAdress, ref string deviceCode, ref int commPort)
        {
            DeviceInfo        deviceinfoobject = null;
            DeviceTypeInfo    devicetypeobject = null;
            NetworkDeviceInfo netmacobject     = null;
            ModificationDeviceAdressRequestCommand commandobject = new ModificationDeviceAdressRequestCommand();

            byte[] sendbuff = null;
            if (masProtocol == null || modificationDeviceAdress == null)
            {
                return(sendbuff);
            }
            if (!GetDeviceObject(ref deviceinfoobject, ref devicetypeobject, ref netmacobject, ProtocolType.ModificationDeviceAdressRequest, modificationDeviceAdress.DeviceCode))
            {
                return(sendbuff);
            }
            if (netmacobject.NetID > 0)
            {
                commPort          = deviceinfoobject.K3;
                deviceCode        = netmacobject.IP;                                                                                                                                 //向下的发送的MAC地址
                commandobject     = Basic.Framework.Common.ObjectConverter.Copy <ModificationDeviceAdressRequest, ModificationDeviceAdressRequestCommand>(modificationDeviceAdress); //得到基础数据
                commandobject.def = deviceinfoobject;                                                                                                                                //得到分站的对象必须是深度拷贝
                sendbuff          = commandobject.ToBytes();                                                                                                                         //得到通讯命令的返回Buffer数组
            }
            return(sendbuff);
        }
        public byte[] HandResetDeviceCommand(MasProtocol masProtocol, ResetDeviceCommandRequest resetDevice, ref string deviceCode, ref int commPort)
        {
            DeviceInfo                deviceinfoobject = null;
            DeviceTypeInfo            devicetypeobject = null;
            NetworkDeviceInfo         netmacobject     = null;
            ResetDeviceRequestCommand commandobject    = new ResetDeviceRequestCommand();

            byte[] sendbuff = null;
            if (resetDevice == null)
            {
                return(sendbuff);
            }
            if (!GetDeviceObject(ref deviceinfoobject, ref devicetypeobject, ref netmacobject, ProtocolType.ResetDeviceCommandRequest, resetDevice.DeviceCode))
            {
                return(sendbuff);
            }
            if (netmacobject.NetID > 0)
            {
                commPort          = deviceinfoobject.K3;
                deviceCode        = netmacobject.IP;                                                                                                 //向下的发送的MAC地址
                commandobject     = Basic.Framework.Common.ObjectConverter.Copy <ResetDeviceCommandRequest, ResetDeviceRequestCommand>(resetDevice); //得到基础数据
                commandobject.def = deviceinfoobject;                                                                                                //得到分站的对象必须是深度拷贝
                sendbuff          = commandobject.ToBytes();                                                                                         //得到通讯命令的返回Buffer数组
            }
            return(sendbuff);
        }
        public byte[] HandDeviceControl(MasProtocol masProtocol, DeviceControlRequest deviceControl, ref string deviceCode, ref int commPort)
        {
            DeviceInfo                  deviceinfoobject = null;
            DeviceTypeInfo              devicetypeobject = null;
            NetworkDeviceInfo           netmacobject     = null;
            DeviceControlRequestCommand commandobject    = new DeviceControlRequestCommand();

            byte[] sendbuff = null;
            if (masProtocol == null || deviceControl == null)
            {
                return(sendbuff);
            }
            if (!GetDeviceObject(ref deviceinfoobject, ref devicetypeobject, ref netmacobject, ProtocolType.DeviceControlRequest, deviceControl.DeviceCode))
            {
                return(sendbuff);
            }
            if (netmacobject.NetID > 0)
            {
                commPort      = deviceinfoobject.K3;
                deviceCode    = netmacobject.IP;
                commandobject = Basic.Framework.Common.ObjectConverter.Copy <DeviceControlRequest, DeviceControlRequestCommand>(deviceControl); //得到基础数据
                commandobject.OrderVersion = (byte)devicetypeobject.LC2;                                                                        //设备设备类型
                commandobject.def          = deviceinfoobject;
                sendbuff = commandobject.ToBytes();                                                                                             //得到通讯命令的返回Buffer数组
            }
            return(sendbuff);
        }
        private void UpdateStationDataProc(int exFlag, byte[] data, MasProtocol protocol, ushort startIndex, string point)
        {
            switch (exFlag)
            {
            case 1:    //中心站请求远程升级
                StationUpdateResponseCommand stationUpdate = new StationUpdateResponseCommand();
                stationUpdate.Handle(data, protocol, startIndex, point);
                break;

            case 4:    //中心站巡检分站的文件接收情况
                InspectionResponseCommand inspection = new InspectionResponseCommand();
                inspection.Handle(data, protocol, startIndex, point);
                break;

            case 5:    //中心站告知分站重启并升级
                RestartResponseCommand restart = new RestartResponseCommand();
                restart.Handle(data, protocol, startIndex, point);
                break;

            case 6:    //中心站告知分站该次升级过程中止
                UpdateCancleResponseCommand updateCancle = new UpdateCancleResponseCommand();
                updateCancle.Handle(data, protocol, startIndex, point);
                break;

            case 7:    //中心站告知分站恢复最近一次备份
                ReductionResponseCommand reduction = new ReductionResponseCommand();
                reduction.Handle(data, protocol, startIndex, point);
                break;

            case 8:    //中心站查询分站信息
                GetStationUpdateStateResponseCommand getStationUpdateState = new GetStationUpdateStateResponseCommand();
                getStationUpdateState.Handle(data, protocol, startIndex, point);
                break;
            }
        }
Esempio n. 11
0
        public void SendInitializeRequestToCenter(MasProtocol Protocol, string point)
        {
            DeviceInitializeRequest ResponseObject = new DeviceInitializeRequest();

            Protocol.ProtocolType     = ProtocolType.DeviceInitializeRequest;
            ResponseObject.DeviceCode = point;
            Protocol.Protocol         = ResponseObject;
        }
Esempio n. 12
0
        public void SendInitializeAffirmToCenter(MasProtocol Protocol, string point, ushort crc)
        {
            InitializeResponse ResponseObject = new InitializeResponse();

            Protocol.ProtocolType     = ProtocolType.InitializeResponse;
            ResponseObject.StationCrc = crc;
            ResponseObject.DeviceCode = point;
            Protocol.Protocol         = ResponseObject;
        }
Esempio n. 13
0
        /// <summary>
        /// 启动初始化缓存
        /// </summary>
        public void Start()
        {
            MasProtocol masProtocol = new MasProtocol(SystemType.Security, DirectionType.Up, ProtocolType.QueryCacheDataRequest);

            masProtocol.Protocol = new QueryCacheDataRequest();

            var result = GatewayManager.RpcManager.Send <QueryCacheDataResponse>(masProtocol, RequestType.BusinessRequest);

            if (result == null)
            {
                return;
            }

            if (result.DeviceList != null && result.DeviceList.Count > 0)
            {
                GatewayManager.CacheManager.AddItems <DeviceInfo>(result.DeviceList);

                LogHelper.Debug("获取测点缓存成功,数量:" + result.DeviceList.Count);
            }
            else
            {
                LogHelper.Debug("获取测点缓存成功,数量:0");
            }

            if (result.DeviceTypeList != null && result.DeviceTypeList.Count > 0)
            {
                GatewayManager.CacheManager.AddItems <DeviceTypeInfo>(result.DeviceTypeList);

                LogHelper.Debug("获取测点类型缓存成功,数量:" + result.DeviceTypeList.Count);
            }
            else
            {
                LogHelper.Debug("获取测点类型缓存成功,数量:0");
            }

            if (result.NetworkDeviceList != null && result.NetworkDeviceList.Count > 0)
            {
                GatewayManager.CacheManager.AddItems <NetworkDeviceInfo>(result.NetworkDeviceList);

                LogHelper.Debug("获取网络模块缓存成功,数量:" + result.NetworkDeviceList.Count);
            }
            else
            {
                LogHelper.Debug("获取网络模块缓存成功,数量:0");
            }

            if (result.DeviceAcrossControlList != null && result.DeviceAcrossControlList.Count > 0)
            {
                GatewayManager.CacheManager.AddItems <DeviceAcrossControlInfo>(result.DeviceAcrossControlList);

                LogHelper.Debug("获取交叉控制缓存成功,数量:" + result.DeviceAcrossControlList.Count);
            }
            else
            {
                LogHelper.Debug("获取交叉控制缓存成功,数量:0");
            }
        }
Esempio n. 14
0
        public void HandleSetSensorGradingAlarm(byte[] data, MasProtocol protocol, ushort startIndex, byte deviceCommunicationType, string point)
        {
            SetSensorGradingAlarmResponse ResponseObject = new SetSensorGradingAlarmResponse();

            protocol.ProtocolType     = ProtocolType.SetSensorGradingAlarmResponse;
            ResponseObject.DeviceCode = point;
            ResponseObject.RandomCode = 0;
            protocol.Protocol         = ResponseObject;
        }
        /// <summary>
        /// 处理回发的数据体,以分站为对象
        /// </summary>
        /// <param name="data"></param>
        /// <param name="protocolData"></param>
        public void HandleDeviceData(byte[] data, MasProtocol protocolData)
        {
            DeviceTypeInfo dev = null;

            dev = Cache.CacheManager.QueryFrist <DeviceTypeInfo>(p => p.Devid == def.Devid, true);
            if (dev != null)
            {
                DataControlByMonitor(data, protocolData, (byte)dev.LC2);
            }
        }
Esempio n. 16
0
        /// <summary>
        /// 调用驱动处理 核心服务层到驱动的命令
        /// </summary>
        /// <param name="driverCode"></param>
        /// <param name="masProtocol"></param>
        public void HandleProtocolData(string driverCode, MasProtocol masProtocol)
        {
            if (!_driverCache.ContainsKey(driverCode))
            {
                LogHelper.Error("DriverManager.HandleProtocolData() 错误,driverCode:" + driverCode + " 驱动编号不存在");
                return;
            }

            _driverCache[driverCode].HandleProtocolData(masProtocol);
        }
Esempio n. 17
0
        /// <summary>
        /// 结束广播任务
        /// </summary>
        /// <param name="masProtocol"></param>
        /// <returns></returns>
        public static RpcResponse endPaTask(MasProtocol masProtocol)
        {
            EndPaTaskRequest request = masProtocol.Deserialize <EndPaTaskRequest>();

            if (request == null)
            {
                return(null);
            }
            EndPaTaskResponse response = BroadCastControllerProxy.broadCastControllerProxy.endPaTask(request);

            return(RpcResponse.Response <EndPaTaskResponse>(response));
        }
Esempio n. 18
0
        /// <summary>
        /// 启动音乐广播任务
        /// </summary>
        /// <param name="masProtocol"></param>
        /// <returns></returns>
        public static RpcResponse startPaMusicTask(MasProtocol masProtocol)
        {
            StartPaMusicTaskRequest request = masProtocol.Deserialize <StartPaMusicTaskRequest>();

            if (request == null)
            {
                return(null);
            }
            StartPaMusicTaskResponse response = BroadCastControllerProxy.broadCastControllerProxy.startPaMusicTask(request);

            return(RpcResponse.Response <StartPaMusicTaskResponse>(response));
        }
Esempio n. 19
0
        /// <summary>
        /// 删除播放列表音乐
        /// </summary>
        /// <param name="masProtocol"></param>
        /// <returns></returns>
        public static RpcResponse delPlayListMusic(MasProtocol masProtocol)
        {
            PlayListMusicControlRequest request = masProtocol.Deserialize <PlayListMusicControlRequest>();

            if (request == null)
            {
                return(null);
            }
            PlayListMusicControlResponse response = BroadCastControllerProxy.broadCastControllerProxy.delPlayListMusic(request);

            return(RpcResponse.Response <PlayListMusicControlResponse>(response));
        }
Esempio n. 20
0
        /// <summary>
        /// 查询终端
        /// </summary>
        /// <param name="masProtocol"></param>
        /// <returns></returns>
        public static RpcResponse queryTerm(MasProtocol masProtocol)
        {
            TerminalQueryRequest request = masProtocol.Deserialize <TerminalQueryRequest>();

            if (request == null)
            {
                return(null);
            }
            TerminalQueryResponse response = BroadCastControllerProxy.broadCastControllerProxy.queryTerm(request);

            return(RpcResponse.Response <TerminalQueryResponse>(response));
        }
Esempio n. 21
0
        /// <summary>
        /// 监听呼叫
        /// </summary>
        /// <param name="masProtocol"></param>
        /// <returns></returns>
        public static RpcResponse monitorCall(MasProtocol masProtocol)
        {
            MonitorCallRequest request = masProtocol.Deserialize <MonitorCallRequest>();

            if (request == null)
            {
                return(null);
            }
            MonitorCallResponse response = BroadCastControllerProxy.broadCastControllerProxy.monitorCall(request);

            return(RpcResponse.Response <MonitorCallResponse>(response));
        }
Esempio n. 22
0
        /// <summary>
        /// 挂断呼叫
        /// </summary>
        /// <param name="masProtocol"></param>
        /// <returns></returns>
        public static RpcResponse hangupCall(MasProtocol masProtocol)
        {
            HangupCallRequest request = masProtocol.Deserialize <HangupCallRequest>();

            if (request == null)
            {
                return(null);
            }
            HangupCallResponse response = BroadCastControllerProxy.broadCastControllerProxy.hangupCall(request);

            return(RpcResponse.Response <HangupCallResponse>(response));
        }
        /// <summary>
        /// 发送数据到远程服务器
        /// </summary>
        /// <typeparam name="TResult">返回的结果类型</typeparam>
        /// <param name="masProtocol">待发送的协议</param>
        /// <param name="requestType">请求的类型</param>
        /// <returns>调用结果</returns>
        public TResult Send <TResult>(MasProtocol masProtocol, RequestType requestType)
        {
            GatewayRpcRequest request = new GatewayRpcRequest(requestType);

            request.MasProtocol = masProtocol;
            var response = _client.Send <GatewayRpcRequest, TResult>(request);

            if (response.IsSuccess)
            {
                //todo
            }
            return(response.Data);
        }
        private void RealDataCreateByState(MasProtocol protocol, ItemState state)
        {
            QueryRealDataResponse realData = new QueryRealDataResponse();

            realData.RealDataItems = new List <RealDataItem>();
            protocol.ProtocolType  = ProtocolType.QueryRealDataResponse;
            RealDataItem item = new RealDataItem();

            item         = new RealDataItem();
            item.Channel = "0";
            item.Address = "0";
            item.State   = state;
            realData.RealDataItems.Add(item);
            realData.DeviceCode = def.Point;
            protocol.Protocol   = realData;
        }
        public void HandleModificationDeviceAdressData(byte[] data, MasProtocol protocol, ushort startIndex, byte deviceCommunicationType, string point)
        {
            ModificationDeviceAdressResponse ResponseObject = new ModificationDeviceAdressResponse();

            protocol.ProtocolType     = ProtocolType.ModificationDeviceAdressResponse;
            ResponseObject.DeviceCode = point;
            if (startIndex + 6 < data.Length)
            {
                ResponseObject.RandomCode = data[startIndex + 6];
            }
            else
            {
                ResponseObject.RandomCode = 0;
            }
            protocol.Protocol = ResponseObject;
        }
Esempio n. 26
0
        /// <summary>
        /// 向网关同步数据
        /// </summary>
        /// <param name="SendItemList"></param>
        /// <returns></returns>
        private bool SynchronousDataToGateway(List <AreaInfo> SendItemList)
        {
            foreach (AreaInfo areaInfo in SendItemList)
            {
                PartitionControlRequest partitionControlRequest = new PartitionControlRequest();

                if (string.IsNullOrEmpty(areaInfo.Areadescribe))
                {
                    partitionControlRequest.zoneId = "";//分区标识
                }
                else
                {
                    partitionControlRequest.zoneId = areaInfo.Areadescribe; //分区标识
                }
                partitionControlRequest.paTaskDN    = "";                   //分区广播接入号码[暂未使用]
                partitionControlRequest.zoneName    = areaInfo.Areaname;    //分区名称
                partitionControlRequest.almLinkUdn1 = "";                   //分区报警联动用户号码列表[暂未使用]
                partitionControlRequest.almLinkUdn2 = "";                   //分区报警联动用户号码列表[暂未使用]
                partitionControlRequest.almLinkUdn3 = "";                   //分区报警联动用户号码列表[暂未使用]

                partitionControlRequest.InfoState = areaInfo.InfoState;
                //调用RPC发送
                MasProtocol masProtocol = new MasProtocol(SystemType.Broadcast, DirectionType.Down, ProtocolType.PartitionControlRequest);
                masProtocol.Protocol = partitionControlRequest;
                PartitionControlResponse result = RpcService.Send <PartitionControlResponse>(masProtocol, RequestType.BusinessRequest);

                if (result == null && result.retCode != "0")
                {
                    Basic.Framework.Logging.LogHelper.Error("向网关同步广播分区信息失败!,分区名称:" + areaInfo.Areaname);
                    return(false);
                }
                else
                {
                    //将返回的分区标识更新到缓存及数据库  20180103
                    areaInfo.Areadescribe = result.zoneId;
                    //更新数据库
                    var _area = ObjectConverter.Copy <AreaInfo, AreaModel>(areaInfo);
                    _Repository.UpdateArea(_area);
                    //更新区域缓存  20171128
                    AreaCacheUpdateRequest AreaCacheUpdateRequest = new AreaCacheUpdateRequest();
                    AreaCacheUpdateRequest.AreaInfo = areaInfo;
                    _AreaCacheService.UpdateAreaCache(AreaCacheUpdateRequest);
                }
            }
            return(true);
        }
Esempio n. 27
0
        /// <summary>
        /// 仅适用于分站的电源箱解码
        /// <param name="data">传入回发的Buffer</param>
        /// <param name="protocol">回发的对象</param>
        /// <param name="startIndex">分站号的索引位置</param>
        /// <param name="deviceCommunicationType">分站的类型</param>
        /// <param name="point">分站的测点号</param>
        /// </summary>
        public void HandleBatteryRealData(byte[] data, MasProtocol protocol, ushort startIndex, byte deviceCommunicationType, string point)
        {
            QueryBatteryRealDataResponse realData    = new QueryBatteryRealDataResponse();
            BatteryRealDataItem          BatteryItem = new BatteryRealDataItem();

            protocol.ProtocolType         = ProtocolType.QueryBatteryRealDataResponse;
            realData.BatteryDateTime      = DateTime.Now;
            realData.DeviceCode           = point;
            realData.BatteryRealDataItems = new List <BatteryRealDataItem>();

            BatteryItem.DeviceProperty = ItemDevProperty.Substation;

            Cache.HandleDeviceBattery(data, (byte)(startIndex + 5), BatteryItem);//解析电源箱的数据  111

            realData.BatteryRealDataItems.Add(BatteryItem);
            protocol.Protocol = realData;
        }
Esempio n. 28
0
        /// <summary>
        /// 音乐管理
        /// </summary>
        /// <param name="masProtocol"></param>
        /// <returns></returns>
        public static RpcResponse musicManage(MasProtocol masProtocol)
        {
            MusicControlRequest request = masProtocol.Deserialize <MusicControlRequest>();

            if (request == null)
            {
                return(null);
            }
            if (request.InfoState == InfoState.AddNew)
            {
                addMusic(request);
            }
            if (request.InfoState == InfoState.Delete)
            {
                delMusic(request);
            }
            return(null);
        }
        /// <summary>
        /// 发送心跳请求
        /// </summary>
        /// <returns></returns>
        private bool SendHeartbeatRequest()
        {
            HeartbeatRequest request = new HeartbeatRequest()
            {
                RequestTime = DateTime.Now,
                Status      = 1
            };

            MasProtocol masProtocol = new MasProtocol(SystemType.Security, DirectionType.Up, ProtocolType.HeartbeatRequest);

            masProtocol.Protocol = request;

            var response = GatewayManager.RpcManager.Send <GatewayRpcResponse>(masProtocol, RequestType.DeviceRequest);

            if (response != null && response.IsSuccess)
            {
                return(true);
            }
            return(false);
        }
Esempio n. 30
0
        /// <summary>
        /// 向网关同步数据
        /// </summary>
        /// <param name="SendItemList"></param>
        /// <returns></returns>
        private bool SynchronousDataToGateway(List <Jc_DefInfo> SendItemList)
        {
            foreach (Jc_DefInfo deviceInfo in SendItemList)
            {
                TerminalControlRequest terminalControlRequest = new TerminalControlRequest();
                //查找分区标识
                AreaCacheGetByKeyRequest AreaCacheRequest = new AreaCacheGetByKeyRequest();
                AreaCacheRequest.Areaid = deviceInfo.Areaid;
                AreaInfo areaInfo = _areaCacheService.GetByKeyAreaCache(AreaCacheRequest).Data;
                if (areaInfo != null)
                {
                    terminalControlRequest.zoneId = areaInfo.Areadescribe;//分区标识
                }
                else
                {
                    Basic.Framework.Logging.LogHelper.Error("未找到广播设备对应的分区信息,设备标识:" + deviceInfo.Point);
                    return(false);
                }
                terminalControlRequest.termDN    = deviceInfo.Point; //终端号码
                terminalControlRequest.type      = deviceInfo.Bz6;   //终端类型
                terminalControlRequest.name      = deviceInfo.Wz;    //终端名称
                terminalControlRequest.record    = deviceInfo.Bz7;   //录音使能是否启用
                terminalControlRequest.auth      = deviceInfo.Bz8;   //注册鉴权是否启用
                terminalControlRequest.password  = deviceInfo.Bz9;   //注册鉴权密码
                terminalControlRequest.pa        = deviceInfo.Bz11;  //广播使能是否启用
                terminalControlRequest.cfuDN     = deviceInfo.Bz12;  //始终呼叫转移号码
                terminalControlRequest.cfxDN     = deviceInfo.Bz13;  //条件呼叫转移号码
                terminalControlRequest.InfoState = deviceInfo.InfoState;
                //调用RPC发送
                MasProtocol masProtocol = new MasProtocol(SystemType.Broadcast, DirectionType.Down, ProtocolType.TerminalControlRequest);
                masProtocol.Protocol = terminalControlRequest;
                TerminalControlResponse result = RpcService.Send <TerminalControlResponse>(masProtocol, RequestType.BusinessRequest);

                if (result == null && result.retCode != "0")
                {
                    Basic.Framework.Logging.LogHelper.Error("向网关同步广播设备信息失败!,设备标识:" + deviceInfo.Point);
                    return(false);
                }
            }
            return(true);
        }