| | |
| | | public string Get_TimeStamp() |
| | | { |
| | | long t = DateTime.Now.Ticks / 10000; |
| | | return t.ToString(); |
| | | return t.ToString(); |
| | | } |
| | | |
| | | bool _gatewayOnline = false; |
| | |
| | | _gatewayOnline = value; |
| | | //修改主页连接状态 |
| | | UI.HomePage.LoadEvent_CheckLinkStatus(); |
| | | FunctionList.List.ReadAllFunctionStatus(); |
| | | } |
| | | } |
| | | /// <summary> |
| | | /// 网关通讯ID |
| | | /// </summary> |
| | | public string GatewayId; |
| | | |
| | | bool _isRemote = false; |
| | | /// <summary> |
| | | /// 是否为远程连接 |
| | | /// </summary> |
| | | public bool IsRemote = false; |
| | | public bool IsRemote { |
| | | get |
| | | { |
| | | return _isRemote; |
| | | } |
| | | set |
| | | { |
| | | _isRemote = value; |
| | | if(value) |
| | | { |
| | | DAL.Mqtt.MqttClient.InitState(); |
| | | }else |
| | | { |
| | | DAL.Mqtt.MqttClient.DisConnectRemote(); |
| | | } |
| | | } |
| | | } |
| | | /// <summary> |
| | | /// 通讯地址IP |
| | | /// </summary> |
| | |
| | | /// </summary> |
| | | public void CloseUdp() |
| | | { |
| | | if(myUdp!= null) |
| | | if (myUdp != null) |
| | | { |
| | | myUdp = null; |
| | | } |
| | |
| | | public void SearchLoaclGateway() |
| | | { |
| | | OpenUdp(DB_ResidenceData.residenceData.GatewayType == 0 ? 6000 : 8585); |
| | | |
| | | if (DB_ResidenceData.residenceData.GatewayType == 0) |
| | | new System.Threading.Thread(() => |
| | | { |
| | | myUdp.ControlBytesSend(Command.ReadGateway, 255, 255, new byte[] { (byte)new Random().Next(255), (byte)new Random().Next(255) }); |
| | | } |
| | | else if (DB_ResidenceData.residenceData.GatewayType == 1) |
| | | { |
| | | myUdp.SearchLocalGateway(); |
| | | } |
| | | for (int i = 0; i < 5; i++) |
| | | { |
| | | if (GatewayOnline) |
| | | break; |
| | | if (DB_ResidenceData.residenceData.GatewayType == 0) |
| | | { |
| | | myUdp.ControlBytesSend(Command.ReadGateway, 255, 255, new byte[] { (byte)new Random().Next(255), (byte)new Random().Next(255) }); |
| | | } |
| | | else if (DB_ResidenceData.residenceData.GatewayType == 1) |
| | | { |
| | | myUdp.SearchLocalGateway(); |
| | | } |
| | | System.Threading.Thread.Sleep(500); |
| | | } |
| | | }) |
| | | { IsBackground = true }.Start(); |
| | | } |
| | | |
| | | /// <summary> |
| | |
| | | function.refreshTime = DateTime.Now; |
| | | DAL.Server.HttpServerRequest httpServer = new DAL.Server.HttpServerRequest(); |
| | | //远程通讯 |
| | | if (Ins.IsRemote) |
| | | if (Ins.IsRemote || true) |
| | | { |
| | | //ALink控制、Bus控制使用同一个接口控制,由云端负责解析 |
| | | var apiControlData = function.GetApiControlData(commandDictionary); |
| | | var actionObjs = new List<ApiAlinkControlActionObj>(); |
| | | actionObjs.Add(apiControlData); |
| | | httpServer.ControlDevice(actionObjs); |
| | | var pack = httpServer.ControlDevice(actionObjs); |
| | | MainPage.Log($"{pack.Code}:{pack.Data}"); |
| | | } |
| | | //本地通讯 |
| | | else |
| | | { |
| | | //ALink控制 |
| | | //Bus控制 |
| | | if (DB_ResidenceData.residenceData.GatewayType == 0) |
| | | { |
| | | try |
| | |
| | | MainPage.Log($"发送数据异常: {ex.Message}"); |
| | | } |
| | | } |
| | | //Bus控制 |
| | | //ALink控制 |
| | | else |
| | | { |
| | | if (myUdp != null) |
| | |
| | | var functionControlDataJson = Newtonsoft.Json.JsonConvert.SerializeObject(functionControlDataObj); |
| | | var sendBytes = Ins.ConvertSendBodyData(CommunicationTopic.ct.ControlFunctionTopic, functionControlDataJson); |
| | | myUdp.SendLocalHdlLinkData(sendBytes); |
| | | //MainPage.Log($"发送本地HDL-Link数据{functionControlDataJson}\r\n"); |
| | | } |
| | | } |
| | | } |
| | |
| | | public void SendReadCommand(Function function) |
| | | { |
| | | function.refreshTime = DateTime.Now; |
| | | if (function.bus_Data != null) |
| | | if (Ins.IsRemote) |
| | | { |
| | | try |
| | | { |
| | | //ReadBusData(function); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | MainPage.Log($"发送数据异常: {ex.Message}"); |
| | | } |
| | | |
| | | } |
| | | else |
| | | { |
| | | //var commandObj = function.GetSendJObject(CommandType_A.read); |
| | | //var commandString = Newtonsoft.Json.JsonConvert.SerializeObject(commandObj); |
| | | //var commandBytes = System.Text.Encoding.UTF8.GetBytes(commandString); |
| | | //MqttCommon.MqttRemoteSend(commandBytes); |
| | | if (function.bus_Data != null) |
| | | { |
| | | try |
| | | { |
| | | Ins.myUdp.ReadBusData(function); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | MainPage.Log($"发送数据异常: {ex.Message}"); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | var readKey = new Dictionary<string, string>(); |
| | | readKey.Add("sid", function.sid); |
| | | |
| | | var readDataObj = new GatewayAlinkReadObj() |
| | | { |
| | | id = Ins.msg_id.ToString(), |
| | | objects = new List<Dictionary<string, string>>() |
| | | { |
| | | readKey |
| | | }, |
| | | //time_stamp = |
| | | }; |
| | | var functionControlDataJson = Newtonsoft.Json.JsonConvert.SerializeObject(readDataObj); |
| | | var sendBytes = Ins.ConvertSendBodyData(CommunicationTopic.ct.ReadStatus, functionControlDataJson); |
| | | Ins.myUdp.SendLocalHdlLinkData(sendBytes); |
| | | } |
| | | } |
| | | } |
| | | /// <summary> |
| | | /// 发送A协议读取命令 |
| | | /// </summary> |
| | | public void SendReadCommand(List<Dictionary<string, string>> keyValuePairs) |
| | | { |
| | | var readDataObj = new GatewayAlinkReadObj() |
| | | { |
| | | id = Ins.msg_id.ToString(), |
| | | objects = keyValuePairs, |
| | | //time_stamp = |
| | | }; |
| | | var functionControlDataJson = Newtonsoft.Json.JsonConvert.SerializeObject(readDataObj); |
| | | var sendBytes = Ins.ConvertSendBodyData(CommunicationTopic.ct.ReadStatus, functionControlDataJson); |
| | | Ins.myUdp.SendLocalHdlLinkData(sendBytes); |
| | | } |
| | | |
| | | /// <summary> |
| | |
| | | Ins.GatewayOnline = true; |
| | | Ins.GatewayId = device.gatewayId; |
| | | reportIp = "239.0.168.188";// device.ip_address; |
| | | Ins.IsRemote = false; |
| | | } |
| | | break; |
| | | } |