File was renamed from HDL_ON/DriverLayer/Control_Udp_Bus.cs |
| | |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Text; |
| | | using HDL_ON.DAL.Net; |
| | | using HDL_ON.DriverLayer; |
| | | using HDL_ON.Entity; |
| | | using Newtonsoft.Json; |
| | | using Newtonsoft.Json.Linq; |
| | | using Shared.Net; |
| | | |
| | | namespace HDL_ON |
| | | namespace HDL_ON.DriverLayer |
| | | { |
| | | public class Control_Udp_Bus |
| | | public class Control_Udp |
| | | { |
| | | //public Control_Udp() |
| | | //{ |
| | | // MainPage.Log($"control bus udp 被创建,时间:{DateTime.Now}"); |
| | | //} |
| | | /// <summary> |
| | | /// 通讯端口 |
| | | /// </summary> |
| | | public int port = 0; |
| | | |
| | | /// <summary> |
| | | /// 控制失败次数 |
| | | /// </summary> |
| | |
| | | /// <summary> |
| | | /// 所有对一端口的控制都会放到这个集合里 |
| | | /// </summary> |
| | | List<Control_Udp_Bus> controlList = new List<Control_Udp_Bus>(50); |
| | | static List<Control_Udp> controlList = new List<Control_Udp>(50); |
| | | |
| | | public System.Net.IPEndPoint EndPoint |
| | | { |
| | |
| | | |
| | | /// <summary> |
| | | /// 发送数据,不需要等待回复 |
| | | /// ps:允许临时公开,仅供tv发送bus命令使用,后期需要更新到A协议数据格式控制 |
| | | /// </summary> |
| | | public void ControlBytesSend(Command command, byte subnetID, byte deviceID, byte[] gatewayBytes, int sendCount = 3) |
| | | { |
| | | var control = new Control_Udp_Bus(); |
| | | var control = new Control_Udp(); |
| | | control.Send(new Target() |
| | | { |
| | | IPEndPoint = EndPoint , |
| | |
| | | try |
| | | { |
| | | //账号没登录不回复 |
| | | if (MainPage.LoginUser == null || !MainPage.LoginUser.IsLogin) |
| | | if ( UserInfo.Current == null || ! UserInfo.Current.IsLogin) |
| | | { |
| | | return; |
| | | } |
| | | |
| | | Control.ins.ChangeCommunicationMode(CommunicationMode.tcp_local_server); |
| | | var sendStr = MainPage.LoginUser.accountString; |
| | | Control.Ins.OpenTcpServer(); |
| | | var sendStr = UserInfo.Current.AccountString; |
| | | if (usefullBytes.Length == 0) |
| | | { |
| | | SendRemark(sendStr); |
| | |
| | | /// </summary> |
| | | void SendRemark(string sendStr) |
| | | { |
| | | //if (System.Globalization.CultureInfo.InstalledUICulture.EnglishName.ToUpper().StartsWith("CZECH")) |
| | | // Encoding.GetEncoding(1250); |
| | | |
| | | byte[] sendBytes = new byte[20]; |
| | | byte[] b1 = Encoding.GetEncoding("gb2312").GetBytes(sendStr); |
| | | Array.Copy(b1, 0, sendBytes, 0, 20 < b1.Length ? 20 : b1.Length); |
| | | |
| | | var control = new Control_Udp_Bus(); |
| | | var control = new Control_Udp(); |
| | | control.Send(new Target() |
| | | { |
| | | IPEndPoint = EndPoint, |
| | |
| | | { |
| | | case FunctionType.Curtain: |
| | | byte curtainState = 0; |
| | | if (function.trait_on_off.value.ToString() == "on") |
| | | if (function.trait_on_off.curValue.ToString() == "on") |
| | | { |
| | | curtainState = 1; |
| | | } |
| | | else if (function.trait_on_off.value.ToString() == "off") |
| | | else if (function.trait_on_off.curValue.ToString() == "off") |
| | | { |
| | | curtainState = 2; |
| | | } |
| | |
| | | break; |
| | | case FunctionType.AC: |
| | | var aC = Newtonsoft.Json.JsonConvert.DeserializeObject<AC>(Newtonsoft.Json.JsonConvert.SerializeObject(function));//as AC; |
| | | ControlBytesSend(Command.InstructionPanelKey, aC.bus_Data.SubnetID, aC.bus_Data.DeviceID, new byte[] { 3, aC.trait_on_off.value.ToString() == "on" ? (byte)1 : (byte)0, aC.bus_Data.LoopID }); |
| | | ControlBytesSend(Command.InstructionPanelKey, aC.bus_Data.SubnetID, aC.bus_Data.DeviceID, new byte[] { 3, aC.trait_on_off.curValue.ToString() == "on" ? (byte)1 : (byte)0, aC.bus_Data.LoopID }); |
| | | ControlBytesSend(Command.InstructionPanelKey, aC.bus_Data.SubnetID, aC.bus_Data.DeviceID, new byte[] { 6, aC.curModeIndex, aC.bus_Data.LoopID }); |
| | | ControlBytesSend(Command.InstructionPanelKey, aC.bus_Data.SubnetID, aC.bus_Data.DeviceID, new byte[] { 5, aC.curFanIndex, aC.bus_Data.LoopID }); |
| | | byte modeKey = 4; |
| | |
| | | modeKey = 2; |
| | | break; |
| | | } |
| | | ControlBytesSend(Command.InstructionPanelKey, aC.bus_Data.SubnetID, aC.bus_Data.DeviceID, new byte[] { modeKey, Convert.ToByte(aC.trait_temp.value), aC.bus_Data.LoopID }); |
| | | ControlBytesSend(Command.InstructionPanelKey, aC.bus_Data.SubnetID, aC.bus_Data.DeviceID, new byte[] { modeKey, Convert.ToByte(aC.trait_temp.curValue), aC.bus_Data.LoopID }); |
| | | |
| | | break; |
| | | case FunctionType.Relay: |
| | | case FunctionType.Dimmer: |
| | | byte brightness = 0; |
| | | if (function.trait_on_off.value.ToString() == "on") |
| | | if (function.trait_on_off.curValue.ToString() == "on") |
| | | { |
| | | var brightnessTrait = function.function.Find((obj) => obj.name == "brightness"); |
| | | var brightnessTrait = function.function.Find((obj) => obj.key == "brightness"); |
| | | if (brightnessTrait != null) |
| | | { |
| | | brightness = Convert.ToByte(brightnessTrait.value); |
| | | brightness = Convert.ToByte(brightnessTrait.curValue); |
| | | } |
| | | } |
| | | ControlBytesSend(Command.SetSingleLight, function.bus_Data.SubnetID, function.bus_Data.DeviceID, |
| | |
| | | break; |
| | | case FunctionType.FloorHeating: |
| | | var fh = Newtonsoft.Json.JsonConvert.DeserializeObject<FloorHeating>(Newtonsoft.Json.JsonConvert.SerializeObject(function));//as AC; |
| | | var fhModeTempTrait = function.function.Find((obj) => obj.name == "mode"); |
| | | if (fhModeTempTrait.value_key.Count == 4) |
| | | var fhModeTempTrait = function.function.Find((obj) => obj.key == "mode"); |
| | | if (fhModeTempTrait.value.Count == 4) |
| | | { |
| | | byte b1 = function.trait_on_off.value.ToString() == "on" ? (byte)1 : (byte)0; |
| | | byte b1 = function.trait_on_off.curValue.ToString() == "on" ? (byte)1 : (byte)0; |
| | | if (fh.workMode > 0) |
| | | { |
| | | b1 += (byte)(16 + fh.workMode); |
| | |
| | | break; |
| | | case FunctionType.Socket: |
| | | //var s = function as SwitchSocket; |
| | | ControlBytesSend(Command.SetSingleLight, function.bus_Data.SubnetID, function.bus_Data.DeviceID, new byte[] { function.bus_Data.LoopID, function.trait_on_off.value.ToString() == "on" ? (byte)100 : (byte)0 }); |
| | | ControlBytesSend(Command.SetSingleLight, function.bus_Data.SubnetID, function.bus_Data.DeviceID, new byte[] { function.bus_Data.LoopID, function.trait_on_off.curValue.ToString() == "on" ? (byte)100 : (byte)0 }); |
| | | break; |
| | | } |
| | | } |
| | |
| | | case FunctionType.RGB: |
| | | MainPage.Log($"rgb level : {light.brightness}"); |
| | | byte b = 100;//开关操作依据on_off字段,实际开关值依据brightness,当on_off为打开,brightness不能为0 |
| | | if (light.trait_on_off.value.ToString() == "off") |
| | | if (light.trait_on_off.curValue.ToString() == "off") |
| | | { |
| | | b = 0; |
| | | } |
| | |
| | | break; |
| | | case FunctionType.Dimmer: |
| | | byte b1 = 100; |
| | | if (light.trait_on_off.value.ToString() == "off") |
| | | if (light.trait_on_off.curValue.ToString() == "off") |
| | | { |
| | | b1 = 0; |
| | | } |
| | |
| | | //DimmerPage.UpdataStates(light); |
| | | break; |
| | | case FunctionType.Relay: |
| | | ControlBytesSend(Command.SetSingleLight, subnetId, deviceId, new byte[] { function.bus_Data.LoopID, light.trait_on_off.value.ToString() == "on" ? (byte)100 : (byte)0, 0, 0 }); |
| | | ControlBytesSend(Command.SetSingleLight, subnetId, deviceId, new byte[] { function.bus_Data.LoopID, light.trait_on_off.curValue.ToString() == "on" ? (byte)100 : (byte)0, 0, 0 }); |
| | | //RelayPage.UpdataState(light); |
| | | break; |
| | | } |
| | |
| | | { |
| | | case FunctionType.Curtain: |
| | | byte b1 = 0; |
| | | if (curtain.trait_on_off.value.ToString() == "stop") |
| | | if (curtain.trait_on_off.curValue.ToString() == "stop") |
| | | { |
| | | b1 = 0; |
| | | } |
| | | else if (curtain.trait_on_off.value.ToString() == "on") |
| | | else if (curtain.trait_on_off.curValue.ToString() == "on") |
| | | { |
| | | b1 = 1; |
| | | } |
| | |
| | | case FunctionType.RollingShutter: |
| | | //if (commandDictionary.Count > 0) |
| | | //{ |
| | | if (curtain.trait_on_off.value.ToString() == "stop") |
| | | if (curtain.trait_on_off.curValue.ToString() == "stop") |
| | | { |
| | | ControlBytesSend(Command.SetCurtainModelStutas, subnetId, deviceId, new byte[] { curtain.bus_Data.LoopID, 0 }); |
| | | } |
| | |
| | | { |
| | | case FunctionType.AC: |
| | | var aC = function as AC; |
| | | ControlBytesSend(Command.SetACMode, subnetId, deviceId, new byte[] { aC.bus_Data.LoopID, (byte)aC.curTempType, 32, 32, 32, 32, 32, 0, aC.trait_on_off.value.ToString() == "on" ? (byte)1 : (byte)0, aC.curModeIndex, aC.curFanIndex, Convert.ToByte(aC.trait_temp.value), 0 }); |
| | | ControlBytesSend(Command.SetACMode, subnetId, deviceId, new byte[] { aC.bus_Data.LoopID, (byte)aC.curTempType, 32, 32, 32, 32, 32, 0, aC.trait_on_off.curValue.ToString() == "on" ? (byte)1 : (byte)0, aC.curModeIndex, aC.curFanIndex, Convert.ToByte(aC.trait_temp.curValue), 0 }); |
| | | //ControlBytesSend(Command.InstructionPanelKey, aC.bus_Data.SubnetID, aC.bus_Data.DeviceID, new byte[] { 3, aC.on_off == "on" ? (byte)1 : (byte)0, aC.bus_Data.LoopID }); |
| | | foreach (var dic in commandDictionary) |
| | | { |
| | | switch (dic.Key) |
| | | { |
| | | case "on_off": |
| | | ControlBytesSend(Command.InstructionPanelKey, aC.bus_Data.SubnetID, aC.bus_Data.DeviceID, new byte[] { 3, aC.trait_on_off.value.ToString() == "on" ? (byte)1 : (byte)0, aC.bus_Data.LoopID }); |
| | | ControlBytesSend(Command.InstructionPanelKey, aC.bus_Data.SubnetID, aC.bus_Data.DeviceID, new byte[] { 3, aC.trait_on_off.curValue.ToString() == "on" ? (byte)1 : (byte)0, aC.bus_Data.LoopID }); |
| | | break; |
| | | case "mode": |
| | | ControlBytesSend(Command.InstructionPanelKey, aC.bus_Data.SubnetID, aC.bus_Data.DeviceID, new byte[] { 6, aC.curModeIndex, aC.bus_Data.LoopID }); |
| | |
| | | modeKey = 2; |
| | | break; |
| | | } |
| | | ControlBytesSend(Command.InstructionPanelKey, aC.bus_Data.SubnetID, aC.bus_Data.DeviceID, new byte[] { modeKey, Convert.ToByte(aC.trait_temp.value), aC.bus_Data.LoopID }); |
| | | ControlBytesSend(Command.InstructionPanelKey, aC.bus_Data.SubnetID, aC.bus_Data.DeviceID, new byte[] { modeKey, Convert.ToByte(aC.trait_temp.curValue), aC.bus_Data.LoopID }); |
| | | break; |
| | | default: |
| | | MainPage.Log($"功能未支持 : {dic.Key}"); |
| | |
| | | var fh = function as FloorHeating; |
| | | if (fh.modeTemp.Count == 4) |
| | | { |
| | | byte b1 = fh.trait_on_off.value.ToString() == "on" ? (byte)1 : (byte)0; |
| | | byte b1 = fh.trait_on_off.curValue.ToString() == "on" ? (byte)1 : (byte)0; |
| | | if (fh.workMode > 0) |
| | | { |
| | | b1 += (byte)(16 + fh.workMode); |
| | |
| | | var dicTempString = ""; |
| | | commandDictionary.TryGetValue("temp", out dicTempString); |
| | | var dicTemp = Convert.ToByte(dicTempString); |
| | | switch (fh.trait_mode.value) |
| | | switch (fh.trait_mode.curValue) |
| | | { |
| | | case "day": |
| | | fh.modeTemp["day"] = dicTemp; |
| | |
| | | { |
| | | case FunctionType.Fan: |
| | | var fan = function as Fan; |
| | | if (fan.trait_on_off.value.ToString() == "on") |
| | | if (fan.trait_on_off.curValue.ToString() == "on") |
| | | { |
| | | ControlBytesSend(Command.SetSingleLight, subnetId, deviceId, new byte[] { fan.bus_Data.LoopID, (byte)fan.openLevel }); |
| | | } |
| | |
| | | { |
| | | case FunctionType.Socket: |
| | | var s = function as SwitchSocket; |
| | | ControlBytesSend(Command.SetSingleLight, subnetId, deviceId, new byte[] { s.bus_Data.LoopID, s.trait_on_off.value.ToString() == "on" ? (byte)100 : (byte)0 }); |
| | | ControlBytesSend(Command.SetSingleLight, subnetId, deviceId, new byte[] { s.bus_Data.LoopID, s.trait_on_off.curValue.ToString() == "on" ? (byte)100 : (byte)0 }); |
| | | break; |
| | | } |
| | | break; |
| | |
| | | } |
| | | |
| | | } |
| | | //System.MainPage.WriteLog ("++++++++"+controlList.Count.ToString ()); |
| | | } |
| | | controlList.Add(this); |
| | | } |
| | |
| | | allDone.WaitOne(); |
| | | } |
| | | |
| | | |
| | | /// <summary> |
| | | /// 让当前线程继续执行 |
| | | /// </summary> |
| | |
| | | Packet.HaveSendCount = 4; |
| | | } |
| | | |
| | | |
| | | //数据重发处理 |
| | | //数据发送处理 |
| | | void managerSendCount(object o) |
| | | { |
| | | add(); |
| | |
| | | new System.Threading.Thread(() => |
| | | { |
| | | System.Threading.Thread.Sleep(1000); |
| | | UdpSocket._BusSocket.Start(); |
| | | UdpSocket._BusSocket.Start(6000); |
| | | controlLostCount = 0; |
| | | }) |
| | | { IsBackground = true }.Start(); |
| | |
| | | /// 当前数据包 |
| | | /// </summary> |
| | | Packet Packet; |
| | | |
| | | private void ini(Target target) |
| | | /// <summary> |
| | | /// 记录发送数据包 |
| | | /// </summary> |
| | | /// <param name="target"></param> |
| | | private void signPacket(Target target) |
| | | { |
| | | this.SendFlag = string.Format("{0},{1},{2},", target.SubnetID, target.DeviceID, (int)target.Command + 1); |
| | | |
| | |
| | | case Command.ReadLightAllLoopBrightness: |
| | | this.SendFlag += ""; |
| | | break; |
| | | //case Command.YIPanelDeviceInof: |
| | | // for (int i = 0; i < 4; i++) |
| | | // { |
| | | // this.sendFlag += string.Format("{0}", target.AddData[i]); |
| | | // } |
| | | // break; |
| | | //case Command.ReadDoorLockSceneObj: |
| | | // this.SendFlag += string.Format("{0},{1},{2},{3},{4}", target.AddData[0], target.AddData[1], target.AddData[2], target.AddData[3], target.AddData[4]); |
| | | // break; |
| | | //case Command.ReadDoorLockClock: |
| | | //case Command.CreatConnection: |
| | | // this.SendFlag += string.Format("{0}", target.AddData[0]); |
| | | // break; |
| | | //case Command.ReadDoorLockUseRemark: |
| | | //case Command.ReadSensorPushMessage: |
| | | //case Command.SetSensorPushMessage: |
| | | //case Command.SetSensorScence: |
| | | //case Command.ReadAnalog: |
| | | // this.sendFlag += string.Format("{0},{1},{2}", target.AddData[0], target.AddData[1], target.AddData[2]); |
| | | // break; |
| | | //case Command.ReadSensorScence: |
| | | // this.sendFlag += string.Format("{0},{1},{2}", target.AddData[0], target.AddData[1], target.AddData[2]); |
| | | // break; |
| | | //case Command.SendRemoteInfoToServer: |
| | | // for (int i = 40; i < 48; i++) |
| | | // { |
| | | // this.sendFlag += string.Format("{0}", target.AddData[i]); |
| | | // } |
| | | // break; |
| | | //case Command.SetCommonSwitch: |
| | | //case Command.InfraredChannelControl: |
| | | //case Command.ReadFoolHeat: |
| | | //case Command.SetFoolHeat: |
| | | //case Command.Serverx_FH_CMD: |
| | | //case Command.SetArm: |
| | | //case Command.ReadArm: |
| | | //case Command.ReadSensorHistory: |
| | | //case Command.SetSensorAutomationTargetLevelEnable: |
| | | //case Command.ReadSensorAutomationLevelTargetEnable: |
| | | // this.SendFlag += string.Format("{0}", target.AddData[0]); |
| | | // break; |
| | | //case Command.ReadDeviceModul: |
| | | //case Command.ReadSecurityStatus: |
| | | //case Command.ReadHornTargetState: |
| | | 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.ReadAnalogValue: |
| | | //case Command.SetSensorPushValues: |
| | | //case Command.ReadSensorPushValues: |
| | | // this.SendFlag += string.Format("{0},{1}", target.AddData[0], target.AddData[1]); |
| | | // break; |
| | | ////case Command.ReadOnePortWirelessFROtherInfo: |
| | | //case Command.UpdataRemake: |
| | | //case Command.WriteManageWirelessNet: |
| | | //case Command.UpdataLightDimmingTheLargestLevel: |
| | | //case Command.UpdataLightDimmingMaximumOrMinimum: |
| | | //case Command.ReadGateWayModelInfo: |
| | | //case Command.ReadGatewayServerIP: |
| | | //case Command.SetGateWayModelInfo: |
| | | //case Command.SetGateWayModelInternetInfo: |
| | | //case Command.ReadDeviceMac: |
| | | //case Command.SetDeviceSubnetID: |
| | | //case Command.PositioningEquipment: |
| | | //case Command.PositioningPanel: |
| | | //case Command.CheckConfigSuccess: |
| | | //case Command.GotoConfigMode: |
| | | //case Command.ReadACPanel: |
| | | //case Command.SetACPanel: |
| | | //case Command.ReadTerrestriaHeatRemark: |
| | | //case Command.UpdateGatewayIp: |
| | | //case Command.ReadWirelessPanelMode: |
| | | //case Command.ReadDrycontactMode: |
| | | //case Command.ReadACFloorHeatingSettingEquipment: |
| | | //case Command.SetACFloorHeatingSettingEquipment: |
| | | //case Command.Read43FloorHeatingSettingEquipment: |
| | | //case Command.Set43FloorHeatingSettingEquipment: |
| | | //case Command.READ_AIR_ALL_Parameter: |
| | | //case Command.Set_AIR_ALL_Parameter: |
| | | //case Command.ReadFloorHeatProbe: |
| | | //case Command.ControlMusicModel: |
| | | //case Command.ReadButtonKeyEnable: |
| | | //case Command.UpdateEquipmentLoopRemake: |
| | | //case Command.SetGateway: |
| | | //case Command.ReadMusicPanelSetting: |
| | | //case Command.ReadMusicPanelEnable: |
| | | //case Command.SetMusicPanelEnable: |
| | | //case Command.SetMusicPanelSetting: |
| | | //case Command.ReadGatewayProgrammingMode: |
| | | //case Command.RED_HSFH_TOTAL: |
| | | //case Command.RED_HSFH_INFORMATION: |
| | | //case Command.RED_HSRM_TOTAL: |
| | | //case Command.RED_HSRM_INFORMATION: |
| | | //case Command.CLEAR_SYSTEM_HISTORY: |
| | | //case Command.SetSensorTargetRemark: |
| | | //case Command.ReadSensorAutomationEnableList: |
| | | //case Command.SetSensorAutomationEnableList: |
| | | //case Command.SetSensorAutomationListID: |
| | | //case Command.ReadSensorAutomationListID: |
| | | //case Command.SetSensorAutomationName: |
| | | //case Command.ReadSensorAutomationName: |
| | | //case Command.Set_Floor_Heat_State: |
| | | //case Command.Read_Floor_Heat_State: |
| | | //case Command.Read_Air_Condition_Set: |
| | | //case Command.UpdateHornLoopRemake: |
| | | //case Command.ReadHornLoopCount: |
| | | //case Command.ReadPanelTempType: |
| | | // this.SendFlag += ""; |
| | | // break; |
| | | //case Command.ControlMusicModel2: |
| | | // for (int i = 1; i < target.AddData.Length; i++) |
| | | // { |
| | | // if (target.AddData[i + 1] == 0x0D) |
| | | // { |
| | | // break; |
| | | // } |
| | | // this.sendFlag += string.Format("{0},", target.AddData[i]); |
| | | // } |
| | | // break; |
| | | //case Command.Remote3th: |
| | | // this.SendFlag = string.Format("{0},", (int)target.Command + 1); |
| | | // break; |
| | | case Command.ReadDeviceLoopInfo: |
| | | if (target.AddData[0] == 1)//特殊处理灯光类,DMX模块每一个回路不固定小类,根据具体设置来回复 |
| | | this.sendFlag += string.Format("{0},{1}", target.AddData[0], target.AddData[2]); |
| | | else |
| | | this.sendFlag += string.Format("{0},{1},{2}", target.AddData[0], target.AddData[1], target.AddData[2]); |
| | | break; |
| | | //case Command.SetDeviceLoopInfo: |
| | | //case Command.InfraredControl: |
| | | //case Command.SetSecurityByPass: |
| | | //case Command.SetSensorAutomationDateTimeCycle: |
| | | //case Command.ReadSensorAutomationDateTimeCycle: |
| | | // this.sendFlag += string.Format("{0},{1},{2}", target.AddData[0], target.AddData[1], target.AddData[2]); |
| | | // break; |
| | | //case Command.ReadWirelessPanelButtonKey: |
| | | //case Command.WriteWirelessPanelButtonKey: |
| | | //case Command.ReadDryContactStatus: |
| | | //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.AssignedAddress: |
| | | //case Command.UpdataCurtainModelRunTime: |
| | | //case Command.ReadCurtainStatus: |
| | | //case Command.ReadPanleTemp: |
| | | //case Command.FreshAirRead: |
| | | //case Command.FreshAirControl: |
| | | //case Command.Set_Air_State_New: |
| | | //case Command.ReadHornTargetEnable: |
| | | //case Command.SetHornTargetEnable: |
| | | //case Command.ReadHornLoopAlarm: |
| | | //case Command.SetHornPush: |
| | | //case Command.ReadHornPush: |
| | | //case Command.ReadHornHistory: |
| | | //case Command.ReadHornLoopsStatus: |
| | | // this.sendFlag += string.Format("{0}", target.AddData[0]); |
| | | // break; |
| | | //case Command.RemoteFirst: |
| | | // for (int i = 0; i < 28; i++) |
| | | // { |
| | | // this.sendFlag += string.Format("{0}", target.AddData[i]); |
| | | // } |
| | | // break; |
| | | //case Command.RemoteSecoud: |
| | | // for (int i = 0; i < 7; i++) |
| | | // { |
| | | // this.sendFlag += string.Format("{0}", target.AddData[i]); |
| | | // } |
| | | // break; |
| | | default: |
| | | //return; |
| | | break; |
| | | } |
| | | |
| | | System.Threading.Thread thread = new System.Threading.Thread(new System.Threading.ParameterizedThreadStart(managerSendCount)); |
| | | thread.IsBackground = true; |
| | | thread.Start(Packet); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 发送Bus数据,发送了不需要等待 |
| | | /// 发送数据 |
| | | /// </summary> |
| | | /// <param name="target">发送对象</param> |
| | | /// <param name="sendCount">重发次数</param> |
| | |
| | | Packet = new Packet(target.SendBytes, target.IPEndPoint); |
| | | Packet.HaveSendCount = 3 - sendCount; |
| | | |
| | | ini(target); |
| | | signPacket(target); |
| | | |
| | | System.Threading.Thread thread = new System.Threading.Thread(new System.Threading.ParameterizedThreadStart(managerSendCount)); |
| | | thread.IsBackground = true; |
| | | thread.Start(Packet); |
| | | |
| | | if (isWait) |
| | | { |
| | |
| | | /// <summary> |
| | | /// 读取网关IP |
| | | /// </summary> |
| | | public void ReadGatewayIP() |
| | | public void SearchLocalGateway() |
| | | { |
| | | try |
| | | { |
| | | var sendJob = new JObject { |
| | | {"type","device" },{"from_oid","020101" },{"to_oid",null },{"time_stamp","46A3B99F" },{"command","search"} |
| | | }; |
| | | var SearchGateway = JsonConvert.SerializeObject(sendJob); |
| | | var SearchGatewayPayload = Encoding.ASCII.GetBytes(SearchGateway); |
| | | Packet = new Packet(SearchGatewayPayload, new System.Net.IPEndPoint(System.Net.IPAddress.Parse("239.0.168.188"), 8585)); |
| | | var sendJob = new JObject { { "id", Control.Ins.msg_id.ToString() }, { "time_stamp", (DateTime.Now.Ticks / 100000).ToString() } }; |
| | | var bodyString = JsonConvert.SerializeObject(sendJob); |
| | | |
| | | var sendBytes = Control.Ins.ConvertSendBodyData(CommunicationTopic.SearchLoaclGateway, bodyString); |
| | | //组播发送 |
| | | Packet = new Packet(sendBytes, new System.Net.IPEndPoint(System.Net.IPAddress.Parse("239.0.168.188"), 8585)); |
| | | Packet.HaveSendCount = 4;//ps:没有重发,后期有时间可以增加重发判断 |
| | | System.Threading.Thread thread = new System.Threading.Thread(new System.Threading.ParameterizedThreadStart(managerSendCount)); |
| | | thread.IsBackground = true; |
| | | thread.Start(Packet); |
| | | |
| | | wait(); |
| | | //wait();不需要等待 |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | MainPage.Log($"Send bus data error {ex.Message}"); |
| | | } |
| | | } |
| | | /// <summary> |
| | | /// 本地udp控制A协议网关 |
| | | /// </summary> |
| | | public void SendLocalHdlLinkData(byte[] sendBytes) |
| | | { |
| | | Packet = new Packet(sendBytes, new System.Net.IPEndPoint(System.Net.IPAddress.Parse(Control.Ins.reportIp), 8585)); |
| | | Packet.HaveSendCount = 4;//ps:没有重发,后期有时间可以增加重发判断 |
| | | System.Threading.Thread thread = new System.Threading.Thread(new System.Threading.ParameterizedThreadStart(managerSendCount)); |
| | | thread.IsBackground = true; |
| | | thread.Start(Packet); |
| | | //wait();不需要等待 |
| | | MainPage.Log($"发送Hdl-Link数据,IP:{Control.Ins.reportIp}:8585"); |
| | | } |
| | | |
| | | |
| | | } |