From e322d91c7325019710bfdb046c5fea673031455a Mon Sep 17 00:00:00 2001
From: wxr <464027401@qq.com>
Date: 星期三, 29 七月 2020 11:53:01 +0800
Subject: [PATCH] 20200729
---
HDL_ON/DriverLayer/Control_Bus.cs | 976 ++++++++++++++++++++++++++++++++------------------------
1 files changed, 557 insertions(+), 419 deletions(-)
diff --git a/HDL_ON/DriverLayer/Control_Bus.cs b/HDL_ON/DriverLayer/Control_Bus.cs
index e91a877..0579d89 100644
--- a/HDL_ON/DriverLayer/Control_Bus.cs
+++ b/HDL_ON/DriverLayer/Control_Bus.cs
@@ -1,14 +1,24 @@
锘縰sing 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
{
public partial class Control
{
public DateTime LatestDateTime = DateTime.Now;
+ /// <summary>
+ /// 鎺у埗澶辫触娆℃暟
+ /// </summary>
+ public static int controlLostCount = 0;
/// <summary>
/// 鎵�鏈夊井淇″涓�绔彛鐨勬帶鍒堕兘浼氭斁鍒拌繖涓泦鍚堥噷
@@ -16,28 +26,9 @@
private static List<Control> controlList = new List<Control>(50);
/// <summary>
- /// 鍙戦�佹暟鎹紝绛夊緟鏈夊弽棣�
- /// </summary>
- /// <returns>The bytes send has return.</returns>
- static byte[] ControlBytesSendHasReturn(Command command, byte subnetID, byte deviceID, byte[] gatewayBytes, int sendCount = 3)
- {
- Control control = new Control();
- control.Send(new Target()
- {
- IPEndPoint = CommonPage.EndPoint,
- Command = command,
- SubnetID = subnetID,
- DeviceID = deviceID,
- AddData = gatewayBytes,
- }, sendCount, true);
-
- return control.UsefulBytes;
- }
-
- /// <summary>
/// 鍙戦�佹暟鎹紝涓嶉渶瑕佺瓑寰呭洖澶�
/// </summary>
- static void ControlBytesSend(Command command, byte subnetID, byte deviceID, byte[] gatewayBytes, int sendCount = 3, System.Net.IPEndPoint ipEndpoint = null)
+ public static void ControlBytesSend(Command command, byte subnetID, byte deviceID, byte[] gatewayBytes, int sendCount = 3, System.Net.IPEndPoint ipEndpoint = null)
{
Control control = new Control();
control.Send(new Target()
@@ -49,9 +40,90 @@
AddData = gatewayBytes,
}, sendCount, false);
MainPage.Log(command.ToString() + "::" + CommonPage.EndPoint.ToString());
-
}
+ public static byte[] ReadGatewayIPAddress()
+ {
+ Control control = new Control();
+ control.ReadGatewayIP();
+ return control.UsefulBytes;
+ }
+
+ /// <summary>
+ /// 000E 鎼滅储鍥炲
+ /// </summary>
+ /// <param name="usefullBytes"></param>
+ static void ReceiveReadRemark(byte[] usefullBytes)
+ {
+ try
+ {
+ //璐﹀彿娌$櫥褰曚笉鍥炲
+ if (MainPage.LoginUser == null || !MainPage.LoginUser.IsLogin)
+ {
+ return;
+ }
+
+
+ if (!CommonPage.isHttpListenerStart)
+ {
+ //鏁版嵁鎺ユ敹绔彛娌℃墦寮�锛屼笉鍥炲
+ CommonPage.InitHttpListener();
+ }
+ var sendStr = MainPage.LoginUser.accountString;
+ if (usefullBytes.Length == 0)
+ {
+ SenRemark(sendStr);
+ }
+ else
+ {
+ bool isExit = false;
+
+ for (int i = 0, len = usefullBytes.Length; i < len; i++)
+ {
+ if (i % 2 == 0)
+ {
+ if ((usefullBytes[i] & 0xFF) == 252
+ && (usefullBytes[i + 1] & 0xFF) == 252)
+ {
+ isExit = true;
+ break;
+ }
+ }
+ }
+
+ if (!isExit)
+ {
+ //涓嶅瓨鍦紝浠h〃娌℃敹鍒版湰鏈虹殑鍙戦�侊紝缁х画鍥炲
+ SenRemark(sendStr);
+ }
+
+ }
+
+ }
+ catch { }
+ }
+
+ /// <summary>
+ /// 000F鍥炲澶囨敞
+ /// </summary>
+ /// <param name="sendStr"></param>
+ static void SenRemark(string sendStr)
+ {
+ byte[] sendBytes = new byte[20];
+ byte[] b1 = CommonPage.MyEncodingGB2312.GetBytes(sendStr);
+ //Remote_GroupName = CommonPage.MyEncodingGB2312.GetString (b1);
+ Array.Copy(b1, 0, sendBytes, 0, 20 < b1.Length ? 20 : b1.Length);
+
+ var control = new Control();
+ control.Send(new Target()
+ {
+ IPEndPoint = CommonPage.EndPoint,
+ Command = Command.ReadRemarkACK,
+ SubnetID = 0xFF,
+ DeviceID = 0xFF,
+ AddData = sendBytes,
+ }, 0, false); //璁剧疆褰撳墠鍙戦�佹寚浠ゆ柟寮忎负锛氫换浣曟儏鍐典笅鏈湴鍙戦�併�佷笉闄愬埗銆佷笉鍔犲瘑鏄庢枃鍙戦��
+ }
/// <summary>
/// 澶勭悊鎺ユ敹鍥炴潵鐨勬暟鎹�
/// </summary>
@@ -62,163 +134,195 @@
/// <param name="remoteEndPoint">婧愮綉缁滃鎺ュ瓧</param>
public static void ManagerReceive(byte subnetID, byte deviceID, Command command, byte targetSubnetID, byte targetDeviceID, byte[] usefulBytes, System.Net.EndPoint remoteEndPoint)
{
+ if (((System.Net.IPEndPoint)remoteEndPoint).Port == 6688)
+ {
+
+ for (int i = 0; i < controlList.Count; i++)
+ {
+ try
+ {
+ var control = controlList[i];
+ control.LatestDateTime = DateTime.Now;
+ control.UsefulBytes = usefulBytes;//
+ control.run();
+ }
+ catch (Exception ex)
+ {
+ Console.WriteLine($"control error : {ex.Message}");
+ }
+ }
+ }
+
try
{
string receiveFlag = string.Format("{0},{1},{2},", subnetID, deviceID, (int)command);
- switch ((Command)command)
+ switch (command)
{
- case Command.YIPanelDeviceInofACK:
- for (int i = 0; i < 4; i++)
- {
- receiveFlag += string.Format("{0}", usefulBytes[i]);
- }
- break;
- case Command.ReadDoorLockSceneObjACK:
- receiveFlag += string.Format("{0},{1},{2},{3},{4}", usefulBytes[0], usefulBytes[1], usefulBytes[2], usefulBytes[3], usefulBytes[4]);
- break;
- case Command.ReadDoorLockClockACK:
- case Command.CreatConnectionACK:
+ case Command.SetSingleLightACK:
receiveFlag += string.Format("{0}", usefulBytes[0]);
break;
- //闂ㄩ攣,BroadcastDoorLockStateAndAlarm
- //骞挎挱闂ㄩ攣鐘舵�佸拰鎶ヨ,
- case Command.BroadcastDoorLockStateAndAlarm://骞挎挱闂ㄩ攣鐘舵�佸拰鎶ヨ
- receiveFlag += string.Format("{0},{1}", usefulBytes[0], usefulBytes[1]);
- break;
- case Command.ReadDoorLockUseRemarkACK:
- case Command.ReadSensorPushMessageACK:
- case Command.SetSensorPushMessageACK:
- case Command.ReadSensorScenceACK:
- case Command.ReadAnalogACK:
+ case Command.SetLogicLoopColorACK:
receiveFlag += string.Format("{0},{1},{2}", usefulBytes[0], usefulBytes[1], usefulBytes[2]);
break;
- case Command.SetSensorScenceACK:
- receiveFlag += string.Format("{0},{1},{2}", usefulBytes[1], usefulBytes[2], usefulBytes[3]);
- break;
- case Command.SendRemoteInfoToServerACK:
- for (int i = 1; i < 9; i++)
- {
- receiveFlag += string.Format("{0}", usefulBytes[i]);
- }
- break;
- case Command.BroadcastDryContactStatus://鐢卞共鎺ョ偣骞挎挱鍑烘潵鐨勬暟鎹紝绋嬪簭涓嶅仛鍥炲銆�
- receiveFlag += string.Format("{0}", usefulBytes[0]);
- break;
- case Command.SetSceneACK:
- receiveFlag += string.Format("{0},{1}", usefulBytes[0], usefulBytes[1]);
- break;
- case Command.SetSeriesACK:
- receiveFlag += string.Format("{0},{1}", usefulBytes[0], usefulBytes[1]);
- break;
- case Command.UpdataCurtainModelStutasACK:
- case Command.SetHotelCurtainACK:
- case Command.DownloadInfraredACK:
- case Command.SetSensorPushValuesACK:
- case Command.ReadSensorPushValuesACK:
- receiveFlag += string.Format("{0},{1}", usefulBytes[0], usefulBytes[1]);
- break;
- case Command.ReadLightEquipmentAllLoopBrightnessACK:
- break;
- case Command.SetSingleLightACK:
- receiveFlag += string.Format("{0},{1}", usefulBytes[0], usefulBytes[2]);
- break;
- case Command.UpLoadInfraredACK:
- receiveFlag += string.Format("{0},{1}", usefulBytes[0], usefulBytes[1]);
- break;
- case Command.SetCommonACK:
- case Command.InfraredChannelControlACK:
+ case Command.ReadLogicLoopColorACK:
case Command.ReadACModeACK:
case Command.SetACModeACK:
- case Command.Serverx_FH_CMD_ACK:
- case Command.ReadSensorHistoryACK:
- case Command.SetSensorAutomationTargetLevelEnableACK:
- case Command.ReadSensorAutomationLevelTargetEnableACK:
+ case Command.ReadFloorHeatACK:
+ case Command.SetFloorHeatACK:
receiveFlag += string.Format("{0}", usefulBytes[0]);
break;
- case Command.ReadFoolHeatACK:
- case Command.SetFoolHeatACK:
- case Command.SetArmACK:
- case Command.ReadArmACK:
- receiveFlag += string.Format("{0}", usefulBytes[0]);
+ case Command.ReadRemark:
+ //buspro 璇诲娉ㄥ洖澶�
+ Console.WriteLine("buspro 璇诲娉ㄥ洖澶�");
+ ReceiveReadRemark(usefulBytes);
break;
- case Command.ReadDeviceModulACK:
- case Command.ReadGatewayACK:
- case Command.ReadSecurityStatusACK:
- receiveFlag = string.Format("{0},{1}", usefulBytes[0], usefulBytes[1]);
- break;
- case Command.UpdataLightDimmingTheLargestLevelACK:
- case Command.UpdataLightDimmingMaximumOrMinimumACK:
- case Command.WriteManageWirelessNetACK:
- case Command.ReadGateWayModelInfoACK:
- case Command.ReadGatewayServerIPACK:
- case Command.SetGateWayModelInfoACK:
- case Command.SetGateWayModelInternetInfoACK:
- case Command.ReadDeviceMacACK:
- case Command.SetDeviceSubnetIDACK:
- case Command.PositioningEquipmentACK:
- case Command.PositioningPanelACK:
- case Command.GotoConfigModeACK:
- case Command.CheckConfigSuccessACK:
- case Command.SetACPanelACK:
- case Command.ReadACPanelACK:
- case Command.ReadTerrestriaHeatRemarkACK:
- case Command.UpdateGatewayIpACK:
- case Command.ReadWirelessPanelModeACK:
- case Command.ReadDrycontactModeACK:
- case Command.ReadACFloorHeatingSettingEquipmentACK:
- case Command.SetACFloorHeatingSettingEquipmentACK:
- case Command.Read43FloorHeatingSettingEquipmentACK:
- case Command.Set43FloorHeatingSettingEquipmentACK:
- case Command.READ_AIR_ALL_Parameter_ack:
- case Command.Set_AIR_ALL_Parameter_ack:
- case Command.ReadFloorHeatProbeACK:
- case Command.ReadButtonKeyEnableACK:
- case Command.UpdateLightDimmingLoopRemakeACK:
- case Command.ReadMusicPanelSettingACK:
- case Command.ReadMusicPanelEnableACK:
- case Command.SetMusicPanelEnableACK:
- case Command.SetMusicPanelSettingACK:
- case Command.SetGatewayACK:
- case Command.ReadGatewayProgrammingModeACK:
- case Command.RED_HSFH_TOTAL_ACK:
- case Command.RED_HSFH_INFORMATION_ACK:
- case Command.RED_HSRM_TOTAL_ACK:
- case Command.RED_HSRM_INFORMATION_ACK:
- case Command.CLEAR_SYSTEM_HISTORY_ACK:
- case Command.SetSensorTargetRemarkACK:
- case Command.ReadSensorAutomationEnableListACK:
- case Command.SetSensorAutomationEnableListACK:
- case Command.SetSensorAutomationListIDACK:
- case Command.ReadSensorAutomationListIDACK:
- case Command.ReadSensorAutomationNameACK:
- case Command.SetSensorAutomationNameACK:
- case Command.Set_Floor_Heat_State_ack:
- case Command.Read_Floor_Heat_State_ack:
- case Command.Read_Air_Condition_Set_ack:
- case Command.HornAlarmBroadcast:
- case Command.ReadHornLoopCountACK:
- case Command.UpdateHornLoopRemakeACK:
- case Command.ReadPanelTempTypeACK:
- receiveFlag += "";
- break;
- case Command.ControlMusicModel1ACK:
- receiveFlag += "";
- break;
- case Command.ControlMusicModel2ACK:
- for (int i = 1; i < usefulBytes.Length; i++)
- {
- if (usefulBytes[i + 1] == 44)
- {
- break;
- }
- receiveFlag += string.Format("{0},", usefulBytes[i]);
- }
- break;
+ //case Command.YIPanelDeviceInofACK:
+ // for (int i = 0; i < 4; i++)
+ // {
+ // receiveFlag += string.Format("{0}", usefulBytes[i]);
+ // }
+ // break;
+ //case Command.ReadDoorLockSceneObjACK:
+ // receiveFlag += string.Format("{0},{1},{2},{3},{4}", usefulBytes[0], usefulBytes[1], usefulBytes[2], usefulBytes[3], usefulBytes[4]);
+ // break;
+ //case Command.ReadDoorLockClockACK:
+ //case Command.CreatConnectionACK:
+ // receiveFlag += string.Format("{0}", usefulBytes[0]);
+ // break;
+ ////闂ㄩ攣,BroadcastDoorLockStateAndAlarm
+ ////骞挎挱闂ㄩ攣鐘舵�佸拰鎶ヨ,
+ //case Command.BroadcastDoorLockStateAndAlarm://骞挎挱闂ㄩ攣鐘舵�佸拰鎶ヨ
+ // receiveFlag += string.Format("{0},{1}", usefulBytes[0], usefulBytes[1]);
+ // break;
+ //case Command.ReadDoorLockUseRemarkACK:
+ //case Command.ReadSensorPushMessageACK:
+ //case Command.SetSensorPushMessageACK:
+ //case Command.ReadSensorScenceACK:
+ //case Command.ReadAnalogACK:
+ // receiveFlag += string.Format("{0},{1},{2}", usefulBytes[0], usefulBytes[1], usefulBytes[2]);
+ // break;
+ //case Command.SetSensorScenceACK:
+ // receiveFlag += string.Format("{0},{1},{2}", usefulBytes[1], usefulBytes[2], usefulBytes[3]);
+ // break;
+ //case Command.SendRemoteInfoToServerACK:
+ // for (int i = 1; i < 9; i++)
+ // {
+ // receiveFlag += string.Format("{0}", usefulBytes[i]);
+ // }
+ // break;
+ //case Command.BroadcastDryContactStatus://鐢卞共鎺ョ偣骞挎挱鍑烘潵鐨勬暟鎹紝绋嬪簭涓嶅仛鍥炲銆�
+ // receiveFlag += string.Format("{0}", usefulBytes[0]);
+ // break;
+ //case Command.SetSceneACK:
+ // receiveFlag += string.Format("{0},{1}", usefulBytes[0], usefulBytes[1]);
+ // break;
+ //case Command.SetSeriesACK:
+ // receiveFlag += string.Format("{0},{1}", usefulBytes[0], usefulBytes[1]);
+ // break;
+ //case Command.SetCurtainModelStutasACK:
+ //case Command.SetHotelCurtainACK:
+ //case Command.DownloadInfraredACK:
+ //case Command.SetSensorPushValuesACK:
+ //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;
+ //case Command.SetCommonACK:
+ //case Command.InfraredChannelControlACK:
+ //case Command.Serverx_FH_CMD_ACK:
+ //case Command.ReadSensorHistoryACK:
+ //case Command.SetSensorAutomationTargetLevelEnableACK:
+ //case Command.ReadSensorAutomationLevelTargetEnableACK:
+ // receiveFlag += string.Format("{0}", usefulBytes[0]);
+ // break;
+ //case Command.ReadFoolHeatACK:
+ //case Command.SetFoolHeatACK:
+ //case Command.SetArmACK:
+ //case Command.ReadArmACK:
+ // 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.UpdataLightDimmingTheLargestLevelACK:
+ //case Command.UpdataLightDimmingMaximumOrMinimumACK:
+ //case Command.WriteManageWirelessNetACK:
+ //case Command.ReadGateWayModelInfoACK:
+ //case Command.ReadGatewayServerIPACK:
+ //case Command.SetGateWayModelInfoACK:
+ //case Command.SetGateWayModelInternetInfoACK:
+ //case Command.ReadDeviceMacACK:
+ //case Command.SetDeviceSubnetIDACK:
+ //case Command.PositioningEquipmentACK:
+ //case Command.PositioningPanelACK:
+ //case Command.GotoConfigModeACK:
+ //case Command.CheckConfigSuccessACK:
+ //case Command.SetACPanelACK:
+ //case Command.ReadACPanelACK:
+ //case Command.ReadTerrestriaHeatRemarkACK:
+ //case Command.UpdateGatewayIpACK:
+ //case Command.ReadWirelessPanelModeACK:
+ //case Command.ReadDrycontactModeACK:
+ //case Command.ReadACFloorHeatingSettingEquipmentACK:
+ //case Command.SetACFloorHeatingSettingEquipmentACK:
+ //case Command.Read43FloorHeatingSettingEquipmentACK:
+ //case Command.Set43FloorHeatingSettingEquipmentACK:
+ //case Command.READ_AIR_ALL_Parameter_ack:
+ //case Command.Set_AIR_ALL_Parameter_ack:
+ //case Command.ReadFloorHeatProbeACK:
+ //case Command.ReadButtonKeyEnableACK:
+ //case Command.UpdateLightDimmingLoopRemakeACK:
+ //case Command.ReadMusicPanelSettingACK:
+ //case Command.ReadMusicPanelEnableACK:
+ //case Command.SetMusicPanelEnableACK:
+ //case Command.SetMusicPanelSettingACK:
+ //case Command.SetGatewayACK:
+ //case Command.ReadGatewayProgrammingModeACK:
+ //case Command.RED_HSFH_TOTAL_ACK:
+ //case Command.RED_HSFH_INFORMATION_ACK:
+ //case Command.RED_HSRM_TOTAL_ACK:
+ //case Command.RED_HSRM_INFORMATION_ACK:
+ //case Command.CLEAR_SYSTEM_HISTORY_ACK:
+ //case Command.SetSensorTargetRemarkACK:
+ //case Command.ReadSensorAutomationEnableListACK:
+ //case Command.SetSensorAutomationEnableListACK:
+ //case Command.SetSensorAutomationListIDACK:
+ //case Command.ReadSensorAutomationListIDACK:
+ //case Command.ReadSensorAutomationNameACK:
+ //case Command.SetSensorAutomationNameACK:
+ //case Command.Set_Floor_Heat_State_ack:
+ //case Command.Read_Floor_Heat_State_ack:
+ //case Command.Read_Air_Condition_Set_ack:
+ //case Command.HornAlarmBroadcast:
+ //case Command.ReadHornLoopCountACK:
+ //case Command.UpdateHornLoopRemakeACK:
+ //case Command.ReadPanelTempTypeACK:
+ // receiveFlag += "";
+ // break;
+ //case Command.ControlMusicModel1ACK:
+ // receiveFlag += "";
+ // break;
+ //case Command.ControlMusicModel2ACK:
+ // for (int i = 1; i < usefulBytes.Length; i++)
+ // {
+ // if (usefulBytes[i + 1] == 44)
+ // {
+ // break;
+ // }
+ // receiveFlag += string.Format("{0},", usefulBytes[i]);
+ // }
+ // break;
- case Command.Remote3thACK:
- receiveFlag = string.Format("{0},", (int)command);
- break;
+ //case Command.Remote3thACK:
+ // receiveFlag = string.Format("{0},", (int)command);
+ // break;
case Command.ReadDeviceLoopInfoACK:
if (usefulBytes[0] == 1)
{
@@ -227,56 +331,54 @@
else
receiveFlag += string.Format("{0},{1},{2}", usefulBytes[0], usefulBytes[1], usefulBytes[2]);
break;
- case Command.SetDeviceLoopInfoACK:
- case Command.InfraredControlACK:
- case Command.SetLogicLoopColorACK:
- case Command.SetSecurityByPassACK:
- case Command.SetSensorAutomationDateTimeCycleACK:
- case Command.ReadSensorAutomationDateTimeCycleACK:
- receiveFlag += string.Format("{0},{1},{2}", usefulBytes[0], usefulBytes[1], usefulBytes[2]);
- break;
- case Command.UpdataRemakeACK:
- break;
- 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.AssignedAddressACK:
- case Command.UpdataCurtainModelRunTimeACK:
- case Command.ReadCurtainStutasACK:
- case Command.ReadLogicLoopColorACK:
- case Command.ReadPanleTempACK:
- case Command.FreshAirReadACK:
- case Command.FreshAirControlACK:
- case Command.Set_Air_State_New_ack:
- case Command.ReadHornHistoryACK:
- case Command.ReadHornLoopsStatusACK:
- case Command.ReadHornPushACK:
- case Command.SetHornPushACK:
- case Command.ReadHornLoopAlarmACK:
- case Command.SetHornTargetEnableACK:
- case Command.ReadHornTargetEnableACK:
- receiveFlag += string.Format("{0}", usefulBytes[0]);
- break;
- case Command.RemoteFirstACK:
- for (int i = 1; i < 1 + 28; i++)
- {
- receiveFlag += string.Format("{0}", usefulBytes[i]);
- }
- break;
- case Command.RemoteSecoudACK:
- for (int i = 0; i < 7; i++)
- {
- receiveFlag += string.Format("{0}", usefulBytes[i]);
- }
- break;
+ //case Command.SetDeviceLoopInfoACK:
+ //case Command.InfraredControlACK:
+ //case Command.SetSecurityByPassACK:
+ //case Command.SetSensorAutomationDateTimeCycleACK:
+ //case Command.ReadSensorAutomationDateTimeCycleACK:
+ // receiveFlag += string.Format("{0},{1},{2}", usefulBytes[0], usefulBytes[1], usefulBytes[2]);
+ // break;
+ //case Command.UpdataRemakeACK:
+ // break;
+ //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.AssignedAddressACK:
+ //case Command.UpdataCurtainModelRunTimeACK:
+ //case Command.ReadCurtainStutasACK:
+ //case Command.ReadPanleTempACK:
+ //case Command.FreshAirReadACK:
+ //case Command.FreshAirControlACK:
+ //case Command.Set_Air_State_New_ack:
+ //case Command.ReadHornHistoryACK:
+ //case Command.ReadHornLoopsStatusACK:
+ //case Command.ReadHornPushACK:
+ //case Command.SetHornPushACK:
+ //case Command.ReadHornLoopAlarmACK:
+ //case Command.SetHornTargetEnableACK:
+ //case Command.ReadHornTargetEnableACK:
+ // receiveFlag += string.Format("{0}", usefulBytes[0]);
+ // break;
+ //case Command.RemoteFirstACK:
+ // for (int i = 1; i < 1 + 28; i++)
+ // {
+ // receiveFlag += string.Format("{0}", usefulBytes[i]);
+ // }
+ // break;
+ //case Command.RemoteSecoudACK:
+ // for (int i = 0; i < 7; i++)
+ // {
+ // receiveFlag += string.Format("{0}", usefulBytes[i]);
+ // }
+ // break;
default:
break;
}
@@ -294,9 +396,9 @@
control.run();
}
}
- catch
+ catch (Exception ex)
{
-
+ Console.WriteLine($"control error : {ex.Message}");
}
}
}
@@ -401,34 +503,35 @@
add();
if (CommonPage.IsRemote)
{
- MqttCommon.MqttRemoteSend(Packet.Bytes);
- Packet.FlagDateTime = DateTime.Now;
- Packet.HaveSendCount--;
- //杩欓噷鏄噸鍙戜袱娆�
- while (Packet.HaveSendCount < 3)
- {
- if (Packet.FlagDateTime.AddMilliseconds(1000).Ticks <= System.DateTime.Now.Ticks)
- {
- MqttCommon.MqttRemoteSend(Packet.Bytes);
- Packet.FlagDateTime = DateTime.Now;
- Packet.HaveSendCount++;
- }
- System.Threading.Thread.Sleep(100);
- }鈥� allDone.Set();鈥� }
+ 鈥� }
else
{
+ //Bus socket鏃犳硶鎺у埗锛岄噸鍚満鍒�
+ if (controlLostCount > 10)
+ {
+ BusSocket.Stop();
+ new System.Threading.Thread(() =>
+ {
+ System.Threading.Thread.Sleep(1000);
+ BusSocket.Start(6000);
+ controlLostCount = 0;
+ })
+ { IsBackground = true }.Start();
+ }
+
try
{
MainPage.Log("鍙戦�佹暟鎹�:" + SendFlag);
BusSocket.AsyncBeginSend(Packet);
Packet.HaveSendCount--;
+ controlLostCount++;
//杩欓噷鏄噸鍙戜袱娆�
while (Packet.HaveSendCount < 3)
{
- if (Packet.FlagDateTime.AddMilliseconds(1000).Ticks <= System.DateTime.Now.Ticks)
+ if (Packet.FlagDateTime.AddMilliseconds(1000).Ticks <= DateTime.Now.Ticks)
{
- //System.MainPage.WriteLog ("閲嶅彂鏁版嵁:" + SendFlag);
+ MainPage.Log("閲嶅彂鏁版嵁:" + SendFlag);
BusSocket.AsyncBeginSend(Packet);
}
System.Threading.Thread.Sleep(100);
@@ -450,205 +553,209 @@
/// </summary>
Packet Packet;
- private void ini(Target target, bool send = true)
+ private void ini(Target target)
{
this.SendFlag = string.Format("{0},{1},{2},", target.SubnetID, target.DeviceID, (int)target.Command + 1);
switch (target.Command)
{
- 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.SetSingleLight:
+ case Command.ReadLogicLoopColor:
case Command.ReadACMode:
case Command.SetACMode:
- 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]);
+ case Command.ReadFloorHeat:
+ case Command.SetFloorHeat:
+ 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]);
+ case Command.SetLogicLoopColor:
+ this.sendFlag += string.Format("{0},{1},{2}", target.AddData[0], target.AddData[1], target.AddData[2]);
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.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.ReadGateway:
+ //case Command.ReadSecurityStatus:
+ //case Command.ReadHornTargetState:
+ // 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.SetLogicLoopColor:
- 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.UpdataCurtainModelStutas:
- case Command.SetSingleLight:
- 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.ReadLogicLoopColor:
- 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;
+ //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;
}
- if (send)
- {
- System.Threading.Thread thread = new System.Threading.Thread(new System.Threading.ParameterizedThreadStart(managerSendCount));
- thread.IsBackground = true;
- thread.Start(Packet);
- }
+
+ System.Threading.Thread thread = new System.Threading.Thread(new System.Threading.ParameterizedThreadStart(managerSendCount));
+ thread.IsBackground = true;
+ thread.Start(Packet);
}
/// <summary>
@@ -656,18 +763,49 @@
/// </summary>
/// <param name="target">鍙戦�佸璞�</param>
/// <param name="sendCount">閲嶅彂娆℃暟</param>
- public void Send(Target target, int sendCount, bool isWait)
+ void Send(Target target, int sendCount, bool isWait)
{
- Packet = new Packet(target.SendBytes, target.IPEndPoint);
- Packet.HaveSendCount = 3 - sendCount;
-
- ini(target);
-
- if (isWait)
+ try
{
- this.wait();
+ Packet = new Packet(target.SendBytes, target.IPEndPoint);
+ Packet.HaveSendCount = 3 - sendCount;
+
+ ini(target);
+
+ if (isWait)
+ {
+ this.wait();
+ }
+ }
+ catch(Exception ex)
+ {
+ MainPage.Log($"Send bus data error {ex.Message}");
}
}
+ /// <summary>
+ /// 璇诲彇缃戝叧IP
+ /// </summary>
+ void ReadGatewayIP()
+ {
+ try
+ {
+ var sendJob = new JObject { { "vendor_code", "HDL" }, { "command", "search" } };
+ var SearchGateway = JsonConvert.SerializeObject(sendJob);
+ var SearchGatewayPayload = Encoding.ASCII.GetBytes(SearchGateway);
+ Packet = new Packet(SearchGatewayPayload, CommonPage.GetGatewayIP_EndPoint);
+ System.Threading.Thread thread = new System.Threading.Thread(new System.Threading.ParameterizedThreadStart(managerSendCount));
+ thread.IsBackground = true;
+ thread.Start(Packet);
+
+ wait();
+ }
+ catch (Exception ex)
+ {
+ MainPage.Log($"Send bus data error {ex.Message}");
+ }
+ }
+
+
}
}
--
Gitblit v1.8.0