| | |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Net.Sockets; |
| | | using System.Text; |
| | | using HDL_ON.DAL; |
| | | using HDL_ON.DAL.Net; |
| | | using HDL_ON.Entity; |
| | | using Newtonsoft.Json; |
| | | using Newtonsoft.Json.Linq; |
| | | using Shared; |
| | | using Shared.Net; |
| | | |
| | | namespace HDL_ON |
| | | { |
| | |
| | | DeviceID = deviceID, |
| | | AddData = gatewayBytes, |
| | | }, sendCount, false); |
| | | MainPage.Log(command.ToString() + "::" + CommonPage.EndPoint.ToString()); |
| | | } |
| | | |
| | | //获取A协议网关IP |
| | | public static byte[] ReadGatewayIPAddress() |
| | | { |
| | | Control control = new Control(); |
| | | control.ReadGatewayIP(); |
| | | return control.UsefulBytes; |
| | | } |
| | | |
| | | static bool searchLocalGateway = false; |
| | | /// <summary> |
| | | /// 读取局域网网关列表 |
| | | /// </summary> |
| | | public static void SearchLocalGateway() |
| | | { |
| | | searchLocalGateway = true; |
| | | var control = new Control(); |
| | | control.Send(new Target() |
| | | { |
| | | IPEndPoint = new System.Net.IPEndPoint(System.Net.IPAddress.Parse(new Shared.Net.NetWiFi().BroadcastIpAddress.ToString()), 6000), |
| | | Command = Command.ReadGateway, |
| | | SubnetID = 255, |
| | | DeviceID = 255, |
| | | AddData = new byte[] { (byte)new Random().Next(255), (byte)new Random().Next(255) }, |
| | | }, 3, true); |
| | | } |
| | | /// <summary> |
| | | /// 验证网关回复信息 |
| | | /// </summary> |
| | | public static void VerGateway(byte[] result) |
| | | { |
| | | if(searchLocalGateway) |
| | | { |
| | | if (result != null) |
| | | { |
| | | var mac0 = CommonPage.byteToHex16(result[5]) + "." + CommonPage.byteToHex16(result[6]) + "." + CommonPage.byteToHex16(result[7]) + "." + CommonPage.byteToHex16(result[8]) + "." + CommonPage.byteToHex16(result[9]) + "." + CommonPage.byteToHex16(result[10]) + "." + CommonPage.byteToHex16(result[11]) + "." + CommonPage.byteToHex16(result[12]); |
| | | // |
| | | if (DB_ResidenceData.residenceData.residenceGatewayMAC.Replace(".", "").Replace(":", "").ToUpper() == mac0.Replace(".", "").Replace(":", "").ToUpper()) |
| | | { |
| | | searchLocalGateway = false; |
| | | } |
| | | else |
| | | { |
| | | Mqtt_Cloud.StartCloudMqtt(); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | static TcpListener tcpListener; |
| | | |
| | | /// <summary> |
| | | /// 000E 搜索回复 |
| | |
| | | return; |
| | | } |
| | | |
| | | |
| | | if (!CommonPage.isHttpListenerStart) |
| | | if (tcpListener == null) |
| | | { |
| | | //数据接收端口没打开,不回复 |
| | | CommonPage.InitHttpListener(); |
| | | tcpListener = new TcpListener(); |
| | | tcpListener.OpenServer(8586); |
| | | } |
| | | |
| | | //if (!CommonPage.isHttpListenerStart) |
| | | //{ |
| | | // //数据接收端口没打开,不回复 |
| | | // CommonPage.InitHttpListener(); |
| | | //} |
| | | var sendStr = MainPage.LoginUser.accountString; |
| | | if (usefullBytes.Length == 0) |
| | | { |
| | |
| | | else |
| | | { |
| | | bool isExit = false; |
| | | |
| | | for (int i = 0, len = usefullBytes.Length; i < len; i++) |
| | | { |
| | | if (i % 2 == 0) |
| | |
| | | } |
| | | } |
| | | } |
| | | |
| | | if (!isExit) |
| | | { |
| | | //不存在,代表没收到本机的发送,继续回复 |
| | | SenRemark(sendStr); |
| | | } |
| | | |
| | | } |
| | | |
| | | } |
| | | catch { } |
| | | catch (Exception ex) { |
| | | Console.WriteLine($"回复bus搜索异常 : {ex.Message}"); |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | |
| | | { |
| | | if (((System.Net.IPEndPoint)remoteEndPoint).Port == 6688) |
| | | { |
| | | |
| | | for (int i = 0; i < controlList.Count; i++) |
| | | { |
| | | try |
| | |
| | | //buspro 读备注回复 |
| | | Console.WriteLine("buspro 读备注回复"); |
| | | ReceiveReadRemark(usefulBytes); |
| | | break; |
| | | case Command.ReadLightAllLoopBrightnessACK: |
| | | receiveFlag += ""; |
| | | break; |
| | | //case Command.YIPanelDeviceInofACK: |
| | | // for (int i = 0; i < 4; i++) |
| | |
| | | //case Command.ReadSensorPushValuesACK: |
| | | // receiveFlag += string.Format("{0},{1}", usefulBytes[0], usefulBytes[1]); |
| | | // break; |
| | | //case Command.ReadLightEquipmentAllLoopBrightnessACK: |
| | | // break; |
| | | //case Command.UpLoadInfraredACK: |
| | | // receiveFlag += string.Format("{0},{1}", usefulBytes[0], usefulBytes[1]); |
| | | // break; |
| | |
| | | // receiveFlag += string.Format("{0}", usefulBytes[0]); |
| | | // break; |
| | | //case Command.ReadDeviceModulACK: |
| | | //case Command.ReadGatewayACK: |
| | | //case Command.ReadSecurityStatusACK: |
| | | // receiveFlag = string.Format("{0},{1}", usefulBytes[0], usefulBytes[1]); |
| | | // break; |
| | | case Command.ReadGatewayACK: |
| | | receiveFlag = string.Format("{0},{1}", usefulBytes[0], usefulBytes[1]); |
| | | break; |
| | | //case Command.UpdataLightDimmingTheLargestLevelACK: |
| | | //case Command.UpdataLightDimmingMaximumOrMinimumACK: |
| | | //case Command.WriteManageWirelessNetACK: |
| | |
| | | //case Command.ReadWirelessPanelButtonKeyACK: |
| | | //case Command.WriteWirelessPanelButtonKeyACK: |
| | | //case Command.ReadDryContactStatusACK: |
| | | //case Command.InstructionPanelKeyACK: |
| | | //case Command.ReadInstructionPanelKeyACK: |
| | | //case Command.ReadAnalogValueACK: |
| | | //case Command.ReadSensorTargetRemarkACK: |
| | | //case Command.SetHornTargetStateACK: |
| | | //case Command.ReadHornTargetStateACK: |
| | | // receiveFlag += string.Format("{0},{1}", usefulBytes[0], usefulBytes[1]); |
| | | // break; |
| | | case Command.InstructionPanelKeyACK: |
| | | case Command.ReadInstructionPanelKeyACK: |
| | | //case Command.ReadAnalogValueACK: |
| | | //case Command.ReadSensorTargetRemarkACK: |
| | | //case Command.SetHornTargetStateACK: |
| | | //case Command.ReadHornTargetStateACK: |
| | | receiveFlag += string.Format("{0},{1}", usefulBytes[0], usefulBytes[1]); |
| | | break; |
| | | //case Command.AssignedAddressACK: |
| | | //case Command.UpdataCurtainModelRunTimeACK: |
| | | //case Command.ReadCurtainStutasACK: |
| | |
| | | void managerSendCount(object o) |
| | | { |
| | | add(); |
| | | if (CommonPage.IsRemote) |
| | | if (MainPage.IsRemote) |
| | | { |
| | |
} |
| | | System.Console.WriteLine("远程发送数据:" + SendFlag); |
| | | Mqtt_Cloud.MqttRemoteSend(Packet.Bytes); |
| | | Packet.FlagDateTime = DateTime.Now; |
| | | Packet.HaveSendCount--; |
| | | //这里是重发两次 |
| | | while (Packet.HaveSendCount < 3) |
| | | { |
| | | if (Packet.FlagDateTime.AddMilliseconds(1000).Ticks <= System.DateTime.Now.Ticks) |
| | | { |
| | | Mqtt_Cloud.MqttRemoteSend(Packet.Bytes); |
| | | System.Console.WriteLine("重发远程发送数据:" + SendFlag); |
| | | Packet.FlagDateTime = DateTime.Now; |
| | | Packet.HaveSendCount++; |
| | | } |
| | | System.Threading.Thread.Sleep(100); |
| | | }
allDone.Set();
} |
| | | else |
| | | { |
| | | //Bus socket无法控制,重启机制 |
| | |
| | | MainPage.Log("发送数据:" + SendFlag); |
| | | BusSocket.AsyncBeginSend(Packet); |
| | | Packet.HaveSendCount--; |
| | | controlLostCount++; |
| | | |
| | | //这里是重发两次 |
| | | while (Packet.HaveSendCount < 3) |
| | |
| | | { |
| | | MainPage.Log("重发数据:" + SendFlag); |
| | | BusSocket.AsyncBeginSend(Packet); |
| | | controlLostCount++; |
| | | } |
| | | System.Threading.Thread.Sleep(100); |
| | | } |
| | |
| | | break; |
| | | case Command.SetLogicLoopColor: |
| | | this.sendFlag += string.Format("{0},{1},{2}", target.AddData[0], target.AddData[1], target.AddData[2]); |
| | | break; |
| | | case Command.ReadLightAllLoopBrightness: |
| | | this.SendFlag += ""; |
| | | break; |
| | | //case Command.YIPanelDeviceInof: |
| | | // for (int i = 0; i < 4; i++) |
| | |
| | | // this.SendFlag += string.Format("{0}", target.AddData[0]); |
| | | // break; |
| | | //case Command.ReadDeviceModul: |
| | | //case Command.ReadGateway: |
| | | //case Command.ReadSecurityStatus: |
| | | //case Command.ReadHornTargetState: |
| | | // this.SendFlag = string.Format("{0},{1}", target.AddData[0], target.AddData[1]); |
| | | // break; |
| | | case Command.ReadGateway: |
| | | this.SendFlag = string.Format("{0},{1}", target.AddData[0], target.AddData[1]); |
| | | break; |
| | | //case Command.SetScene: |
| | | //case Command.SetSeries: |
| | | //case Command.SetHotelCurtain: |
| | |
| | | //case Command.SetCurtainModelStutas: |
| | | //case Command.DownloadInfrared: |
| | | //case Command.UpLoadInfrared: |
| | | //case Command.InstructionPanelKey: |
| | | //case Command.ReadInstructionPanelKey: |
| | | //case Command.ReadSensorTargetRemark: |
| | | //case Command.SetHornTargetState: |
| | | // this.sendFlag += string.Format("{0},{1}", target.AddData[0], target.AddData[1]); |
| | | // break; |
| | | case Command.InstructionPanelKey: |
| | | case Command.ReadInstructionPanelKey: |
| | | //case Command.ReadSensorTargetRemark: |
| | | //case Command.SetHornTargetState: |
| | | this.sendFlag += string.Format("{0},{1}", target.AddData[0], target.AddData[1]); |
| | | break; |
| | | //case Command.AssignedAddress: |
| | | //case Command.UpdataCurtainModelRunTime: |
| | | //case Command.ReadCurtainStatus: |
| | |
| | | { |
| | | try |
| | | { |
| | | var sendJob = new JObject { { "vendor_code", "HDL" }, { "command", "search" } }; |
| | | var sendJob = new JObject {{ "command", "search" } }; |
| | | var SearchGateway = JsonConvert.SerializeObject(sendJob); |
| | | var SearchGatewayPayload = Encoding.ASCII.GetBytes(SearchGateway); |
| | | Packet = new Packet(SearchGatewayPayload, CommonPage.GetGatewayIP_EndPoint); |
| | | Packet = new Packet(SearchGatewayPayload, new System.Net.IPEndPoint(System.Net.IPAddress.Parse("224.0.168.188"), 6688)); |
| | | System.Threading.Thread thread = new System.Threading.Thread(new System.Threading.ParameterizedThreadStart(managerSendCount)); |
| | | thread.IsBackground = true; |
| | | thread.Start(Packet); |