using System;
using Shared.Net;
using Shared.IO;
using System.Text;
using System.Collections.Generic;
using Shared.SimpleControl.Phone;
//using service.hdlcontrol.com_WebServiceAirQuality;
namespace Shared.SimpleControl
{
public static class CommonPage
{
public static bool IsRemote = false;
public static string FindGatewayChilrenIPAddress = new Net.NetWiFi ().BroadcastIpAddress.ToString ();
public static int searchTotal = 0;
public static int newDevice = 0;
private static string ip= "115.29.251.24";
public static System.Net.IPEndPoint EndPoint {
get {
try {
if (IsRemote) {
//127.0.0.1
if (ip == "0.0.0.0") {
try {
ip = "115.29.251.24";
} catch { }
}
return new System.Net.IPEndPoint (System.Net.IPAddress.Parse (ip), 9999);
} else {
//if (FindGateway) {
// return new System.Net.IPEndPoint (System.Net.IPAddress.Parse ("224.0.168.188"), 6000);
//} else if (FindGatewayChilren) {
// try {
// return new System.Net.IPEndPoint (System.Net.IPAddress.Parse (FindGatewayChilrenIPAddress), 6000);
// } catch {
// return new System.Net.IPEndPoint (System.Net.IPAddress.Parse ("224.0.168.188"), 6000);
// }
//} else {
// return new System.Net.IPEndPoint (System.Net.IPAddress.Parse (new Net.NetWiFi ().BroadcastIpAddress.ToString ()), 6000);
//}
return new System.Net.IPEndPoint (System.Net.IPAddress.Parse (new Net.NetWiFi ().BroadcastIpAddress.ToString ()), 6000);
}
} catch {
//防止异常导致程序退出
return new System.Net.IPEndPoint (System.Net.IPAddress.Parse ("127.0.0.1"), 6000);
}
}
}
///保存设备备注才用gb2312,其他情况用utf8
public static Encoding MyEncodingUTF8 = Encoding.UTF8;//Get
public static Encoding MyEncodingGB2312 = Encoding.GetEncoding ("gb2312");
static bool isHttpListenerStart;
public static DateTime dt;
///
/// 初始化处理socket接收的数据
///
public static void InitReceiveEvent ()
{
Packet.ReceiveEvent += Packet_ReceiveEvent;
}
static float floatChange(byte b1, byte b2, byte b3, byte b4)
{
byte [] byteTemp = new byte [4] { b4,b3,b2,b1 };
return BitConverter.ToSingle (byteTemp, 0);
}
static object lockobj = new object ();
static List supportList = new List () {
228, 229,230,4618, 231, 232, 233, 234, 235, 236, 237, 238
,740,741,742,743,744,745,746,750,752,754, 755,756,757,761,758,759,760,762,894,
4602,4604 ,4613, 4622,4605,4606,4607,4609, 4611,4620,4621,4615,4617,4619,4612,
36865,9600,19600,
1099,1163,3501,3502,3503,3504,3505,3506,
3508,3509,3516,3517,3521,3527,3528,3530,3532,3533,3534,3536,3538,
3539,3541,3543,3550,3559,3600,3601,3605,4601,4602,
30001,63479,65282,65532,65534,
};
static void Packet_ReceiveEvent (byte subnetID, byte deviceID, Command command, byte [] usefullBytes,int deviceTypeNumber, System.Net.IPEndPoint remoteIp)
{
try {
List ButtonBkeyModelList = new List ();
switch (command) {
case Command.ReadRemarkACK:
if(supportList.Contains(deviceTypeNumber)) {
//if (IsRemote) {
// if (remoteIp.ToString().Contains("118.31.3.103") || remoteIp.ToString ().Contains ("157.175.231.123"))
// lock (GateWayList_NewServer) {
// if (GateWayList_NewServer.Find ((l) => { return l.SubnetID == subnetID && l.DeviceID == deviceID; }) != null) {
// return;
// }
// DeviceType deviceType = (DeviceType)(usefullBytes [2] * 256 + usefullBytes [3]);
// GatewayBase gatewayBase = new GatewayBase ();
// gatewayBase.DeviceTypeNumber = deviceTypeNumber;
// gatewayBase.SubnetID = subnetID;
// gatewayBase.DeviceID = deviceID;
// gatewayBase.Type = deviceType;
// gatewayBase.Name = MyEncodingGB2312.GetString (usefullBytes, 0, 20).Trim ('\0');//=============
// GateWayList_NewServer.Add (gatewayBase);
// Console.WriteLine ($"name:{gatewayBase.Name}++{deviceTypeNumber}");
// }
//} else
{
lock (GateWayList) {
if (GateWayList.Find ((l) => { return l.SubnetID == subnetID && l.DeviceID == deviceID; }) != null) {
return;
}
DeviceType deviceType = (DeviceType)(usefullBytes [2] * 256 + usefullBytes [3]);
GatewayBase gatewayBase = new GatewayBase ();
gatewayBase.DeviceTypeNumber = deviceTypeNumber;
gatewayBase.SubnetID = subnetID;
gatewayBase.DeviceID = deviceID;
gatewayBase.Type = deviceType;
gatewayBase.Name = MyEncodingGB2312.GetString (usefullBytes, 0, 20).Trim ('\0');//=============
var name = Encoding.Default.GetString (usefullBytes, 0, 20).Trim ('\0');
GateWayList.Add (gatewayBase);
Console.WriteLine ($"name:{gatewayBase.Name}++{deviceTypeNumber}");
}
}
}
break;
case Command.WriteWirelessPanelButtonKey:
//01 01 59(+30) 02 0D 03 64 00 01
break;
case Command.AssignedAddressACK:
Console.WriteLine (usefullBytes [0].ToString ());
if (usefullBytes [0] == 3) {
dt = DateTime.Now;
} else if (usefullBytes [0] == 4) {
dt = System.DateTime.MinValue;
}
break;
case Command.Remote3thACK:
Console.WriteLine (usefullBytes [0]);
break;
}
} catch (Exception ex) {
Console.WriteLine ("Packet_ReceiveEvent:" + ex.ToString ());
}
}
///
/// byte 变字符串
///
/// The to hex16.
/// The blue component.
public static string byteToHex16 (byte b)
{
string s = Convert.ToString (b, 16).ToUpper ();
if (s.Length <= 1) {
return "0" + s;
}
return s;//
}
///
/// 随机数高位
///
public static byte RandomHigh;
///
/// 随机数低位
///
public static byte RandomLow;
///
/// 网关设备列表
///
public static List GateWayList = new List ();
public static List GateWayList_NewServer = new List ();
}
}