Commit 5695894c LN

新artnet协议料架修改,增加phy地址。

1 个父辈 e85ad7f6
......@@ -27,6 +27,8 @@ namespace SmartShelf.Common
/// <summary>
/// 料架灯类型,0=单色灯料架,1=三色灯料架
/// </summary>
public static string DeviceLedType = "DeviceLedType";
public static string DeviceLedType = "DeviceLedType";
public static string DefaultDeviceIP = "DefaultDeviceIP";
}
}
位置,优先级,高度,宽度,料仓ID,设备IP,区域ID,灯索引
1_1_1,10,8,7,1,192.168.201.221,0,0
1_1_2,10,8,7,1,192.168.201.221,0,1
1_1_3,10,8,7,1,192.168.201.221,0,2
1_1_1,10,8,7,1,192.168.201.191,0,0
1_1_2,10,8,7,1,192.168.201.192,0,1
1_1_3,10,8,7,1,192.168.201.193,0,2
1_1_4,10,8,7,1,192.168.201.221,0,3
1_1_5,10,8,7,1,192.168.201.221,0,4
1_1_6,10,8,7,1,192.168.201.221,0,5
......
......@@ -13,6 +13,8 @@ namespace SmartShelf.DeviceLibrary
public static Dictionary<string, LEDBaseModule> deviceMap = new Dictionary<string, LEDBaseModule>();
public static byte DefaultLight = 100;
public static int DeviceLedType = ConfigAppSettings.GetIntValue(Setting_Init.DeviceLedType);
public static string DefaultIP = ConfigAppSettings.GetValue(Setting_Init.DefaultDeviceIP);
public void Init()
{
}
......@@ -84,7 +86,6 @@ namespace SmartShelf.DeviceLibrary
protected ushort Max_DMX = 16;
public int Max_Light = 170;
protected IPEndPoint iep = null;
public string ModuleIP = "";
public static LEDBaseModule GetModule(string ip)
{
......
......@@ -19,15 +19,41 @@ namespace SmartShelf.DeviceLibrary
private int datalength = 512;
private List<byte[]> dmxDatas = null;
private string phyIP = "";
private string phyAddr = "00";
private IPEndPoint iep = null;
internal LEDColorArtNet(string ip) : base(ip)
{
this.phyIP = ip;
if (!String.IsNullOrEmpty(LEDManager.DefaultIP))
{
try
{
string[] array = phyIP.Split('.');
if (array.Length == 4)
{
int addr = Convert.ToInt32(array[3]);
phyAddr = ((byte)addr).ToString("X2");
}
}
catch (Exception ex)
{
LogUtil.error("IP【" + ip + "】解析phyAddr出错:" + ex.ToString());
}
iep = new IPEndPoint(IPAddress.Parse(LEDManager.DefaultIP), 6454);
}
else
{
phyAddr = "00";
iep = new IPEndPoint(IPAddress.Parse(ip), 6454);
}
Max_Light = 170;
Max_DMX = 16;
datalength = 512;
Max_Light = datalength / 3;
dmxDatas = new List<byte[]>(Max_DMX);
iep = new IPEndPoint(IPAddress.Parse(ip), 6454);
AllLightOff();
}
......@@ -136,7 +162,7 @@ namespace SmartShelf.DeviceLibrary
//闲置的时候会有不起作用的情况,这里多发几遍
for (int time = 0; time < 2; time++)
{
UdpClient myUdpClient = new UdpClient();
UdpClient myUdpClient = new UdpClient();
try
{
for (int i = 0; i < dmxDatas.Count; i++)
......@@ -183,6 +209,7 @@ namespace SmartShelf.DeviceLibrary
string ProVer = "000e";
string seq = "00";
string phy = "00";
phy = phyAddr;
string SubUni = "00";
SubUni = String.Format("{0:X}", dmxIndex).PadLeft(2, '0');
string Net = "00";
......
......@@ -22,6 +22,7 @@ namespace SmartShelf.DeviceLibrary
//byte[][] dmxData = new byte[MAX_RGBDMX_UNI][];
private List<byte[]> dmxDatas = new List<byte[]>(MAX_RGBDMX_UNI);
private IPEndPoint iep = null;
internal LEDColorModule(string ip) : base(ip)
{
iep = new IPEndPoint(IPAddress.Parse(ip), 6858);
......
......@@ -19,6 +19,7 @@ namespace SmartShelf.DeviceLibrary
//每个DMX域的灯数量
internal const int LIGHT_COUNT_PER_DMX = 512;
private IPEndPoint iep = null;
private List<byte[]> dmxDatas = new List<byte[]>(MAX_RGBDMX_UNI);
public string ModuleIP = "";
internal LEDSingleModule(string ip) : base(ip)
......
......@@ -16,7 +16,8 @@
<add key="Store_Position_Config" value="\Config\linePositions.csv"/>
<!--料仓cid-->
<add key="Store_CID" value="rc1272_1" />
<add key ="BoxCount" value ="1"/>
<add key ="BoxCount" value ="1"/>
<add key ="DefaultDeviceIP" value ="192.168.201.191"/>
</appSettings>
<log4net>
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
......
namespace SmartShelf
{
partial class FrmConfig
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FrmConfig));
this.label1 = new System.Windows.Forms.Label();
this.btnSave = new System.Windows.Forms.Button();
this.btnBack = new System.Windows.Forms.Button();
this.txtIP = new System.Windows.Forms.TextBox();
this.SuspendLayout();
//
// label1
//
this.label1.Font = new System.Drawing.Font("微软雅黑", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.label1.Location = new System.Drawing.Point(12, 34);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(356, 20);
this.label1.TabIndex = 0;
this.label1.Text = "第一块控制器模块IP:";
this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// btnSave
//
this.btnSave.Anchor = System.Windows.Forms.AnchorStyles.Top;
this.btnSave.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.btnSave.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnSave.Location = new System.Drawing.Point(192, 115);
this.btnSave.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.btnSave.Name = "btnSave";
this.btnSave.Size = new System.Drawing.Size(103, 36);
this.btnSave.TabIndex = 275;
this.btnSave.Text = "保存";
this.btnSave.UseVisualStyleBackColor = false;
this.btnSave.Click += new System.EventHandler(this.btnNext_Click);
//
// btnBack
//
this.btnBack.Anchor = System.Windows.Forms.AnchorStyles.Top;
this.btnBack.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.btnBack.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnBack.Location = new System.Drawing.Point(84, 115);
this.btnBack.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.btnBack.Name = "btnBack";
this.btnBack.Size = new System.Drawing.Size(103, 36);
this.btnBack.TabIndex = 274;
this.btnBack.Text = "取消";
this.btnBack.UseVisualStyleBackColor = false;
this.btnBack.Click += new System.EventHandler(this.btnBack_Click);
//
// txtIP
//
this.txtIP.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.txtIP.Location = new System.Drawing.Point(84, 68);
this.txtIP.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.txtIP.Name = "txtIP";
this.txtIP.Size = new System.Drawing.Size(211, 29);
this.txtIP.TabIndex = 276;
this.txtIP.KeyDown += new System.Windows.Forms.KeyEventHandler(this.txtPwd_KeyDown);
//
// FrmConfig
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(380, 205);
this.Controls.Add(this.txtIP);
this.Controls.Add(this.btnSave);
this.Controls.Add(this.btnBack);
this.Controls.Add(this.label1);
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.Name = "FrmConfig";
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
this.Text = "控制器配置";
this.Load += new System.EventHandler(this.FrmPwd_Load);
this.Shown += new System.EventHandler(this.FrmPwd_Shown);
this.KeyDown += new System.Windows.Forms.KeyEventHandler(this.FrmPwd_KeyDown);
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.Label label1;
private System.Windows.Forms.Button btnSave;
private System.Windows.Forms.Button btnBack;
private System.Windows.Forms.TextBox txtIP;
}
}
\ No newline at end of file

using SmartShelf.Common;
using SmartShelf.DeviceLibrary;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace SmartShelf
{
internal partial class FrmConfig :Form
{
internal FrmConfig( )
{
InitializeComponent();
}
private void FrmPwd_Load(object sender, EventArgs e)
{
txtIP.Text = LEDManager.DefaultIP;
}
private void btnNext_Click(object sender, EventArgs e)
{
string ip = txtIP.Text;
ConfigAppSettings.SaveValue(Setting_Init.DefaultDeviceIP, ip);
LEDManager.DefaultIP = ip;
MessageBox.Show("保存成功,重启软件后生效");
this.Close();
}
private void btnBack_Click(object sender, EventArgs e)
{
this.Close();
}
private void FrmPwd_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode.Equals(Keys.Enter))
{
btnNext_Click(null, null);
}
}
private void txtPwd_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode.Equals(Keys.Enter))
{
btnNext_Click(null, null);
}else if (e.KeyCode.Equals(Keys.Escape))
{
btnBack_Click(null, null);
}
}
private void FrmPwd_Shown(object sender, EventArgs e)
{
txtIP.Focus();
}
}
}
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAABAAEAQEAAAAEAIAAoQgAAFgAAACgAAABAAAAAgAAAAAEAIAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAA
AABZPT3QWT09/1g8PP9YPDz/WDw8/1g8Pf9YPD3/WDw9/1g8Pf9YPD3/WDw9/1g8Pf9YPD3/WDw9/1g8
Pf9YPD3/WDw9/1g8Pf9YPD3/WDw9/1g8Pf9YPD3/WDw9/1k9Pf9ZPT3/WT09/1g9Pf9YPT3/WD09/1g9
Pf9YPT3/WD09/1g9Pf9YPT3/WD09/1g9Pf9YPT3/WD09/1g9Pf9YPT3/WD09/1g9Pf9YPT3/WD09/1g9
Pf9YPT3/WD09/1g9Pf9YPT3/WD09/1g9Pf9YPT3/WD09/1g9Pf9YPT3/WD09/1g9Pf9YPT3/WD09/1g9
Pf9YPT3/WT09/1k9Pf9ZPT3RWT09/lo+Pv9hRkb/Y0hI/2NHRP9jRkP/Y0ZD/2NGQ/9jRkP/Y0ZD/2NG
Q/9jRkP/Y0ZD/2NGQ/9jRkP/Y0ZD/2NGQ/9jRkP/Y0ZD/2NGQ/9jRkP/Y0ZD/2NGQ/9eQUD/WT09/1w+
PP9gQDz/YEA8/2BAPP9gQDz/YEA8/2BAPP9gQDz/YEA8/2BAPP9gQDz/YEA8/2BAPP9gQDz/YEA8/2BA
PP9gQDz/YEA8/2BAPP9gQDz/YEA8/2BAPP9gQDz/YEA8/2BAPP9gQDz/YEA8/2BAPP9gQDz/YEA8/2BA
PP9gQDz/YEA8/2BAPP9gQDz/YEA8/18/PP9ZPT3/WT09/lg8PP9hRkb/w7m5/9/Z2f/dw6H/3bqI/926
iv/duor/3bqK/926iv/duor/3bqK/926iv/duor/3bqK/926iv/duor/3bqK/926iv/duor/3bqK/926
iv/evIv/l3hh/1U6PP+BTDX/umIr/7piK/+6Yiv/umIr/7piK/+6Yiv/umIr/7piK/+6Yiv/umIr/7pi
K/+6Yiv/umIr/7piK/+6Yiv/umIr/7piK/+6Yiv/umIr/7piK/+6Yiv/umIr/7piK/+6Yiv/umIr/7pi
K/+6Yiv/umIr/7piK/+6Yiv/umIr/7piK/+6Yiv/umIr/7tiKv+mWi7/Xz88/1k9Pf9YPDz/Y0hI/97Y
2P///////+e7///bnf//3J7//9ye///cnv//3J7//9ye///cnv//3J7//9ye///cnv//3J7//9ye///c
nv//3J7//9ye///cnv//3J7//96f/6eIa/9UOjz/i1Az/9RsJv/UbCb/1Gwm/9RsJv/UbCb/1Gwm/9Rs
Jv/UbCb/1Gwm/9RsJv/UbCb/1Gwm/9RsJv/UbCb/1Gwm/9RsJv/UbCb/1Gwm/9RsJv/UbCb/1Gwm/9Rs
Jv/UbCb/1Gwm/9RsJv/UbCb/1Gwm/9RsJv/UbCb/1Gwm/9RsJv/UbCb/1Gwm/9RsJv/VbCX/u2Iq/2BA
PP9YPT3/WDw8/2NISP/d2Nj///////7lu//+2Zv//tqd//7anf/+2p3//tqd//7anf/+2p3//tqd//7a
nf/+2p3//tqd//7anf/+2p3//tqd//7anf/+2p3//tqd///cnv+nh2r/VDo8/4tQNP/Tayb/0msm/9Jr
Jv/Sayb/0msm/9JrJv/Sayb/0msm/9JrJv/Sayb/0msm/9JrJv/Sayb/0msm/9JrJv/Sayb/0msm/9Jr
Jv/Sayb/0msm/9JrJv/Sayb/0msm/9JrJv/Sayb/0msm/9JrJv/Sayb/0msm/9JrJv/Sayb/0msm/9Jr
Jv/Sayb/1Gwm/7piK/9gQDz/WD09/1g8PP9jSEj/3djY///////+5bv//tmb//7anf/+2p3//tqd//7a
nf/+2p3//tqd//7anf/+2p3//tqd//7anf/+2p3//tqd//7anf/+2p3//tqd//7anf//3J7/p4dq/1Q6
PP+LUDT/02sm/9JrJv/Sayb/0msm/9JrJv/Sayb/0msm/9JrJv/Sayb/0msm/9JrJv/Sayb/0msm/9Jr
Jv/Sayb/0msm/9JrJv/Sayb/0msm/9JrJv/Sayb/0msm/9JrJv/Sayb/0msm/9JrJv/Sayb/0msm/9Jr
Jv/Sayb/0msm/9JrJv/Sayb/0msm/9RsJv+6Yiv/YEA8/1g9Pf9YPDz/Y0hI/93Y2P///////uW7//7Z
m//+2p3//tqd//7anf/+2p3//tqd//7anf/+2p3//tqd//7anf/+2p3//tqd//7anf/+2p3//tqd//7a
nf/+2p3//9ye/6eHav9UOjz/i1A0/9NrJv/Sayb/0msm/9JrJv/Sayb/0msm/9JrJv/Sayb/0msm/9Jr
Jv/Sayb/0msm/9JrJv/Sayb/0msm/9JrJv/Sayb/0msm/9JrJv/Sayb/0msm/9JrJv/Sayb/0msm/9Jr
Jv/Sayb/0msm/9JrJv/Sayb/0msm/9JrJv/Sayb/0msm/9JrJv/UbCb/umIr/2BAPP9YPT3/WDw8/2NI
SP/d2Nj///////7lu//+2Zv//tqd//7anf/+2p3//tqd//7anf/+2p3//tqd//7anf/+2p3//tqd//7a
nf/+2p3//tqd//7anf/+2p3//tqd///cnv+nh2r/VDo8/4tQNP/Tayb/0msm/9JrJv/Sayb/0msm/9Jr
Jv/Sayb/0msm/9JrJv/Sayb/0msm/9JrJv/Sayb/0msm/9JrJv/Sayb/0msm/9JrJv/Sayb/0msm/9Jr
Jv/Sayb/0msm/9JrJv/Sayb/0msm/9JrJv/Sayb/0msm/9JrJv/Sayb/0msm/9JrJv/Sayb/1Gwm/7pi
K/9gQDz/WD09/1g8PP9jSEj/3djY///////+5bv//tmb//7anf/+2p3//tqd//7anf/+2p3//tqd//7a
nf/+2p3//tqd//7anf/+2p3//tqd//7anf/+2p3//tqd//7anf//3J7/p4dq/1Q6PP+LUDT/02sm/9Jr
Jv/Sayb/0msm/9JrJv/Sayb/0msm/9JrJv/Sayb/0msm/9JrJv/Sayb/0msm/9JrJv/Sayb/0msm/9Jr
Jv/Sayb/0msm/9JrJv/Sayb/0msm/9JrJv/Sayb/0msm/9JrJv/Sayb/0msm/9JrJv/Sayb/0msm/9Jr
Jv/Sayb/0msm/9RsJv+6Yiv/YEA8/1g9Pf9YPDz/Y0hI/93Y2P///////uW7//7Zm//+2p3//tqd//7a
nf/+2p3//tqd//7anf/+2p3//tqd//7anf/+2p3//tqd//7anf/+2p3//tqd//7anf/+2p3//9ye/6eH
av9UOjz/i1A0/9NrJv/Sayb/0msm/9JrJv/Sayb/0msm/9JrJv/Sayb/0msm/9JrJv/Sayb/0msm/9Jr
Jv/Sayb/0msm/9JrJv/Sayb/0msm/9JrJv/Sayb/0msm/9JrJv/Sayb/0msm/9JrJv/Sayb/0msm/9Jr
Jv/Sayb/0msm/9JrJv/Sayb/0msm/9JrJv/UbCb/umIr/2BAPP9YPT3/WDw8/2NISP/d2Nj///////7l
u//+2Zv//tqd//7anf/+2p3//tqd//7anf/+2p3//tqd//7anf/+2p3//tqd//7anf/+2p3//tqd//7a
nf/+2p3//tqd///cnv+nh2r/VDo8/4tQNP/Tayb/0msm/9JrJv/Sayb/0msm/9JrJv/Sayb/0msm/9Jr
Jv/Sayb/0msm/9JrJv/Sayb/0msm/9JrJv/Sayb/0msm/9JrJv/Sayb/0msm/9JrJv/Sayb/0msm/9Jr
Jv/Sayb/0msm/9JrJv/Sayb/0msm/9JrJv/Sayb/0msm/9JrJv/Sayb/1Gwm/7piK/9gQDz/WD09/1g8
PP9jSEj/3djY///////+5bv//tmb//7anf/+2p3//tqd//7anf/+2p3//tqd//7anf/+2p3//tqd//7a
nf/+2p3//tqd//7anf/+2p3//tqd//7anf//3J7/p4dq/1Q6PP+LUDT/02sm/9JrJv/Sayb/0msm/9Jr
Jv/Sayb/0msm/9JrJv/Sayb/0msm/9JrJv/Sayb/0msm/9JrJv/Sayb/0msm/9JrJv/Sayb/0msm/9Jr
Jv/Sayb/0msm/9JrJv/Sayb/0msm/9JrJv/Sayb/0msm/9JrJv/Sayb/0msm/9JrJv/Sayb/0msm/9Rs
Jv+6Yiv/YEA8/1g9Pf9YPDz/Y0hI/93Y2P///////uW7//7Zm//+2p3//tqd//7anf/+2p3//tqd//7a
nf/+2p3//tqd//7anf/+2p3//tqd//7anf/+2p3//tqd//7anf/+2p3//9ye/6eHav9UOjz/i1A0/9Nr
Jv/Sayb/0msm/9JrJv/Sayb/0msm/9JrJv/Sayb/0msm/9JrJv/Sayb/0msm/9JrJv/Sayb/0msm/9Jr
Jv/Sayb/0msm/9JrJv/Sayb/0msm/9JrJv/Sayb/0msm/9JrJv/Sayb/0msm/9JrJv/Sayb/0msm/9Jr
Jv/Sayb/0msm/9JrJv/UbCb/umIr/2BAPP9YPT3/WDw8/2NISP/d2Nj///////7lu//+2Zv//tqd//7a
nf/+2p3//tqd//7anf/+2p3//tqd//7anf/+2p3//tqd//7anf/+2p3//tqd//7anf/+2p3//tqd///c
nv+nh2r/VDo8/4tQNP/Tayb/0msm/9JrJv/Sayb/0msm/9JrJv/Sayb/0msm/9JrJv/Sayb/0msm/9Jr
Jv/Sayb/0msm/9JrJv/Sayb/0msm/9JrJv/Sayb/0msm/9JrJv/Sayb/0msm/9JrJv/Sayb/0msm/9Jr
Jv/Sayb/0msm/9JrJv/Sayb/0msm/9JrJv/Sayb/1Gwm/7piK/9gQDz/WD09/1g8PP9jSEj/3djY////
///+5bv//tmb//7anf/+2p3//tqd//7anf/+2p3//tqd//7anf/+2p3//tqd//7anf/+2p3//tqd//7a
nf/+2p3//tqd//7anf//3J7/p4dq/1Q6PP+LUDT/02sm/9JrJv/Sayb/0msm/9JrJv/Sayb/0msm/9Jr
Jv/Sayb/0msm/9JrJv/Sayb/0msm/9JrJv/Sayb/0msm/9JrJv/Sayb/0msm/9JrJv/Sayb/0msm/9Jr
Jv/Sayb/0msm/9JrJv/Sayb/0msm/9JrJv/Sayb/0msm/9JrJv/Sayb/0msm/9RsJv+6Yiv/YEA8/1g9
Pf9YPDz/Y0hI/93Y2P///////uW7//7Zm//+2p3//tqd//7anf/+2p3//tqd//7anf/+2p3//tqd//7a
nf/+2p3//tqd//7anf/+2p3//tqd//7anf/+2p3//9ye/6eHav9UOjz/i1A0/9NrJv/Sayb/0msm/9Jr
Jv/Sayb/0msm/9JrJv/Sayb/0msm/9JrJv/Sayb/0msm/9JrJv/Sayb/0msm/9JrJv/Sayb/0msm/9Jr
Jv/Sayb/0msm/9JrJv/Sayb/0msm/9JrJv/Sayb/0msm/9JrJv/Sayb/0msm/9JrJv/Sayb/0msm/9Jr
Jv/UbCb/umIr/2BAPP9YPT3/WDw8/2NISP/d2Nj///////7lu//+2Zv//tqd//7anf/+2p3//tqd//7a
nf/+2p3//tqd//7anf/+2p3//tqd//7anf/+2p3//tqd//7anf/+2p3//tqd///cnv+nh2r/VDo8/4tQ
NP/Tayb/0msm/9JrJv/Sayb/0msm/9JrJv/Sayb/0msm/9JrJv/Sayb/0msm/9JrJv/Sayb/0msm/9Jr
Jv/Sayb/0msm/9JrJv/Sayb/0msm/9JrJv/Sayb/0msm/9JrJv/Sayb/0msm/9JrJv/Sayb/0msm/9Jr
Jv/Sayb/0msm/9JrJv/Sayb/1Gwm/7piK/9gQDz/WD09/1g8PP9jSEj/3djY////////5rv//9yd///d
n///3J7//tud//7anf/+2p3//tqd//7anf/+2p3//tqd//7anf/+2p3//tqd//7anf/+2p3//tqd//7a
nf//3J7/p4dq/1Q6PP+LUDT/02sm/9JrJv/Sayb/0msm/9JrJv/Sayb/0msm/9JrJv/Sayb/0msm/9Jr
Jv/Sayb/0msm/9JrJv/Sayb/0msm/9JrJv/Sayb/0msm/9JrJv/Sayb/0msm/9JrJv/Tayb/02sm/9Jr
Jv/Sayb/1Gwm/9RsJv/Tayb/0Wsm/85qJ//Rayb/0msm/9RsJv+6Yiv/YEA8/1g9Pf9YPDz/Y0hI/93Y
2P//////xa+Z/6yMbP/Do3z/2beI//PQl//+253//9ue///cnv//3Z///9ye//7bnf/+2p3//tqd//7a
nf/+2p3//tqd//7anf/+2p3//9ye/6eHav9UOjz/i1A0/9NrJv/Sayb/0msm/9JrJv/Sayb/0msm/9Jr
Jv/Sayb/0msm/9JrJv/Sayb/0msm/9JrJv/Sayb/02sm/9NrJv/UbCb/02sm/9JrJv/Tayb/0msm/89q
J//LaCf/xWYp/8VmKP/Rayb/0Wsm/7BeLP+YVTL/jFE0/4JNNf95STf/rV0t/9NsJv/UbCb/umIr/2BA
PP9YPT3/WDw8/2NISP/e2Nj//v7+/4p2d/9vQjT/eko4/2pHP/+yknH//dmc/7qZdf+pim3/waF7/9i2
iP/10pj//tud//7bnf//3J7//92f///cnv/+253//tqd///cnv+nh2r/VDo8/4tQNP/Tayb/0msm/9Jr
Jv/Sayb/0msm/9NrJv/UbCb/1Gwm/9RsJv/UbCb/0msm/9JrJv/Rayb/zGkn/8ZnKP+/ZCr/t2Er/8Zm
KP/UbCb/vGMq/4hPNP99Szb/dkc2/3BEN/93SDf/yGco/8tpJ/9zRzf/ekMq/5BHH/+aSRn/c0Eu/5hV
Mf/UbCb/1Gwm/7piK/9gQDz/WD09/1g8PP9jSEj/3tjY//7+/v+Ld3f/pFcr/9BqJv+KTjH/pYZq//bT
mf97XE//eUc0/31LN/9qSED/w6J7///bnv+6mXX/o4Vp/72def/Vs4b/89CX//7anf//3J7/p4dq/1Q6
PP+LUDT/02sm/9JrJv/Sayb/0msm/9BqJv/CZSn/uGEr/65eLf+jWS//pVov/81pJ//Qaib/lVQy/3ZI
N/9yRTb/cUQ0/2VAOP+YVTH/1mwl/6RaL/9sQDL/oEoW/6xMEP+jShT/b0Q2/8RmKf/LaCf/dUc2/69N
D//OUwD/zVIA/4ZFJf+YVjL/1Gwm/9RsJv+6Yiv/YEA8/1g9Pf9YPDz/Y0hI/97Y2P/+/v7/i3d3/6RX
K//WbCX/kFAx/6WHa//205n/f15P/7JeKv/Qaib/gEs0/7iYdv/82Jz/g2RV/3RENP97Sjf/aEY+/7iX
dP//3J7//9ye/6eHav9UOjz/i1A0/9NrJv/Sayb/0msm/9RsJv+0YCz/bEQ4/29CNP9zQjD/dEIv/2hC
Of/AZCn/zmon/3ZIN/+QRh7/s00N/7tPCP+GRST/kVMz/9ZsJf+kWi//fUQq/8tSAf/OUwD/uE4K/3JF
Nf/EZin/y2gn/3VHNv+uTA//zVIA/8tSAP+FRSX/mVYy/9RsJv/UbCb/umIr/2BAPP9YPT3/WDw8/2NI
SP/e2Nj//v7+/4t3d/+kVyv/1mwl/49QMf+lh2v/9tOZ/39eT/+yXir/02wm/4NMNP+4mXb/+9ic/4Vm
Vf+qWiz/0Wsm/4ZNMv+sjW///9ye///cnv+nh2r/VDo8/4tQNP/Tayb/0msm/9JrJv/UbCb/qlwu/3NC
L/+7Twn/xVED/7lPCf9xRDT/v2Qq/85qJ/94SDb/qksS/85TAP/NUgD/jEYh/5FTM//WbCX/pFov/31E
Kv/JUgH/zFIA/7dOCv9yRTX/xGYp/8toJ/91Rzb/rkwP/81SAP/LUgD/hUUl/5lWMv/UbCb/1Gwm/7pi
K/9gQDz/WD09/1g8PP9jSEj/3tjY//7+/v+Ld3f/pFcr/9ZsJf+PUDH/pYdr//bTmf9/Xk//sl4q/9Nr
Jv+DTDT/uJl2//vYnP+FZlX/qlos/9VsJf+KTzL/rI5v///cnv//3J7/p4dq/1Q6PP+LUDT/02sm/9Jr
Jv/Sayb/1Gwm/6tcLv95Qy3/yFEC/81SAP+8Twj/cUQ0/79kKv/Oaif/eEg2/6hLEv/NUgD/zFIA/4tG
If+SUzP/1mwl/6RaL/99RCr/yVIB/8xSAP+3Tgr/ckU1/8RmKf/LaCf/dUc2/65MD//NUgD/y1IA/4VF
Jf+ZVjL/1Gwm/9RsJv+6Yiv/YEA8/1g9Pf9YPDz/Y0hI/97Y2P/+/v7/i3d3/6RXK//WbCX/j1Ax/6WH
a//205n/f15P/7JeKv/Tayb/g0w0/7iZdv/72Jz/hWZV/6paLP/VbCX/ik4y/6yOb///3J7//9ye/6eH
av9UOjz/i1A0/9NrJv/Sayb/0msm/9RsJv+rXC7/eEMt/8dRAv/MUgD/vE8I/3FENP+/ZCr/zmon/3hI
Nv+oSxL/zVIA/8xSAP+LRiH/klMz/9ZsJf+kWi//fUQq/8lSAf/MUgD/t04K/3JFNf/EZin/y2gn/3VH
Nv+uTA//zVIA/8tSAP+FRSX/mVYy/9RsJv/UbCb/umIr/2BAPP9YPT3/WDw8/2NISP/e2Nj//v7+/4t3
d/+kVyv/1mwl/49QMf+lh2v/9tOZ/39eT/+yXir/02sm/4NMNP+4mXb/+9ic/4VmVf+qWiz/1Wwl/4pO
Mv+sjm///9ye///cnv+nh2r/VDo8/4tQNP/Tayb/0msm/9JrJv/UbCb/q1wu/3hDLf/HUQL/zFIA/7xP
CP9xRDT/v2Qq/85qJ/94SDb/qEsS/81SAP/MUgD/i0Yh/5JTM//WbCX/pFov/31EKv/JUgH/zFIA/7dO
Cv9yRTX/xGYp/8toJ/91Rzb/rkwP/81SAP/LUgD/hUUl/5lWMv/UbCb/1Gwm/7piK/9gQDz/WD09/1g8
PP9jSEj/3tjY//7+/v+Ld3f/pVgr/9ZsJf+PUDH/pYdr//bTmf9/Xk//sl4q/9NrJv+DTDT/uJl2//vY
nP+FZlX/qlos/9VsJf+KTjL/rI5v///cnv//3J7/p4dq/1Q6PP+LUDT/02sm/9JrJv/Sayb/1Gwm/6tc
Lv94Qy3/x1EC/8xSAP+8Twj/cUQ0/79kKv/Oaif/eEg2/6hLEv/NUgD/zFIA/4tGIf+SUzP/1mwl/6Ra
L/99RCr/yVIB/8xSAP+3Tgr/ckU1/8RmKf/LaCf/dUc2/69MD//NUgD/zVIA/4ZFJf+YVjL/1Gwm/9Rs
Jv+6Yiv/YEA8/1g9Pf9YPDz/Y0hI/97Y2P/+/v7/inZ2/5xULP/Sayb/kFAx/6WHa//205n/f15P/7Je
Kv/Tayb/g0w0/7iZdv/72Jz/hWZV/6paLP/VbCX/ik4y/6yOb///3J7//9ye/6eHav9UOjz/i1A0/9Nr
Jv/Sayb/0msm/9RsJv+rXC7/eEMt/8dRAv/MUgD/vE8I/3FENP+/ZCr/zmon/3hINv+oSxL/zVIA/8xS
AP+LRiH/klMz/9ZsJf+kWi//fUQq/8lSAf/NUgD/uE4K/3JFNf/EZin/y2gn/3VHNv+qTBH/wFAG/7NN
DP93Qiz/mFUx/9RsJv/UbCb/umIr/2BAPP9YPT3/WDw8/2NISP/d2Nj//////6SPhv9wTED/fkw3/2xB
Nf+lhmr/9tOZ/35eT/+zXir/1Wwl/4NNNP+4mXb/+9ic/4VmVf+qWiz/1Wwl/4pOMv+sjm///9ye///c
nv+nh2r/VDo8/4tQNP/Tayb/0msm/9JrJv/UbCb/q1wu/3hDLf/HUQL/zFIA/7xPCP9xRDT/v2Qq/85q
J/94SDb/qEsS/81SAP/NUgD/jEYh/5FTM//WbCX/pFov/3xEKv/GUQP/w1AE/6hLEv9vRDb/xGYp/8xp
J/9zRzj/bkEy/3JDM/9zRTb/ekk2/7FeLP/TbCb/1Gwm/7piK/9gQDz/WD09/1g8PP9jSEj/3djY////
///33rb/372K/7+fev+cfWX/y6l///bTmf99X1H/hEsx/6tbLP95SDX/uJl2//zYnP+FZlX/qlss/9Vs
Jf+KTjL/rI5v///cnv//3J7/p4dq/1Q6PP+LUDT/02sm/9JrJv/Sayb/1Gwm/6tcLv94Qy3/x1EC/8xS
AP+8Twj/cUQ0/79kKv/Oaif/eEg2/6lLEv/NUgD/x1EC/4dFJP+RUzP/1mwl/6VaL/9lPzf/eUMs/3ND
Mf9wRDX/gEw1/8loKP/Rayb/sV8s/6xdLv+7Yyv/xmco/85pJ//Sayb/0msm/9RsJv+6Yiv/YEA8/1g9
Pf9YPDz/Y0hI/93Y2P///////+e8///env//3p///tud//7anf/82Zz/zqyB/55/Zv+BYlP/a01F/8Kh
ev/715v/g2VV/6BWLf/Raib/ik8y/6yNb///3J7//9ye/6eHav9UOjz/i1A0/9NrJv/Sayb/0msm/9Rs
Jv+rXC7/eUMt/8lSAv/NUgD/uU8J/3BDNP+/ZCr/zmon/3ZIN/98Qyn/hEUm/3pELf9tQzb/n1gw/9Rs
Jv/BZCn/nFcw/6dbL/+2YSz/wmUp/8xpJ//Sayb/0msm/9RsJv/UbCb/1Gwm/9RsJv/UbCb/02sm/9Jr
Jv/UbCb/umIr/2BAPP9YPT3/WDw8/2NISP/d2Nj//////9S9ov/KqH7/6seR//vXm///257//tqd///c
nv/+253/9dKY/+XCjv/00Zf//Nic/6ODaP90UET/fk04/2lBN/+tjW7//9ye///cnv+nh2r/VDo8/4tQ
NP/Tayb/0msm/9JrJv/UbCb/q1wu/2tAM/+TRx3/h0Uk/3hDLf9wRTj/w2Up/9FrJv+gWC//klMz/6JZ
MP+xXy3/vmQq/81pJ//Sayb/02sm/9RsJv/UbCb/1Gwm/9RsJv/TbCb/0msm/9JrJv/Sayb/zWkn/8Rm
Kf+4YSv/rF0t/8NlKf/Tayb/1Gwm/7piK/9gQDz/WD09/1g8PP9jSEj/3tjY//7+/v+MeHj/Z0I5/3dV
SP+Ob1z/1bOF///bnv/82Jz//dqd///dn///3Z///tue//7anf/41Zr/5cKP/8enf/+oiGv/1bOF///b
nv//3J7/p4dq/1Q6PP+LUDT/02sm/9JrJv/Sayb/02sm/7tiKv+ATDX/ilA0/5pWMf+qXC7/vWMq/9Bq
Jv/Sayb/02sm/9NsJv/UbCb/1Gwm/9RsJv/Tayb/0msm/9NrJv/TbCb/0Wsm/8xpJ//DZSj/wWQp/9Fr
Jv/Paif/llQx/3dIN/9xRTb/cUMz/2M/OP+cVzD/1Gwm/9RsJv+6Yiv/YEA8/1g9Pf9YPDz/Y0hI/97Y
2P/+/v7/i3d3/55VLP+6YSr/eUYz/6WGav/82Jz/p4dq/5p7Yf/CoXf/48CN//rWm//+2p3//9ue///d
n///3Z///9ye//7bnf/+2p3//9ye/6eHav9UOjz/i1A0/9NrJv/Sayb/0msm/9JrJv/Sayb/0Gom/9Jr
Jv/UbCb/1Gwm/9NsJv/Sayb/0msm/9NsJv/UbCb/02sm/89qJ//JaCj/zmkn/9NrJv/CZSn/lVQx/4NN
NP90Rzz/ZkJF/3JGOv/HZyj/y2gn/3JGN/+TRx3/tU4M/79QBv+CRCb/mVYy/9RsJv/UbCb/umIr/2BA
PP9YPT3/WDw8/2NISP/e2Nj//v7+/4t3d/+lWCv/120l/5BRMP+lh2v/9tKY/3lcU/9fSXz/Y0xz/2pP
Uf/KqH7//9ye/+3Kk//syZP//Nic///cnv/+257//tqd///cnv+nh2r/VDo8/4tQNP/Tayb/0msm/9Jr
Jv/Sayb/0msm/9RsJv/UbCb/1Gwm/9NrJv/Rayb/0msm/9FrJv+3YSv/m1cx/4tQNP99Szb/cEU4/6FY
L//WbCX/plot/1c7Wf9SNaX/UjTB/1I0uf9nQkf/xWYo/8toJ/91Rzb/sE0P/85TAP/MUgD/hUUl/5lW
Mv/UbCb/1Gwm/7piK/9gQDz/WD09/1g8PP9jSEj/3tjY//7+/v+Ld3f/pFcr/9ZsJf+PUDH/pYdr//bT
mP97Xlf/cGHO/3lu+v9iS3r/uZhy//3Znf+Sc17/clNK/5FzXv+3l3T/68iS///bnf//3J7/p4dq/1Q6
PP+LUDT/02sm/9JrJv/Sayb/0msm/85qJ/+7Yir/q10u/5tWMf+KUDT/i1A0/8hnKP/Oaif/eUk3/3VC
Lf+PRx//oEoW/3tDKv+RUzP/1mwl/6ZaK/9XOXf/UTH0/1Ex+f9RM9j/aEJJ/8VmKP/LaCf/dUc2/65M
D//NUgD/y1IA/4VFJf+ZVjL/1Gwm/9RsJv+6Yiv/YEA8/1g9Pf9YPDz/Y0hI/97Y2P/+/v7/i3d3/6RX
K//WbCX/j1Ax/6WHa//205j/e15X/3Bhzv96cP//ZE6B/7qZcv/72Jz/hGVV/5JQL/+aVC//a0M4/7KS
cf//3J7//9ye/6eHav9UOjz/i1A0/9NrJv/Sayb/0msm/9RsJv+yXyz/aUI4/3ZDLv+DRSb/iEUj/2pC
N/+/ZCr/zmon/3hINv+oSxL/zlMA/85TAP+MRiH/kVMz/9ZsJf+mWiv/Vzl2/1Ex8f9RMfb/UTPW/2hC
Sf/FZij/y2gn/3VHNv+uTA//zVIA/8tSAP+FRSX/mVYy/9RsJv/UbCb/umIr/2BAPP9YPT3/WDw8/2NI
SP/e2Nj//v7+/4t3d/+kVyv/1mwl/49QMf+lh2v/9tOY/3teV/9wYc7/enD//2ROgf+6mXL/+9ic/4Vm
Vf+rWyv/120l/4pOMv+sjW///9ye///cnv+nh2r/VDo8/4tQNP/Tayb/0msm/9JrJv/UbCb/qlwu/3ZD
Lv/DUAT/zFIA/71PCP9xRDT/v2Qq/85qJ/94SDb/qEsS/81SAP/MUgD/i0Yh/5JTM//WbCX/plor/1c5
dv9RMfH/UTH2/1Ez1v9oQkn/xWYo/8toJ/91Rzb/rkwP/81SAP/LUgD/hUUl/5lWMv/UbCb/1Gwm/7pi
K/9gQDz/WD09/1g8PP9jSEj/3tjY//7+/v+Ld3f/pFcr/9ZsJf+PUDH/pYdr//bTmP97Xlf/cGHO/3pw
//9kToH/uply//vYnP+FZlX/qlos/9VsJf+KTjL/rI5v///cnv//3J7/p4dq/1Q6PP+LUDT/02sm/9Jr
Jv/Sayb/1Gwm/6tcLv94Qy3/yFEC/8xSAP+8Twj/cUQ0/79kKv/Oaif/eEg2/6hLEv/NUgD/zFIA/4tG
If+SUzP/1mwl/6ZaK/9XOXb/UTHx/1Ex9v9RM9b/aEJJ/8VmKP/LaCf/dUc2/65MD//NUgD/y1IA/4VF
Jf+ZVjL/1Gwm/9RsJv+6Yiv/YEA8/1g9Pf9YPDz/Y0hI/97Y2P/+/v7/i3d3/6VYK//WbCX/j1Ax/6WH
a//205j/e15X/3Bhzv96cP//ZE6B/7qZcv/72Jz/hWZV/6paLP/VbCX/ik4y/6yOb///3J7//9ye/6eH
av9UOjz/i1A0/9NrJv/Sayb/0msm/9RsJv+rXC7/eEMt/8dRAv/MUgD/vE8I/3FENP+/ZCr/zmon/3hI
Nv+oSxL/zVIA/8xSAP+LRiH/klMz/9ZsJf+mWiv/Vzl2/1Ex8f9RMfb/UTPW/2hCSf/FZij/y2gn/3VH
Nv+uTA//zVIA/8xSAP+GRSX/mVYy/9RsJv/UbCb/umIr/2BAPP9YPT3/WDw8/2NISP/e2Nj//v7+/4p3
d/+iViv/120l/5BRMf+lh2v/9tOY/3teV/9wYc7/enD//2ROgf+6mXL/+9ic/4VmVf+qWiz/1Wwl/4pO
Mv+sjm///9ye///cnv+nh2r/VDo8/4tQNP/Tayb/0msm/9JrJv/UbCb/q1wu/3hDLf/HUQL/zFIA/7xP
CP9xRDT/v2Qq/85qJ/94SDb/qEsS/81SAP/MUgD/i0Yh/5JTM//WbCX/plor/1c5dv9RMfH/UTH2/1Ez
1v9oQkn/xWYo/8toJ/91Rzb/r00P/8xSAP/CUAT/fkMo/5hVMv/UbCb/1Gwm/7piK/9gQDz/WD09/1g8
PP9jSEj/3tjY//////+YhH//b0Q3/5ZTL/9+STP/podq//bTmP97Xlf/cGHO/3pw//9kToH/uply//vY
nP+FZlX/qlos/9VsJf+KTjL/rI5v///cnv//3J7/p4dq/1Q6PP+LUDT/02sm/9JrJv/Sayb/1Gwm/6tc
Lv94Qy3/x1EC/8xSAP+8Twj/cUQ0/79kKv/Oaif/eEg2/6hLEv/NUgD/zFIA/4tGIf+SUzP/1mwl/6Za
K/9XOXb/UTHz/1Ex+f9RMtj/aEJJ/8VmKP/LaCf/ckY3/4FEJv+BRCf/dEMw/29FN/+qXC7/1Gwm/9Rs
Jv+6Yiv/YEA8/1g9Pf9YPDz/Y0hI/93Y2P//////7tWx/8CfeP+PcV3/akxG/66Ob//20pj/e15X/29g
y/97cP//ZE6B/7qZcv/72Jz/hWZV/6paLP/VbCX/ik4y/6yOb///3J7//9ye/6eHav9UOjz/i1A0/9Nr
Jv/Sayb/0msm/9RsJv+rXC7/eEMt/8dRAv/MUgD/vE8I/3FENP+/ZCr/zmon/3hINv+oSxL/zVIA/8xS
AP+MRiH/kVMz/9ZsJf+mWiz/Vzpy/1Ey2v9SNMX/UjaY/2hCQv/FZij/z2on/5FSMv+ITzT/n1gw/7Rg
LP/FZin/0Gom/9JrJv/UbCb/umIr/2BAPP9YPT3/WDw8/2NISP/d2Nj////////mu///3J3/+9eb/+XC
jv/uy5T/99OZ/4VnWP9fSG7/aliu/2BIcP+6mXP//Nic/4VmVf+qWiz/1Wwl/4pOMv+sjm///9ye///c
nv+nh2r/VDo8/4tQNP/Tayb/0msm/9JrJv/UbCb/q1wu/3hDLf/HUQL/zFIA/7xPCP9xRDT/v2Qq/85q
J/94SDb/qkwS/85TAP/JUgH/h0Uk/5FTM//WbCX/qFst/1w+R/9jQFD/cUY//4RNNP+iWS//zmkn/9Jr
Jv/Rayb/0msm/9RsJv/UbCb/02sm/9JrJv/Sayb/1Gwm/7piK/9gQDz/WD09/1g8PP9jSEj/3djY////
///+5bv//tmb//7anf//257//9ue//7anf/lwo7/t5Zx/4lrWv9pTUn/waB6//vXm/+FZlX/qlos/9dt
Jf+LTzL/rI1v///cnv//3J7/p4dq/1Q6PP+LUDT/02sm/9JrJv/Sayb/1Gwm/6tcLv94Qy3/yFEC/81S
AP+9Twj/cUQ0/79kKv/Oaif/dkg3/4dFI/+MRiH/ekMs/2pBN/+eVzD/1Gwm/8dnKP+vXiz/vmMp/8po
J//Rayb/02wm/9JrJv/Sayb/0msm/9JrJv/Sayb/0msm/9JrJv/Sayb/0msm/9RsJv+6Yiv/YEA8/1g9
Pf9YPDz/Y0hI/93Y2P///////uW7//7Zm//+2p3//tqd//7anf/+2p3//9ue///cnv/51Zr/5MKO//PQ
l//615v/imxa/3lHNP+oWiz/gUoz/6yNb///3J7//9ye/6eHav9UOjz/i1A0/9NrJv/Sayb/0msm/9Rs
Jv+rXC7/eEMt/8BQBv+5Twn/nkkX/2tCN/+/ZCr/0Gom/4xQM/96Sjf/j1Iz/6VaL/+6Yiv/zWkn/9Jr
Jv/Tayb/1Gwm/9NrJv/Sayb/0msm/9JrJv/Sayb/0msm/9JrJv/Sayb/0msm/9JrJv/Sayb/0msm/9Jr
Jv/UbCb/umIr/2BAPP9YPT3/WDw8/2NISP/d19j///////7lu//+2Zv//tqd//7anf/+2p3//tqd//7a
nf/+2p3//tqd///cnv/+253//tqd/+C+jP+sjW7/g2RU/2ZHQf+zk3H//9ye///cnv+nh2r/VDo8/4tQ
NP/Tayb/0msm/9JrJv/UbCb/rF0t/2M/OP90QzD/cUQ1/3dINv+QUjP/ymgo/9NrJv/NaSf/zmon/9Nr
Jv/UbCb/02wm/9JrJv/Sayb/0msm/9JrJv/Sayb/0msm/9JrJv/Sayb/0msm/9JrJv/Sayb/0msm/9Jr
Jv/Sayb/0msm/9NrJv/UbCb/1Wwl/7hhK/9gQDz/WT09/1k9Pf9cQED/mYiI/9nS0f/537X//9yd///b
nv/+2p3//tqd//7anf/+2p3//tqd//7anf/+2p3//tqd//7anf//3J7//9ye//XSmP/buYn/7MmS///b
nf//3J7/p4dq/1Q6PP+LUDT/02sm/9JrJv/Sayb/02sm/8VmKf+hWS//r14t/8BkKv/MaSf/0msm/9Jr
Jv/Sayb/0msm/9JrJv/Sayb/0msm/9JrJv/Sayb/0msm/9JrJv/Sayb/0msm/9JrJv/Sayb/0msm/9Jr
Jv/Sayb/0msm/9NrJv/UbCb/1Gwm/89qJ//EZin/sF4s/5dVMf95STf/Wz49/1k9Pf9ZPT3UWT09/Fc7
O/9jSUn/iW1e/8Ggef/typP//tue///cnv/+2p3//tqd//7anf/+2p3//tqd//7anf/+2p3//tqd//7a
nf/+253//9ye//7bnv/+2p3//9ye/6eHav9UOjz/i1A0/9NrJv/Sayb/0msm/9JrJv/Tayb/1Gwm/9Rs
Jv/Tayb/0msm/9JrJv/Sayb/0msm/9JrJv/Sayb/0msm/9JrJv/Sayb/0msm/9JrJv/Sayb/0msm/9Jr
Jv/Sayb/0msm/9NrJv/UbCb/1Gwm/89qJ//EZin/sF4s/5dVMf9+Szb/aUM6/10+PP9YPT3/Vzw9/1k9
PfhZPT3KWT09IFk9PWhZPT2+WDw881c7O/9bPz7/dVdN/6iIa//duor/+tab///cnv//257//tqd//7a
nf/+2p3//tqd//7anf/+2p3//tqd//7anf/+2p3//tqd///cnv+nh2r/VDo8/4tQNP/Tayb/0msm/9Jr
Jv/Sayb/0msm/9JrJv/Sayb/0msm/9JrJv/Sayb/0msm/9JrJv/Sayb/0msm/9JrJv/Sayb/0msm/9Jr
Jv/Sayb/0msm/9NrJv/UbCb/1Gwm/89qJ//EZin/sF4s/5dVMf9+Szb/aUM6/10+PP9YPT3/Vzw9/1g9
PfdZPT3eWT09s1k9PX1ZPT1HWT09GVk9PQBZPT0AWT09DVk9PURZPT2aWT094Vc7PP5XOzz/ZklE/49w
XP/HpX3/8c2V///cnv//3J7//tqd//7anf/+2p3//tqd//7anf/+2p3//tqd//7anf//3J7/p4dq/1Q6
PP+LUDT/02sm/9JrJv/Sayb/0msm/9JrJv/Sayb/0msm/9JrJv/Sayb/0msm/9JrJv/Sayb/0msm/9Jr
Jv/Sayb/0msm/9NrJv/UbCb/1Gwm/89qJ//EZin/sF4s/5dVMf9+Szb/aUM6/10+PP9YPT3/Vzw9/1g9
PfdZPT3eWT09s1k9PX1ZPT1IWT09Hlk9PQZYPj4AWjw8AAAAAAAAAAAAAAAAAAAAAABZPT0AWT09A1k9
PSZZPT1zWT09xlg8PPdXOzz/XEA//3lcUP+ujm7/4b+M//vYnP//3J7//9ud//7anf/+2p3//tqd//7a
nf/+2p3//9ye/6eHav9UOjz/i1A0/9NrJv/Sayb/0msm/9JrJv/Sayb/0msm/9JrJv/Sayb/0msm/9Jr
Jv/Sayb/0msm/9NrJv/UbCb/1Gwm/89qJ//EZin/sF4s/5dVMf9+Szb/aUM6/10+PP9YPT3/Vzw9/1g9
PfdZPT3eWT09s1k9PX1ZPT1IWT09Hlk9PQZYPj4AWzs7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAABZPT0AWT8/AFk9PRFZPT1NWT09o1k9PedXOzz+WDw8/2lMRv+VdmD/zKuA//PQ
l///3J7//9ue//7anf/+2p3//tqd///cnv+nh2r/VDo8/4tQNP/Tayb/0msm/9JrJv/Sayb/0msm/9Jr
Jv/Sayb/0msm/9NrJv/UbCb/1Gwm/89qJ//EZin/sF4s/5dVMf9+Szb/aUM6/10+PP9YPT3/Vzw9/1g9
PfdZPT3eWT09s1k9PX1ZPT1IWT09Hlk9PQZZPT0AWT09AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABZPT0AWT09AFk9PQVZPT0tWT09fVk9
Pc5YPDz5Vzs8/15CQP9+YFP/tJRy/+XDj//92Zz//9ye//7bnf//3J7/p4dq/1Q6PP+LUDT/02sm/9Jr
Jv/Sayb/0msm/9NrJv/UbCb/1Gwm/89qJ//EZin/sF4s/5dVMf9+Szb/aUM6/10+PP9YPT3/Vzw9/1g9
PfdZPT3eWT09s1k9PX1ZPT1IWT09Hlk9PQZXPj4AWzw8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAWT09AFo9PQBZPT0VWT09Vlk9Pa1ZPT3sVzs8/1k9Pf9sT0j/m3tj/9Kwg//20pj//96g/6eI
a/9UOjz/i1A0/9RsJv/UbCb/1Gwm/89qJ//EZin/sF4s/5dVMf9+Szb/aUM6/10+PP9YPT3/Vzw9/1g9
PfdZPT3eWT09s1k9PX1ZPT1IWT09Hlk9PQZXPT0AWz09AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWz8/AFk9PQBZPT0HWT09NFk9PYZZPT3VWDw8+1c7
PP9gREH/g2VV/7ybd/+YeGH/VTo8/4hPNP/FZin/sF4s/5dVMf9+Szb/aUM6/10+PP9YPT3/Vzw9/1g9
PfdZPT3eWT09s1k9PX1ZPT1IWT09Hlk9PQZZPT0AWj09AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFk9
PQBZPT0BWT09Glk9PWBZPT22WDw98Fc7PP9aPj7/XkJA/1g9Pf9kQTv/akM6/10+PP9YPT3/Vzw9/1g9
PfdZPT3eWT09s1k9PX1ZPT1IWT09Hlk9PQZYPj4AWjw8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAFo+PgBZPT0AWT09Clk9PTxZPT2QWT0921k9Pf1ZPT3/WD09/1g9
PfdZPT3eWT09s1k9PX1ZPT1IWT09Hlk9PQZZPT0AWT09AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABZPT0AWT09Alk9
PSBZPT1qWT09oFk9PX5ZPT1IWT09Hlk9PQZYPj4AWjw8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAABZPT0AWT09AFk9PQFZPDwAWjs7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAH8AAAAAAA
AH/+AAAAAAAH//+AAAAAAH///+AAAAAH/////AAAAH//////AAAH///////gAH////////gH////////
/j////////////////////////////////////////////////8=
</value>
</data>
</root>
\ No newline at end of file
......@@ -39,6 +39,7 @@
this.contextMenuStrip1 = new System.Windows.Forms.ContextMenuStrip(this.components);
this.richTextBox1 = new System.Windows.Forms.RichTextBox();
this.chbAuto = new System.Windows.Forms.CheckBox();
this.toolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem();
this.menuStrip1.SuspendLayout();
this.SuspendLayout();
//
......@@ -62,6 +63,7 @@
this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.启动手动料仓ToolStripMenuItem,
this.关闭手动料仓ToolStripMenuItem,
this.toolStripMenuItem1,
this.退出程序ToolStripMenuItem,
this.清理日志ToolStripMenuItem});
this.menuStrip1.Location = new System.Drawing.Point(0, 0);
......@@ -126,6 +128,13 @@
this.chbAuto.UseVisualStyleBackColor = true;
this.chbAuto.CheckedChanged += new System.EventHandler(this.chbAuto_CheckedChanged);
//
// toolStripMenuItem1
//
this.toolStripMenuItem1.Name = "toolStripMenuItem1";
this.toolStripMenuItem1.Size = new System.Drawing.Size(102, 25);
this.toolStripMenuItem1.Text = "控制器配置";
this.toolStripMenuItem1.Click += new System.EventHandler(this.toolStripMenuItem1_Click);
//
// FrmShelf
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
......@@ -161,5 +170,6 @@
private System.Windows.Forms.ToolStripMenuItem 清理日志ToolStripMenuItem;
public System.Windows.Forms.RichTextBox richTextBox1;
private System.Windows.Forms.CheckBox chbAuto;
private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem1;
}
}
\ No newline at end of file
......@@ -36,6 +36,7 @@ namespace SmartShelf
LogUtil.error("未加载到完整的配置");
Application.Exit();
}
toolStripMenuItem1.Visible = (LEDManager.DeviceLedType.Equals(2));
LoadStoreData();
LoadOk = true;
}
......@@ -170,5 +171,11 @@ namespace SmartShelf
ManagerUtil.AutoRun(Application.ExecutablePath, false);
}
}
private void toolStripMenuItem1_Click(object sender, EventArgs e)
{
FrmConfig frm = new FrmConfig();
frm.ShowDialog();
}
}
}
......@@ -50,6 +50,12 @@
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="FrmConfig.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="FrmConfig.Designer.cs">
<DependentUpon>FrmConfig.cs</DependentUpon>
</Compile>
<Compile Include="FrmShelf.cs">
<SubType>Form</SubType>
</Compile>
......@@ -65,6 +71,9 @@
<Compile Include="ManagerUtil.cs" />
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<EmbeddedResource Include="FrmConfig.resx">
<DependentUpon>FrmConfig.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="FrmShelf.resx">
<DependentUpon>FrmShelf.cs</DependentUpon>
</EmbeddedResource>
......
......@@ -7,4 +7,9 @@ linePositions.csv文件里面:
位置:是库位号,
设备IP:配置刚刚修改好的IP,
区域ID:0-15,根据接线的通道配置
灯索引:0-170,按照灯条顺序配置,第一个灯是0,以此类推。
\ No newline at end of file
灯索引:0-170,按照灯条顺序配置,第一个灯是0,以此类推。
20200601
增加与电脑连接的模块IP地址的配置。
库位中对应的IP转为站号使用
\ No newline at end of file
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!