using System;
|
using System.Collections.Generic;
|
using System.Threading;
|
|
namespace Shared.SimpleControl.Phone
|
{
|
/// <summary>
|
/// 无线网关数据设置界面
|
/// </summary>
|
public class SystemWirelessGateway : FrameLayout
|
{
|
public override void RemoveFromParent ()
|
{
|
SystemMiddle.curGatewayMAC = "";
|
SystemMiddle.curGatewayIP = "";
|
base.RemoveFromParent ();
|
}
|
|
/// <summary>
|
/// 更新无线网关数据
|
/// </summary>
|
void UpdateOnePorWirelessFR (OnePortWirelessFR onePortWirelessFR)
|
{
|
System.Threading.Tasks.Task.Run (() => {
|
try {
|
Application.RunOnMainThread (() => {
|
MainPage.Loading.Start ("Sending...");
|
});
|
byte [] bytes = new byte [78];
|
bytes [0] = onePortWirelessFR.BigClass;
|
bytes [1] = onePortWirelessFR.MinClass;
|
string [] mac = onePortWirelessFR.MAC.Split ('.');
|
for (int i = 0; i < mac.Length; i++)
|
bytes [i + 3] = Convert.ToByte (mac [i], 16);
|
//Remark需要解码
|
byte [] ddd = new byte [20];
|
byte [] ddd2 = CommonPage.MyEncodingGB2312.GetBytes (onePortWirelessFR.Name);
|
Array.Copy (ddd2, 0, ddd, 0, 20 < ddd2.Length ? 20 : ddd2.Length);
|
Array.Copy (ddd, 0, bytes, 11, 20);
|
string [] ipAddress = onePortWirelessFR.IPAddress.Split ('.');
|
for (int i = 0; i < ipAddress.Length; i++)
|
bytes [i + 31] = byte.Parse (ipAddress [i]);
|
string [] r = onePortWirelessFR.RouteIPAddress.Split ('.');
|
for (int i = 0; i < r.Length; i++)
|
bytes [i + 35] = byte.Parse (r [i]);
|
string [] ipMac = onePortWirelessFR.IPMAC.Split ('.');
|
//ipMAC前三位HDL 需要特殊处理
|
bytes [0 + 39] = (byte)(ipMac [0].ToCharArray () [0]);
|
bytes [1 + 39] = (byte)(ipMac [1].ToCharArray () [0]);
|
bytes [2 + 39] = (byte)(ipMac [2].ToCharArray () [0]);
|
bytes [3 + 39] = byte.Parse (ipMac [3]);
|
bytes [4 + 39] = byte.Parse (ipMac [4]);
|
bytes [5 + 39] = byte.Parse (ipMac [5]);
|
string [] subnetMask = onePortWirelessFR.SubnetMask.Split ('.');
|
for (int i = 0; i < subnetMask.Length; i++)
|
bytes [i + 45] = byte.Parse (subnetMask [i]);
|
bytes [49] = onePortWirelessFR.DHCP == true ? (byte)1 : (byte)0;
|
bytes [50] = onePortWirelessFR.SubnetID;
|
bytes [51] = onePortWirelessFR.EncryptionFlag;
|
byte [] pbyte = new byte [8];
|
byte [] pddd = CommonPage.MyEncodingGB2312.GetBytes (onePortWirelessFR.Password);
|
Array.Copy (pddd, 0, ddd, 0, 8 < pddd.Length ? 8 : pddd.Length);
|
Array.Copy (pbyte, 0, bytes, 52, 8);
|
bytes [60] = onePortWirelessFR.WirelessBand;
|
bytes [61] = onePortWirelessFR.WirelessChannel;
|
byte [] wbyte = new byte [16];
|
byte [] w2 = CommonPage.MyEncodingGB2312.GetBytes (onePortWirelessFR.WirelessPassword);
|
Array.Copy (w2, 0, wbyte, 0, 16 < w2.Length ? 16 : w2.Length);
|
Array.Copy (wbyte, 0, bytes, 62, 16);
|
|
var datass = Control.ControlBytesSendHasReturn (Command.SetGateway,
|
onePortWirelessFR.SubnetID,
|
onePortWirelessFR.DeviceID,
|
bytes);
|
if (datass == null) {
|
Application.RunOnMainThread (() => {
|
MainPage.Loading.Hide ();
|
new Alert (Language.StringByID (R.MyInternationalizationString.Tip),
|
Language.StringByID (R.MyInternationalizationString.TipEquipmentNotOnline),
|
Language.StringByID (R.MyInternationalizationString.Close)).Show ();
|
});
|
} else {
|
Application.RunOnMainThread (() => {
|
MainPage.Loading.Hide ();
|
IO.FileUtils.SaveEquipmentMessage (onePortWirelessFR);
|
new Alert (Language.StringByID (R.MyInternationalizationString.Tip),
|
Language.StringByID (R.MyInternationalizationString.ThePerationWasSuccessful),
|
Language.StringByID (R.MyInternationalizationString.Close)).Show ();
|
});
|
}
|
} catch {
|
} finally {
|
Application.RunOnMainThread (() => {
|
MainPage.Loading.Hide ();
|
});
|
}
|
});
|
}
|
|
public void ShowWirelessGateway (OnePortWirelessFR gatewayDevice)
|
{
|
RemoveAll ();
|
MainPage.Loading.Start ();
|
try {
|
CommonPage.FindGatewayChilrenIPAddress = gatewayDevice.IPAddress;
|
|
System.Threading.Tasks.Task.Run (() => {
|
CommonPage.RandomHigh = (byte)new Random ().Next (255);
|
CommonPage.RandomLow = (byte)new Random ().Next (255);
|
var gatewayInfo = Control.ControlBytesSendHasReturn (Command.ReadGateway, gatewayDevice.SubnetID, gatewayDevice.DeviceID, new byte [] { CommonPage.RandomHigh, CommonPage.RandomLow });
|
|
Application.RunOnMainThread (() => {
|
VerticalScrolViewLayout sView = new VerticalScrolViewLayout () {
|
Height = Application.GetRealHeight (844),
|
};
|
AddChidren (sView);
|
if (gatewayInfo == null) {
|
new Alert (Language.StringByID (R.MyInternationalizationString.Tip),
|
Language.StringByID (R.MyInternationalizationString.TipEquipmentNotOnline),
|
Language.StringByID (R.MyInternationalizationString.Close)).Show ();
|
return;
|
}
|
//var one = IO.FileUtils.ReadEquipmentMessage (gatewayDevice);
|
//gatewayDevice = Newtonsoft.Json.JsonConvert.DeserializeObject<OnePortWirelessFR> (one);
|
SystemMiddle.curGatewayMAC = gatewayDevice.MAC;
|
SystemMiddle.curGatewayIP = gatewayDevice.IPAddress;
|
#region ---top---
|
RowLayout flTitleRow = new RowLayout () {
|
Height = Application.GetRealHeight (98),
|
Width = LayoutParams.MatchParent,
|
BackgroundColor = SkinStyle.Current.MainColor,
|
};
|
sView.AddChidren (flTitleRow);
|
|
Button backButton = new Button () {
|
Height = Application.GetRealHeight (90),
|
Width = Application.GetRealWidth (85),
|
UnSelectedImagePath = "Item/Back.png",
|
SelectedImagePath = "Item/BackSelected.png",
|
Gravity = Gravity.CenterVertical,
|
};
|
backButton.MouseUpEventHandler += (sender, e) => {
|
(Parent as PageLayout).PageIndex -= 1;
|
new SystemMiddle ().ShowGateWayView ();
|
SystemMiddle.curGatewayMAC = "";
|
SystemMiddle.curGatewayIP = "";
|
};
|
flTitleRow.AddChidren (backButton);
|
string strOnePortWirelessFRRemark = gatewayDevice.Name.ToString ();
|
EditText textButton = new EditText () {
|
X = Application.GetRealWidth (95),
|
Height = Application.GetRealHeight (50),
|
Width = Application.GetRealWidth (380),
|
Gravity = Gravity.CenterVertical,
|
Text = strOnePortWirelessFRRemark,
|
BackgroundColor = SkinStyle.Current.Transparent,
|
SelectedBackgroundColor = SkinStyle.Current.SysEditBox,
|
Enable = false,
|
TextColor = SkinStyle.Current.TextColor1,
|
BorderColor = SkinStyle.Current.Transparent,
|
BorderWidth = 0,
|
Radius = 5,
|
};
|
flTitleRow.AddChidren (textButton);
|
|
Button editor = new Button () {
|
X = Application.GetRealWidth (640 - 70 - 30),
|
Height = Application.GetRealHeight (90),
|
Width = Application.GetRealWidth (70),
|
UnSelectedImagePath = "Item/Editor.png",
|
SelectedImagePath = "Item/EditorSelected.png",
|
Gravity = Gravity.CenterVertical,
|
};
|
flTitleRow.AddChidren (editor);
|
editor.MouseUpEventHandler += (sender, e) => {
|
if (editor.IsSelected) {
|
MainPage.Loading.Start ();
|
gatewayDevice.Name = textButton.Text.Trim ();
|
editor.IsSelected = textButton.IsSelected = textButton.Enable = false;
|
//textButton.BackgroundColor = SkinStyle.Current.Transparent;
|
CommonPage.UpdateRemark (gatewayDevice.SubnetID, gatewayDevice.DeviceID, gatewayDevice.Name);
|
IO.FileUtils.SaveEquipmentMessage (gatewayDevice);
|
editor.IsSelected = false;
|
textButton.Enable = false;
|
textButton.IsSelected = false;
|
MainPage.Loading.Hide ();
|
} else {
|
textButton.Enable = true;
|
textButton.IsSelected = true;
|
editor.IsSelected = true;
|
//textButton.BackgroundColor = 0xFF494949;
|
}
|
};
|
|
Button gatewayInfoSwitch = new Button () {
|
Height = Application.GetRealHeight (90),
|
Width = Application.GetRealWidth (90),
|
UnSelectedImagePath = "Item/GatwayInfoHide.png",
|
SelectedImagePath = "Item/GatwayInfoShow.png",
|
Gravity = Gravity.CenterVertical,
|
X = editor.Right + Application.GetRealWidth (5),
|
TextColor = SkinStyle.Current.TextColor1
|
};
|
flTitleRow.AddChidren (gatewayInfoSwitch);
|
#endregion
|
|
#region GatewayID
|
RowLayout frameLayoutGatewayID = new RowLayout () {
|
Height = Application.GetRealHeight (98),
|
Width = LayoutParams.MatchParent,
|
BackgroundColor = SkinStyle.Current.MainColor,
|
};
|
sView.AddChidren (frameLayoutGatewayID);
|
|
Button gatewayIDText = new Button () {
|
X = Application.GetRealWidth (15),
|
Height = Application.GetRealHeight (66),
|
Width = Application.GetRealWidth (66),
|
UnSelectedImagePath = "Item/Wireless.png",
|
SelectedImagePath = "Item/WirelessSelected.png",
|
Gravity = Gravity.CenterVertical,
|
TextColor = SkinStyle.Current.TextColor1,
|
};
|
frameLayoutGatewayID.AddChidren (gatewayIDText);
|
Button gatewayIDName = new Button () {
|
X = Application.GetRealWidth (11) + gatewayIDText.Right,
|
Height = Application.GetRealHeight (41),
|
Width = Application.GetRealWidth (150),
|
TextID = R.MyInternationalizationString.GatewayID,
|
Gravity = Gravity.CenterVertical,
|
TextAlignment = TextAlignment.CenterLeft,
|
TextColor = SkinStyle.Current.TextColor1
|
};
|
frameLayoutGatewayID.AddChidren (gatewayIDName);
|
EditText etGatewayID = new EditText () {
|
Height = Application.GetRealHeight (42),
|
Width = Application.GetRealWidth (62),
|
X = gatewayIDName.Right,
|
Gravity = Gravity.CenterVertical,
|
TextAlignment = TextAlignment.Center,
|
Text = gatewayDevice.SubnetID.ToString (),
|
SelectedBackgroundColor = SkinStyle.Current.SysEditBox,
|
BackgroundColor = SkinStyle.Current.Transparent,
|
Enable = false,
|
TextColor = SkinStyle.Current.TextColor1,
|
BorderColor = SkinStyle.Current.Transparent,
|
BorderWidth = 1,
|
Radius = 5,
|
};
|
frameLayoutGatewayID.AddChidren (etGatewayID);
|
|
Button gatewayIDEdit = new Button () {
|
Height = Application.GetRealHeight (90),
|
Width = Application.GetRealWidth (70),
|
UnSelectedImagePath = "Item/Editor.png",
|
SelectedImagePath = "Item/EditorSelected.png",
|
Gravity = Gravity.CenterVertical,
|
TextColor = SkinStyle.Current.TextColor1
|
};
|
gatewayIDEdit.X = flTitleRow.Width - gatewayIDEdit.Width - Application.GetRealWidth (30);
|
#region 更改网关设备号
|
//byte[] macAddress = Control.ControlBytesSendHasReturn(Command.ReadDeviceMac,onePortWirelessFR.SubnetID,onePortWirelessFR.DeviceID,new byte[]{});
|
gatewayIDEdit.MouseUpEventHandler += (sender, e) => {
|
string [] macAddress = gatewayDevice.MAC.Split ('.');
|
if (etGatewayID.Enable) {
|
etGatewayID.Enable = etGatewayID.IsSelected = false;
|
etGatewayID.BackgroundColor = SkinStyle.Current.Transparent;
|
byte [] Musics = new byte [10];
|
for (int i = 0; i < macAddress.Length; i++) {
|
Musics [i] = Convert.ToByte (macAddress [i], 16);
|
}
|
try {
|
Musics [8] = Convert.ToByte (Convert.ToInt32 (etGatewayID.Text.Trim ()));
|
if (Musics [8] < 0 || Musics [8] > 255) {
|
throw new Exception ();
|
}
|
} catch {
|
new Alert (Language.StringByID (R.MyInternationalizationString.Tip), Language.StringByID (R.MyInternationalizationString.TipPleaseEnterTheCorrectData), Language.StringByID (R.MyInternationalizationString.Close)).Show ();
|
return;
|
}
|
Control.ControlBytesSend (Command.SetDeviceSubnetID, gatewayDevice.SubnetID, gatewayDevice.DeviceID, Musics);
|
foreach (string ss in IO.FileUtils.ReadFiles ()) {
|
if (ss.Contains ("Equipment_")) {
|
if (ss.Contains ("_" + Musics [8].ToString () + "_") || ss.Contains ("_" + gatewayDevice.SubnetID.ToString () + "_")) {
|
IO.FileUtils.DeleteFile (ss);
|
}
|
}
|
}
|
gatewayDevice.SubnetID = Musics [8];
|
UpdateOnePorWirelessFR (gatewayDevice);
|
} else {
|
etGatewayID.IsSelected = etGatewayID.Enable = true;
|
}
|
};
|
#endregion
|
frameLayoutGatewayID.AddChidren (gatewayIDEdit);
|
#endregion
|
|
#region--------------NetWork----------------------
|
RowLayout flNetWorkTop = new RowLayout () {
|
Height = Application.GetRealHeight (98),
|
Width = LayoutParams.MatchParent,
|
BackgroundColor = SkinStyle.Current.MainColor,
|
};
|
sView.AddChidren (flNetWorkTop);
|
|
Button netParameterSeleted = new Button () {
|
X = Application.GetRealWidth (15),
|
Height = Application.GetRealHeight (66),
|
Width = Application.GetRealWidth (66),
|
UnSelectedImagePath = "Item/NetParameter.png",
|
SelectedImagePath = "Item/NetParameterSelected.png",
|
Gravity = Gravity.CenterVertical,
|
};
|
flNetWorkTop.AddChidren (netParameterSeleted);
|
Button textButton1 = new Button () {
|
X = Application.GetRealWidth (11) + netParameterSeleted.Right,
|
Height = Application.GetRealHeight (41),
|
Width = Application.GetRealWidth (300),
|
TextID = R.MyInternationalizationString.NetwordParameters,
|
Gravity = Gravity.CenterVertical,
|
TextAlignment = TextAlignment.CenterLeft,
|
TextColor = SkinStyle.Current.TextColor1
|
};
|
flNetWorkTop.AddChidren (textButton1);
|
Button btnNetWorkHelp = new Button () {
|
Height = Application.GetMinRealAverage (98),
|
Width = Application.GetMinRealAverage (76),
|
UnSelectedImagePath = "Item/Help.png",
|
SelectedImagePath = "Item/HelpSelected.png",
|
Gravity = Gravity.CenterVertical,
|
};
|
btnNetWorkHelp.X = flTitleRow.Width - btnNetWorkHelp.Width - Application.GetRealWidth (30);
|
btnNetWorkHelp.MouseUpEventHandler += (sender, e) => {
|
new Tip () { MaxWidth = 150, Text = Language.StringByID (R.MyInternationalizationString.HelpNetWork), Direction = AMPopTipDirection.Down, CloseTime = 4 }.Show ((View)sender);
|
};
|
flNetWorkTop.AddChidren (btnNetWorkHelp);
|
//-----------------------------------------------------------------------------------
|
FrameLayout frameLayout2 = new FrameLayout () {
|
Height = Application.GetRealHeight (798),
|
Width = LayoutParams.MatchParent,
|
};
|
sView.AddChidren (frameLayout2);
|
Button dhcp = new Button () {
|
X = gatewayIDName.X,
|
TextAlignment = TextAlignment.CenterLeft,
|
Height = Application.GetRealHeight (60),
|
Width = Application.GetRealWidth (360),
|
Text = "DHCP:",
|
Y = Application.GetRealHeight (10),
|
TextColor = SkinStyle.Current.TextColor1
|
};
|
frameLayout2.AddChidren (dhcp);
|
Button btnDHCPcheck = new Button () {
|
Height = Application.GetMinRealAverage (98),
|
Width = Application.GetMinRealAverage (76),
|
UnSelectedImagePath = "Item/Check.png",
|
SelectedImagePath = "Item/CheckSelected.png",
|
IsSelected = gatewayDevice.DHCP,
|
TextColor = SkinStyle.Current.TextColor1
|
};
|
btnDHCPcheck.X = flTitleRow.Width - btnDHCPcheck.Width - Application.GetRealWidth (98);
|
|
frameLayout2.AddChidren (btnDHCPcheck);
|
|
Button lblIPAddresses = new Button () {
|
X = gatewayIDName.X,
|
TextAlignment = TextAlignment.CenterLeft,
|
Height = Application.GetRealHeight (55),
|
Width = Application.GetRealWidth (239),
|
TextID = R.MyInternationalizationString.IPAddresses,
|
Y = dhcp.Bottom + Application.GetRealHeight (2),
|
TextColor = SkinStyle.Current.TextColor1
|
};
|
frameLayout2.AddChidren (lblIPAddresses);
|
|
EditText etIPAddresses = new EditText () {
|
X = dhcp.X,
|
TextAlignment = TextAlignment.CenterLeft,
|
Height = Application.GetRealHeight (55),
|
Width = Application.GetRealWidth (440),
|
Text = " " + gatewayDevice.IPAddress,
|
//UnSelectedImagePath = "Item/TextBox.png",
|
//BackgroundColor = SkinStyle.Current.SysEditBox,
|
Y = lblIPAddresses.Bottom + Application.GetRealHeight (2),
|
TextColor = SkinStyle.Current.TextColor1,
|
BorderColor = SkinStyle.Current.BorderColor,
|
BorderWidth = 1,
|
Radius = 5,
|
};
|
frameLayout2.AddChidren (etIPAddresses);
|
CommonPage.FindGatewayChilrenIPAddress = gatewayDevice.IPAddress;
|
|
Button lblSubnetMask = new Button () {
|
X = dhcp.X,
|
TextAlignment = TextAlignment.CenterLeft,
|
Height = Application.GetRealHeight (55),
|
Width = Application.GetRealWidth (440),
|
TextID = R.MyInternationalizationString.SubnetMask,
|
Y = etIPAddresses.Bottom + Application.GetRealHeight (2),
|
TextColor = SkinStyle.Current.TextColor1
|
};
|
frameLayout2.AddChidren (lblSubnetMask);
|
|
EditText etSubnetMask = new EditText () {
|
X = dhcp.X,
|
TextAlignment = TextAlignment.CenterLeft,
|
Height = Application.GetRealHeight (55),
|
Width = Application.GetRealWidth (440),
|
Text = " " + gatewayDevice.SubnetMask,
|
//UnSelectedImagePath = "Item/TextBox.png",
|
//BackgroundColor = SkinStyle.Current.SysEditBox,
|
BorderColor = SkinStyle.Current.BorderColor,
|
BorderWidth = 1,
|
Radius = 5,
|
Y = lblSubnetMask.Bottom + Application.GetRealHeight (2),
|
TextColor = SkinStyle.Current.TextColor1,
|
};
|
frameLayout2.AddChidren (etSubnetMask);
|
|
Button lblRoutingIP = new Button () {
|
X = dhcp.X,
|
TextAlignment = TextAlignment.CenterLeft,
|
Height = Application.GetRealHeight (55),
|
Width = Application.GetRealWidth (440),
|
TextID = R.MyInternationalizationString.RoutingIP,
|
Y = etSubnetMask.Bottom + Application.GetRealHeight (2),
|
TextColor = SkinStyle.Current.TextColor1
|
};
|
frameLayout2.AddChidren (lblRoutingIP);
|
|
EditText etRoutingIP = new EditText () {
|
X = dhcp.X,
|
TextAlignment = TextAlignment.CenterLeft,
|
Height = Application.GetRealHeight (55),
|
Width = Application.GetRealWidth (440),
|
Text = " " + gatewayDevice.RouteIPAddress,
|
//UnSelectedImagePath = "Item/TextBox.png",
|
//BackgroundColor = SkinStyle.Current.SysEditBox,
|
BorderColor = SkinStyle.Current.BorderColor,
|
BorderWidth = 1,
|
Radius = 5,
|
Y = lblRoutingIP.Bottom + Application.GetRealHeight (2),
|
TextColor = SkinStyle.Current.TextColor1,
|
};
|
frameLayout2.AddChidren (etRoutingIP);
|
|
Button btnDHCPSave = new Button () {
|
X = (Application.CurrentWidth / 2 - 30),
|
Height = Application.GetRealHeight (55),
|
Width = Application.GetRealWidth (98),
|
BackgroundColor = SkinStyle.Current.ButtonColor,
|
SelectedBackgroundColor = SkinStyle.Current.SelectedColor,
|
BorderWidth = 1,
|
Radius = 5,
|
BorderColor = SkinStyle.Current.Transparent,
|
TextID = R.MyInternationalizationString.SAVE,
|
Y = etRoutingIP.Bottom + Application.GetRealHeight (12),
|
TextColor = SkinStyle.Current.TextColor1
|
};
|
frameLayout2.AddChidren (btnDHCPSave);
|
frameLayout2.Height = btnDHCPSave.Bottom + Application.GetRealHeight (20);
|
|
btnDHCPcheck.MouseUpEventHandler += (sender, e) => {
|
if (btnDHCPcheck.IsSelected) {
|
btnDHCPcheck.IsSelected = false;
|
etIPAddresses.Enable = etSubnetMask.Enable = etRoutingIP.Enable = true;
|
btnDHCPSave.Visible = true;
|
} else {
|
btnDHCPcheck.IsSelected = true;
|
etIPAddresses.Enable = etSubnetMask.Enable = etRoutingIP.Enable = false;
|
btnDHCPSave.Visible = false;
|
}
|
//gatewayDevice.IPAddress = etIPAddresses.Text.Trim ();
|
//gatewayDevice.SubnetMask = etSubnetMask.Text.Trim ();
|
//gatewayDevice.RouteIPAddress = etRoutingIP.Text.Trim ();
|
gatewayDevice.DHCP = btnDHCPcheck.IsSelected;
|
try {
|
byte [] bytes = new byte [21];
|
bytes [20] = gatewayDevice.DHCP == true ? (byte)1 : (byte)0;
|
System.Net.IPAddress address;
|
if (System.Net.IPAddress.TryParse (gatewayDevice.IPAddress, out address)) {
|
string [] ipAddress = gatewayDevice.IPAddress.Split ('.');
|
for (int i = 0; i < ipAddress.Length; i++) {
|
bytes [i] = byte.Parse (ipAddress [i]);
|
}
|
} else {
|
throw new Exception ();
|
}
|
if (System.Net.IPAddress.TryParse (gatewayDevice.RouteIPAddress, out address)) {
|
string [] r = gatewayDevice.RouteIPAddress.Split ('.');
|
for (int i = 0; i < r.Length; i++) {
|
bytes [i + 4] = byte.Parse (r [i]);
|
}
|
} else {
|
throw new Exception ();
|
}
|
string [] ipMac = gatewayDevice.IPMAC.Split ('.');
|
//ipMAC前三位HDL 需要特殊处理
|
bytes [0 + 8] = (byte)(ipMac [0].ToCharArray () [0]);
|
bytes [1 + 8] = (byte)(ipMac [1].ToCharArray () [0]);
|
bytes [2 + 8] = (byte)(ipMac [2].ToCharArray () [0]);
|
bytes [3 + 8] = byte.Parse (ipMac [3]);
|
bytes [4 + 8] = byte.Parse (ipMac [4]);
|
bytes [5 + 8] = byte.Parse (ipMac [5]);
|
string [] subnetMask = gatewayDevice.SubnetMask.Split ('.');
|
bytes [14] = 0x17;
|
bytes [15] = 0x70;
|
for (int i = 0; i < subnetMask.Length; i++) {
|
bytes [i + 16] = byte.Parse (subnetMask [i]);
|
}
|
if (Control.ControlBytesSendHasReturn (Command.UpdateGatewayIp,
|
gatewayDevice.SubnetID, gatewayDevice.DeviceID, bytes) != null) {
|
IO.FileUtils.SaveEquipmentMessage (gatewayDevice);
|
}
|
//UpdateOnePorWirelessFR (gatewayDevice);
|
|
} catch {
|
new Alert (Language.StringByID (R.MyInternationalizationString.Tip), Language.StringByID (R.MyInternationalizationString.TipPleaseEnterTheCorrectData), Language.StringByID (R.MyInternationalizationString.Confrim)).Show ();
|
}
|
};
|
|
btnDHCPSave.MouseUpEventHandler += (sender, e) => {
|
gatewayDevice.IPAddress = etIPAddresses.Text.Trim ();
|
gatewayDevice.SubnetMask = etSubnetMask.Text.Trim ();
|
gatewayDevice.RouteIPAddress = etRoutingIP.Text.Trim ();
|
gatewayDevice.DHCP = btnDHCPcheck.IsSelected;
|
try {
|
byte [] bytes = new byte [21];
|
bytes [20] = gatewayDevice.DHCP == true ? (byte)1 : (byte)0;
|
System.Net.IPAddress address;
|
if (System.Net.IPAddress.TryParse (gatewayDevice.IPAddress, out address)) {
|
string [] ipAddress = gatewayDevice.IPAddress.Split ('.');
|
for (int i = 0; i < ipAddress.Length; i++) {
|
bytes [i] = byte.Parse (ipAddress [i]);
|
}
|
} else {
|
throw new Exception ();
|
}
|
if (System.Net.IPAddress.TryParse (gatewayDevice.RouteIPAddress, out address)) {
|
string [] r = gatewayDevice.RouteIPAddress.Split ('.');
|
for (int i = 0; i < r.Length; i++) {
|
bytes [i + 4] = byte.Parse (r [i]);
|
}
|
} else {
|
throw new Exception ();
|
}
|
string [] ipMac = gatewayDevice.IPMAC.Split ('.');
|
//ipMAC前三位HDL 需要特殊处理
|
bytes [0 + 8] = (byte)(ipMac [0].ToCharArray () [0]);
|
bytes [1 + 8] = (byte)(ipMac [1].ToCharArray () [0]);
|
bytes [2 + 8] = (byte)(ipMac [2].ToCharArray () [0]);
|
bytes [3 + 8] = byte.Parse (ipMac [3]);
|
bytes [4 + 8] = byte.Parse (ipMac [4]);
|
bytes [5 + 8] = byte.Parse (ipMac [5]);
|
string [] subnetMask = gatewayDevice.SubnetMask.Split ('.');
|
bytes [14] = 0x17;
|
bytes [15] = 0x70;
|
for (int i = 0; i < subnetMask.Length; i++) {
|
bytes [i + 16] = byte.Parse (subnetMask [i]);
|
}
|
if (Control.ControlBytesSendHasReturn (Command.UpdateGatewayIp,
|
gatewayDevice.SubnetID, gatewayDevice.DeviceID, bytes) != null) {
|
IO.FileUtils.SaveEquipmentMessage (gatewayDevice);
|
}
|
//UpdateOnePorWirelessFR (gatewayDevice);
|
} catch {
|
new Alert (Language.StringByID (R.MyInternationalizationString.Tip), Language.StringByID (R.MyInternationalizationString.TipPleaseEnterTheCorrectData), Language.StringByID (R.MyInternationalizationString.Confrim)).Show ();
|
}
|
};
|
if (gatewayDevice.DHCP) {
|
btnDHCPcheck.IsSelected = true;
|
etIPAddresses.Enable = etSubnetMask.Enable = etRoutingIP.Enable = false;
|
btnDHCPSave.Visible = false;
|
|
} else {
|
btnDHCPcheck.IsSelected = false;
|
etIPAddresses.Enable = etSubnetMask.Enable = etRoutingIP.Enable = true;
|
btnDHCPSave.Visible = true;
|
}
|
#endregion
|
|
|
#region--------------RemoteAccess---------------------
|
RowLayout flRemoteAccessTop = new RowLayout () {
|
Height = Application.GetRealHeight (100),
|
Width = LayoutParams.MatchParent,
|
BackgroundColor = SkinStyle.Current.MainColor
|
};
|
sView.AddChidren (flRemoteAccessTop);
|
|
Button RemoteAccessSeleted = new Button () {
|
X = Application.GetRealWidth (15),
|
Height = Application.GetRealHeight (66),
|
Width = Application.GetRealWidth (66),
|
UnSelectedImagePath = "Item/RemoteAccess.png",
|
SelectedImagePath = "Item/RemoteAccessSelected.png",
|
Gravity = Gravity.CenterVertical,
|
};
|
flRemoteAccessTop.AddChidren (RemoteAccessSeleted);
|
Button lblRemoteAccesss = new Button () {
|
X = Application.GetRealWidth (11) + RemoteAccessSeleted.Right,
|
Height = Application.GetRealHeight (41),
|
Width = Application.GetRealWidth (200),
|
TextID = R.MyInternationalizationString.RemoteAccess,
|
Gravity = Gravity.CenterVertical,
|
TextAlignment = TextAlignment.CenterLeft,
|
TextColor = SkinStyle.Current.TextColor1
|
};
|
flRemoteAccessTop.AddChidren (lblRemoteAccesss);
|
Button btnRemoteAccessHelp = new Button () {
|
Height = Application.GetMinRealAverage (98),
|
Width = Application.GetMinRealAverage (76),
|
UnSelectedImagePath = "Item/Help.png",
|
SelectedImagePath = "Item/HelpSelected.png",
|
Gravity = Gravity.CenterVertical,
|
};
|
btnRemoteAccessHelp.X = flRemoteAccessTop.Width - btnRemoteAccessHelp.Width - Application.GetRealWidth (30);
|
flRemoteAccessTop.AddChidren (btnRemoteAccessHelp);
|
Button btnRemoteAccessCheck = new Button () {
|
Height = Application.GetMinRealAverage (98),
|
Width = Application.GetMinRealAverage (76),
|
UnSelectedImagePath = "Item/Check.png",
|
SelectedImagePath = "Item/CheckSelected.png",
|
Y = btnRemoteAccessHelp.Y,
|
};
|
btnRemoteAccessCheck.X = flRemoteAccessTop.Width - btnRemoteAccessCheck.Width - Application.GetRealWidth (100);
|
btnRemoteAccessHelp.MouseUpEventHandler += (sender, e) => {
|
new Tip () { MaxWidth = 150, Text = Language.StringByID (R.MyInternationalizationString.HelpRemoteAccess), Direction = AMPopTipDirection.Down, CloseTime = 4 }.Show ((View)sender);
|
};
|
flRemoteAccessTop.AddChidren (btnRemoteAccessCheck);
|
|
FrameLayout flRemoteAccessBody = new FrameLayout () {
|
Height = Application.GetRealHeight (0),
|
Width = LayoutParams.MatchParent,
|
};
|
sView.AddChidren (flRemoteAccessBody);
|
|
FrameLayout flRemoteAutoSetting = new FrameLayout () {
|
Height = Application.GetRealHeight (90),
|
};
|
flRemoteAccessBody.AddChidren (flRemoteAutoSetting);
|
|
|
|
Button btnRemoteAutoCheck = new Button () {
|
Gravity = Gravity.Center,
|
Width = Application.GetRealWidth (300),
|
Height = Application.GetRealHeight (60),
|
BorderColor = SkinStyle.Current.BorderColor,
|
BorderWidth = 1,
|
Radius = 5,
|
TextColor = SkinStyle.Current.TextColor1,
|
SelectedTextColor = SkinStyle.Current.TextColor1,
|
TextID = R.MyInternationalizationString.AutomaticSetting,
|
TextAlignment = TextAlignment.Center,
|
//Text = "YES"
|
};
|
flRemoteAutoSetting.AddChidren (btnRemoteAutoCheck);
|
|
|
Button btnGroupName = new Button () {
|
X = gatewayIDName.X,
|
Y = flRemoteAutoSetting.Bottom + Application.GetRealHeight (20),
|
TextAlignment = TextAlignment.CenterLeft,
|
Height = Application.GetRealHeight (49),
|
Width = Application.GetRealWidth (360),
|
TextID = R.MyInternationalizationString.GroupName,
|
TextColor = SkinStyle.Current.TextColor1
|
};
|
flRemoteAccessBody.AddChidren (btnGroupName);
|
|
EditText etGroupName = new EditText () {
|
X = gatewayIDName.X,
|
TextAlignment = TextAlignment.CenterLeft,
|
Height = Application.GetRealHeight (55),
|
Width = Application.GetRealWidth (440),
|
Y = btnGroupName.Bottom + Application.GetRealHeight (2),
|
//BackgroundColor = SkinStyle.Current.SysEditBox,
|
BorderColor = SkinStyle.Current.BorderColor,
|
BorderWidth = 1,
|
Radius = 5,
|
TextColor = SkinStyle.Current.TextColor1
|
};
|
flRemoteAccessBody.AddChidren (etGroupName);
|
|
Button lblProjectName = new Button () {
|
X = gatewayIDName.X,
|
TextAlignment = TextAlignment.CenterLeft,
|
Height = Application.GetRealHeight (40),
|
Width = Application.GetRealWidth (360),
|
TextID = R.MyInternationalizationString.ProjectName,
|
Y = etGroupName.Bottom + Application.GetRealHeight (2),
|
TextColor = SkinStyle.Current.TextColor1
|
};
|
flRemoteAccessBody.AddChidren (lblProjectName);
|
|
EditText etProjectName = new EditText () {
|
X = gatewayIDName.X,
|
TextAlignment = TextAlignment.CenterLeft,
|
Height = Application.GetRealHeight (55),
|
Width = Application.GetRealWidth (440),
|
Y = lblProjectName.Bottom + Application.GetRealHeight (2),
|
//BackgroundColor = SkinStyle.Current.SysEditBox,
|
BorderColor = SkinStyle.Current.BorderColor,
|
BorderWidth = 1,
|
Radius = 5,
|
TextColor = SkinStyle.Current.TextColor1
|
};
|
flRemoteAccessBody.AddChidren (etProjectName);
|
|
Button lblUsername = new Button () {
|
X = lblProjectName.X,
|
TextAlignment = TextAlignment.CenterLeft,
|
Height = Application.GetRealHeight (55),
|
Width = Application.GetRealWidth (440),
|
TextID = R.MyInternationalizationString.UserName,
|
Y = etProjectName.Bottom + Application.GetRealHeight (2),
|
TextColor = SkinStyle.Current.TextColor1
|
};
|
flRemoteAccessBody.AddChidren (lblUsername);
|
|
EditText etUserName = new EditText () {
|
X = lblProjectName.X,
|
TextAlignment = TextAlignment.CenterLeft,
|
Height = Application.GetRealHeight (55),
|
Width = Application.GetRealWidth (440),
|
//BackgroundColor = SkinStyle.Current.SysEditBox,
|
BorderColor = SkinStyle.Current.BorderColor,
|
BorderWidth = 1,
|
Radius = 5,
|
Y = lblUsername.Bottom + Application.GetRealHeight (2),
|
TextColor = SkinStyle.Current.TextColor1
|
};
|
flRemoteAccessBody.AddChidren (etUserName);
|
|
Button btnGatewayPassword = new Button () {
|
X = lblProjectName.X,
|
Y = etUserName.Bottom + Application.GetRealHeight (2),
|
Height = Application.GetRealHeight (55),
|
Width = Application.GetRealWidth (440),
|
TextID = R.MyInternationalizationString.PassWrod,
|
TextAlignment = TextAlignment.CenterLeft,
|
TextColor = SkinStyle.Current.TextColor1
|
};
|
flRemoteAccessBody.AddChidren (btnGatewayPassword);
|
|
EditText etGatewayPassWrod = new EditText () {
|
X = lblProjectName.X,
|
Y = btnGatewayPassword.Bottom + Application.GetRealHeight (2),
|
TextAlignment = TextAlignment.CenterLeft,
|
Height = Application.GetRealHeight (55),
|
Width = Application.GetRealWidth (440),
|
Text = gatewayDevice.Password,
|
//BackgroundColor = SkinStyle.Current.SysEditBox,
|
BorderColor = SkinStyle.Current.BorderColor,
|
BorderWidth = 1,
|
Radius = 5,
|
TextColor = SkinStyle.Current.TextColor1
|
};
|
flRemoteAccessBody.AddChidren (etGatewayPassWrod);
|
|
Button btnServerIP = new Button () {
|
X = lblProjectName.X,
|
Y = etGatewayPassWrod.Bottom + Application.GetRealHeight (2),
|
Height = Application.GetRealHeight (55),
|
Width = Application.GetRealWidth (440),
|
TextID = R.MyInternationalizationString.ServerIP,
|
TextAlignment = TextAlignment.CenterLeft,
|
TextColor = SkinStyle.Current.TextColor1
|
};
|
flRemoteAccessBody.AddChidren (btnServerIP);
|
|
EditText etServerIP = new EditText () {
|
X = lblProjectName.X,
|
Y = btnServerIP.Bottom + Application.GetRealHeight (2),
|
TextAlignment = TextAlignment.CenterLeft,
|
Height = Application.GetRealHeight (55),
|
Width = Application.GetRealWidth (300),
|
//BackgroundColor = SkinStyle.Current.SysEditBox,
|
BorderColor = SkinStyle.Current.BorderColor,
|
BorderWidth = 1,
|
Radius = 5,
|
TextColor = SkinStyle.Current.TextColor1
|
};
|
flRemoteAccessBody.AddChidren (etServerIP);
|
|
EditText etServerIPPoint = new EditText () {
|
X = etServerIP.Right + 2,
|
Y = etServerIP.Y,
|
TextAlignment = TextAlignment.CenterLeft,
|
Height = Application.GetRealHeight (55),
|
Width = Application.GetRealWidth (140) - 2,
|
//BackgroundColor = SkinStyle.Current.SysEditBox,
|
BorderColor = SkinStyle.Current.BorderColor,
|
BorderWidth = 1,
|
Radius = 5,
|
TextColor = SkinStyle.Current.TextColor1
|
};
|
flRemoteAccessBody.AddChidren (etServerIPPoint);
|
|
Button btnAlternativeServerIP = new Button () {
|
X = lblProjectName.X,
|
Y = etServerIP.Bottom + Application.GetRealHeight (2),
|
Height = Application.GetRealHeight (55),
|
Width = Application.GetRealWidth (440),
|
TextID = R.MyInternationalizationString.AlternativeServerIP,
|
TextAlignment = TextAlignment.CenterLeft,
|
TextColor = SkinStyle.Current.TextColor1
|
};
|
flRemoteAccessBody.AddChidren (btnAlternativeServerIP);
|
|
EditText etAlternativeServerIP = new EditText () {
|
X = lblProjectName.X,
|
Y = btnAlternativeServerIP.Bottom + Application.GetRealHeight (2),
|
TextAlignment = TextAlignment.CenterLeft,
|
Height = Application.GetRealHeight (55),
|
Width = Application.GetRealWidth (300),
|
//BackgroundColor = SkinStyle.Current.SysEditBox,
|
BorderColor = SkinStyle.Current.BorderColor,
|
BorderWidth = 1,
|
Radius = 5,
|
TextColor = SkinStyle.Current.TextColor1
|
};
|
flRemoteAccessBody.AddChidren (etAlternativeServerIP);
|
EditText etAlternativeServerIPPoint = new EditText () {
|
X = etAlternativeServerIP.Right + 2,
|
Y = etAlternativeServerIP.Y,
|
TextAlignment = TextAlignment.CenterLeft,
|
Height = Application.GetRealHeight (55),
|
Width = Application.GetRealWidth (140) - 2,
|
//BackgroundColor = SkinStyle.Current.SysEditBox,
|
BorderColor = SkinStyle.Current.BorderColor,
|
BorderWidth = 1,
|
Radius = 5,
|
TextColor = SkinStyle.Current.TextColor1
|
};
|
flRemoteAccessBody.AddChidren (etAlternativeServerIPPoint);
|
|
Button btnGatewaySave = new Button () {
|
X = (Application.CurrentWidth / 2 - 30),
|
Height = Application.GetRealHeight (55),
|
Width = Application.GetRealWidth (100),
|
BackgroundColor = SkinStyle.Current.ButtonColor,
|
SelectedBackgroundColor = SkinStyle.Current.SelectedColor,
|
BorderWidth = 1,
|
Radius = 5,
|
BorderColor = SkinStyle.Current.Transparent,
|
TextID = R.MyInternationalizationString.SAVE,
|
Y = etAlternativeServerIP.Bottom + Application.GetRealHeight (20),
|
TextColor = SkinStyle.Current.TextColor1
|
};
|
flRemoteAccessBody.AddChidren (btnGatewaySave);
|
flRemoteAccessBody.Height = btnGatewaySave.Bottom + Application.GetRealHeight (20);
|
byte [] gatewayBytes = null;
|
byte [] serverIPBytes = null;
|
System.Threading.Tasks.Task.Run (() => {
|
gatewayBytes = Control.ControlBytesSendHasReturn (Command.ReadGateWayModelInfo, gatewayDevice.SubnetID, gatewayDevice.DeviceID, new byte [] { });
|
serverIPBytes = Control.ControlBytesSendHasReturn (Command.ReadGatewayServerIP, gatewayDevice.SubnetID, gatewayDevice.DeviceID, new byte [] { });
|
IO.FileUtils.WriteFileByBytes ("Remote_GatewayBytes_" + gatewayDevice.Name + "_" + gatewayDevice.SubnetID, gatewayBytes);
|
if (gatewayBytes != null && serverIPBytes != null) {
|
Application.RunOnMainThread (() => {
|
#region ---读取、设置组名工程名---
|
int model = gatewayBytes [0];
|
gatewayDevice.Remote_GroupName = CommonPage.MyEncodingGB2312.GetString (gatewayBytes, 1, 20).Trim ('\0');
|
gatewayDevice.Remote_ProjectName = CommonPage.MyEncodingGB2312.GetString (gatewayBytes, 21, 20).Trim ('\0');
|
gatewayDevice.Remote_UserName = CommonPage.MyEncodingGB2312.GetString (gatewayBytes, 41, 8).Trim ('\0');
|
gatewayDevice.Remote_Password = CommonPage.MyEncodingGB2312.GetString (gatewayBytes, 49, 8).Trim ('\0');
|
IO.FileUtils.SaveEquipmentMessage (gatewayDevice);
|
|
etGroupName.Text = gatewayDevice.Remote_GroupName;
|
etProjectName.Text = gatewayDevice.Remote_ProjectName;
|
etUserName.Text = gatewayDevice.Remote_UserName;
|
etGatewayPassWrod.Text = gatewayDevice.Remote_Password;
|
|
btnRemoteAccessCheck.MouseUpEventHandler += (sender, e) => {
|
if (!btnRemoteAccessCheck.IsSelected) {
|
flRemoteAccessBody.Height = btnGatewaySave.Bottom + Application.GetRealHeight (20);
|
btnRemoteAccessCheck.IsSelected = true;
|
gatewayDevice.RometoMode = gatewayBytes [0] = 2;
|
Control.ControlBytesSend (Command.SetGateWayModelInfo, gatewayDevice.SubnetID, gatewayDevice.DeviceID, gatewayBytes);
|
UserConfig.Instance.RemoteModeFile = "Equipment_" + gatewayDevice.Type.ToString () + "_" + gatewayDevice.SubnetID.ToString () + "_" + gatewayDevice.DeviceID.ToString ();
|
UserConfig.Instance.SaveUserConfig ();
|
} else {
|
flRemoteAccessBody.Height = Application.GetRealHeight (0);
|
btnRemoteAccessCheck.IsSelected = false;
|
gatewayDevice.RometoMode = gatewayBytes [0] = 0;
|
Control.ControlBytesSend (Command.SetGateWayModelInfo, gatewayDevice.SubnetID, gatewayDevice.DeviceID, gatewayBytes);
|
UserConfig.Instance.RemoteModeFile = "";
|
UserConfig.Instance.SaveUserConfig ();
|
}
|
IO.FileUtils.SaveEquipmentMessage (gatewayDevice);
|
};
|
#endregion
|
#region ---读取、设置 网关IP地址参数---
|
string serverIP1 = serverIPBytes [0].ToString () + "." + serverIPBytes [1].ToString () + "." +
|
serverIPBytes [2].ToString () + "." + serverIPBytes [3].ToString ();
|
string serverIP1Point = ((serverIPBytes [4] * 256) + serverIPBytes [5]).ToString ();
|
string serverIP2 = serverIPBytes [6].ToString () + "." + serverIPBytes [7].ToString () + "." +
|
serverIPBytes [8].ToString () + "." + serverIPBytes [9].ToString ();
|
string serverIP2Point = ((serverIPBytes [10] * 256) + serverIPBytes [11]).ToString ();
|
etServerIP.Text = serverIP1;
|
etServerIPPoint.Text = serverIP1Point == "0" ? "9999" : serverIP1Point;
|
serverIP1Point = etServerIPPoint.Text;
|
etAlternativeServerIP.Text = serverIP2;
|
etAlternativeServerIPPoint.Text = serverIP2Point == "0" ? "9999" : serverIP2Point;
|
serverIP2Point = etAlternativeServerIPPoint.Text;
|
btnGatewaySave.MouseUpEventHandler += (sender, e) => {
|
gatewayDevice.Remote_GroupName = etGroupName.Text.Trim ();// "james";//gatewayGroupName;
|
gatewayDevice.Remote_ProjectName = etProjectName.Text.Trim ();//"myhome";//gatewayProjectName;
|
gatewayDevice.Remote_UserName = etUserName.Text.Trim ();//"james";//gatewayUserName;
|
gatewayDevice.Remote_Password = etGatewayPassWrod.Text.Trim ();//"chy1125";//gatewayPassWord;
|
|
string [] strServerIP = etServerIP.Text.Split ('.');
|
string [] strServerIP1 = etAlternativeServerIP.Text.Split ('.');
|
IO.FileUtils.SaveEquipmentMessage (gatewayDevice);
|
System.Threading.Tasks.Task.Run (() => {
|
try {
|
Application.RunOnMainThread (() => {
|
MainPage.Loading.Start ("Sending...");
|
});
|
byte [] ggn = new byte [20];
|
byte [] b1 = CommonPage.MyEncodingGB2312.GetBytes (gatewayDevice.Remote_GroupName);
|
Array.Copy (b1, 0, ggn, 0, 20 < b1.Length ? 20 : b1.Length);
|
|
byte [] gpn = new byte [20];
|
byte [] b2 = CommonPage.MyEncodingGB2312.GetBytes (gatewayDevice.Remote_ProjectName);
|
Array.Copy (b2, 0, gpn, 0, 20 < b2.Length ? 20 : b2.Length);
|
|
byte [] gun = new byte [8];
|
byte [] b3 = CommonPage.MyEncodingGB2312.GetBytes (gatewayDevice.Remote_UserName);
|
Array.Copy (b3, 0, gun, 0, 8 < b3.Length ? 8 : b3.Length);
|
|
byte [] gpw = new byte [8];
|
byte [] b4 = CommonPage.MyEncodingGB2312.GetBytes (gatewayDevice.Remote_Password);
|
Array.Copy (b4, 0, gpw, 0, 8 < b4.Length ? 8 : b4.Length);
|
|
|
byte [] macAddress = Control.ControlBytesSendHasReturn (Command.ReadDeviceMac, gatewayDevice.SubnetID, gatewayDevice.DeviceID, new byte [] { });
|
byte [] sendServerBytes = new byte [56];
|
Array.Copy (gpn, 0, sendServerBytes, 0, 20 < gpn.Length ? 20 : gpn.Length);
|
Array.Copy (ggn, 0, sendServerBytes, 20, 20 < ggn.Length ? 20 : ggn.Length);
|
Array.Copy (gun, 0, sendServerBytes, 40, 8 < gun.Length ? 8 : gun.Length);
|
Array.Copy (macAddress, 0, sendServerBytes, 48, 8 < macAddress.Length ? 8 : macAddress.Length);
|
Control control = new Control ();
|
control.Send (new Target () {
|
IPEndPoint = new System.Net.IPEndPoint (System.Net.IPAddress.Parse (MainPage.SeviceIP), 9999),
|
Command = Command.SendRemoteInfoToServer,
|
SubnetID = 251,
|
DeviceID = 251,
|
AddData = sendServerBytes,
|
}, SendCount.Three, true);
|
var serverResult = control.UsefulBytes;
|
if (serverResult == null || serverResult [0] == 0) {
|
Application.RunOnMainThread (() => {
|
new Alert (Language.StringByID (R.MyInternationalizationString.Tip), Language.StringByID (R.MyInternationalizationString.OperationFailed),
|
Language.StringByID (R.MyInternationalizationString.Close)).Show ();
|
});
|
//} else if (serverResult [0] == 2) {
|
//Application.RunOnMainThread (() => {
|
// new Alert (Language.StringByID (R.MyInternationalizationString.Tip), Language.StringByID (R.MyInternationalizationString.HaveTheSame),
|
// Language.StringByID (R.MyInternationalizationString.Close)).Show ();
|
//});
|
} else {
|
Array.Copy (ggn, 0, gatewayBytes, 1, 20 < ggn.Length ? 20 : ggn.Length);
|
Array.Copy (gpn, 0, gatewayBytes, 21, 20 < gpn.Length ? 20 : gpn.Length);
|
Array.Copy (gun, 0, gatewayBytes, 41, 8 < gun.Length ? 8 : gun.Length);
|
Array.Copy (gpw, 0, gatewayBytes, 49, 8 < gpw.Length ? 8 : gpw.Length);
|
|
Control.ControlBytesSend (Command.SetGateWayModelInfo, gatewayDevice.SubnetID, gatewayDevice.DeviceID, gatewayBytes);
|
|
if (strServerIP.Length != 4 || strServerIP1.Length != 4) {
|
throw new Exception ();
|
} else {
|
serverIPBytes [0] = Convert.ToByte (strServerIP [0]);
|
serverIPBytes [1] = Convert.ToByte (strServerIP [1]);
|
serverIPBytes [2] = Convert.ToByte (strServerIP [2]);
|
serverIPBytes [3] = Convert.ToByte (strServerIP [3]);
|
int point1 = 9999;
|
if (!int.TryParse (serverIP1Point, out point1)) {
|
point1 = 9999;
|
}
|
serverIPBytes [4] = Convert.ToByte (point1 / 256);
|
serverIPBytes [5] = Convert.ToByte (point1 % 256);
|
|
serverIPBytes [6] = Convert.ToByte (strServerIP1 [0]);
|
serverIPBytes [7] = Convert.ToByte (strServerIP1 [1]);
|
serverIPBytes [8] = Convert.ToByte (strServerIP1 [2]);
|
serverIPBytes [9] = Convert.ToByte (strServerIP1 [3]); int point2 = 9999;
|
if (!int.TryParse (serverIP2Point, out point2)) {
|
point2 = 9999;
|
}
|
serverIPBytes [10] = Convert.ToByte (point2 / 256);
|
serverIPBytes [11] = Convert.ToByte (point2 % 256);
|
}
|
//远程ip地址的设置
|
var mobytes = Control.ControlBytesSendHasReturn (Command.SetGateWayModelInternetInfo, gatewayDevice.SubnetID, gatewayDevice.DeviceID, serverIPBytes);
|
if (mobytes == null || mobytes [0] == 0xF5) {
|
Application.RunOnMainThread (() => {
|
new Alert (Language.StringByID (R.MyInternationalizationString.Tip), Language.StringByID (R.MyInternationalizationString.OperationFailed),
|
Language.StringByID (R.MyInternationalizationString.Close)).Show ();
|
});
|
} else {
|
Application.RunOnMainThread (() => {
|
new Alert (Language.StringByID (R.MyInternationalizationString.Tip), Language.StringByID (R.MyInternationalizationString.ThePerationWasSuccessful), Language.StringByID (R.MyInternationalizationString.Confrim)).Show ();
|
});
|
}
|
}
|
} catch {
|
Application.RunOnMainThread (() => {
|
new Alert (Language.StringByID (R.MyInternationalizationString.Tip), Language.StringByID (R.MyInternationalizationString.TipPleaseEnterTheCorrectData), Language.StringByID (R.MyInternationalizationString.Close)).Show ();
|
});
|
} finally {
|
Application.RunOnMainThread (() => {
|
MainPage.Loading.Hide ();
|
});
|
}
|
});
|
};
|
#endregion
|
|
if (model == 0) {
|
flRemoteAccessBody.Height = Application.GetRealHeight (0);
|
btnRemoteAccessCheck.IsSelected = false;
|
} else {
|
flRemoteAccessBody.Height = btnGatewaySave.Bottom + Application.GetRealHeight (20);
|
btnRemoteAccessCheck.IsSelected = true;
|
UserConfig.Instance.RemoteModeFile = "Equipment_" + gatewayDevice.Type.ToString () + "_" + gatewayDevice.SubnetID.ToString () + "_" + gatewayDevice.DeviceID.ToString ();
|
UserConfig.Instance.SaveUserConfig ();
|
gatewayBytes [0] = 2;
|
}
|
});
|
}
|
});
|
|
|
btnRemoteAutoCheck.MouseUpEventHandler += (sender, e) => {
|
Dialog dialogRemoteAuto = new Dialog ();
|
|
FrameLayout remoteAutoView = new FrameLayout () {
|
Width = Application.GetRealWidth (400),
|
Height = Application.GetRealHeight (270 + 100),
|
Gravity = Gravity.Center,
|
Radius = 5,
|
BorderColor = SkinStyle.Current.Transparent,
|
BorderWidth = 0,
|
BackgroundColor = SkinStyle.Current.DialogColor,
|
};
|
dialogRemoteAuto.AddChidren (remoteAutoView);
|
|
|
Button remoteAutoTitle = new Button () {
|
Height = Application.GetRealHeight (80),
|
BackgroundColor = SkinStyle.Current.DialogTitle,
|
TextID = R.MyInternationalizationString.RemotePassword,
|
TextColor = SkinStyle.Current.DialogTextColor,
|
TextAlignment = TextAlignment.Center,
|
};
|
remoteAutoView.AddChidren (remoteAutoTitle);
|
|
|
EditText etRemoteAutoPW = new EditText () {
|
Gravity = Gravity.Center,
|
Height = Application.GetRealHeight (55),
|
Width = Application.GetRealWidth (300),
|
//BackgroundColor = SkinStyle.Current.SysEditBox,
|
BorderColor = SkinStyle.Current.BorderColor,
|
TextAlignment = TextAlignment.Center,
|
BorderWidth = 1,
|
Radius = 5,
|
TextColor = SkinStyle.Current.TextColor
|
};
|
remoteAutoView.AddChidren (etRemoteAutoPW);
|
|
FrameLayout remoteAutoBottom = new FrameLayout () {
|
Y = Application.GetRealHeight (270 + 20),
|
Height = Application.GetRealHeight (83),
|
BackgroundColor = SkinStyle.Current.LineColor,
|
};
|
remoteAutoView.AddChidren (remoteAutoBottom);
|
|
Button btnCancel = new Button () {
|
Width = Application.GetRealWidth (200),
|
BackgroundColor = SkinStyle.Current.DialogTitle,
|
TextID = R.MyInternationalizationString.cancel,
|
TextAlignment = TextAlignment.Center,
|
};
|
remoteAutoBottom.AddChidren (btnCancel);
|
btnCancel.MouseUpEventHandler += (ssd, de) => {
|
dialogRemoteAuto.Close ();
|
};
|
|
Button btnConfrim = new Button () {
|
X = btnCancel.Right + 1,
|
Width = Application.GetRealWidth (200),
|
BackgroundColor = SkinStyle.Current.DialogTitle,
|
TextID = R.MyInternationalizationString.Confrim,
|
TextAlignment = TextAlignment.Center,
|
};
|
remoteAutoBottom.AddChidren (btnConfrim);
|
|
btnConfrim.MouseUpEventHandler += (ssd, de) => {
|
if (etRemoteAutoPW.Text.Trim ().Length < 6) {
|
new Tip () { MaxWidth = 250, Text = Language.StringByID (R.MyInternationalizationString.PasswordLenghtTip), Direction = AMPopTipDirection.Down, CloseTime = 3 }.Show (etRemoteAutoPW);
|
return;
|
}
|
|
gatewayDevice.Remote_GroupName = etGroupName.Text = UserConfig.Instance.CurrentRegion.RegionName;
|
gatewayDevice.Remote_ProjectName = etProjectName.Text = UserConfig.Instance.CurrentRegion.RegionName;
|
gatewayDevice.Remote_UserName = etUserName.Text = "Admin";
|
gatewayDevice.Remote_Password = etGatewayPassWrod.Text = etRemoteAutoPW.Text.Trim ();
|
|
string [] strServerIP = (MainPage.SeviceIP).Split ('.');
|
string [] strServerIP1 = (MainPage.SeviceIP).Split ('.');
|
etServerIP.Text = btnAlternativeServerIP.Text = MainPage.SeviceIP;
|
etServerIPPoint.Text = etAlternativeServerIPPoint.Text = "9999";
|
System.Threading.Tasks.Task.Run (() => {
|
try {
|
Application.RunOnMainThread (() => {
|
MainPage.Loading.Start ("Sending...");
|
});
|
byte [] ggn = new byte [20];
|
byte [] b1 = CommonPage.MyEncodingGB2312.GetBytes (gatewayDevice.Remote_GroupName);
|
Array.Copy (b1, 0, ggn, 0, 20 < b1.Length ? 20 : b1.Length);
|
|
byte [] gpn = new byte [20];
|
byte [] b2 = CommonPage.MyEncodingGB2312.GetBytes (gatewayDevice.Remote_ProjectName);
|
Array.Copy (b2, 0, gpn, 0, 20 < b2.Length ? 20 : b2.Length);
|
|
byte [] gun = new byte [8];
|
byte [] b3 = CommonPage.MyEncodingGB2312.GetBytes (gatewayDevice.Remote_UserName);
|
Array.Copy (b3, 0, gun, 0, 8 < b3.Length ? 8 : b3.Length);
|
|
byte [] gpw = new byte [8];
|
byte [] b4 = CommonPage.MyEncodingGB2312.GetBytes (gatewayDevice.Remote_Password);
|
Array.Copy (b4, 0, gpw, 0, 8 < b4.Length ? 8 : b4.Length);
|
|
|
byte [] macAddress = Control.ControlBytesSendHasReturn (Command.ReadDeviceMac, gatewayDevice.SubnetID, gatewayDevice.DeviceID, new byte [] { });
|
byte [] sendServerBytes = new byte [56];
|
Array.Copy (gpn, 0, sendServerBytes, 0, 20 < gpn.Length ? 20 : gpn.Length);
|
Array.Copy (ggn, 0, sendServerBytes, 20, 20 < ggn.Length ? 20 : ggn.Length);
|
Array.Copy (gun, 0, sendServerBytes, 40, 8 < gun.Length ? 8 : gun.Length);
|
Array.Copy (macAddress, 0, sendServerBytes, 48, 8 < macAddress.Length ? 8 : macAddress.Length);
|
Control control = new Control ();
|
control.Send (new Target () {
|
IPEndPoint = new System.Net.IPEndPoint (System.Net.IPAddress.Parse (MainPage.SeviceIP), 9999),
|
Command = Command.SendRemoteInfoToServer,
|
SubnetID = 251,
|
DeviceID = 251,
|
AddData = sendServerBytes,
|
}, SendCount.Three, true);
|
var serverResult = control.UsefulBytes;
|
if (serverResult == null || serverResult [0] == 0) {
|
Application.RunOnMainThread (() => {
|
new Alert (Language.StringByID (R.MyInternationalizationString.Tip), Language.StringByID (R.MyInternationalizationString.OperationFailed),
|
Language.StringByID (R.MyInternationalizationString.Close)).Show ();
|
});
|
} else {
|
Array.Copy (ggn, 0, gatewayBytes, 1, 20 < ggn.Length ? 20 : ggn.Length);
|
Array.Copy (gpn, 0, gatewayBytes, 21, 20 < gpn.Length ? 20 : gpn.Length);
|
Array.Copy (gun, 0, gatewayBytes, 41, 8 < gun.Length ? 8 : gun.Length);
|
Array.Copy (gpw, 0, gatewayBytes, 49, 8 < gpw.Length ? 8 : gpw.Length);
|
|
Control.ControlBytesSend (Command.SetGateWayModelInfo, gatewayDevice.SubnetID, gatewayDevice.DeviceID, gatewayBytes);
|
|
if (strServerIP.Length != 4 || strServerIP1.Length != 4) {
|
throw new Exception ();
|
} else {
|
serverIPBytes [0] = Convert.ToByte (strServerIP [0]);
|
serverIPBytes [1] = Convert.ToByte (strServerIP [1]);
|
serverIPBytes [2] = Convert.ToByte (strServerIP [2]);
|
serverIPBytes [3] = Convert.ToByte (strServerIP [3]);
|
int point1 = 9999;
|
|
serverIPBytes [4] = Convert.ToByte (point1 / 256);
|
serverIPBytes [5] = Convert.ToByte (point1 % 256);
|
|
serverIPBytes [6] = Convert.ToByte (strServerIP1 [0]);
|
serverIPBytes [7] = Convert.ToByte (strServerIP1 [1]);
|
serverIPBytes [8] = Convert.ToByte (strServerIP1 [2]);
|
serverIPBytes [9] = Convert.ToByte (strServerIP1 [3]);
|
int point2 = 9999;
|
|
serverIPBytes [10] = Convert.ToByte (point2 / 256);
|
serverIPBytes [11] = Convert.ToByte (point2 % 256);
|
}
|
//远程ip地址的设置
|
var mobytes = Control.ControlBytesSendHasReturn (Command.SetGateWayModelInternetInfo, gatewayDevice.SubnetID, gatewayDevice.DeviceID, serverIPBytes);
|
if (mobytes == null || mobytes [0] == 0xF5) {
|
Application.RunOnMainThread (() => {
|
new Alert (Language.StringByID (R.MyInternationalizationString.Tip), Language.StringByID (R.MyInternationalizationString.OperationFailed),
|
Language.StringByID (R.MyInternationalizationString.Close)).Show ();
|
});
|
} else {
|
Application.RunOnMainThread (() => {
|
new Alert (Language.StringByID (R.MyInternationalizationString.Tip), Language.StringByID (R.MyInternationalizationString.ThePerationWasSuccessful), Language.StringByID (R.MyInternationalizationString.Confrim)).Show ();
|
IO.FileUtils.SaveEquipmentMessage (gatewayDevice);
|
dialogRemoteAuto.Close ();
|
});
|
}
|
}
|
} catch {
|
Application.RunOnMainThread (() => {
|
new Alert (Language.StringByID (R.MyInternationalizationString.Tip), Language.StringByID (R.MyInternationalizationString.TipPleaseEnterTheCorrectData), Language.StringByID (R.MyInternationalizationString.Close)).Show ();
|
});
|
} finally {
|
Application.RunOnMainThread (() => {
|
MainPage.Loading.Hide ();
|
});
|
}
|
});
|
};
|
|
dialogRemoteAuto.Show ();
|
};
|
|
#endregion
|
|
|
|
#region--------------广播参数--------------------------
|
RowLayout flRadioParameterTop = new RowLayout () {
|
Height = Application.GetRealHeight (98),
|
Width = LayoutParams.MatchParent,
|
BackgroundColor = SkinStyle.Current.MainColor,
|
};
|
sView.AddChidren (flRadioParameterTop);
|
|
Button btnRadioParameterIcon = new Button () {
|
X = Application.GetRealWidth (15),
|
Height = Application.GetRealHeight (66),
|
Width = Application.GetRealWidth (66),
|
UnSelectedImagePath = "Item/Wireless.png",
|
SelectedImagePath = "Item/WirelessSelected.png",
|
Gravity = Gravity.CenterVertical,
|
};
|
flRadioParameterTop.AddChidren (btnRadioParameterIcon);
|
Button btnRadioParameterTitel = new Button () {
|
X = Application.GetRealWidth (11) + btnRadioParameterIcon.Right,
|
Height = Application.GetRealHeight (41),
|
Width = Application.GetRealWidth (500),
|
TextID = R.MyInternationalizationString.RadioParameters,
|
Gravity = Gravity.CenterVertical,
|
TextAlignment = TextAlignment.CenterLeft,
|
TextColor = SkinStyle.Current.TextColor1
|
};
|
flRadioParameterTop.AddChidren (btnRadioParameterTitel);
|
Button btnRadioParameterHelp = new Button () {
|
Height = Application.GetMinRealAverage (98),
|
Width = Application.GetMinRealAverage (76),
|
UnSelectedImagePath = "Item/Help.png",
|
SelectedImagePath = "Item/HelpSelected.png",
|
Gravity = Gravity.CenterVertical,
|
TextColor = SkinStyle.Current.TextColor1
|
};
|
btnRadioParameterHelp.X = flRadioParameterTop.Width - btnRadioParameterHelp.Width - Application.GetRealWidth (30);
|
btnRadioParameterHelp.MouseUpEventHandler += (sender, e) => {
|
new Tip () { MaxWidth = 150, Text = Language.StringByID (R.MyInternationalizationString.GatewayConfigHelp), Direction = AMPopTipDirection.Down, CloseTime = 4 }.Show ((View)sender);
|
};
|
flRadioParameterTop.AddChidren (btnRadioParameterHelp);
|
|
//-------------------------
|
FrameLayout flRadioParameterBody = new FrameLayout () {
|
Height = Application.GetRealHeight (598),
|
Width = LayoutParams.MatchParent,
|
};
|
//if (usefulBytesOther != null)
|
sView.AddChidren (flRadioParameterBody);
|
Button lblBand = new Button () {
|
X = gatewayIDName.X,
|
TextAlignment = TextAlignment.CenterLeft,
|
Height = Application.GetRealHeight (60),
|
Width = Application.GetRealWidth (130),
|
TextID = R.MyInternationalizationString.Band,
|
Y = Application.GetRealHeight (20),
|
TextColor = SkinStyle.Current.TextColor1
|
};
|
flRadioParameterBody.AddChidren (lblBand);
|
|
string [] bandText = new string [3];
|
if (Language.CurrentLanguage == "English") {
|
bandText [0] = "WPAN (China)";
|
bandText [1] = "SRD (European)";
|
bandText [2] = "ISM (North_American)";
|
} else if (Language.CurrentLanguage == "Chinese") {
|
bandText [0] = "WPAN(中国)";
|
bandText [1] = "SRD(欧洲)";
|
bandText [2] = "ISM(美国)";
|
}
|
Spinner spinnerband = new Spinner () {
|
X = lblBand.Right + Application.GetRealWidth (5),
|
Height = Application.GetRealHeight (55),
|
Width = Application.GetRealWidth (310),
|
Y = Application.GetRealHeight (30),
|
};
|
spinnerband.AdapterStr = bandText;//.AddAdapter(bandText);
|
spinnerband.SelectedItemChanged += (sender, e) => {
|
System.Console.WriteLine (e);
|
gatewayDevice.WirelessBand = (byte)e;
|
};
|
flRadioParameterBody.AddChidren (spinnerband);
|
try {
|
spinnerband.CurrentRow = Convert.ToInt32 (gatewayDevice.WirelessBand);
|
} catch { }
|
Button btnChannel = new Button () {
|
X = lblBand.X,
|
TextAlignment = TextAlignment.CenterLeft,
|
Height = Application.GetRealHeight (55),
|
Width = Application.GetRealWidth (130),
|
TextID = R.MyInternationalizationString.Channel,
|
Y = lblBand.Bottom + Application.GetRealHeight (12),
|
TextColor = SkinStyle.Current.TextColor1
|
};
|
btnChannel.Text += ":";
|
flRadioParameterBody.AddChidren (btnChannel);
|
|
#region channelText
|
string channelText = "";
|
string [] channelTextSpinner = new string [13];
|
if (gatewayDevice.WirelessBand == 0) {
|
channelTextSpinner [0] = "780MHz";
|
channelTextSpinner [1] = "782MHz";
|
channelTextSpinner [2] = "784MHz";
|
channelTextSpinner [3] = "786MHz";
|
channelTextSpinner [4] = "770MHz";
|
channelTextSpinner [5] = "772MHz";
|
channelTextSpinner [6] = "774MHz";
|
channelTextSpinner [7] = "776MHz";
|
channelTextSpinner [8] = "778MHz";
|
channelTextSpinner [9] = "788MHz";
|
channelTextSpinner [10] = "790MHz";
|
channelTextSpinner [11] = "792MHz";
|
channelTextSpinner [12] = "794MHz";
|
} else if (gatewayDevice.WirelessBand == 1) {
|
channelTextSpinner [0] = "864MHz";
|
channelTextSpinner [1] = "866MHz";
|
channelTextSpinner [2] = "868MHz";
|
channelTextSpinner [3] = "870MHz";
|
channelTextSpinner [4] = "858MHz";
|
channelTextSpinner [5] = "860MHz";
|
channelTextSpinner [6] = "862MHz";
|
channelTextSpinner [7] = "872MHz";
|
channelTextSpinner [8] = "874MHz";
|
channelTextSpinner [9] = "876MHz";
|
channelTextSpinner [10] = "878MHz";
|
channelTextSpinner [11] = "880MHz";
|
channelTextSpinner [12] = "882MHz";
|
|
} else if (gatewayDevice.WirelessBand == 2) {
|
channelTextSpinner [0] = "904MHz";
|
channelTextSpinner [1] = "906MHz";
|
channelTextSpinner [2] = "908MHz";
|
channelTextSpinner [3] = "910MHz";
|
channelTextSpinner [4] = "912MHz";
|
channelTextSpinner [5] = "914MHz";
|
channelTextSpinner [6] = "916MHz";
|
channelTextSpinner [7] = "918MHz";
|
channelTextSpinner [8] = "920MHz";
|
channelTextSpinner [9] = "922MHz";
|
channelTextSpinner [10] = "924MHz";
|
channelTextSpinner [11] = "926MHz";
|
channelTextSpinner [12] = "928MHz";
|
}
|
#endregion
|
|
Spinner spinnerChannel = new Spinner () {
|
X = spinnerband.X,
|
Height = Application.GetRealHeight (60),
|
Width = Application.GetRealWidth (310),
|
Y = btnChannel.Y + Application.GetRealHeight (5),
|
};
|
spinnerChannel.AdapterStr = channelTextSpinner;//.AddAdapter(channelTextSpinner);
|
spinnerChannel.SelectedItemChanged += (sender, e) => {
|
System.Console.WriteLine (e);
|
gatewayDevice.WirelessChannel = (byte)e;
|
};
|
flRadioParameterBody.AddChidren (spinnerChannel);
|
try {
|
spinnerChannel.CurrentRow = Convert.ToInt32 (gatewayDevice.WirelessChannel);
|
} catch { }
|
Button lblPasswordG = new Button () {
|
X = lblBand.X,
|
TextAlignment = TextAlignment.CenterLeft,
|
Height = Application.GetRealHeight (55),
|
Width = Application.GetRealWidth (130),
|
TextID = R.MyInternationalizationString.PassWrod,
|
Y = btnChannel.Bottom + Application.GetRealHeight (22),
|
TextColor = SkinStyle.Current.TextColor1
|
};
|
flRadioParameterBody.AddChidren (lblPasswordG);
|
|
channelText = gatewayDevice.WirelessPassword;
|
EditText etRadioParameterPassWrod = new EditText () {
|
X = spinnerband.X,
|
Y = spinnerChannel.Bottom + Application.GetRealHeight (12),
|
Text = channelText,
|
TextAlignment = TextAlignment.CenterLeft,
|
Height = Application.GetRealHeight (55),
|
Width = Application.GetRealWidth (310),
|
//UnSelectedImagePath = "Item/TextBox.png",
|
//BackgroundColor = SkinStyle.Current.SysEditBox,
|
BorderColor = SkinStyle.Current.BorderColor,
|
BorderWidth = 1,
|
Radius = 5,
|
TextColor = SkinStyle.Current.TextColor1,
|
};
|
flRadioParameterBody.AddChidren (etRadioParameterPassWrod);
|
|
//--------------------------------------------------------------------------------------
|
Button btnRadioParameterSave = new Button () {
|
X = (Application.CurrentWidth / 2 - 30),
|
Height = Application.GetRealHeight (55),
|
Width = Application.GetRealWidth (98),
|
BackgroundColor = SkinStyle.Current.ButtonColor,
|
SelectedBackgroundColor = SkinStyle.Current.SelectedColor,
|
BorderWidth = 1,
|
Radius = 5,
|
BorderColor = SkinStyle.Current.Transparent,
|
TextID = R.MyInternationalizationString.SAVE,
|
Y = etRadioParameterPassWrod.Bottom + Application.GetRealHeight (20),
|
TextColor = SkinStyle.Current.TextColor1
|
};
|
flRadioParameterBody.AddChidren (btnRadioParameterSave);
|
flRadioParameterBody.Height = btnRadioParameterSave.Bottom + Application.GetRealHeight (20);
|
|
btnRadioParameterSave.MouseUpEventHandler += (sender, e) => {
|
UpdateOnePorWirelessFR (gatewayDevice);
|
//byte [] pw = CommonPage.MyEncodingGB2312.GetBytes (etRadioParameterPassWrod.Text.Trim ());
|
//byte [] pws = new byte [16];
|
//Array.Copy (pw, 0, pws, 0, 16 < pw.Length ? 16 : pw.Length);
|
//Array.Copy (pws, 0, usefulBytesOther, 8, pws.Length);
|
//byte [] meshGateway = new byte [23];
|
//Array.Copy (usefulBytesOther, 1, meshGateway, 0, 23);
|
//var suful = Control.ControlBytesSendHasReturn (Command.TestWriteManageWirelessNet, onePortWirelessFR.SubnetID, onePortWirelessFR.DeviceID, new byte [] { 0 });
|
//if (suful != null) {
|
// if (suful [0] == 0xF8) {
|
// Control.ControlBytesSend (Command.WriteManageWirelessNet, onePortWirelessFR.SubnetID, onePortWirelessFR.DeviceID, meshGateway);
|
// }
|
//}
|
//MainPage.Loading.Hide ();
|
//System.Console.WriteLine ("UpdateWirelessManage send.");
|
};
|
#endregion
|
|
#region--------------无线频率配对--------------------------
|
RowLayout flGatewayMapping = new RowLayout () {
|
Height = Application.GetRealHeight (98),
|
Width = LayoutParams.MatchParent,
|
BackgroundColor = SkinStyle.Current.MainColor,
|
};
|
sView.AddChidren (flGatewayMapping);
|
|
Button btnWirelessConfigIcon = new Button () {
|
X = Application.GetRealWidth (15),
|
Height = Application.GetRealHeight (66),
|
Width = Application.GetRealWidth (66),
|
UnSelectedImagePath = "Item/GatewayMapping.png",
|
SelectedImagePath = "Item/GatewayMappingSelected.png",
|
Gravity = Gravity.CenterVertical,
|
};
|
btnWirelessConfigIcon.MouseUpEventHandler += (sender, e) => {
|
ShowWirelessConfigDialog (gatewayDevice.SubnetID, gatewayDevice.DeviceID);
|
};
|
flGatewayMapping.AddChidren (btnWirelessConfigIcon);
|
Button btnWirelessConfigText = new Button () {
|
X = Application.GetRealWidth (11) + btnWirelessConfigIcon.Right,
|
Height = Application.GetRealHeight (41),
|
Width = Application.GetRealWidth (400),
|
TextID = R.MyInternationalizationString.PairingOfWirelessDevices,
|
Gravity = Gravity.CenterVertical,
|
TextAlignment = TextAlignment.CenterLeft,
|
TextColor = SkinStyle.Current.TextColor1
|
};
|
flGatewayMapping.AddChidren (btnWirelessConfigText);
|
btnWirelessConfigText.MouseUpEventHandler += (sender, e) => {
|
ShowWirelessConfigDialog (gatewayDevice.SubnetID, gatewayDevice.DeviceID);
|
};
|
Button btnGatewayMappingHelp = new Button () {
|
Height = Application.GetMinRealAverage (98),
|
Width = Application.GetMinRealAverage (76),
|
UnSelectedImagePath = "Item/Help.png",
|
SelectedImagePath = "Item/HelpSelected.png",
|
Gravity = Gravity.CenterVertical,
|
TextColor = SkinStyle.Current.TextColor1
|
};
|
btnGatewayMappingHelp.X = flRadioParameterTop.Width - btnGatewayMappingHelp.Width - Application.GetRealWidth (30);
|
flGatewayMapping.AddChidren (btnGatewayMappingHelp);
|
btnGatewayMappingHelp.MouseUpEventHandler += (sender, e) => {
|
new Tip () { MaxWidth = 150, Text = Language.StringByID (R.MyInternationalizationString.GatewayConfigHelp), Direction = AMPopTipDirection.Down, CloseTime = 4 }.Show ((View)sender);
|
};
|
#endregion
|
|
#region --------------分配地址-----------------
|
RowLayout flDistributionMACTop = new RowLayout () {
|
Height = Application.GetRealHeight (98),
|
Width = LayoutParams.MatchParent,
|
BackgroundColor = SkinStyle.Current.MainColor,
|
};
|
sView.AddChidren (flDistributionMACTop);
|
Button btnDistributionMACIcon = new Button () {
|
X = Application.GetRealWidth (15),
|
Height = Application.GetMinRealAverage (66),
|
Width = Application.GetMinRealAverage (66),
|
UnSelectedImagePath = "Item/RedistributionAddress.png",
|
SelectedImagePath = "Item/RedistributionAddressSelected.png",
|
Gravity = Gravity.CenterVertical,
|
TextColor = SkinStyle.Current.TextColor1
|
};
|
flDistributionMACTop.AddChidren (btnDistributionMACIcon);
|
Button btnDistributionMACText = new Button () {
|
X = Application.GetRealWidth (11) + btnDistributionMACIcon.Right,
|
Height = Application.GetRealHeight (41),
|
Width = Application.GetRealWidth (400),
|
TextID = R.MyInternationalizationString.DistributionOfDeviceAddress,// = "Distribution of device address",
|
Gravity = Gravity.CenterVertical,
|
TextAlignment = TextAlignment.CenterLeft,
|
TextColor = SkinStyle.Current.TextColor1
|
};
|
flDistributionMACTop.AddChidren (btnDistributionMACText);
|
btnDistributionMACIcon.MouseUpEventHandler += (sender, e) => {
|
ShowAssignedAddressDialog (gatewayDevice.SubnetID, gatewayDevice.DeviceID);
|
};
|
btnDistributionMACText.MouseUpEventHandler += (sender, e) => {
|
ShowAssignedAddressDialog (gatewayDevice.SubnetID, gatewayDevice.DeviceID);
|
};
|
|
Button btnDistributionMACHelp = new Button () {
|
Height = Application.GetMinRealAverage (98),
|
Width = Application.GetMinRealAverage (76),
|
UnSelectedImagePath = "Item/Help.png",
|
SelectedImagePath = "Item/HelpSelected.png",
|
Gravity = Gravity.CenterVertical,
|
TextColor = SkinStyle.Current.TextColor1
|
};
|
btnDistributionMACHelp.X = flRadioParameterTop.Width - btnDistributionMACHelp.Width - Application.GetRealWidth (30);
|
flDistributionMACTop.AddChidren (btnDistributionMACHelp);
|
btnDistributionMACHelp.MouseUpEventHandler += (sender, e) => {
|
new Tip () { MaxWidth = 150, Text = Language.StringByID (R.MyInternationalizationString.SearchEquipmentHelp), Direction = AMPopTipDirection.Down, CloseTime = 4 }.Show ((View)sender);
|
};
|
#endregion
|
|
gatewayInfoSwitch.MouseUpEventHandler += (sender, e) => {
|
gatewayInfoSwitch.IsSelected = !gatewayInfoSwitch.IsSelected;
|
if (gatewayInfoSwitch.IsSelected) {
|
sView.Height = flRadioParameterBody.Bottom - frameLayoutGatewayID.X;
|
} else {
|
sView.Height = 0;
|
}
|
};
|
|
#region -----搜索设备----
|
RowLayout flSearchEquipmentTop = new RowLayout () {
|
Height = Application.GetRealHeight (98),
|
Width = LayoutParams.MatchParent,
|
BackgroundColor = SkinStyle.Current.MainColor,
|
};
|
sView.AddChidren (flSearchEquipmentTop);
|
Button btnGatewayMappingIcon = new Button () {
|
X = Application.GetRealWidth (17),
|
Height = Application.GetRealHeight (55),
|
Width = Application.GetRealWidth (55),
|
UnSelectedImagePath = "Item/+.png",
|
SelectedImagePath = "Item/+Selected.png",
|
Gravity = Gravity.CenterVertical,
|
TextColor = SkinStyle.Current.TextColor1
|
};
|
flSearchEquipmentTop.AddChidren (btnGatewayMappingIcon);
|
|
Button btnGatewayMappingText = new Button () {
|
X = Application.GetRealWidth (11) + btnGatewayMappingIcon.Right,
|
Height = Application.GetRealHeight (41),
|
Width = Application.GetRealWidth (400),
|
TextID = R.MyInternationalizationString.GatewayList,
|
Gravity = Gravity.CenterVertical,
|
TextAlignment = TextAlignment.CenterLeft,
|
TextColor = SkinStyle.Current.TextColor1
|
};
|
|
flSearchEquipmentTop.AddChidren (btnGatewayMappingText);
|
Button btnSearchEquipmentHelp = new Button () {
|
Height = Application.GetMinRealAverage (98),
|
Width = Application.GetMinRealAverage (76),
|
UnSelectedImagePath = "Item/Help.png",
|
SelectedImagePath = "Item/HelpSelected.png",
|
Gravity = Gravity.CenterVertical,
|
X = btnNetWorkHelp.X,
|
TextColor = SkinStyle.Current.TextColor1
|
};
|
flSearchEquipmentTop.AddChidren (btnSearchEquipmentHelp);
|
btnSearchEquipmentHelp.MouseUpEventHandler += (sender, e) => {
|
new Tip () { MaxWidth = 150, Text = Language.StringByID (R.MyInternationalizationString.DistributionMACHelp), Direction = AMPopTipDirection.Down, CloseTime = 4 }.Show ((View)sender);
|
};
|
FrameLayout flSearchEquipmentBody = new FrameLayout () {
|
Height = Application.GetRealHeight (60),
|
Width = LayoutParams.MatchParent,
|
};
|
btnGatewayMappingText.MouseUpEventHandler += (sender, e) => {
|
UpdataGatewayList (btnSearchEquipmentHelp.X, flSearchEquipmentBody, gatewayDevice.MAC);
|
};
|
btnGatewayMappingIcon.MouseUpEventHandler += (sender, e) => {
|
UpdataGatewayList (btnSearchEquipmentHelp.X, flSearchEquipmentBody, gatewayDevice.MAC);
|
};
|
flGatewayMapping.MouseUpEventHandler += (sender, e) => {
|
UpdataGatewayList (btnSearchEquipmentHelp.X, flSearchEquipmentBody, gatewayDevice.MAC);
|
};
|
sView.AddChidren (flSearchEquipmentBody);
|
#endregion
|
|
#region --------------bottom--------------
|
var sysBottomView = new FrameLayout () {
|
Height = Application.GetRealHeight (90),
|
Y = Application.GetRealHeight (844)
|
};
|
AddChidren (sysBottomView);
|
Button AddSystemEquipmentButton = new Button () {
|
Width = LayoutParams.MatchParent,
|
Height = LayoutParams.MatchParent,
|
TextID = R.MyInternationalizationString.ReFresh,
|
TextAlignment = TextAlignment.Center,
|
TextColor = SkinStyle.Current.TextColor1,
|
BackgroundColor = SkinStyle.Current.MainColor
|
};
|
sysBottomView.AddChidren (AddSystemEquipmentButton);
|
AddSystemEquipmentButton.MouseUpEventHandler += (sender, e) => {
|
MainPage.Loading.Start ();
|
System.Threading.Tasks.Task.Run (() => {
|
CommonPage.GateWayList.Clear ();
|
CommonPage.RandomHigh = (byte)new Random ().Next (255);
|
CommonPage.RandomLow = (byte)new Random ().Next (255);
|
Control.ControlBytesSendHasReturn (Command.ReadGateway, gatewayDevice.SubnetID, gatewayDevice.DeviceID, new byte [] { CommonPage.RandomHigh, CommonPage.RandomLow });
|
var deviceBytes = IO.FileUtils.ReadEquipmentMessage (gatewayDevice);
|
var tempGatewayDevice = Newtonsoft.Json.JsonConvert.DeserializeObject<OnePortWirelessFR> (deviceBytes);
|
if (tempGatewayDevice != null) {
|
Application.RunOnMainThread (() => {
|
this.ShowWirelessGateway (tempGatewayDevice);
|
});
|
}
|
});
|
};
|
sysBottomView.AddChidren (new Button () { Height = 1, BackgroundColor = SkinStyle.Current.White20Transparent });
|
#endregion
|
MainPage.Loading.Hide ();
|
});
|
});
|
} finally {
|
}
|
}
|
/// <summary>
|
/// 开关无线配置弹窗
|
/// </summary>
|
static void ShowWirelessConfigDialog (byte subnetID, byte deviceID)
|
{
|
Dialog dialog = new Dialog ();
|
|
FrameLayout dialogBody = new FrameLayout () {
|
BackgroundColor = SkinStyle.Current.DialogColor,
|
Width = Application.GetRealWidth (480),
|
Height = Application.GetRealHeight (480),
|
Gravity = Gravity.Center,
|
Radius = 5,
|
BorderColor = SkinStyle.Current.Transparent,
|
BorderWidth = 0,
|
};
|
dialog.AddChidren (dialogBody);
|
|
Button btnEquipmentTitle = new Button () {
|
Height = Application.GetRealHeight (85),
|
BackgroundColor = SkinStyle.Current.DialogTitle,
|
TextID = R.MyInternationalizationString.WirelessConfiguration,
|
TextAlignment = TextAlignment.Center,
|
Enable = false,
|
TextColor = SkinStyle.Current.TextColor1
|
};
|
dialogBody.AddChidren (btnEquipmentTitle);
|
Button btnOpenConfig = new Button () {
|
X = Application.GetRealWidth (30),
|
Y = Application.GetRealHeight (205),
|
Width = Application.GetRealWidth (420),
|
Height = Application.GetRealHeight (65),
|
TextID = R.MyInternationalizationString.Close,
|
TextAlignment = TextAlignment.Center,
|
BackgroundColor = SkinStyle.Current.ButtonColor,
|
SelectedBackgroundColor = SkinStyle.Current.SelectedColor,
|
Radius = 5,
|
TextColor = SkinStyle.Current.TextColor1
|
};
|
dialogBody.AddChidren (btnOpenConfig);
|
btnOpenConfig.MouseUpEventHandler += (sender, e) => {
|
btnOpenConfig.IsSelected = !btnOpenConfig.IsSelected;
|
if (btnOpenConfig.IsSelected) {
|
Control.ControlBytesSend (Command.GotoConfigMode, subnetID, deviceID, new byte [] { });
|
btnOpenConfig.TextID = R.MyInternationalizationString.ON;
|
} else {
|
Control.ControlBytesSend (Command.CheckConfigSuccess, subnetID, deviceID, new byte [] { 1 });
|
btnOpenConfig.TextID = R.MyInternationalizationString.OFF;
|
}
|
};
|
//---bottom--
|
Button btnBack = new Button () {
|
Width = Application.GetRealWidth (480),
|
Height = Application.GetRealHeight (85),
|
BackgroundColor = SkinStyle.Current.ButtonColor,
|
Y = Application.GetRealHeight (480) - Application.GetRealHeight (85),
|
TextID = R.MyInternationalizationString.Confrim,
|
TextAlignment = TextAlignment.Center,
|
Radius = 1,
|
TextColor = SkinStyle.Current.TextColor1
|
};
|
dialogBody.AddChidren (btnBack);
|
btnBack.MouseUpEventHandler += (s, e1) => {
|
dialog.Close ();
|
};
|
dialog.Show ();
|
}
|
|
/// <summary>
|
/// 弹出确认分配设备地址的窗口
|
/// </summary>
|
/// <param name="subnetID">Subnet I.</param>
|
/// <param name="deviceID">Device I.</param>
|
public static void ShowAssignedAddressDialog (byte subnetID, byte deviceID)
|
{
|
byte [] sendByte = new byte [] { 1, 0, 0, 0, 0 };
|
Dialog dialog = new Dialog ();
|
|
FrameLayout dialogBodyView = new FrameLayout () {
|
Gravity = Gravity.Center,
|
Width = Application.GetRealWidth (480),
|
Height = Application.GetRealHeight (480),
|
BackgroundColor = SkinStyle.Current.DialogColor,
|
Radius = 5,
|
BorderWidth = 0,
|
BorderColor = SkinStyle.Current.Transparent
|
};
|
dialog.AddChidren (dialogBodyView);
|
|
Button btnEquipmentTitle = new Button () {
|
Height = Application.GetRealHeight (85),
|
BackgroundColor = SkinStyle.Current.DialogTitle,
|
TextID = R.MyInternationalizationString.DistributionOfDeviceAddress,
|
TextAlignment = TextAlignment.Center,
|
Radius = 1,
|
TextColor = SkinStyle.Current.TextColor1
|
};
|
dialogBodyView.AddChidren (btnEquipmentTitle);
|
Button btnAssignedAll = new Button () {
|
X = Application.GetRealWidth (30),
|
Y = Application.GetRealHeight (125),
|
Width = Application.GetRealWidth (420),
|
Height = Application.GetRealHeight (80),
|
TextID = R.MyInternationalizationString.AssignedAddressAll,
|
TextAlignment = TextAlignment.Center,
|
BackgroundColor = SkinStyle.Current.ButtonColor,
|
TextColor = SkinStyle.Current.TextColor1
|
};
|
dialogBodyView.AddChidren (btnAssignedAll);
|
btnAssignedAll.MouseUpEventHandler += (sender, e) => {
|
dialog.Close ();
|
sendByte [0] = 0x81;
|
AssignedAddressM (subnetID, deviceID, sendByte);
|
};
|
Button btnAssignedNew = new Button () {
|
X = Application.GetRealWidth (30),
|
Y = btnAssignedAll.Y + btnAssignedAll.Height + Application.GetRealHeight (50),
|
Width = Application.GetRealWidth (420),
|
Height = Application.GetRealHeight (80),
|
TextID = R.MyInternationalizationString.AssignedAddressAdditional,
|
TextAlignment = TextAlignment.Center,
|
BackgroundColor = SkinStyle.Current.ButtonColor,
|
TextColor = SkinStyle.Current.TextColor1
|
};
|
dialogBodyView.AddChidren (btnAssignedNew);
|
btnAssignedNew.MouseUpEventHandler += (sender, e) => {
|
sendByte [0] = 0x1;
|
dialog.Close ();
|
AssignedAddressM (subnetID, deviceID, sendByte);
|
};
|
//---bottom---
|
Button btnBack = new Button () {
|
Width = Application.GetRealWidth (480),
|
Height = Application.GetRealHeight (85),
|
BackgroundColor = SkinStyle.Current.ButtonColor,
|
Y = Application.GetRealHeight (480) - Application.GetRealHeight (85),
|
TextID = R.MyInternationalizationString.Cancel,
|
TextAlignment = TextAlignment.Center,
|
Radius = 1,
|
TextColor = SkinStyle.Current.TextColor1
|
};
|
dialogBodyView.AddChidren (btnBack);
|
btnBack.MouseUpEventHandler += (s, e1) => {
|
dialog.Close ();
|
};
|
dialog.Show ();
|
}
|
|
/// <summary>
|
/// 为设备分配地址
|
/// </summary>
|
public static void AssignedAddressM (byte subnetID, byte deviceID, byte [] sendByte)
|
{
|
string tipString = Language.StringByID (R.MyInternationalizationString.NewEquipmentNotConnected);
|
if (sendByte [0] == 0x1) {//追加设备
|
AssignedAddressAdditional (subnetID, deviceID, sendByte);
|
} else {
|
System.Threading.Tasks.Task.Run (() => {
|
Application.RunOnMainThread (() => {
|
Alert alert = new Alert (Language.StringByID (R.MyInternationalizationString.Tip),
|
Language.StringByID (R.MyInternationalizationString.TipAssignedAddress),
|
Language.StringByID (R.MyInternationalizationString.Cancel), Language.StringByID (R.MyInternationalizationString.Confrim));
|
alert.ResultEventHandler += ( sender2, e2) => {
|
if (e2) {
|
MainPage.Loading.Start ();
|
foreach (string file in IO.FileUtils.ReadFiles ()) {
|
string [] fileStr = file.Split ('_');
|
if (fileStr.Length == 4 || fileStr.Length == 5) {
|
if (fileStr [0] == "Equipment" && fileStr [1] != typeof (OnePortBus).Name && fileStr [1] != typeof (OnePortWirelessFR).Name && fileStr [2] == subnetID.ToString ()) {
|
IO.FileUtils.DeleteFile (file);
|
}
|
}
|
}
|
System.Threading.Tasks.Task.Run (() => {
|
try {
|
byte [] usefulBytes = Control.ControlBytesSendHasReturn (Command.AssignedAddress, subnetID, deviceID, new byte [] { sendByte [0] });
|
if (usefulBytes != null) {
|
sendByte [0]++;
|
Array.Copy (usefulBytes, 1, sendByte, 1, 4);
|
usefulBytes = Control.ControlBytesSendHasReturn (Command.AssignedAddress, subnetID, deviceID, sendByte);
|
if (usefulBytes == null) {
|
Application.RunOnMainThread (() => {
|
MainPage.Loading.Hide ();
|
new Alert (Language.StringByID (R.MyInternationalizationString.Tip),
|
Language.StringByID (R.MyInternationalizationString.TipEquipmentNotOnline),
|
Language.StringByID (R.MyInternationalizationString.Close)).Show ();
|
});
|
}
|
usefulBytes = Control.ControlBytesSendHasReturn (Command.AssignedAddress, subnetID, deviceID, new byte [] { 0x1 });
|
Array.Copy (usefulBytes, 1, sendByte, 1, 4);
|
sendByte [0] = 2;
|
usefulBytes = Control.ControlBytesSendHasReturn (Command.AssignedAddress, subnetID, deviceID, sendByte);
|
if (usefulBytes != null) {
|
CommonPage.dt = System.DateTime.Now;
|
while (true) {
|
if ((DateTime.Now - CommonPage.dt).TotalSeconds > 9)
|
break;
|
System.Threading.Thread.Sleep (98);
|
}
|
}
|
} else {
|
Application.RunOnMainThread (() => {
|
new Alert (Language.StringByID (R.MyInternationalizationString.Tip),
|
Language.StringByID (R.MyInternationalizationString.TipEquipmentNotOnline),
|
Language.StringByID (R.MyInternationalizationString.Close)).Show ();
|
});
|
}
|
} catch { } finally {
|
Application.RunOnMainThread (() => {
|
MainPage.Loading.Hide ();
|
});
|
}
|
});
|
}
|
};
|
alert.Show ();
|
});
|
});
|
}
|
}
|
|
public static void AssignedAddressAdditional (byte subnetID, byte deviceID, byte [] sendByte)
|
{
|
Dialog dialog = new Dialog () {
|
Width = Application.GetRealWidth (480),
|
Height = Application.GetRealHeight (680),
|
BackgroundColor = SkinStyle.Current.DialogColor,
|
};
|
int btnX = Application.GetRealWidth (420);
|
Button btnEquipmentTitle = new Button () {
|
Width = dialog.Width,
|
Height = Application.GetRealHeight (85),
|
BackgroundColor = SkinStyle.Current.DialogTitle,
|
TextID = R.MyInternationalizationString.AssignedAddressAdditional,
|
TextAlignment = TextAlignment.Center,
|
Radius = 1,
|
TextColor = SkinStyle.Current.DialogTextColor
|
};
|
dialog.AddChidren (btnEquipmentTitle);
|
|
Button btnAssigned = new Button () {
|
Y = Application.GetRealHeight (95),
|
X = Application.GetRealWidth (40),
|
Width = Application.GetRealWidth (400),
|
Height = Application.GetRealHeight (100),
|
TextID = R.MyInternationalizationString.NewEquipmentNotConnected,
|
TextAlignment = TextAlignment.Center,
|
BackgroundColor = SkinStyle.Current.ButtonColor,
|
SelectedBackgroundColor = SkinStyle.Current.Transparent,
|
TextColor = SkinStyle.Current.TextColor1,
|
SelectedTextColor = SkinStyle.Current.TextColor1
|
};
|
dialog.AddChidren (btnAssigned);
|
Button btnAssigned1 = new Button () {
|
Y = btnAssigned.Bottom + Application.GetRealHeight (10),
|
X = Application.GetRealWidth (40),
|
Width = Application.GetRealWidth (400),
|
Height = Application.GetRealHeight (100),
|
TextID = R.MyInternationalizationString.RefreshDeviceList,
|
Visible = false,
|
TextAlignment = TextAlignment.Center,
|
BackgroundColor = SkinStyle.Current.ButtonColor,
|
SelectedBackgroundColor = SkinStyle.Current.Transparent,
|
TextColor = SkinStyle.Current.TextColor1,
|
SelectedTextColor = SkinStyle.Current.TextColor1
|
};
|
dialog.AddChidren (btnAssigned1);
|
|
Button btnAssigned3 = new Button () {
|
Y = btnAssigned1.Bottom + Application.GetRealHeight (10),
|
X = Application.GetRealWidth (40),
|
Width = Application.GetRealWidth (400),
|
Height = Application.GetRealHeight (120),
|
Visible = false,
|
TextID = R.MyInternationalizationString.PleaseAccessNeedToAddEquipment,
|
TextAlignment = TextAlignment.Center,
|
BackgroundColor = SkinStyle.Current.ButtonColor,
|
SelectedBackgroundColor = SkinStyle.Current.Transparent,
|
TextColor = SkinStyle.Current.TextColor1,
|
SelectedTextColor = SkinStyle.Current.TextColor1
|
};
|
dialog.AddChidren (btnAssigned3);
|
Button btnAssigned4 = new Button () {
|
Y = btnAssigned3.Bottom + Application.GetRealHeight (10),
|
X = Application.GetRealWidth (40),
|
Width = Application.GetRealWidth (400),
|
Height = Application.GetRealHeight (120),
|
Visible = false,
|
TextID = R.MyInternationalizationString.StartAllocatingAddresses,
|
TextAlignment = TextAlignment.Center,
|
BackgroundColor = SkinStyle.Current.ButtonColor,
|
SelectedBackgroundColor = SkinStyle.Current.Transparent,
|
TextColor = SkinStyle.Current.TextColor1,
|
SelectedTextColor = SkinStyle.Current.TextColor1
|
};
|
dialog.AddChidren (btnAssigned4);
|
btnAssigned.MouseUpEventHandler += (sender, e) => {
|
btnAssigned.Enable = false;
|
btnAssigned.IsSelected = true;
|
btnAssigned.Text += " √";
|
btnAssigned1.Visible = true;
|
};
|
btnAssigned1.MouseUpEventHandler += (sender, e) => {
|
System.Threading.Tasks.Task.Run (() => {
|
try {
|
Application.RunOnMainThread (() => {
|
MainPage.Loading.Start (Language.StringByID(R.MyInternationalizationString.load));
|
});
|
byte [] usefulBytes = Control.ControlBytesSendHasReturn (Command.AssignedAddress, subnetID, deviceID, new byte [] { 0x11 });
|
if (usefulBytes != null) {
|
usefulBytes = Control.ControlBytesSendHasReturn (Command.AssignedAddress, subnetID, deviceID, new byte [] { 0x12, usefulBytes [1], usefulBytes [2], usefulBytes [3], usefulBytes [4] });
|
if (usefulBytes != null) {
|
if (usefulBytes [0] == 0x12) {
|
CommonPage.dt = System.DateTime.Now;
|
while (true) {
|
if ((DateTime.Now - CommonPage.dt).TotalSeconds > 9)
|
break;
|
System.Threading.Thread.Sleep (98);
|
}
|
}
|
Application.RunOnMainThread (() => {
|
btnAssigned1.Enable = false;
|
btnAssigned1.IsSelected = true;
|
btnAssigned3.Visible = true;
|
btnAssigned3.Text += " √";
|
});
|
} else {
|
Application.RunOnMainThread (() => {
|
new Alert (Language.StringByID (R.MyInternationalizationString.Tip),
|
Language.StringByID (R.MyInternationalizationString.TheGatewayAssignmentAddressFailed),
|
Language.StringByID (R.MyInternationalizationString.Close)).Show ();
|
});
|
}
|
} else {
|
Application.RunOnMainThread (() => {
|
new Alert (Language.StringByID (R.MyInternationalizationString.Tip),
|
Language.StringByID (R.MyInternationalizationString.TipEquipmentNotOnline),
|
Language.StringByID (R.MyInternationalizationString.Close)).Show ();
|
});
|
}
|
} catch (Exception ex) {
|
Console.WriteLine (ex.Message);
|
} finally {
|
Application.RunOnMainThread (() => {
|
MainPage.Loading.Hide ();
|
});
|
}
|
});
|
};
|
btnAssigned3.MouseUpEventHandler += (sender, e) => {
|
btnAssigned3.Enable = false;
|
btnAssigned3.IsSelected = true;
|
btnAssigned4.Visible = true;
|
btnAssigned4.Text += " √";
|
};
|
btnAssigned4.MouseUpEventHandler += (sender, e) => {
|
Application.RunOnMainThread (() => {
|
System.Threading.Tasks.Task.Run (() => {
|
try {
|
Application.RunOnMainThread (() => {
|
dialog.Close ();
|
MainPage.Loading.Start (Language.StringByID(R.MyInternationalizationString.load));
|
});
|
byte [] usefulBytes1 = Control.ControlBytesSendHasReturn (Command.AssignedAddress, subnetID, deviceID, new byte [] { 0x1 });
|
if (usefulBytes1 != null && usefulBytes1 [0] == 1) {
|
sendByte [0]++;
|
Array.Copy (usefulBytes1, 1, sendByte, 1, 4);
|
usefulBytes1 = Control.ControlBytesSendHasReturn (Command.AssignedAddress, subnetID, deviceID, sendByte);
|
if (usefulBytes1 [0] == 2) {
|
CommonPage.dt = System.DateTime.Now;
|
while (true) {
|
if ((DateTime.Now - CommonPage.dt).TotalSeconds > 9)
|
break;
|
System.Threading.Thread.Sleep (98);
|
}
|
}
|
}
|
} catch { } finally {
|
Application.RunOnMainThread (() => {
|
MainPage.Loading.Hide ();
|
});
|
}
|
});
|
});
|
};
|
Button btnBack = new Button () {
|
Width = Application.GetRealWidth (480),
|
Height = Application.GetRealHeight (85),
|
BackgroundColor = SkinStyle.Current.DialogTitle,
|
Y = Application.GetRealHeight (680) - Application.GetRealHeight (85),
|
TextID = R.MyInternationalizationString.Cancel,
|
TextAlignment = TextAlignment.Center,
|
Radius = 1,
|
TextColor = SkinStyle.Current.DialogTextColor
|
};
|
btnBack.MouseUpEventHandler += (s, e1) => {
|
dialog.Close ();
|
};
|
dialog.AddChidren (btnBack);
|
dialog.Show ();
|
}
|
|
public static void UpdataGatewayList (int x, FrameLayout flGatewayMapping4, string gateWayMAC)
|
{
|
flGatewayMapping4.RemoveAll ();
|
MainPage.Loading.Start ();
|
|
Button title = new Button () {
|
X = Application.GetRealWidth (50),
|
TextAlignment = TextAlignment.TopLeft,
|
Height = Application.GetRealHeight (70),
|
Width = Application.GetRealWidth (400),
|
TextID = R.MyInternationalizationString.DeviceList,
|
Y = Application.GetRealHeight (20),
|
TextColor = SkinStyle.Current.TextColor1
|
};
|
flGatewayMapping4.AddChidren (title);
|
FrameLayout tipView = new FrameLayout () {
|
Y = title.Bottom,
|
Height = Application.GetRealHeight (50),
|
};
|
flGatewayMapping4.AddChidren (tipView);
|
|
Button btnNormal = new Button () {
|
Width = Application.GetRealWidth (30),
|
Height = Application.GetRealHeight (30),
|
X = Application.GetRealWidth (55),
|
Y = Application.GetRealHeight (10),
|
BackgroundColor = SkinStyle.Current.TextColor1,
|
Radius = 2,
|
Enable = false,
|
TextColor = SkinStyle.Current.TextColor1
|
};
|
tipView.AddChidren (btnNormal);
|
Button btnNormalText = new Button () {
|
Width = Application.GetRealWidth (120),
|
TextID = R.MyInternationalizationString.Normal,
|
TextAlignment = TextAlignment.CenterLeft,
|
X = btnNormal.Right + Application.GetRealWidth (5),
|
Enable = false,
|
TextColor = SkinStyle.Current.TextColor1
|
};
|
tipView.AddChidren (btnNormalText);
|
Button btnNewDiscovery = new Button () {
|
Width = Application.GetRealWidth (30),
|
Height = Application.GetRealHeight (30),
|
Radius = 2,
|
BackgroundColor = SkinStyle.Current.newDeviceBG,
|
X = btnNormalText.Right + Application.GetRealWidth (20),
|
Y = btnNormal.Y,
|
Enable = false,
|
TextColor = SkinStyle.Current.TextColor1,
|
};
|
tipView.AddChidren (btnNewDiscovery);
|
Button btnNewDiscoveryText = new Button () {
|
Width = Application.GetRealWidth (200),
|
TextID = R.MyInternationalizationString.NewDiscovery,
|
TextAlignment = TextAlignment.CenterLeft,
|
X = btnNewDiscovery.Right + Application.GetRealWidth (5),
|
Enable = false,
|
TextColor = SkinStyle.Current.TextColor1
|
};
|
tipView.AddChidren (btnNewDiscoveryText);
|
Button btnLost = new Button () {
|
Width = Application.GetRealWidth (30),
|
Height = Application.GetRealHeight (30),
|
Radius = 2,
|
BackgroundColor = SkinStyle.Current.LostDeviceBG,
|
X = btnNewDiscoveryText.Right + Application.GetRealWidth (20),
|
Y = btnNormal.Y,
|
Enable = false
|
};
|
tipView.AddChidren (btnLost);
|
Button btnLostText = new Button () {
|
Width = Application.GetRealWidth (120),
|
TextID = R.MyInternationalizationString.Lost,
|
TextAlignment = TextAlignment.CenterLeft,
|
X = btnLost.Right + Application.GetRealWidth (5),
|
TextColor = SkinStyle.Current.TextColor1,
|
Enable = false
|
};
|
tipView.AddChidren (btnLostText);
|
|
int countDevcie = 0;
|
CommonPage.FindGatewayChilren = true;
|
CommonPage.LocalPhoneFindDevice = true;
|
var oldFilesList = IO.FileUtils.ReadFiles ().FindAll ((obj) => obj.Split ('_') [0] == "Equipment"&& obj.Split ('_').Length == 4 && obj.Split('_')[3] != "0");
|
//全部重新更新设备下面所有的回路信息
|
if (th != null) {
|
th.Abort ();
|
th = null;
|
}
|
ReadDevices (() => {
|
var oldCommon = new List<Common> ();
|
foreach (var deviceFile in oldFilesList) {
|
byte [] equipmentUsefullBytes = IO.FileUtils.ReadFile (deviceFile);
|
string equipmentString;
|
Common common = null;
|
equipmentString = CommonPage.MyEncodingUTF8.GetString (equipmentUsefullBytes);
|
common = Newtonsoft.Json.JsonConvert.DeserializeObject<Common> (equipmentString);
|
if (common == null) {
|
continue;
|
}
|
if (common.isMixBox) {
|
continue;
|
}if(common.GatewayMAC != gateWayMAC){
|
continue;
|
}
|
oldCommon.Add (common);
|
}
|
CommonPage.FindGatewayChilren = false;
|
MainPage.Loading.Hide ();
|
for (int i = 0; i < CommonPage.DeviceList.Count; i++) {
|
Common common = CommonPage.DeviceList [i];
|
if (common.Type == DeviceType.MusicModel)
|
continue;
|
//Console.WriteLine(common.DeviceID);
|
if (common.GatewayMAC == gateWayMAC && common.DeviceID != 0) {
|
int btnY = tipView.Y + (countDevcie + 1) * Application.GetRealHeight (80);
|
|
countDevcie++;
|
if (common.isMixBox) {
|
Console.WriteLine ("IsMixBox");
|
countDevcie--;
|
continue;
|
}
|
#region Show Device
|
Button btn = new Button () {
|
X = Application.GetRealWidth (50),
|
Y = btnY,
|
Height = Application.GetRealHeight (42),
|
Width = Application.GetRealWidth (42),
|
TextColor = SkinStyle.Current.TextColor1,
|
};
|
|
string strDeviceType = "";
|
if (common.Type == DeviceType.LightSwitch || common.Type == DeviceType.LightDimming
|
|| common.Type == DeviceType.LightDALI || common.Type == DeviceType.LightLogic
|
|| common.Type == DeviceType.LightMixSwitch || common.Type == DeviceType.LightMixDimming
|
|| common.Type == DeviceType.LightEnergySwitch) {
|
strDeviceType = Language.StringByID (R.MyInternationalizationString.Lights);
|
btn.UnSelectedImagePath = "Item/Light.png";
|
} else if (common.Type == DeviceType.HVAC || common.Type == DeviceType.ACInfrared || common.Type == DeviceType.ACPanel) {
|
btn.UnSelectedImagePath = "AC/AC.png";
|
strDeviceType = Language.StringByID (R.MyInternationalizationString.ACHost);
|
} else if (common.Type == DeviceType.CurtainModel || common.Type == DeviceType.CurtainTrietex || common.Type == DeviceType.CurtainRoller) {
|
btn.UnSelectedImagePath = "Curtain/Curtain.png";
|
strDeviceType = Language.StringByID (R.MyInternationalizationString.Curtains);
|
} else if (common.Type == DeviceType.ButtonPanel || common.Type == DeviceType.DeviceCommon) {
|
btn.UnSelectedImagePath = "Item/Panel.png";
|
strDeviceType = Language.StringByID (R.MyInternationalizationString.PanelDevice);
|
} else if (common.Type == DeviceType.FoolHeat || common.Type == DeviceType.FoolHeatPanel) {
|
btn.UnSelectedImagePath = "Item/FloorHeating.png";
|
strDeviceType = Language.StringByID (R.MyInternationalizationString.FoolHeat);
|
} else if (common.Type == DeviceType.DryContact) {
|
btn.UnSelectedImagePath = "Item/DryContact.png";
|
strDeviceType = Language.StringByID (R.MyInternationalizationString.DryContactPanel);
|
} else if (common.Type == DeviceType.InfraredMode) {
|
btn.UnSelectedImagePath = "Item/InfraredModel.png";
|
strDeviceType = Language.StringByID (R.MyInternationalizationString.InfraredCoding);
|
} else if (common.Type == DeviceType.ACInfrared) {
|
btn.UnSelectedImagePath = "AC/AC.png";
|
strDeviceType = Language.StringByID (R.MyInternationalizationString.InfraredCoding);
|
} else if (common.Type == DeviceType.MusicModel) {
|
btn.UnSelectedImagePath = "Item/Music.png";
|
strDeviceType = Language.StringByID (R.MyInternationalizationString.MusicModel);
|
} else if (common.Type == DeviceType.FanModule) {
|
btn.UnSelectedImagePath = "Fan/Fan.png";
|
strDeviceType = Language.StringByID (R.MyInternationalizationString.Fan);
|
} else if (common.Type == DeviceType.LogicModule) {
|
btn.UnSelectedImagePath = "Item/LogicModule.png";
|
strDeviceType = Language.StringByID (R.MyInternationalizationString.LogicModule);
|
} else if (common.Type == DeviceType.DoorLock) {
|
btn.UnSelectedImagePath = "DoorLockPic/door_lock.png";//门锁111
|
strDeviceType = Language.StringByID (R.MyInternationalizationString.DoorLock);
|
} else if (common.Type == DeviceType.SensorLPG || common.Type == DeviceType.SensorCH4 || common.Type == DeviceType.SensorCOH2
|
|| common.Type == DeviceType.SensorWater || common.Type == DeviceType.SensorSmoke || common.Type == DeviceType.SensorMobileDetection
|
|| common.Type == DeviceType.SensorTemperature || common.Type == DeviceType.SensorHumidity || common.Type == DeviceType.SensorIllumination
|
|| common.Type == DeviceType.SensorTVOC || common.Type == DeviceType.SensorPM25 || common.Type == DeviceType.SensorCO2
|
|| common.Type == DeviceType.SensorWindSpeed || common.Type == DeviceType.SensorWindPressure || common.Type == DeviceType.SensorLiquidFlow
|
|| common.Type == DeviceType.SensorLiquidPressure || common.Type == DeviceType.SensorLiquidDepth || common.Type == DeviceType.SensorRainfall
|
|| common.Type == DeviceType.SensorWeight || common.Type == DeviceType.SensorHeightLength || common.Type == DeviceType.SensorVelocity
|
|| common.Type == DeviceType.SensorVibration || common.Type == DeviceType.SensorVoltage || common.Type == DeviceType.SensorCurrent || common.Type == DeviceType.SensorPower
|
|| common.Type == DeviceType.SensorMenciAndwindowMagnetic) {
|
strDeviceType = Language.StringByID (R.MyInternationalizationString.Sensor);
|
btn.UnSelectedImagePath = "Sensor/Sensor.png";
|
} else if (common.Type == DeviceType.RCU || common.Type == DeviceType.ZBConverter) {
|
btn.UnSelectedImagePath = "Item/OnePort.png";
|
} else if (common.Type == DeviceType.FreshAir) {
|
btn.UnSelectedImagePath = "FreshAir/FreshAir.png";
|
} else if (common.Type == DeviceType.Thermostat) {
|
btn.UnSelectedImagePath = "CapillaryAC/CapillaryACIcon.png";
|
} else {
|
continue;
|
}
|
Button btn1 = new Button () {
|
X = Application.GetRealWidth (144),
|
Y = btnY,
|
Text = common.Name,
|
TextAlignment = TextAlignment.CenterLeft,
|
Height = Application.GetRealHeight (42),
|
Width = Application.GetRealWidth (342),
|
TextColor = SkinStyle.Current.TextColor1,
|
};
|
Button btn2 = new Button () {
|
X = x,
|
Y = btnY + Application.GetRealHeight (10),
|
UnSelectedImagePath = "Item/More2.png",
|
SelectedImagePath = "Item/More2Selected.png",
|
Height = Application.GetRealHeight (42),
|
Width = Application.GetRealWidth (40),
|
TextColor = SkinStyle.Current.TextColor1,
|
};
|
|
EventHandler<MouseEventArgs> eHandlerC = new EventHandler<MouseEventArgs> (delegate (object sender, MouseEventArgs e) {
|
btn2.IsSelected = true;
|
Dialog dialog = new Dialog ();
|
FrameLayout dialogBodyView = new FrameLayout () {
|
BackgroundColor = SkinStyle.Current.DialogColor,
|
Width = Application.GetRealWidth (494),
|
Height = Application.GetRealHeight (488),
|
Radius = 5,
|
BorderColor = SkinStyle.Current.Transparent,
|
BorderWidth = 0,
|
Gravity = Gravity.Center
|
};
|
dialog.AddChidren (dialogBodyView);
|
Button btnEquipmentTitle = new Button () {
|
Height = Application.GetRealHeight (70),
|
TextAlignment = TextAlignment.Center,
|
Text = strDeviceType,
|
BackgroundColor = SkinStyle.Current.DialogTitle,
|
TextColor = SkinStyle.Current.TextColor1,
|
};
|
dialogBodyView.AddChidren (btnEquipmentTitle);
|
Button lblChangeName = new Button () {
|
X = Application.GetRealWidth (40),
|
Y = btnEquipmentTitle.Bottom + Application.GetRealHeight (10),
|
Width = dialog.Width - 2 * btnEquipmentTitle.X,
|
Height = btnEquipmentTitle.Height,
|
TextID = R.MyInternationalizationString.EquipmentName,
|
TextAlignment = TextAlignment.CenterLeft,
|
TextColor = SkinStyle.Current.TextColor
|
};
|
dialogBodyView.AddChidren (lblChangeName);
|
EditText btnChangeName = new EditText () {
|
X = lblChangeName.X,
|
Y = lblChangeName.Bottom + Application.GetRealHeight (10),
|
Width = Application.GetRealWidth (425),
|
Height = Application.GetRealHeight (50),
|
TextAlignment = TextAlignment.CenterLeft,
|
Text = " " + common.Name,
|
//BackgroundColor = SkinStyle.Current.SysEditBox,
|
BorderColor = SkinStyle.Current.BorderColor,
|
BorderWidth = 1,
|
Radius = 5,
|
TextColor = SkinStyle.Current.TextColor,
|
};
|
dialogBodyView.AddChidren (btnChangeName);
|
|
Button btnFindDevcie = new Button () {
|
Y = btnChangeName.Bottom + Application.GetRealHeight (50),
|
Gravity = Gravity.CenterHorizontal,
|
Width = Application.GetRealWidth (300),
|
Height = Application.GetRealHeight (70),
|
TextID = R.MyInternationalizationString.PositioningEquipment,
|
TextAlignment = TextAlignment.Center,
|
Radius = (uint)Application.GetRealHeight (5),
|
BackgroundColor = SkinStyle.Current.DialogTitle,
|
SelectedBackgroundColor = SkinStyle.Current.SelectedColor,
|
TextColor = SkinStyle.Current.TextColor1
|
};
|
dialogBodyView.AddChidren (btnFindDevcie);
|
btnFindDevcie.MouseDownEventHandler += (sender1, e1) => {
|
btnFindDevcie.IsSelected = true;
|
};
|
btnFindDevcie.MouseUpEventHandler += (sender1, e1) => {
|
btnFindDevcie.IsSelected = false;
|
//查找设备,发送命令让设备闪烁,面板设备与其他设备发送的数据不一样,多了一个byte,固定为:0(相当于多余)
|
//if (strDeviceType != Language.StringByID (R.MyInternationalizationString.PanelDevice)) {
|
Control.ControlBytesSend (Command.PositioningEquipment, common.SubnetID, common.DeviceID, new byte [] { 3 });
|
//} else {
|
// Control.ControlBytesSend (Command.PositioningPanel, common.SubnetID, common.DeviceID, new byte [] { 0, 3 });
|
//}
|
};
|
//---bottom--
|
Button btnBack = new Button () {
|
Width = Application.GetRealWidth (250),
|
Height = Application.GetRealHeight (85),
|
Y = Application.GetRealHeight (490 - 85),
|
BackgroundColor = SkinStyle.Current.DialogTitle,
|
TextID = R.MyInternationalizationString.Close,
|
TextColor = SkinStyle.Current.TextColor1
|
};
|
btnBack.MouseUpEventHandler += (s, e1) => {
|
dialog.Close ();
|
btn2.IsSelected = false;
|
};
|
dialogBodyView.AddChidren (btnBack);
|
Button btnLineV = new Button () {
|
Width = 1,
|
Height = btnBack.Height,
|
BackgroundColor = SkinStyle.Current.White20Transparent,
|
X = btnBack.Right,
|
Y = btnBack.Y,
|
TextColor = SkinStyle.Current.TextColor1,
|
};
|
dialogBodyView.AddChidren (btnLineV);
|
Button btnSave = new Button () {
|
Width = Application.GetRealWidth (250),
|
Height = Application.GetRealHeight (85),
|
X = btnLineV.Right,
|
Y = btnBack.Y,
|
TextID = R.MyInternationalizationString.SAVE,
|
TextColor = SkinStyle.Current.TextColor1,
|
BackgroundColor = SkinStyle.Current.DialogTitle,
|
};
|
dialogBodyView.AddChidren (btnSave);
|
btnSave.MouseUpEventHandler += (sender2, e2) => {
|
CommonPage.UpdateRemark (common.SubnetID, common.DeviceID, btnChangeName.Text.Trim ());
|
btn1.Text = btnChangeName.Text;
|
dialog.Close ();
|
common.Name = btnChangeName.Text.Trim ();
|
IO.FileUtils.SaveEquipmentMessage (common);
|
btn2.IsSelected = false;
|
};
|
dialog.Show ();
|
|
});
|
btn1.MouseUpEventHandler += eHandlerC;
|
btn2.MouseUpEventHandler += eHandlerC;
|
flGatewayMapping4.AddChidren (btn);
|
flGatewayMapping4.AddChidren (btn1);
|
flGatewayMapping4.AddChidren (btn2);
|
//新增
|
var oldC = oldCommon.Find ((obj) => obj.SubnetID == common.SubnetID && obj.DeviceID == common.DeviceID && obj.LoopID == common.LoopID);
|
if (oldC == null) {
|
Button btnBG = new Button () {
|
Width = btn.Width,
|
Height = btn.Height,
|
X = btn.X,
|
Y = btn.Y,
|
Radius = 3,
|
BackgroundColor = SkinStyle.Current.newDeviceBG
|
};
|
flGatewayMapping4.AddChidren (btnBG);
|
|
} else {
|
oldCommon.Remove (oldC);
|
}
|
#endregion
|
}
|
}
|
|
for (int i = 0; i < oldCommon.Count; i++) {
|
Common common = oldCommon [i];
|
if (common.DeviceID != 0) {
|
int btnY = tipView.Y + (countDevcie + 1) * Application.GetRealHeight (80);
|
|
countDevcie++;
|
if (common.isMixBox) {
|
Console.WriteLine ("IsMixBox");
|
countDevcie--;
|
continue;
|
}
|
Button btn = new Button () {
|
X = Application.GetRealWidth (50),
|
Y = btnY,
|
Height = Application.GetRealHeight (42),
|
Width = Application.GetRealWidth (42),
|
};
|
|
if (common.Type == DeviceType.LightSwitch || common.Type == DeviceType.LightDimming
|
|| common.Type == DeviceType.LightDALI || common.Type == DeviceType.LightLogic
|
|| common.Type == DeviceType.LightMixSwitch || common.Type == DeviceType.LightMixDimming
|
|| common.Type == DeviceType.LightEnergySwitch) {
|
btn.UnSelectedImagePath = "Item/Light.png";
|
} else if (common.Type == DeviceType.HVAC || common.Type == DeviceType.ACInfrared || common.Type == DeviceType.ACPanel) {
|
btn.UnSelectedImagePath = "AC/AC.png";
|
} else if (common.Type == DeviceType.CurtainModel || common.Type == DeviceType.CurtainTrietex || common.Type == DeviceType.CurtainRoller) {
|
btn.UnSelectedImagePath = "Curtain/Curtain.png";
|
} else if (common.Type == DeviceType.ButtonPanel) {
|
btn.UnSelectedImagePath = "Item/Panel.png";
|
} else if (common.Type == DeviceType.FoolHeat || common.Type == DeviceType.FoolHeatPanel) {
|
btn.UnSelectedImagePath = "Item/FloorHeating.png";
|
} else if (common.Type == DeviceType.DryContact) {
|
btn.UnSelectedImagePath = "Item/DryContact.png";
|
} else if (common.Type == DeviceType.InfraredMode) {
|
btn.UnSelectedImagePath = "Item/InfraredModel.png";
|
} else if (common.Type == DeviceType.ACInfrared) {
|
btn.UnSelectedImagePath = "AC/AC.png";
|
} else if (common.Type == DeviceType.Thermostat) {
|
btn.UnSelectedImagePath = "CapillaryAC/CapillaryACIcon.png";
|
} else if (common.Type == DeviceType.MusicModel) {
|
continue;
|
btn.UnSelectedImagePath = "Item/Music.png";
|
} else if (common.Type == DeviceType.LogicModule) {
|
btn.UnSelectedImagePath = "Item/LogicModule.png";
|
} else if (common.Type == DeviceType.RCU) {
|
btn.UnSelectedImagePath = "Item/LogicModule.png";
|
} else if (common.Type == DeviceType.DoorLock) {
|
btn.UnSelectedImagePath = "DoorLockPic/door_lock.png";//门锁111
|
} else if (common.Type == DeviceType.SensorLPG || common.Type == DeviceType.SensorCH4 || common.Type == DeviceType.SensorCOH2
|
|| common.Type == DeviceType.SensorWater || common.Type == DeviceType.SensorSmoke || common.Type == DeviceType.SensorMobileDetection
|
|| common.Type == DeviceType.SensorTemperature || common.Type == DeviceType.SensorHumidity || common.Type == DeviceType.SensorIllumination
|
|| common.Type == DeviceType.SensorTVOC || common.Type == DeviceType.SensorPM25 || common.Type == DeviceType.SensorCO2
|
|| common.Type == DeviceType.SensorWindSpeed || common.Type == DeviceType.SensorWindPressure || common.Type == DeviceType.SensorLiquidFlow
|
|| common.Type == DeviceType.SensorLiquidPressure || common.Type == DeviceType.SensorLiquidDepth || common.Type == DeviceType.SensorRainfall
|
|| common.Type == DeviceType.SensorWeight || common.Type == DeviceType.SensorHeightLength || common.Type == DeviceType.SensorVelocity
|
|| common.Type == DeviceType.SensorVibration || common.Type == DeviceType.SensorVoltage || common.Type == DeviceType.SensorCurrent || common.Type == DeviceType.SensorPower
|
|| common.Type == DeviceType.SensorMenciAndwindowMagnetic) {
|
btn.UnSelectedImagePath = "Sensor/Sensor.png";
|
} else if (common.Type == DeviceType.RCU || common.Type == DeviceType.ZBConverter) {
|
btn.UnSelectedImagePath = "Item/OnePort.png";
|
} else if (common.Type == DeviceType.FreshAir) {
|
btn.UnSelectedImagePath = "FreshAir/FreshAir.png";
|
} else {
|
continue;
|
}
|
Button btn1 = new Button () {
|
X = Application.GetRealWidth (144),
|
Y = btnY,
|
Text = common.Name,
|
TextAlignment = TextAlignment.CenterLeft,
|
Height = Application.GetRealHeight (42),
|
Width = Application.GetRealWidth (342),
|
TextColor = SkinStyle.Current.TextColor1,
|
};
|
|
flGatewayMapping4.AddChidren (btn);
|
flGatewayMapping4.AddChidren (btn1);
|
Button btnBG = new Button () {
|
Width = btn.Width,
|
Height = btn.Height,
|
X = btn.X,
|
Y = btn.Y,
|
Radius = 3,
|
BackgroundColor = SkinStyle.Current.LostDeviceBG
|
};
|
flGatewayMapping4.AddChidren (btnBG);
|
}
|
}
|
flGatewayMapping4.Height = Application.GetRealHeight (98 + 50 + 80 * countDevcie);
|
|
th = new Thread ((obj) => {
|
//CommonPage.FindGatewayChilren = true;
|
Waiting = false;
|
CommonPage.DeviceLoopList.Clear ();
|
var listCommonEquipment = CommonPage.DeviceList;
|
for (int i = 0; i < listCommonEquipment.Count; i++) {
|
var common = listCommonEquipment [i];
|
if (common.Type == DeviceType.ZBConverter) {
|
continue;
|
}
|
if (common == null)
|
continue;
|
Console.WriteLine ("读取设备各个回路的具体信息,当前设备名称:" + common.Name + " 回路总数:" + common.LoopCount);
|
byte bigClass = common.BigClass;
|
byte minClass = common.MinClass;
|
if(bigClass == 19){
|
|
}
|
if(common.DeviceID == 112){
|
|
}
|
int count = common.LoopCount;
|
for (int k = 1, j = 0; k <= count; k++) {
|
while (Waiting) {
|
Thread.Sleep (100);
|
}
|
if (Control.ControlBytesSendHasReturn (Command.ReadDeviceLoopInfo, common.SubnetID, common.DeviceID,
|
new byte [] { bigClass, minClass, (byte)k }) == null) {
|
j++;
|
//连续两次读取不到数据则跳出该循环
|
if (j == 2 && k == 2)
|
break;
|
}
|
}
|
}
|
th = null;
|
});
|
th.Start ();
|
}, gateWayMAC);
|
}
|
|
static Thread th;
|
//等待红外读取红外类型
|
public static bool Waiting;
|
|
|
public static void ReadDevices (Action action, string gateWayMAC)
|
{
|
System.Threading.Tasks.Task.Run (() => {
|
try {
|
//这里搜索设备,直到完成就退出
|
readDevice (gateWayMAC);
|
CommonPage.LocalPhoneFindDevice = false;
|
if (action != null) {
|
Application.RunOnMainThread (
|
action
|
);
|
}
|
} catch (Exception ex) {
|
Console.WriteLine (ex.ToString ());
|
} finally {
|
Application.RunOnMainThread (() => {
|
MainPage.Loading.Hide ();
|
Room.ReadThermostatHostList ();
|
});
|
}
|
});
|
}
|
|
/// <summary>
|
/// 读取设备
|
/// </summary>
|
static void readDevice (string gateWayMAC)
|
{
|
CommonPage.LocalPhoneFindDevice = true;
|
CommonPage.RandomHigh = (byte)new Random ().Next (255);
|
CommonPage.RandomLow = (byte)new Random ().Next (255);
|
CommonPage.DeviceList.Clear ();
|
|
//如果两次都没有数据反馈,就不读取
|
int readCount = 4;
|
while (0 < readCount) {
|
readCount--;
|
System.IO.MemoryStream ms = new System.IO.MemoryStream ();
|
ms.WriteByte (CommonPage.RandomHigh);
|
ms.WriteByte (CommonPage.RandomLow);
|
|
List<Common> list = CommonPage.DeviceList;
|
int tempCount = list.Count;
|
string s = ";";
|
for (int i = 0; i < list.Count; i++) {
|
Common common = list [i];
|
if (common.GatewayMAC != gateWayMAC)
|
continue;
|
if (s.Contains (";" + common.SubnetID.ToString () + ":" + common.DeviceID.ToString ()))
|
continue;
|
s += common.SubnetID.ToString () + ":" + common.DeviceID.ToString () + ";";
|
ms.WriteByte (common.SubnetID);
|
ms.WriteByte (common.DeviceID);
|
}
|
Console.WriteLine ("搜索非网关设备,网络地址是:" + CommonPage.EndPoint.ToString ());
|
Control control = new Control ();
|
control.Send (new Target () {
|
IPEndPoint = CommonPage.EndPoint,
|
Command = Command.ReadDeviceModul,
|
SubnetID = 0xFF,
|
DeviceID = 0xFF,
|
AddData = ms.ToArray ()
|
}, SendCount.Zero, false);
|
|
ms.Close ();
|
|
System.Threading.Thread.Sleep (1000);
|
//如果数量不相等,就重置次数
|
if (tempCount != CommonPage.DeviceList.Count) {
|
readCount = 4;
|
}
|
}
|
CommonPage.DeviceList = CommonPage.DeviceList.FindAll ((obj) => { return obj != null && obj.GatewayMAC == gateWayMAC; });
|
CommonPage.LocalPhoneFindDevice = false;
|
}
|
|
}
|
}
|