From 6d3ba9484472d090532434e53667c096652149ce Mon Sep 17 00:00:00 2001
From: wxr <464027401@qq.com>
Date: 星期五, 25 九月 2020 09:56:14 +0800
Subject: [PATCH] 202009251
---
HDL_ON/DriverLayer/Control_Bus.cs | 186 +++++++++++++++++++++++++++++++++-------------
1 files changed, 132 insertions(+), 54 deletions(-)
diff --git a/HDL_ON/DriverLayer/Control_Bus.cs b/HDL_ON/DriverLayer/Control_Bus.cs
index dd8490b..1705908 100644
--- a/HDL_ON/DriverLayer/Control_Bus.cs
+++ b/HDL_ON/DriverLayer/Control_Bus.cs
@@ -1,20 +1,21 @@
锘縰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>
/// 鎵�鏈夊井淇″涓�绔彛鐨勬帶鍒堕兘浼氭斁鍒拌繖涓泦鍚堥噷
@@ -35,7 +36,6 @@
DeviceID = deviceID,
AddData = gatewayBytes,
}, sendCount, false);
- MainPage.Log(command.ToString() + "::" + CommonPage.EndPoint.ToString());
}
public static byte[] ReadGatewayIPAddress()
@@ -44,6 +44,48 @@
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 鎼滅储鍥炲
@@ -59,12 +101,17 @@
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)
{
@@ -73,7 +120,6 @@
else
{
bool isExit = false;
-
for (int i = 0, len = usefullBytes.Length; i < len; i++)
{
if (i % 2 == 0)
@@ -86,17 +132,16 @@
}
}
}
-
if (!isExit)
{
//涓嶅瓨鍦紝浠h〃娌℃敹鍒版湰鏈虹殑鍙戦�侊紝缁х画鍥炲
SenRemark(sendStr);
}
-
}
-
}
- catch { }
+ catch (Exception ex) {
+ Console.WriteLine($"鍥炲bus鎼滅储寮傚父 : {ex.Message}");
+ }
}
/// <summary>
@@ -173,6 +218,9 @@
Console.WriteLine("buspro 璇诲娉ㄥ洖澶�");
ReceiveReadRemark(usefulBytes);
break;
+ case Command.ReadLightAllLoopBrightnessACK:
+ receiveFlag += "";
+ break;
//case Command.YIPanelDeviceInofACK:
// for (int i = 0; i < 4; i++)
// {
@@ -223,8 +271,6 @@
//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;
@@ -243,10 +289,10 @@
// 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:
@@ -319,14 +365,14 @@
//case Command.Remote3thACK:
// receiveFlag = string.Format("{0},", (int)command);
// break;
- //case Command.ReadDeviceLoopInfoACK:
- // if (usefulBytes[0] == 1)
- // {
- // receiveFlag += string.Format("{0},{1}", usefulBytes[0], usefulBytes[2]); ;
- // }
- // else
- // receiveFlag += string.Format("{0},{1},{2}", usefulBytes[0], usefulBytes[1], usefulBytes[2]);
- // break;
+ case Command.ReadDeviceLoopInfoACK:
+ if (usefulBytes[0] == 1)
+ {
+ receiveFlag += string.Format("{0},{1}", usefulBytes[0], usefulBytes[2]); ;
+ }
+ else
+ receiveFlag += string.Format("{0},{1},{2}", usefulBytes[0], usefulBytes[1], usefulBytes[2]);
+ break;
//case Command.SetDeviceLoopInfoACK:
//case Command.InfraredControlACK:
//case Command.SetSecurityByPassACK:
@@ -339,14 +385,14 @@
//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:
@@ -497,11 +543,39 @@
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鏃犳硶鎺у埗锛岄噸鍚満鍒�
+ 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);
@@ -511,10 +585,11 @@
//杩欓噷鏄噸鍙戜袱娆�
while (Packet.HaveSendCount < 3)
{
- if (Packet.FlagDateTime.AddMilliseconds(1000).Ticks <= System.DateTime.Now.Ticks)
+ if (Packet.FlagDateTime.AddMilliseconds(1000).Ticks <= DateTime.Now.Ticks)
{
MainPage.Log("閲嶅彂鏁版嵁:" + SendFlag);
BusSocket.AsyncBeginSend(Packet);
+ controlLostCount++;
}
System.Threading.Thread.Sleep(100);
}
@@ -551,6 +626,9 @@
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++)
@@ -594,11 +672,11 @@
// 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:
@@ -677,12 +755,12 @@
//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.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:
@@ -696,12 +774,12 @@
//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:
@@ -772,10 +850,10 @@
{
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);
--
Gitblit v1.8.0