From 214368166ad43d5e66ba47f81f167c4a92c9e17e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BB=96=E5=BE=B7=E4=BA=91?= Date: Sat, 8 Nov 2025 08:17:36 +0800 Subject: [PATCH] =?UTF-8?q?=E8=80=81=E7=9A=84=E9=87=87=E9=9B=86=E7=A8=8B?= =?UTF-8?q?=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ConsoleGetPLCData/App.config | 6 + ConsoleGetPLCData/CS/Coder.cs | 180 ++ ConsoleGetPLCData/CS/DatagramResolver.cs | 114 ++ ConsoleGetPLCData/CS/GETDataGPRS.cs | 688 +++++++ ConsoleGetPLCData/CS/GETDataGPRS——.cs | 1496 +++++++++++++++ ConsoleGetPLCData/CS/GetDataNet.cs | 341 ++++ ConsoleGetPLCData/CS/GetDataThread.cs | 1409 ++++++++++++++ ConsoleGetPLCData/CS/NetEvent.cs | 58 + ConsoleGetPLCData/CS/ScCal.cs | 282 +++ ConsoleGetPLCData/CS/Session.cs | 287 +++ ConsoleGetPLCData/CS/TranData.cs | 1107 +++++++++++ ConsoleGetPLCData/ConsoleGetPLCData.csproj | 87 + ConsoleGetPLCData/Program.cs | 1084 +++++++++++ ConsoleGetPLCData/Properties/AssemblyInfo.cs | 36 + .../bin/Debug/ConsoleGetPLCData.exe | Bin 0 -> 29184 bytes .../bin/Debug/ConsoleGetPLCData.exe.config | 6 + .../bin/Debug/ConsoleGetPLCData.pdb | Bin 0 -> 44544 bytes .../Debug/ConsoleGetPLCData.vshost.exe.config | 6 + .../ConsoleGetPLCData.vshost.exe.manifest | 11 + .../Debug/Data/RealTime/Log/2015-3-26_log.txt | 53 + ConsoleGetPLCData/bin/Debug/FTD2XX.dll | Bin 0 -> 202048 bytes ConsoleGetPLCData/bin/Debug/FtdAdapter.dll | Bin 0 -> 15872 bytes ConsoleGetPLCData/bin/Debug/GetData_PLC.exe | Bin 0 -> 29696 bytes ConsoleGetPLCData/bin/Debug/GetData_PLC.pdb | Bin 0 -> 48640 bytes ConsoleGetPLCData/bin/Debug/HttpServer.dll | Bin 0 -> 148992 bytes ConsoleGetPLCData/bin/Debug/Modbus.dll | Bin 0 -> 77824 bytes ConsoleGetPLCData/bin/Debug/Unme.Common.dll | Bin 0 -> 19456 bytes ConsoleGetPLCData/bin/Debug/log4net.dll | Bin 0 -> 270336 bytes ...soleGetPLCData.csproj.FileListAbsolute.txt | 24 + ...CData.csprojResolveAssemblyReference.cache | Bin 0 -> 24318 bytes .../obj/Debug/ConsoleGetPLCData.exe | Bin 0 -> 96768 bytes .../obj/Debug/ConsoleGetPLCData.pdb | Bin 0 -> 165376 bytes .../DesignTimeResolveAssemblyReferences.cache | Bin 0 -> 725 bytes ...gnTimeResolveAssemblyReferencesInput.cache | Bin 0 -> 6915 bytes ...le_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs | 0 ...le_5937a670-0e60-4077-877b-f7221da3dda1.cs | 0 ...le_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs | 0 GetData_PLC.sln | 34 + GetData_PLC.v11.suo | Bin 0 -> 70144 bytes GetData_PLC.v12.suo | Bin 0 -> 181760 bytes GetData_PLC/App.config | 16 + GetData_PLC/DataToByte.cs | 218 +++ GetData_PLC/GetData_PLC.csproj | 158 ++ GetData_PLC/GetData_PLC.csproj.user | 13 + GetData_PLC/GetData_PLC_TemporaryKey.pfx | Bin 0 -> 1668 bytes GetData_PLC/Mario.ico | Bin 0 -> 91782 bytes GetData_PLC/OracleLink.cs | 164 ++ GetData_PLC/Program.cs | 44 + GetData_PLC/Properties/AssemblyInfo.cs | 36 + GetData_PLC/Properties/Resources.Designer.cs | 63 + GetData_PLC/Properties/Resources.resx | 117 ++ GetData_PLC/Properties/Settings.Designer.cs | 26 + GetData_PLC/Properties/Settings.settings | 7 + GetData_PLC/bin/Debug/GetData_PLC.exe | Bin 0 -> 9728 bytes GetData_PLC/bin/Debug/GetData_PLC.exe.config | 6 + GetData_PLC/bin/Debug/GetData_PLC.pdb | Bin 0 -> 22016 bytes .../bin/Debug/GetData_PLC.vshost.exe.config | 6 + .../bin/Debug/GetData_PLC.vshost.exe.manifest | 11 + .../bin/Release/GetData_PLC.application | 21 + GetData_PLC/bin/Release/GetData_PLC.exe | Bin 0 -> 29184 bytes .../bin/Release/GetData_PLC.exe.config | 16 + .../bin/Release/GetData_PLC.exe.manifest | 65 + GetData_PLC/bin/Release/GetData_PLC.pdb | Bin 0 -> 36352 bytes GetData_PLC/frmMain.Designer.cs | 340 ++++ GetData_PLC/frmMain.cs | 784 ++++++++ GetData_PLC/frmMain.resx | 1667 +++++++++++++++++ .../DesignTimeResolveAssemblyReferences.cache | Bin 0 -> 1453 bytes ...gnTimeResolveAssemblyReferencesInput.cache | Bin 0 -> 7410 bytes ...GetData_PLC.Properties.Resources.resources | Bin 0 -> 180 bytes GetData_PLC/obj/Debug/GetData_PLC.application | 21 + .../GetData_PLC.csproj.FileListAbsolute.txt | 57 + .../GetData_PLC.csproj.GenerateResource.Cache | Bin 0 -> 979 bytes GetData_PLC/obj/Debug/GetData_PLC.exe | Bin 0 -> 221696 bytes .../obj/Debug/GetData_PLC.exe.manifest | 75 + .../obj/Debug/GetData_PLC.frmMain.resources | Bin 0 -> 92348 bytes GetData_PLC/obj/Debug/GetData_PLC.pdb | Bin 0 -> 58880 bytes .../Properties.Resources.Designer.cs.dll | Bin 0 -> 4608 bytes ...le_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs | 0 ...le_5937a670-0e60-4077-877b-f7221da3dda1.cs | 0 ...le_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs | 0 ...GetData_PLC.Properties.Resources.resources | Bin 0 -> 180 bytes .../obj/Release/GetData_PLC.application | 21 + .../GetData_PLC.csproj.FileListAbsolute.txt | 13 + .../GetData_PLC.csproj.GenerateResource.Cache | Bin 0 -> 979 bytes ...a_PLC.csprojResolveAssemblyReference.cache | Bin 0 -> 2525 bytes GetData_PLC/obj/Release/GetData_PLC.exe | Bin 0 -> 29184 bytes .../obj/Release/GetData_PLC.exe.manifest | 65 + .../obj/Release/GetData_PLC.frmMain.resources | Bin 0 -> 180 bytes GetData_PLC/obj/Release/GetData_PLC.pdb | Bin 0 -> 36352 bytes GetData_PLC/strFileCaoZuo.cs | 21 + GetData_PLC/strSQL.cs | 30 + UpdateMeter/App.config | 6 + UpdateMeter/DataBaseTools.cs | 433 +++++ UpdateMeter/Program.cs | 687 +++++++ UpdateMeter/Properties/AssemblyInfo.cs | 36 + UpdateMeter/UpdateMeter.csproj | 61 + UpdateMeter/bin/Debug/UpdateMeter.exe | Bin 0 -> 28672 bytes UpdateMeter/bin/Debug/UpdateMeter.exe.config | 6 + UpdateMeter/bin/Debug/UpdateMeter.pdb | Bin 0 -> 38400 bytes UpdateMeter/bin/Release/UpdateMeter.exe | Bin 0 -> 30720 bytes .../bin/Release/UpdateMeter.exe.config | 6 + UpdateMeter/bin/Release/UpdateMeter.pdb | Bin 0 -> 36352 bytes .../DesignTimeResolveAssemblyReferences.cache | Bin 0 -> 868 bytes ...gnTimeResolveAssemblyReferencesInput.cache | Bin 0 -> 6629 bytes ...le_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs | 0 ...le_5937a670-0e60-4077-877b-f7221da3dda1.cs | 0 ...le_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs | 0 .../UpdateMeter.csproj.FileListAbsolute.txt | 23 + UpdateMeter/obj/Debug/UpdateMeter.exe | Bin 0 -> 32768 bytes UpdateMeter/obj/Debug/UpdateMeter.pdb | Bin 0 -> 42496 bytes ...le_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs | 0 ...le_5937a670-0e60-4077-877b-f7221da3dda1.cs | 0 ...le_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs | 0 .../UpdateMeter.csproj.FileListAbsolute.txt | 5 + UpdateMeter/obj/Release/UpdateMeter.exe | Bin 0 -> 30720 bytes UpdateMeter/obj/Release/UpdateMeter.pdb | Bin 0 -> 36352 bytes 116 files changed, 12653 insertions(+) create mode 100644 ConsoleGetPLCData/App.config create mode 100644 ConsoleGetPLCData/CS/Coder.cs create mode 100644 ConsoleGetPLCData/CS/DatagramResolver.cs create mode 100644 ConsoleGetPLCData/CS/GETDataGPRS.cs create mode 100644 ConsoleGetPLCData/CS/GETDataGPRS——.cs create mode 100644 ConsoleGetPLCData/CS/GetDataNet.cs create mode 100644 ConsoleGetPLCData/CS/GetDataThread.cs create mode 100644 ConsoleGetPLCData/CS/NetEvent.cs create mode 100644 ConsoleGetPLCData/CS/ScCal.cs create mode 100644 ConsoleGetPLCData/CS/Session.cs create mode 100644 ConsoleGetPLCData/CS/TranData.cs create mode 100644 ConsoleGetPLCData/ConsoleGetPLCData.csproj create mode 100644 ConsoleGetPLCData/Program.cs create mode 100644 ConsoleGetPLCData/Properties/AssemblyInfo.cs create mode 100644 ConsoleGetPLCData/bin/Debug/ConsoleGetPLCData.exe create mode 100644 ConsoleGetPLCData/bin/Debug/ConsoleGetPLCData.exe.config create mode 100644 ConsoleGetPLCData/bin/Debug/ConsoleGetPLCData.pdb create mode 100644 ConsoleGetPLCData/bin/Debug/ConsoleGetPLCData.vshost.exe.config create mode 100644 ConsoleGetPLCData/bin/Debug/ConsoleGetPLCData.vshost.exe.manifest create mode 100644 ConsoleGetPLCData/bin/Debug/Data/RealTime/Log/2015-3-26_log.txt create mode 100644 ConsoleGetPLCData/bin/Debug/FTD2XX.dll create mode 100644 ConsoleGetPLCData/bin/Debug/FtdAdapter.dll create mode 100644 ConsoleGetPLCData/bin/Debug/GetData_PLC.exe create mode 100644 ConsoleGetPLCData/bin/Debug/GetData_PLC.pdb create mode 100644 ConsoleGetPLCData/bin/Debug/HttpServer.dll create mode 100644 ConsoleGetPLCData/bin/Debug/Modbus.dll create mode 100644 ConsoleGetPLCData/bin/Debug/Unme.Common.dll create mode 100644 ConsoleGetPLCData/bin/Debug/log4net.dll create mode 100644 ConsoleGetPLCData/obj/Debug/ConsoleGetPLCData.csproj.FileListAbsolute.txt create mode 100644 ConsoleGetPLCData/obj/Debug/ConsoleGetPLCData.csprojResolveAssemblyReference.cache create mode 100644 ConsoleGetPLCData/obj/Debug/ConsoleGetPLCData.exe create mode 100644 ConsoleGetPLCData/obj/Debug/ConsoleGetPLCData.pdb create mode 100644 ConsoleGetPLCData/obj/Debug/DesignTimeResolveAssemblyReferences.cache create mode 100644 ConsoleGetPLCData/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache create mode 100644 ConsoleGetPLCData/obj/Debug/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs create mode 100644 ConsoleGetPLCData/obj/Debug/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs create mode 100644 ConsoleGetPLCData/obj/Debug/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs create mode 100644 GetData_PLC.sln create mode 100644 GetData_PLC.v11.suo create mode 100644 GetData_PLC.v12.suo create mode 100644 GetData_PLC/App.config create mode 100644 GetData_PLC/DataToByte.cs create mode 100644 GetData_PLC/GetData_PLC.csproj create mode 100644 GetData_PLC/GetData_PLC.csproj.user create mode 100644 GetData_PLC/GetData_PLC_TemporaryKey.pfx create mode 100644 GetData_PLC/Mario.ico create mode 100644 GetData_PLC/OracleLink.cs create mode 100644 GetData_PLC/Program.cs create mode 100644 GetData_PLC/Properties/AssemblyInfo.cs create mode 100644 GetData_PLC/Properties/Resources.Designer.cs create mode 100644 GetData_PLC/Properties/Resources.resx create mode 100644 GetData_PLC/Properties/Settings.Designer.cs create mode 100644 GetData_PLC/Properties/Settings.settings create mode 100644 GetData_PLC/bin/Debug/GetData_PLC.exe create mode 100644 GetData_PLC/bin/Debug/GetData_PLC.exe.config create mode 100644 GetData_PLC/bin/Debug/GetData_PLC.pdb create mode 100644 GetData_PLC/bin/Debug/GetData_PLC.vshost.exe.config create mode 100644 GetData_PLC/bin/Debug/GetData_PLC.vshost.exe.manifest create mode 100644 GetData_PLC/bin/Release/GetData_PLC.application create mode 100644 GetData_PLC/bin/Release/GetData_PLC.exe create mode 100644 GetData_PLC/bin/Release/GetData_PLC.exe.config create mode 100644 GetData_PLC/bin/Release/GetData_PLC.exe.manifest create mode 100644 GetData_PLC/bin/Release/GetData_PLC.pdb create mode 100644 GetData_PLC/frmMain.Designer.cs create mode 100644 GetData_PLC/frmMain.cs create mode 100644 GetData_PLC/frmMain.resx create mode 100644 GetData_PLC/obj/Debug/DesignTimeResolveAssemblyReferences.cache create mode 100644 GetData_PLC/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache create mode 100644 GetData_PLC/obj/Debug/GetData_PLC.Properties.Resources.resources create mode 100644 GetData_PLC/obj/Debug/GetData_PLC.application create mode 100644 GetData_PLC/obj/Debug/GetData_PLC.csproj.FileListAbsolute.txt create mode 100644 GetData_PLC/obj/Debug/GetData_PLC.csproj.GenerateResource.Cache create mode 100644 GetData_PLC/obj/Debug/GetData_PLC.exe create mode 100644 GetData_PLC/obj/Debug/GetData_PLC.exe.manifest create mode 100644 GetData_PLC/obj/Debug/GetData_PLC.frmMain.resources create mode 100644 GetData_PLC/obj/Debug/GetData_PLC.pdb create mode 100644 GetData_PLC/obj/Debug/TempPE/Properties.Resources.Designer.cs.dll create mode 100644 GetData_PLC/obj/Debug/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs create mode 100644 GetData_PLC/obj/Debug/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs create mode 100644 GetData_PLC/obj/Debug/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs create mode 100644 GetData_PLC/obj/Release/GetData_PLC.Properties.Resources.resources create mode 100644 GetData_PLC/obj/Release/GetData_PLC.application create mode 100644 GetData_PLC/obj/Release/GetData_PLC.csproj.FileListAbsolute.txt create mode 100644 GetData_PLC/obj/Release/GetData_PLC.csproj.GenerateResource.Cache create mode 100644 GetData_PLC/obj/Release/GetData_PLC.csprojResolveAssemblyReference.cache create mode 100644 GetData_PLC/obj/Release/GetData_PLC.exe create mode 100644 GetData_PLC/obj/Release/GetData_PLC.exe.manifest create mode 100644 GetData_PLC/obj/Release/GetData_PLC.frmMain.resources create mode 100644 GetData_PLC/obj/Release/GetData_PLC.pdb create mode 100644 GetData_PLC/strFileCaoZuo.cs create mode 100644 GetData_PLC/strSQL.cs create mode 100644 UpdateMeter/App.config create mode 100644 UpdateMeter/DataBaseTools.cs create mode 100644 UpdateMeter/Program.cs create mode 100644 UpdateMeter/Properties/AssemblyInfo.cs create mode 100644 UpdateMeter/UpdateMeter.csproj create mode 100644 UpdateMeter/bin/Debug/UpdateMeter.exe create mode 100644 UpdateMeter/bin/Debug/UpdateMeter.exe.config create mode 100644 UpdateMeter/bin/Debug/UpdateMeter.pdb create mode 100644 UpdateMeter/bin/Release/UpdateMeter.exe create mode 100644 UpdateMeter/bin/Release/UpdateMeter.exe.config create mode 100644 UpdateMeter/bin/Release/UpdateMeter.pdb create mode 100644 UpdateMeter/obj/Debug/DesignTimeResolveAssemblyReferences.cache create mode 100644 UpdateMeter/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache create mode 100644 UpdateMeter/obj/Debug/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs create mode 100644 UpdateMeter/obj/Debug/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs create mode 100644 UpdateMeter/obj/Debug/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs create mode 100644 UpdateMeter/obj/Debug/UpdateMeter.csproj.FileListAbsolute.txt create mode 100644 UpdateMeter/obj/Debug/UpdateMeter.exe create mode 100644 UpdateMeter/obj/Debug/UpdateMeter.pdb create mode 100644 UpdateMeter/obj/Release/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs create mode 100644 UpdateMeter/obj/Release/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs create mode 100644 UpdateMeter/obj/Release/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs create mode 100644 UpdateMeter/obj/Release/UpdateMeter.csproj.FileListAbsolute.txt create mode 100644 UpdateMeter/obj/Release/UpdateMeter.exe create mode 100644 UpdateMeter/obj/Release/UpdateMeter.pdb diff --git a/ConsoleGetPLCData/App.config b/ConsoleGetPLCData/App.config new file mode 100644 index 0000000..74ade9d --- /dev/null +++ b/ConsoleGetPLCData/App.config @@ -0,0 +1,6 @@ + + + + + + diff --git a/ConsoleGetPLCData/CS/Coder.cs b/ConsoleGetPLCData/CS/Coder.cs new file mode 100644 index 0000000..df058b8 --- /dev/null +++ b/ConsoleGetPLCData/CS/Coder.cs @@ -0,0 +1,180 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; + +namespace ConsoleGetPLCData.CS +{ + + /// + /// 通讯编码格式提供者,为通讯服务提供编码和解码服务 + /// 你可以在继承类中定制自己的编码方式如:数据加密传输等 + /// + public class Coder + { + /// + /// 编码方式 + /// + private EncodingMothord _encodingMothord; + + protected Coder() + { + + } + + public Coder(EncodingMothord encodingMothord) + { + _encodingMothord = encodingMothord; + } + + public enum EncodingMothord + { + Default = 0, + Unicode, + UTF8, + ASCII, + } + + /// + /// 通讯数据解码 + /// + /// 需要解码的数据 + /// 编码后的数据 + public virtual string GetEncodingString(byte[] dataBytes, int start, int size) + { + switch (_encodingMothord) + { + case EncodingMothord.Default: + { + return Encoding.Default.GetString(dataBytes, start, size); + } + case EncodingMothord.Unicode: + { + return Encoding.Unicode.GetString(dataBytes, start, size); + } + case EncodingMothord.UTF8: + { + return Encoding.UTF8.GetString(dataBytes, start, size); + } + case EncodingMothord.ASCII: + { + return Encoding.ASCII.GetString(dataBytes, start, size); + } + default: + { + throw (new Exception("未定义的编码格式")); + } + } + + } + + /// + /// Saves the file. + /// + /// Name of the file. + /// The result. + public void SaveFile(string FileName, byte[] Result) + { + try + { + FileStream fs = new FileStream(FileName, FileMode.OpenOrCreate); + fs.Write(Result, 5 + Result[1], Result[2] * 65536 + Result[3] * 256 + Result[4]); + fs.Flush(); + fs.Close(); + } + catch + { + + } + + } + + StreamWriter writer = null; + /// + /// Saves the file. + /// + /// Name of the file. + /// The result. + public void WriteFile(string FileName, string Result) + { + try + { + if (writer == null) + { + writer = new StreamWriter(FileName); + } + writer.Write(string.Concat(Result.ToString(), Environment.NewLine)); + writer.Flush(); + } + catch + { + + } + + } + + /// + /// 数据编码 + /// + /// 需要编码的报文 + /// 编码后的数据 + public virtual byte[] GetTextBytes(string datagram) + { + byte[] rbyte = new byte[Encoding.UTF8.GetBytes(datagram).Length + 1]; + rbyte[0] = 0x55; + switch (_encodingMothord) + { + case EncodingMothord.Default: + { + Encoding.Default.GetBytes(datagram, 0, datagram.Length, rbyte, 1); + return rbyte; + } + case EncodingMothord.Unicode: + { + Encoding.Unicode.GetBytes(datagram, 0, datagram.Length, rbyte, 1); + return rbyte; + } + case EncodingMothord.UTF8: + { + Encoding.UTF8.GetBytes(datagram, 0, datagram.Length, rbyte, 1); + return rbyte; + } + case EncodingMothord.ASCII: + { + Encoding.ASCII.GetBytes(datagram, 0, datagram.Length, rbyte, 1); + return rbyte; + } + default: + { + throw (new Exception("未定义的编码格式")); + } + } + + } + + public virtual byte[] GetFileBytes(string FilePath) + { + if (File.Exists(FilePath)) + { + string fileName = Path.GetFileName(FilePath); + byte[] bytFileName = this.GetTextBytes(fileName); + FileStream fs = new FileStream(FilePath, FileMode.Open); + Byte[] RByte = new byte[fs.Length + 5 + bytFileName.Length]; + RByte[0] = 0x66; + RByte[1] = (byte)(bytFileName.Length); + RByte[2] = (byte)(fs.Length / 65536); + RByte[3] = (byte)(fs.Length / 256); + RByte[4] = (byte)(fs.Length % 256); + bytFileName.CopyTo(RByte, 5); + fs.Read(RByte, 5 + bytFileName.Length, (int)fs.Length); + return RByte; + } + else + { + throw (new Exception("文件不存在")); + } + } + + } +} diff --git a/ConsoleGetPLCData/CS/DatagramResolver.cs b/ConsoleGetPLCData/CS/DatagramResolver.cs new file mode 100644 index 0000000..1131f27 --- /dev/null +++ b/ConsoleGetPLCData/CS/DatagramResolver.cs @@ -0,0 +1,114 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace ConsoleGetPLCData.CS +{ + + /// + /// 数据报文分析器,通过分析接收到的原始数据,得到完整的数据报文. + /// 继承该类可以实现自己的报文解析方法. + /// 通常的报文识别方法包括:固定长度,长度标记,标记符等方法 + /// 本类的现实的是标记符的方法,你可以在继承类中实现其他的方法 + /// + public class DatagramResolver + { + /// + /// 报文结束标记 + /// + private string endTag; + + /// + /// 返回结束标记 + /// + public string EndTag + { + get + { + return endTag; + } + } + + /// + /// 受保护的默认构造函数,提供给继承类使用 + /// + protected DatagramResolver() + { + + } + + /// + /// 构造函数 + /// + /// 报文结束标记 + public DatagramResolver(string endTag) + { + if (endTag == null) + { + throw (new ArgumentNullException("结束标记不能为null")); + } + + if (endTag == "") + { + throw (new ArgumentException("结束标记符号不能为空字符串")); + } + + this.endTag = endTag; + } + + /// + /// 解析报文 + /// + /// 原始数据,返回未使用的报文片断, + /// 该片断会保存在Session的Datagram对象中 + /// 报文数组,原始数据可能包含多个报文 + public virtual string[] Resolve(ref string rawDatagram) + { + ArrayList datagrams = new ArrayList(); + + //末尾标记位置索引 + int tagIndex = -1; + + while (true) + { + tagIndex = rawDatagram.IndexOf(endTag, tagIndex + 1); + + if (tagIndex == -1) + { + break; + } + else + { + //按照末尾标记把字符串分为左右两个部分 + string newDatagram = rawDatagram.Substring( + 0, tagIndex + endTag.Length); + + datagrams.Add(newDatagram); + + if (tagIndex + endTag.Length >= rawDatagram.Length) + { + rawDatagram = ""; + + break; + } + + rawDatagram = rawDatagram.Substring(tagIndex + endTag.Length, + rawDatagram.Length - newDatagram.Length); + + //从开始位置开始查找 + tagIndex = 0; + } + } + + string[] results = new string[datagrams.Count]; + + datagrams.CopyTo(results); + + return results; + } + + } + +} diff --git a/ConsoleGetPLCData/CS/GETDataGPRS.cs b/ConsoleGetPLCData/CS/GETDataGPRS.cs new file mode 100644 index 0000000..4c209bc --- /dev/null +++ b/ConsoleGetPLCData/CS/GETDataGPRS.cs @@ -0,0 +1,688 @@ +using ConsoleGetPLCData.CS; +using GetData_PLC; +using Modbus.Device; +using System; +using System.Collections.Generic; +using System.Data; +using System.Linq; +using System.Net; +using System.Net.Sockets; +using System.Text; +using System.Threading; + +namespace ConsoleGetPLCData +{ + + + public class StateObject + { + // Client socket. + public Socket workSocket = null; + // Size of receive buffer. + public const int BufferSize = 1024; + // Receive buffer. + public byte[] buffer = new byte[BufferSize]; + // Received data string. + public StringBuilder sb = new StringBuilder(); + } + class GETDataGPRS + { + stStation Station = new stStation(); + private ModbusIpMaster master; + private TcpClient client; + private bool WriteDateTimeFlag; + public static ManualResetEvent allDone = new ManualResetEvent(false); + + DataTable dtToday_Flow = new DataTable(); //今日流量总累计 表格 + DataTable dtYesToday_FLOW = new DataTable();//昨日流量总累计 表格 + //private bool readFlag; //读取盘古积算仪 昨日 今日累积量标志 + bool SaveFlag; //保存盘古积算仪 总累计量标志 + DataRow[] drDataTemp;//GPRS PLC设备采集上来的数据临时存放,再赋值 + + static int intTimes = 0; + + static bool blReadSucess = false; + + ///构造函数 初始化 + public GETDataGPRS(stStation strZhan) + { + Station = strZhan; + } + + /// + /// 线程入口函数 + /// + public void GetDataStart() + { + + GetDataByGPRS_YB();//异步通信 + ProgramGetData.strAppend(DateTime.Now.ToString() + "------" + "准备采集" + Station.ZCName + "数据"); + + + } + + #region ---------------------异步通讯 + /// + /// 带地址的计量点设备,采用异步通信方式 + /// + private void GetDataByGPRS_YB() + { + try + { + //当点击开始监听的时候 在服务器端创建一个负责监IP地址跟端口号的Socket + Socket socketWatch = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); + IPAddress ip = IPAddress.Parse(Station.ip); + //IPAddress ip = IPAddress.Parse("127.0.0.1"); + //创建端口号对象 + IPEndPoint point = new IPEndPoint(ip, Station.port); + //监听 + socketWatch.Bind(point); + socketWatch.Listen(10); + ProgramGetData.strAppend(DateTime.Now.ToString() + "------" + Station.ZCName + "监听成功!"); + + Thread th = new Thread(Listen); + th.IsBackground = true; + th.Start(socketWatch); + //socketWatch.BeginAccept(new AsyncCallback(AcceptCallback), socketWatch); + + } + catch (Exception ex) + { + ProgramGetData.strAppend(DateTime.Now.ToString() + "------" + Station.ZCName + ex.Message); + + } + + + } + + /// + /// 等待客户端的连接 并且创建与之通信用的Socket + /// + /// + void Listen(object o) + { + Socket socketWatch = o as Socket; + //等待客户端的连接 并且创建一个负责通信的Socket + //while (true) + { + try + { + //开始一个一步操作接受一个连接尝试 + socketWatch.BeginAccept(new AsyncCallback(AcceptCallback), socketWatch); + ProgramGetData.strAppend(DateTime.Now.ToString() + "------" + Station.ZCName + "连接成功!"); + //开启 一个新线程不停的接受客户端发送过来的消息 + } + catch + { } + Thread.Sleep(1000); + } + } + /// + /// 异步通信回调函数 + /// + /// + public void AcceptCallback(IAsyncResult ar) + { + //allDone.Set(); + Socket socketSend = (Socket)ar.AsyncState; + Socket socketRecive = socketSend.EndAccept(ar); + StateObject state = new StateObject(); + state.workSocket = socketRecive; + + if (Station.MeterTYPE == "1" || Station.MeterTYPE == "5") + { + readTodayYesTerdayQL(); + } + if (Station.MeterTYPE == "0") //PLC赋值 定义一个数组 暂存 采集上来的所有计量点的数据,再一并赋值给数据集jldID 和ID转换 + { + int jldMax = ProgramGetData.dsJLDataRealTime.Tables[this.Station.ZCID].Rows.Count; + + } + while (true) + { + + try + { + + byte[] SendByte = new byte[8]; + Console.WriteLine(DateTime.Now.ToString() + "------" + Station.ZCName + "正在采集......!"); + switch (Station.MeterTYPE) + { + case "0": //施耐德PLC 异步通讯 采集计量点数目变化 来判断采集的是哪一个计量点的数据 + for (int i = 0; i < ProgramGetData.dsJLDataRealTime.Tables[this.Station.ZCID].Rows.Count; i++) //计量点读取循环 循环数由主程序建立该站的实时数据表中的记录数决定 + { + int _jldID = int.Parse(ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows[i]["jld_id"].ToString()); + //读取PLC的时钟 + SendByte = TranData.Modbus_ReadData(1, 3, 16, 4); + SendByte = TranData.Modbus_ReadData(1, 3, 400 + _jldID * 20, 20); + socketRecive.Send(SendByte); + socketRecive.BeginReceive(state.buffer, 0, StateObject.BufferSize, 0, new AsyncCallback(ReadCallback_PLC), state); + Thread.Sleep(1000); + } + break; + case "1": //盘古积算仪 + for (int i = 0; i < ProgramGetData.dsJLDataRealTime.Tables[this.Station.ZCID].Rows.Count; i++) //计量点读取循环 循环数由主程序建立该站的实时数据表中的记录数决定 + { + int _jldID = int.Parse(ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows[i]["jld_id"].ToString()); + SendByte = TranData.Modbus_ReadData(_jldID + 1, 3, 0, 16); + socketRecive.Send(SendByte); + Console.WriteLine(DateTime.Now.ToString() + "------" + Station.ZCName + "-发送采集命令:" + getString(SendByte, 8)); + + Thread.Sleep(1000); + socketRecive.BeginReceive(state.buffer, 0, StateObject.BufferSize, 0, new AsyncCallback(ReadCallback_PG), state); + + if ((DateTime.Now.Hour == 0 & DateTime.Now.Minute == 0 & DateTime.Now.Second == 10)) //过了零点存取累计总量,然后读取昨日累计总量 + { + SaveFlag = true; + } + + if (SaveFlag & blReadSucess) + { + SaveTable(0); + readTodayYesTerdayQL(); + //Console.WriteLine("存数据库成功" + readFlag.ToString() + timeNow.ToString() + "--" + (SbType == "2" & (timeNow.Hour == 20 & timeNow.Minute == 45 & timeNow.Second > 10) & readFlag == false).ToString ()); + SaveFlag = false; + } + + } + break; + case "2": //103 + for (int i = 0; i < ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows.Count; i++) //计量点读取循环 循环数由主程序建立该站的实时数据表中的记录数决定 + { + int _jldID = int.Parse(ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows[i]["jld_id"].ToString()); + SendByte = TranData.Modbus_ReadData(_jldID + 1, 3, 7102, 22); + + socketRecive.Send(SendByte); + Console.WriteLine(DateTime.Now.ToString()+"------" + Station.ZCName + "-发送采集命令:" + getString(SendByte,8)); + + Thread.Sleep(1000); + socketRecive.BeginReceive(state.buffer, 0, StateObject.BufferSize, 0, new AsyncCallback(ReadCallback_103), state); + } + + break; + case "3": + break; + case "4": //爱知超声波流量计 + for (int i = 0; i < ProgramGetData.dsPparameter.Tables[Station.ZCID].Rows.Count; i++) //计量点读取循环 循环数由主程序建立该站的实时数据表中的记录数决定 + { + int _jldID = int.Parse(ProgramGetData.dsPparameter.Tables[Station.ZCID].Rows[i]["jld_id"].ToString()); + SendByte = TranData.Modbus_ReadData(_jldID + 1, 3, 511, 15); + socketRecive.Send(SendByte); + Console.WriteLine(DateTime.Now.ToString() + "------" + Station.ZCName + "-发送采集命令:" + getString(SendByte, 8)); + Thread.Sleep(2000); + socketRecive.BeginReceive(state.buffer, 0, StateObject.BufferSize, 0, new AsyncCallback(ReadCallback_CSB), state); + + } + break; + + + case "5":// 温州福鑫旋进旋涡流量计 + for (int i = 0; i < ProgramGetData.dsJLDataRealTime.Tables[this.Station.ZCID].Rows.Count; i++) //计量点读取循环 循环数由主程序建立该站的实时数据表中的记录数决定 + { + int _jldID = int.Parse(ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows[i]["jld_id"].ToString()); + SendByte = TranData.Modbus_ReadData(_jldID + 1, 3, 4, 30); + socketRecive.Send(SendByte); + Console.WriteLine(DateTime.Now.ToString() + "------" + Station.ZCName + "-发送采集命令:" + getString(SendByte, 8)); + Thread.Sleep(1000); + socketRecive.BeginReceive(state.buffer, 0, StateObject.BufferSize, 0, new AsyncCallback(ReadCallback_WZFX), state); + + if ((DateTime.Now.Hour == 0 & DateTime.Now.Minute == 0 & DateTime.Now.Second == 10)) //过了零点存取累计总量,然后读取昨日累计总量 + { + SaveFlag = true; + } + + if (SaveFlag & blReadSucess ) + { + SaveTable(0); + readTodayYesTerdayQL(); + //Console.WriteLine("存数据库成功" + readFlag.ToString() + timeNow.ToString() + "--" + (SbType == "2" & (timeNow.Hour == 20 & timeNow.Minute == 45 & timeNow.Second > 10) & readFlag == false).ToString ()); + SaveFlag = false; + } + + } + break; + + + case "6": //腾空PLC + for (int i = 0; i < ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows.Count; i++) //计量点读取循环 循环数由主程序建立该站的实时数据表中的记录数决定 + { + int _jldID = int.Parse(ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows[i]["jld_id"].ToString()); + SendByte = TranData.Modbus_ReadData(_jldID + 1, 3, 10100, 22); + socketRecive.Send(SendByte); + Console.WriteLine(DateTime.Now.ToString() + "------" + Station.ZCName + "-发送采集命令:" + getString(SendByte, 8)); + Thread.Sleep(1000); + socketRecive.BeginReceive(state.buffer, 0, StateObject.BufferSize, 0, new AsyncCallback(ReadCallback_103), state); + } + + break; + + + default: + break; + } + + } + catch (Exception ex) + { + + Console.WriteLine(DateTime.Now.ToString() + "------" + ex.Message ); + } + + if (DateTime.Now.Hour == 23 && DateTime.Now.Minute == 59) + { + Thread.Sleep(2000); + + } + else + { + if (intTimes > 5) + { + intTimes = 5; + Thread.Sleep(Station.readDiffTime); + } + else + { + Thread.Sleep(3000); + } + } + + intTimes = intTimes + 1; + } + } + + public static string getString(Byte[] temp,int intCount) + { + string strTemp = ""; + for (int i = 0; i < intCount; i++) + { + strTemp = strTemp + temp[i].ToString() + " "; + } + return strTemp; + } + /// + /// 解析GPRS读取的PLC数据 + /// + /// + + public void ReadCallback_PLC(IAsyncResult ar) + { + try + { + StateObject state = (StateObject)ar.AsyncState; + Socket socketRecive = state.workSocket; + //从远程设备读取数据 + int bytesRead = socketRecive.EndReceive(ar); + int dataNum; + dataNum = state.buffer[2]; + + + try + { + if (dataNum == 8) //读取的时钟 + { + ProgramGetData.dsZhanDateTime.Tables[Station.ZCID].Rows[0]["PLCTime"] = getPLCDateTime(state.buffer); //获取PLC时间 + } + } + catch + { } + + try + { + if (dataNum == 40) // 代表1个计量点 jldID=0 + { + + DataRow[] drJldS = { drDataTemp[0] }; + DataRow[] drData = TranData.GetDataTran_GPRS(drJldS, state.buffer, Station.MeterTYPE); + drDataTemp[0].ItemArray = drData[0].ItemArray; + + } + } + catch + { } + + + + + + socketRecive.BeginReceive(state.buffer, 0, StateObject.BufferSize, 0, new AsyncCallback(ReadCallback_PLC), state); + + } + catch (Exception ex) + { + } + } + + /// + /// 获取并解析福鑫的数据 + /// + /// + public void ReadCallback_WZFX(IAsyncResult ar) + { + try + { + StateObject state = (StateObject)ar.AsyncState; + Socket socketRecive = state.workSocket; + //从远程设备读取数据 + int bytesRead = socketRecive.EndReceive(ar); + int dataNum; + dataNum = state.buffer[2]; + int jldID = state.buffer[0] - 1; + if (dataNum == 60) + { + Console.WriteLine(DateTime.Now.ToString()+ "------" + Station.ZCName + "-接收数据:" + getString(state.buffer, dataNum)); + + ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows[jldID].ItemArray = TranData.GetDataTran_GPRS(ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows[jldID], state.buffer, Station.MeterTYPE).ItemArray; + blReadSucess = true; + ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows[jldID]["JLD_NAME"] = ProgramGetData.dsPparameter.Tables[Station.ZCID].Rows[jldID]["JLD_NAME"]; + try + { + ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows[jldID]["CXFlag"] = TranData.GetCxFlag(ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows[jldID]["SSGKLL"].ToString(), ProgramGetData.dsPparameter.Tables[Station.ZCID].Rows[jldID]["CLXX"].ToString(), ProgramGetData.dsPparameter.Tables[Station.ZCID].Rows[jldID]["CLSX"].ToString()); + } + catch { } + + ProgramGetData.dsPparameter.Tables[Station.ZCID].Rows[jldID]["Gr"] = ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows[jldID]["SYL"]; + ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows[jldID]["SYL"] = ""; + + + socketRecive.BeginReceive(state.buffer, 0, StateObject.BufferSize, 0, new AsyncCallback(ReadCallback_WZFX), state); + } + #region //提取昨日凌晨总累积量 计算今日量 + try + { + string strTotalFlowNow = ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows[jldID]["LJL"].ToString(); + DataRow[] drTotay; ; + drTotay = dtToday_Flow.Select("JLD_ID in( '" + jldID + "')"); + //Console.WriteLine("时间:" + DateTime.Now + "JLD_ID in( '" + jldID + "')--" + drTotay.Length.ToString() + "\n"); + if (drTotay.Length == 0) //如果今日流量记录为空 把当前的流量总量写入表格 并保存到数据库中 + { + DataRow drToday = dtToday_Flow.NewRow(); + drToday["rtime"] = DateTime.Parse(DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd")); + drToday["station_id"] = Station.ZCID; + drToday["jld_id"] = jldID; + drToday["flowtotal"] = strTotalFlowNow; + dtToday_Flow.Rows.Add(drToday); + SaveFlag = true; + } + else + { + //今日量 + ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows[jldID]["JRL"] = float.Parse(strTotalFlowNow) - float.Parse(drTotay[0]["flowtotal"].ToString()); + } + + DataRow[] drYesterday; + drYesterday = dtYesToday_FLOW.Select("JLD_ID in ('" + jldID + "')"); + //Console.WriteLine("时间:" + DateTime.Now + "JLD_ID in( '" + jldID + "')--" + drYesterday.Length.ToString() + "\n"); + if (drYesterday.Length < 1) + { + //昨日量 + ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows[jldID]["ZRL"] = ""; + } + else + { + //昨日量 + ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows[jldID]["ZRL"] = float.Parse(drTotay[0]["flowtotal"].ToString()) - float.Parse(drYesterday[0]["flowtotal"].ToString()); ; + } + + } + catch { } + + #endregion + } + catch + { + blReadSucess = false; + } + } + + /// + /// 获取并解析盘古积算仪的数据 + /// + /// + public void ReadCallback_PG(IAsyncResult ar) + { + try + { + StateObject state = (StateObject)ar.AsyncState; + Socket socketRecive = state.workSocket; + //从远程设备读取数据 + int bytesRead = socketRecive.EndReceive(ar); + int dataNum; + dataNum = state.buffer[2]; + int jldID = state.buffer[0] - 1; + if (dataNum == 32) + { + + Console.WriteLine(DateTime.Now.ToString() + "------" + Station.ZCName + "-接收数据:" + getString(state.buffer, dataNum)); + ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows[jldID].ItemArray = TranData.GetDataTran_GPRS(ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows[jldID], state.buffer, Station.MeterTYPE).ItemArray; + blReadSucess = true; + ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows[jldID]["JLD_NAME"] = ProgramGetData.dsPparameter.Tables[Station.ZCID].Rows[jldID]["JLD_NAME"]; + try + { + ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows[jldID]["CXFlag"] = TranData.GetCxFlag(ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows[jldID]["SSGKLL"].ToString(), ProgramGetData.dsPparameter.Tables[Station.ZCID].Rows[jldID]["CLXX"].ToString(), ProgramGetData.dsPparameter.Tables[Station.ZCID].Rows[jldID]["CLSX"].ToString()); + } + catch (Exception ex) + { } + + ProgramGetData.dsPparameter.Tables[Station.ZCID].Rows[jldID]["Gr"] = ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows[jldID]["SYL"]; + ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows[jldID]["SYL"] = ""; + socketRecive.BeginReceive(state.buffer, 0, StateObject.BufferSize, 0, new AsyncCallback(ReadCallback_PG), state); + } + #region //提取昨日凌晨总累积量 计算今日量 + try + { + string strTotalFlowNow = ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows[jldID]["LJL"].ToString(); + DataRow[] drTotay; ; + drTotay = dtToday_Flow.Select("JLD_ID in( '" + jldID + "')"); + //Console.WriteLine("时间:" + DateTime.Now + "JLD_ID in( '" + jldID + "')--" + drTotay.Length.ToString() + "\n"); + if (drTotay.Length == 0) //如果今日流量记录为空 把当前的流量总量写入表格 并保存到数据库中 + { + DataRow drToday = dtToday_Flow.NewRow(); + drToday["rtime"] = DateTime.Parse(DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd")); + drToday["station_id"] = Station.ZCID; + drToday["jld_id"] = jldID; + drToday["flowtotal"] = strTotalFlowNow; + dtToday_Flow.Rows.Add(drToday); + SaveFlag = true; + } + else + { + //今日量 + ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows[jldID]["JRL"] = float.Parse(strTotalFlowNow) - float.Parse(drTotay[0]["flowtotal"].ToString()); + } + DataRow[] drYesterday; + drYesterday = dtYesToday_FLOW.Select("JLD_ID in ('" + jldID + "')"); + //Console.WriteLine("时间:" + DateTime.Now + "JLD_ID in( '" + jldID + "')--" + drYesterday.Length.ToString() + "\n"); + if (drYesterday.Length < 1) + { + //昨日量 + ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows[jldID]["ZRL"] = ""; + } + else + { + //昨日量 + ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows[jldID]["ZRL"] = float.Parse(drTotay[0]["flowtotal"].ToString()) - float.Parse(drYesterday[0]["flowtotal"].ToString()); ; + } + + } + catch { } + + #endregion + } + catch + { + blReadSucess = false; + } + } + /// + /// 获取并解析爱知超声波的数据 + /// + /// + public void ReadCallback_CSB(IAsyncResult ar) + { + try + { + StateObject state = (StateObject)ar.AsyncState; + Socket socketRecive = state.workSocket; + //从远程设备读取数据 + int bytesRead = socketRecive.EndReceive(ar); + int dataNum; + dataNum = state.buffer[2]; + int jldID = state.buffer[0] - 1; + if (dataNum == 30) + { + Console.WriteLine(DateTime.Now.ToString() + "------" + Station.ZCName + "-接收数据:" + getString(state.buffer, dataNum)); + ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows[jldID].ItemArray = TranData.GetDataTran_GPRS(ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows[jldID], state.buffer, Station.MeterTYPE).ItemArray; + blReadSucess = true; + ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows[jldID]["JLD_NAME"] = ProgramGetData.dsPparameter.Tables[Station.ZCID].Rows[jldID]["JLD_NAME"]; + try + { + ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows[jldID]["CXFlag"] = TranData.GetCxFlag(ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows[jldID]["SSGKLL"].ToString(), ProgramGetData.dsPparameter.Tables[Station.ZCID].Rows[jldID]["CLXX"].ToString(), ProgramGetData.dsPparameter.Tables[Station.ZCID].Rows[jldID]["CLSX"].ToString()); + } + catch { } + + ProgramGetData.dsPparameter.Tables[Station.ZCID].Rows[jldID]["Gr"] = ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows[jldID]["SYL"]; + ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows[jldID]["SYL"] = ""; + + socketRecive.BeginReceive(state.buffer, 0, StateObject.BufferSize, 0, new AsyncCallback(ReadCallback_PG), state); + } + #region //提取昨日凌晨总累积量 计算今日量 + try + { + string strTotalFlowNow = ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows[jldID]["LJL"].ToString(); + DataRow[] drTotay; ; + drTotay = dtToday_Flow.Select("JLD_ID in( '" + jldID + "')"); + //Console.WriteLine("时间:" + DateTime.Now + "JLD_ID in( '" + jldID + "')--" + drTotay.Length.ToString() + "\n"); + if (drTotay.Length == 0) //如果今日流量记录为空 把当前的流量总量写入表格 并保存到数据库中 + { + DataRow drToday = dtToday_Flow.NewRow(); + drToday["rtime"] = DateTime.Parse(DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd")); + drToday["station_id"] = Station.ZCID; + drToday["jld_id"] = jldID; + drToday["flowtotal"] = strTotalFlowNow; + dtToday_Flow.Rows.Add(drToday); + SaveFlag = true; + } + else + { + //今日量 + ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows[jldID]["JRL"] = float.Parse(strTotalFlowNow) - float.Parse(drTotay[0]["flowtotal"].ToString()); + } + + DataRow[] drYesterday; + drYesterday = dtYesToday_FLOW.Select("JLD_ID in ('" + jldID + "')"); + //Console.WriteLine("时间:" + DateTime.Now + "JLD_ID in( '" + jldID + "')--" + drYesterday.Length.ToString() + "\n"); + if (drYesterday.Length < 1) + { + //昨日量 + ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows[jldID]["ZRL"] = ""; + } + else + { + //昨日量 + ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows[jldID]["ZRL"] = float.Parse(drTotay[0]["flowtotal"].ToString()) - float.Parse(drYesterday[0]["flowtotal"].ToString()); ; + } + + } + catch { } + + #endregion + } + catch + { + blReadSucess = false; + } + } + + /// + /// 获取并解析103的数据 + /// + /// + public void ReadCallback_103(IAsyncResult ar) + { + try + { + StateObject state = (StateObject)ar.AsyncState; + Socket socketRecive = state.workSocket; + //从远程设备读取数据 + int bytesRead = socketRecive.EndReceive(ar); + int dataNum; + dataNum = state.buffer[2]; + int jldID = state.buffer[0] - 1; + if (dataNum == 44) + { + + Console.WriteLine(DateTime.Now.ToString() + "------" + Station.ZCName + "-接收数据:" + getString(state.buffer, dataNum)); + + ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows[jldID].ItemArray = TranData.GetDataTran_GPRS(ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows[jldID], state.buffer, Station.MeterTYPE).ItemArray; + + blReadSucess = true; + ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows[jldID]["JLD_NAME"] = ProgramGetData.dsPparameter.Tables[Station.ZCID].Rows[jldID]["JLD_NAME"]; + socketRecive.BeginReceive(state.buffer, 0, StateObject.BufferSize, 0, new AsyncCallback(ReadCallback_103), state); + } + } + catch + { + } + + } + + /// + /// 获得打印数据监视字符串 + /// + /// + /// + private string strPrint(DataRow dr) + { + return dr["JLD_NAME"] + "\t瞬时量:" + dr["SSL"] + "\t温度:" + dr["WD"] + "\t压力:" + dr["YL"] + "\t累积量:" + dr["LJL"]; + } + + /// + /// 对于没在PLC的设备,每次采集程序启动读取存储的昨日量 今日量的总累积量 + /// + private void readTodayYesTerdayQL() + { + DateTime _Date = DateTime.Now.AddDays(-1); + _Date = DateTime.Parse(_Date.ToString("yyyy-MM-dd")); + string strSQL = SQL_Strings.strSQL_Read_Today_YesterDay_Flow + " where STATION_ID='" + Station.ZCID + "' and RTIME=to_date('" + _Date.ToShortDateString() + "', 'yyyy-mm-dd') order by JLD_ID"; + dtToday_Flow = OracleLink.ExecuteDataTable(strSQL, "DTJK", ""); + strSQL = SQL_Strings.strSQL_Read_Today_YesterDay_Flow + " where STATION_ID='" + Station.ZCID + "' and RTIME=to_date('" + _Date.AddDays(-1).ToShortDateString() + "', 'yyyy-mm-dd') order by JLD_ID"; + dtYesToday_FLOW = OracleLink.ExecuteDataTable(strSQL, "DTJK", ""); + } + /// + /// 保存昨日量、今日量到数据库 + /// + /// + private void SaveTable(int intSaveFlag) + { + SaveFlag = true; + Thread.Sleep(2000); + string strSQL = SQL_Strings.strSQL_Read_Today_YesterDay_Flow + " where STATION_ID='" + Station.ZCID + "'"; + OracleLink.SaveDataTable(strSQL, dtToday_Flow, "DTJK", ""); + } + /// + /// 读取GPRS站场PLC的时间 + /// + /// + private string getPLCDateTime(byte[] plc_DateTime) + { + + string[] Uplc_DateTime = new string[4]; + + Uplc_DateTime[0] = plc_DateTime[4].ToString("X2") + plc_DateTime[3].ToString("X2"); + Uplc_DateTime[1] = plc_DateTime[6].ToString("X2") + plc_DateTime[5].ToString("X2"); + Uplc_DateTime[2] = plc_DateTime[8].ToString("X2") + plc_DateTime[7].ToString("X2"); + Uplc_DateTime[3] = plc_DateTime[10].ToString("X2") + plc_DateTime[9].ToString("X2"); + + string plc_Year = Uplc_DateTime[0]; + string plc_Month = Uplc_DateTime[1]; + string plc_Minute = Uplc_DateTime[2]; + string plc_Second = Uplc_DateTime[3]; + string plcDatetime = plc_Year + "-" + plc_Month.Substring(0, 2) + "-" + plc_Month.Substring(2, 2) + " " + plc_Minute.Substring(0, 2) + ":" + plc_Minute.Substring(2, 2) + ":" + plc_Second;//.Substring(0, 2);// +plc_Second.Substring(2, 2); + return plcDatetime; + } + + #endregion + + + } +} diff --git a/ConsoleGetPLCData/CS/GETDataGPRS——.cs b/ConsoleGetPLCData/CS/GETDataGPRS——.cs new file mode 100644 index 0000000..39b6c7d --- /dev/null +++ b/ConsoleGetPLCData/CS/GETDataGPRS——.cs @@ -0,0 +1,1496 @@ +using GetData_PLC; +using System; +using System.Collections; +using System.Collections.Generic; +using System.Data; +using System.Diagnostics; +using System.IO; +using System.Linq; +using System.Net; +using System.Net.Sockets; +using System.Text; +using System.Threading; + +namespace ConsoleGetPLCData.CS +{ + + /// + /// 提供TCP连接服务的服务器类 + /// + /// 特点: + /// 1.使用hash表保存所有已连接客户端的状态,收到数据时能实现快速查找.每当 + /// 有一个新的客户端连接就会产生一个新的会话(Session).该Session代表了客 + /// 户端对象. + /// 2.使用异步的Socket事件作为基础,完成网络通讯功能. + /// 3.支持带标记的数据报文格式的识别,以完成大数据报文的传输和适应恶劣的网 + /// 络环境.初步规定该类支持的最大数据报文为640K(即一个数据包的大小不能大于 + /// 640K,否则服务器程序会自动删除报文数据,认为是非法数据),防止因为数据报文 + /// 无限制的增长而导致服务器崩溃 + /// 4.通讯格式默认使用Encoding.Default格式这样就可以和以前32位程序的客户端 + /// 通讯.也可以使用U-16和U-8的的通讯方式进行.可以在该DatagramResolver类的 + /// 继承类中重载编码和解码函数,自定义加密格式进行通讯.总之确保客户端与服务 + /// 器端使用相同的通讯格式 + /// 5.使用C# native code,将来出于效率的考虑可以将C++代码写成的32位dll来代替 + /// C#核心代码, 但这样做缺乏可移植性,而且是Unsafe代码(该类的C++代码也存在) + /// 6.可以限制服务器的最大登陆客户端数目 + /// 7.比使用TcpListener提供更加精细的控制和更加强大异步数据传输的功能,可作为 + /// TcpListener的替代类 + /// 8.使用异步通讯模式,完全不用担心通讯阻塞和线程问题,无须考虑通讯的细节 + /// + /// + public class GETDataGPRS + { + #region 定义字段 + + /// + /// 站场属性赋值 + /// + stStation Station = new stStation(); + DataTable dtToday_Flow = new DataTable(); //今日流量总累计 表格 + DataTable dtYesToday_FLOW = new DataTable();//昨日流量总累计 表格 + //private bool readFlag; //读取盘古积算仪 昨日 今日累积量标志 + bool SaveFlag; //保存盘古积算仪 总累计量标志 + + + DataRow[] drDataTemp;//GPRS PLC设备采集上来的数据临时存放,再赋值 + static int intTimes = 0; + /// + /// 默认的服务器最大连接客户端端数据 + /// + public const int DefaultMaxClient = 100; + + /// + /// 接收数据缓冲区大小64K + /// + public const int DefaultBufferSize = 4 * 1024 * 1024; + + /// + /// 最大数据报文大小 + /// + public const int MaxDatagramSize = 4 * 1024 * 1024; + + /// + /// 报文解析器 + /// + private DatagramResolver _resolver; + + /// + /// 通讯格式编码解码器 + /// + private Coder _coder; + + /// + /// 服务器程序监听的IP地址 + /// + private IPAddress _serverIP; + /// + /// 服务器程序使用的端口 + /// + private int _port; + + /// + /// 服务器程序允许的最大客户端连接数 + /// + private ushort _maxClient; + + /// + /// 服务器的运行状态 + /// + private bool _isRun; + + /// + /// 接收数据缓冲区 + /// + private byte[] _recvDataBuffer; + + /// + /// 服务器使用的异步Socket类, + /// + private Socket _svrSock; + + /// + /// 保存所有客户端会话的哈希表 + /// + private Hashtable _sessionTable; + + /// + /// 当前的连接的客户端数 + /// + private ushort _clientCount; + + /// + /// 服务器端文件保存路径 + /// + private string _filePath; + + #endregion + + #region 事件定义 + + /// + /// 客户端建立连接事件 + /// + public event NetEvent ClientConn; + + /// + /// 客户端关闭事件 + /// + public event NetEvent ClientClose; + + /// + /// 服务器已经满事件 + /// + public event NetEvent ServerFull; + + /// + /// 服务器接收到数据事件 + /// + public event NetEvent RecvData; + + #endregion + + #region 构造函数 + + /// + /// 构造函数 + /// + /// 服务器端监听的端口号 + /// 服务器能容纳客户端的最大能力 + /// 通讯的编码方式 + public GETDataGPRS(IPAddress serverIP, int port, ushort maxClient, Coder coder, string filePath) + { + _serverIP = serverIP; + _port = port; + _maxClient = maxClient; + _coder = coder; + if (!filePath.EndsWith("\\")) + filePath = filePath + "\\"; + _filePath = filePath; + } + + /// + /// 构造函数 + /// + /// 服务器端监听的端口号 + /// 服务器能容纳客户端的最大能力 + /// 通讯的编码方式 + public GETDataGPRS(stStation strZhan) + { + Station = strZhan; + _serverIP = IPAddress.Parse(Station.ip); + _port = Station.port; + + + //_serverIP = IPAddress.Parse("116.62.236.74"); + //_port = 15001; + } + /// + /// 构造函数(默认使用Default编码方式) + /// + /// 服务器端监听的端口号 + /// 服务器能容纳客户端的最大能力 + public GETDataGPRS(IPAddress serverIP, int port, ushort maxClient, string filePath) + { + _serverIP = serverIP; + _port = port; + _maxClient = maxClient; + _coder = new Coder(Coder.EncodingMothord.Default); + if (!filePath.EndsWith("\\")) + filePath = filePath + "\\"; + _filePath = filePath; + } + + + // + /// 构造函数(默认使用Default编码方式和DefaultMaxClient(100)个客户端的容量) + /// + /// 服务器端监听的端口号 + public GETDataGPRS(IPAddress serverIP, int port, string filePath) + : this(serverIP, port, DefaultMaxClient, filePath) + { + } + + #endregion + + #region 属性 + + /// + /// 服务器的Socket对象 + /// + public Socket ServerSocket + { + get + { + return _svrSock; + } + } + + /// + /// 数据报文分析器 + /// + public DatagramResolver Resovlver + { + get + { + return _resolver; + } + set + { + _resolver = value; + } + } + + /// + /// 客户端会话数组,保存所有的客户端,不允许对该数组的内容进行修改 + /// + public Hashtable SessionTable + { + get + { + return _sessionTable; + } + } + + /// + /// 服务器可以容纳客户端的最大能力 + /// + public int Capacity + { + get + { + return _maxClient; + } + } + + /// + /// 当前的客户端连接数 + /// + public int SessionCount + { + get + { + return _clientCount; + } + } + + /// + /// 服务器运行状态 + /// + public bool IsRun + { + get + { + return _isRun; + } + + } + /// + /// 服务器端文件保存路径 + /// + public string FilePath + { + get + { + return _filePath; + } + + } + + #endregion + + #region 公有方法 + + /// + /// 启动服务器程序,开始监听客户端请求 + /// + public virtual void Start() + { + try + { + + + if (_isRun) + { + throw (new ApplicationException("TcpSvr已经在运行.")); + } + + _sessionTable = new Hashtable(53); + + _recvDataBuffer = new byte[DefaultBufferSize]; + + //初始化socket + _svrSock = new Socket(AddressFamily.InterNetwork, + SocketType.Stream, ProtocolType.Tcp); + + //绑定端口 + IPEndPoint iep = new IPEndPoint(_serverIP, _port); + _svrSock.Bind(iep); + + //开始监听 + _svrSock.Listen(5); + ProgramGetData.strAppend(DateTime.Now.ToString() + "------" + Station.ZCName + "监听成功!"); + //设置异步方法接受客户端连接 + _svrSock.BeginAccept(new AsyncCallback(AcceptConn), _svrSock); + + _isRun = true; + } + catch (Exception ex) + { + } + } + + + + /// + /// 停止服务器程序,所有与客户端的连接将关闭 + /// + public virtual void Stop() + { + if (!_isRun) + { + throw (new ApplicationException("TcpSvr已经停止")); + } + + //这个条件语句,一定要在关闭所有客户端以前调用 + //否则在EndConn会出现错误 + _isRun = false; + + //关闭数据连接,负责客户端会认为是强制关闭连接 + if (_svrSock.Connected) + { + _svrSock.Shutdown(SocketShutdown.Both); + } + + CloseAllClient(); + + //清理资源 + _svrSock.Close(); + + _sessionTable = null; + + } + + + /// + /// 关闭所有的客户端会话,与所有的客户端连接会断开 + /// + public virtual void CloseAllClient() + { + foreach (Session client in _sessionTable.Values) + { + client.Close(); + } + + _sessionTable.Clear(); + } + + + /// + /// 关闭一个与客户端之间的会话 + /// + /// 需要关闭的客户端会话对象 + public virtual void CloseSession(Session closeClient) + { + Debug.Assert(closeClient != null); + + if (closeClient != null) + { + + closeClient.Datagram = null; + + _sessionTable.Remove(closeClient.ID); + + _clientCount--; + + //客户端强制关闭链接 + if (ClientClose != null) + { + ClientClose(this, new NetEventArgs(closeClient)); + } + + closeClient.Close(); + } + } + + + /// + /// 发送数据 + /// + /// 接收数据的客户端会话 + /// 数据报文 + public virtual void SendText(Session recvDataClient, string datagram) + { + //获得数据编码 + byte[] data = _coder.GetTextBytes(datagram); + + recvDataClient.ClientSocket.BeginSend(data, 0, data.Length, SocketFlags.None, + new AsyncCallback(SendDataEnd), recvDataClient.ClientSocket); + + } + + + public virtual void SendFile(Session recvDataClient, string FilePath) + { + if (File.Exists(FilePath)) + { + byte[] data = _coder.GetFileBytes(FilePath); + + recvDataClient.ClientSocket.BeginSend(data, 0, data.Length, SocketFlags.None, + new AsyncCallback(SendDataEnd), recvDataClient.ClientSocket); + } + else + { + throw new Exception("文件不存在"); + } + } + #endregion + + #region 受保护方法 + /// + /// 关闭一个客户端Socket,首先需要关闭Session + /// + /// 目标Socket对象 + /// 客户端退出的类型 + protected virtual void CloseClient(Socket client, Session.ExitType exitType) + { + Debug.Assert(client != null); + + //查找该客户端是否存在,如果不存在,抛出异常 + Session closeClient = FindSession(client); + + closeClient.TypeOfExit = exitType; + + if (closeClient != null) + { + CloseSession(closeClient); + } + else + { + throw (new ApplicationException("需要关闭的Socket对象不存在")); + } + } + + + /// + /// 客户端连接处理函数 + /// + /// 欲建立服务器连接的Socket对象 + protected virtual void AcceptConn(IAsyncResult ar) + { + + //allDone.Set(); + Socket socketSend = (Socket)ar.AsyncState; + Socket socketRecive = socketSend.EndAccept(ar); + StateObject state = new StateObject(); + state.workSocket = socketRecive; + + if (Station.MeterTYPE == "1" || Station.MeterTYPE == "5") + { + readTodayYesTerdayQL(); + } + if (Station.MeterTYPE == "0") //PLC赋值 定义一个数组 暂存 采集上来的所有计量点的数据,再一并赋值给数据集jldID 和ID转换 + { + int jldMax = ProgramGetData.dsJLDataRealTime.Tables[this.Station.ZCID].Rows.Count; + int jld_IDMax = Convert.ToInt16(ProgramGetData.dsJLDataRealTime.Tables[this.Station.ZCID].Rows[jldMax - 1]["jld_id"]); + + if (jld_IDMax == 0) + { + drDataTemp = new DataRow[1]; + + } + if (jld_IDMax >= 1) + { + drDataTemp = new DataRow[3]; + + } + if (jld_IDMax >= 3) + { + drDataTemp = new DataRow[6]; + + } + if (jld_IDMax >= 6) + { + drDataTemp = new DataRow[10]; + + } + if (jld_IDMax >= 10) + { + drDataTemp = new DataRow[15]; + + } + if (jld_IDMax >= 15) + { + drDataTemp = new DataRow[21]; + + } + for (int i = 0; i < drDataTemp.Length; i++) + { + DataRow dr = ProgramGetData.dsJLDataRealTime.Tables[this.Station.ZCID].NewRow(); + drDataTemp[i] = dr; + drDataTemp[i]["jld_id"] = i; + drDataTemp[i]["STATION_NAME"] = Station.ZCName; + } + } + while (true) + { + + try + { + + byte[] SendByte = new byte[8]; + Console.WriteLine(DateTime.Now.ToString() + "------" + Station.ZCName + "正在采集......!"); + switch (Station.MeterTYPE) + { + case "0": //施耐德PLC 异步通讯 采集计量点数目变化 来判断采集的是哪一个计量点的数据 + + //读取PLC的时钟 + SendByte = TranData.Modbus_ReadData(1, 3, 16, 4); + + + for (int i = 0; i < drDataTemp.Length; i++) //计量点读取循环 循环数由主程序建立该站的实时数据表中的记录数决定 + { + if (i == 0) //第一次发一个计量点命令 jldID=0 + { + SendByte = TranData.Modbus_ReadData(1, 3, 400 + i * 20, 20); + } + if (i == 1) //第二次发2个计量点命令 jldID=1,2 + { + SendByte = TranData.Modbus_ReadData(1, 3, 400 + i * 20, 40); + i = 2; + } + + if (i == 3) //第三次发3个计量点命令 jldID=3,4,5 + { + SendByte = TranData.Modbus_ReadData(1, 3, 400 + i * 20, 60); + i = 5; + } + if (i == 6) //第4次发4个计量点命令 jldID=6,7,8,9 + { + SendByte = TranData.Modbus_ReadData(1, 3, 400 + i * 20, 80); + i = 9; + } + + if (i == 10) //第5次发5个计量点命令 jldID=10,11,12,13,14 + { + SendByte = TranData.Modbus_ReadData(1, 3, 400 + i * 20, 100); + i = 14; + } + + if (i == 15) //第5次发5个计量点命令 jldID=15,16,17,18,19,20 + { + SendByte = TranData.Modbus_ReadData(1, 3, 400 + i * 20, 120); + i = 20; + } + socketRecive.Send(SendByte); + socketRecive.BeginReceive(state.buffer, 0, StateObject.BufferSize, 0, new AsyncCallback(ReadCallback_PLC), state); + Thread.Sleep(1000); + } + + break; + case "1": //盘古积算仪 + for (int i = 0; i < ProgramGetData.dsJLDataRealTime.Tables[this.Station.ZCID].Rows.Count; i++) //计量点读取循环 循环数由主程序建立该站的实时数据表中的记录数决定 + { + int _jldID = int.Parse(ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows[i]["jld_id"].ToString()); + SendByte = TranData.Modbus_ReadData(_jldID + 1, 3, 0, 16); + socketRecive.Send(SendByte); + Thread.Sleep(1000); + socketRecive.BeginReceive(state.buffer, 0, StateObject.BufferSize, 0, new AsyncCallback(ReadCallback_PG), state); + + if ((DateTime.Now.Hour == 0 & DateTime.Now.Minute == 0 & DateTime.Now.Second == 10)) //过了零点存取累计总量,然后读取昨日累计总量 + { + SaveFlag = true; + } + + if (SaveFlag) + { + SaveTable(0); + readTodayYesTerdayQL(); + //Console.WriteLine("存数据库成功" + readFlag.ToString() + timeNow.ToString() + "--" + (SbType == "2" & (timeNow.Hour == 20 & timeNow.Minute == 45 & timeNow.Second > 10) & readFlag == false).ToString ()); + SaveFlag = false; + } + + } + break; + case "2": //103 + for (int i = 0; i < ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows.Count; i++) //计量点读取循环 循环数由主程序建立该站的实时数据表中的记录数决定 + { + int _jldID = int.Parse(ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows[i]["jld_id"].ToString()); + SendByte = TranData.Modbus_ReadData(_jldID + 1, 3, 7102, 22); + socketRecive.Send(SendByte); + Thread.Sleep(1000); + socketRecive.BeginReceive(state.buffer, 0, StateObject.BufferSize, 0, new AsyncCallback(ReadCallback_103), state); + } + + break; + case "3": + break; + case "4": + for (int i = 0; i < ProgramGetData.dsPparameter.Tables[Station.ZCID].Rows.Count; i++) //计量点读取循环 循环数由主程序建立该站的实时数据表中的记录数决定 + { + int _jldID = int.Parse(ProgramGetData.dsPparameter.Tables[Station.ZCID].Rows[i]["jld_id"].ToString()); + SendByte = TranData.Modbus_ReadData(_jldID + 1, 3, 511, 15); + socketRecive.Send(SendByte); + string strMessage = ""; + for (int j = 0; j < 8; j++) + { + strMessage = strMessage + " " + SendByte[j].ToString(); + } + Thread.Sleep(2000); + socketRecive.BeginReceive(state.buffer, 0, StateObject.BufferSize, 0, new AsyncCallback(ReadCallback_CSB), state); + + } + break; + + + case "5": + for (int i = 0; i < ProgramGetData.dsJLDataRealTime.Tables[this.Station.ZCID].Rows.Count; i++) //计量点读取循环 循环数由主程序建立该站的实时数据表中的记录数决定 + { + int _jldID = int.Parse(ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows[i]["jld_id"].ToString()); + SendByte = TranData.Modbus_ReadData(_jldID + 1, 3, 4, 30); + socketRecive.Send(SendByte); + Thread.Sleep(1000); + socketRecive.BeginReceive(state.buffer, 0, StateObject.BufferSize, 0, new AsyncCallback(ReadCallback_WZFX), state); + + if ((DateTime.Now.Hour == 0 & DateTime.Now.Minute == 0 & DateTime.Now.Second == 10)) //过了零点存取累计总量,然后读取昨日累计总量 + { + SaveFlag = true; + } + + if (SaveFlag) + { + SaveTable(0); + readTodayYesTerdayQL(); + //Console.WriteLine("存数据库成功" + readFlag.ToString() + timeNow.ToString() + "--" + (SbType == "2" & (timeNow.Hour == 20 & timeNow.Minute == 45 & timeNow.Second > 10) & readFlag == false).ToString ()); + SaveFlag = false; + } + + } + break; + + + case "6": //腾空PLC + for (int i = 0; i < ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows.Count; i++) //计量点读取循环 循环数由主程序建立该站的实时数据表中的记录数决定 + { + int _jldID = int.Parse(ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows[i]["jld_id"].ToString()); + SendByte = TranData.Modbus_ReadData(_jldID + 1, 3, 10100, 22); + socketRecive.Send(SendByte); + Thread.Sleep(1000); + socketRecive.BeginReceive(state.buffer, 0, StateObject.BufferSize, 0, new AsyncCallback(ReadCallback_103), state); + } + + break; + + + default: + break; + } + + } + catch (Exception ex) + { + } + + if (DateTime.Now.Hour == 23 && DateTime.Now.Minute == 59) + { + Thread.Sleep(2000); + + } + else + { + if (intTimes > 5) + { + intTimes = 5; + Thread.Sleep(Station.readDiffTime); + } + else + { + Thread.Sleep(3000); + } + } + + intTimes = intTimes + 1; + } + + //while (true) + //{ + // //如果服务器停止了服务,就不能再接收新的客户端 + // if (!_isRun) + // { + // return; + // } + // //接受一个客户端的连接请求 + // Socket oldserver = (Socket)iar.AsyncState; + // Socket client = oldserver.EndAccept(iar); + // //检查是否达到最大的允许的客户端数目 + // if (_clientCount == _maxClient) + // { + // //服务器已满,发出通知 + // if (ServerFull != null) + // { + // ServerFull(this, new NetEventArgs(new Session(client))); + // } + + // } + // else + // { + + // Session newSession = new Session(client); + + // _sessionTable.Add(newSession.ID, newSession); + + // //客户端引用计数+1 + // _clientCount++; + + // //开始接受来自该客户端的数据 + // client.BeginReceive(_recvDataBuffer, 0, _recvDataBuffer.Length, SocketFlags.None, + // new AsyncCallback(ReceiveData), client); + + // //新的客户段连接,发出通知 + // if (ClientConn != null) + // { + // ClientConn(this, new NetEventArgs(newSession)); + // } + // } + + // //继续接受客户端 + // _svrSock.BeginAccept(new AsyncCallback(AcceptConn), _svrSock); + + // if (DateTime.Now.Hour == 23 && DateTime.Now.Minute == 59) + // { + // Thread.Sleep(2000); + + // } + // else + // { + // if (intTimes > 5) + // { + // intTimes = 5; + // Thread.Sleep(Station.readDiffTime); + // } + // else + // { + // Thread.Sleep(3000); + // } + // } + + // intTimes = intTimes + 1; + + //} + } + + + /// + /// 读取GPRS站场PLC的时间 + /// + /// + private string getPLCDateTime(byte[] plc_DateTime) + { + + string[] Uplc_DateTime = new string[4]; + + Uplc_DateTime[0] = plc_DateTime[4].ToString("X2") + plc_DateTime[3].ToString("X2"); + Uplc_DateTime[1] = plc_DateTime[6].ToString("X2") + plc_DateTime[5].ToString("X2"); + Uplc_DateTime[2] = plc_DateTime[8].ToString("X2") + plc_DateTime[7].ToString("X2"); + Uplc_DateTime[3] = plc_DateTime[10].ToString("X2") + plc_DateTime[9].ToString("X2"); + + string plc_Year = Uplc_DateTime[0]; + string plc_Month = Uplc_DateTime[1]; + string plc_Minute = Uplc_DateTime[2]; + string plc_Second = Uplc_DateTime[3]; + string plcDatetime = plc_Year + "-" + plc_Month.Substring(0, 2) + "-" + plc_Month.Substring(2, 2) + " " + plc_Minute.Substring(0, 2) + ":" + plc_Minute.Substring(2, 2) + ":" + plc_Second;//.Substring(0, 2);// +plc_Second.Substring(2, 2); + return plcDatetime; + } + + /// + /// 解析GPRS读取的PLC数据 + /// + /// + + public void ReadCallback_PLC(IAsyncResult ar) + { + try + { + StateObject state = (StateObject)ar.AsyncState; + Socket socketRecive = state.workSocket; + //从远程设备读取数据 + int bytesRead = socketRecive.EndReceive(ar); + int dataNum; + dataNum = state.buffer[2]; + + + try + { + if (dataNum == 8) //读取的时钟 + { + ProgramGetData.dsZhanDateTime.Tables[Station.ZCID].Rows[0]["PLCTime"] = getPLCDateTime(state.buffer); //获取PLC时间 + } + } + catch + { } + + try + { + if (dataNum == 40) // 代表1个计量点 jldID=0 + { + + DataRow[] drJldS = { drDataTemp[0] }; + DataRow[] drData = TranData.GetDataTran_GPRS(drJldS, state.buffer, Station.MeterTYPE); + drDataTemp[0].ItemArray = drData[0].ItemArray; + + } + } + catch + { } + + try + { + if (dataNum == 80) // 代表2个计量点 jldID=1,2 + { + DataRow[] drJldS = { drDataTemp[1], drDataTemp[2] }; + DataRow[] drData = TranData.GetDataTran_GPRS(drJldS, state.buffer, Station.MeterTYPE); + for (int i = 1; i < 3; i++) + { + drDataTemp[i].ItemArray = drData[i - 1].ItemArray; + } + } + } + catch + { } + try + { + if (dataNum == 120) // 代表3个计量点 jldID=3,4,5 + { + DataRow[] drJldS = { drDataTemp[3], drDataTemp[4], drDataTemp[5] }; + DataRow[] drData = TranData.GetDataTran_GPRS(drJldS, state.buffer, Station.MeterTYPE); + for (int i = 3; i < 6; i++) + { + drDataTemp[i].ItemArray = drData[i - 3].ItemArray; + } + } + } + catch + { } + try + { + if (dataNum == 160) // 代表4个计量点 jldID=6,7,8,9 + { + DataRow[] drJldS = { drDataTemp[6], drDataTemp[7], drDataTemp[8], drDataTemp[9] }; + DataRow[] drData = TranData.GetDataTran_GPRS(drJldS, state.buffer, Station.MeterTYPE); + for (int i = 6; i < 10; i++) + { + drDataTemp[i].ItemArray = drData[i - 6].ItemArray; + } + } + } + catch + { } + try + { + if (dataNum == 200) // 代表5个计量点 jldID=10,11,12,13,14 + { + DataRow[] drJldS = { drDataTemp[10], drDataTemp[11], drDataTemp[12], drDataTemp[13], drDataTemp[14] }; + DataRow[] drData = TranData.GetDataTran_GPRS(drJldS, state.buffer, Station.MeterTYPE); + for (int i = 10; i < 15; i++) + { + drDataTemp[i].ItemArray = drData[i - 10].ItemArray; + } + } + } + catch + { } + try + { + if (dataNum == 240) // 代表6个计量点 jldID=15,16,17,18,19,20 + { + DataRow[] drJldS = { drDataTemp[15], drDataTemp[16], drDataTemp[17], drDataTemp[18], drDataTemp[19], drDataTemp[20] }; + DataRow[] drData = TranData.GetDataTran_GPRS(drJldS, state.buffer, Station.MeterTYPE); + for (int i = 15; i < 21; i++) + { + drDataTemp[i].ItemArray = drData[i - 15].ItemArray; + } + } + } + catch + { } + + + // + foreach (DataRow dr in ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows) + { + int jld_id = Convert.ToInt16(dr["jld_ID"]); + + ProgramGetData.strAppend("前\t" + DateTime.Now.ToString() + "\t" + strPrint(dr), Station.ZCName); + + //温度 + dr["WD"] = drDataTemp[jld_id]["WD"]; + //压力 + dr["YL"] = drDataTemp[jld_id]["YL"]; + //差压 + dr["CY"] = drDataTemp[jld_id]["CY"]; + //瞬时量 + dr["SSL"] = drDataTemp[jld_id]["SSL"]; + //今日量 + dr["JRL"] = drDataTemp[jld_id]["JRL"]; + //昨日量 + dr["ZRL"] = drDataTemp[jld_id]["ZRL"]; + //累计量 + dr["LJL"] = drDataTemp[jld_id]["LJL"]; + //本月量 + dr["BYL"] = drDataTemp[jld_id]["BYL"]; + //上月量 + dr["SYL"] = drDataTemp[jld_id]["SYL"]; + //今日时间 + dr["JRSJ"] = drDataTemp[jld_id]["JRSJ"]; + //昨日时间 + dr["ZRSJ"] = drDataTemp[jld_id]["ZRSJ"]; + //仪表状态 + dr["YBZT"] = drDataTemp[jld_id]["YBZT"]; + + try + { + if (dr["MeterTYPE"].ToString() == "脉冲") + { + //计算工况流量 + Single sngQN; + Single sngTf; + float sngPf; + if (dr["SSL"].ToString() != "") + { + sngQN = Convert.ToSingle(dr["SSL"].ToString()); + } + else + { + sngQN = 0; + } + if (dr["WD"].ToString() != "") + { + sngTf = float.Parse(dr["WD"].ToString()); + sngTf = sngTf + 273.15f; + } + else + { + sngTf = 0; + } + + if (dr["YL"].ToString() != "" && dr["YL"].ToString() != "0") + { + sngPf = Convert.ToSingle(dr["YL"].ToString()); + Single sngFz2; + + if (sngPf > 0.1 && sngPf < 0.5) + { + sngFz2 = 0.999f - 0.008f * (sngPf - 0.1f) / (0.5f - sngPf); + + } + else + { + if (sngPf < 0.1) sngFz2 = 0.998f; + if (sngPf > 0.5) sngFz2 = 0.988f; + } + + dr["SSGKLL"] = (sngQN * sngTf * 0.101325 * 0.998 / 293.15 / sngPf / 24).ToString("#.#"); + + } + else + { + dr["SSGKLL"] = 0; + } + + + + DataRow[] drS = ProgramGetData.dsPparameter.Tables[Station.ZCID].Select("jld_id='" + jld_id + "'"); + string strXx = drS[0]["CLXX"].ToString(); + string strSx = drS[0]["CLSX"].ToString(); + + dr["CXFLAG"] = TranData.GetCxFlag(dr["SSGKLL"].ToString(), strXx, strSx); + if (jld_id == 3) + { + + } + } + else + { + dr["CXFLAG"] = TranData.GetCxFlag(dr["CY"].ToString()); + } + + } + catch + { + + + } + + + ProgramGetData.strAppend("后\t" + DateTime.Now.ToString() + "\t" + strPrint(dr), Station.ZCName); + + //Console.WriteLine(jld_id.ToString() + "_" + dr["SSL"] + "_" + dr["CY"]); + } + + socketRecive.BeginReceive(state.buffer, 0, StateObject.BufferSize, 0, new AsyncCallback(ReadCallback_PLC), state); + + } + catch (Exception ex) + { + } + } + + /// + /// 对于没在PLC的设备,每次采集程序启动读取存储的昨日量 今日量的总累积量 + /// + private void readTodayYesTerdayQL() + { + DateTime _Date = DateTime.Now.AddDays(-1); + _Date = DateTime.Parse(_Date.ToString("yyyy-MM-dd")); + string strSQL = SQL_Strings.strSQL_Read_Today_YesterDay_Flow + " where STATION_ID='" + Station.ZCID + "' and RTIME=to_date('" + _Date.ToShortDateString() + "', 'yyyy-mm-dd') order by JLD_ID"; + dtToday_Flow = OracleLink.ExecuteDataTable(strSQL, "DTJK", ""); + strSQL = SQL_Strings.strSQL_Read_Today_YesterDay_Flow + " where STATION_ID='" + Station.ZCID + "' and RTIME=to_date('" + _Date.AddDays(-1).ToShortDateString() + "', 'yyyy-mm-dd') order by JLD_ID"; + dtYesToday_FLOW = OracleLink.ExecuteDataTable(strSQL, "DTJK", ""); + } + /// + /// 保存昨日量、今日量到数据库 + /// + /// + private void SaveTable(int intSaveFlag) + { + SaveFlag = true; + Thread.Sleep(2000); + string strSQL = SQL_Strings.strSQL_Read_Today_YesterDay_Flow + " where STATION_ID='" + Station.ZCID + "'"; + OracleLink.SaveDataTable(strSQL, dtToday_Flow, "DTJK", ""); + } + + /// + /// 获取并解析福鑫的数据 + /// + /// + public void ReadCallback_WZFX(IAsyncResult ar) + { + try + { + StateObject state = (StateObject)ar.AsyncState; + Socket socketRecive = state.workSocket; + //从远程设备读取数据 + int bytesRead = socketRecive.EndReceive(ar); + int dataNum; + dataNum = state.buffer[2]; + int jldID = state.buffer[0] - 1; + if (dataNum == 60) + { + ProgramGetData.strAppend("前\t" + DateTime.Now.ToString() + "\t" + strPrint(ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows[jldID]), Station.ZCName); + + ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows[jldID].ItemArray = TranData.GetDataTran_GPRS(ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows[jldID], state.buffer, Station.MeterTYPE).ItemArray; + ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows[jldID]["JLD_NAME"] = ProgramGetData.dsPparameter.Tables[Station.ZCID].Rows[jldID]["JLD_NAME"]; + try + { + ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows[jldID]["CXFlag"] = TranData.GetCxFlag(ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows[jldID]["SSGKLL"].ToString(), ProgramGetData.dsPparameter.Tables[Station.ZCID].Rows[jldID]["CLXX"].ToString(), ProgramGetData.dsPparameter.Tables[Station.ZCID].Rows[jldID]["CLSX"].ToString()); + } + catch { } + + ProgramGetData.dsPparameter.Tables[Station.ZCID].Rows[jldID]["Gr"] = ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows[jldID]["SYL"]; + ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows[jldID]["SYL"] = ""; + ProgramGetData.strAppend("后\t" + DateTime.Now.ToString() + "\t" + strPrint(ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows[jldID]), Station.ZCName); + + socketRecive.BeginReceive(state.buffer, 0, StateObject.BufferSize, 0, new AsyncCallback(ReadCallback_WZFX), state); + } + #region //提取昨日凌晨总累积量 计算今日量 + try + { + string strTotalFlowNow = ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows[jldID]["LJL"].ToString(); + DataRow[] drTotay; ; + drTotay = dtToday_Flow.Select("JLD_ID in( '" + jldID + "')"); + //Console.WriteLine("时间:" + DateTime.Now + "JLD_ID in( '" + jldID + "')--" + drTotay.Length.ToString() + "\n"); + if (drTotay.Length == 0) //如果今日流量记录为空 把当前的流量总量写入表格 并保存到数据库中 + { + DataRow drToday = dtToday_Flow.NewRow(); + drToday["rtime"] = DateTime.Parse(DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd")); + drToday["station_id"] = Station.ZCID; + drToday["jld_id"] = jldID; + drToday["flowtotal"] = strTotalFlowNow; + dtToday_Flow.Rows.Add(drToday); + SaveFlag = true; + } + else + { + //今日量 + ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows[jldID]["JRL"] = float.Parse(strTotalFlowNow) - float.Parse(drTotay[0]["flowtotal"].ToString()); + } + + DataRow[] drYesterday; + drYesterday = dtYesToday_FLOW.Select("JLD_ID in ('" + jldID + "')"); + //Console.WriteLine("时间:" + DateTime.Now + "JLD_ID in( '" + jldID + "')--" + drYesterday.Length.ToString() + "\n"); + if (drYesterday.Length < 1) + { + //昨日量 + ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows[jldID]["ZRL"] = ""; + } + else + { + //昨日量 + ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows[jldID]["ZRL"] = float.Parse(drTotay[0]["flowtotal"].ToString()) - float.Parse(drYesterday[0]["flowtotal"].ToString()); ; + } + + } + catch { } + + #endregion + } + catch + { + + } + } + + /// + /// 获取并解析盘古积算仪的数据 + /// + /// + public void ReadCallback_PG(IAsyncResult ar) + { + try + { + StateObject state = (StateObject)ar.AsyncState; + Socket socketRecive = state.workSocket; + //从远程设备读取数据 + int bytesRead = socketRecive.EndReceive(ar); + int dataNum; + dataNum = state.buffer[2]; + int jldID = state.buffer[0] - 1; + if (dataNum == 32) + { + ProgramGetData.strAppend("前\t" + DateTime.Now.ToString() + "\t" + strPrint(ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows[jldID]), Station.ZCName); + ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows[jldID].ItemArray = TranData.GetDataTran_GPRS(ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows[jldID], state.buffer, Station.MeterTYPE).ItemArray; + ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows[jldID]["JLD_NAME"] = ProgramGetData.dsPparameter.Tables[Station.ZCID].Rows[jldID]["JLD_NAME"]; + try + { + ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows[jldID]["CXFlag"] = TranData.GetCxFlag(ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows[jldID]["SSGKLL"].ToString(), ProgramGetData.dsPparameter.Tables[Station.ZCID].Rows[jldID]["CLXX"].ToString(), ProgramGetData.dsPparameter.Tables[Station.ZCID].Rows[jldID]["CLSX"].ToString()); + } + catch (Exception ex) + { } + + ProgramGetData.dsPparameter.Tables[Station.ZCID].Rows[jldID]["Gr"] = ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows[jldID]["SYL"]; + ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows[jldID]["SYL"] = ""; + ProgramGetData.strAppend("后\t" + DateTime.Now.ToString() + "\t" + strPrint(ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows[jldID]), Station.ZCName); + socketRecive.BeginReceive(state.buffer, 0, StateObject.BufferSize, 0, new AsyncCallback(ReadCallback_PG), state); + } + #region //提取昨日凌晨总累积量 计算今日量 + try + { + string strTotalFlowNow = ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows[jldID]["LJL"].ToString(); + DataRow[] drTotay; ; + drTotay = dtToday_Flow.Select("JLD_ID in( '" + jldID + "')"); + //Console.WriteLine("时间:" + DateTime.Now + "JLD_ID in( '" + jldID + "')--" + drTotay.Length.ToString() + "\n"); + if (drTotay.Length == 0) //如果今日流量记录为空 把当前的流量总量写入表格 并保存到数据库中 + { + DataRow drToday = dtToday_Flow.NewRow(); + drToday["rtime"] = DateTime.Parse(DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd")); + drToday["station_id"] = Station.ZCID; + drToday["jld_id"] = jldID; + drToday["flowtotal"] = strTotalFlowNow; + dtToday_Flow.Rows.Add(drToday); + SaveFlag = true; + } + else + { + //今日量 + ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows[jldID]["JRL"] = float.Parse(strTotalFlowNow) - float.Parse(drTotay[0]["flowtotal"].ToString()); + } + DataRow[] drYesterday; + drYesterday = dtYesToday_FLOW.Select("JLD_ID in ('" + jldID + "')"); + //Console.WriteLine("时间:" + DateTime.Now + "JLD_ID in( '" + jldID + "')--" + drYesterday.Length.ToString() + "\n"); + if (drYesterday.Length < 1) + { + //昨日量 + ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows[jldID]["ZRL"] = ""; + } + else + { + //昨日量 + ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows[jldID]["ZRL"] = float.Parse(drTotay[0]["flowtotal"].ToString()) - float.Parse(drYesterday[0]["flowtotal"].ToString()); ; + } + + } + catch { } + + #endregion + } + catch + { + + } + } + /// + /// 获取并解析爱知超声波的数据 + /// + /// + public void ReadCallback_CSB(IAsyncResult ar) + { + try + { + StateObject state = (StateObject)ar.AsyncState; + Socket socketRecive = state.workSocket; + //从远程设备读取数据 + int bytesRead = socketRecive.EndReceive(ar); + int dataNum; + dataNum = state.buffer[2]; + int jldID = state.buffer[0] - 1; + if (dataNum == 30) + { + ProgramGetData.strAppend("前\t" + DateTime.Now.ToString() + "\t" + strPrint(ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows[jldID]), Station.ZCName); + + ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows[jldID].ItemArray = TranData.GetDataTran_GPRS(ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows[jldID], state.buffer, Station.MeterTYPE).ItemArray; + ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows[jldID]["JLD_NAME"] = ProgramGetData.dsPparameter.Tables[Station.ZCID].Rows[jldID]["JLD_NAME"]; + try + { + ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows[jldID]["CXFlag"] = TranData.GetCxFlag(ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows[jldID]["SSGKLL"].ToString(), ProgramGetData.dsPparameter.Tables[Station.ZCID].Rows[jldID]["CLXX"].ToString(), ProgramGetData.dsPparameter.Tables[Station.ZCID].Rows[jldID]["CLSX"].ToString()); + } + catch { } + + ProgramGetData.dsPparameter.Tables[Station.ZCID].Rows[jldID]["Gr"] = ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows[jldID]["SYL"]; + ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows[jldID]["SYL"] = ""; + ProgramGetData.strAppend("后\t" + DateTime.Now.ToString() + "\t" + strPrint(ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows[jldID]), Station.ZCName); + + socketRecive.BeginReceive(state.buffer, 0, StateObject.BufferSize, 0, new AsyncCallback(ReadCallback_PG), state); + } + #region //提取昨日凌晨总累积量 计算今日量 + try + { + string strTotalFlowNow = ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows[jldID]["LJL"].ToString(); + DataRow[] drTotay; ; + drTotay = dtToday_Flow.Select("JLD_ID in( '" + jldID + "')"); + //Console.WriteLine("时间:" + DateTime.Now + "JLD_ID in( '" + jldID + "')--" + drTotay.Length.ToString() + "\n"); + if (drTotay.Length == 0) //如果今日流量记录为空 把当前的流量总量写入表格 并保存到数据库中 + { + DataRow drToday = dtToday_Flow.NewRow(); + drToday["rtime"] = DateTime.Parse(DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd")); + drToday["station_id"] = Station.ZCID; + drToday["jld_id"] = jldID; + drToday["flowtotal"] = strTotalFlowNow; + dtToday_Flow.Rows.Add(drToday); + SaveFlag = true; + } + else + { + //今日量 + ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows[jldID]["JRL"] = float.Parse(strTotalFlowNow) - float.Parse(drTotay[0]["flowtotal"].ToString()); + } + + DataRow[] drYesterday; + drYesterday = dtYesToday_FLOW.Select("JLD_ID in ('" + jldID + "')"); + //Console.WriteLine("时间:" + DateTime.Now + "JLD_ID in( '" + jldID + "')--" + drYesterday.Length.ToString() + "\n"); + if (drYesterday.Length < 1) + { + //昨日量 + ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows[jldID]["ZRL"] = ""; + } + else + { + //昨日量 + ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows[jldID]["ZRL"] = float.Parse(drTotay[0]["flowtotal"].ToString()) - float.Parse(drYesterday[0]["flowtotal"].ToString()); ; + } + + } + catch { } + + #endregion + } + catch + { + + } + } + + /// + /// 获得打印数据监视字符串 + /// + /// + /// + private string strPrint(DataRow dr) + { + return dr["JLD_NAME"] + "\t瞬时量:" + dr["SSL"] + "\t温度:" + dr["WD"] + "\t压力:" + dr["YL"] + "\t累积量:" + dr["LJL"]; + } + + /// + /// 获取并解析103的数据 + /// + /// + public void ReadCallback_103(IAsyncResult ar) + { + try + { + StateObject state = (StateObject)ar.AsyncState; + Socket socketRecive = state.workSocket; + //从远程设备读取数据 + int bytesRead = socketRecive.EndReceive(ar); + int dataNum; + dataNum = state.buffer[2]; + int jldID = state.buffer[0] - 1; + if (dataNum == 44) + { + ProgramGetData.strAppend("前\t" + DateTime.Now.ToString() + "\t" + strPrint(ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows[jldID]), Station.ZCName); + ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows[jldID].ItemArray = TranData.GetDataTran_GPRS(ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows[jldID], state.buffer, Station.MeterTYPE).ItemArray; + ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows[jldID]["JLD_NAME"] = ProgramGetData.dsPparameter.Tables[Station.ZCID].Rows[jldID]["JLD_NAME"]; + socketRecive.BeginReceive(state.buffer, 0, StateObject.BufferSize, 0, new AsyncCallback(ReadCallback_103), state); + ProgramGetData.strAppend("后\t" + DateTime.Now.ToString() + "\t" + strPrint(ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows[jldID]), Station.ZCName); + } + } + catch + { + } + + } + + /// + /// 通过Socket对象查找Session对象 + /// + /// + /// 找到的Session对象,如果为null,说明并不存在该回话 + private Session FindSession(Socket client) + { + SessionId id = new SessionId((int)client.Handle); + + return (Session)_sessionTable[id]; + } + + + /// + /// 接受数据完成处理函数,异步的特性就体现在这个函数中, + /// 收到数据后,会自动解析为字符串报文 + /// + /// 目标客户端Socket + protected virtual void ReceiveData(IAsyncResult iar) + { + Socket client = (Socket)iar.AsyncState; + + try + { + //如果两次开始了异步的接收,所以当客户端退出的时候 + //会两次执行EndReceive + + int recv = client.EndReceive(iar); + + if (recv == 0) + { + //正常的关闭 + CloseClient(client, Session.ExitType.NormalExit); + return; + } + string receivedData; + if (_recvDataBuffer[0] == 0x55) + { + receivedData = _coder.GetEncodingString(_recvDataBuffer, 1, recv - 1); + } + else + { + string fileName = "TCP监控.txt"; + //string fileName =this._coder.GetEncodingString(_recvDataBuffer,6,_recvDataBuffer[1]-1); + receivedData = _coder.GetEncodingString(_recvDataBuffer, 0, recv); + _coder.WriteFile(_filePath + fileName, receivedData); + receivedData = "Receive Data:" + receivedData + "##"; + } + //发布收到数据的事件 + if (RecvData != null) + { + Session sendDataSession = FindSession(client); + + Debug.Assert(sendDataSession != null); + + //如果定义了报文的尾标记,需要处理报文的多种情况 + if (_resolver != null) + { + if (sendDataSession.Datagram != null && + sendDataSession.Datagram.Length != 0) + { + //加上最后一次通讯剩余的报文片断 + receivedData = sendDataSession.Datagram + receivedData; + } + + string[] recvDatagrams = _resolver.Resolve(ref receivedData); + + + foreach (string newDatagram in recvDatagrams) + { + //深拷贝,为了保持Datagram的对立性 + ICloneable copySession = (ICloneable)sendDataSession; + + Session clientSession = (Session)copySession.Clone(); + + clientSession.Datagram = newDatagram; + + clientSession.DataBuffer = _recvDataBuffer; + + //发布一个报文消息 + RecvData(this, new NetEventArgs(clientSession)); + } + + //剩余的代码片断,下次接收的时候使用 + sendDataSession.Datagram = receivedData; + + + if (sendDataSession.Datagram.Length > MaxDatagramSize) + { + sendDataSession.Datagram = null; + } + + } + //没有定义报文的尾标记,直接交给消息订阅者使用 + else + { + ICloneable copySession = (ICloneable)sendDataSession; + + Session clientSession = (Session)copySession.Clone(); + + clientSession.Datagram = receivedData; + + clientSession.DataBuffer = _recvDataBuffer; + + RecvData(this, new NetEventArgs(clientSession)); + } + + }//end of if(RecvData!=null) + + //继续接收来自来客户端的数据 + client.BeginReceive(_recvDataBuffer, 0, _recvDataBuffer.Length, SocketFlags.None, + new AsyncCallback(ReceiveData), client); + + } + catch (SocketException ex) + { + //客户端退出 + if (10054 == ex.ErrorCode) + { + //客户端强制关闭 + CloseClient(client, Session.ExitType.ExceptionExit); + } + + } + catch (ObjectDisposedException ex) + { + //这里的实现不够优雅 + //当调用CloseSession()时,会结束数据接收,但是数据接收 + //处理中会调用int recv = client.EndReceive(iar); + //就访问了CloseSession()已经处置的对象 + //我想这样的实现方法也是无伤大雅的. + if (ex != null) + { + ex = null; + //DoNothing; + } + } + + } + + + /// + /// 发送数据完成处理函数 + /// + /// 目标客户端Socket + protected virtual void SendDataEnd(IAsyncResult iar) + { + Socket client = (Socket)iar.AsyncState; + + int sent = client.EndSend(iar); + } + + #endregion + + } +} \ No newline at end of file diff --git a/ConsoleGetPLCData/CS/GetDataNet.cs b/ConsoleGetPLCData/CS/GetDataNet.cs new file mode 100644 index 0000000..56536ca --- /dev/null +++ b/ConsoleGetPLCData/CS/GetDataNet.cs @@ -0,0 +1,341 @@ +using Modbus.Device; +using System; +using System.Collections.Generic; +using System.Data; +using System.Linq; +using System.Net.Sockets; +using System.Text; +using System.Threading; + +namespace ConsoleGetPLCData.CS +{ + + class GetDataNet + { + stStation Station = new stStation(); + private ModbusIpMaster master; + private TcpClient client; + private bool WriteDateTimeFlag; + public static ManualResetEvent allDone = new ManualResetEvent(false); + + ///构造函数 初始化 + public GetDataNet(stStation strZhan) + { + Station = strZhan; + } + + /// + /// 线程入口函数 + /// + public void GetPLCData() + { + + ProgramGetData.strAppend(DateTime.Now.ToString() + "------" + "开始采集" + Station.ZCName + "数据"); + + GetDataByNet(); + + } + + + + #region 局域网采集功能 + /// + /// 局域网获取PLC的数据 + /// + private void GetDataByNet() + { + + while (true) + { + using (client = new TcpClient()) + { + try + { + client.Connect(Station.ip, Station.port); + master = ModbusIpMaster.CreateIp(client); + int JldNum = ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows.Count; + + } + catch (SystemException err) + { + if (err.Message != null) + { + // string strZCIDtemp[]=Station.ZCID.Split ('_'); + // if (strZCIDtemp .Length >1) + //{ + + //} + // else + // { + int JldNum = ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows.Count; + + //} + + + for (int i = 0; i < ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows.Count; i++) //PLC计量点读取循环 循环数由主程序建立该站的实时数据表中的记录数决定 + { + //故障赋值 + //TranData.netError(ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows[i]); + + } + + foreach (DataRow dr in ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows) + { + TranData.netError(dr); + + } + ProgramGetData.strAppend(DateTime.Now.ToString() + "------" + Station.ZCName + Station.ZCID + "网络连接故障!"); + + + } + } + try + { + int JldNum = ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows.Count; + + ProgramGetData.dsZhanDateTime.Tables[Station.ZCID].Rows[0]["PLCTime"] = getPLCDateTime(); //获取PLC时间 + SetPLCDateTime(); //同步PLC时间 + + //PLC计量点读取循环 循环数由主程序建立该站的实时数据表中的记录数决定 + foreach (DataRow dr in ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows) + { + int _jldID = 0; + try + { + _jldID = int.Parse(dr["jld_id"].ToString()); + } + catch (Exception ex) + { + + } + DataRow[] drPars = ProgramGetData.dsPparameter.Tables[Station.ZCID].Select("jld_id='" + _jldID.ToString() + "'"); + //判断是否读取计量点参数 + if (dr["readparflag"].ToString() == "1") + { + ushort[] ParWord = master.ReadHoldingRegisters(Convert.ToUInt16((int)(24360 + (240 * _jldID))), 60); + drPars[0].ItemArray = TranData.GetPLCPar_Net(drPars[0], ParWord, Station.MeterTYPE).ItemArray; + dr["readparflag"] = "0"; + drPars[0]["ReadTime"] = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); + } + //采集实时计量数据 + ushort[] Word = master.ReadHoldingRegisters(Convert.ToUInt16((int)(400 + (20 * _jldID))), 20); + //解析数据 根据设备类型解析 + dr.ItemArray = TranData.GetDataTran_Net(dr, Word, Station.MeterTYPE).ItemArray; + //读取计算脉冲仪表的工况流量或雷诺数 + string strPlusNum = ""; + + try + { + + + if (dr["MeterTYPE"].ToString() == "脉冲") + { + //采集脉冲数 + ushort[] PlusNum = master.ReadHoldingRegisters(Convert.ToUInt16((int)(5000 + (80 * _jldID))), 4); + //采集K系数 + ushort[] PlusK = master.ReadHoldingRegisters(Convert.ToUInt16((int)(2600 + (30 * _jldID))), 4); + string ssgkll = TranData.GetFlowGK(PlusNum, PlusK, out strPlusNum); + dr["SSGKLL"] = ssgkll; + string strCxXx = drPars[0]["CLXX"].ToString(); + string strCxSx = drPars[0]["CLSX"].ToString(); + dr["CXFlag"] = TranData.GetCxFlag(ssgkll, strCxXx, strCxSx); + + } + + + + dr["JLD_NAME"] = drPars[0]["JLD_NAME"]; + if (dr["MeterTYPE"].ToString() == "脉冲") dr["CY"] = strPlusNum; + //差压式流量计则计算雷诺数 + if (dr["MeterTYPE"].ToString() != "脉冲") + { + string strXdmd = drPars[0]["Gr"].ToString(); + string strGj = drPars[0]["gj"].ToString(); + float sngDlnd = 19768.8f; + string strQn = dr["SSL"].ToString(); + if (strQn == "") strQn = "0"; + if (strXdmd == "") strXdmd = "0"; + + if (Station.ZCID == "4708") + { + + + } + + if (strGj != "") + { + dr["SSGKLL"] = (1615.7238 * Convert.ToSingle(strQn) * Convert.ToSingle(strXdmd) / Convert.ToSingle(strGj)).ToString("#.#"); + } + dr["CXFlag"] = TranData.GetCxFlag(dr["CY"].ToString()); + + + } + } + catch (Exception ex) + { + + } + } + } + catch (Exception ex) + { + if (ex.Message != null) + { + ProgramGetData.strAppend(DateTime.Now.ToString() + "------" + Station.ZCName + Station.ZCID + "计量点 " + "读取寄存器错误!"); + continue; + } + } + Thread.Sleep(Station.readDiffTime); + + } + } + + } + /// + /// 将服务器的时间同步到PLC + /// + private void SetPLCDateTime() + { + DateTime SAVETIME = DateTime.Now; + + if ((SAVETIME.Hour.ToString() == "16" && SAVETIME.Minute == 00 && WriteDateTimeFlag == false) || (ProgramGetData.dsZhanDateTime.Tables[Station.ZCID].Rows[0]["TongBuFlag"].ToString() == "同步")) //到每日23:40 同步时间 + { + try + { + ushort[] DateData = getTimeData(); + master.WriteSingleRegister(380, DateData[0]); + master.WriteSingleRegister(381, DateData[1]); + master.WriteSingleRegister(382, DateData[2]); + master.WriteSingleRegister(383, DateData[3]); + + master.WriteSingleRegister(384, 1); + master.WriteSingleRegister(386, 1); + + ProgramGetData.dsZhanDateTime.Tables[Station.ZCID].Rows[0]["TongBuTime"] = SAVETIME; + ProgramGetData.dsZhanDateTime.Tables[Station.ZCID].Rows[0]["TongBuFlag"] = "成功"; + WriteDateTimeFlag = true; + } + catch (SystemException error) + { + if (error.Message != null) + { + ProgramGetData.strAppend(DateTime.Now.ToString() + "------" + Station.ZCName + Station.ZCID + "时间同步失败!"); + } + } + } + + + if (SAVETIME.Hour.ToString() != "16" && SAVETIME.Minute != 00) // 同步时间标志位false + { + WriteDateTimeFlag = false; + } + + + + } + /// + /// 读取局域网站场PLC的时间 + /// + /// + private string getPLCDateTime() + { + //读取站场PLC的系统时间 + ushort[] plc_DateTime = master.ReadHoldingRegisters(16, 4); + + string plc_Year = plc_DateTime[0].ToString("x4"); + string plc_Month = plc_DateTime[1].ToString("x4"); + string plc_Minute = plc_DateTime[2].ToString("x4"); + string plc_Second = plc_DateTime[3].ToString("x4"); + string plcDatetime = plc_Year + "-" + plc_Month.Substring(0, 2) + "-" + plc_Month.Substring(2, 2) + " " + plc_Minute.Substring(0, 2) + ":" + plc_Minute.Substring(2, 2) + ":" + plc_Second;//.Substring(0, 2);// +plc_Second.Substring(2, 2); + return plcDatetime; + } + + /// + /// 将日期时间转换为Ushort类型数组 + /// + /// + private ushort[] getTimeData() + { + + ushort[] data = new ushort[4]; + DateTime now = new DateTime(); + now = DateTime.Now; + string str = ""; + str = now.Year.ToString(); + int num4 = Convert.ToInt16(str.Substring(0, 1)); + int num5 = Convert.ToInt16(str.Substring(1, 1)); + int num6 = Convert.ToInt16(str.Substring(2, 1)); + int num7 = Convert.ToInt16(str.Substring(3, 1)); + data[0] = (ushort)((((((num4 * 0x10) * 0x10) * 0x10) + ((num5 * 0x10) * 0x10)) + (num6 * 0x10)) + num7); + string str3 = ""; + if (now.Month < 10) + { + str3 = str3 + "0" + now.Month.ToString(); + } + else + { + str3 = str3 + now.Month.ToString(); + } + if (now.Day < 10) + { + str3 = str3 + "0" + now.Day.ToString(); + } + else + { + str3 = str3 + now.Day.ToString(); + } + str = str3; + num4 = Convert.ToInt16(str.Substring(0, 1)); + num5 = Convert.ToInt16(str.Substring(1, 1)); + num6 = Convert.ToInt16(str.Substring(2, 1)); + num7 = Convert.ToInt16(str.Substring(3, 1)); + data[1] = (ushort)((((((num4 * 0x10) * 0x10) * 0x10) + ((num5 * 0x10) * 0x10)) + (num6 * 0x10)) + num7); + string str4 = ""; + if (now.Hour < 10) + { + str4 = str4 + "0" + now.Hour.ToString(); + } + else + { + str4 = str4 + now.Hour.ToString(); + } + if (now.Minute < 10) + { + str4 = str4 + "0" + now.Minute.ToString(); + } + else + { + str4 = str4 + now.Minute.ToString(); + } + str = str4; + num4 = Convert.ToInt16(str.Substring(0, 1)); + num5 = Convert.ToInt16(str.Substring(1, 1)); + num6 = Convert.ToInt16(str.Substring(2, 1)); + num7 = Convert.ToInt16(str.Substring(3, 1)); + data[2] = (ushort)((((((num4 * 0x10) * 0x10) * 0x10) + ((num5 * 0x10) * 0x10)) + (num6 * 0x10)) + num7); + string str5 = ""; + if (now.Second < 10) + { + str5 = str5 + "000" + now.Second.ToString(); + } + else + { + str5 = str5 + "00" + now.Second.ToString(); + } + str = str5; + num4 = Convert.ToInt16(str.Substring(0, 1)); + num5 = Convert.ToInt16(str.Substring(1, 1)); + num6 = Convert.ToInt16(str.Substring(2, 1)); + num7 = Convert.ToInt16(str.Substring(3, 1)); + data[3] = (ushort)((((((num4 * 0x10) * 0x10) * 0x10) + ((num5 * 0x10) * 0x10)) + (num6 * 0x10)) + num7); + + return data; + + } + #endregion + + + + + } +} diff --git a/ConsoleGetPLCData/CS/GetDataThread.cs b/ConsoleGetPLCData/CS/GetDataThread.cs new file mode 100644 index 0000000..8819be8 --- /dev/null +++ b/ConsoleGetPLCData/CS/GetDataThread.cs @@ -0,0 +1,1409 @@ +using GetData_PLC; +using Modbus.Device; +using System; +using System.Collections.Generic; +using System.Data; +using System.Linq; +using System.Net; +using System.Net.Sockets; +using System.Text; +using System.Threading; +using System.Threading.Tasks; + +namespace ConsoleGetPLCData.CS +{ + + public class StateObject + { + // Client socket. + public Socket workSocket = null; + // Size of receive buffer. + public const int BufferSize = 1024; + // Receive buffer. + public byte[] buffer = new byte[BufferSize]; + // Received data string. + public StringBuilder sb = new StringBuilder(); + } + + class GetDataThread + { + + stStation Station = new stStation(); + private ModbusIpMaster master; + private TcpClient client; + private bool WriteDateTimeFlag; + public static ManualResetEvent allDone = new ManualResetEvent(false); + + DataTable dtToday_Flow = new DataTable(); //今日流量总累计 表格 + DataTable dtYesToday_FLOW = new DataTable();//昨日流量总累计 表格 + //private bool readFlag; //读取盘古积算仪 昨日 今日累积量标志 + bool SaveFlag; //保存盘古积算仪 总累计量标志 + DataRow[] drDataTemp;//GPRS PLC设备采集上来的数据临时存放,再赋值 + + static int intTimes = 0; + + ///构造函数 初始化 + public GetDataThread(stStation strZhan) + { + Station = strZhan; + } + + /// + /// 线程入口函数 + /// + public void GetPLCData() + { + + ProgramGetData.strAppend(DateTime.Now.ToString() + "------" + "开始采集" + Station.ZCName + "数据"); + + if (Station.NetTYPE == "0") + { + GetDataByNet(); + } + + if (Station.NetTYPE == "1") + { + //if (Station.MeterTYPE != "0") + //{ + GetDataByGPRS_YB();//异步通信 + + //} + //else + //{ + //GetDataByGPRS_TB();//同步通信 + //} + } + } + + + + #region 局域网采集功能 + /// + /// 局域网获取PLC的数据 + /// + private void GetDataByNet() + { + + while (true) + { + using (client = new TcpClient()) + { + try + { + client.Connect(Station.ip, Station.port); + master = ModbusIpMaster.CreateIp(client); + int JldNum = ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows.Count; + + } + catch (SystemException err) + { + if (err.Message != null) + { + // string strZCIDtemp[]=Station.ZCID.Split ('_'); + // if (strZCIDtemp .Length >1) + //{ + + //} + // else + // { + int JldNum = ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows.Count; + + //} + + + for (int i = 0; i < ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows.Count; i++) //PLC计量点读取循环 循环数由主程序建立该站的实时数据表中的记录数决定 + { + //故障赋值 + //TranData.netError(ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows[i]); + + } + + foreach (DataRow dr in ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows) + { + TranData.netError(dr); + + } + ProgramGetData.strAppend(DateTime.Now.ToString() + "------" + Station.ZCName + Station.ZCID + "网络连接故障!"); + + + } + } + try + { + int JldNum = ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows.Count; + + ProgramGetData.dsZhanDateTime.Tables[Station.ZCID].Rows[0]["PLCTime"] = getPLCDateTime(); //获取PLC时间 + SetPLCDateTime(); //同步PLC时间 + + //PLC计量点读取循环 循环数由主程序建立该站的实时数据表中的记录数决定 + foreach (DataRow dr in ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows) + { + int _jldID = 0; + try + { + _jldID = int.Parse(dr["jld_id"].ToString()); + } + catch (Exception ex) + { + + } + DataRow[] drPars = ProgramGetData.dsPparameter.Tables[Station.ZCID].Select("jld_id='" + _jldID.ToString() + "'"); + //判断是否读取计量点参数 + if (dr["readparflag"].ToString() == "1") + { + ushort[] ParWord = master.ReadHoldingRegisters(Convert.ToUInt16((int)(24360 + (240 * _jldID))), 60); + drPars[0].ItemArray = TranData.GetPLCPar_Net(drPars[0], ParWord, Station.MeterTYPE).ItemArray; + dr["readparflag"] = "0"; + drPars[0]["ReadTime"] = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); + } + //采集实时计量数据 + ushort[] Word = master.ReadHoldingRegisters(Convert.ToUInt16((int)(400 + (20 * _jldID))), 20); + //解析数据 根据设备类型解析 + dr.ItemArray = TranData.GetDataTran_Net(dr, Word, Station.MeterTYPE).ItemArray; + //读取计算脉冲仪表的工况流量或雷诺数 + string strPlusNum = ""; + + try + { + + + if (dr["MeterTYPE"].ToString() == "脉冲") + { + //采集脉冲数 + ushort[] PlusNum = master.ReadHoldingRegisters(Convert.ToUInt16((int)(5000 + (80 * _jldID))), 4); + //采集K系数 + ushort[] PlusK = master.ReadHoldingRegisters(Convert.ToUInt16((int)(2600 + (30 * _jldID))), 4); + string ssgkll = TranData.GetFlowGK(PlusNum, PlusK, out strPlusNum); + dr["SSGKLL"] = ssgkll; + string strCxXx = drPars[0]["CLXX"].ToString(); + string strCxSx = drPars[0]["CLSX"].ToString(); + dr["CXFlag"] = TranData.GetCxFlag(ssgkll, strCxXx, strCxSx); + + } + + + + dr["JLD_NAME"] = drPars[0]["JLD_NAME"]; + if (dr["MeterTYPE"].ToString() == "脉冲") dr["CY"] = strPlusNum; + //差压式流量计则计算雷诺数 + if (dr["MeterTYPE"].ToString() != "脉冲") + { + string strXdmd = drPars[0]["Gr"].ToString(); + string strGj = drPars[0]["gj"].ToString(); + float sngDlnd = 19768.8f; + string strQn = dr["SSL"].ToString(); + if (strQn == "") strQn = "0"; + if (strXdmd == "") strXdmd = "0"; + + if (Station.ZCID == "4708") + { + + + } + + if (strGj != "") + { + dr["SSGKLL"] = (1615.7238 * Convert.ToSingle(strQn) * Convert.ToSingle(strXdmd) / Convert.ToSingle(strGj)).ToString("#.#"); + } + dr["CXFlag"] = TranData.GetCxFlag(dr["CY"].ToString()); + + + } + } + catch (Exception ex) + { + + } + } + } + catch (Exception ex) + { + if (ex.Message != null) + { + ProgramGetData.strAppend(DateTime.Now.ToString() + "------" + Station.ZCName + Station.ZCID + "计量点 " + "读取寄存器错误!"); + continue; + } + } + Thread.Sleep(Station.readDiffTime); + + } + } + + } + /// + /// 将服务器的时间同步到PLC + /// + private void SetPLCDateTime() + { + DateTime SAVETIME = DateTime.Now; + + if ((SAVETIME.Hour.ToString() == "16" && SAVETIME.Minute == 00 && WriteDateTimeFlag == false) || (ProgramGetData.dsZhanDateTime.Tables[Station.ZCID].Rows[0]["TongBuFlag"].ToString() == "同步")) //到每日23:40 同步时间 + { + try + { + ushort[] DateData = getTimeData(); + master.WriteSingleRegister(380, DateData[0]); + master.WriteSingleRegister(381, DateData[1]); + master.WriteSingleRegister(382, DateData[2]); + master.WriteSingleRegister(383, DateData[3]); + + master.WriteSingleRegister(384, 1); + master.WriteSingleRegister(386, 1); + + ProgramGetData.dsZhanDateTime.Tables[Station.ZCID].Rows[0]["TongBuTime"] = SAVETIME; + ProgramGetData.dsZhanDateTime.Tables[Station.ZCID].Rows[0]["TongBuFlag"] = "成功"; + WriteDateTimeFlag = true; + } + catch (SystemException error) + { + if (error.Message != null) + { + ProgramGetData.strAppend(DateTime.Now.ToString() + "------" + Station.ZCName + Station.ZCID + "时间同步失败!"); + } + } + } + + + if (SAVETIME.Hour.ToString() != "16" && SAVETIME.Minute != 00) // 同步时间标志位false + { + WriteDateTimeFlag = false; + } + + + + } + /// + /// 读取局域网站场PLC的时间 + /// + /// + private string getPLCDateTime() + { + //读取站场PLC的系统时间 + ushort[] plc_DateTime = master.ReadHoldingRegisters(16, 4); + + string plc_Year = plc_DateTime[0].ToString("x4"); + string plc_Month = plc_DateTime[1].ToString("x4"); + string plc_Minute = plc_DateTime[2].ToString("x4"); + string plc_Second = plc_DateTime[3].ToString("x4"); + string plcDatetime = plc_Year + "-" + plc_Month.Substring(0, 2) + "-" + plc_Month.Substring(2, 2) + " " + plc_Minute.Substring(0, 2) + ":" + plc_Minute.Substring(2, 2) + ":" + plc_Second;//.Substring(0, 2);// +plc_Second.Substring(2, 2); + return plcDatetime; + } + + /// + /// 将日期时间转换为Ushort类型数组 + /// + /// + private ushort[] getTimeData() + { + + ushort[] data = new ushort[4]; + DateTime now = new DateTime(); + now = DateTime.Now; + string str = ""; + str = now.Year.ToString(); + int num4 = Convert.ToInt16(str.Substring(0, 1)); + int num5 = Convert.ToInt16(str.Substring(1, 1)); + int num6 = Convert.ToInt16(str.Substring(2, 1)); + int num7 = Convert.ToInt16(str.Substring(3, 1)); + data[0] = (ushort)((((((num4 * 0x10) * 0x10) * 0x10) + ((num5 * 0x10) * 0x10)) + (num6 * 0x10)) + num7); + string str3 = ""; + if (now.Month < 10) + { + str3 = str3 + "0" + now.Month.ToString(); + } + else + { + str3 = str3 + now.Month.ToString(); + } + if (now.Day < 10) + { + str3 = str3 + "0" + now.Day.ToString(); + } + else + { + str3 = str3 + now.Day.ToString(); + } + str = str3; + num4 = Convert.ToInt16(str.Substring(0, 1)); + num5 = Convert.ToInt16(str.Substring(1, 1)); + num6 = Convert.ToInt16(str.Substring(2, 1)); + num7 = Convert.ToInt16(str.Substring(3, 1)); + data[1] = (ushort)((((((num4 * 0x10) * 0x10) * 0x10) + ((num5 * 0x10) * 0x10)) + (num6 * 0x10)) + num7); + string str4 = ""; + if (now.Hour < 10) + { + str4 = str4 + "0" + now.Hour.ToString(); + } + else + { + str4 = str4 + now.Hour.ToString(); + } + if (now.Minute < 10) + { + str4 = str4 + "0" + now.Minute.ToString(); + } + else + { + str4 = str4 + now.Minute.ToString(); + } + str = str4; + num4 = Convert.ToInt16(str.Substring(0, 1)); + num5 = Convert.ToInt16(str.Substring(1, 1)); + num6 = Convert.ToInt16(str.Substring(2, 1)); + num7 = Convert.ToInt16(str.Substring(3, 1)); + data[2] = (ushort)((((((num4 * 0x10) * 0x10) * 0x10) + ((num5 * 0x10) * 0x10)) + (num6 * 0x10)) + num7); + string str5 = ""; + if (now.Second < 10) + { + str5 = str5 + "000" + now.Second.ToString(); + } + else + { + str5 = str5 + "00" + now.Second.ToString(); + } + str = str5; + num4 = Convert.ToInt16(str.Substring(0, 1)); + num5 = Convert.ToInt16(str.Substring(1, 1)); + num6 = Convert.ToInt16(str.Substring(2, 1)); + num7 = Convert.ToInt16(str.Substring(3, 1)); + data[3] = (ushort)((((((num4 * 0x10) * 0x10) * 0x10) + ((num5 * 0x10) * 0x10)) + (num6 * 0x10)) + num7); + + return data; + + } + #endregion + + + + + + #region ----------------------同步通讯 + ///////// + ///////// 施耐德PLC不带地址的计量点用同步采集,以区分不同计量点 + ///////// + ///////// + + //////private void GetDataByGPRS_TB() + //////{ + ////// try + ////// { + ////// //当点击开始监听的时候 在服务器端创建一个负责监IP地址跟端口号的Socket + ////// Socket socketWatch = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); + ////// IPAddress ip = IPAddress.Parse(Station.ip); + ////// //IPAddress ip = IPAddress.Parse("127.0.0.1"); + ////// //创建端口号对象 + ////// IPEndPoint point = new IPEndPoint(ip, Station.port); + ////// //监听 + ////// socketWatch.Bind(point); + ////// ProgramGetData.strAppend(DateTime.Now.ToString() + "------" + Station.ZCName + "监听成功!"); + ////// socketWatch.Listen(10); + + + ////// Thread th = new Thread(ListenTB); + ////// th.IsBackground = true; + ////// th.Start(socketWatch); + + + + ////// } + ////// catch + ////// { } + + //////} + + //////Socket socketSendTB; + + + ///////// + ///////// 服务器端不停的接受客户端发送过来的消息 + ///////// + ///////// + //////void Recive(object o) + //////{ + ////// Socket socketSend = o as Socket; + + ////// try + ////// { + ////// byte[] SendByte = new byte[8]; + ////// int ReciveTimes = 0; + ////// while (true) + ////// { + ////// int intJldNum = ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows.Count; + ////// foreach (DataRow dr in ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows) + ////// { + + ////// //PLC_JLDID = i; + ////// //Console.WriteLine("读取" + ZcName + "计量点" +PLC_JLDID.ToString()+ "数据"); + ////// string strJLD_Name = dr["JLD_NAME"].ToString(); + ////// int _jldID = Convert.ToInt16(dr["jld_id"].ToString()); + ////// SendByte = TranData.Modbus_ReadData(1, 3, 400 + _jldID * 20, 20); + ////// socketSend.Send(SendByte); + ////// Thread.Sleep(1000); + ////// int dataNum; + ////// byte[] ReciveByte = new byte[1024]; + ////// dataNum = socketSend.Receive(ReciveByte); + ////// int bufferLength = ReciveByte.Length; + ////// dataNum = ReciveByte[2]; + ////// if (dataNum == 40) + ////// { + ////// dr.ItemArray = TranData.GetDataTran_GPRS(dr, ReciveByte, Station.MeterTYPE).ItemArray; + ////// dr["JLD_NAME"] = strJLD_Name; + ////// if (Station.MeterTYPE == "脉冲") + ////// { + ////// string ssgkll = dr["SSGKLL"].ToString(); + ////// //判断工况是否超限 + ////// try + ////// { + ////// if (ssgkll != "") + ////// { + ////// string strCxXx = dr["CLXX"].ToString(); + ////// string strCxSx = dr["CLSX"].ToString(); + ////// dr["CXFlag"] = TranData.GetCxFlag(ssgkll, strCxXx, strCxSx); + ////// } + ////// } + ////// catch { } + ////// } + ////// else + ////// { + ////// //判断差压是否超限 + ////// try + ////// { + ////// dr["CXFlag"] = TranData.GetCxFlag(dr["CY"].ToString()); + ////// } + ////// catch { } + ////// } + + ////// } + ////// else + ////// { + ////// socketSend.Receive(ReciveByte); + ////// break; + ////// //ProgramGetData.dsJLDataRealTime.Tables[ZCID].Rows[i].ItemArray = TranData.netError(ProgramGetData.dsJLDataRealTime.Tables[ZCID].Rows[i]).ItemArray; + ////// //ProgramGetData.dsJLDataRealTime.Tables[ZCID].Rows[i]["JLD_NAME"] = ProgramGetData.dsPparameter.Tables[ZCID].Rows[i]["JLD_NAME"]; + + ////// } + ////// } + + + ////// ReciveTimes = ReciveTimes + 1; + + ////// if (DateTime.Now.Hour == 23 && DateTime.Now.Minute == 59) + ////// { + ////// Thread.Sleep(2000); + ////// } + ////// else + ////// { + ////// if (ReciveTimes > 3) //头四次 采集时间短 + ////// { + ////// ReciveTimes = 4; + ////// Thread.Sleep(Station.readDiffTime); + + ////// } + ////// else + ////// { + ////// Thread.Sleep(2000); + + ////// } + + ////// } + ////// } + ////// } + + ////// catch + ////// { } + + //////} + ///////// + ///////// 同步通讯监听 + ///////// + ///////// + //////private void ListenTB(object o) + //////{ + ////// Socket socketWatch = o as Socket; + ////// //等待客户端的连接 并且创建一个负责通信的Socket + ////// while (true) + ////// { + + ////// try + ////// { + ////// try + ////// { + ////// //负责跟客户端通信的Socket + ////// socketSendTB = socketWatch.Accept(); + ////// ProgramGetData.strAppend(DateTime.Now.ToString() + "------" + Station.ZCName + "连接成功!"); + + ////// //开启 一个新线程不停的接受客户端发送过来的消息 + ////// Thread th = new Thread(Recive); + ////// th.IsBackground = true; + ////// th.Start(socketSendTB); + ////// } + ////// catch + ////// { } + ////// } + ////// catch + ////// { } + ////// Thread.Sleep(1000); + ////// } + //////} + #endregion + #region ---------------------异步通讯 + /// + /// 带地址的计量点设备,采用异步通信方式 + /// + private void GetDataByGPRS_YB() + { + try + { + //当点击开始监听的时候 在服务器端创建一个负责监IP地址跟端口号的Socket + Socket socketWatch = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); + IPAddress ip = IPAddress.Parse(Station.ip); + //IPAddress ip = IPAddress.Parse("127.0.0.1"); + //创建端口号对象 + IPEndPoint point = new IPEndPoint(ip, Station.port); + //监听 + socketWatch.Bind(point); + socketWatch.Listen(10); + ProgramGetData.strAppend(DateTime.Now.ToString() + "------" + Station.ZCName + "监听成功!"); + + Thread th = new Thread(Listen); + th.IsBackground = true; + th.Start(socketWatch); + //socketWatch.BeginAccept(new AsyncCallback(AcceptCallback), socketWatch); + + } + catch (Exception ex) + { + ProgramGetData.strAppend(DateTime.Now.ToString() + "------" + Station.ZCName + ex.Message); + + } + + + } + + /// + /// 等待客户端的连接 并且创建与之通信用的Socket + /// + /// + void Listen(object o) + { + Socket socketWatch = o as Socket; + //等待客户端的连接 并且创建一个负责通信的Socket + //while (true) + { + try + { + //开始一个一步操作接受一个连接尝试 + socketWatch.BeginAccept(new AsyncCallback(AcceptCallback), socketWatch); + //ProgramGetData.strAppend(DateTime.Now.ToString() + "------" + Station.ZCName + "连接成功!"); + //开启 一个新线程不停的接受客户端发送过来的消息 + } + catch + { } + Thread.Sleep(1000); + } + } + /// + /// 异步通信回调函数 + /// + /// + public void AcceptCallback(IAsyncResult ar) + { + //allDone.Set(); + Socket socketSend = (Socket)ar.AsyncState; + Socket socketRecive = socketSend.EndAccept(ar); + StateObject state = new StateObject(); + state.workSocket = socketRecive; + + if (Station.MeterTYPE == "1" || Station.MeterTYPE == "5") + { + readTodayYesTerdayQL(); + } + if (Station.MeterTYPE == "0") //PLC赋值 定义一个数组 暂存 采集上来的所有计量点的数据,再一并赋值给数据集jldID 和ID转换 + { + int jldMax = ProgramGetData.dsJLDataRealTime.Tables[this.Station.ZCID].Rows.Count; + int jld_IDMax = Convert.ToInt16(ProgramGetData.dsJLDataRealTime.Tables[this.Station.ZCID].Rows[jldMax - 1]["jld_id"]); + + if (jld_IDMax == 0) + { + drDataTemp = new DataRow[1]; + + } + if (jld_IDMax >= 1) + { + drDataTemp = new DataRow[3]; + + } + if (jld_IDMax >= 3) + { + drDataTemp = new DataRow[6]; + + } + if (jld_IDMax >= 6) + { + drDataTemp = new DataRow[10]; + + } + if (jld_IDMax >= 10) + { + drDataTemp = new DataRow[15]; + + } + if (jld_IDMax >= 15) + { + drDataTemp = new DataRow[21]; + + } + for (int i = 0; i < drDataTemp.Length; i++) + { + DataRow dr = ProgramGetData.dsJLDataRealTime.Tables[this.Station.ZCID].NewRow(); + drDataTemp[i] = dr; + drDataTemp[i]["jld_id"] = i; + drDataTemp[i]["STATION_NAME"] = Station.ZCName; + } + } + while (true) + { + + try + { + + byte[] SendByte = new byte[8]; + Console.WriteLine(DateTime.Now.ToString() + "------" + Station.ZCName + "正在采集......!"); + switch (Station.MeterTYPE) + { + case "0": //施耐德PLC 异步通讯 采集计量点数目变化 来判断采集的是哪一个计量点的数据 + + //读取PLC的时钟 + SendByte = TranData.Modbus_ReadData(1, 3, 16, 4); + + + for (int i = 0; i < drDataTemp.Length; i++) //计量点读取循环 循环数由主程序建立该站的实时数据表中的记录数决定 + { + if (i == 0) //第一次发一个计量点命令 jldID=0 + { + SendByte = TranData.Modbus_ReadData(1, 3, 400 + i * 20, 20); + } + if (i == 1) //第二次发2个计量点命令 jldID=1,2 + { + SendByte = TranData.Modbus_ReadData(1, 3, 400 + i * 20, 40); + i = 2; + } + + if (i == 3) //第三次发3个计量点命令 jldID=3,4,5 + { + SendByte = TranData.Modbus_ReadData(1, 3, 400 + i * 20, 60); + i = 5; + } + if (i == 6) //第4次发4个计量点命令 jldID=6,7,8,9 + { + SendByte = TranData.Modbus_ReadData(1, 3, 400 + i * 20, 80); + i = 9; + } + + if (i == 10) //第5次发5个计量点命令 jldID=10,11,12,13,14 + { + SendByte = TranData.Modbus_ReadData(1, 3, 400 + i * 20, 100); + i = 14; + } + + if (i == 15) //第5次发5个计量点命令 jldID=15,16,17,18,19,20 + { + SendByte = TranData.Modbus_ReadData(1, 3, 400 + i * 20, 120); + i = 20; + } + socketRecive.Send(SendByte); + socketRecive.BeginReceive(state.buffer, 0, StateObject.BufferSize, 0, new AsyncCallback(ReadCallback_PLC), state); + Thread.Sleep(1000); + } + + break; + case "1": //盘古积算仪 + for (int i = 0; i < ProgramGetData.dsJLDataRealTime.Tables[this.Station.ZCID].Rows.Count; i++) //计量点读取循环 循环数由主程序建立该站的实时数据表中的记录数决定 + { + int _jldID = int.Parse(ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows[i]["jld_id"].ToString()); + SendByte = TranData.Modbus_ReadData(_jldID + 1, 3, 0, 16); + socketRecive.Send(SendByte); + Thread.Sleep(1000); + socketRecive.BeginReceive(state.buffer, 0, StateObject.BufferSize, 0, new AsyncCallback(ReadCallback_PG), state); + + if ((DateTime.Now.Hour == 0 & DateTime.Now.Minute == 0 & DateTime.Now.Second == 10)) //过了零点存取累计总量,然后读取昨日累计总量 + { + SaveFlag = true; + } + + if (SaveFlag) + { + SaveTable(0); + readTodayYesTerdayQL(); + //Console.WriteLine("存数据库成功" + readFlag.ToString() + timeNow.ToString() + "--" + (SbType == "2" & (timeNow.Hour == 20 & timeNow.Minute == 45 & timeNow.Second > 10) & readFlag == false).ToString ()); + SaveFlag = false; + } + + } + break; + case "2": //103 + for (int i = 0; i < ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows.Count; i++) //计量点读取循环 循环数由主程序建立该站的实时数据表中的记录数决定 + { + int _jldID = int.Parse(ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows[i]["jld_id"].ToString()); + SendByte = TranData.Modbus_ReadData(_jldID + 1, 3, 7102, 22); + socketRecive.Send(SendByte); + Thread.Sleep(1000); + socketRecive.BeginReceive(state.buffer, 0, StateObject.BufferSize, 0, new AsyncCallback(ReadCallback_103), state); + } + + break; + case "3": + break; + case "4": + for (int i = 0; i < ProgramGetData.dsPparameter.Tables[Station.ZCID].Rows.Count; i++) //计量点读取循环 循环数由主程序建立该站的实时数据表中的记录数决定 + { + int _jldID = int.Parse(ProgramGetData.dsPparameter.Tables[Station.ZCID].Rows[i]["jld_id"].ToString()); + SendByte = TranData.Modbus_ReadData(_jldID + 1, 3, 511, 15); + socketRecive.Send(SendByte); + string strMessage = ""; + for (int j = 0; j < 8; j++) + { + strMessage = strMessage + " " + SendByte[j].ToString(); + } + Thread.Sleep(2000); + socketRecive.BeginReceive(state.buffer, 0, StateObject.BufferSize, 0, new AsyncCallback(ReadCallback_CSB), state); + + } + break; + + + case "5": + for (int i = 0; i < ProgramGetData.dsJLDataRealTime.Tables[this.Station.ZCID].Rows.Count; i++) //计量点读取循环 循环数由主程序建立该站的实时数据表中的记录数决定 + { + int _jldID = int.Parse(ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows[i]["jld_id"].ToString()); + SendByte = TranData.Modbus_ReadData(_jldID + 1, 3, 4, 30); + socketRecive.Send(SendByte); + Thread.Sleep(1000); + socketRecive.BeginReceive(state.buffer, 0, StateObject.BufferSize, 0, new AsyncCallback(ReadCallback_WZFX), state); + + if ((DateTime.Now.Hour == 0 & DateTime.Now.Minute == 0 & DateTime.Now.Second == 10)) //过了零点存取累计总量,然后读取昨日累计总量 + { + SaveFlag = true; + } + + if (SaveFlag) + { + SaveTable(0); + readTodayYesTerdayQL(); + //Console.WriteLine("存数据库成功" + readFlag.ToString() + timeNow.ToString() + "--" + (SbType == "2" & (timeNow.Hour == 20 & timeNow.Minute == 45 & timeNow.Second > 10) & readFlag == false).ToString ()); + SaveFlag = false; + } + + } + break; + + + case "6": //腾空PLC + for (int i = 0; i < ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows.Count; i++) //计量点读取循环 循环数由主程序建立该站的实时数据表中的记录数决定 + { + int _jldID = int.Parse(ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows[i]["jld_id"].ToString()); + SendByte = TranData.Modbus_ReadData(_jldID + 1, 3, 10100, 22); + socketRecive.Send(SendByte); + Thread.Sleep(1000); + socketRecive.BeginReceive(state.buffer, 0, StateObject.BufferSize, 0, new AsyncCallback(ReadCallback_103), state); + } + + break; + + + default: + break; + } + + } + catch (Exception ex) + { + } + + if (DateTime.Now.Hour == 23 && DateTime.Now.Minute == 59) + { + Thread.Sleep(2000); + + } + else + { + if (intTimes > 5) + { + intTimes = 5; + Thread.Sleep(Station.readDiffTime); + } + else + { + Thread.Sleep(3000); + } + } + + intTimes = intTimes + 1; + } + } + /// + /// 解析GPRS读取的PLC数据 + /// + /// + + public void ReadCallback_PLC(IAsyncResult ar) + { + try + { + StateObject state = (StateObject)ar.AsyncState; + Socket socketRecive = state.workSocket; + //从远程设备读取数据 + int bytesRead = socketRecive.EndReceive(ar); + int dataNum; + dataNum = state.buffer[2]; + + + try + { + if (dataNum == 8) //读取的时钟 + { + ProgramGetData.dsZhanDateTime.Tables[Station.ZCID].Rows[0]["PLCTime"] = getPLCDateTime(state.buffer); //获取PLC时间 + } + } + catch + { } + + try + { + if (dataNum == 40) // 代表1个计量点 jldID=0 + { + + DataRow[] drJldS = { drDataTemp[0] }; + DataRow[] drData = TranData.GetDataTran_GPRS(drJldS, state.buffer, Station.MeterTYPE); + drDataTemp[0].ItemArray = drData[0].ItemArray; + + } + } + catch + { } + + try + { + if (dataNum == 80) // 代表2个计量点 jldID=1,2 + { + DataRow[] drJldS = { drDataTemp[1], drDataTemp[2] }; + DataRow[] drData = TranData.GetDataTran_GPRS(drJldS, state.buffer, Station.MeterTYPE); + for (int i = 1; i < 3; i++) + { + drDataTemp[i].ItemArray = drData[i - 1].ItemArray; + } + } + } + catch + { } + try + { + if (dataNum == 120) // 代表3个计量点 jldID=3,4,5 + { + DataRow[] drJldS = { drDataTemp[3], drDataTemp[4], drDataTemp[5] }; + DataRow[] drData = TranData.GetDataTran_GPRS(drJldS, state.buffer, Station.MeterTYPE); + for (int i = 3; i < 6; i++) + { + drDataTemp[i].ItemArray = drData[i - 3].ItemArray; + } + } + } + catch + { } + try + { + if (dataNum == 160) // 代表4个计量点 jldID=6,7,8,9 + { + DataRow[] drJldS = { drDataTemp[6], drDataTemp[7], drDataTemp[8], drDataTemp[9] }; + DataRow[] drData = TranData.GetDataTran_GPRS(drJldS, state.buffer, Station.MeterTYPE); + for (int i = 6; i < 10; i++) + { + drDataTemp[i].ItemArray = drData[i - 6].ItemArray; + } + } + } + catch + { } + try + { + if (dataNum == 200) // 代表5个计量点 jldID=10,11,12,13,14 + { + DataRow[] drJldS = { drDataTemp[10], drDataTemp[11], drDataTemp[12], drDataTemp[13], drDataTemp[14] }; + DataRow[] drData = TranData.GetDataTran_GPRS(drJldS, state.buffer, Station.MeterTYPE); + for (int i = 10; i < 15; i++) + { + drDataTemp[i].ItemArray = drData[i - 10].ItemArray; + } + } + } + catch + { } + try + { + if (dataNum == 240) // 代表6个计量点 jldID=15,16,17,18,19,20 + { + DataRow[] drJldS = { drDataTemp[15], drDataTemp[16], drDataTemp[17], drDataTemp[18], drDataTemp[19], drDataTemp[20] }; + DataRow[] drData = TranData.GetDataTran_GPRS(drJldS, state.buffer, Station.MeterTYPE); + for (int i = 15; i < 21; i++) + { + drDataTemp[i].ItemArray = drData[i - 15].ItemArray; + } + } + } + catch + { } + + + // + foreach (DataRow dr in ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows) + { + int jld_id = Convert.ToInt16(dr["jld_ID"]); + + ProgramGetData.strAppend("前\t" + DateTime.Now.ToString() + "\t" + strPrint(dr), Station.ZCName); + + //温度 + dr["WD"] = drDataTemp[jld_id]["WD"]; + //压力 + dr["YL"] = drDataTemp[jld_id]["YL"]; + //差压 + dr["CY"] = drDataTemp[jld_id]["CY"]; + //瞬时量 + dr["SSL"] = drDataTemp[jld_id]["SSL"]; + //今日量 + dr["JRL"] = drDataTemp[jld_id]["JRL"]; + //昨日量 + dr["ZRL"] = drDataTemp[jld_id]["ZRL"]; + //累计量 + dr["LJL"] = drDataTemp[jld_id]["LJL"]; + //本月量 + dr["BYL"] = drDataTemp[jld_id]["BYL"]; + //上月量 + dr["SYL"] = drDataTemp[jld_id]["SYL"]; + //今日时间 + dr["JRSJ"] = drDataTemp[jld_id]["JRSJ"]; + //昨日时间 + dr["ZRSJ"] = drDataTemp[jld_id]["ZRSJ"]; + //仪表状态 + dr["YBZT"] = drDataTemp[jld_id]["YBZT"]; + + try + { + if (dr["MeterTYPE"].ToString() == "脉冲") + { + //计算工况流量 + Single sngQN; + Single sngTf; + float sngPf; + if (dr["SSL"].ToString() != "") + { + sngQN = Convert.ToSingle(dr["SSL"].ToString()); + } + else + { + sngQN = 0; + } + if (dr["WD"].ToString() != "") + { + sngTf = float.Parse(dr["WD"].ToString()); + sngTf = sngTf + 273.15f; + } + else + { + sngTf = 0; + } + + if (dr["YL"].ToString() != "" && dr["YL"].ToString() != "0") + { + sngPf = Convert.ToSingle(dr["YL"].ToString()); + Single sngFz2; + + if (sngPf > 0.1 && sngPf < 0.5) + { + sngFz2 = 0.999f - 0.008f * (sngPf - 0.1f) / (0.5f - sngPf); + + } + else + { + if (sngPf < 0.1) sngFz2 = 0.998f; + if (sngPf > 0.5) sngFz2 = 0.988f; + } + + dr["SSGKLL"] = (sngQN * sngTf * 0.101325 * 0.998 / 293.15 / sngPf / 24).ToString("#.#"); + + } + else + { + dr["SSGKLL"] = 0; + } + + + + DataRow[] drS = ProgramGetData.dsPparameter.Tables[Station.ZCID].Select("jld_id='" + jld_id + "'"); + string strXx = drS[0]["CLXX"].ToString(); + string strSx = drS[0]["CLSX"].ToString(); + + dr["CXFLAG"] = TranData.GetCxFlag(dr["SSGKLL"].ToString(), strXx, strSx); + if (jld_id == 3) + { + + } + } + else + { + dr["CXFLAG"] = TranData.GetCxFlag(dr["CY"].ToString()); + } + + } + catch + { + + + } + + + ProgramGetData.strAppend("后\t" + DateTime.Now.ToString() + "\t" + strPrint(dr), Station.ZCName); + + //Console.WriteLine(jld_id.ToString() + "_" + dr["SSL"] + "_" + dr["CY"]); + } + + socketRecive.BeginReceive(state.buffer, 0, StateObject.BufferSize, 0, new AsyncCallback(ReadCallback_PLC), state); + + } + catch (Exception ex) + { + } + } + + /// + /// 对于没在PLC的设备,每次采集程序启动读取存储的昨日量 今日量的总累积量 + /// + private void readTodayYesTerdayQL() + { + DateTime _Date = DateTime.Now.AddDays(-1); + _Date = DateTime.Parse(_Date.ToString("yyyy-MM-dd")); + string strSQL = SQL_Strings.strSQL_Read_Today_YesterDay_Flow + " where STATION_ID='" + Station.ZCID + "' and RTIME=to_date('" + _Date.ToShortDateString() + "', 'yyyy-mm-dd') order by JLD_ID"; + dtToday_Flow = OracleLink.ExecuteDataTable(strSQL, "DTJK", ""); + strSQL = SQL_Strings.strSQL_Read_Today_YesterDay_Flow + " where STATION_ID='" + Station.ZCID + "' and RTIME=to_date('" + _Date.AddDays(-1).ToShortDateString() + "', 'yyyy-mm-dd') order by JLD_ID"; + dtYesToday_FLOW = OracleLink.ExecuteDataTable(strSQL, "DTJK", ""); + } + /// + /// 保存昨日量、今日量到数据库 + /// + /// + private void SaveTable(int intSaveFlag) + { + SaveFlag = true; + Thread.Sleep(2000); + string strSQL = SQL_Strings.strSQL_Read_Today_YesterDay_Flow + " where STATION_ID='" + Station.ZCID + "'"; + OracleLink.SaveDataTable(strSQL, dtToday_Flow, "DTJK", ""); + } + + /// + /// 获取并解析福鑫的数据 + /// + /// + public void ReadCallback_WZFX(IAsyncResult ar) + { + try + { + StateObject state = (StateObject)ar.AsyncState; + Socket socketRecive = state.workSocket; + //从远程设备读取数据 + int bytesRead = socketRecive.EndReceive(ar); + int dataNum; + dataNum = state.buffer[2]; + int jldID = state.buffer[0] - 1; + if (dataNum == 60) + { + ProgramGetData.strAppend("前\t" + DateTime.Now.ToString() + "\t" + strPrint(ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows[jldID]), Station.ZCName); + + ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows[jldID].ItemArray = TranData.GetDataTran_GPRS(ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows[jldID], state.buffer, Station.MeterTYPE).ItemArray; + ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows[jldID]["JLD_NAME"] = ProgramGetData.dsPparameter.Tables[Station.ZCID].Rows[jldID]["JLD_NAME"]; + try + { + ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows[jldID]["CXFlag"] = TranData.GetCxFlag(ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows[jldID]["SSGKLL"].ToString(), ProgramGetData.dsPparameter.Tables[Station.ZCID].Rows[jldID]["CLXX"].ToString(), ProgramGetData.dsPparameter.Tables[Station.ZCID].Rows[jldID]["CLSX"].ToString()); + } + catch { } + + ProgramGetData.dsPparameter.Tables[Station.ZCID].Rows[jldID]["Gr"] = ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows[jldID]["SYL"]; + ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows[jldID]["SYL"] = ""; + ProgramGetData.strAppend("后\t" + DateTime.Now.ToString() + "\t" + strPrint(ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows[jldID]), Station.ZCName); + + socketRecive.BeginReceive(state.buffer, 0, StateObject.BufferSize, 0, new AsyncCallback(ReadCallback_WZFX), state); + } + #region //提取昨日凌晨总累积量 计算今日量 + try + { + string strTotalFlowNow = ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows[jldID]["LJL"].ToString(); + DataRow[] drTotay; ; + drTotay = dtToday_Flow.Select("JLD_ID in( '" + jldID + "')"); + //Console.WriteLine("时间:" + DateTime.Now + "JLD_ID in( '" + jldID + "')--" + drTotay.Length.ToString() + "\n"); + if (drTotay.Length == 0) //如果今日流量记录为空 把当前的流量总量写入表格 并保存到数据库中 + { + DataRow drToday = dtToday_Flow.NewRow(); + drToday["rtime"] = DateTime.Parse(DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd")); + drToday["station_id"] = Station.ZCID; + drToday["jld_id"] = jldID; + drToday["flowtotal"] = strTotalFlowNow; + dtToday_Flow.Rows.Add(drToday); + SaveFlag = true; + } + else + { + //今日量 + ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows[jldID]["JRL"] = float.Parse(strTotalFlowNow) - float.Parse(drTotay[0]["flowtotal"].ToString()); + } + + DataRow[] drYesterday; + drYesterday = dtYesToday_FLOW.Select("JLD_ID in ('" + jldID + "')"); + //Console.WriteLine("时间:" + DateTime.Now + "JLD_ID in( '" + jldID + "')--" + drYesterday.Length.ToString() + "\n"); + if (drYesterday.Length < 1) + { + //昨日量 + ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows[jldID]["ZRL"] = ""; + } + else + { + //昨日量 + ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows[jldID]["ZRL"] = float.Parse(drTotay[0]["flowtotal"].ToString()) - float.Parse(drYesterday[0]["flowtotal"].ToString()); ; + } + + } + catch { } + + #endregion + } + catch + { + + } + } + + /// + /// 获取并解析盘古积算仪的数据 + /// + /// + public void ReadCallback_PG(IAsyncResult ar) + { + try + { + StateObject state = (StateObject)ar.AsyncState; + Socket socketRecive = state.workSocket; + //从远程设备读取数据 + int bytesRead = socketRecive.EndReceive(ar); + int dataNum; + dataNum = state.buffer[2]; + int jldID = state.buffer[0] - 1; + if (dataNum == 32) + { + ProgramGetData.strAppend("前\t" + DateTime.Now.ToString() + "\t" + strPrint(ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows[jldID]), Station.ZCName); + ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows[jldID].ItemArray = TranData.GetDataTran_GPRS(ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows[jldID], state.buffer, Station.MeterTYPE).ItemArray; + ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows[jldID]["JLD_NAME"] = ProgramGetData.dsPparameter.Tables[Station.ZCID].Rows[jldID]["JLD_NAME"]; + try + { + ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows[jldID]["CXFlag"] = TranData.GetCxFlag(ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows[jldID]["SSGKLL"].ToString(), ProgramGetData.dsPparameter.Tables[Station.ZCID].Rows[jldID]["CLXX"].ToString(), ProgramGetData.dsPparameter.Tables[Station.ZCID].Rows[jldID]["CLSX"].ToString()); + } + catch (Exception ex) + { } + + ProgramGetData.dsPparameter.Tables[Station.ZCID].Rows[jldID]["Gr"] = ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows[jldID]["SYL"]; + ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows[jldID]["SYL"] = ""; + ProgramGetData.strAppend("后\t" + DateTime.Now.ToString() + "\t" + strPrint(ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows[jldID]), Station.ZCName); + socketRecive.BeginReceive(state.buffer, 0, StateObject.BufferSize, 0, new AsyncCallback(ReadCallback_PG), state); + } + #region //提取昨日凌晨总累积量 计算今日量 + try + { + string strTotalFlowNow = ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows[jldID]["LJL"].ToString(); + DataRow[] drTotay; ; + drTotay = dtToday_Flow.Select("JLD_ID in( '" + jldID + "')"); + //Console.WriteLine("时间:" + DateTime.Now + "JLD_ID in( '" + jldID + "')--" + drTotay.Length.ToString() + "\n"); + if (drTotay.Length == 0) //如果今日流量记录为空 把当前的流量总量写入表格 并保存到数据库中 + { + DataRow drToday = dtToday_Flow.NewRow(); + drToday["rtime"] = DateTime.Parse(DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd")); + drToday["station_id"] = Station.ZCID; + drToday["jld_id"] = jldID; + drToday["flowtotal"] = strTotalFlowNow; + dtToday_Flow.Rows.Add(drToday); + SaveFlag = true; + } + else + { + //今日量 + ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows[jldID]["JRL"] = float.Parse(strTotalFlowNow) - float.Parse(drTotay[0]["flowtotal"].ToString()); + } + DataRow[] drYesterday; + drYesterday = dtYesToday_FLOW.Select("JLD_ID in ('" + jldID + "')"); + //Console.WriteLine("时间:" + DateTime.Now + "JLD_ID in( '" + jldID + "')--" + drYesterday.Length.ToString() + "\n"); + if (drYesterday.Length < 1) + { + //昨日量 + ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows[jldID]["ZRL"] = ""; + } + else + { + //昨日量 + ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows[jldID]["ZRL"] = float.Parse(drTotay[0]["flowtotal"].ToString()) - float.Parse(drYesterday[0]["flowtotal"].ToString()); ; + } + + } + catch { } + + #endregion + } + catch + { + + } + } + /// + /// 获取并解析爱知超声波的数据 + /// + /// + public void ReadCallback_CSB(IAsyncResult ar) + { + try + { + StateObject state = (StateObject)ar.AsyncState; + Socket socketRecive = state.workSocket; + //从远程设备读取数据 + int bytesRead = socketRecive.EndReceive(ar); + int dataNum; + dataNum = state.buffer[2]; + int jldID = state.buffer[0] - 1; + if (dataNum == 30) + { + ProgramGetData.strAppend("前\t" + DateTime.Now.ToString() + "\t" + strPrint(ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows[jldID]), Station.ZCName); + + ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows[jldID].ItemArray = TranData.GetDataTran_GPRS(ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows[jldID], state.buffer, Station.MeterTYPE).ItemArray; + ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows[jldID]["JLD_NAME"] = ProgramGetData.dsPparameter.Tables[Station.ZCID].Rows[jldID]["JLD_NAME"]; + try + { + ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows[jldID]["CXFlag"] = TranData.GetCxFlag(ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows[jldID]["SSGKLL"].ToString(), ProgramGetData.dsPparameter.Tables[Station.ZCID].Rows[jldID]["CLXX"].ToString(), ProgramGetData.dsPparameter.Tables[Station.ZCID].Rows[jldID]["CLSX"].ToString()); + } + catch { } + + ProgramGetData.dsPparameter.Tables[Station.ZCID].Rows[jldID]["Gr"] = ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows[jldID]["SYL"]; + ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows[jldID]["SYL"] = ""; + ProgramGetData.strAppend("后\t" + DateTime.Now.ToString() + "\t" + strPrint(ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows[jldID]), Station.ZCName); + + socketRecive.BeginReceive(state.buffer, 0, StateObject.BufferSize, 0, new AsyncCallback(ReadCallback_PG), state); + } + #region //提取昨日凌晨总累积量 计算今日量 + try + { + string strTotalFlowNow = ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows[jldID]["LJL"].ToString(); + DataRow[] drTotay; ; + drTotay = dtToday_Flow.Select("JLD_ID in( '" + jldID + "')"); + //Console.WriteLine("时间:" + DateTime.Now + "JLD_ID in( '" + jldID + "')--" + drTotay.Length.ToString() + "\n"); + if (drTotay.Length == 0) //如果今日流量记录为空 把当前的流量总量写入表格 并保存到数据库中 + { + DataRow drToday = dtToday_Flow.NewRow(); + drToday["rtime"] = DateTime.Parse(DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd")); + drToday["station_id"] = Station.ZCID; + drToday["jld_id"] = jldID; + drToday["flowtotal"] = strTotalFlowNow; + dtToday_Flow.Rows.Add(drToday); + SaveFlag = true; + } + else + { + //今日量 + ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows[jldID]["JRL"] = float.Parse(strTotalFlowNow) - float.Parse(drTotay[0]["flowtotal"].ToString()); + } + + DataRow[] drYesterday; + drYesterday = dtYesToday_FLOW.Select("JLD_ID in ('" + jldID + "')"); + //Console.WriteLine("时间:" + DateTime.Now + "JLD_ID in( '" + jldID + "')--" + drYesterday.Length.ToString() + "\n"); + if (drYesterday.Length < 1) + { + //昨日量 + ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows[jldID]["ZRL"] = ""; + } + else + { + //昨日量 + ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows[jldID]["ZRL"] = float.Parse(drTotay[0]["flowtotal"].ToString()) - float.Parse(drYesterday[0]["flowtotal"].ToString()); ; + } + + } + catch { } + + #endregion + } + catch + { + + } + } + /// + /// 获得打印数据监视字符串 + /// + /// + /// + private string strPrint(DataRow dr) + { + return dr["JLD_NAME"] + "\t瞬时量:" + dr["SSL"] + "\t温度:" + dr["WD"] + "\t压力:" + dr["YL"] + "\t累积量:" + dr["LJL"]; + } + + /// + /// 获取并解析103的数据 + /// + /// + public void ReadCallback_103(IAsyncResult ar) + { + try + { + StateObject state = (StateObject)ar.AsyncState; + Socket socketRecive = state.workSocket; + //从远程设备读取数据 + int bytesRead = socketRecive.EndReceive(ar); + int dataNum; + dataNum = state.buffer[2]; + int jldID = state.buffer[0] - 1; + if (dataNum == 44) + { + ProgramGetData.strAppend("前\t" + DateTime.Now.ToString() + "\t" + strPrint(ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows[jldID]), Station.ZCName); + ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows[jldID].ItemArray = TranData.GetDataTran_GPRS(ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows[jldID], state.buffer, Station.MeterTYPE).ItemArray; + ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows[jldID]["JLD_NAME"] = ProgramGetData.dsPparameter.Tables[Station.ZCID].Rows[jldID]["JLD_NAME"]; + socketRecive.BeginReceive(state.buffer, 0, StateObject.BufferSize, 0, new AsyncCallback(ReadCallback_103), state); + ProgramGetData.strAppend("后\t" + DateTime.Now.ToString() + "\t" + strPrint(ProgramGetData.dsJLDataRealTime.Tables[Station.ZCID].Rows[jldID]), Station.ZCName); + } + } + catch + { + } + + } + + + /// + /// 读取GPRS站场PLC的时间 + /// + /// + private string getPLCDateTime(byte[] plc_DateTime) + { + + string[] Uplc_DateTime = new string[4]; + + Uplc_DateTime[0] = plc_DateTime[4].ToString("X2") + plc_DateTime[3].ToString("X2"); + Uplc_DateTime[1] = plc_DateTime[6].ToString("X2") + plc_DateTime[5].ToString("X2"); + Uplc_DateTime[2] = plc_DateTime[8].ToString("X2") + plc_DateTime[7].ToString("X2"); + Uplc_DateTime[3] = plc_DateTime[10].ToString("X2") + plc_DateTime[9].ToString("X2"); + + string plc_Year = Uplc_DateTime[0]; + string plc_Month = Uplc_DateTime[1]; + string plc_Minute = Uplc_DateTime[2]; + string plc_Second = Uplc_DateTime[3]; + string plcDatetime = plc_Year + "-" + plc_Month.Substring(0, 2) + "-" + plc_Month.Substring(2, 2) + " " + plc_Minute.Substring(0, 2) + ":" + plc_Minute.Substring(2, 2) + ":" + plc_Second;//.Substring(0, 2);// +plc_Second.Substring(2, 2); + return plcDatetime; + } + + #endregion + + + + + } +} \ No newline at end of file diff --git a/ConsoleGetPLCData/CS/NetEvent.cs b/ConsoleGetPLCData/CS/NetEvent.cs new file mode 100644 index 0000000..e13944c --- /dev/null +++ b/ConsoleGetPLCData/CS/NetEvent.cs @@ -0,0 +1,58 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace ConsoleGetPLCData.CS +{ + public delegate void NetEvent(object sender, NetEventArgs e); + + /// + /// 服务器程序的事件参数,包含了激发该事件的会话对象 + /// + public class NetEventArgs : EventArgs + { + + #region 字段 + + /// + /// 客户端与服务器之间的会话 + /// + private Session _client; + + #endregion + + #region 构造函数 + /// + /// 构造函数 + /// + /// 客户端会话 + public NetEventArgs(Session client) + { + if (null == client) + { + throw (new ArgumentNullException()); + } + + _client = client; + } + #endregion + + #region 属性 + + /// + /// 获得激发该事件的会话对象 + /// + public Session Client + { + get + { + return _client; + } + + } + + #endregion + + } +} diff --git a/ConsoleGetPLCData/CS/ScCal.cs b/ConsoleGetPLCData/CS/ScCal.cs new file mode 100644 index 0000000..4312404 --- /dev/null +++ b/ConsoleGetPLCData/CS/ScCal.cs @@ -0,0 +1,282 @@ + +using System; +using System.Collections.Generic; +using System.Data; +using System.Linq; +using System.Text; +using System.Threading; +using GetData_PLC; +namespace ConsoleGetPLCData.CS +{ + class ScCal + { + + string strError=""; + public void ZhanXianScCal() //通过selcet语句从 oracle 输差配置读取站内所有输差类型 ,再分系统计算输差 + { + Thread .Sleep (2000); + ProgramGetData.strAppend( DateTime.Now.ToString() + "------开始计算输差"); + while (true) + { + + DataSet dsSsData = new DataSet(); ; + DataTable dtTotal = new DataTable(); + dtTotal.TableName = "TotalData"; + try + { + dsSsData.ReadXml(ProgramGetData.strDataPath + "SsData.xml", XmlReadMode.ReadSchema); + for (int i = 0; i < dsSsData.Tables.Count; i++) //构建出实时数据总表 + { + dtTotal.Merge(dsSsData.Tables[i].Copy()); + } + dtTotal.WriteXml(ProgramGetData.strDataPath + "TotalData.xml",XmlWriteMode .WriteSchema); + + + + if (dtTotal.Rows.Count > 0) + { + + for (int i = 0; i < ProgramGetData.dtScRealTime.Rows.Count; i++) + { + Thread.Sleep(10); //暂停10毫秒 释放资源 + + ScDataCal(ProgramGetData.dtScRealTime.Rows[i], dtTotal); + } + ProgramGetData.dtScRealTime.WriteXml(ProgramGetData.strDataPath + "ScData.xml", XmlWriteMode.WriteSchema); + + DataRow[] drScRealTime = ProgramGetData.dtScRealTime.Select("sctype='管线输差'"); //写线输差xml + + DataTable dtScTemp = ProgramGetData.dtScRealTime.Clone(); + for (int mm = 0; mm < drScRealTime.Length; mm++) + { + DataRow dr = dtScTemp.NewRow(); + dr.ItemArray = drScRealTime[mm].ItemArray; + dtScTemp.Rows.Add(dr); + } + dtScTemp.WriteXml(ProgramGetData.strDataPath + "\\ScData\\XIANSC.xml", XmlWriteMode.WriteSchema); + + + drScRealTime = ProgramGetData.dtScRealTime.Select("sctype='站场输差'"); //写线输差xml + + dtScTemp = ProgramGetData.dtScRealTime.Clone(); + for (int mm = 0; mm < drScRealTime.Length; mm++) + { + DataRow dr = dtScTemp.NewRow(); + dr.ItemArray = drScRealTime[mm].ItemArray; + dtScTemp.Rows.Add(dr); + } + dtScTemp.WriteXml(ProgramGetData.strDataPath + "\\ScData\\ZHANSC.xml", XmlWriteMode.WriteSchema); + + drScRealTime = ProgramGetData.dtScRealTime.Select("sctype='自定义输差'"); //写线输差xml + + dtScTemp = ProgramGetData.dtScRealTime.Clone(); + for (int mm = 0; mm < drScRealTime.Length; mm++) + { + DataRow dr = dtScTemp.NewRow(); + dr.ItemArray = drScRealTime[mm].ItemArray; + dtScTemp.Rows.Add(dr); + } + dtScTemp.WriteXml(ProgramGetData.strDataPath + "\\ScData\\ZDYSC.xml", XmlWriteMode.WriteSchema); + + //drScRealTime = ProgramGetData.dtScRealTime.Select("sctype='管线输差' and DEPT_ID='14'"); //巡线一支队 + //dtScTemp = ProgramGetData.dtScRealTime.Clone(); + //for (int mm = 0; mm < drScRealTime.Length; mm++) + //{ + // DataRow dr = dtScTemp.NewRow(); + // dr.ItemArray = drScRealTime[mm].ItemArray; + // dtScTemp.Rows.Add(dr); + //} + //dtScTemp.WriteXml(ProgramGetData.strDataPath + "\\ScData\\14.xml", XmlWriteMode.WriteSchema); + + } + } + + catch (SystemException err) + { + if (err.Message != null) + { + ProgramGetData.strAppend( DateTime.Now.ToString() + "------输差计算读取总表格xml时 文件占用"); + } + } + Thread.Sleep(1799); + } + } + + + private void ScDataCal(DataRow _DataRow, DataTable dtTotalData) + { + + try + { + + //_ScDataTable.Rows.Clear(); + + string strInJLD = _DataRow["IN_JLD_ID"].ToString(); + string strOutJLD = _DataRow["OUT_JLD_ID"].ToString(); + string strScType = _DataRow["SCTYPE"].ToString(); + string Express = ""; + + Single SsSumIn = 0; + Single JrSumIn = 0; + Single ZrSumIn = 0; + Single SsSumOut = 0; + Single JrSumOut = 0; + Single ZrSumOut = 0; + string strIn_P = ""; + string strOut_P = ""; + + if (strInJLD != "") + { + Express = "ID in(" + strInJLD + ")"; + DataRow[] SumRow = dtTotalData.Select(Express); + if (SumRow.Length >= 0) + { + SsSumIn = 0; JrSumIn = 0; ZrSumIn = 0; + SsSumIn = sumColumon(SumRow, "SSL"); + JrSumIn = sumColumon(SumRow, "JRL"); + ZrSumIn = sumColumon(SumRow, "ZRL"); + if (strScType == "管线输差") + { + for (int m = 0; m < SumRow.Length; m++) + { + strIn_P = strIn_P + SumRow[m]["YL"].ToString() + "★"; + + } + if (strIn_P.Length > 0) + strIn_P = strIn_P.Substring(0, strIn_P.Length - 1); + } + } + else + { + SsSumIn = 0; JrSumIn = 0; ZrSumIn = 0; strIn_P = ""; + } + } + + if (strOutJLD != "") + { + + Express = "ID in(" + strOutJLD + ")"; + DataRow[] SumRow = dtTotalData.Select(Express); + if (SumRow.Length >= 0) + { + SsSumOut = 0; JrSumOut = 0; ZrSumOut = 0; + SsSumOut = sumColumon(SumRow, "SSL"); + JrSumOut = sumColumon(SumRow, "JRL"); + ZrSumOut = sumColumon(SumRow, "ZRL"); + if (strScType == "管线输差") + { + for (int m = 0; m < SumRow.Length; m++) + { + strOut_P = strOut_P + SumRow[m]["YL"].ToString() + "★"; + } + if (strOut_P.Length > 0) + strOut_P = strOut_P.Substring(0, strOut_P.Length - 1); + + } + } + else + { + SsSumOut = 0; JrSumOut = 0; ZrSumOut = 0; strOut_P = ""; + + } + } + + _DataRow["IN_P"] =strIn_P ; + _DataRow["OUT_P"] = strOut_P ; + + _DataRow["SsInTotal"] = SsSumIn.ToString("0.####"); + _DataRow["SsOutTotal"] = SsSumOut.ToString("0.###"); + _DataRow["SsSc"] = (SsSumOut - SsSumIn).ToString("0.####"); + if (SsSumIn != 0) + { + _DataRow["SsPer"] = ((SsSumOut - SsSumIn) * 100 / SsSumIn).ToString("0.##") + "%"; + } + else + { + if (SsSumOut == 0) + { + _DataRow["SsSc"] = "0"; + _DataRow["SsPer"] = "0%"; + } + else + { + _DataRow["SsPer"] = "故障"; + } + + } + + _DataRow["JrInTotal"] = JrSumIn.ToString("0.####"); + _DataRow["JrOutTotal"] = JrSumOut.ToString("0.###"); + _DataRow["JrSc"] = (JrSumOut - JrSumIn).ToString("0.####"); + if (JrSumIn != 0) + { + _DataRow["JrPer"] = ((JrSumOut - JrSumIn) * 100 / JrSumIn).ToString("0.##") + "%"; + } + else + { + if (JrSumOut == 0) + { + _DataRow["JrSc"] = "0"; + _DataRow["JrPer"] = "0%"; + } + else + { + _DataRow["JrPer"] = "故障"; + } + + } + + _DataRow["ZrInTotal"] = ZrSumIn.ToString("0.####"); + _DataRow["ZrOutTotal"] = ZrSumOut.ToString("0.###"); + _DataRow["ZrSc"] = (ZrSumOut - ZrSumIn).ToString("0.####"); + if (ZrSumIn != 0) + { + _DataRow["ZrPer"] = ((ZrSumOut - ZrSumIn) * 100 / ZrSumIn).ToString("0.##") + "%"; + } + else + { + if (ZrSumOut == 0) + { + _DataRow["ZrSc"] = "0"; + _DataRow["ZrPer"] = "0%"; + } + else + { + _DataRow["ZrPer"] = "故障"; + } + + } + + } + catch (SystemException err) + { + if (err.Message != null) + { + ProgramGetData . strAppend( DateTime.Now.ToString() + "------" + "输差计算时出错"); + + } + } + } + private float sumColumon(DataRow[] _DataRow, string _ColumonName) + { + float FlowSum = 0; + + foreach (DataRow Dr1 in _DataRow) + { + try + { + FlowSum = FlowSum + float.Parse(Dr1[_ColumonName].ToString()); + } + catch (SystemException err) + { + if (err.Message != "") + { + continue; + } + } + } + return FlowSum; + + } + } +} diff --git a/ConsoleGetPLCData/CS/Session.cs b/ConsoleGetPLCData/CS/Session.cs new file mode 100644 index 0000000..9cc3f80 --- /dev/null +++ b/ConsoleGetPLCData/CS/Session.cs @@ -0,0 +1,287 @@ +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.Linq; +using System.Net.Sockets; +using System.Text; + +namespace ConsoleGetPLCData.CS +{ + /// + /// 客户端与服务器之间的会话类 + /// + /// 说明: + /// 会话类包含远程通讯端的状态,这些状态包括Socket,报文内容, + /// 客户端退出的类型(正常关闭,强制退出两种类型) + /// + public class Session : ICloneable + { + #region 字段 + + /// + /// 会话ID + /// + private SessionId _id; + + /// + /// 客户端发送到服务器的报文 + /// 注意:在有些情况下报文可能只是报文的片断而不完整 + /// + private string _datagram; + + /// + /// 客户端发送到服务器的以字节形式的报文, + /// 注意:在有些情况下报文可能只是报文的片断而不完整 + /// + private byte[] _databuffer; + + /// + /// 客户端的Socket + /// + private Socket _cliSock; + + /// + /// 客户端的退出类型 + /// + private ExitType _exitType; + + /// + /// 退出类型枚举 + /// + public enum ExitType + { + NormalExit, + ExceptionExit + }; + + #endregion + + #region 属性 + + /// + /// 返回会话的ID + /// + public SessionId ID + { + get + { + return _id; + } + } + + /// + /// 存取会话的报文 + /// + public string Datagram + { + get + { + return _datagram; + } + set + { + _datagram = value; + } + } + + + /// + /// 存取以二进制形式存放会话的报文 + /// + public byte[] DataBuffer + { + get + { + return _databuffer; + } + set + { + _databuffer = value; + } + } + + /// + /// 获得与客户端会话关联的Socket对象 + /// + public Socket ClientSocket + { + get + { + return _cliSock; + } + } + + /// + /// 存取客户端的退出方式 + /// + public ExitType TypeOfExit + { + get + { + return _exitType; + } + + set + { + _exitType = value; + } + } + + #endregion + + #region 方法 + + /// + /// 使用Socket对象的Handle值作为HashCode,它具有良好的线性特征. + /// + /// + public override int GetHashCode() + { + return (int)_cliSock.Handle; + } + + /// + /// 返回两个Session是否代表同一个客户端 + /// + /// + /// + public override bool Equals(object obj) + { + Session rightObj = (Session)obj; + + return (int)_cliSock.Handle == (int)rightObj.ClientSocket.Handle; + + } + + /// + /// 重载ToString()方法,返回Session对象的特征 + /// + /// + public override string ToString() + { + string result = string.Format("Session:{0},IP:{1}", + _id, _cliSock.RemoteEndPoint.ToString()); + + //result.C + return result; + } + + /// + /// 构造函数 + /// + /// 会话使用的Socket连接 + public Session(Socket cliSock) + { + Debug.Assert(cliSock != null); + + _cliSock = cliSock; + + _id = new SessionId((int)cliSock.Handle); + } + + /// + /// 关闭会话 + /// + public void Close() + { + Debug.Assert(_cliSock != null); + + //关闭数据的接受和发送 + _cliSock.Shutdown(SocketShutdown.Both); + + //清理资源 + _cliSock.Close(); + } + + #endregion + + #region ICloneable 成员 + + object System.ICloneable.Clone() + { + Session newSession = new Session(_cliSock); + newSession.Datagram = _datagram; + newSession.TypeOfExit = _exitType; + + return newSession; + } + + #endregion + } + + + /// + /// 唯一的标志一个Session,辅助Session对象在Hash表中完成特定功能 + /// + public class SessionId + { + /// + /// 与Session对象的Socket对象的Handle值相同,必须用这个值来初始化它 + /// + private int _id; + + /// + /// 返回ID值 + /// + public int ID + { + get + { + return _id; + } + } + + /// + /// 构造函数 + /// + /// Socket的Handle值 + public SessionId(int id) + { + _id = id; + } + + /// + /// 重载.为了符合Hashtable键值特征 + /// + /// + /// + public override bool Equals(object obj) + { + if (obj != null) + { + SessionId right = (SessionId)obj; + + return _id == right._id; + } + else if (this == null) + { + return true; + } + else + { + return false; + } + + } + + /// + /// 重载.为了符合Hashtable键值特征 + /// + /// + public override int GetHashCode() + { + return _id; + } + + /// + /// 重载,为了方便显示输出 + /// + /// + public override string ToString() + { + return _id.ToString(); + } + + } + +} diff --git a/ConsoleGetPLCData/CS/TranData.cs b/ConsoleGetPLCData/CS/TranData.cs new file mode 100644 index 0000000..94c7ad4 --- /dev/null +++ b/ConsoleGetPLCData/CS/TranData.cs @@ -0,0 +1,1107 @@ +using System; +using System.Collections.Generic; +using System.Data; +using System.Linq; +using System.Text; + +namespace ConsoleGetPLCData.CS +{ + public class TranData + { + /// + /// 局域网Modbus通讯协议解析 + /// + /// 存储数据的datarow + /// ushort 数组 + /// 设备类型 + /// + public static DataRow GetDataTran_Net(DataRow drData, ushort[] usWord, string SbType) + { + switch (SbType) + { + case "0": //局域网解析施耐德PLC数据 + string[] tempWord; + tempWord = new string[20]; + + for (int j = 0; j < 20; j++) //计量点数据读取上来之后,将20个寄存器的数据解析出来赋给数据行变量,添加到表中 + { + tempWord[j] = usWord[j].ToString("x4"); + } + + //解析数据为明文----------------------------------------------------- + //温度 + drData["wd"] = (getInt16(tempWord[13].ToString()) / 10.0).ToString("0.##"); + //压力 + drData["yl"] = (getInt16(tempWord[12].ToString()) / 1000.0).ToString("0.###"); + //差压 + drData["CY"] = (getInt16(tempWord[14].ToString()) / 100.0).ToString("0.###"); + if (drData["CY"].Equals("0")) + { + drData["CY"] = "-"; + } + //瞬时量 + drData["SSL"] = (getUInt32(tempWord[0].ToString(), tempWord[1].ToString()) / 100 * 24).ToString(); + //今日量 + drData["JRL"] = (getUInt32(tempWord[2].ToString(), tempWord[3].ToString())).ToString(); + //昨日量 + drData["ZRL"] = (getUInt32(tempWord[4].ToString(), tempWord[5].ToString())).ToString(); + //累计量 + drData["LJL"] = (getUInt32(tempWord[10].ToString(), tempWord[11].ToString()) / 10000.0).ToString(); + //本月量 + drData["BYL"] = (getUInt32(tempWord[6].ToString(), tempWord[7].ToString()) / 10000.0).ToString(); + //上月量 + drData["SYL"] = (getUInt32(tempWord[8].ToString(), tempWord[9].ToString()) / 10000.0).ToString(); + //今日时间 + drData["JRSJ"] = (getInt16(tempWord[16].ToString())).ToString(); + //昨日时间 + drData["ZRSJ"] = (getInt16(tempWord[17].ToString())).ToString(); + + //仪表状态 + + switch (getInt16(tempWord[15].ToString().Substring(2, 2)).ToString()) + { + + case "0": + drData["YBZT"] = "停表"; + break; + case "1": + drData["YBZT"] = "运行"; + break; + case "2": + drData["YBZT"] = "补偿"; + break; + case "3": + drData["YBZT"] = "测试"; + break; + } + + + break; + default: + break; + } + + return drData; + + } + + /// + /// GPRS模块通讯 数据解析 + /// + /// 存储数据的datarow + /// ushort 数组 + /// 设备类型 + /// + public static DataRow GetDataTran_GPRS(DataRow drData, byte[] bufTemp, string SbType) + { + int dataNum = bufTemp[2]; + byte[] CrcNum; + string strPrint = ""; + switch (SbType) + { + #region //施耐德PLC + case "0": //施耐德PLC + CrcNum = GetCRC16(bufTemp, dataNum + 3, true); + if (bufTemp[1] == 0x3 && CrcNum[0] == bufTemp[dataNum + 3] && CrcNum[1] == bufTemp[dataNum + 4]) + { + string[] strData = new string[20]; + for (int i = 0; i < 20; i++) + { + strData[i] = bufTemp[i * 2 + 3].ToString("X2") + bufTemp[i * 2 + 1 + 3].ToString("X2"); + } + + //解析数据为明文----------------------------------------------------- + //温度 + drData["WD"] = (getInt16(strData[13].ToString()) / 10.0).ToString("0.##"); + //压力 + drData["YL"] = (getInt16(strData[12].ToString()) / 1000.0).ToString("0.###"); + //差压 + drData["CY"] = (getInt16(strData[14].ToString()) / 100.0).ToString("0.###"); + //if (ProgramReadPLC.SsDataDs.Tables[ZCID].Rows[i][4].Equals("0")) + // { + // ProgramReadPLC.SsDataDs.Tables[ZCID].Rows[i][4] = ""; + // } + + //瞬时量 + drData["SSL"] = (getUInt32(strData[0].ToString(), strData[1].ToString()) / 100 * 24).ToString(); + //今日量 + drData["JRL"] = (getUInt32(strData[2].ToString(), strData[3].ToString())).ToString(); + //昨日量 + drData["ZRL"] = (getUInt32(strData[4].ToString(), strData[5].ToString())).ToString(); + //累计量 + drData["LJL"] = (getUInt32(strData[10].ToString(), strData[11].ToString()) / 10000.0).ToString(); + //本月量 + drData["BYL"] = (getUInt32(strData[6].ToString(), strData[7].ToString()) / 10000.0).ToString(); + //上月量 + drData["SYL"] = (getUInt32(strData[8].ToString(), strData[9].ToString()) / 10000.0).ToString(); + //今日时间 + drData["JRSJ"] = (getInt16(strData[16].ToString())).ToString(); + //昨日时间 + drData["ZRSJ"] = (getInt16(strData[17].ToString())).ToString(); + //仪表状态 + drData["YBZT"] = "运行"; + + } + break; + #endregion + #region //盘古积算仪 + + case "1": + CrcNum = GetCRC16(bufTemp, dataNum + 3, true); + string[] jldData = new string[8]; + if (bufTemp[1] == 0x3 && CrcNum[0] == bufTemp[dataNum + 3] && CrcNum[1] == bufTemp[dataNum + 4]) + { + string[] strData = new string[32]; + for (int i = 0; i < 32; i++) + { + strData[i] = bufTemp[i + 3].ToString("X2"); + } + jldData[0] = getsingle(strData[2] + strData[3] + strData[0] + strData[1]).ToString("f1"); //瞬时流量 + jldData[1] = getsingle(strData[6] + strData[7] + strData[4] + strData[5]).ToString(); //差压//频率 + jldData[2] = getsingle(strData[10] + strData[11] + strData[8] + strData[9]).ToString("f2"); //温度 + jldData[3] = getsingle(strData[14] + strData[15] + strData[12] + strData[13]).ToString("f3"); //压力 + jldData[4] = getint(strData[18] + strData[19] + strData[16] + strData[17]).ToString(); //总累计流量 + jldData[7] = getsingle(strData[30] + strData[31] + strData[28] + strData[29]).ToString("f4"); //密度 + } + try + { + + + //温度 + drData["WD"] = jldData[2]; + //压力 + drData["YL"] = jldData[3]; + //差压 + try + { + drData["CY"] = string.Format("{0:F}", jldData[1]); + } + catch (Exception ex) + { + + } + //if (ProgramReadPLC.SsDataDs.Tables[ZCID].Rows[i][4].Equals("0")) + //{ + // ProgramReadPLC.SsDataDs.Tables[ZCID].Rows[i][4] = ""; + //} + + //累计量 + drData["LJL"] = jldData[4]; + try + { + //瞬时量 + drData["SSL"] = (float.Parse(jldData[0]) * 24).ToString("#.#"); + if (drData["SSL"].ToString() == "") drData["SSL"] = "0"; + } + catch (Exception ex) + { + drData["SSL"] = "0"; + } + + + + //本月量 + drData["BYL"] = ""; + //上月量 + drData["SYL"] = jldData[7]; + //今日时间 + drData["JRSJ"] = ""; + //昨日时间 + drData["ZRSJ"] = ""; + //仪表状态 + drData["YBZT"] = "运行"; + //计算工况流量 + Single sngQN; + Single sngTf; + float sngPf; + if (jldData[0] != "") + { + sngQN = Convert.ToSingle(jldData[0]); + } + else + { + sngQN = 0; + } + if (jldData[2] != "") + { + sngTf = float.Parse(jldData[2]); + sngTf = sngTf + 273.15f; + } + else + { + sngTf = 0; + } + + if (jldData[3] != "" && jldData[3] != "0") + { + sngPf = Convert.ToSingle(jldData[3]); + Single sngFz2; + + if (sngPf > 0.1 && sngPf < 0.5) + { + sngFz2 = 0.999f - 0.008f * (sngPf - 0.1f) / (0.5f - sngPf); + + } + else + { + if (sngPf < 0.1) sngFz2 = 0.998f; + if (sngPf > 0.5) sngFz2 = 0.988f; + } + + drData["SSGKLL"] = (sngQN * sngTf * 0.101325 * 0.998 / 293.15 / sngPf).ToString("#.#"); + + } + else + { + drData["SSGKLL"] = 0; + } + } + catch (Exception) + { + + + } + //try + //{ + // drData["CXFlag"] = GetCxFlag(drData["SSGKLL"].ToString(), drData["CLXX"].ToString(), drData["CLSX"].ToString()); + + //} + //catch (Exception) + //{ + + + //} + + //ProgramGetData.strAppend("中\t" + DateTime.Now.ToString() + "\t" + drData["JLD_NAME"] + "\t 瞬时量:" + jldData[0] + "\t温度:" + jldData[2] + "\t压力:" + jldData[2] + "\t累积量:" + jldData[4], drData["STATION_NAME"].ToString()); + + break; + #endregion + #region Floboss103 + case "2": + + CrcNum = GetCRC16(bufTemp, dataNum + 3, true); + + jldData = new string[11]; + + if (bufTemp[1] == 0x3 && CrcNum[0] == bufTemp[dataNum + 3] && CrcNum[1] == bufTemp[dataNum + 4]) + { + string[] strData = new string[44]; + for (int i = 0; i < 44; i++) + { + strData[i] = bufTemp[i + 3].ToString("X2"); + } + // 0B 03 2C 50 87 43 9B 12 D9 41 96 C6 5E 42 7B 12 D9 41 96 C2 AA 44 22 9B 5F 44 4D 33 33 42 C7 2E EF 43 E7 26 31 BD 68 28 69 BE BE 87 D5 C3 77 1A A8 + //jldData[0] = getsingle("439B5087").ToString(); + jldData[0] = (getsingle(strData[2] + strData[3] + strData[0] + strData[1]) * 1000).ToString(); + jldData[1] = (getsingle(strData[6] + strData[7] + strData[4] + strData[5]) * 1000).ToString(); + jldData[2] = (getsingle(strData[10] + strData[11] + strData[8] + strData[9]) * 1000).ToString(); + jldData[3] = (getsingle(strData[14] + strData[15] + strData[12] + strData[12]) / 10).ToString(); + jldData[4] = (getsingle(strData[18] + strData[19] + strData[16] + strData[16]) / 10).ToString(); + jldData[5] = (getsingle(strData[22] + strData[23] + strData[20] + strData[20]) / 10).ToString(); + jldData[6] = getsingle(strData[26] + strData[27] + strData[24] + strData[24]).ToString(); + jldData[7] = getsingle(strData[30] + strData[31] + strData[28] + strData[28]).ToString(); + jldData[8] = getsingle(strData[34] + strData[35] + strData[32] + strData[32]).ToString("f2"); + jldData[9] = (getsingle(strData[38] + strData[39] + strData[36] + strData[36]) / 1000).ToString("f3"); + jldData[10] = getsingle(strData[42] + strData[43] + strData[40] + strData[40]).ToString("f2"); + + + } + //ProgramGetData.strAppend("中\t" + DateTime.Now.ToString() + "\t" + drData["JLD_NAME"] + "\t 瞬时量:" + jldData[0] + "\t温度:" + jldData[10] + "\t压力:" + jldData[9] + "\t累积量:" + jldData[5], drData["STATION_NAME"].ToString()); + + //温度 + drData["WD"] = jldData[10]; + //压力 + drData["YL"] = jldData[9]; + //差压 + drData["CY"] = jldData[8]; + //瞬时量 + drData["SSL"] = jldData[0]; + //今日量 + drData["JRL"] = jldData[1]; + //昨日量 + drData["ZRL"] = jldData[2]; + //累计量 + drData["LJL"] = jldData[5]; + //本月量 + drData["BYL"] = jldData[3]; + //上月量 + drData["SYL"] = jldData[4]; + //今日时间 + drData["JRSJ"] = jldData[6].Substring(0, jldData[6].IndexOf('.')); + //昨日时间 + drData["ZRSJ"] = jldData[7]; + //仪表状态 + drData["YBZT"] = "运行"; + + drData["CXFlag"] = GetCxFlag(jldData[8]); + + + break; + #endregion + #region tengkongPLC + case "6": + + CrcNum = GetCRC16(bufTemp, dataNum + 3, true); + + jldData = new string[11]; + + if (bufTemp[1] == 0x3 && CrcNum[0] == bufTemp[dataNum + 3] && CrcNum[1] == bufTemp[dataNum + 4]) + { + string[] strData = new string[44]; + for (int i = 0; i < 44; i++) + { + strData[i] = bufTemp[i + 3].ToString("X2"); + } + // 0B 03 2C 50 87 43 9B 12 D9 41 96 C6 5E 42 7B 12 D9 41 96 C2 AA 44 22 9B 5F 44 4D 33 33 42 C7 2E EF 43 E7 26 31 BD 68 28 69 BE BE 87 D5 C3 77 1A A8 + //jldData[0] = getsingle("439B5087").ToString(); + jldData[0] = (getsingle(strData[2] + strData[3] + strData[0] + strData[1]) * 1000).ToString(); + jldData[1] = (getsingle(strData[6] + strData[7] + strData[4] + strData[5]) * 1000).ToString(); + jldData[2] = (getsingle(strData[10] + strData[11] + strData[8] + strData[9]) * 1000).ToString(); + jldData[3] = (getsingle(strData[14] + strData[15] + strData[12] + strData[12]) / 10).ToString(); + jldData[4] = (getsingle(strData[18] + strData[19] + strData[16] + strData[16]) / 10).ToString(); + jldData[5] = (getsingle(strData[22] + strData[23] + strData[20] + strData[20]) / 10).ToString(); + jldData[6] = getsingle(strData[26] + strData[27] + strData[24] + strData[24]).ToString(); + jldData[7] = getsingle(strData[30] + strData[31] + strData[28] + strData[28]).ToString(); + jldData[8] = getsingle(strData[34] + strData[35] + strData[32] + strData[32]).ToString("f2"); + jldData[9] = (getsingle(strData[38] + strData[39] + strData[36] + strData[36]) / 1000).ToString("f3"); + jldData[10] = getsingle(strData[42] + strData[43] + strData[40] + strData[40]).ToString("f2"); + + + } + //ProgramGetData.strAppend("中\t" + DateTime.Now.ToString() + "\t" + drData["JLD_NAME"] + "\t 瞬时量:" + jldData[0] + "\t温度:" + jldData[10] + "\t压力:" + jldData[9] + "\t累积量:" + jldData[5], drData["STATION_NAME"].ToString()); + + //温度 + drData["WD"] = jldData[10]; + //压力 + drData["YL"] = jldData[9]; + //差压 + drData["CY"] = jldData[8]; + //瞬时量 + drData["SSL"] = jldData[0]; + //今日量 + drData["JRL"] = jldData[1]; + //昨日量 + drData["ZRL"] = jldData[2]; + //累计量 + drData["LJL"] = jldData[5]; + //本月量 + drData["BYL"] = jldData[3]; + //上月量 + drData["SYL"] = jldData[4]; + //今日时间 + drData["JRSJ"] = jldData[6].Substring(0, jldData[6].IndexOf('.')); + //昨日时间 + drData["ZRSJ"] = jldData[7]; + //仪表状态 + drData["YBZT"] = "运行"; + + drData["CXFlag"] = GetCxFlag(jldData[8]); + + + break; + #endregion + #region 西门子PLC + case "3": + + CrcNum = GetCRC16(bufTemp, dataNum + 3, true); + if (bufTemp[1] == 0x3 && CrcNum[0] == bufTemp[dataNum + 3] && CrcNum[1] == bufTemp[dataNum + 4]) + { + string[] strData = new string[120]; + for (int i = 0; i < 120; i++) + { + strData[i] = bufTemp[i * 2 + 3].ToString("X2") + bufTemp[i * 2 + 1 + 3].ToString("X2"); + } + //解析数据为明文----------------------------------------------------- + //温度 + drData["WD"] = (getInt16(strData[13].ToString()) / 10.0).ToString("0.##"); + //压力 + drData["YL"] = (getInt16(strData[12].ToString()) / 1000.0).ToString("0.###"); + //差压 + drData["CY"] = (getInt16(strData[14].ToString()) / 100.0).ToString("0.###"); + //if (ProgramReadPLC.SsDataDs.Tables[ZCID].Rows[i][4].Equals("0")) + // { + // ProgramReadPLC.SsDataDs.Tables[ZCID].Rows[i][4] = ""; + // } + + //瞬时量 + drData["SSL"] = (getUInt32(strData[0].ToString(), strData[1].ToString()) / 100 * 24).ToString(); + //今日量 + drData["JRL"] = (getUInt32(strData[2].ToString(), strData[3].ToString())).ToString(); + //昨日量 + drData["ZRL"] = (getUInt32(strData[4].ToString(), strData[5].ToString())).ToString(); + //累计量 + drData["LJL"] = (getUInt32(strData[10].ToString(), strData[11].ToString()) / 10000.0).ToString(); + //本月量 + drData["BYL"] = (getUInt32(strData[6].ToString(), strData[7].ToString()) / 10000.0).ToString(); + //上月量 + drData["SYL"] = (getUInt32(strData[8].ToString(), strData[9].ToString()) / 10000.0).ToString(); + //今日时间 + drData["JRSJ"] = (getInt16(strData[16].ToString())).ToString(); + //昨日时间 + drData["ZRSJ"] = (getInt16(strData[17].ToString())).ToString(); + //仪表状态 + drData["YBZT"] = "运行"; + + } + + break; + + #endregion + #region 超声波流量计爱知 + case "4": + + CrcNum = GetCRC16(bufTemp, dataNum + 3, true); + + jldData = new string[11]; + + if (bufTemp[1] == 0x3 && CrcNum[0] == bufTemp[dataNum + 3] && CrcNum[1] == bufTemp[dataNum + 4]) + { + string[] strData = new string[30]; + for (int i = 0; i < 30; i++) + { + strData[i] = bufTemp[i + 3].ToString("X2"); + } + // 0B 03 2C 50 87 43 9B 12 D9 41 96 C6 5E 42 7B 12 D9 41 96 C2 AA 44 22 9B 5F 44 4D 33 33 42 C7 2E EF 43 E7 26 31 BD 68 28 69 BE BE 87 D5 C3 77 1A A8 + //jldData[0] = getsingle("439B5087").ToString(); + //瞬时工况流量 + drData["CY"] = (getInt32(strData[0] + strData[1] + strData[2] + strData[3]) / 100.0).ToString("0.###"); + //瞬时标况量 + drData["SSL"] = (getInt32(strData[4] + strData[5] + strData[6] + strData[7]) / 100.0).ToString("0.#"); + //压力 + drData["YL"] = (getInt32(strData[8] + strData[9] + strData[10] + strData[11]) / 100000.0).ToString("0.###"); + //温度 + drData["WD"] = (getInt32(strData[12] + strData[13] + strData[14] + strData[15]) / 100.0).ToString("0.#"); + //累计量 + drData["LJL"] = (getInt32(strData[20] + strData[21] + strData[22] + strData[23])/10.0).ToString(); + //jldData[5] = (getInt32(strData[20] + strData[21] + strData[22] + strData[23]) / 10).ToString(); + + + + } + + ////温度 + //drData["WD"] = jldData[10]; + ////压力 + //drData["YL"] = jldData[9]; + ////差压 + //drData["CY"] = jldData[8]; + ////瞬时量 + //drData["SSL"] = jldData[0]; + //今日量 + drData["JRL"] = ""; + //昨日量 + drData["ZRL"] = ""; + //累计量 + //drData["LJL"] = ""; + //本月量 + drData["BYL"] =""; + //上月量 + drData["SYL"] = ""; + //今日时间 + drData["JRSJ"] = ""; + //昨日时间 + drData["ZRSJ"] = ""; + //仪表状态 + drData["YBZT"] = "运行"; + + break; + + #endregion + + #region //盘古积算仪 + + case "5": + CrcNum = GetCRC16(bufTemp, dataNum + 3, true); + jldData = new string[8]; + if (bufTemp[1] == 0x3 && CrcNum[0] == bufTemp[dataNum + 3] && CrcNum[1] == bufTemp[dataNum + 4]) + { + string[] strData = new string[60]; + for (int i = 0; i < 60; i++) + { + strData[i] = bufTemp[i + 3].ToString("X2"); + } + jldData[0] = (getsingle(strData[24] + strData[25] + strData[36] + strData[27]) / 1).ToString(); //瞬时流量 + jldData[1] = (getsingle(strData[34] + strData[35] + strData[36] + strData[37]) / 1).ToString(); //差压//频率 + jldData[2] = (getsingle(strData[44] + strData[45] + strData[46] + strData[47]) / 1).ToString(); ; //温度 + jldData[3] = (getsingle(strData[48] + strData[49] + strData[50] + strData[51]) / 1000).ToString(); //压力 + jldData[4] = (getsingle(strData[16] + strData[17] + strData[18] + strData[19]) / 1).ToString(); //总累计流量 + jldData[7] = (getsingle(strData[56] + strData[57] + strData[58] + strData[59]) / 1).ToString(); //瞬时工况流量 + + + + } + try + { + + + //温度 + drData["WD"] = jldData[2]; + //压力 + drData["YL"] = jldData[3]; + //差压 + try + { + drData["CY"] = string.Format("{0:F}", jldData[1]); + } + catch (Exception ex) + { + + } + //if (ProgramReadPLC.SsDataDs.Tables[ZCID].Rows[i][4].Equals("0")) + //{ + // ProgramReadPLC.SsDataDs.Tables[ZCID].Rows[i][4] = ""; + //} + + //累计量 + drData["LJL"] = jldData[4]; + try + { + //瞬时量 + drData["SSL"] = (float.Parse(jldData[0]) * 24).ToString("#.#"); + if (drData["SSL"].ToString() == "") drData["SSL"] = "0"; + } + catch (Exception ex) + { + drData["SSL"] = "0"; + } + + + + //本月量 + drData["BYL"] = ""; + //上月量 + drData["SYL"] =""; + //今日时间 + drData["JRSJ"] = ""; + //昨日时间 + drData["ZRSJ"] = ""; + //仪表状态 + drData["YBZT"] = "运行"; + ////计算工况流量 + + drData["SSGKLL"] = jldData[7]; + //Single sngQN; + //Single sngTf; + //float sngPf; + //if (jldData[0] != "") + //{ + // sngQN = Convert.ToSingle(jldData[0]); + //} + //else + //{ + // sngQN = 0; + //} + //if (jldData[2] != "") + //{ + // sngTf = float.Parse(jldData[2]); + // sngTf = sngTf + 273.15f; + //} + //else + //{ + // sngTf = 0; + //} + + //if (jldData[3] != "" && jldData[3] != "0") + //{ + // sngPf = Convert.ToSingle(jldData[3]); + // Single sngFz2; + + // if (sngPf > 0.1 && sngPf < 0.5) + // { + // sngFz2 = 0.999f - 0.008f * (sngPf - 0.1f) / (0.5f - sngPf); + + // } + // else + // { + // if (sngPf < 0.1) sngFz2 = 0.998f; + // if (sngPf > 0.5) sngFz2 = 0.988f; + // } + + // drData["SSGKLL"] = (sngQN * sngTf * 0.101325 * 0.998 / 293.15 / sngPf).ToString("#.#"); + + //} + //else + //{ + // drData["SSGKLL"] = 0; + //} + } + catch (Exception) + { + + + } + //try + //{ + // drData["CXFlag"] = GetCxFlag(drData["SSGKLL"].ToString(), drData["CLXX"].ToString(), drData["CLSX"].ToString()); + + //} + //catch (Exception) + //{ + + + //} + + //ProgramGetData.strAppend("中\t" + DateTime.Now.ToString() + "\t" + drData["JLD_NAME"] + "\t 瞬时量:" + jldData[0] + "\t温度:" + jldData[2] + "\t压力:" + jldData[2] + "\t累积量:" + jldData[4], drData["STATION_NAME"].ToString()); + + break; + #endregion + + + } + + return drData; + + } + /// + /// GPRS模块通讯 数据解析 PLC变化的计量点个数 + /// + /// 存储数据的datarow + /// ushort 数组 + /// 设备类型 + /// + public static DataRow[] GetDataTran_GPRS(DataRow[] drData, byte[] bufTemp, string SbType) + { + int dataNum = bufTemp[2]; + byte[] CrcNum; + string strPrint = ""; + switch (SbType) + { + #region //施耐德PLC + case "0": //施耐德PLC + CrcNum = GetCRC16(bufTemp, dataNum + 3, true); + if (bufTemp[1] == 0x3 && CrcNum[0] == bufTemp[dataNum + 3] && CrcNum[1] == bufTemp[dataNum + 4]) + { + int jldNum = dataNum / 40; + string[] strData = new string[jldNum * 20]; + for (int i = 0; i < jldNum * 20; i++) + { + strData[i] = bufTemp[i * 2 + 3].ToString("X2") + bufTemp[i * 2 + 1 + 3].ToString("X2"); + } + + for (int jldID = 0; jldID < jldNum; jldID++) + { + //解析数据为明文----------------------------------------------------- + //温度 + drData[jldID]["WD"] = (getInt16(strData[13 + jldID * 20].ToString()) / 10.0).ToString("0.##"); + //压力 + drData[jldID]["YL"] = (getInt16(strData[12 + jldID * 20].ToString()) / 1000.0).ToString("0.###"); + //差压 + drData[jldID]["CY"] = (getInt16(strData[14 + jldID * 20].ToString()) / 100.0).ToString("0.###"); + //if (ProgramReadPLC.SsDataDs.Tables[ZCID].Rows[i][4].Equals("0")) + // { + // ProgramReadPLC.SsDataDs.Tables[ZCID].Rows[i][4] = ""; + // } + + //瞬时量 + drData[jldID]["SSL"] = (getUInt32(strData[0 + jldID * 20].ToString(), strData[1 + jldID * 20].ToString()) / 100 * 24).ToString(); + //今日量 + drData[jldID]["JRL"] = (getUInt32(strData[2 + jldID * 20].ToString(), strData[3 + jldID * 20].ToString())).ToString(); + //昨日量 + drData[jldID]["ZRL"] = (getUInt32(strData[4 + jldID * 20].ToString(), strData[5 + jldID * 20].ToString())).ToString(); + //累计量 + drData[jldID]["LJL"] = (getUInt32(strData[10 + jldID * 20].ToString(), strData[11 + jldID * 20].ToString()) / 10000.0).ToString(); + //本月量 + drData[jldID]["BYL"] = (getUInt32(strData[6 + jldID * 20].ToString(), strData[7 + jldID * 20].ToString()) / 10000.0).ToString(); + //上月量 + drData[jldID]["SYL"] = (getUInt32(strData[8 + jldID * 20].ToString(), strData[9 + jldID * 20].ToString()) / 10000.0).ToString(); + //今日时间 + drData[jldID]["JRSJ"] = (getInt16(strData[16 + jldID * 20].ToString())).ToString(); + //昨日时间 + drData[jldID]["ZRSJ"] = (getInt16(strData[17 + jldID * 20].ToString())).ToString(); + //仪表状态 + drData[jldID]["YBZT"] = "运行"; + + //ProgramGetData.strAppend("中\t" + DateTime.Now.ToString() + "\t" + drData[jldID]["JLD_ID"] + ":\t 瞬时量:" + (getUInt32(strData[0 + jldID * 20].ToString(), strData[1 + jldID * 20].ToString()) / 100 * 24).ToString() + // + "\t温度:" + (getInt16(strData[13 + jldID * 20].ToString()) / 10.0).ToString("0.##") + // + "\t压力:" + (getInt16(strData[12 + jldID * 20].ToString()) / 1000.0).ToString("0.###") + // + "\t累积量:" + (getUInt32(strData[10 + jldID * 20].ToString(), strData[11 + jldID * 20].ToString()) / 10000.0).ToString(), drData[jldID]["STATION_NAME"].ToString()); + + + + } + + } + break; + #endregion + } + + return drData; + + } + + /// + /// 判断脉冲仪表工况运行状态 + /// + /// 工况流量 + /// 仪表上限 + /// 仪表下限 + /// 超限级别 4 3 2 1 0 -1 -2 -3 -4 + public static string GetCxFlag(string Value, string strXx, string strSx) + { + string strCxFlag = ""; + try + { + //判断工况是否超限 + if (Value != "") + { + Single sngSSGK = Convert.ToSingle(Value); + Single sngCLXX = Convert.ToSingle(strXx); + Single sngCLSX = Convert.ToSingle(strSx); + + if (sngSSGK > 0.8 * sngCLSX) strCxFlag = "1"; + if (sngSSGK > 0.95 * sngCLSX) strCxFlag = "2"; + if (sngSSGK > sngCLSX) strCxFlag = "3"; + + if (sngSSGK >= 0.3 * sngCLSX && sngSSGK <= 0.8 * sngCLSX) strCxFlag = "0"; + + if (sngSSGK < 0.3 * sngCLSX) strCxFlag = "-1"; + if (sngSSGK < 0.1 * sngCLSX) strCxFlag = "-2"; + if (sngSSGK < sngCLXX && sngSSGK > 0) strCxFlag = "-3"; + if (sngSSGK == 0) strCxFlag = "-4"; + } + } + catch (Exception) + { + + } + return strCxFlag; + } + /// + /// 判断孔板差压运行情况是否超限 + /// + /// 差压值 + /// 超限级别 4 3 2 1 0 -1 -2 -3 -4 + public static string GetCxFlag(string Value) + { + string strCxFlag = ""; + //判断差压是否超限 + try + { + Single sngCy = 0; + if (Value != "" && Value != "-") + { + sngCy = Convert.ToSingle(Value); + } + + if (sngCy > 40) strCxFlag = "1"; + if (sngCy > 50) strCxFlag = "2"; + if (sngCy > 55) strCxFlag = "3"; + if (sngCy > 60) strCxFlag = "4"; + + if (sngCy >= 5 && sngCy <= 40) strCxFlag = "0"; + + if (sngCy < 5) strCxFlag = "-1"; + if (sngCy < 3) strCxFlag = "-2"; + if (sngCy < 1 && sngCy > 0) strCxFlag = "-3"; + if (sngCy == 0) strCxFlag = "-4"; + } + catch (Exception ex) + { + + } + + + return strCxFlag; + } + + + public static DataRow GetPLCPar_Net(DataRow drData, ushort[] usWord, string SbType) + { + string[] tempWord; + tempWord = new string[60]; + for (int j = 0; j < 60; j++) //计量点数据读取上来之后,将20个寄存器的数据解析出来赋给数据行变量,添加到表中 + { + tempWord[j] = usWord[j].ToString("x4"); + } + string[] sngPar = new string[30]; + + for (int j = 0; j < 30; j++) //计量点数据读取上来之后,将20个寄存器的数据解析出来赋给数据行变量,添加到表中 + { + if (j <= 21) + { + sngPar[j] = (getsingle(tempWord[j * 2 + 1] + tempWord[j * 2]) * 100).ToString(); + } + else + { + sngPar[j] = getsingle(tempWord[j * 2 + 1] + tempWord[j * 2]).ToString(); + } + drData[j] = sngPar[j]; + if (j == 28) + { + drData["BAK3"] = "读取成功"; + } + } + float c1bfs = float.Parse(sngPar[0]); + if (c1bfs > 7000) + { + for (int j = 0; j < 21; j++) //计量点数据读取上来之后,将20个寄存器的数据解析出来赋给数据行变量,添加到表中 + { + sngPar[j] = (Single.Parse(sngPar[j]) / 100).ToString(); + drData[j] = sngPar[j]; + } + } + return drData; + } + + public static DataRow netError(DataRow drData) + { + //温度 + drData["WD"] = ""; + //压力 + drData["YL"] = ""; + //差压 + drData["CY"] = ""; + //瞬时量 + drData["SSL"] = ""; + //今日量 + drData["JRL"] = ""; + //昨日量 + drData["ZRL"] = ""; + //累计量 + drData["LJL"] = ""; + //本月量 + drData["BYL"] = ""; + //上月量 + drData["SYL"] = ""; + //今日时间 + drData["JRSJ"] = ""; + //昨日时间 + drData["ZRSJ"] = ""; + //仪表状态 + + + drData["YBZT"] = "通讯故障"; + + return drData; + } + + public static byte[] Modbus_ReadData(int Addr, int Func, int StartAddr, int DataNum) + { + Byte[] RcvStr; + Byte[] SendStr; + SendStr = new Byte[8]; + SendStr[0] = byte.Parse(Addr.ToString()); //' ,从站号是2 + SendStr[1] = byte.Parse(Func.ToString());//' ,读多个字的命令代码 + int Hibyte = StartAddr / 256; + int LowByte = StartAddr % 256; + SendStr[2] = byte.Parse(Hibyte.ToString());// ',起始地址高字节 0x807开始 + SendStr[3] = byte.Parse(LowByte.ToString());// ',起始地址低字节 + Hibyte = DataNum / 256; + LowByte = DataNum % 256; + SendStr[4] = byte.Parse(Hibyte.ToString());//',数据长度高字节 + SendStr[5] = byte.Parse(LowByte.ToString()); //',数据长度低字节 + RcvStr = GetCRC16(SendStr, 6, true);// ',CRC计算 + SendStr[6] = RcvStr[0]; + SendStr[7] = RcvStr[1]; + return SendStr; + } + public static string GetFlowGK(ushort[] uhNum, ushort[] uhK,out string strPlusNum) + { + int intPlusNum = 0; + intPlusNum = Convert.ToInt16(uhNum[0]); + + string[] strPlusK; + strPlusK = new string[4]; + for (int j = 0; j < 4; j++) //计量点数据读取上来之后,将20个寄存器的数据解析出来赋给数据行变量,添加到表中 + { + strPlusK[j] = uhK[j].ToString("x4"); + } + float sngPlusK = 0; + sngPlusK = getsingle(strPlusK[1] + strPlusK[0]); + strPlusNum = intPlusNum.ToString(); + return (intPlusNum / sngPlusK * 3600).ToString("0.#"); + + } + + + #region 数据格式转换 + private static uint getUInt32(string low, string hight) + { + if (low == "" & hight == "") + { + return 0; + } + else + { + return (uint)(Convert.ToUInt16(low, 0x10) + (Convert.ToUInt16(hight, 0x10) * 0xffff)); + } + } + + private static short getInt16(string low) + { + if (low == "") + { + return 0; + } + else + { + return Convert.ToInt16(low, 0x10); + } + } + + private static int getInt32(string low) + { + if (low == "") + { + return 0; + } + else + { + return Convert.ToInt32(low, 0x10); + } + } + + private static UInt32 getint(string _strData) + { + string shuju = _strData; + uint num = uint.Parse(shuju, System.Globalization.NumberStyles.AllowHexSpecifier); + byte[] floatValues = BitConverter.GetBytes(num); + string f = BitConverter.ToUInt32(floatValues, 0).ToString("0.######"); + return UInt32.Parse(f); + } + + + + private static Single getsingle(string _strData) + { + string shuju = _strData; + uint num = uint.Parse(shuju, System.Globalization.NumberStyles.AllowHexSpecifier); + byte[] floatValues = BitConverter.GetBytes(num); + string f = BitConverter.ToSingle(floatValues, 0).ToString("0.######"); + return Single.Parse(f); + } + + + #endregion + + + #region 校验和 + /// + /// 计算按位异或校验和(返回校验和值) + /// + /// 命令数组 + /// 校验和值 + private static byte GetXOR(byte[] Cmd) + { + byte check = (byte)(Cmd[0] ^ Cmd[1]); + for (int i = 2; i < Cmd.Length; i++) + { + check = (byte)(check ^ Cmd[i]); + } + return check; + } + + /// + /// 计算按位异或校验和(返回包含校验和的完整命令数组) + /// + /// 命令数组 + /// 包含校验和的完整命令数组 + private static byte[] GetXORFull(byte[] Cmd) + { + byte check = GetXOR(Cmd); + List newCmd = new List(); + newCmd.AddRange(Cmd); + newCmd.Add(check); + return newCmd.ToArray(); + } + #endregion + #region CRC16查表法 + + #region CRC对应表 + //高位表 + readonly static byte[] CRCHigh = new byte[]{ + 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, + 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, + 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, + 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, + 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, + 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, + 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, + 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, + 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, + 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, + 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, + 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, + 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, + 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, + 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, + 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, + 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, + 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, + 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, + 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, + 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, + 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, + 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, + 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, + 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, + 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40}; + //低位表 + readonly static byte[] CRCLow = new byte[]{ + 0x00, 0xC0, 0xC1, 0x01, 0xC3, 0x03, 0x02, 0xC2, 0xC6, 0x06, + 0x07, 0xC7, 0x05, 0xC5, 0xC4, 0x04, 0xCC, 0x0C, 0x0D, 0xCD, + 0x0F, 0xCF, 0xCE, 0x0E, 0x0A, 0xCA, 0xCB, 0x0B, 0xC9, 0x09, + 0x08, 0xC8, 0xD8, 0x18, 0x19, 0xD9, 0x1B, 0xDB, 0xDA, 0x1A, + 0x1E, 0xDE, 0xDF, 0x1F, 0xDD, 0x1D, 0x1C, 0xDC, 0x14, 0xD4, + 0xD5, 0x15, 0xD7, 0x17, 0x16, 0xD6, 0xD2, 0x12, 0x13, 0xD3, + 0x11, 0xD1, 0xD0, 0x10, 0xF0, 0x30, 0x31, 0xF1, 0x33, 0xF3, + 0xF2, 0x32, 0x36, 0xF6, 0xF7, 0x37, 0xF5, 0x35, 0x34, 0xF4, + 0x3C, 0xFC, 0xFD, 0x3D, 0xFF, 0x3F, 0x3E, 0xFE, 0xFA, 0x3A, + 0x3B, 0xFB, 0x39, 0xF9, 0xF8, 0x38, 0x28, 0xE8, 0xE9, 0x29, + 0xEB, 0x2B, 0x2A, 0xEA, 0xEE, 0x2E, 0x2F, 0xEF, 0x2D, 0xED, + 0xEC, 0x2C, 0xE4, 0x24, 0x25, 0xE5, 0x27, 0xE7, 0xE6, 0x26, + 0x22, 0xE2, 0xE3, 0x23, 0xE1, 0x21, 0x20, 0xE0, 0xA0, 0x60, + 0x61, 0xA1, 0x63, 0xA3, 0xA2, 0x62, 0x66, 0xA6, 0xA7, 0x67, + 0xA5, 0x65, 0x64, 0xA4, 0x6C, 0xAC, 0xAD, 0x6D, 0xAF, 0x6F, + 0x6E, 0xAE, 0xAA, 0x6A, 0x6B, 0xAB, 0x69, 0xA9, 0xA8, 0x68, + 0x78, 0xB8, 0xB9, 0x79, 0xBB, 0x7B, 0x7A, 0xBA, 0xBE, 0x7E, + 0x7F, 0xBF, 0x7D, 0xBD, 0xBC, 0x7C, 0xB4, 0x74, 0x75, 0xB5, + 0x77, 0xB7, 0xB6, 0x76, 0x72, 0xB2, 0xB3, 0x73, 0xB1, 0x71, + 0x70, 0xB0, 0x50, 0x90, 0x91, 0x51, 0x93, 0x53, 0x52, 0x92, + 0x96, 0x56, 0x57, 0x97, 0x55, 0x95, 0x94, 0x54, 0x9C, 0x5C, + 0x5D, 0x9D, 0x5F, 0x9F, 0x9E, 0x5E, 0x5A, 0x9A, 0x9B, 0x5B, + 0x99, 0x59, 0x58, 0x98, 0x88, 0x48, 0x49, 0x89, 0x4B, 0x8B, + 0x8A, 0x4A, 0x4E, 0x8E, 0x8F, 0x4F, 0x8D, 0x4D, 0x4C, 0x8C, + 0x44, 0x84, 0x85, 0x45, 0x87, 0x47, 0x46, 0x86, 0x82, 0x42, + 0x43, 0x83, 0x41, 0x81, 0x80, 0x40}; + #endregion + + /// + /// 计算CRC16循环校验码 + /// + /// 命令数组 + /// 高位是否在前 + /// 高低位校验码 + public static byte[] GetCRC16(byte[] Cmd, int Num, bool IsHighBefore) + { + int index; + int crc_Low = 0xFF; + int crc_High = 0xFF; + for (int i = 0; i < Num; i++) + { + index = crc_High ^ (char)Cmd[i]; + crc_High = crc_Low ^ CRCHigh[index]; + crc_Low = (byte)CRCLow[index]; + } + if (IsHighBefore == true) + { + return new byte[2] { (byte)crc_High, (byte)crc_Low }; + } + else + { + return new byte[2] { (byte)crc_Low, (byte)crc_High }; + } + } + + /// + /// 计算CRC16循环校验码(返回包含校验码的完整命令数组) + /// + /// 命令数组 + /// 高位是否在前 + /// + + #endregion + + + } +} diff --git a/ConsoleGetPLCData/ConsoleGetPLCData.csproj b/ConsoleGetPLCData/ConsoleGetPLCData.csproj new file mode 100644 index 0000000..d4fdb6d --- /dev/null +++ b/ConsoleGetPLCData/ConsoleGetPLCData.csproj @@ -0,0 +1,87 @@ + + + + + Debug + AnyCPU + {A2378DFD-D382-44FB-B280-61224B8E0ACA} + Exe + Properties + ConsoleGetPLCData + ConsoleGetPLCData + v4.0 + 512 + + + + x86 + true + full + false + D:\GetPLCData\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + False + bin\Debug\FtdAdapter.dll + + + False + bin\Debug\log4net.dll + + + False + bin\Debug\Modbus.dll + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {3412cc68-9c7e-4f3e-a9db-285efd5f55db} + GetData_PLC + + + + + \ No newline at end of file diff --git a/ConsoleGetPLCData/Program.cs b/ConsoleGetPLCData/Program.cs new file mode 100644 index 0000000..b72a92a --- /dev/null +++ b/ConsoleGetPLCData/Program.cs @@ -0,0 +1,1084 @@ +using System; +using System.Collections.Generic; +using System.Data; +using System.IO; +using System.Linq; +using System.Text; +using System.Threading; +using System.Threading.Tasks; +using GetData_PLC; +using ConsoleGetPLCData.CS; +using System.Net; + +namespace ConsoleGetPLCData +{ + + public struct stStation + { + public string ip; + public int port; + public string ZCID; + public int readDiffTime; + public string strError; + public string ZCName; + public string MeterTYPE; + public string NetTYPE; + } + class ProgramGetData + { + + public static DataSet dsJLDataRealTime = new DataSet(); //实时采集数据集 + public static DataSet dsPparameter = new DataSet(); //站场参数数据集 + public static DataTable dtScRealTime = new DataTable(); // 实时输差数据集 + public static DataSet dsZhanDateTime = new DataSet(); // 实时PLC时间 + + + public static DataTable dtZhan = new DataTable(); //站场数据集 + public static DataTable dtZhanNet = new DataTable(); //局域网站场数据集 + public static DataTable dtZhanGPRS = new DataTable(); //GPRS站场数据集 + + + public static string strAPPDataPath = Environment.CurrentDirectory + @"\Data\"; //采集程序路径 + public static string strParPath = strAPPDataPath + @"par\"; //计量参数文件存储路径 + public static string strConfigPath = strAPPDataPath + @"Config\"; //采集程序参数保存路径 + public static string strDataPath = strAPPDataPath + @"RealTime\"; //实时数据存储路径 + + public static string strDataPath_JlData = strDataPath + @"JlData\"; //分站计量实时数据存储路径 + public static string strDataPath_ScData = strDataPath + @"ScData\"; //输差数据XML存储文件夹 + public static string strDataPath_DataTime = strDataPath + @"DateTime\"; //分站时间xml存储文件夹 + public static string strDataPath_Log = strDataPath + @"Log\"; //日志存储文件夹 + + + + //log 日志存放数据 + public static string strLogPath = strDataPath + @"log\" + DateTime.Now.Year.ToString() + "-" + DateTime.Now.Month.ToString() + "-" + DateTime.Now.Day.ToString() + "_log.txt"; + public static string strLogPath_Data = strDataPath + @"log\" + DateTime.Now.Year.ToString() + "-" + DateTime.Now.Month.ToString() + "-" + DateTime.Now.Day.ToString() + "_Datalog_"; + + private string strErr = ""; + private string strSQL = ""; + public static bool blWriteParXMLFlag; + private Thread[] GetPLCDataThread; + Dictionary ThreadDictionary = new Dictionary(); + static void Main(string[] args) + { + strAppend(DateTime.Now.ToString() + "------启动实时采集程序!"); + + System.IO.Directory.CreateDirectory(strAPPDataPath); //Data文件夹 + System.IO.Directory.CreateDirectory(strParPath); //Data\par文件夹 + System.IO.Directory.CreateDirectory(strDataPath); //Data\realtime文件夹 + System.IO.Directory.CreateDirectory(strConfigPath); //Data\realtime文件夹 + + System.IO.Directory.CreateDirectory(strDataPath_JlData + "JSON\\"); //分站xml存储文件夹 + System.IO.Directory.CreateDirectory(strDataPath_ScData); //输差数据XML存储文件夹 + System.IO.Directory.CreateDirectory(strDataPath_DataTime);//分站时间xml存储文件夹 + System.IO.Directory.CreateDirectory(strDataPath_Log); //日志存储文件夹 + + FileInfo fi = new FileInfo(ProgramGetData.strLogPath); + + if (fi.Exists == false) + { + File.CreateText(ProgramGetData.strLogPath); + } + ProgramGetData objPLC = new ProgramGetData(); + objPLC.InitialTalbe();// 初始化采集相关表格 + Thread.Sleep(5000); + + + //objPLC.GetPLCDataStart(); + objPLC.GetGPRSStart(); + objPLC.GetNetStart(); + + Thread.Sleep(3000); + + + + strAppend(DateTime.Now.ToString() + "------启动输差实时计算线程!"); + objPLC.ScCal();//启动输差实时计算 + Thread.Sleep(3000); + objPLC.SaveXML();//启动保存xml线程 + + Console.ReadKey(); + } + private void SaveXML() //输差计算 + { + //保存实时数据到xml + Thread th = new Thread(SaveXML_ReadPar); + th.Start(); + } + + private void ScCal() //输差计算 + { + ScCal newSccal = new ScCal(); + Thread ScThread = new Thread(new ThreadStart(newSccal.ZhanXianScCal)); + ScThread.Start(); + strAppend(DateTime.Now.ToString() + "------启动输差实时计算线程---完成!"); + } + /// + /// 向IP端口发json + /// + /// + /// + /// + public static string HttpWebRequestPost(string url, string param) + { + HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(url); + Encoding encoding = Encoding.UTF8; + byte[] byteArray = Encoding.ASCII.GetBytes(param); + string responseData = String.Empty; + req.Method = "POST"; + req.ContentType = "application/x-www-form-urlencoded"; + req.ContentLength = byteArray.Length; + + using (Stream reqStream = req.GetRequestStream()) + { + reqStream.Write(byteArray, 0, byteArray.Length); + } + using (HttpWebResponse response = (HttpWebResponse)req.GetResponse()) + { + using (StreamReader reader = new StreamReader(response.GetResponseStream(), encoding)) + { + responseData = reader.ReadToEnd(); + } + return responseData; + } + } + + public string HttpWebRequestGet(string url, string param) + { + param = param.IndexOf('?') > -1 ? (param) : ("?" + param); + + HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(url + param); + Encoding encoding = Encoding.UTF8; + string responseData = String.Empty; + req.Method = "GET"; + using (HttpWebResponse response = (HttpWebResponse)req.GetResponse()) + { + using (StreamReader reader = new StreamReader(response.GetResponseStream(), encoding)) + { + responseData = reader.ReadToEnd(); + } + return responseData; + } + } + + /// + /// 实时保存采集的数据到XML文件,监控是否有读取计量点参数的命令 + /// + private void SaveXML_ReadPar() + { + while (true) + { + #region 保存实时采集数据 XML + string name = strDataPath + "SsData.xml"; + try + { + dsJLDataRealTime.WriteXml(name, XmlWriteMode.WriteSchema);//保存所有站场实时采集的计量数据集 + dsZhanDateTime.WriteXml(strDataPath + "dtTime.xml", XmlWriteMode.WriteSchema);//保存所有站场实时采集的时钟数据集 + string strTotalJson = "{"; + int ii = 0; + foreach (DataTable dtTemp in dsJLDataRealTime.Tables) //分站保存所有站场实时采集的计量数据集 + { + string strID = dtTemp.TableName; + dtTemp.WriteXml(strDataPath_JlData + dtTemp.TableName + ".xml", XmlWriteMode.WriteSchema); + try + { + string json = DataTableToJson(dtTemp, dsZhanDateTime.Tables[strID], strID); + strTotalJson += "\"" + dtTemp.TableName + "\":" + json + ","; + File.WriteAllText(strDataPath_JlData + "\\JSON\\" + dtTemp.TableName + ".json", json); + } + catch (Exception ex) + { + + } + //ii += 1; + //if (ii > 6) + //{ + // break; + //} + } + strTotalJson = strTotalJson.TrimEnd(',') + "}"; + //HttpWebRequestPost("Http://10.75.166.59:8081", strTotalJson); + File.WriteAllText(strDataPath_JlData + "\\JSON\\" + "Total.json", strTotalJson); + foreach (DataTable dtTemp in dsZhanDateTime.Tables)//分站保存所有站场实时采集的时钟数据集 + { + dtTemp.WriteXml(strDataPath_DataTime + dtTemp.TableName + ".xml", XmlWriteMode.WriteSchema); + } + if (blWriteParXMLFlag) //分站保存计量点参数数据集 + { + foreach (DataTable dtTemp in dsPparameter.Tables) + { + dtTemp.WriteXml(strParPath + dtTemp.TableName + ".xml", XmlWriteMode.WriteSchema); + } + blWriteParXMLFlag = false; + } + //Console.WriteLine("。。。。。保存实时数据,PLC时间,计量点参数到xml!"); + } + catch (SystemException err) + { + if (err.Message != null) + { + //strErr = "注意:" + DateTime.Now + "保存到实时数据到xml出错" + err.Message + err.StackTrace.Substring(err.StackTrace.LastIndexOf("行号") - 1) + "\r\n"; + } + } + #endregion + + #region 读取参数 + try + { + ; //从数据库中查询出所有站场的名称和站场ID//返回不带重复记录的站场ID表格 + DataTable dtReadFlag = OracleLink.ExecuteDataTable(SQL_Strings.strReadParFlag + " and readparflag='1'", "JLXT", strErr); + if (dtReadFlag.Rows.Count > 0) + { + foreach (DataRow drFlag in dtReadFlag.Rows) + { + string strTempZCID = drFlag["STATION_NAME"].ToString(); + string strTempJLD_ID = drFlag["JLD_ID"].ToString(); + + DataRow[] drJldPar = dsJLDataRealTime.Tables[strTempZCID].Select("jld_id='" + strTempJLD_ID + "'"); + drJldPar[0]["readparflag"] = "1"; + + blWriteParXMLFlag = true; + string SQL = "update RV2_BASEINFO set readparflag='' where xh='" + drFlag["ID"] + "'"; + OracleLink.ExecuteNonQuery(SQL, "JLXT", strErr); + } + } + //启动或停止某个站的线程 + try + { + string strQuery = "select * from control"; //从数据库中查询出所有站场的名称和站场ID//返回不带重复记录的站场ID表格 + string RestartFlag = ""; + DataTable ReadFlagTable = OracleLink.ExecuteDataTable(strQuery, "DTJK", ""); + RestartFlag = ReadFlagTable.Rows[0]["ThreadRestartFlag"].ToString(); + string zcid = ReadFlagTable.Rows[0]["Thread_ZCID"].ToString(); + if (RestartFlag == "1") + { + ThreadDictionary[zcid].Abort(); + dtJldList(zcid); + strQuery = "update control set ThreadRestartFlag='0',Thread_ZCID='' where id=1 "; //从数据库中查询出所有站场的名称和站场ID//返回不带重复记录的站场ID表格 + OracleLink.ExecuteNonQuery(strQuery, "DTJK", strErr); + GetPLCDataStart(zcid); + } + } + catch + { + } + //同步PLC时间 + DataTable dtTBTime = OracleLink.ExecuteDataTable(SQL_Strings.strSQLZhan + " and TBTime='1'", "JLXT", strErr); + if (dtTBTime.Rows.Count > 0) + { + foreach (DataRow drFlag in dtTBTime.Rows) + { + string strTempZCID = drFlag["ID"].ToString(); + dsZhanDateTime.Tables[strTempZCID].Rows[0]["TongBuFlag"] = "同步"; + string SQL = "update 集输站场 set TBTime='' where ID='" + strTempZCID + "'"; + OracleLink.ExecuteNonQuery(SQL, "JLXT", strErr); + } + } + } + catch { } + #endregion + Thread.Sleep(1111); + } + } + /// + /// 启动各站数据采集线程 + /// + private void GetPLCDataStart() //启动各站数据采集线程 + { + //int ThreadNum = dtZhan.Rows.Count; + //GetDataThread[] arrayThread; + //GetPLCDataThread = new Thread[ThreadNum]; + //arrayThread = new GetDataThread[ThreadNum]; + try + { + + + int ThreadNum = dtZhan.Rows.Count; + GetDataThread[] arrayThread; + GetPLCDataThread = new Thread[ThreadNum]; + arrayThread = new GetDataThread[ThreadNum]; + for (int i = 0; i < ThreadNum; i++) + { + string ZCID = dtZhan.Rows[i]["ORG_ID"].ToString(); + if (dsJLDataRealTime.Tables[ZCID].Rows.Count > 0) + { + //if (dtZhan.Rows[i]["PORT"].ToString() == "1512") + { + + + + //if (ZCID.Split('_').Length > 1) + { + try + { + stStation Station = new stStation(); + Station.ZCID = dtZhan.Rows[i]["ORG_ID"].ToString(); + Station.ZCName = dtZhan.Rows[i]["ORG_NAME"].ToString(); + Station.ip = dtZhan.Rows[i]["IP"].ToString(); + Station.port = Convert.ToInt32(dtZhan.Rows[i]["PORT"].ToString()); + Station.NetTYPE = dtZhan.Rows[i]["NETTYPE"].ToString(); + Station.MeterTYPE = dtZhan.Rows[i]["DEVICETYPE"].ToString(); + Station.readDiffTime = Convert.ToInt32(dtZhan.Rows[i]["READTIMESPAN"].ToString()); + arrayThread[i] = new GetDataThread(Station); + GetPLCDataThread[i] = new Thread(new ThreadStart(arrayThread[i].GetPLCData)); //string[] tempIp = dtZhan.Rows[i]["IP"].ToString().Split(','); + + GetPLCDataThread[i].Start(); + ThreadDictionary.Add(Station.ZCID, GetPLCDataThread[i]); + } + catch (Exception ex) + { + continue; + } + } + } + // + } + + } + } + catch (Exception ex) + { + + + } + } + + /// + /// 启动GPRS数据采集线程 + /// + private void GetGPRSStart() //启动各站数据采集线程 + { + //int ThreadNum = dtZhan.Rows.Count; + //GetDataThread[] arrayThread; + //GetPLCDataThread = new Thread[ThreadNum]; + //arrayThread = new GetDataThread[ThreadNum]; + try + { + + + int ThreadNum = dtZhanGPRS.Rows.Count; + GETDataGPRS[] arrayThread; + GetPLCDataThread = new Thread[ThreadNum]; + arrayThread = new GETDataGPRS[ThreadNum]; + for (int i = 0; i < ThreadNum; i++) + { + string ZCID = dtZhanGPRS.Rows[i]["ORG_ID"].ToString(); + if (dsJLDataRealTime.Tables[ZCID].Rows.Count > 0) + { + //if (dtZhanGPRS.Rows[i]["PORT"].ToString() == "8059") + { + //if (ZCID.Split('_').Length > 1) + { + try + { + stStation Station = new stStation(); + Station.ZCID = dtZhanGPRS.Rows[i]["ORG_ID"].ToString(); + Station.ZCName = dtZhanGPRS.Rows[i]["ORG_NAME"].ToString(); + Station.ip = dtZhanGPRS.Rows[i]["IP"].ToString(); + Station.port = Convert.ToInt32(dtZhanGPRS.Rows[i]["PORT"].ToString()); + Station.NetTYPE = dtZhanGPRS.Rows[i]["NETTYPE"].ToString(); + Station.MeterTYPE = dtZhanGPRS.Rows[i]["DEVICETYPE"].ToString(); + Station.readDiffTime = Convert.ToInt32(dtZhanGPRS.Rows[i]["READTIMESPAN"].ToString()); + arrayThread[i] = new GETDataGPRS(Station); + GetPLCDataThread[i] = new Thread(new ThreadStart(arrayThread[i].GetDataStart)); + //string[] tempIp = dtZhan.Rows[i]["IP"].ToString().Split(','); + + GetPLCDataThread[i].Start(); + ThreadDictionary.Add(Station.ZCID, GetPLCDataThread[i]); + } + catch (Exception ex) + { + continue; + } + } + } + // + } + + } + } + catch (Exception ex) + { + + + } + } + + /// + /// 启动Net数据采集线程 + /// + private void GetNetStart() //启动各站数据采集线程 + { + //int ThreadNum = dtZhan.Rows.Count; + //GetDataThread[] arrayThread; + //GetPLCDataThread = new Thread[ThreadNum]; + //arrayThread = new GetDataThread[ThreadNum]; + try + { + + + int ThreadNum = dtZhanNet.Rows.Count; + GetDataNet[] arrayThread; + GetPLCDataThread = new Thread[ThreadNum]; + arrayThread = new GetDataNet[ThreadNum]; + for (int i = 0; i < ThreadNum; i++) + { + string ZCID = dtZhanNet.Rows[i]["ORG_ID"].ToString(); + if (dsJLDataRealTime.Tables[ZCID].Rows.Count > 0) + { + //if (dtZhanNet.Rows[i]["ORG_ID"].ToString() == "6C1AB9BC-AFEC-48B5-AD7D-3932DE414641") + { + //if (ZCID.Split('_').Length > 1) + { + try + { + stStation Station = new stStation(); + Station.ZCID = dtZhanNet.Rows[i]["ORG_ID"].ToString(); + Station.ZCName = dtZhanNet.Rows[i]["ORG_NAME"].ToString(); + Station.ip = dtZhanNet.Rows[i]["IP"].ToString(); + Station.port = Convert.ToInt32(dtZhanNet.Rows[i]["PORT"].ToString()); + Station.NetTYPE = dtZhanNet.Rows[i]["NETTYPE"].ToString(); + Station.MeterTYPE = dtZhanNet.Rows[i]["DEVICETYPE"].ToString(); + Station.readDiffTime = Convert.ToInt32(dtZhanNet.Rows[i]["READTIMESPAN"].ToString()); + arrayThread[i] = new GetDataNet(Station); + GetPLCDataThread[i] = new Thread(new ThreadStart(arrayThread[i].GetPLCData)); //string[] tempIp = dtZhan.Rows[i]["IP"].ToString().Split(','); + + GetPLCDataThread[i].Start(); + ThreadDictionary.Add(Station.ZCID, GetPLCDataThread[i]); + } + catch (Exception ex) + { + continue; + } + } + } + // + } + + } + } + catch (Exception ex) + { + + + } + } + + + private void GetPLCDataStart(string ZCID) //启动各站数据采集线程 + { + DataRow[] drZhan = dtZhan.Select("ID='" + ZCID + "'"); + if (dsJLDataRealTime.Tables[ZCID].Rows.Count > 0) + { + + try + { + stStation Station = new stStation(); + Station.ZCID = drZhan[0]["ID"].ToString(); + Station.ZCName = drZhan[0]["ZCMC"].ToString(); + Station.ip = drZhan[0]["IP"].ToString(); + Station.port = Convert.ToInt32(drZhan[0]["PORT"].ToString()); + Station.NetTYPE = drZhan[0]["NETTYPE"].ToString(); + Station.MeterTYPE = drZhan[0]["SBTYPE"].ToString(); + Station.readDiffTime = Convert.ToInt32(drZhan[0]["READTIMESPAN"].ToString()); + GetDataThread arrayThread = new GetDataThread(Station); + Thread ThreadZCID = new Thread(new ThreadStart(arrayThread.GetPLCData)); + ThreadZCID.Start(); + ThreadDictionary[ZCID] = ThreadZCID; + strAppend("重启" + Station.ZCName + "采集成功"); + + } + catch (Exception ex) + { } + } + + + } + + /// + /// 初始化系统所需要的DataSet 和DataTable 结构和数据 + /// + protected void InitialTalbe() //初始化实时数据表格过程,以便添加计量点后重新构建实时数据表格 + { + strAppend(DateTime.Now.ToString() + "------开始初始化相关表格!"); + + try + { + + DataTable dtDateTime = new DataTable(); + dtDateTime.Columns.Add("ZCID", typeof(string)); + dtDateTime.Columns.Add("ZCNAME", typeof(string)); + dtDateTime.Columns.Add("PLCTime", typeof(string)); + dtDateTime.Columns.Add("TongBuTime", typeof(string)); + dtDateTime.Columns.Add("TongBuFlag", typeof(string)); + + DataTable parTable = new DataTable(); + parTable.Columns.Add("CH4", typeof(string)); + parTable.Columns.Add("N2", typeof(string)); + parTable.Columns.Add("CO2", typeof(string)); + parTable.Columns.Add("C2H6", typeof(string)); + parTable.Columns.Add("C3H8", typeof(string)); + parTable.Columns.Add("H2O", typeof(string)); + parTable.Columns.Add("H2S", typeof(string)); + parTable.Columns.Add("H2", typeof(string)); + parTable.Columns.Add("CO ", typeof(string)); + parTable.Columns.Add("O2", typeof(string)); + parTable.Columns.Add("i-C4H10", typeof(string)); + parTable.Columns.Add("n-C4H10", typeof(string)); + parTable.Columns.Add("i-C5H12", typeof(string)); + parTable.Columns.Add("n-C5H12", typeof(string)); + parTable.Columns.Add("n-C6H14", typeof(string)); + parTable.Columns.Add("n-C7H16", typeof(string)); + parTable.Columns.Add("n-C8H18", typeof(string)); + parTable.Columns.Add("n-C9H20", typeof(string)); + parTable.Columns.Add("n-C10H22", typeof(string)); + parTable.Columns.Add("He", typeof(string)); + parTable.Columns.Add("Ar", typeof(string)); + parTable.Columns.Add("bak", typeof(string)); + parTable.Columns.Add("GJ", typeof(string)); + parTable.Columns.Add("KJ", typeof(string)); + parTable.Columns.Add("Gr", typeof(string)); + parTable.Columns.Add("DLND", typeof(string)); + parTable.Columns.Add("DSZS", typeof(string)); + parTable.Columns.Add("BAK1", typeof(string)); + parTable.Columns.Add("BAK2", typeof(string)); + parTable.Columns.Add("BAK3", typeof(string)); + parTable.Columns.Add("Station_ID", typeof(string)); + parTable.Columns.Add("ID", typeof(string)); + parTable.Columns.Add("JLD_ID", typeof(string)); + parTable.Columns.Add("ReadTime", typeof(string)); + parTable.Columns.Add("JLD_NAME", typeof(string)); + parTable.Columns.Add("CLXX", typeof(string)); + parTable.Columns.Add("CLSX", typeof(string)); + + + dtZhan.Clear(); + dsJLDataRealTime.Tables.Clear(); + + #region 初始化站场表格,获取所有自动计量站场 + strAppend(DateTime.Now.ToString() + "------查询数据库获取所有站场资料!"); + + try + { + + + dtZhan = new DataTable(); + dtZhan = OracleLink.ExecuteDataTable(SQL_Strings.strSQLZhan, "JLXT", strErr); + } + catch (Exception ex) + { + string strFileName = strDataPath + "dtZhan.xml"; + dtZhan.ReadXml(strFileName); + } + + dtZhan.TableName = "集输站场"; + DataTable dtStationNew = dtZhan.Copy(); + + for (int i = 0; i < dtZhan.Rows.Count; i++) + { + + //柳屯配气站两台PLC 区分 + + string[] tempIp = dtZhan.Rows[i]["IP"].ToString().Split(','); + string[] tempPORT = dtZhan.Rows[i]["PORT"].ToString().Split(','); + + if (tempIp.Length > 1) + { + DataRow drTemp = dtStationNew.NewRow(); + drTemp.ItemArray = dtZhan.Rows[i].ItemArray; + dtStationNew.Rows[i]["org_id"] = dtZhan.Rows[i]["org_id"].ToString() + "_0"; + dtStationNew.Rows[i]["org_name"] = dtZhan.Rows[i]["org_name"].ToString() + "_0"; + dtStationNew.Rows[i]["IP"] = tempIp[0]; + dtStationNew.Rows[i]["PORT"] = tempPORT[0]; + for (int j = 1; j < tempIp.Length; j++) + { + drTemp["org_id"] = dtZhan.Rows[i]["org_id"].ToString() + "_" + j.ToString(); + drTemp["org_name"] = dtZhan.Rows[i]["org_name"].ToString() + "_" + j.ToString(); + drTemp["IP"] = tempIp[j]; + drTemp["PORT"] = tempPORT[j]; + dtStationNew.Rows.Add(drTemp); + } + } + } + + + + DataView dv = dtStationNew.DefaultView; + + dv.RowFilter = "NETTYPE='0'"; + dtZhanNet = dv.ToTable(); + + dv.RowFilter = "NETTYPE='1'"; + dtZhanGPRS = dv.ToTable(); + + strAppend(DateTime.Now.ToString() + "------站场资料获取成功!"); + #endregion + #region 初始化站场计量点结构Dataset + + DataTable dtDataRealTime = new DataTable(); + + //ID,JLD_NAME,WD,YL,CY,SSL,JRL,ZRL,LJL,BYL,SYL,ZRSJ,JRSJ,YBZT,RTIME,JLD_ID,STATION_ID,STATION_NAME,DEPT_ID + + dtDataRealTime.Columns.Add("ID", typeof(string)); + dtDataRealTime.Columns.Add("RTIME", typeof(string)); + dtDataRealTime.Columns.Add("JLD_NAME", typeof(string)); + dtDataRealTime.Columns.Add("WD", typeof(string)); + dtDataRealTime.Columns.Add("YL", typeof(string)); + dtDataRealTime.Columns.Add("CY", typeof(string)); + dtDataRealTime.Columns.Add("SSL", typeof(string)); + dtDataRealTime.Columns.Add("JRL", typeof(string)); + dtDataRealTime.Columns.Add("ZRL", typeof(string)); + dtDataRealTime.Columns.Add("LJL", typeof(string)); + dtDataRealTime.Columns.Add("BYL", typeof(string)); + dtDataRealTime.Columns.Add("SYL", typeof(string)); + dtDataRealTime.Columns.Add("JRSJ", typeof(string)); + dtDataRealTime.Columns.Add("ZRSJ", typeof(string)); + dtDataRealTime.Columns.Add("YBZT", typeof(string)); + dtDataRealTime.Columns.Add("SSGKLL", typeof(string)); + dtDataRealTime.Columns.Add("JLD_ID", typeof(string)); + dtDataRealTime.Columns.Add("STATION_ID", typeof(string)); + dtDataRealTime.Columns.Add("STATION_NAME", typeof(string)); + dtDataRealTime.Columns.Add("DEPT_ID", typeof(string)); + dtDataRealTime.Columns.Add("MeterTYPE", typeof(string)); + dtDataRealTime.Columns.Add("readparflag", typeof(string)); + dtDataRealTime.Columns.Add("TongBuFlag", typeof(string)); + dtDataRealTime.Columns.Add("CXFlag", typeof(string)); + dtDataRealTime.Columns.Add("LinkStatu", typeof(string)); //计量点连接情况,对于流量积算仪的模式 如果没装表读不上来数可以设置 + + // 初始化站场计量点表格 + + strAppend(DateTime.Now.ToString() + "------初始化站场计量点表格和计量点参数"); + + for (int i = 0; i < dtStationNew.Rows.Count; i++) + { + DataTable dtPar = new DataTable(); + DataTable dtJLD = new DataTable(); + dtJLD = dtJldList(dtStationNew.Rows[i]["ORG_ID"].ToString(), dtStationNew.Rows[i]["PARENT_ORG_ID"].ToString(), dtDataRealTime, parTable, out dtPar); + dsPparameter.Tables.Add(dtPar); + dsJLDataRealTime.Tables.Add(dtJLD); + + + //初始化站场时间表格结构和数据 + DataTable dtTimeTemp = dtDateTime.Clone(); + dtTimeTemp.TableName = dtStationNew.Rows[i]["ORG_ID"].ToString(); + DataRow drTime = dtTimeTemp.NewRow(); + drTime["ZCID"] = dtStationNew.Rows[i]["ORG_ID"]; + drTime["ZCNAME"] = dtStationNew.Rows[i]["ORG_NAME"]; + dtTimeTemp.Rows.Add(drTime); + dsZhanDateTime.Tables.Add(dtTimeTemp); + } + strAppend(DateTime.Now.ToString() + "------站场参数、计量点、时间结构和数据表格初始化完成!"); + + #endregion + #region 初始化输差表格 + strAppend(DateTime.Now.ToString() + "------初始化输差表格 开始!"); + blWriteParXMLFlag = true; + dtScRealTime.Columns.Add("SCID", typeof(string)); + dtScRealTime.Columns.Add("RTIME", typeof(string)); + dtScRealTime.Columns.Add("SCNAME", typeof(string)); + dtScRealTime.Columns.Add("SCTYPE", typeof(string)); + + dtScRealTime.Columns.Add("IN_P", typeof(string)); + dtScRealTime.Columns.Add("OUT_P", typeof(string)); + dtScRealTime.Columns.Add("SsInTotal", typeof(string)); + dtScRealTime.Columns.Add("SsOutTotal", typeof(string)); + dtScRealTime.Columns.Add("SsSc", typeof(string)); + dtScRealTime.Columns.Add("SsPer", typeof(string)); + + dtScRealTime.Columns.Add("JrInTotal", typeof(string)); + dtScRealTime.Columns.Add("JrOutTotal", typeof(string)); + dtScRealTime.Columns.Add("JrSc", typeof(string)); + dtScRealTime.Columns.Add("JrPer", typeof(string)); + + dtScRealTime.Columns.Add("ZrInTotal", typeof(string)); + dtScRealTime.Columns.Add("ZrOutTotal", typeof(string)); + dtScRealTime.Columns.Add("ZrSc", typeof(string)); + dtScRealTime.Columns.Add("ZrPer", typeof(string)); + + dtScRealTime.Columns.Add("IN_JLD_ID", typeof(string)); + dtScRealTime.Columns.Add("OUT_JLD_ID", typeof(string)); + dtScRealTime.Columns.Add("DEPT_ID", typeof(string)); + dtScRealTime.Columns.Add("STATION_ID", typeof(string)); + dtScRealTime.Columns.Add("RE_DEPT_ID", typeof(string)); + dtScRealTime.TableName = "SsSC"; + + strSQL = SQL_Strings.strSQLScConfig + " order by ID"; + DataTable dtScConfig = new DataTable(); + dtScConfig = OracleLink.ExecuteDataTable(strSQL, "JLXT", strErr); + if (dtScConfig.Rows.Count > 0) + { + foreach (DataRow dr1 in dtScConfig.Rows) + { + DataRow drJld = dtScRealTime.NewRow(); + drJld["SCID"] = dr1["ID"]; + drJld["SCNAME"] = dr1["TRANS_NAME"]; + drJld["IN_JLD_ID"] = dr1["IN_POINTS"]; + drJld["OUT_JLD_ID"] = dr1["OUT_POINTS"]; + drJld["DEPT_ID"] = dr1["DEPT_ID"]; + drJld["STATION_ID"] = dr1["STATION_ID"]; + drJld["SCTYPE"] = dr1["TRANS_TYPE"]; + drJld["RE_DEPT_ID"] = dr1["RE_DEPT_ID"]; + dtScRealTime.Rows.Add(drJld); + } + } + + + File.Delete(strConfigPath + "dsJlDataRealTime.xml"); + File.Delete(strConfigPath + "dsPparameter.xml"); + File.Delete(strConfigPath + "dsZhanDateTime.xml"); + + dsJLDataRealTime.WriteXml(strConfigPath + "dsJlDataRealTime.xml", XmlWriteMode.WriteSchema);//暂存数据结构表 + dsPparameter.WriteXml(strConfigPath + "dsPparameter.xml", XmlWriteMode.WriteSchema);//暂存数据结构表 + dsZhanDateTime.WriteXml(strConfigPath + "dsZhanDateTime.xml", XmlWriteMode.WriteSchema);//暂存数据结构表 + } + catch (Exception ex) + { } + strAppend(DateTime.Now.ToString() + "------初始化完成!"); + #endregion + } + /// + /// 获取某个站场的计量点结构 和参数表结构 + /// + /// 传递站场ID + /// 传递单位ID + /// 计量点表结构 + /// 参数表结构 + /// 返回参数表结构 + /// 返回计量点表结构 + private DataTable dtJldList(string ZCID, string Dept_ID, DataTable dtDataRealTime, DataTable parTable, out DataTable dtParList) + { + + DataTable dtTempStation = new DataTable(); + DataTable dtJLD = new DataTable(); + string strSTATION_Name = ""; + string[] tempZCID = ZCID.Split('_'); + strSQL = SQL_Strings.strSQLJld + tempZCID[0] + "' and plc='1' order by jld_id"; + dtTempStation = OracleLink.ExecuteDataTable("select * from SYS_ORGANISE where ORG_ID='" + tempZCID[0] + "'", "JLXT", ""); + string[] tempIp = dtTempStation.Rows[0]["IP"].ToString().Split(','); + strSTATION_Name = dtTempStation.Rows[0]["ORG_NAME"].ToString();// OracleLink.getStationName(ZCID); + try + { + if (tempZCID.Length > 1) + { + dtJLD = OracleLink.ExecuteDataTable(SQL_Strings.strSQLJld + tempZCID[0] + "' and plc='1' and device_id='" + tempZCID[1] + "' order by jld_id", "JLXT", strErr); + } + else + { + dtJLD = OracleLink.ExecuteDataTable(strSQL, "JLXT", strErr); + } + } + catch (Exception ex) + { + } + if (dtJLD.Rows.Count > 0) + { + DataTable dtTemp = dtDataRealTime.Clone(); + DataTable dtPar = parTable.Clone(); + foreach (DataRow dr1 in dtJLD.Rows) + { + // 初始化站场计量点表格结构和数据 + DataRow drJld = dtTemp.NewRow(); + drJld["ID"] = dr1["ID"]; + drJld["JLD_NAME"] = dr1["Jld_name"]; + drJld["JLD_ID"] = dr1["JLD_ID"]; + drJld["MeterTYPE"] = dr1["FLOWMETER_TYPE"]; + drJld["STATION_ID"] = dr1["STATION_NAME"]; + drJld["STATION_NAME"] = strSTATION_Name; + drJld["readparflag"] = "1"; + drJld["DEPT_ID"] = Dept_ID; + dtTemp.Rows.Add(drJld); + + // 初始化站场参数表格结构和数据 + DataRow drPar = dtPar.NewRow(); + drPar["ID"] = dr1["ID"]; + drPar["JLD_ID"] = dr1["JLD_ID"]; + drPar["Station_ID"] = dr1["STATION_NAME"]; + drPar["JLD_NAME"] = dr1["Jld_name"]; + try + { + string strTempSQL = "select clsbmc,ccbh,clfw from 测量设备台帐 where sycfdd='" + dr1["AZDD"].ToString() + "' and ZT='在用' and clsbmc like'%流量计%'"; + DataTable dtTempCLSB = OracleLink.ExecuteDataTable(strTempSQL, "JLXT", strErr); + if (dtTempCLSB.Rows.Count > 0) + { + string[] strCLFW = dtTempCLSB.Rows[0]["CLFW"].ToString().Split('~'); + drPar["CLXX"] = strCLFW[0].Substring(1, strCLFW[0].Length - 1); + drPar["CLSX"] = strCLFW[1].Substring(0, strCLFW[1].IndexOf(')')); + } + } + catch { } + dtPar.Rows.Add(drPar); + } + dtTemp.TableName = ZCID; + dtPar.TableName = ZCID; + dtParList = dtPar.Copy(); + return dtTemp; + } + else + { + DataTable dtTemp = dtDataRealTime.Clone(); + DataTable dtPar = parTable.Clone(); + dtTemp.TableName = ZCID; + dtPar.TableName = ZCID; + dtParList = dtPar.Copy(); + return dtTemp; + } + } + private DataTable dtJldList(string ZCID) + { + + dsJLDataRealTime.Tables[ZCID].Clear(); + dsPparameter.Tables[ZCID].Clear(); + + string strTempFileName = @"D:\GetPLCData\Data\Config\"; + DataSet dsJldTemp = new DataSet(); + dsJldTemp.ReadXml(strTempFileName + "dsJlDataRealTime.xml");//暂存数据结构表 + DataSet dsParTemp = new DataSet(); + dsParTemp.ReadXml(strTempFileName + "dsPparameter.xml");//暂存数据结构表 + + + foreach (DataRow dr1 in dsJldTemp.Tables[ZCID].Rows) + { + // 初始化站场计量点表格结构和数据 + DataRow drJld = dsJLDataRealTime.Tables[ZCID].NewRow(); + drJld["ID"] = dr1["ID"]; + drJld["JLD_NAME"] = dr1["Jld_name"]; + drJld["JLD_ID"] = dr1["JLD_ID"]; + drJld["MeterTYPE"] = dr1["FLOWMETER_TYPE"]; + drJld["STATION_ID"] = dr1["STATION_ID"]; + drJld["STATION_NAME"] = dr1["STATION_NAME"]; + drJld["readparflag"] = dr1["readparflag"]; + drJld["DEPT_ID"] = dr1["DEPT_ID"]; + + dsJLDataRealTime.Tables[ZCID].Rows.Add(drJld); + + // 初始化站场参数表格结构和数据 + DataRow drPar = dsPparameter.Tables[ZCID].NewRow(); + drPar["ID"] = dr1["ID"]; + drPar["JLD_ID"] = dr1["JLD_ID"]; + drPar["Station_ID"] = dr1["ZCID"]; + drPar["JLD_NAME"] = dr1["Jld_name"]; + drPar["CLFW"] = dr1["CLFW"]; + drPar["CLXX"] = dr1["CLXX"]; + drPar["CLSX"] = dr1["CLSX"]; + + dsPparameter.Tables[ZCID].Rows.Add(drPar); + } + return null; + + } + /// + /// 控制台输出运行信息,并写入日志文件 + /// + /// + public static void strAppend(string strMessage) + { + + string strFilePath = strLogPath; + try + { + Console.WriteLine(strMessage); + using (StreamWriter sw = File.AppendText(strFilePath)) + { + sw.WriteLine(strMessage); + sw.Flush(); + sw.Close(); + } + } + catch (Exception) + { + } + } + /// + /// 控制台输出运行信息,并写入日志文件 + /// + /// + public static void strAppend(string strMessage, string ZCMC) + { + + string strFilePath = strLogPath_Data + ZCMC + ".txt"; + try + { + Console.WriteLine(strMessage); + using (StreamWriter sw = File.AppendText(strFilePath)) + { + sw.WriteLine(strMessage); + sw.Flush(); + sw.Close(); + } + } + catch (Exception) + { + } + } + + + protected bool isNumberic(string message) + { + System.Text.RegularExpressions.Regex rex = + new System.Text.RegularExpressions.Regex(@"^(-)?[1-9][0-9]*$"); + if (rex.IsMatch(message)) + { + return true; + } + else + return false; + } + /// + /// 把DataTable数据转换为Json格式 + /// + /// 传入DataTable数据 + /// + public string DataTableToJson(DataTable dt, DataTable dtTime, string strStationID) + { + try + { + + + string[] stationid = strStationID.Split('_'); + string strDept_ID = ""; + string strStationName = ""; + string strDeptName = ""; + if (stationid.Length > 1) + { + strStationName = OracleLink.getStationName(stationid[0], ref strDept_ID) + stationid[1]; + strDeptName = OracleLink.getStationName(strDept_ID); + } + else + { + strStationName = OracleLink.getStationName(stationid[0], ref strDept_ID); + strDeptName = OracleLink.getStationName(strDept_ID); + } + StringBuilder jsonBuilder = new StringBuilder(); + jsonBuilder.Append("{\"total\""); + jsonBuilder.Append(":"); + jsonBuilder.Append(dt.Rows.Count); + jsonBuilder.Append(",\"Dept_ID\""); + jsonBuilder.Append(":\""); + jsonBuilder.Append(strDept_ID); + jsonBuilder.Append("\",\"Dept_Name\""); + jsonBuilder.Append(":\""); + jsonBuilder.Append(strDeptName); + jsonBuilder.Append("\",\"Station_ID\""); + jsonBuilder.Append(":\""); + jsonBuilder.Append(strStationID); + jsonBuilder.Append("\",\"Station_Name\""); + jsonBuilder.Append(":\""); + jsonBuilder.Append(strStationName); + jsonBuilder.Append("\",\"Time\""); + jsonBuilder.Append(":\""); + jsonBuilder.Append(dtTime.Rows[0]["PLCTime"]); + jsonBuilder.Append("\",\"rows"); + jsonBuilder.Append("\":["); + for (int i = 0; i < dt.Rows.Count; i++) + { + jsonBuilder.Append("{"); + for (int j = 0; j < dt.Columns.Count; j++) + { + jsonBuilder.Append("\""); + jsonBuilder.Append(dt.Columns[j].ColumnName); + jsonBuilder.Append("\":\""); + if (dt.Columns[j].ColumnName == "RQ") + { + jsonBuilder.Append(dt.Rows[i][j].ToString().Split(' ')[0]); + } + else + { + jsonBuilder.Append(dt.Rows[i][j].ToString()); + } + + + jsonBuilder.Append("\","); + } + jsonBuilder.Remove(jsonBuilder.Length - 1, 1); + jsonBuilder.Append("},"); + } + if (dt.Rows.Count > 0) + { + jsonBuilder.Remove(jsonBuilder.Length - 1, 1); + } + jsonBuilder.Append("],"); + jsonBuilder.Append("\"title"); + //jsonBuilder.Append(dt.TableName); + jsonBuilder.Append("\":["); + //这是循环获取列名称 + for (int n = 0; n < dt.Columns.Count; n++) + { + jsonBuilder.Append("{"); + jsonBuilder.Append("\"field"); + jsonBuilder.Append("\":\""); + jsonBuilder.Append(dt.Columns[n].ColumnName); + jsonBuilder.Append("\","); + jsonBuilder.Append("\"title"); + jsonBuilder.Append("\":\""); + jsonBuilder.Append(getStrColumnName(dt.Columns[n].ColumnName)); + jsonBuilder.Append("\""); + jsonBuilder.Append("},"); + } + jsonBuilder.Remove(jsonBuilder.Length - 1, 1); + jsonBuilder.Append("},"); + + jsonBuilder.Remove(jsonBuilder.Length - 2, 2); + jsonBuilder.Append("]"); + jsonBuilder.Append("}"); + return jsonBuilder.ToString(); + + } + catch (Exception ex) + { + + return "错误"; + } + + } + + private string getStrColumnName(string strName) + { + string temp = ""; + switch (strName) + { + case "YL": + temp = "压力(MPa)"; + //temp = "压力(MPa)"; + break; + case "CY": + temp = "压力(kPa)"; + break; + case "WD": + temp = "温度(℃)"; + break; + case "SSL": + temp = "瞬时流量(Nm³/d)"; + break; + case "JRL": + temp = "今日流量(Nm³)"; + break; + case "ZRL": + temp = "昨日流量(Nm³)"; + break; + case "JLD_NAME": + temp = "计量点名称"; + break; + case "JRSJ": + temp = "今日时间(分钟)"; + break; + case "ZRSJ": + temp = "昨日时间(分钟)"; + break; + case "YBZT": + temp = "仪表状态"; + break; + case "SSGKLL": + temp = "瞬时工况流量"; + break; + case "JLD_ID": + temp = "站内ID"; + break; + + + } + + return temp; + } + + } +} diff --git a/ConsoleGetPLCData/Properties/AssemblyInfo.cs b/ConsoleGetPLCData/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..3d6afbf --- /dev/null +++ b/ConsoleGetPLCData/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// 有关程序集的常规信息通过以下 +// 特性集控制。更改这些特性值可修改 +// 与程序集关联的信息。 +[assembly: AssemblyTitle("ConsoleGetPLCData")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("Microsoft")] +[assembly: AssemblyProduct("ConsoleGetPLCData")] +[assembly: AssemblyCopyright("Copyright © Microsoft 2015")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// 将 ComVisible 设置为 false 使此程序集中的类型 +// 对 COM 组件不可见。 如果需要从 COM 访问此程序集中的类型, +// 则将该类型上的 ComVisible 特性设置为 true。 +[assembly: ComVisible(false)] + +// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID +[assembly: Guid("5f2100e3-472a-4a38-becc-5a4631636f82")] + +// 程序集的版本信息由下面四个值组成: +// +// 主版本 +// 次版本 +// 生成号 +// 修订号 +// +// 可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值, +// 方法是按如下所示使用“*”: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/ConsoleGetPLCData/bin/Debug/ConsoleGetPLCData.exe b/ConsoleGetPLCData/bin/Debug/ConsoleGetPLCData.exe new file mode 100644 index 0000000000000000000000000000000000000000..58ad63b51c7ac231b4ea05765db8a10f8ef7508e GIT binary patch literal 29184 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

dl!U3fv0jZvFo(If~r7!O42I@p>GB3WW1* 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 XFi?J%&zO9_c?1W0zyJLIr-A + + + + + \ No newline at end of file diff --git a/ConsoleGetPLCData/bin/Debug/ConsoleGetPLCData.pdb b/ConsoleGetPLCData/bin/Debug/ConsoleGetPLCData.pdb new file mode 100644 index 0000000000000000000000000000000000000000..d77f5d35c1a3d3ae9aad7ecde344e165ad6599f2 GIT binary patch literal 44544 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 Izf}$VKW!#(4*&oF literal 0 HcmV?d00001 diff --git a/ConsoleGetPLCData/bin/Debug/ConsoleGetPLCData.vshost.exe.config b/ConsoleGetPLCData/bin/Debug/ConsoleGetPLCData.vshost.exe.config new file mode 100644 index 0000000..8e15646 --- /dev/null +++ b/ConsoleGetPLCData/bin/Debug/ConsoleGetPLCData.vshost.exe.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/ConsoleGetPLCData/bin/Debug/ConsoleGetPLCData.vshost.exe.manifest b/ConsoleGetPLCData/bin/Debug/ConsoleGetPLCData.vshost.exe.manifest new file mode 100644 index 0000000..061c9ca --- /dev/null +++ b/ConsoleGetPLCData/bin/Debug/ConsoleGetPLCData.vshost.exe.manifest @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/ConsoleGetPLCData/bin/Debug/Data/RealTime/Log/2015-3-26_log.txt b/ConsoleGetPLCData/bin/Debug/Data/RealTime/Log/2015-3-26_log.txt new file mode 100644 index 0000000..7c2e628 --- /dev/null +++ b/ConsoleGetPLCData/bin/Debug/Data/RealTime/Log/2015-3-26_log.txt @@ -0,0 +1,53 @@ +2015/3/26 21:19:55------启动实时采集程序! +2015/3/26 21:19:55------开始初始化相关表格! +2015/3/26 21:19:55------查询数据库获取所有站场资料! +2015/3/26 21:19:56------站场资料获取成功! +2015/3/26 21:19:56------初始化局域网站场计量点表格和计量点参数 +2015/3/26 21:19:56------初始化完成! +2015/3/26 21:20:06------启动实时采集程序! +2015/3/26 21:20:06------开始初始化相关表格! +2015/3/26 21:20:06------查询数据库获取所有站场资料! +2015/3/26 21:20:06------站场资料获取成功! +2015/3/26 21:20:06------初始化局域网站场计量点表格和计量点参数 +2015/3/26 21:20:06------初始化完成! +2015/3/26 21:21:08------启动实时采集程序! +2015/3/26 21:21:08------开始初始化相关表格! +2015/3/26 21:21:08------查询数据库获取所有站场资料! +2015/3/26 21:21:08------站场资料获取成功! +2015/3/26 21:21:08------初始化局域网站场计量点表格和计量点参数 +2015/3/26 21:21:08------初始化完成! +2015/3/26 21:22:14------启动实时采集程序! +2015/3/26 21:22:14------开始初始化相关表格! +2015/3/26 21:22:14------查询数据库获取所有站场资料! +2015/3/26 21:22:18------站场资料获取成功! +2015/3/26 21:22:18------初始化局域网站场计量点表格和计量点参数 +2015/3/26 21:22:18------初始化完成! +2015/3/26 21:23:01------启动实时采集程序! +2015/3/26 21:23:01------开始初始化相关表格! +2015/3/26 21:23:01------查询数据库获取所有站场资料! +2015/3/26 21:23:01------站场资料获取成功! +2015/3/26 21:23:09------初始化局域网站场计量点表格和计量点参数 +2015/3/26 21:24:16------启动实时采集程序! +2015/3/26 21:24:16------开始初始化相关表格! +2015/3/26 21:24:16------查询数据库获取所有站场资料! +2015/3/26 21:24:17------站场资料获取成功! +2015/3/26 21:24:20------初始化局域网站场计量点表格和计量点参数 +2015/3/26 21:24:25------站场参数、计量点、时间结构和数据表格初始化完成! +2015/3/26 21:24:25------初始化输差表格 开始! +2015/3/26 21:24:25------初始化完成! +2015/3/26 21:26:16------启动实时采集程序! +2015/3/26 21:26:16------开始初始化相关表格! +2015/3/26 21:26:16------查询数据库获取所有站场资料! +2015/3/26 21:26:16------站场资料获取成功! +2015/3/26 21:26:16------初始化局域网站场计量点表格和计量点参数 +2015/3/26 21:26:17------站场参数、计量点、时间结构和数据表格初始化完成! +2015/3/26 21:26:17------初始化输差表格 开始! +2015/3/26 21:26:17------初始化完成! +2015/3/26 21:55:02------启动实时采集程序! +2015/3/26 21:55:02------开始初始化相关表格! +2015/3/26 21:55:02------查询数据库获取所有站场资料! +2015/3/26 21:55:02------站场资料获取成功! +2015/3/26 21:55:02------初始化局域网站场计量点表格和计量点参数 +2015/3/26 21:55:03------站场参数、计量点、时间结构和数据表格初始化完成! +2015/3/26 21:55:03------初始化输差表格 开始! +2015/3/26 21:55:03------初始化完成! diff --git a/ConsoleGetPLCData/bin/Debug/FTD2XX.dll b/ConsoleGetPLCData/bin/Debug/FTD2XX.dll new file mode 100644 index 0000000000000000000000000000000000000000..806769895b6947850a7aa81a70a86a53bd2c1354 GIT binary patch literal 202048 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�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

ww#s_xm@_e`~IL!HY9) z@Kn8h%QNBC4<>gWJbc}ecjgb>H*$Gt?~2#Yxq8+>a@owro2FiWPk(?fveW12c;TKXab>o6fff-|IN=*`B`oH{<`^{z27w=g-}E|LP~6x%7(edA~n= ztm8;%>dJ4a+OUElsQNHGrK_%CI6_y8^kIYoO4l$Z8Kp6dz|t$Ht3%AMY_iK4#bF<> zf0>{pF$`E)e_AEVdqJ-N$ovb2~Mwd+BK1P+a$s z6rZL*@i_n)$8ftG#mh!3zWx|yTJ=war_{YXQ~pWpw8;$Mbnk7D>7Bwca)oKZE5?rNd!eK*6*Pz2VmiH*KUaq!sH=O=5{R%v z9f1LeDb&>=H~|p$fdb#_egv#hIlelN9>$geg(ZnLP`rjZ%!-WCVb+9#RiR*AC|DT^ z)?myizN#Eehgr2TqrpbF2N}lc#{0%{wmlR5#*nBS5{*NmaESH!5uIK`ER6e5op=?d zPRY-UL%X;1Mu*LcbJzuLhn;}!29~@Xv-#E)9CS0$a*wJG@hbLLu|V2U7pOzcAgV)6 zfO~lw{MfvWN}}=A8eu5Bg_k6-F~b+yFw4RvEPRq4FvNBUW{0TyF~n?VJ?c;^T24`i zT2R=%A;j75c3+6;v!&Kvdj5PcD`_hH4WDpYQ!>G8%qzs!j5)Qv={00?e!;Dl z%DQ~Mk`$ybD*h%-vD1lV&V*pcM#y9*_|xhTyr|oo`4Hv@fd$uKjbT!Ce+kQuuXfQp z=sStIs)fngNnaI`V6X-19 zn|+1g5MQwre8sIluCKnvb~wIbH5p$idYa+*in(Kb#fHIG%(8vOR>Ln{WBkJ8((RhQ z-5BB~F@GidPuj7&m^Q{;OhU3FaWm0Bp2vQDW^8NNwwdfaL@73)oHd{8O}Iz5kHaAt z1aBf&21L4``-@m3{K)$Z4qnbHOA_GAp2pIKKFs2XM3#qlSsR81EVsMy)hZ!!$cy%B zd=4sJWA4;rSVr~%YFsJRxnPW$?pk&42B`E;5KGt&gfZo_9iYRG(qZPK%Z;PDG=`Y` z5su%U+}uX>W+1TNY!uioFd%S1;E2E*1RfUnU4hREd`;kA z1bQ{rJY8TVV7kWz+BZON5x5TU+>!IOQow%g7+^{p4|pY@LaTI!n*{a>ObFbkpAGsI z0fo$tnk{7v4e#YZGjlgLMej=3o~{yR{A$ zQ|3SmUn6vl?~B^AIoR#map##1^X}1J=F`ZLd|3O9{p>~BJ*mATJFczeb?tu$r;j7~ z7BJjWI@o(!o`QQS2lMDJ6EgS5h*_euQZH3zW_XQyrNZZg-9w{Zr_7@Z>@mQD zOO$U)I}{8hXsZj_50a{n^1D1+SK7N+$>0Pk>iTTLgR6a~!<+6mYON z1iQ$=K7izWdceU>akVLRblkywu9d(__?W=_)wnv81+>}0mbtot?RBtKuJe?I^j!zr z;0geH&B1t97SX$cUF;6JDuDgX!7Nv!vWSdX+{5*BvCC8z)2R-2tt$fTQU|-m6$f@M zA6s;Q?sY9ymeA)M>BQl1xEk|vP zt`XjEal3%obacLBW0WUjSYpqL!)vrLS|+@okK(=L@OBB0k6Xz|vE%a7=i`7ny#VN< zR{(jhWtqPT^yYCkWY-z0G#(U%rU|_QP@@_^ofZn+mZ=x|a-nzT&^HSG0-v?GfdlKw+H< zm4g1!pe=7h)~1LL6~~7>UX`YSj{9lho=BMux{7m#WtND{GJ!WhT?uybQ)vnEkflna zz;?hCas`H)1qKC10RL0DP~f0Y_6fX9;5C5vDz^aMuY477rSeU{rOKm#=c`Wvrf{Ay z?=j?m?Rm(XVbFQv}`UP%W5 zucn&;KSy5zyn*fjyotU7c!=%;yhD1qTY5PR{dgTk4`RhVK+hmUeh8L$=n=p(Xou27 zRp|A4y^3&y1DK$z0MDl7fIH|CzzX`cRz-8@UBIdIQ^027uA(*Ieu8%C70Q>;W3#}J zz>5WbN#NrGUlypTELkDYr+tA!>LJ$`s9P(~WBOKsBLWWzd_>@j0?ExXK7kDaw+b8) zcu1fdYw>=4m9|qG(hg`>Xjf~uYY%7-Yfos;Xe!o=Tk?}Zh410^3fwR7GdQjBMoa3q z3jDIb`-J{&oTfy(jhhsreF85Rc%#7E1%Ayq1nxt|ZGg7?oREVW_|h0o`;8pa&~Zg?-}zr(h*2@HWFTnh44?fzxr%qaq)g3c3$a#a%%e>N5dV z%+w6jX9+wV92NJY49@^ZMf9Eq?rgxbyhqeO!5tIniyF+uYP?;_sdSH&W%RI=Gw4Yv z%jtC~E9fmLPowvw#Qm1e?Pt?CDd$k7l=G-j$}^?ZM|h{gHiHY&^q_JEpvtIoDTsN# z(o$UaBEtD%&!sPgs&FdsT{F+48y<8c!*s)kZp1iy(TyC_-pS6UsoGLHQ-gT@ns_)B zHJ4FaGTayr4kS&hDjbb6+G6gEgv|C>Z#;*|)vjcGped3}aJ@5VMUsPDYm3HrHOFH~ zD=w|OlEGvuK^+5TtaW!=G}tHN>k~blaVtsviBQ~%MtZ1gFp)I-X+toYGP?%{Olpm# z`l+L5yBSInZ0mszyQpgKpmsd6FoXT;%tSn8g-mL1i6jQ%iC|CEq(HB95{QH;kT9)C zFuFF?-(y-7NV47l-ggF*k$9{f{IHn_S&;!osVbC=ThwPJ1K@D6!Hk9DmVWG>A z>x@TY$+pN&le%}sX>FXT;V`xCM7L{#)(+|#2*P*kl8I)_VN23#Nm#Tg9@`Y}?WK-Y z)E>=2;Pq5HWSA2Seph%%~R80?wm9YrYB2QO(J3T z_e2NRV*J#Zvii(*yWzv$U@Dr#%8JA=sP0I=8BZlC5E(;g>kc$WHS4eYu&; z5?jn9=7Py=TI+6JRQ7%mHZzD5LjfoZXNI|pXEKBJq(dPPhS{>M1QO{DCNN-cFT8Lv z!%pNPvc%F2nZtt@Ewb3gc$8`EhIH@TAQxx8xF=U&6oDl&`yV&YAk1-gL#8`brrJ(( zd?7Z9ryRoav{#$4z><_fdE-rtMrAh@&@|W{V?VR+vk`|)#U_l3Pn(n*qjpr;d#6cu zJg^%Gq)^Zbx5t{Wn6X^D%w%qO*_(A$bKF8qredM3HM~UPJ4|f`E4Jd)j9+cHkGRO7&d_T0HT3c zCU3`$Nj&rKNnt1LNF}q#4s(#5l|CQkKp~6~!AcW^WW{HlL`C z&ZgHLNk+|VCuy>C+?~j1jt>l4k-lv?hNau&L~piTbG&~;BoV>kpF>;S1@b^N5{%`j zS)Pi7vodL=8%!$!drxGv;gC6j=>&h58A@SV2CF(vt3Q%p1qrMZo0z3#m8N-(wsRac zEsK zwg;xx+SJ^Qg30sA88~NA+5MKWHslNr#c}R(yx!tXN_A4C!n-x&#G!|aaRFVzT}6Ao@MHN9c6L3K9C-ny8ufa*u@_)J_#F?)Zl zrRJ_#^~;t70?onDHux+Sj}7+6Qwe*wZ84)}AAGqe9UrSBu?r=GhKo5Tc1G45k2-5J zQ6>J5gs7bpZCec6xOg35%wiZsqh$pLseV}~5a3fH8XRnn1`~-TV~k~67pFVv<}Vam zW1)B$Q7egbV^?!~JD*^VPdFzbr{0AnnoK8HIH3>{SV=kaKDO@=%&7|mlK5nl>g^*< zjzG4d=R{L`(?aQNtUb(}f()Ufe9&j~^fC^5P=6^(v~l{J`8 zTUpMICAu*4a_kDS=p<$Y38x0tO9+e5l1!)B4(*BIjgp)cCChUrn{SgkveXmD8z#)W zj4E>+)$?+aPT}S;Nq~@H*jT^SVkM5w4_LCc+DQr6b&~a-*pOX;V{UAUDb43o{R!EE zFc$tjMke^v8!fGm?Ziy>MtBJ{WBbhROL#fmL_tbXnAV|8l1bD!mg2*E&J>>YB=HoX z2NFK&BMYT1ZvjuzHefN-s_}$~N?L>$#1ohZczB`yi4CAcp@mz2bZvEzX1!sQQM66q zFSoZP+}p%;VoMm$&LYrl;t5&`y;6Ic&Mk5|AIAb2&*Y65FOLLwkfSuwsx0UK+{>I! zSZ<*gANt^Nvd3&chiMRa98dmCcmrdeoIs6jVwtrVZ@~?6~DL#!z%;kE;2d_qG55|NMF6lwP44o9d#VNc1)sW<66|&qdap_ls%YRjx27mOJ*%8IBQBmmitYD&g-q8`##B- zNBi?+vvac5BeA{e!#()1bX8`&+tGh)=`qqP&M*Em;f%GV&WMq9<2hOr1PUfogWeEco#xCKXcUi6C2&j03Uyl zj?Xkm#}^o+7cs#1LZtJTKstZY10~ZYv|&eRp<3F6zbeEGv-6a}A}luYvA5iVdc zK7irU<3>vmT`s%ga=E-hDRV(4k2IEnELs+O#*jOwZV!tV<@q$F%;k2YbUUR|GQs8YkfNMA zZZhnElij)>3K}}%cfjyUR;p;$uYy% zHjw!I%g;YL_=783>hIdG9KZ9xYnROW+ma0_|C9yECsW-&U-^e=zrOR6lTLqVW$XSO zGq$u0{@_=xseiic;9q{Lop4hi6v4u>G{j z7s8E-^sPv~$5kNYj^;Zusnja-HqpEho=NSy8VKz!sX)m`HDl8WkeiW^s&Hlf|&#fnlURA%a4%%5hIxum~?7+_JE3%!;Vm1*ugZQQIf4Sxzv;sNI* zhB*V#jB!3aPZ{TDFc%uiTt!^1W>DwOb0)ulT*|nSue$l?X4Ybd;swR)WlBAR1~`U4 zSW%0{4Ne0Aiwo42Qxx*zL5TAd9pB+8l(*J-giSuYu~?0p@L0kO`|u#uw0vvYyL}D` z&aPHyj&mE4@Fh|Me7EK6#a!_m+BaLi^<7QAu!SeP789x(NsalNh0;{n$6z3%aD)!rl=^VY?YUxHR zIDluynFO+Xn-$-cP)2U9QbsOuQp|LwRh7NpO;n|cSz0FVn(IqH@1N^)?yHyb2a5Qc z>vQg>md4Cf(h5fB`Z`lRh{{#wU^kvD#g_IgS`=ImTClKY$^1GKLpfFHR*SoKLC8?K`%7(D;@7_HP%@FM6EYgwEQ+8R8aa zp0?nBPi@K0;g)#M_AOnJK0L9(UA2h^(>ctlfp8Bk#&@UbYc1D(X>4@akdX`E=^1XP z*90Rm`z?rR%1t!Oe{dT48b&w#m&W*;K;o~HMn;>-p@fJ&37zFu;J0ZjUOn;Ii}2kYwIVz3qIT*)t`|VL7T*|lh~&fi8}Hli!t5D$OHWAQ96i{DN4-5`atnS6 zv<8t?v>|KZ+<-HmUSu15&EmZq=Ne}X7Te2gqXQqHQyJ>z90;Gfe*IwiCMI$iF!Evh$$?^1K23rSoF8Fnzzl*;nrA z>%%+hE`H~W)@;*G=&(3nq6WPCQ!@6oi0%{eW5~6^jxaUi7et?&lOY$zRgE1X+kS)4 zITw_?8vGjcvKT+kr+9n~c(OF!s@G zw0&aFSQveWU{!X6g!&p-jpw@H@!Zyl4@b+7_2gJTE|xZpXwPHhJDjN82mPaV=+=75`q%Nm{{m&8EW-c* literal 0 HcmV?d00001 diff --git a/ConsoleGetPLCData/bin/Debug/GetData_PLC.exe b/ConsoleGetPLCData/bin/Debug/GetData_PLC.exe new file mode 100644 index 0000000000000000000000000000000000000000..1e6e3b8ef87a7c2e301e328cd9c289f77f36da74 GIT binary patch literal 29696 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 HXyAVXpV*;% literal 0 HcmV?d00001 diff --git a/ConsoleGetPLCData/bin/Debug/GetData_PLC.pdb b/ConsoleGetPLCData/bin/Debug/GetData_PLC.pdb new file mode 100644 index 0000000000000000000000000000000000000000..c6cc1d87d18ad103a95ce50b218cda7c07e2ac4f GIT binary patch literal 48640 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 literal 0 HcmV?d00001 diff --git a/ConsoleGetPLCData/bin/Debug/HttpServer.dll b/ConsoleGetPLCData/bin/Debug/HttpServer.dll new file mode 100644 index 0000000000000000000000000000000000000000..77b802e750675c226a54d8932f238573ba1e19cd GIT binary patch literal 148992 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 H8V>kh?F`sb literal 0 HcmV?d00001 diff --git a/ConsoleGetPLCData/obj/Debug/ConsoleGetPLCData.exe b/ConsoleGetPLCData/obj/Debug/ConsoleGetPLCData.exe new file mode 100644 index 0000000000000000000000000000000000000000..bb3609f5f199220e35f2e86e3b40895aede9514b GIT binary patch literal 96768 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%0DO7L&$ySq(GoZ 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 literal 0 HcmV?d00001 diff --git a/ConsoleGetPLCData/obj/Debug/ConsoleGetPLCData.pdb b/ConsoleGetPLCData/obj/Debug/ConsoleGetPLCData.pdb new file mode 100644 index 0000000000000000000000000000000000000000..c892c5af43e0c6b91f0af8335e602daedaa83f67 GIT binary patch literal 165376 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 literal 0 HcmV?d00001 diff --git a/ConsoleGetPLCData/obj/Debug/DesignTimeResolveAssemblyReferences.cache b/ConsoleGetPLCData/obj/Debug/DesignTimeResolveAssemblyReferences.cache new file mode 100644 index 0000000000000000000000000000000000000000..2561e97b912112abe742340e41dac468459a31d1 GIT binary patch literal 725 zcmaKq|8CPT5XZf=>DnwqeSrNDB>n)cvQo;%*i=mrt=hC78nhb!L_%(S0jo|t*-lw` z4qkyj_a=J>USRJqd|fv{R5;Q%zW99ixx0`RLdcz4_{J4_PClKAOe>>uOW##OaynvW zV(7H{lE$6r0<;mT?4yNGCrT=5D-Hb;Dyy07MCa95itHF>BQ=4tKaP9(R{lEgcKKG! zdd$acPnRbd&Wwd(Xqg4{YUM)0+^TKdAJIff37K^Wh8{BW#j>#k#BSA`)KUKHy6PN) z6UF#|Wmf6cMLo?#6_-qdZe!3yaX8m%DmdsSei({xPP`J*6Ngtb=4xB%HReF-rvxCuZYx;`D=>qQ~jOoFZg%SsAD3`L0`R4<`cKIlq zk1_xHEB+YRCSuKpg}k9;#-1uJasfPK_iVE>M-y_mgpxaEhZ>rUSqpkz(i2^kRur(9 p$$I_(kJpIjc`M#Jj+*TKy#De1<}e6?M$?%ARzrJnulpug`vnR0+$8`2 literal 0 HcmV?d00001 diff --git a/ConsoleGetPLCData/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache b/ConsoleGetPLCData/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache new file mode 100644 index 0000000000000000000000000000000000000000..460a24c9edcadaf07ce8d46b01133b9581a6946a GIT binary patch literal 6915 zcmeHM>r&fB6t=-A7($9^N)jlE(xz>ix~h#KTxR$|d`X!C!`L3u8RT)+(%Nj0wd(E) za2Z~quh1vx^by;0RI1WzMvZ}^_3t_Qs47y4zqrt ztujBN?nW(@sV~=8>glw-oFW-AhLEctL3-me$40y@S5d*ecY=5x6-JSWE!Xpvd<27^ z5Xa#s)ZUbmHfv5Rf2yd9tCCaDJImcVYZRD6XD#B|%qEI@xH#%I zl}QcS9$soIaK{FHpJHX1hz3=?VI{vNsoI4}DrV=%rQYN#Ra2s+OriAB}#;KxJT5XoNipHnDhj%gN0D5 z89^IND$%+a5C_E+MH9}!ME%C-Lz%tOw8LF?M8)%)t8+|x4rw9a)qx#Hn{N-?6WpRw za*fxT8xA!w!|fn)QxP7mW^GGz>55ou)7*zvDhN-~%*t&@g;x z=%9moaaNGr#z#R+#A8?-LjhbM62AumzQ$3+QB0ti1TmrA2N}_(K)g9CcIeQ03E1%o z5!CE4Sku_emwUu8c?>W3WS3QT7-atRTzdfX{1MHsn~vQwbKLTq)K$`K6K%cCwDrYQ zI%5La`2b8rns2Gf5k;zd+u7=F{$2lX6KJmF4uvkzioHx;`(Wm1&2NB|KsU=kiHa0D z9ryTek=Ci8E>J1MBGw^|e})=PgP6OlM3?5HGFk%Kr?Fk{X{j%1Gf*1~+CPWV=;`Wf z?I9EJW7w|iQX2*{WiXakR%liJsB~?hG1Rdjf)nXsAuk zGpry=(B=S2h6q(-Zf8#l%HFhz2T@I+_B;SDJkjU8)~|=m1g+0i+j+2pZr#2OJe14qhwfyp{Gxs;dis2h>NXv$_Y@i8)mzN6EnlC3uab7nji|p?+3m41CButD&ynvZ{gPKJ_+Ra zm}}O)15q6Oy_>+;Apm#@g;)WS#8HeRg5aWmB~c74uGJqxEeZ8=XXTqyvaNINM`#~J0As*BQ)fkTf|L+bw&&VU uQ1#$4i%noi5m+S!g)q#HQ3XEt0vjU~KBIpP?~DKXPt5SX=;hKYlm7y!;P*%X literal 0 HcmV?d00001 diff --git a/ConsoleGetPLCData/obj/Debug/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs b/ConsoleGetPLCData/obj/Debug/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs new file mode 100644 index 0000000..e69de29 diff --git a/ConsoleGetPLCData/obj/Debug/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs b/ConsoleGetPLCData/obj/Debug/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs new file mode 100644 index 0000000..e69de29 diff --git a/ConsoleGetPLCData/obj/Debug/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs b/ConsoleGetPLCData/obj/Debug/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs new file mode 100644 index 0000000..e69de29 diff --git a/GetData_PLC.sln b/GetData_PLC.sln new file mode 100644 index 0000000..b37fffc --- /dev/null +++ b/GetData_PLC.sln @@ -0,0 +1,34 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 2013 +VisualStudioVersion = 12.0.31101.0 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GetData_PLC", "GetData_PLC\GetData_PLC.csproj", "{3412CC68-9C7E-4F3E-A9DB-285EFD5F55DB}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ConsoleGetPLCData", "ConsoleGetPLCData\ConsoleGetPLCData.csproj", "{A2378DFD-D382-44FB-B280-61224B8E0ACA}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UpdateMeter", "UpdateMeter\UpdateMeter.csproj", "{07D0B046-C0AD-49E9-BDA6-C6BB0252F26A}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {3412CC68-9C7E-4F3E-A9DB-285EFD5F55DB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {3412CC68-9C7E-4F3E-A9DB-285EFD5F55DB}.Debug|Any CPU.Build.0 = Debug|Any CPU + {3412CC68-9C7E-4F3E-A9DB-285EFD5F55DB}.Release|Any CPU.ActiveCfg = Release|Any CPU + {3412CC68-9C7E-4F3E-A9DB-285EFD5F55DB}.Release|Any CPU.Build.0 = Release|Any CPU + {A2378DFD-D382-44FB-B280-61224B8E0ACA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A2378DFD-D382-44FB-B280-61224B8E0ACA}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A2378DFD-D382-44FB-B280-61224B8E0ACA}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A2378DFD-D382-44FB-B280-61224B8E0ACA}.Release|Any CPU.Build.0 = Release|Any CPU + {07D0B046-C0AD-49E9-BDA6-C6BB0252F26A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {07D0B046-C0AD-49E9-BDA6-C6BB0252F26A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {07D0B046-C0AD-49E9-BDA6-C6BB0252F26A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {07D0B046-C0AD-49E9-BDA6-C6BB0252F26A}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/GetData_PLC.v11.suo b/GetData_PLC.v11.suo new file mode 100644 index 0000000000000000000000000000000000000000..25a87da5a64994eb42fa5b7614a11761125590a8 GIT binary patch literal 70144 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 literal 0 HcmV?d00001 diff --git a/GetData_PLC.v12.suo b/GetData_PLC.v12.suo new file mode 100644 index 0000000000000000000000000000000000000000..cb16b03867c6e84adb00b36cf3097c76ee5aabfd GIT binary patch literal 181760 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 literal 0 HcmV?d00001 diff --git a/GetData_PLC/App.config b/GetData_PLC/App.config new file mode 100644 index 0000000..723be24 --- /dev/null +++ b/GetData_PLC/App.config @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/GetData_PLC/DataToByte.cs b/GetData_PLC/DataToByte.cs new file mode 100644 index 0000000..70b46c7 --- /dev/null +++ b/GetData_PLC/DataToByte.cs @@ -0,0 +1,218 @@ +using System; +using System.Collections.Generic; +using System.IO.Compression; +using System.Text; +using System.Data; +using System.IO; +using System.Runtime.Serialization; +using System.Runtime.Serialization.Formatters.Binary; +using System.Xml; + +namespace GetData_PLC +{ + class DataToByte + { + public DataToByte() { } + + public static int TranNetDataByte() + { + + try + { + + + + + return 1; + } + catch (Exception ex) + { + + return 0; + } + } + + /// + /// 将DataSet格式化成字节数组byte[] + /// + /// DataSet对象 + /// 字节数组 + public static byte[] GetBinaryFormatData(DataSet dsOriginal) + { + byte[] binaryDataResult = null; + MemoryStream memStream = new MemoryStream(); + IFormatter brFormatter = new BinaryFormatter(); + dsOriginal.RemotingFormat = SerializationFormat.Binary; + brFormatter.Serialize(memStream, dsOriginal); + binaryDataResult = memStream.ToArray(); + memStream.Close(); + memStream.Dispose(); + return binaryDataResult; + } + + /// + /// 将DataSet格式化成字节数组byte[],并且已经经过压缩 + /// + /// DataSet对象 + /// 字节数组 + public static byte[] GetBinaryFormatDataCompress(DataSet dsOriginal) + { + byte[] binaryDataResult = null; + MemoryStream memStream = new MemoryStream(); + IFormatter brFormatter = new BinaryFormatter(); + dsOriginal.RemotingFormat = SerializationFormat.Binary; + brFormatter.Serialize(memStream, dsOriginal); + binaryDataResult = memStream.ToArray(); + memStream.Close(); + memStream.Dispose(); + return Compress(binaryDataResult); + } + + /// + /// 解压数据 + /// + /// + /// + public static byte[] Decompress(byte[] data) + { + byte[] bData; + MemoryStream ms = new MemoryStream(); + ms.Write(data, 0, data.Length); + ms.Position = 0; + GZipStream stream = new GZipStream(ms, CompressionMode.Decompress, true); + byte[] buffer = new byte[1024]; + MemoryStream temp = new MemoryStream(); + int read = stream.Read(buffer, 0, buffer.Length); + while (read > 0) + { + temp.Write(buffer, 0, read); + read = stream.Read(buffer, 0, buffer.Length); + } + //必须把stream流关闭才能返回ms流数据,不然数据会不完整 + stream.Close(); + stream.Dispose(); + ms.Close(); + ms.Dispose(); + bData = temp.ToArray(); + temp.Close(); + temp.Dispose(); + return bData; + } + + /// + /// 压缩数据 + /// + /// + /// + public static byte[] Compress(byte[] data) + { + byte[] bData; + MemoryStream ms = new MemoryStream(); + GZipStream stream = new GZipStream(ms, CompressionMode.Compress, true); + stream.Write(data, 0, data.Length); + stream.Close(); + stream.Dispose(); + //必须把stream流关闭才能返回ms流数据,不然数据会不完整 + //并且解压缩方法stream.Read(buffer, 0, buffer.Length)时会返回0 + bData = ms.ToArray(); + ms.Close(); + ms.Dispose(); + return bData; + } + + /// + /// 将字节数组反序列化成DataSet对象 + /// + /// 字节数组 + /// DataSet对象 + public static DataSet RetrieveDataSet(byte[] binaryData) + { + DataSet ds = null; + MemoryStream memStream = new MemoryStream(binaryData,true); + //byte[] bs = memStream.GetBuffer(); + + // memStream.Write(bs, 0, bs.Length); + //memStream.Seek(0, SeekOrigin.Begin); + + IFormatter brFormatter = new BinaryFormatter(); + ds =(DataSet)brFormatter.Deserialize(memStream); + return ds; + } + + /// + /// 将字节数组反解压后序列化成DataSet对象 + /// + /// 字节数组 + /// DataSet对象 + public static DataSet RetrieveDataSetDecompress(byte[] binaryData) + { + DataSet dsOriginal = null; + MemoryStream memStream = new MemoryStream(Decompress(binaryData)); + IFormatter brFormatter = new BinaryFormatter(); + Object obj = brFormatter.Deserialize(memStream); + dsOriginal = (DataSet)obj; + return dsOriginal; + } + + /// + /// 将object格式化成字节数组byte[] + /// + /// object对象 + /// 字节数组 + public static byte[] GetBinaryFormatData(object dsOriginal) + { + byte[] binaryDataResult = null; + MemoryStream memStream = new MemoryStream(); + IFormatter brFormatter = new BinaryFormatter(); + brFormatter.Serialize(memStream, dsOriginal); + binaryDataResult = memStream.ToArray(); + memStream.Close(); + memStream.Dispose(); + return binaryDataResult; + } + + /// + /// 将objec格式化成字节数组byte[],并压缩 + /// + /// object对象 + /// 字节数组 + public static byte[] GetBinaryFormatDataCompress(object dsOriginal) + { + byte[] binaryDataResult = null; + MemoryStream memStream = new MemoryStream(); + IFormatter brFormatter = new BinaryFormatter(); + brFormatter.Serialize(memStream, dsOriginal); + binaryDataResult = memStream.ToArray(); + memStream.Close(); + memStream.Dispose(); + return Compress(binaryDataResult); + } + + /// + /// 将字节数组反序列化成object对象 + /// + /// 字节数组 + /// object对象 + public static object RetrieveObject(byte[] binaryData) + { + MemoryStream memStream = new MemoryStream(binaryData); + IFormatter brFormatter = new BinaryFormatter(); + Object obj = brFormatter.Deserialize(memStream); + return obj; + } + + /// + /// 将字节数组解压后反序列化成object对象 + /// + /// 字节数组 + /// object对象 + public static object RetrieveObjectDecompress(byte[] binaryData) + { + MemoryStream memStream = new MemoryStream(Decompress(binaryData)); + IFormatter brFormatter = new BinaryFormatter(); + Object obj = brFormatter.Deserialize(memStream); + return obj; + } + + } +} diff --git a/GetData_PLC/GetData_PLC.csproj b/GetData_PLC/GetData_PLC.csproj new file mode 100644 index 0000000..8c34fad --- /dev/null +++ b/GetData_PLC/GetData_PLC.csproj @@ -0,0 +1,158 @@ + + + + + Debug + AnyCPU + {3412CC68-9C7E-4F3E-A9DB-285EFD5F55DB} + WinExe + Properties + GetData_PLC + GetData_PLC + v4.0 + 512 + + false + D:\GetPLCData\ + true + Disk + false + Foreground + 7 + Days + false + false + true + true + 1 + 1.0.0.%2a + false + true + true + + + x86 + true + full + false + D:\GetPLCData\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + C9CCE7BB53638EA44ED6B3046F9EB5C26E69B6CF + + + GetData_PLC_TemporaryKey.pfx + + + true + + + false + + + GetData_PLC.Program + + + Mario.ico + + + + + + + + + + + + + + + + + + + Form + + + frmMain.cs + + + + + + + + frmMain.cs + Designer + + + ResXFileCodeGenerator + Resources.Designer.cs + Designer + + + True + Resources.resx + True + + + + SettingsSingleFileGenerator + Settings.Designer.cs + + + True + Settings.settings + True + + + + + + + + False + Microsoft .NET Framework 4 %28x86 和 x64%29 + true + + + False + .NET Framework 3.5 SP1 Client Profile + false + + + False + .NET Framework 3.5 SP1 + false + + + False + Windows Installer 4.5 + true + + + + + + + + \ No newline at end of file diff --git a/GetData_PLC/GetData_PLC.csproj.user b/GetData_PLC/GetData_PLC.csproj.user new file mode 100644 index 0000000..b159ef0 --- /dev/null +++ b/GetData_PLC/GetData_PLC.csproj.user @@ -0,0 +1,13 @@ + + + + + + + + + + zh-CN + false + + \ No newline at end of file diff --git a/GetData_PLC/GetData_PLC_TemporaryKey.pfx b/GetData_PLC/GetData_PLC_TemporaryKey.pfx new file mode 100644 index 0000000000000000000000000000000000000000..b863e7a72a0590f213b727babb2b643b59adfb43 GIT binary patch literal 1668 zcmY*Ydo+}37=P#D6O&vA$r=-(k!cW#A?fBrZ77$OAeJGm(9+hWMen`>Fl;=&vTyl`8~hqa^63l9|eX|(I^ZBhHN1P zQif~BsuD^b#fKp?EDY^N=v@>TBluqlQ;mf&6$pI;@e&C4&(u~$6q*mC1r!+FMA3y5 z|D}=T+pt?!{0EZ-9&jHTEicBxXzm5EB!4#5ZO5~ULFPavj~jeYQWrj(qjZ9J@(=OB zDXQUgk7rqh&Gxf~SEfudaS?^4FFmK;F4(!BPJ7Zk8d;4o8{#q=rr8@Q{fUF-qz9UX z2FHhv&i8#87*E$AzI7oNR1KSssX%5F%g z)VvV~A7guR9WCdPP;gw^v98W=V2ojXN+gpM$6Q4b{obc##1RO1OTUHUu5#_R;{lhn z18sT;Prk;^jrL5lmPRmn^pfi{zV8opj}*5#3EypzD1T7NyZlUzb4jV8`(mQ9y6_r7 zFTZa|HIux%WjW^JI`cbvV{mJ=nSXAz8IaE~OEh~-j+H+pQLlzPt3nycQpj1c%m+Y}<)9^}b4@nbb+pzsF4na1`4jHl*&4Yn zXx^i<#HcU9QTUaKH_BPCw9#L%qx*yJ%y9JvHtBG1WnjZ|>3C6Ep=cg9e5yq)ES>oB z!YR!%C1%K%-sgLceDy?3rANuw{@Pmm+=&39P_E1&J^_>nvx&O-<(j zX->H{j%UnGs+OZ0?~W|!DBL*zbNC*E;x~9X_F^+f&_D~Mb)};lq7;fxPnU)?Qr82_ z&;LSE|8(XGcykDgMF9XPjQ>ata}Pata1QK8%o11w2VnmZn}L0RhPVURL>5S8AA%eZ za|BihvIkCp0-O=-jPy}~&By2fk|_a@f+>W;qF|~j%G^uO1JJ?OAP8_k6o^4Q6vP63 z;ElYSOe6?HG8%#tKs3TdAvp&y5zPKLr4PJ5_I-n7!5{>15G96v`n^1ah|?FLj-gQi z3H1LesQ<|o+LUWjp+tXrT5jj2TvK7RzSMmsq?2XYwJxu|E3H0!Rh@Xf_e$8zZ=y~@ zz0++n)K-~Y8}q}j0~dJ<;W~N#Bk1A%jiJN69*bj~B7XaxAi|N`O!A<*XAYpz>Lr(b zcsNb^l=&1NwuV)froBOJNl{s@V%!j3rzO2W`r1w0lrjn$ZHC)Doc5x1DpG?iOpY$J zCiwp_xjnQf@lB1PKIbN5Na#g+n-rVnn2~AosK_Me0RPQIzM*mWjSoh1@7AQa$E9zo z>e|&de&*@NCJ%D4DY>MA@9BCzZIaW16?71X|B_1cBiMpZ37zF%?3bHw`L^3?dE zO1{vq@7SEJ>g$~1`%=svV%>(Z^I8i=J}kLr=QoTc{*Ik0O(Nb%cY%7@s=2P@UD;1D zCnuCyGVeg{J#m3seh%?=v}?9vRJH9d=gvO&Jl`2mdiAP^+1F1CE?=|0)e)^2pQbK} z=O4e@%(BbpG2QR*GjQ$i$}M|{Q(}|$jQh?_zn8c~oBpmV$+I6)PMFNr-`c+$T18PT#Mt9H+ZV!B%VKq5Q6!VDw$o2jNRGtKSB{Qz(&n0^%`28U ze!rgnBi_rRK8OwF4tiZzsM?l1PJ7agihq6K<%{fvUE!GAAPe%NHi6(IBLJGE9HbB^ z@{pYAHVj$^t5I(Y8EN|U)^M04&xnYZ%b$s#reQUfb6M=0XMEG}&-J7UH(#m6+PyT} HJg~n3eI2~g literal 0 HcmV?d00001 diff --git a/GetData_PLC/Mario.ico b/GetData_PLC/Mario.ico new file mode 100644 index 0000000000000000000000000000000000000000..68b2dc4ece840aee27a50657a824b19c487934b2 GIT binary patch literal 91782 zcmeHw4S-bDdGuw#{UAm0`z4NWHf@-sw3?)NLXg!n%^}pL>f^-@~>E6WsNH zQa!(s%G)hez}P?G|q)Q)$U^Czg!U9D99SFuOV$2!h?XwE42{0VAt zlTugQGfGY3JwYD@u^#-b(uFM7{#k{c*s^MsF7OwNpjB$`-o4o2$baQHTms=AH}Q}6 z3#?tc%3G-}ba$;=xAuYRy1Nuu(f#zpn>YJ+1lB&bcE#qY@fEc@0&Bnc@Wb7Yb*-p9 z1Dn@&KfU?Mhc~ZybcJ<`?(XgtPmX!VvN187!B%j8k9DtWS;plHZHp_)@m9@e1FYJD-d+oz(QJEVy>nnB3W#0ZpRQBo3!BHv{+bkz^ ze=)Q+xB^>oy~nzjsn{}I)$U5@u?w;F#K!K&uzT{uPpshafyW+wTX*-y6Fi~&;f>wv z9u3~W8w9%7j(NEI%Rioq&0kDCa^kVBmJe>`_Ajn$dAQqIbJN49&`pb9S^M$e)GoAk zp!?}DkDb`KMg>khwn{BNfd=ea@z?q~xc-k+DAv-a09NRx*r|W-TmdC zUHGx?$JQ*^cw+Mn!MAr|vrhZu~BKVoV&3+5PYr!4Yep?23&UgX&=WIAHPQ(_J^Lcyd|Simq7Ks4<_A?eoSw zx$Nq$;EK&R{K@%Uldr#i%$OjzcRlgM6K@}-R4le)Ie32Am@(t@_ATSajZwk#KiJiE z1Eg#WezN_dar4GJ@d@?z$ciT;%eZ-*KK`ODTRu5%%oAfi_~hH>U@L$6_<7^DY{5}_ z)0i>1-R->Zgpt_z zEx3ofS#{y^pFXj<`^1)w^Pc$R6PgXN^P*30`Sg>{mY+QGX=e*=;9ed(aQqf$-Igtz zohNW1a~Yg~?HhmcnRQ1hcnWz~y)S?YZ9d_g*tibIR}WVT*VytOs1FVg+S}EZPxBsI ze1|J_iEKtwm}fF)1<-V85C3NDetgTkhs{ycK_{-%x@hl(x?D9%%AYCq2zAs6rLJUo zRH;i@?ge6Qc|OZk;1#RHX*f}-pR&ABDV&ZADD{1omkunCa{Gl!4ON=+&2>#_uJ149 zcynKr{{8-Sb3Id<=P;$idg6~)u5zDyuTs(uN8NToDeZ&`NW0;JH}X8wo{rnT&i5~M zu)WsKz?kuOkuKyfBoYS5{RPx7U38ub1+m&RRyB_fs0dDpU_*EUmaoH(re+lgzEh1E zca0i#(R*PSBPtkrxBBG?*Q@qlR4O`JskTYYs&!gewa*Bt&UqoV;v-{K+w`#Nm>p5- zZ8KGHd>iyuyHcSKsnEomRcKO&YQDBrHBSaz*RCeMd#-Ak)`3dgr_KvSl{#+)?ip9X zu`zYtRrji~lRH&#a!iG%MsZve=fzaZ^bYl&_b*h}|JDlCKC4Z2%xP6O&t0K9=0{cH z&Y((mg;lDnS*2HpRW@<8%5IOSz8$S~s?QT_t-5u)izucmV``cCN`8b-STfH^3 zPFQ3)-TKr!-}zY;nVMDM83}d$ z2f9^cPPb}#|7MgaHFMrNb@PXxRBa2Bs(oQXbu3S+wtLd5eeo77r`62qUs7$+UiHDw z9co_eFIC5itcpJTmnyz8qZa<*)3{Gg1=ZI;FQ|9?@{6ivQXaSz)L8W$6;dbFJKy@> zs%3mhUDf2M@LNx+mXM<&6HDs)iLa>E_r9oFuXWUKO*yIBr&UzP+`Q^snN#uQd04Qb zYQN>Uy5p9gs(a@;s&jrx#qKSs<%=8@U*@R9%A!id%c^^YqwZb(c@^shZR%A^5?@lw zANvOt-@He4uKkLNt;wm_2GD9;b3>X6IK_>T`LO`12Q4`U?eI58HQQ|L&qnJzZ42+w-dT z@AB&NyI)j${^37V_v$jPS5nDspf!$4b-#k^R8;RaMN|`&<;p7k&nMK*ul$e79xSWALuIw&YcH!Wef1~mFAFEt?r;87?Rm*j#piSCEC2c* z>hKGPRq03`&!5Nh=TxO!Q2G5Om4CjZzV^?K${ohBM;!HH|8bT3uA{zo!cqV8o$spe ze$T2J1t@^AK3*9TpCe#?_vw)_cxD?LLu z*zte+>3{m#*Eg?x{Bi!@FxZjY_qY4L_HW<##y@R-@=sPSUc7SUqQ!%r@wZ?3`qy#z zp>I6*^%oFgZ;TivR;2Y23_l+aZ?dsX|_`-#Y7cW};IBv11ex?5F&~r!nk9_4* zi=$VKzVzMi8a?`|yP}J5(&9zXRCRubp6l=LfBaqVns;$ilj46hdfvOa^Ab5ci(;YhTS!1^!Fd>KXz;a z4!?Bbu77gu55qy>Rj4)(JSazyH`{IQ)u>7d(3ezvrGixT`1C zGa1J>sp}Wty=dXWDh~gz|D~7yzW>9nT>1Idp+kr6zWmyrV?QeW-;+%7A#y~BpU5G_wsA|kFowITgOhB_MfQPk-vyc3AMiR!)Ldp7To=o z%YOZy=wi2hP~1Q1^6LO{ssH7Ze>wfe_p|wr9K7lOv}RuU{;p4~=keFTtXF@XlP>?& zBS-L*xWV_n@U53hsNSsX7y-w|9!Vz{wo_Ee|+Pnp6oZvyEpzl ze(9d|8+-qpM@OS~U2^%%nIEj4aNm8MGv66qu;BXj3m;$n_(!gK{PD*ZKE4oqxoE*X z(Rbf*}kozS(ztXXoshx6Qoe5*~8Z zUHEl$bj-VgXJ3Mg%i(r?I`O-0=54p#d`VN&6&)QP=70PHFJFSAS@~OQ>fd=^=f`-9 z+h@<5IpdbL4}9Rae|y#kerv`xS6{=6&%PC#XWm+EpU%#Y>ECTLx#wp2U88?9XWu@1 zHm*L?0&EqJf8YVqeYeZK^(i;sdfSrQZ@cZb*|SlfKdN3|;rIt|@BK|D$)PnvTZ8v4E^_u+(@Gv`~ESIRoR`#XF8{jb;l)nE7R z{mviqJl+L&s5u-r@UH%ye|)gQU-`kmE6efs@dmY*#|_N!AOGR<2M$+WsZ{>uf%tcR z4-L&5EV;e*@=AT&9RJ5SaLvzt@bb?-{y^b}4}a`qIAh6@+aB>BuO4(y_~Vl&9_)I# z>*FV4e{iz$Fdm)HymY|fO1Z~(ojmz34|F{k`-2A#pRBN@czm71y%SzI`LhRO|NFuN ze{k~TKf0H%d$?Ms@9^N^ll%YoBq{eXa#e$?;~MS>vDG;I$tTACB;XOJ0(LoQ#&edc&Fdr*(|By$^)z-vUEL--_s_uH1 zelt!*t6W))t6z;cbponz6KE779r-osLjL;VRCOL=(E#YY5Xz7Wj1K8obu!jfvr?l$ zO<`;YjcHbaw}ug?l3G9!#GMhuni18CTeV8OikNju3*w%LI`8dmYSg$7s?b%fh)qdt zD$sm~3cb^fQ?G49%n6#(uEM0Lqz*Oeyd|LJDlj3cg4cDb@U%`HpH7P-K5bW#S%_Ds zccKK%j!TRhoztOO=X8SNh{fWFQNwC;{Cbt%5K+B75tZ50rt-UD>iqN9s)a<1eKy?` zy=NR^)k!6F!#iG9tyA-=^}32`o9ZBEP*fcsDyZl@#H&lbs$xrX61T>dV*9MJ`tVE# z`^xIx4>>A!C*swmWyGx~RX5_*&egq$KQroH#Hq10S;V7R#HD>Ij`*?@v1;df#HvZq z8pNrOBVJw4coi}6C$Vi4*0*sRV%GIV6=Tdw+6qb`Zbh7#=*gJ$(I}nFHg*bEv_8|^U?JlV_;?2}e zacSyrQSPZ=TLtkpV$**pAx1@f%b0WzV#j}YMP(164*!Dv`>-GJXa@0U_DEUv?ysl} zsQ2rj{SHdRvIh~<9>n(NuQNYb>h@Rf0cgnulg({QL}jH z&%XTSPk#L4_ucmoHJja)7x(^iKL6!E>shkozQv3Ge!vmAd_Mo|vrqr&rhDLVYy z*JN`4r}WZGPh2oM_}&9Yj~4%J-`1@YMxA%wtfBMW1{(Ij$|K!70+!K|+ z=E$?pj{CKv-#g~~pBuja{qncJwQoxA%P(wS5*~MVRBG^V&;Ije*B<@;cbv%BxBo}! zTVML63nMRoZR?Wo75Ch;gcbO&XOCU>fl~Rq&TqWum;d+sFa1T}J=0$P*KPM+F)n(K zeu874zHD~sdnIQ_=r{lKd*9kMHT2n+_owDxIqtVjIDG$Qcf4@)C_=EE-}~N6U;X@N zU;g_gi?IJD{dnpR?|1O|((XKCjRlKAH)96E_=UPj{VCkuPk4?=AobcXc_kV z-8Ww0p&$Rqaeh>I5W7ECb2eA>E!M92gQfUAFkm+-$$R`hT54%*eVyIhwB{jn7X5L} zPUpmxj&l@U305}(Q{bfUBQ<^$X>!tDrOvmB+wA>Zx9C#tBb|U31d{93q}2DGFD~LF zg_JjF0?6}IMq$PLxa_UNxoCnv0{=wk&BL&3&8lrmGkg#D56E>lPquuBDIMZR1cQ`R z9goAN$5m!qCvuB16$m77UJ`aUiStkfn4?bP z9xUk}WI$O^AAE!iu9r|Pv*9Dmf`2dPJZ&HL!~PYXhuu3= zKv_`ba#7`RTpq{eaa<0zviLlfaa<00+Bbi%-xjFm(;trBeSh^i{_w#SOYV&PhS8OO z^w79pe9P#-*r|)lN?*lnPM&{QP zunt;n$hY4d*Qi{HQqu-qa$60b zG{PU-E%`V2OBwCTmO+Dc;=JnZ^G2;ed{ZF^nNNcRU%}JHcvI1dlX{9yVr$7sY^xHt z#c&?-*A9F<3*W((A@?gq_WeBIM3-kvAP%;B^LLh8AhD?sfXpX|J4z2@VydwQ-UjRK zB?q~E2V=?{?t2PE=?p`3@i!Jnn@z-p9+%r;XR{7q@}!Lm2`;8a)uc*kMeU3u5K z9^=UyV^4Ya%e<@ei9Pj2yod6yeFWnx$U3&gpjQk(Xda*+NZEJwI!n+1{K*Ffd#`lQ zF+9Lh_#oqSEX(9TEvM2JKTpR(=Gzdb6+Jy)Pu^=}U;A}6*i-LA--|w=-v^)1^9P

    #-@N5v|SLnHyFD3dptm_{W`$EZg|IBqsjx|gWg{70lPro{GkP4 z)9KS^=+7r?Jx}aNz)i@kd!;M)M)r*!KxyNzeZY!?F*_b%Y>)6lUHs`I+VXEO^!T8T z+#CEYogn&S03V1RAP5Q2@`dLQnDbr!@QyROg!nJh zJb>{bxsIjjpDTNi*jDaLY^85T++CS=aVOqFmcAC%`p_Un)z&I(GdiYZhFVnmbnG<*LKD2|e=uU*kf?tGx zc+GjZCU`>PeagGR(OndGD&PAb2P4<$PE*>;Misi0>i-g0i+zf>mYm~xTEcx zC$+lA$@BqOw#$I**BGUp$n1m=c|mjoFeH{3zhBD}79Ui3!RHUS_|q3~c_8;j)d0Xg z1nkQq_kQdR=J3_%uhkItrQydVVY@M2(UTdr8TEB|T1@1evP78-jc;+W!~jX*DDOA1{a=Fgk#K0IxwiKs~S| zoqQwm0I<(c_C@Ez){BjI^?VK9e*CeH@ugMV?e?bLW}Bhy*oJ{%sET=$i#mo4^}f7JFdpcYC=W=KgI; z`w+mKK7!oW=#W6b362jt7;En81jsdY0m*M4T>QDO4iDttNIC#=pY!xSeLZ9A4fcrF zdP!#8Ez|o;u)WaHf>|AGU3nHgZjPzJo0z+}qinve)oGpG3As(eZ|HR}<{dr+Z8H5Y z*!3A5PB28jfjr^Iy}C|4Lm#5?aX7yz03QSQGWyE!fyWCjPZ<1J@>t^wEJ?p1`VfJ8 zn0i0KIFEXtzC7){!P;PNm&nod9w-BgFxuGC-yXIuFPMF%^!6LfgYf4&ME2s_kY6;h z|5l72U=9G3knIK7r6T;%5_A*uLIvTG&_wE#!FgdYKH<5%e_bB1_@P$*JwG6e^I!Kr zV4w8MzF=?gMveyWK5F@Qx8a=+=+JhJ{Qztm@PlCQ;vNV&cpn(@4V>M)K65;EiE#v} zr^{aMe z`>00*cVi30=XdqJ*;dv2278vT>v3i1zX@QjFX@kA?9Mn&WZ&QpIj5`}J}~%4yHY;< z(e9AxhUD7#cKGBm=JEZQnsp=VEX}sTN*rhNL26IQ2~Re;f~r5z2zPtCX9Eo0c4=e3 zka;GMjs@MRiC%wZ0DU=#_e&k@!(*O@c3<*3kZ-};U~fv7C)htjzo}~XU6~jB;hP0) zGW&vJ<3*3#czSqO^Zj^_QQHLC1#kZ#{NNsA_<;Ta{X`qvp_i55Dea*)c_K7(t5DW{^9x$IT<9ZD~26OuL=+~vsF9iRdc_bmTjqw2c ze#sMVpP;7`Z0yalxd)EN93iLZ572*9l1uh%fggX91GIRcql!P`RKp9|9G0733swQx zM^by7iuB1mqjR;i^VIhoZ^JUZANUV~ecSw)mL<>Mb7h`(-NIgQ9~(xyw}8TuzomV# zW!%G@SaXaI3Ay6|i6|r*%#c2 zKjht&dCWb9{8|Kgffm_Dd62Qalyf8N25-jl9OqMy+;L!fY?0;>PcOK9zh6#m{r)UGe~k2f3{c+a$-#JV90N>n*=3_5d>80{m-z zdg^sxN}MV0+U_@&{q%msdB~FuwDlTyPuEl44fZbn)B*G@M1CQQM$To7AAB_WX=xH{ zwe&SmAGzDTlDq+4NRl`<1iVwL3x?nU*ny5^501Uz3HCdZ2Z%H6zT}93weW@D z&pu7~41?oOAK{$#7a)Hd0`_Gc&jH^<746RvdzXkmbwB<2db*!BKQaq`w3oMWb-qvE z*Wga_G~#t6i}26x~oc+=*%eM>bZx7$Qtg*;*SfOf*i19kO)X9qAo9XwEre8GWJs!nXMsmjWIj&K$!)JwSfYV-*_UFZ~Cw3EDs4yNKs3MnD_(v0Vk*I@lW> zpz*i-e%tTEdBesY{j{R@i9h6?K0!xUFJxBBuHZ*mH+@R zeuB#b;v1USppFfoEug-r=7s8EPkZLl0Q@nw0I?3SCl3hzGNvJ`Z2-1$oQf^~^apGb z{520WoXBk?9Ry$+75|RydT^lJ8~JB^r}4*e{(KMiCAMcF3)KC?lzZBI$US`lwr3pn zS#-U~yq0&ZYgjMxoUWf&N}mF@`AhNzc>;V;p9c^d_<6v{KT5_P>{rq{-Dd|3?&cZI zy2S_VOER)fEIEEf#;pN&@`R`Vi97O!9M@EnLpJ@2+D1f25^Mjp&`trgQ(61-#2#en zeE%}-zsMi(sPX-94*T3{x9?VY+GUvJ1%7L0p{v*;^;S_E|uf!;Lmv9FZ(*a zbA3Jfd*Fjw+^H*QLj(HS?l=OW*87(mAYHvWbO zjLx^PH+)EMa1y%_|3T&{ z`xTLW+I+S%uqW0m4G(ZVJUtG+k3g68d9vxZ0nyc#{QG6!#a*yxdtraejCROJ3O+jd z3VpT29anSTC3QtYuSQsXLD)k$1_@crNmi@Bnm+#01PExcMQ|6K~drS7?+j6Kc>|qFg4S1CpdG^B6zj4}s(SI6WE&DpJ zC%8jiIJSm47TOuihbuOneX{J66WtGeZDe1t2hM#Z(D4SueI%P7>hS=50>q8XM|(Pe zJRta!2V6d&tb&+76dx3QTpW|kxR`!n1Y=FS_}0ijOVI%=gV1ly-gqL+r>y1Q!e5OC z{-Jg!Fuq;%K6SrP9Uc%Jz;WuU`(h)l0DxnmD*M3SZ8zHnWYM;*a}$ESLVZJ%J4KcZ z--y3R-9b6S*dB?6*dA6+SLb?~p*zxAukhG|W#9~3zn`(1j?t^O#g%zbkB;x1lep~Lj%=T}d z9Ce7j@a@=kCx)>$lqI95dA_-ZjMcStKYgXhoG7ke2KL0&#U8jDd8ALKbM{5=nv{LY zHL=eF`+NoTid%BoBH;}jCpyCA0Z$)Lml-<%Jn0LH4G=#7OInYLi z2W&p*gpJVS7pd=Dg8Xx=AoaY~DO$G>fBJ%yA2pusN&GQ(jqe~B`De*^z}5qjD-`^3 ze&2}AUkL2u#GlWmb3K{|1b?;{+Mh(*if_?r{3o#9QKuDSr6nh0&UfQ7>VWno&=szI zXPd;gW&}rKFZkmaPv()Qr!MXVCVkKc#eOZLlvNLZ8++nkk6d0LAJ{zL`2~EIL(F00 z`iu$155PDezIRYZ2Vj1Ar+B>L!sXFAC{|E z1b@iC8jC(gVlVh>A3!i)0^CV159qNa+82}&H1q0j_Drt}y;*+@}J_b%`&9HU%$Wu4ygvz+G$sdBB!` zE>j0+{6{Pw1pF(Me~$;q2X%-%5tu;yT^@knf^UDo7lI9dJ{22a&I2D%ZX>fh(3Y7h z_AVC0pT1riV{RJ#`nGpUJ;;aD;iCU7{E2l9?k+zV9uWNL5AdGgC5dBDCy{^DkI(Gk z&pBi$|E><;JQB(ENhiNMg--!G9uE-zVn66eQLf9nkq2lK%zNzQ1&$Nv`%A)0#GbNG ze-iJwupfZ$8L0qr9whPrsAX0He1Y7ci$DGA0r-Ol_)Zl3iONXGKV&x~*t_@>M_Fh5 z<;Gwl-x7-ff5G16fzjY!>afvm;LBdkGqC0Koy^jJ zQ+mG7%`nu8&JTmN6d^_i!Kar_Iv(iZP(rF4_Y4 zg7n=f)4k*Y;?KAa?ZfsLJ?#4Cfl_%DurJ^2$DI^16{*Jx+kJht}00j0Mds4}u551IwEo2f76x zOM@N&{?q}m0ki|G5BZ7hCiuJK4Lo}P_$~w){kUK$JG3FB*3)y#d0P$xIz@tX^ zGmlI?vbyh#`-buS2_xTZ3oZ-hv}MHK;sNdx%vpEV+t>l|1v|j2$OllT8~h>T9{w)& z)B)0Fz&{OssrSo4@8{MBo$PA7hk?9nxJfy&B{7|Ya&>{ZF0WJSHLOk>(xB)gNj2PU~E8L{Aojca&P*0w7;)? zXOSJzpRW9aH$3dg2X*ilecb1H%dB+eB+V2oz)huqt; zKLK$Jc!2hcK0pugqTvU>k;=Ef_w_@D5dWRvM=?dt|Pzm*_qQp&N_yB@qYO3nS+565&{K#B=r8j+o*k*N_mF++YQ%f=-6Ym$dzrY8vJ}KSP|*L>4aC3oPR>!F z^T2-nPv3z3gVg`f0ljDH1K`+79i!||B>tVK ze{A^p!%xiaABaC~Z6EAzVH?H;K?d=Cb*Gc~yVQa8=tA5FK8Dff#I_#!-#hWJ7yPNS zL0HB&(43A*$VKAX=05FMrVa>?hwS&z76c&w6{iCJ6dU0BfL`7bF-$dv)cM2C4VZ66 z>uJHCeZ6(@rw#y#{%1b`<=*xE8{zN90B8I@Iq=U5{=}O)pZK#~K$MHb4vfE(_=SEE za(a||@+`3@4-V)3;5niZGdmMuTRS~ZMtjMdx>u&+E3Zn&zC!ZzV~_PgTl4ieD|UJ6Mx<(x2YLA z34Y+=oY;UeZGiXykpJiD?^1_QR&@Me`Vln#E)PKdiKXB_-Y5SS{)6U!aK6Yt=Nr@h z-xE=nDj0Tw?P>PH9hz$gr2MhRz?r2gI919SvJA<3`bc zS=o$u4xv3q_E%e0ZKX!ApTl@T>Rlbm@!3yKVm?w z1N2xPHP)3IqyJs(jr^PbKj8!7Z4>iB)c+%ke;@HT{;PSPL-c^l2ebvmpZ>hWssr%X z{tWdSufyv}%ywiD`Nwg2_=o;qes|O%g@0;C7WlU~;fWlhqOZ$)nES{*u+BPUpo{Xb0fl`jsV=^`2>EyM zM|^AW*SUi#{-&?b;7^;a{eJL(7FU)BZERE3$8V z0GkJl{0shK1J3yUG3ftxky*4M@zp$_ZN2gRxLx`{2FSm`ANCCV%_>35C7u9lv9TM z_w7PV1YDX!0Vg`U#mPUDaS8`8eri7aWMIR6nQbjj`9K8sg8nzy!=(^?(+Gds0E}Bo z0sqod=!b?4q3n~#5=+~i!ofZ#w;S(if!9J~wXP{2XchcRN3{P}qyG_yu>Y$r{uoEb zz8=Zdx$$2s#sYEdjObAx{>@W5b({$KX8*8^{h|IBKHxk=*hbkG`DaYocgFcY@HfAO zTqGWXHQJIo(-85KTpQw^%mIw&C-3_4hyO3JKYecce?I&@9Y9P-^#5>N9@}_CDxz z#C4l6CI$D2OhT@2CvyF`M+Nyu@&b8}`k{jR6rO5f0#N(^W$phn51c`+OYjFz8TseC zBc2cF_VsEk_1q7F|7eQ`Tze3NZRmiU%dxXI@FA1eZ&Vu-HfhIAitkS zj;V}$g@7}4O0p~Jl#UdjXV5=43*!^v4`jARz+^!pL}I{341#mr49vW|Qa^?=B`C-+|LH)3Oe&?W)sfD+q=xh&>1 znAbA8o2Bm0$CxhWeMSD=8~}Yk;7>m_y`Q+c_@muTOvdy5L_8=v^?t?u@Bxmr0q-`9 z5ycq#5XMkK9}^Sm=^)~?;-NMi)9&OCxP1e}AD9~+AivQDNe;-h|F#dvTumSRy5cVQ z51Wt!aBV;bc&!b-26caAa?o-5+r`Ed55e~1=f|INLo)9ci4HKiU$?K1m<#s6pK>hN z*TEm-04w3CsiK*ul<}0u2Z;GB-Cr6Bxwo$Y?8D%JGIKuU1MSDb7JwfZH@D6%K~FM& zW%553{_y=cMv^&$8vN1zjd+0eg?<0^e&yo@rv$t1zy{=Yw+i0W(T4hVMqnS>p_g0X zf9E`1Rbyw!vj%_gn)Xdh48XVsKH!F!Q`iv}`A#f{zX={N_h_ELen0RSc(AYsxnJm| z+CCuk0igdU$#?=Jxj*KAsQYR6iM`l-Vo15yvL9WE{y*CNdic{0s5Hh!Vm@1p1=8=0 z@SSn`ft))E`e0e6jQD@V#{Sqm0PKV43rQdb$hwqlnN}(XoA3^dD&pM?j#o4I!}l}! zU*NCD0{if%4rs&!M~FXS=;LVDI=|wX@o!g4)QqlHOHCuA-7lB1AYR|`8^oRupIfM9+$sxU+RAPB=UR3mH!{;@gRK% zaSi$sM)wnY$@xM@1AEFk`^72$hPW+29V#{eC3(TbgJ@fPk6d_wd=Q?J?roi$O18~Q zWnmYx;DZEW!*e!=Y}?#Y5Z^2p><8jsEB~FFFiz6QKXp5O0OD_W0DNG43$e>bv=7+G z2C%(}FL5Cc)KZ&M+z;K4{&&$Y!1|Q%ml#0j>v9M3PHt-$J|}$1L%0txH$?0ik9a?W zzuN~~gS+_p?31;y7yK!+Rs87-c=&t%zsm!ZEf;_CL11+HRh>T`*k?8Vng?p-zaIX^ zZfLt(!vls73{Rk>ZKnK`f8e$7fQ90rB(QFUudj)Ap?DzfFa~2^v++|sxi>n%m4DVj zbU$qX{XZlBxG!~f3hx?}OGPKQ6R{ukJmZNHao>mXNLJU!!(He7sQ0t`w4N7v$9oVQ z|0yz0xrdI|vQPQ1;xG0b>p|jNqyH@(V97suAQ*gg<_c{N6Hu#n0A!7R)?mbb<0S55Y>O9LSh8>M7v2N@ zypIrgl=Z9`tA+6zeURt;L5p0RbNlj6-!nOsv*I2S{VJ>Gc+ zq5KCpPfFGPo8>@L`i#f<3>SAE7gYHc5Mt!QNkT zP7m;@8M{nhwy6buRw;=AC>tI@FH%1W+1t5{d3hN##5RC9Pp?azSWhC)l*M@Q+wsSTg6tJ(< z$DewD{7}R^{D=i*{4&O_HK88`?}eGR@p9Lc2}@4wc9vz@O_x7R>G6)mBbrwX&!7(g z__y5|$2@&e%|GNJ5_!lhyCrcZpVg3Sx0#pc9K`;5dGc(_wEHaL&k<`w%*hM6`knnW zlzU>&xZTBF@_NXTa^3U)(GL)W4h=M+Ed_g)W_f@e7_s*~2Ga$=7k-~#=KbsN1ywJ6 zQ}8VL82CqKvG3aTalAG$ZKKvfL@49=#kc{Yu?jW^qY*vt5B;B9c1lH>Y-zt~TV z`3?k;L!mBJ=sz7?_PPI@_<_JaF*N?@2T;^kn9~n@5C~xG=k%D@PvzM<%7F2EkiX>n zaeN<6`Zds=Mqg-Nu=v671xpt@!wdGeT+F@!rG37=Z0jOf&dPU#=My02HVvu&$pa()-nU;D0QtX<4o z=kfbex?RFk@!n4j?uG|&jiGhGS^s7Luy0`djSZmgM;-w9OO6W50oA9sHT6QispDK8 zF!~Sc>;{o+Mm7IG)^azhJ$Gc@cjJ<2u z=x&WK`BL83HSg@pJwm7}-e*9ax!>@xvE_n2_Ay5vnn3>-&*Z-E+2&$xFt^KK$mn{5 zxm`BKU$?XP183C-0QP~wWuH7i{4tKr!ykHG@OOCt_8>GK_#1s^O7McniPu)dQ@0zx z^TK^HPYUqncbK?M=7JX7ITnmW{4pj2V{)WF%_qx^ajqlF#z%v{MtxMBvjO*Ms@{+D z)5-VZVAosc@Y`TJ^_J`Fe}lbSp7D4uzrMHE zfqi&r{520~Kb7|1$UpHXFL0ec0q~xo`GD>A2WZclC)qpz-5}p& zvv6lSTWu)IcH5g}7klb{+6}+|<>}}_aIWi<(?)>@WbOvh;cnf`eNE}FqkkQ`EQ0s9 z4epT{obTGkxY2S9?Z$SLT<=ij8Ncsg%e#LW*tZRhzsUunKUn+#!vmCi%D*A42gn1| z1ubX~&UX^QJ7P7mX4-eK(vm&;fb_WpOILoqWxg|Ke2#jhu|>X;a?1Ec>O~$fd@xv@ zxQ}*%e1PLQmzn5$$i0?%jEfmk?uoteqlSh5S&adK{jg&HYQMm6c%aG$p%8dr4*ImH z1C0C(+QyVcOYhR}n}PVshu?74`A(hSa1D)6DsF*;z-lE)$ctpNXjA{j84%8Hj&9 zyzOlq8%AEi_cBz@;sNrk-zTv7fIL7w0C}q616$^?44p67&pjPHT|ayR*|#C$4aZ;^FkG#HLU?Xxi+Y8ls}E%3e{E&Qo5*Ls2e%W!o) z@u$A0%#;5O_NS!-I{kQ!^g6Kb)%X+7dbo3&!Q3t>|Aq%JR@n0i>ct0?0Yj!8P&Tn` zm4h>^sCEdS3UKmJ$(aZ^hFDByq@RMEMKzvF5Aci%(VerLv**^=%BOe!@n#5dv zl<|a%GxIdW)+VF7Pqj309dS1~5k8-vhJ`uK)5qC3ovmeHj~w7|<=$X!m&BbsK;p9D z1Fic8+66xk7`f2CWIg*k$FC!A9s6w*gSAnbAL8J z0srzq9x$?Q$|~j|$bJYo+f?flU_LzI0~06knQi~TZV!7|AE$M~Kt0fy59(oWZyPQT znB)BTn{~qnM&8j6>gjreKcC0&xczKqdD!@m*!x~K*7cTwJ;s08I>2CV%E7VMd{7a7 z(AVL4)C1%L63=I>z&5a--?WLp)W=k919iix@Pj$l=7FJ>4fb|vaMz`lb@(XI@g%M5 zO=;xbU~kI$&sN(GcAI$1=WzU20eRp?_}kdm%6tge)+dY?wK-oT-&)?+$r}4YkS#j^W*P-?%HQ``C>%p`>rSR{%yb? z;{g1=eieJlu&wXw<6gyDA4?vvw_!eMMKU^p?a4M9R+|V9==L$#o6^YpP~}iOp!aLc zG2Tt&oONWokZ-BOjJzAHS$8h`$>7h@&jWQa$8p~Fv)b?P$DZqWM%M-yozJq0|IpYQ zZ2hIy8O^}mkmdn%9QlLy@$-Vgwpv!>3LRgZnx9Y)d&)M+_$IXH)a?dy<~E4AA>-Q{ zOo_S84>k{+5&k1G&qF<&8*Kyr=nHNv|AXUiupF!;A5=UZsLu;LpMC>*k8RHOtfw0^ z{={v#enBnHMjj2`ISX?m=LU0@gW+!QH|216z>{-ad%*Hp?elGfKewaZi?z8P>ips8 z{lRee@2k%T(>c*7iTO2Y%D4)!%n9S7i!Ysj?7DK&tf%cnyPpBi`h->*8M?44<>T57=Wo zU=e;`)%FiA|EGg{{d1b@*apKB+J`hcz+h=~fi1`OGHtjfjdvr=jSSmZQD+!^QN2z* z?9H~uJa9@nAbGYi9_sqQKJ{wgZ_BxD3os=&biaugh`AqkKgPtlN>#tz$hgK^K}Hp9 z1c|mn<7o2_mu>9pE!XOTsxLTP9WX!-oO8d=&ktx{OoM*z<=@6X)Py<6Fvn66?_l?C z!#jM-N>1CX66ONZ*au*{ZH#M|ZJZ6(9KQ^i9*z0I9`^P&%?GEa13Vr$>wW!xtQ)PP9S{pr&kp7P)z{@UST^+Q>Yqz_&th(V zzMG#vn3s37i-$2k5Z3vf2;xY_N<~yaueqIM9uE%x0*U$HlE12ISGL<@jc#{WChYt)77$2gM4yfk~ zim!3b@_mhPH`{?bbik{Fe{>$_+QGM0+;{T}&ui?9hlx4g5$89V^t`=sWRRf z=iDNCneUOyvF^O>)FnmC_124b|H%WquG|Cj!Ehh>K-+<#{0m#|?PY_%);U#MP|p_} zzyoJIufM@=q)OlqKj7TTKV`pw`L&C{g0fE;rOYSS!1u#+{2g;RF97E55NzGK0z5^>i^bh{MG{WJ9Ra5bRP45L?-EbNGt#z;C!7n-osheIsO;MpZnBp!Rg?iIjisZ_;Edzb>NS8g9pq1j4b}C zHJp=&_PyYwx03g&Ib-6_b=rX8VD3MLdZTSRv1gsDJP^6AEOtP24R|X!8t;bu^DQOQlCs-A8ext3HICoHWn?5#+?;DWE zZ2V~p5-WAAA$}%&%g!bA0VwZ&{D-3h{P_EQ!5SVIvH6@0R%fdO{+M|D?Arfk$R=?$ zwwm}RVGnG)xJ(R7{qFowoFi&Dgn6W5OKP!~>yE~?7*8-p0MD^Zu3_$oap39TPhYUg z1KI}E;{oA=$l1bcq^}F?L!gT0fwQCkDeKNFkX7T)1OE!-Is}Yt9w7d`J$hbN&JTwF zLiYS|W}7K-gcHW};r4a7oamyS(D5X{?@IjBm@8`d_}9x3R`IX;0Rwp8HIwTZF0TOl z&Vl$3luv&f4|hF0miYVR82~0$55%o~Hjd@bH*a8M3UWs~^)7o~5pzQNbwA@t;Wh9X zb&bKl7jwiB|AF>@IQrkjf>j=w>QfHH(fp`j{Z>NCESH+P~C#-}#XJ_;MUUe#1>@Lk#|D!Qb}(Xa|V>so+1T z9XRWAx||B8r*bTOf7*faS&0FFoBVt-&25RUTKp)>efaLW`4LN7zG+KJhs|E(d#2W& zFS5^RW!-y`$93nbU;9PpXReJui03CxO@QY+s+35#1E#p?vGOd`*lEUsXnxK zTP^lRPqa*gF2Q*f%r$NE2KS5X+jjyVFz3v;vU7>n{UeFL>j#|Gce#g)-$)z>{F7B4 z@W~e1*I;leB{9luw?V00_UnL_3Cslz#MZuN8{|H_!*>krK4stj3I6amp$NhgM+*NM z9e_Mf?lsfDGeSI&(>!o`c-uIcW!msYKgzLR2l(?jt&<1VrP=2@43K@^kobcs*!K{q zoBKH(`(K0q>(=Hs;uT;Y1Qkb;2dD!|M;dVe{D74M@in{?xlZf)j9=bueN<2OUHr)d z(fP#L#QnD4R}X*UI}}MA@S4x@HNtqP?ZCbn1b?tGE~mP$V^(AQMF;ru0la?8B--!l zd5wGm+K{?GU|%>?5!r8yKm9_RhQeOFYhyeAI{nPn|@5r^*Y)ZF@e?A zXShtkpTg zfIs?)MwSQC4fFuxgzyB$?2QnuZl}KBvGsn`8<8mnZ@aXyuZREO*uyV)UFP?Oi*=*p z&IS)e5fj+9-QZYH=bL^0vL2tXKQJ^_k8Nmd^9>&unKxxa{PRDr*c+Yz4~&>CFgBiX zUvf=j`|Zbju=V_Y$7!3vIM4KF+H%ijgSjaU=KgX358(SrKc8}Mus0=mfIi_F#RaCn z-;}tX#Q*Ha_2>5o!<+l)_tB?pooeGw{Pp<8s{9+wP3gznUa!GFW1juZQnvu`LTu<1 z1h-T03k=?kN?wot9Q%vf5i7=*K{p^TkVHSBM_6Z`r(-VcJMseNJu#iDsLFjc$6HVC z$pbdt_HqsOXMK*g*DFr}s{klFTpnnId86$^U)S!ZYCY;mn zw7rh`0AmLRj}01OTyOhO*V1xsV{hYrrq~Pq^z+_O`TVoZTfi&~%GblL9>)G{_0Ai( z&Boj;4~G4z>V2^R=X`FCvyIKUygo3aF2Gnatq=S-*IPHoHZBd;{&GaI$9IwnZ_4}# zFbi-*-;tB5hqZrOW6a4ve!R{4K-_D6y+(3h*Y0CZj6(YeJocNH@U;N2#dsp&gUYGl z-Uxd??p!Cyd72Hy5r()g;AFD0QQ~;iys<+Uu)S%?Uqat*rex zz2*W(xqfN&fK^;S-&>c{tqaKM)&;)L!>tSKmDTD6^r}}Q_j29^f9mcxkK|rnsVj92 z+{=46IBJe}YrNO2yG`J&yHBvn?Dwy`ZEAL#3VQ2qllj)Y>bno%Ro`uqqt)Z3LaVCl za>MGXT)?`VQja)}bve19*BU$zE#hDIT8I15B1c)8A1ZLvEVIP=UV9xaGSvDi`*=LS zsjl0n^MPOM>!D!O>8h-GvgFkBa*IBQr zzn`DZ!unA48Fat@`RcTXUtVg~ZyYFZe)+3ee`FwjHF!F{{aCMIc;C9{1B>DO>!Pss zRvF5_4)&@MaQ`~sssa2;u3HV@U%!$2tp}EM>j59(eruhp)&olQEe+wWdk-Mhw=|Aa z*Lnb{u2tbHBEU3cBlFg&xuSy%u*@jmmOw?^VFPy;lME_FfBJY0h_V_=s6| zZ{V%!8+ey@FX&y)z2J@2<9PwMarDNco^f*z@{Hpo96A~FQP3zg0e_WRb+r^{?N4k? zJ{Vh_kAbqFBB%^1feM|gbD7SSxoBtCYww-M_=Z9-wmzRk{VTCGm}d^}evwe`8bbXY z)W3{x5XYj+v#T^*4 zBIs3_W7gCgWjV>Y+jg+d6(_X|<1;}CY>Tn|@eY0`FyM1U@f;-cJkgc>20TcfBXiE4 zBeAL24k{(Lquyv|O{}{nc@E55m)c#CeF@An*14YbM_q-g&%kG?K1Zg|v8?y3#-WL= z_xrcvkgzKYYk-;px8qvXVUFz+AQlHZ1Ip4=|q2@g$Zk?%#fOvg9d$A^W& zQ`+(U;56#k3%;`omElJtn?dr|jDatG@D4C;+{k_~mP!90}HqWCUV z)M=ZC`RDPiOYgh4`2L}MACcdr6!p=fX2o@C>1mQuL^Q zmi!|1K8X5*I#>5vb>;W_G=(POTdj8{oz69Vz$Nd*w}F>70GoyQwi<9S&*7CguXS!h z>P<}C`V)f@8BYV<5)i%tzhn++V*S~U-nWSPomYJCll6{mAm4*Fxuvz9*j_-}^BXW# zJh)6=gY0V3{KNX6(YHIm=grV5nZ))|i9F9bXE1+3dVd-1g*v!(R->Eo4ccbjPwE`U zd+XFWiR~biT(_Tv>uq<|K0^TCIc%8`HM}p^YF`MxTA3|@GN4oH?@aG=T0mviS!5MF zZ`!_jGQOSZerGihgj|MNAOjt`zB@5D+b-%(m$00~Ha-hw++ahV3XX-W2oB1_qxrg4 z@L5WDNa|1fpyiu3dsw-A)Het!v8^+Q$?Mg&k8L2&YhIDMkB>%U-dZm~&i88_ z#dTtr+@+tv!vVb2GQ9)!cIz%OuI0RSPF(6tJUgh5DARn7E@07>4GtyKxM!*t?=WSK z==vvjWA5AoSjY2F2Fd59-C0uS#MWn}&Vmu2+a^3epCkDc^sM0})Sva#-|IxZ`K?^} zRx~F{6;(Ng4mFi*+JiX$9+PmYlZF3`X_egozUb?uWlX7@m&{uHT$wlCH77d~3q*U&zr{=GKuwl4?2huZON#f0b`@>LSgkVQLl z8Pl)Iuecx2vmf*5V!fvRcplbYcJVXpu_cfd&752428*6+q`U5J|1`MK3Cwv)VkVSpSBV3jrUi!+eZg$!xH9Nh# z^TIEzv$XpWU3c;iWr*z@Uzu?tp`epp6UKOA%ol?BA~Mo0@L9oIw0kZ5o;Yw<_&#{c ztc388$bhbYL%V>wm$hGpF|6<{`R#hS&V){B6W+)0c*d=N`7rG4yr9#L2~FEaqmyKQ z)X5ygoXD&*^e=68nzj#fAGgnHbD}sVf@2eR2JwzrJ`bWi|q+T)g&*EA5D<8=?o%2E%(~Us@qXT$H zC*b4`X5=_x#b=MllS=yS;!uLl~T@0c7-wTOskVxA9LDg zgq+;-S>Z7)C)x&Pb|f(dIq0M}#GQ`W5huMmjQ17U{$Yp<73xBZIPGMiGliS_ul%9{vezv_n zPV+x?ePMTp)3>8lp0`r!lltc|hdBKU>W3&~n|6z~SJxjHjE*_MV7e5UmF{Sp-#aWH zqB&GRKNIGU8qM}+{b9qPm*~3@AM%*sgk>{-QKgJ|CsC*DLD+*MsJp2@_@DepxytOp z{M3+*;`2F~r!Id0d5TSlAy>Px3;kz*{R8}tA-+`@Ob@GHoA0iG@EuUje}?(;gQ)-b zHu2#**CTcX(VvfP%E2eg!N-I>cm}#3b1J7`uj5<$zzYoXra<4Ch4fEah57I~Cx1F%A(!=^566)Q`x*L*jO9v4r@!BBjVezq0 z7up#i)Pr?tTgdMNx63lurCnLN$2Cu?`jJl zeFvkH@C^g-j#Yp8CRrBWJVv|BgFl6~2~BJjYK6_Gj%D1^d>!rwAB_Hs#IbBsL)0DM z3&zIupTbk%7eFsk&$P?}f5QiFo~*yO&hID($1*-J-#D$Q|B&O{QFn}+vFp$IO*zLc z=2H#yBF;#ojrmP&<1?aE^yTSS!;ZP}Ir%^c{v-7VpF1)e^2GDZ@zyn3X2fw_?l<*j ziFNDyI#_P#`v1fc(x(&w@JQX58R{#UxX$= zrx<^k=i?ayqg#A!-iiC@?@gNT1GzFVocg=`)U3?|U5f^9&gW zL+@k0bo(2cdK?PIC0Jt+Isd%orRp~!^>fsI$Bz7K$o?L!S>|)_+ob#so|ds{`{?=` z{zuu+?=ie@O4J{LCdbIwb@z|A;X3D0H<(m0uYR8uewg>YUh^C*4R7o3E9tgidl)hp zRIdr18umAlP;2ix7X#cQj-{F*~OG&rCsef(Vb)Bo*_$*<}ZDGE*P5+}x#7NgU6x4Oq^V1qV zt>>vU$5fx)lYzeB)Y(1;b&s7&{WR-jF`V5&r~d+*p+Jit8?{=oD5s%`0H)fQU4I?Kj=HqvH1vM zkoRF-$x9K=V}#{al*ESf9&rA$wkhs$;HlOrTEA5>sPd5e426-JUl#SpoF0uaXvMp= z=9h9Y;2dn!N1V@_^(HQT=-cCuvJncf{)X)K=X2yZPu?l%OVi$sO4OfYi5tps_9r7cLvmdNI$1hJqO#4`eVMu`p>}n_PKMRa^9=_ zK2ux7%9tl5=dP!Fh@;{Af$|GE9@57gtd2wNL;W#cv;H&ChDGtNHtSBAH9yYZN#1G4 zcRO^uoBFfe4dwYB?uho=HF_4*pJS1|ch~ql#+P6z>%fEjPYMOt=G4PB-_*1{Y<+&v zyhx+EobGnik>l&Vcd|{rS@$Zj-b2-0z85}Zzr^X*bExxB*H%ylWZ_X;@9MiBM&A^X z-;jEbsE!$`u7mAI{W->+dX{6{F{fr3gOoYPatU=U;oY+m$ExEyJVnGu#St5Of(yMp&V9^rgO)hYT*s8A{x#(zO37d`ln(2UKVG@YZHK*XyBu}f z2{)E@!-cQp@wlM0Czplxp3jowv?hRV0(s-Kf>=4jAI8o!WBgKzW3NCQhegU`3{wJQ zm_lcG`G%)sOiw7jsgS~$BpHvyF-bCxhhwLNkoW8At6l%%n@@;4Evg67;nTpXESm->~Cb=lH)RD`MNgA zvDJ)!VI7wCmXY^9Wxh!4sPxIb53;ZGhUcMN3;Qn> zzP^&%--Lb}_IFqN>5y;7J;^7mJMYhDZ=M!MPFv@$u|B|$#{GNQ56b5cOhDf{c#dNL zTIY0v572jV5Z`pf{LNX^&-6vJU!DEA($9%DAP#waN0fb##3nqoLwJSb6#^4G^!*_} zxc`8@Hnd|=#?7Hml6}jpFRv?oYG@b!^1EV~cPQ@lb+R3FA2?)$V-DtYIE7saiY;Q6I5`YH6CPY%hx%%(QEe`>exH)mf<0QU}{zl?n7 z-haUSnZUmT&s&PEFUtKR$hTAeb^Gi4mk(nc*TM+C4-^3(fENUNw98X@v`rY_fWosM zPCF&Up~QpZ9H|3j%mMl=Tc)Qg=-1(Ro4WBtWLh!8dU`GAIt2)X$lA5 z2=+IDf}sfP0dvy2AAq@ZK0ord19;!ag1*0rJDFEyj*<1ib(*Npg5V|gr|7=Gntm1Z zp;Y^TSYOk3!hRFx@pZl!Wy##nUm|wFdyTw5;~B=n`g^6-z67=<+BU@YWxt1}&_wiq zgrIY!PuTQ<6g!0o3+c*g13W`8)m3ZPsz` zFz;Wzw;i*ZW#$T4N7hGjd2UI(O#Ytve6z2n4#+>@)8~Wy(C&QS)QykLJ*#DWDf5x= zJC_!bujV(&A?y4eImWa{@qKcQpUK&o`WOs)8_J%k67G+=73<%hdE6}gj+P0W8@HN^ z&hN+f%_qWEpl?3ZWcb&XC20eGi*#6iAnp%`k=R$Co6GIfk$Z&=X3jE$G27+i`rAsJ zgO_zH;@gfb6Nn9o^)RwbEV6O)j6;>UKjw?z`{1?r=l4FCPmSZ-FwCuXAopv^6y|^C zxUDe8m)Q4rbEb8Dp26yY`*S`kEBByto<;aOFz?a^%uh3q%V%d^D+gap%Wd`f(FVu? zA?!bmAMTHLp=;|9!F=ePA2YW{+eEepbAWwV4`aUD+Gm&X9;X$5nCjyGoa+`sgq2en>jKezYn&}AbthZ^q9`9qLDscj3*qyGGx^wEyU7<1DGro{c3%fY+p%uA6! z`OU-##|CHX#jC`FULYMrj~bU)j$WQgM`p(wwqx?CN|yd@>)g1EeW9Pvc&`~T zFyEb!_YIcz)}6BzabxIqg_tC{3w9aj zw#`q-csu&x;%_7V;COqE1L67f_u*@L*MN^(Y==KcpDhI+k>8}v97Mk%^5DEi9OJL@ z=m+JPDxMq0*cXhi_F@IZDCIVcb&4XUpzoRAhkHzE#yDccg!tZl>vizU_rMQCOvB_X0u!_I@zaUxEA9`j6>Vji8^V2l0H^26hk}pdcHF3YbX0J zF=h_FR|4x%S vd%RF;!5OpncoHNJs 0) + { + return dtStation.Rows[0]["ORG_NAME"].ToString(); + } + else + { + return ""; + } + + } + public static string getStationName(string strID,ref string strDeptID) + { + DataTable dtStation = new DataTable(); + dtStation = ExecuteDataTable("select * from SYS_ORGANISE where ORG_ID='" + strID + "'", "JLXT", ""); + if (dtStation.Rows.Count > 0) + { + strDeptID = dtStation.Rows[0]["PARENT_ORG_ID"].ToString(); + return dtStation.Rows[0]["ORG_NAME"].ToString(); + } + else + { + return ""; + } + + } + public static string getDeptID(string strID) + { + DataTable dtStation = new DataTable(); + dtStation = ExecuteDataTable("select * from SYS_ORGANISE where ORG_ID='" + strID + "'", "JLXT", ""); + if (dtStation.Rows.Count > 0) + { + return dtStation.Rows[0]["PARENT_ORG_ID"].ToString(); + } + else + { + return ""; + } + + } + + public static DataTable ExecuteDataTable(string sql,string strDataBaseName,string strError) + { + // Create a new Oracle command + OracleCommand command = null; + string ConnectionStrings=""; + + + if (strDataBaseName == "JLXT") ConnectionStrings = strCon_jlxt; + if (strDataBaseName == "DTJK") ConnectionStrings = strCon_Dtjk; + + try + { + //Create a connection + using (OracleConnection connection = new OracleConnection(ConnectionStrings)) + { + command = new OracleCommand(sql, connection); + OracleDataAdapter adapter = new OracleDataAdapter(command); + DataSet ds = new DataSet(); + //System.Threading.Thread.Sleep(10) + adapter.Fill(ds); + + + //if(ds.Tables.Count<1) + // return; + DataTable dt = ds.Tables[0].Copy(); + ds.Dispose(); + strError = ""; + return dt; + + } + } + catch (Exception ex) + { + + strError = " oracle查询表格出错!" + ex.Message; + return null; + } + + } + + public static int ExecuteNonQuery(string sql, string strDataBaseName, string strError) + { + string ConnectionStrings = ""; + + + if (strDataBaseName == "JLXT") ConnectionStrings = strCon_jlxt; + if (strDataBaseName == "DTJK") ConnectionStrings = strCon_Dtjk; + using (OracleConnection con = new OracleConnection(ConnectionStrings)) + { + int Num; + con.Open(); + OracleCommand cmd = new OracleCommand(sql, con); + Num = cmd.ExecuteNonQuery(); + con.Close(); + return Num; + } + } + + public static void strAppend(string strFilePath, string strMessage) + { + using (StreamWriter sw = File.AppendText(strFilePath)) + { + sw.WriteLine(strMessage); + sw.Flush(); + sw.Close(); + } + } + + + } +} diff --git a/GetData_PLC/Program.cs b/GetData_PLC/Program.cs new file mode 100644 index 0000000..ff4a5fc --- /dev/null +++ b/GetData_PLC/Program.cs @@ -0,0 +1,44 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace GetData_PLC +{ + static class Program + { + ///

    + /// 应用程序的主入口点。 + /// + [STAThread] + + static void Main() + { + Application.EnableVisualStyles(); + Application.SetCompatibleTextRenderingDefault(false); + + //frmMain frmMainSingle = frmMain.getSingle(); + //Application.Run(frmMainSingle); + + + + bool createdNew; Mutex instance = new Mutex(true, "互斥名(保证在本机中唯一)", out createdNew); + if (createdNew) + { + Application.EnableVisualStyles(); + Application.SetCompatibleTextRenderingDefault(false); + Application.Run(new frmMain()); + instance.ReleaseMutex(); + } + + else + { + MessageBox.Show("已经启动了一个程序,请先退出!", "系统提示", MessageBoxButtons.OK, + MessageBoxIcon.Error); + Application.Exit(); + } + } + } +} diff --git a/GetData_PLC/Properties/AssemblyInfo.cs b/GetData_PLC/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..1039699 --- /dev/null +++ b/GetData_PLC/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// 有关程序集的常规信息通过以下 +// 特性集控制。更改这些特性值可修改 +// 与程序集关联的信息。 +[assembly: AssemblyTitle("GetData_PLC")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("Microsoft")] +[assembly: AssemblyProduct("GetData_PLC")] +[assembly: AssemblyCopyright("Copyright © Microsoft 2014")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// 将 ComVisible 设置为 false 使此程序集中的类型 +// 对 COM 组件不可见。 如果需要从 COM 访问此程序集中的类型, +// 则将该类型上的 ComVisible 特性设置为 true。 +[assembly: ComVisible(false)] + +// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID +[assembly: Guid("d0ed4364-25a9-4717-a315-632b20646a80")] + +// 程序集的版本信息由下面四个值组成: +// +// 主版本 +// 次版本 +// 生成号 +// 修订号 +// +// 可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值, +// 方法是按如下所示使用“*”: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/GetData_PLC/Properties/Resources.Designer.cs b/GetData_PLC/Properties/Resources.Designer.cs new file mode 100644 index 0000000..0f9883e --- /dev/null +++ b/GetData_PLC/Properties/Resources.Designer.cs @@ -0,0 +1,63 @@ +//------------------------------------------------------------------------------ +// +// 此代码由工具生成。 +// 运行时版本:4.0.30319.18444 +// +// 对此文件的更改可能会导致不正确的行为,并且如果 +// 重新生成代码,这些更改将会丢失。 +// +//------------------------------------------------------------------------------ + +namespace GetData_PLC.Properties { + using System; + + + /// + /// 一个强类型的资源类,用于查找本地化的字符串等。 + /// + // 此类是由 StronglyTypedResourceBuilder + // 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。 + // 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen + // (以 /str 作为命令选项),或重新生成 VS 项目。 + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() { + } + + /// + /// 返回此类使用的缓存的 ResourceManager 实例。 + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager { + get { + if (object.ReferenceEquals(resourceMan, null)) { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("GetData_PLC.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// 使用此强类型资源类,为所有资源查找 + /// 重写当前线程的 CurrentUICulture 属性。 + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + } +} diff --git a/GetData_PLC/Properties/Resources.resx b/GetData_PLC/Properties/Resources.resx new file mode 100644 index 0000000..af7dbeb --- /dev/null +++ b/GetData_PLC/Properties/Resources.resx @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/GetData_PLC/Properties/Settings.Designer.cs b/GetData_PLC/Properties/Settings.Designer.cs new file mode 100644 index 0000000..efc116b --- /dev/null +++ b/GetData_PLC/Properties/Settings.Designer.cs @@ -0,0 +1,26 @@ +//------------------------------------------------------------------------------ +// +// 此代码由工具生成。 +// 运行时版本:4.0.30319.18444 +// +// 对此文件的更改可能会导致不正确的行为,并且如果 +// 重新生成代码,这些更改将会丢失。 +// +//------------------------------------------------------------------------------ + +namespace GetData_PLC.Properties { + + + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "12.0.0.0")] + internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { + + private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); + + public static Settings Default { + get { + return defaultInstance; + } + } + } +} diff --git a/GetData_PLC/Properties/Settings.settings b/GetData_PLC/Properties/Settings.settings new file mode 100644 index 0000000..3964565 --- /dev/null +++ b/GetData_PLC/Properties/Settings.settings @@ -0,0 +1,7 @@ + + + + + + + diff --git a/GetData_PLC/bin/Debug/GetData_PLC.exe b/GetData_PLC/bin/Debug/GetData_PLC.exe new file mode 100644 index 0000000000000000000000000000000000000000..21d5caf1f48114849f83f3c09815377e073f7862 GIT binary patch literal 9728 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 gJHi + + + + + diff --git a/GetData_PLC/bin/Debug/GetData_PLC.pdb b/GetData_PLC/bin/Debug/GetData_PLC.pdb new file mode 100644 index 0000000000000000000000000000000000000000..57a74cd19fbd355f93dbb0b2886b4a96ff1f6ae9 GIT binary patch literal 22016 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 xi~@5X%6-Tc;4$E_;C%3vU>7(|J!@c6&mw7wv + + + + + diff --git a/GetData_PLC/bin/Debug/GetData_PLC.vshost.exe.manifest b/GetData_PLC/bin/Debug/GetData_PLC.vshost.exe.manifest new file mode 100644 index 0000000..061c9ca --- /dev/null +++ b/GetData_PLC/bin/Debug/GetData_PLC.vshost.exe.manifest @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/GetData_PLC/bin/Release/GetData_PLC.application b/GetData_PLC/bin/Release/GetData_PLC.application new file mode 100644 index 0000000..523c4c9 --- /dev/null +++ b/GetData_PLC/bin/Release/GetData_PLC.application @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + gsYXw7AaTnDdt4jSKteFW0iOfUI= + + + + \ No newline at end of file diff --git a/GetData_PLC/bin/Release/GetData_PLC.exe b/GetData_PLC/bin/Release/GetData_PLC.exe new file mode 100644 index 0000000000000000000000000000000000000000..26aaf0b2ad255ff831b7c3836c486f9204a0f120 GIT binary patch literal 29184 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 literal 0 HcmV?d00001 diff --git a/GetData_PLC/bin/Release/GetData_PLC.exe.config b/GetData_PLC/bin/Release/GetData_PLC.exe.config new file mode 100644 index 0000000..0207790 --- /dev/null +++ b/GetData_PLC/bin/Release/GetData_PLC.exe.config @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/GetData_PLC/bin/Release/GetData_PLC.exe.manifest b/GetData_PLC/bin/Release/GetData_PLC.exe.manifest new file mode 100644 index 0000000..dd380b4 --- /dev/null +++ b/GetData_PLC/bin/Release/GetData_PLC.exe.manifest @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 43jSD4jmjgww0RXnhxmLOXSBso0= + + + + + + + + + + mRxWD7Tvc0gMvp8wlC1jcMSFaVc= + + + \ No newline at end of file diff --git a/GetData_PLC/bin/Release/GetData_PLC.pdb b/GetData_PLC/bin/Release/GetData_PLC.pdb new file mode 100644 index 0000000000000000000000000000000000000000..b6ff1e6f2fe09a35b566a113dd16234100515316 GIT binary patch literal 36352 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 d-{;{-gkur&Z0 + /// 必需的设计器变量。 + /// + private System.ComponentModel.IContainer components = null; + + /// + /// 清理所有正在使用的资源。 + /// + /// 如果应释放托管资源,为 true;否则为 false。 + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows 窗体设计器生成的代码 + + /// + /// 设计器支持所需的方法 - 不要 + /// 使用代码编辑器修改此方法的内容。 + /// + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(frmMain)); + this.splitContainer1 = new System.Windows.Forms.SplitContainer(); + this.button4 = new System.Windows.Forms.Button(); + this.label1 = new System.Windows.Forms.Label(); + this.textBox2 = new System.Windows.Forms.TextBox(); + this.button3 = new System.Windows.Forms.Button(); + this.checkBox1 = new System.Windows.Forms.CheckBox(); + this.button2 = new System.Windows.Forms.Button(); + this.button1 = new System.Windows.Forms.Button(); + this.comboBox1 = new System.Windows.Forms.ComboBox(); + this.splitContainer2 = new System.Windows.Forms.SplitContainer(); + this.dataGridView1 = new System.Windows.Forms.DataGridView(); + this.textBox1 = new System.Windows.Forms.TextBox(); + this.statusStrip1 = new System.Windows.Forms.StatusStrip(); + this.toolStripStatusLabel1 = new System.Windows.Forms.ToolStripStatusLabel(); + this.toolStripStatusLabel2 = new System.Windows.Forms.ToolStripStatusLabel(); + this.toolStripStatusLabel3 = new System.Windows.Forms.ToolStripStatusLabel(); + this.toolStripStatusLabel4 = new System.Windows.Forms.ToolStripStatusLabel(); + this.toolStripStatusLabel5 = new System.Windows.Forms.ToolStripStatusLabel(); + this.toolStripStatusLabel6 = new System.Windows.Forms.ToolStripStatusLabel(); + this.toolStripStatusLabel7 = new System.Windows.Forms.ToolStripStatusLabel(); + this.toolStripStatusLabel8 = new System.Windows.Forms.ToolStripStatusLabel(); + this.timer1 = new System.Windows.Forms.Timer(this.components); + this.timer2 = new System.Windows.Forms.Timer(this.components); + this.timer3 = new System.Windows.Forms.Timer(this.components); + ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit(); + this.splitContainer1.Panel1.SuspendLayout(); + this.splitContainer1.Panel2.SuspendLayout(); + this.splitContainer1.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).BeginInit(); + this.splitContainer2.Panel1.SuspendLayout(); + this.splitContainer2.Panel2.SuspendLayout(); + this.splitContainer2.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).BeginInit(); + this.statusStrip1.SuspendLayout(); + this.SuspendLayout(); + // + // splitContainer1 + // + this.splitContainer1.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.splitContainer1.Dock = System.Windows.Forms.DockStyle.Top; + this.splitContainer1.Location = new System.Drawing.Point(0, 0); + this.splitContainer1.Name = "splitContainer1"; + this.splitContainer1.Orientation = System.Windows.Forms.Orientation.Horizontal; + // + // splitContainer1.Panel1 + // + this.splitContainer1.Panel1.Controls.Add(this.button4); + this.splitContainer1.Panel1.Controls.Add(this.label1); + this.splitContainer1.Panel1.Controls.Add(this.textBox2); + this.splitContainer1.Panel1.Controls.Add(this.button3); + this.splitContainer1.Panel1.Controls.Add(this.checkBox1); + this.splitContainer1.Panel1.Controls.Add(this.button2); + this.splitContainer1.Panel1.Controls.Add(this.button1); + this.splitContainer1.Panel1.Controls.Add(this.comboBox1); + // + // splitContainer1.Panel2 + // + this.splitContainer1.Panel2.Controls.Add(this.splitContainer2); + this.splitContainer1.Size = new System.Drawing.Size(1250, 616); + this.splitContainer1.SplitterDistance = 49; + this.splitContainer1.TabIndex = 0; + // + // button4 + // + this.button4.Location = new System.Drawing.Point(992, 18); + this.button4.Name = "button4"; + this.button4.Size = new System.Drawing.Size(66, 23); + this.button4.TabIndex = 5; + this.button4.Text = "浏览……"; + this.button4.UseVisualStyleBackColor = true; + this.button4.Click += new System.EventHandler(this.button4_Click); + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(629, 23); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(137, 12); + this.label1.TabIndex = 4; + this.label1.Text = "Copy实时采集文件Data到"; + // + // textBox2 + // + this.textBox2.Location = new System.Drawing.Point(772, 20); + this.textBox2.Name = "textBox2"; + this.textBox2.Size = new System.Drawing.Size(214, 21); + this.textBox2.TabIndex = 3; + // + // button3 + // + this.button3.Location = new System.Drawing.Point(532, 15); + this.button3.Name = "button3"; + this.button3.Size = new System.Drawing.Size(75, 23); + this.button3.TabIndex = 2; + this.button3.Text = "重启线程"; + this.button3.UseVisualStyleBackColor = true; + this.button3.Click += new System.EventHandler(this.button3_Click); + // + // checkBox1 + // + this.checkBox1.AutoSize = true; + this.checkBox1.Location = new System.Drawing.Point(250, 15); + this.checkBox1.Name = "checkBox1"; + this.checkBox1.Size = new System.Drawing.Size(96, 16); + this.checkBox1.TabIndex = 2; + this.checkBox1.Text = "保存到数据库"; + this.checkBox1.UseVisualStyleBackColor = true; + // + // button2 + // + this.button2.Location = new System.Drawing.Point(123, 11); + this.button2.Name = "button2"; + this.button2.Size = new System.Drawing.Size(75, 23); + this.button2.TabIndex = 2; + this.button2.Text = "button2"; + this.button2.UseVisualStyleBackColor = true; + // + // button1 + // + this.button1.Location = new System.Drawing.Point(10, 11); + this.button1.Name = "button1"; + this.button1.Size = new System.Drawing.Size(75, 23); + this.button1.TabIndex = 1; + this.button1.Text = "button1"; + this.button1.UseVisualStyleBackColor = true; + this.button1.Click += new System.EventHandler(this.button1_Click); + // + // comboBox1 + // + this.comboBox1.FormattingEnabled = true; + this.comboBox1.Location = new System.Drawing.Point(405, 14); + this.comboBox1.Name = "comboBox1"; + this.comboBox1.Size = new System.Drawing.Size(121, 20); + this.comboBox1.TabIndex = 0; + this.comboBox1.SelectedIndexChanged += new System.EventHandler(this.comboBox1_SelectedIndexChanged); + // + // splitContainer2 + // + this.splitContainer2.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.splitContainer2.Dock = System.Windows.Forms.DockStyle.Fill; + this.splitContainer2.Location = new System.Drawing.Point(0, 0); + this.splitContainer2.Name = "splitContainer2"; + // + // splitContainer2.Panel1 + // + this.splitContainer2.Panel1.Controls.Add(this.dataGridView1); + // + // splitContainer2.Panel2 + // + this.splitContainer2.Panel2.Controls.Add(this.textBox1); + this.splitContainer2.Size = new System.Drawing.Size(1250, 563); + this.splitContainer2.SplitterDistance = 973; + this.splitContainer2.TabIndex = 1; + // + // dataGridView1 + // + this.dataGridView1.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.ColumnHeader; + this.dataGridView1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; + this.dataGridView1.Dock = System.Windows.Forms.DockStyle.Fill; + this.dataGridView1.Location = new System.Drawing.Point(0, 0); + this.dataGridView1.Name = "dataGridView1"; + this.dataGridView1.RowTemplate.Height = 23; + this.dataGridView1.Size = new System.Drawing.Size(969, 559); + this.dataGridView1.TabIndex = 0; + // + // textBox1 + // + this.textBox1.Dock = System.Windows.Forms.DockStyle.Fill; + this.textBox1.Location = new System.Drawing.Point(0, 0); + this.textBox1.Multiline = true; + this.textBox1.Name = "textBox1"; + this.textBox1.ScrollBars = System.Windows.Forms.ScrollBars.Vertical; + this.textBox1.Size = new System.Drawing.Size(269, 559); + this.textBox1.TabIndex = 0; + // + // statusStrip1 + // + this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.toolStripStatusLabel1, + this.toolStripStatusLabel2, + this.toolStripStatusLabel3, + this.toolStripStatusLabel4, + this.toolStripStatusLabel5, + this.toolStripStatusLabel6, + this.toolStripStatusLabel7, + this.toolStripStatusLabel8}); + this.statusStrip1.Location = new System.Drawing.Point(0, 619); + this.statusStrip1.Name = "statusStrip1"; + this.statusStrip1.Size = new System.Drawing.Size(1250, 22); + this.statusStrip1.TabIndex = 1; + this.statusStrip1.Text = "statusStrip1"; + // + // toolStripStatusLabel1 + // + this.toolStripStatusLabel1.Name = "toolStripStatusLabel1"; + this.toolStripStatusLabel1.Size = new System.Drawing.Size(0, 17); + // + // toolStripStatusLabel2 + // + this.toolStripStatusLabel2.Name = "toolStripStatusLabel2"; + this.toolStripStatusLabel2.Size = new System.Drawing.Size(0, 17); + // + // toolStripStatusLabel3 + // + this.toolStripStatusLabel3.Name = "toolStripStatusLabel3"; + this.toolStripStatusLabel3.Size = new System.Drawing.Size(0, 17); + // + // toolStripStatusLabel4 + // + this.toolStripStatusLabel4.Name = "toolStripStatusLabel4"; + this.toolStripStatusLabel4.Size = new System.Drawing.Size(0, 17); + // + // toolStripStatusLabel5 + // + this.toolStripStatusLabel5.Name = "toolStripStatusLabel5"; + this.toolStripStatusLabel5.Size = new System.Drawing.Size(0, 17); + // + // toolStripStatusLabel6 + // + this.toolStripStatusLabel6.Name = "toolStripStatusLabel6"; + this.toolStripStatusLabel6.Size = new System.Drawing.Size(0, 17); + // + // toolStripStatusLabel7 + // + this.toolStripStatusLabel7.Name = "toolStripStatusLabel7"; + this.toolStripStatusLabel7.Size = new System.Drawing.Size(0, 17); + // + // toolStripStatusLabel8 + // + this.toolStripStatusLabel8.Name = "toolStripStatusLabel8"; + this.toolStripStatusLabel8.Size = new System.Drawing.Size(0, 17); + // + // timer1 + // + this.timer1.Interval = 999; + this.timer1.Tick += new System.EventHandler(this.timer1_Tick); + // + // timer2 + // + this.timer2.Tick += new System.EventHandler(this.timer2_Tick); + // + // timer3 + // + this.timer3.Enabled = true; + this.timer3.Interval = 1000; + this.timer3.Tick += new System.EventHandler(this.timer3_Tick); + // + // frmMain + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(1250, 641); + this.Controls.Add(this.statusStrip1); + this.Controls.Add(this.splitContainer1); + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.Name = "frmMain"; + this.Text = "Form1"; + this.Activated += new System.EventHandler(this.frmMain_Activated); + this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.frmMain_FormClosing); + this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.frmMain_FormClosed); + this.Load += new System.EventHandler(this.frmMain_Load); + this.splitContainer1.Panel1.ResumeLayout(false); + this.splitContainer1.Panel1.PerformLayout(); + this.splitContainer1.Panel2.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).EndInit(); + this.splitContainer1.ResumeLayout(false); + this.splitContainer2.Panel1.ResumeLayout(false); + this.splitContainer2.Panel2.ResumeLayout(false); + this.splitContainer2.Panel2.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).EndInit(); + this.splitContainer2.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).EndInit(); + this.statusStrip1.ResumeLayout(false); + this.statusStrip1.PerformLayout(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.SplitContainer splitContainer1; + private System.Windows.Forms.SplitContainer splitContainer2; + private System.Windows.Forms.DataGridView dataGridView1; + private System.Windows.Forms.TextBox textBox1; + private System.Windows.Forms.StatusStrip statusStrip1; + private System.Windows.Forms.ComboBox comboBox1; + private System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabel1; + private System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabel2; + private System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabel3; + private System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabel4; + private System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabel5; + private System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabel6; + private System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabel7; + private System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabel8; + private System.Windows.Forms.Timer timer1; + private System.Windows.Forms.Timer timer2; + private System.Windows.Forms.Timer timer3; + private System.Windows.Forms.Button button1; + private System.Windows.Forms.Button button2; + private System.Windows.Forms.CheckBox checkBox1; + private System.Windows.Forms.Button button3; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.TextBox textBox2; + private System.Windows.Forms.Button button4; + } +} + diff --git a/GetData_PLC/frmMain.cs b/GetData_PLC/frmMain.cs new file mode 100644 index 0000000..35e9844 --- /dev/null +++ b/GetData_PLC/frmMain.cs @@ -0,0 +1,784 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Data.OracleClient; +using System.Diagnostics; +using System.Drawing; +using System.IO; +using System.Linq; +using System.Net; +using System.Runtime.InteropServices; +using System.Text; +using System.Threading; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace GetData_PLC +{ + public partial class frmMain : Form + { + [DllImport("Iphlpapi.dll")] + + + private static extern int SendARP(Int32 dest, Int32 host, ref Int64 mac, ref Int32 length); + //[DllImport("Ws2_32.dll")] + private static string strErr = ""; + + public static string strAppPath = Environment.CurrentDirectory ; //采集程序路径 + public static string strAPPDataPath = Environment.CurrentDirectory + @"\Data\"; //采集程序文件存储路径 + public static string strParPath = strAPPDataPath + @"par\"; //计量参数文件存储路径 + public static string strConfigPath = strAPPDataPath + @"Config\"; //采集程序参数保存路径 + public static string strDataPath = strAPPDataPath + @"RealTime\"; //实时数据存储路径 + + public static string strDataPath_JlData = strDataPath + @"JlData\"; //分站计量实时数据存储路径 + public static string strDataPath_ScData = strDataPath + @"ScData\"; //输差数据XML存储文件夹 + public static string strDataPath_DataTime = strDataPath + @"DateTime\"; //分站时间xml存储文件夹 + public static string strDataPath_Log = strDataPath + @"Log\"; //日志存储文件夹 + + + + //log 日志存放数据 + public static string strLogPath = strDataPath + @"log\" + DateTime.Now.Year.ToString() + "-" + DateTime.Now.Month.ToString() + "-" + DateTime.Now.Day.ToString() + "_log.txt"; + public static string strLogPath_Data = strDataPath + @"log\" + DateTime.Now.Year.ToString() + "-" + DateTime.Now.Month.ToString() + "-" + DateTime.Now.Day.ToString() + "_Datalog_"; + + + private DataTable dtZhan = new DataTable(); + static DataTable dtJld = new DataTable(); + //检查控制台程序,如果一分钟之内启动超过3次,则可能有错误,重启计算机。 + private static int StartConselTimes; + //控制台是否运行的标志 + private static bool ConselRunFlag; + // 程序启动的时间,用于主程序自动重启 + private static DateTime MainPragramStartTime; + + Boolean SaveHourFlag; //小时保存数据 + Boolean SaveSSFlag; //实时数据保存数据 + Boolean SaveDayFlag; //保存日报表标志 + Boolean SaveSCDayFlag; //保存日报表标志 + + Boolean UpdateFlag; //更新计量器具的标志 + + + private static int SaveDiff = 300;//实时数据存盘间隔 五分钟 + bool SaveEnable; + private static DateTime PragramStartTime;// 程序启动的时间,用于主程序自动重启 + private static DateTime LastSaveTime; + public frmMain() + { + InitializeComponent(); + } + private void frmMain_Load(object sender, EventArgs e) + { + //写入程序已经运行的标志 避免服务器程序重复启动 + System.IO.Directory.CreateDirectory(strAPPDataPath); //Data文件夹 + System.IO.Directory.CreateDirectory(strParPath); //Data\par文件夹 + System.IO.Directory.CreateDirectory(strDataPath); //Data\realtime文件夹 + System.IO.Directory.CreateDirectory(strConfigPath); //Data\realtime文件夹 + + System.IO.Directory.CreateDirectory(strDataPath_JlData); //分站xml存储文件夹 + System.IO.Directory.CreateDirectory(strDataPath_ScData); //输差数据XML存储文件夹 + System.IO.Directory.CreateDirectory(strDataPath_DataTime);//分站时间xml存储文件夹 + System.IO.Directory.CreateDirectory(strDataPath_Log); //日志存储文件夹 + + + // 备份数据库 + + DataSet dsBackUp = new DataSet(); + + DataTable dtBackUp = new DataTable(); + dtBackUp = OracleLink.ExecuteDataTable("select * from RV2_BASEINFO", "JLXT", ""); + dtBackUp.TableName = "FlowMeter"; + dsBackUp.Tables.Add(dtBackUp.Copy()); + + dtBackUp = new DataTable(); + dtBackUp = OracleLink.ExecuteDataTable("select * from RV2_TRANS_CONFIG", "JLXT", ""); + dtBackUp.TableName = "SCConfig"; + dsBackUp.Tables.Add(dtBackUp.Copy()); + + dtBackUp = new DataTable(); + dtBackUp = OracleLink.ExecuteDataTable("select * from SYS_ORGANISE", "JLXT", ""); + dtBackUp.TableName = "OrgConfig"; + dsBackUp.Tables.Add(dtBackUp.Copy()); + + + dsBackUp .WriteXml (strParPath + "dsConfig.xml", XmlWriteMode.WriteSchema); + + + + + + string strParPath1 = strParPath + "runstate.txt"; + if (File.Exists(strParPath)) + { + if (File.ReadAllText(strParPath1) == "true") + { + MessageBox.Show("已有一个采集进程在运行,退出 !", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Error); + Application.Exit(); + } + } + else + { + File.WriteAllText(strParPath1, "true"); + } + + System.Net.IPAddress[] addressList = Dns.GetHostByName(Dns.GetHostName()).AddressList; + toolStripStatusLabel1.Text = "天然气产销厂自动计量采集程序"; + toolStripStatusLabel2.Text = DateTime.Now.ToString(); + + Control.CheckForIllegalCrossThreadCalls = false;//跨线程操作 + string strFileName = ""; + + dtZhan = new DataTable(); + try + { + dtZhan = OracleLink.ExecuteDataTable(SQL_Strings.strSQLZhan, "JLXT", strErr); + } + catch (Exception) + { + strFileName = strDataPath + "dtZhan.xml"; + dtZhan.ReadXml(strFileName); + } + dtZhan.TableName = "集输站场"; + DataTable dtStationNew = dtZhan.Copy(); + try + { + for (int i = 0; i < dtZhan.Rows.Count; i++) + { + //柳屯配气站两台PLC 区分 + string[] tempIp = dtZhan.Rows[i]["IP"].ToString().Split(','); + string[] tempPORT = dtZhan.Rows[i]["PORT"].ToString().Split(','); + if (tempIp.Length > 1) + { + DataRow drTemp = dtStationNew.NewRow(); + drTemp.ItemArray = dtZhan.Rows[i].ItemArray; + dtStationNew.Rows[i]["org_id"] = dtZhan.Rows[i]["org_id"].ToString() + "_0"; + dtStationNew.Rows[i]["org_name"] = dtZhan.Rows[i]["org_name"].ToString() + "_0"; + dtStationNew.Rows[i]["IP"] = tempIp[0]; + dtStationNew.Rows[i]["PORT"] = tempPORT[0]; + for (int j = 1; j < tempIp.Length; j++) + { + drTemp["org_id"] = dtZhan.Rows[i]["org_id"].ToString() + "_" + j.ToString(); + drTemp["org_name"] = dtZhan.Rows[i]["org_name"].ToString() + "_" + j.ToString(); + drTemp["IP"] = tempIp[j]; + drTemp["PORT"] = tempPORT[j]; + dtStationNew.Rows.Add(drTemp); + } + } + } + comboBox1.DataSource = dtStationNew; + comboBox1.DisplayMember = dtZhan.Columns["ORG_NAME"].ToString(); + comboBox1.ValueMember = dtZhan.Columns["ORG_ID"].ToString(); + dtStationNew.WriteXml(strDataPath + "dtZhan.xml", XmlWriteMode.WriteSchema); + } + catch (Exception ex) + { + } + LastSaveTime = DateTime.Now; + PragramStartTime = DateTime.Now; + string name = Dns.GetHostName(); + IPAddress[] ipadrlist = Dns.GetHostAddresses(name); + for (int i = 0; i < ipadrlist.Length; i++) + { + if (ipadrlist[i].ToString() == "10.75.167.5" || ipadrlist[i].ToString() == "10.75.166.5") + { + checkBox1.Checked = true; + + } + } + } + + #region "启停采集控制台" + private void startConsel(string _filePath, string _ProcessesName) + { + + foreach (Process p in Process.GetProcesses()) + { + if (p.ProcessName == _ProcessesName) + { + try + { + p.Kill(); + } + catch + { + + } + } + } + //实例化一个进程类 + + //Thread.Sleep(5000); + + Process cmd = new Process(); + cmd.StartInfo.FileName = _filePath + "\\" + _ProcessesName + ".exe"; + //不显示命令行窗口界面true不显示 + cmd.StartInfo.CreateNoWindow = true; + cmd.StartInfo.WindowStyle = ProcessWindowStyle.Normal; + cmd.Start(); //启动进程 + textBox1.AppendText("采集程序启动---" + DateTime.Now + "\r\n"); + ConselRunFlag = true; + StartConselTimes = 0; + } + + + private void CloseConsel(string _ProcessesName) + { + foreach (Process p in Process.GetProcesses()) + { + + if (p.ProcessName == _ProcessesName) + { + try + { + p.Kill(); + } + catch + { + } + } + } + } + + private void timer3_Tick(object sender, EventArgs e) + { + //定时重启 2天重启一次 + TimeSpan stST = DateTime.Now - MainPragramStartTime; + DateTime SAVETIME = DateTime.Now; + DateTime oldTime = DateTime.Parse(toolStripStatusLabel2.Text); + TimeSpan strRuntime = SAVETIME - oldTime; + toolStripStatusLabel3.Text = "已运行【" + strRuntime.Days.ToString("0#") + "天" + strRuntime.Hours.ToString("0#") + "小时" + strRuntime.Minutes.ToString("0#") + "分钟" + strRuntime.Seconds.ToString("0#") + "秒 】"; + toolStripStatusLabel4.Text = DateTime.Now.ToString(); + + #region //启动停止更新计量器具控制台程序 + //try + //{ + // if (SAVETIME.Hour >= 2 && SAVETIME.Hour < 3 && UpdateFlag == false) //过了2点启动 + // { + // UpdateFlag = true; + // startConsel(strAppPath, "UpdateMeter"); + // try + // { + // File.Delete(strAppPath + @"\Data\UpdateMeter\updateFlag.xml"); + // } + // catch (Exception) + // { + + // } + // } + + + // if (UpdateFlag) //如果更新成功 则关闭控制台程序 + // { + // if (File.Exists(strAppPath + @"\Data\UpdateMeter\updateFlag.xml")) + // { + // CloseConsel("UpdateMeter"); + // } + // } + + + // if (SAVETIME.Hour < 2 || SAVETIME.Hour > 3) + // { + // UpdateFlag = false; + // try + // { + // File.Delete(strAppPath + @"\Data\UpdateMeter\updateFlag.xml"); + // } + // catch (Exception) + // { + + + // } + // } + //} + //catch (Exception ex) + //{ + + //} + #endregion + #region //客户端重启control + try + { + string strQuery = "select * from control"; //从数据库中查询出所有站场的名称和站场ID//返回不带重复记录的站场ID表格 + string RestartFlag = ""; + DataTable ReadFlagTable = OracleLink.ExecuteDataTable(strQuery, "DTJK", ""); + RestartFlag = ReadFlagTable.Rows[0]["RESTART"].ToString(); + if (RestartFlag == "1") + { + strQuery = "update control set RESTART=0 where id=1 "; //从数据库中查询出所有站场的名称和站场ID//返回不带重复记录的站场ID表格 + OracleLink.ExecuteNonQuery(strQuery, "DTJK", strErr); + startConsel(strAppPath, "ConsoleGetPLCData"); + } + + } + catch (SystemException err) + { + + } + + #endregion + try + { + if (stST.Minutes > 2880) + { + System.Diagnostics.Process.Start(System.Reflection.Assembly.GetExecutingAssembly().Location); + Application.Restart(); + } + toolStripStatusLabel5.Text = ""; + Int64 intPLCPageMemory = 0; + Int64 intPLCSystemMemory = 0; + ConselRunFlag = false; + foreach (Process p in Process.GetProcesses()) + { + if (p.ProcessName == "ConsoleGetPLCData") + { + string PLCMemory = "PLC采集程序【物理内存:" + (p.WorkingSet64 / 1024 / 1024).ToString() + " MB--" + "分页内存:" + (p.PagedMemorySize64 / 1024 / 1024).ToString() + " MB】"; + intPLCPageMemory = p.PagedMemorySize64 / 1024 / 1024; + intPLCSystemMemory = p.WorkingSet64 / 1024 / 1024; + toolStripStatusLabel5.Text = PLCMemory; + ConselRunFlag = true; + StartConselTimes = 0; + break; + } + } + + if (ConselRunFlag == false) + { + StartConselTimes = StartConselTimes + 1; + startConsel(strAppPath, "ConsoleGetPLCData"); + textBox1.AppendText("启动采集程序 " + "\r\n"); + + } + + bool Restart = false; + if ((System.Math.IEEERemainder(SAVETIME.Minute, 5) > 0 && System.Math.IEEERemainder(SAVETIME.Minute, 5) < 4) || (DateTime.Now.Hour == 23 && DateTime.Now.Minute >= 56)) + { + Restart = true; + } + if (intPLCPageMemory >= 250 && Restart) + { + CloseConsel("ConsoleGetPLCData"); + Thread.Sleep(2000); + startConsel(strAppPath, "ConsoleGetPLCData"); + toolStripStatusLabel7.Text = (int.Parse(toolStripStatusLabel7.Text) + 1).ToString(); + textBox1.AppendText("分页内存超过250MB,重启采集程序----" + DateTime.Now + "\r\n"); + } + + if (intPLCSystemMemory >= 150 && Restart) + { + CloseConsel("ConsoleGetPLCData"); + Thread.Sleep(2000); + startConsel(strAppPath, "ConsoleGetPLCData"); + toolStripStatusLabel7.Text = (int.Parse(toolStripStatusLabel7.Text) + 1).ToString(); + textBox1.AppendText("物理内存超过150MB,重启采集程序----" + DateTime.Now + "\r\n"); + } + timer1.Enabled = true; + + } + catch (Exception) + { + + } + } + #endregion + private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) + { + + } + + + private void timer1_Tick(object sender, EventArgs e) + { + try + { + string strFilePath = @"D:\GetPLCData\Data\RealTime\"; + DataTable dtStation = new DataTable(); + dtStation.ReadXml(strFilePath + "JlData\\" + comboBox1.SelectedValue.ToString() + ".xml"); + dataGridView1.DataSource = dtStation; + + DataSet SsDataDs = new DataSet();//数据集,用于存放全厂所有计量点实时数据 + DataTable dtScRealTime = new DataTable();//数据集,用于存放全厂站场输差、管管线输差和自定义输差的实时显示 + DataTable TotalTable = new DataTable(); + try + { + dtScRealTime.ReadXml(strDataPath + "ScData.xml"); + SsDataDs.ReadXml(strDataPath + "SsData.xml", XmlReadMode.ReadSchema); + TotalTable.ReadXml(strDataPath + "TotalData.xml"); + + } + catch (SystemException err) + { + if (err.Message != null) + { + //textBox1.AppendText("注意: 读取合并xml文件出错 " + err.Message + err.StackTrace.Substring(err.StackTrace.LastIndexOf("行号") - 1) + "\r\n"); + //textBox1.AppendText("注意: 读取合并xml文件出错 " + "\r\n"); + } + } + + try + { + CopyDirectory(strAppPath + "\\Data\\", textBox2 .Text ); + } + catch + + { + + } + + + + #region 保存到数据库 + if (checkBox1.Checked) + { + DateTime SAVETIME = DateTime.Now; + string strQuery = ""; + #region"保存实时数据"//------------------------------------------------------------------------ + //if (System.Math.Abs(DateDiff.TotalSeconds - SaveDiff) < 1) + if (System.Math.IEEERemainder(SAVETIME.Minute, 5) == 0 && SaveSSFlag == false) + { + strQuery = "select ID,DEPT_ID,STATION_ID,JLD_ID,RTIME,WD,YL,CY,SSL,JRL,JRSJ,YBZT,SSGKLL,CXFLAG from REALTIME_DATA where ID=0"; + DataTable SaveRealTimeData = OracleLink.ExecuteDataTable(strQuery, "DTJK", strErr); + for (int j = 0; j < TotalTable.Rows.Count; j++) + { + DataRow tempRow = SaveRealTimeData.NewRow(); + tempRow["ID"] = TotalTable.Rows[j]["ID"]; + tempRow["RTIME"] = SAVETIME; + tempRow["WD"] = TotalTable.Rows[j]["WD"]; + tempRow["YL"] = TotalTable.Rows[j]["YL"]; + tempRow["CY"] = TotalTable.Rows[j]["CY"]; + tempRow["SSL"] = TotalTable.Rows[j]["SSL"]; + tempRow["JRL"] = TotalTable.Rows[j]["JRL"]; + tempRow["JRSJ"] = TotalTable.Rows[j]["JRSJ"]; + tempRow["YBZT"] = TotalTable.Rows[j]["YBZT"]; + tempRow["SSGKLL"] = TotalTable.Rows[j]["SSGKLL"]; + tempRow["CXFLAG"] = TotalTable.Rows[j]["CXFLAG"]; + tempRow["DEPT_ID"] = TotalTable.Rows[j]["DEPT_ID"]; + tempRow["STATION_ID"] = TotalTable.Rows[j]["STATION_ID"]; + tempRow["JLD_ID"] = TotalTable.Rows[j]["JLD_ID"]; + SaveRealTimeData.Rows.Add(tempRow); + } + try + { + strQuery = "select ID,DEPT_ID,STATION_ID,JLD_ID,RTIME,WD,YL,CY,SSL,JRL,JRSJ,YBZT,SSGKLL,CXFLAG from REALTIME_DATA"; + + SaveRealTimeData.WriteXml ("d:\\ccc.xml",XmlWriteMode.WriteSchema); + OracleLink.SaveDataTable(strQuery, SaveRealTimeData, "DTJK", strErr); + strErr = "注意:" + DateTime.Now + "保存实时数据成功" + "\r\n"; + textBox1.AppendText(strErr); + } + catch (SystemException err) + { + if (err.Message != null) + { + strErr = "注意:" + DateTime.Now + "保存实时数据库时出错" + err.Message + "\r\n"; + textBox1.AppendText(strErr); + } + } + #endregion + #region"保存实时输差"//----------------------------------------------------- + strQuery = "select id, in_p,out_p,rtime, scname, ssintotal, ssouttotal, sssc, ssscbfs, jrlintotal, jrlouttotal, jrlsc, jrlscbfs, station_id, sctype, redept_name from SC_DATA where id=0 "; + try + { + DataTable ScTotalTable = new DataTable(); + ScTotalTable = OracleLink.ExecuteDataTable(strQuery, "DTJK", strErr); + ScTotalTable.Rows.Clear(); + for (int j = 0; j < dtScRealTime.Rows.Count; j++) + { + DataRow tempRow = ScTotalTable.NewRow(); + tempRow["RTIME"] = SAVETIME; + tempRow["ID"] = dtScRealTime.Rows[j]["SCID"]; + tempRow["IN_P"] = dtScRealTime.Rows[j]["IN_P"]; + tempRow["OUT_P"] = dtScRealTime.Rows[j]["OUT_P"]; + tempRow["scname"] = dtScRealTime.Rows[j]["SCNAME"]; + tempRow["ssintotal"] = dtScRealTime.Rows[j]["SsInTotal"]; + tempRow["ssouttotal"] = dtScRealTime.Rows[j]["SsOutTotal"]; + tempRow["sssc"] = dtScRealTime.Rows[j]["SsSc"]; + tempRow["ssscbfs"] = dtScRealTime.Rows[j]["SsPer"]; + tempRow["jrlintotal"] = dtScRealTime.Rows[j]["JrInTotal"]; + tempRow["jrlouttotal"] = dtScRealTime.Rows[j]["JrOutTotal"]; + tempRow["jrlsc"] = dtScRealTime.Rows[j]["JrSc"]; + tempRow["jrlscbfs"] = dtScRealTime.Rows[j]["JrPer"]; + tempRow["station_id"] = dtScRealTime.Rows[j]["station_id"]; + tempRow["redept_name"] = dtScRealTime.Rows[j]["RE_DEPT_ID"]; + tempRow["sctype"] = dtScRealTime.Rows[j]["SCTYPE"]; + ScTotalTable.Rows.Add(tempRow); + } + + strQuery = "select id, rtime,in_p,out_p, scname, ssintotal, ssouttotal, sssc, ssscbfs, jrlintotal, jrlouttotal, jrlsc, jrlscbfs, station_id, sctype, redept_name from SC_DATA "; + OracleLink.SaveDataTable(strQuery, ScTotalTable, "DTJK", strErr); + strErr = "注意:" + DateTime.Now + "保存实时输差数据成功" + "\r\n"; + textBox1.AppendText(strErr); + } + catch (SystemException err) + { + if (err.Message != null) + { + strErr = ("注意:" + DateTime.Now + "保存输差数据失败" + err.Message) + "\r\n"; + textBox1.AppendText(strErr); + } + } + + LastSaveTime = SAVETIME; + SaveSSFlag = true; + } + + if (System.Math.IEEERemainder(SAVETIME.Minute, 5) != 0) + { + SaveSSFlag = false; + } + #endregion + #region "存小时数据"//----------------------------------------------------------------- + if (SAVETIME.Minute == 59 && SAVETIME.Second > 40 && SaveHourFlag == false) //到小时整点,如果还没有存储过则开始存储 + { + strQuery = "select ID,RTIME,WD,YL,CY,SSL,JRL,JRSJ,YBZT,DEPT_ID,STATION_ID,JLD_ID from HOURREPORT where ID=0"; + DataTable SaveHourTable = OracleLink.ExecuteDataTable(strQuery, "DTJK", strErr); + for (int j = 0; j < TotalTable.Rows.Count; j++) + { + DataRow tempRow = SaveHourTable.NewRow(); + tempRow["ID"] = TotalTable.Rows[j]["ID"]; + tempRow["RTIME"] = SAVETIME; + tempRow["WD"] = TotalTable.Rows[j]["WD"]; + tempRow["YL"] = TotalTable.Rows[j]["YL"]; + tempRow["CY"] = TotalTable.Rows[j]["CY"]; + tempRow["SSL"] = TotalTable.Rows[j]["SSL"]; + tempRow["JRL"] = TotalTable.Rows[j]["JRL"]; + tempRow["JRSJ"] = TotalTable.Rows[j]["JRSJ"]; + tempRow["YBZT"] = TotalTable.Rows[j]["YBZT"]; + tempRow["DEPT_ID"] = TotalTable.Rows[j]["DEPT_ID"]; + tempRow["STATION_ID"] = TotalTable.Rows[j]["STATION_ID"]; + tempRow["JLD_ID"] = TotalTable.Rows[j]["JLD_ID"]; + SaveHourTable.Rows.Add(tempRow); + } + + strQuery = "select ID,RTIME,WD,YL,CY,SSL,JRL,JRSJ,YBZT,DEPT_ID,STATION_ID,JLD_ID from HOURREPORT"; + try + { + OracleLink.SaveDataTable(strQuery, SaveHourTable, "DTJK", strErr); + strErr = "注意:" + DateTime.Now + "保存小时数据成功" + "\r\n"; + textBox1.AppendText(strErr); + + SaveHourFlag = true; + SaveHourTable.Dispose(); + } + catch (SystemException err) + { + if (err.Message != null) + { + strErr = "注意:" + DateTime.Now + "保存小时数据出错" + "\r\n"; + textBox1.AppendText(strErr); + } + } + } + + if (SAVETIME.Minute != 59) //过了小时准点 存储标志设为否 + { + SaveHourFlag = false; + } + #endregion + #region "输差每日23:59:55 存盘一次 + if (SAVETIME.Hour == 23 && SAVETIME.Minute.ToString() == "59" && SAVETIME.Second.ToString() == "55" && SaveSCDayFlag == false) //过了零点十分则日报表 + { + strQuery = "select id, in_p,out_p,rtime, scname, ssintotal, ssouttotal, sssc, ssscbfs, jrlintotal, jrlouttotal, jrlsc, jrlscbfs, station_id, sctype, redept_name from SC_DAYDATA where id=0 "; + DataTable ScTotalTableH = new DataTable(); + ScTotalTableH = OracleLink.ExecuteDataTable(strQuery, "DTJK", strErr); + ScTotalTableH.Rows.Clear(); + try + { + for (int j = 0; j < dtScRealTime.Rows.Count; j++) + { + DataRow tempRow = ScTotalTableH.NewRow(); + tempRow["RTIME"] = SAVETIME; + tempRow["ID"] = dtScRealTime.Rows[j]["SCID"]; + tempRow["IN_P"] = dtScRealTime.Rows[j]["IN_P"]; + tempRow["OUT_P"] = dtScRealTime.Rows[j]["OUT_P"]; + tempRow["scname"] = dtScRealTime.Rows[j]["SCNAME"]; + tempRow["ssintotal"] = dtScRealTime.Rows[j]["SsInTotal"]; + tempRow["ssouttotal"] = dtScRealTime.Rows[j]["SsOutTotal"]; + tempRow["sssc"] = dtScRealTime.Rows[j]["SsSc"]; + tempRow["ssscbfs"] = dtScRealTime.Rows[j]["SsPer"]; + tempRow["jrlintotal"] = dtScRealTime.Rows[j]["JrInTotal"]; + tempRow["jrlouttotal"] = dtScRealTime.Rows[j]["JrOutTotal"]; + tempRow["jrlsc"] = dtScRealTime.Rows[j]["JrSc"]; + tempRow["jrlscbfs"] = dtScRealTime.Rows[j]["JrPer"]; + tempRow["station_id"] = dtScRealTime.Rows[j]["station_id"]; + tempRow["redept_name"] = dtScRealTime.Rows[j]["RE_DEPT_ID"]; + tempRow["sctype"] = dtScRealTime.Rows[j]["SCTYPE"]; + ScTotalTableH.Rows.Add(tempRow); + } + strQuery = "select id, rtime,in_p,out_p, scname, ssintotal, ssouttotal, sssc, ssscbfs, jrlintotal, jrlouttotal, jrlsc, jrlscbfs, station_id, sctype, redept_name from SC_DAYDATA "; + OracleLink.SaveDataTable(strQuery, ScTotalTableH, "DTJK", strErr); + strErr = "注意:" + DateTime.Now + "保存实时输差数据成功" + "\r\n"; + SaveSCDayFlag = true; + textBox1.AppendText(strErr); + } + catch (SystemException err) + { + if (err.Message != null) + { + strErr = ("注意:" + DateTime.Now + "保存输差数据失败" + err.Message) + "\r\n"; + textBox1.AppendText(strErr); + } + } + } + + if (SAVETIME.Hour != 23 && SAVETIME.Minute.ToString() != "59" && SAVETIME.Second.ToString() != "55") //过了小时准点 存储标志设为否 + { + SaveSCDayFlag = false; + } + #endregion + #region "存日报表"//----------------------------------------------------------- + + + if (SAVETIME.Hour == 0 && SAVETIME.Minute.ToString() == "10" && SaveDayFlag == false) //过了零点十分则日报表 + { + string Queryql = "select ID,RTIME,QL,DEPT_ID,STATION_ID,JLD_ID,JLSJ from DAYREPORT where ID=0"; + DataTable SaveDAYTable = OracleLink.ExecuteDataTable(Queryql, "DTJK", strErr); + DateTime _Date = DateTime.Now.AddDays(-1); + _Date = DateTime.Parse(_Date.ToString("yyyy-MM-dd")); + for (int j = 0; j < TotalTable.Rows.Count; j++) + { + DataRow tempRow = SaveDAYTable.NewRow(); + tempRow["ID"] = TotalTable.Rows[j]["ID"]; + tempRow["RTIME"] = _Date; + tempRow["QL"] = TotalTable.Rows[j]["ZRL"]; + tempRow["DEPT_ID"] = TotalTable.Rows[j]["DEPT_ID"]; + tempRow["STATION_ID"] = TotalTable.Rows[j]["STATION_ID"]; + tempRow["JLD_ID"] = TotalTable.Rows[j]["JLD_ID"]; + tempRow["JLSJ"] = TotalTable.Rows[j]["ZRSJ"]; + SaveDAYTable.Rows.Add(tempRow); + } + + Queryql = "select ID,RTIME,QL,DEPT_ID,STATION_ID,JLD_ID,JLSJ from DAYREPORT"; + try + { + OracleLink.SaveDataTable(Queryql, SaveDAYTable, "DTJK", strErr); + //SaveDAYTable.WriteXml(strDataPath + DateTime.Now.ToString() + "SaveTable.xml",XmlWriteMode.WriteSchema); + //File.Copy(strDataPath + "TotalData.xml", strDataPath + DateTime.Now.ToString() + "TotalData.xml"); + + strErr = "注意:" + DateTime.Now + "保存日报表成功" + "\r\n"; + textBox1.AppendText(strErr); + + SaveDayFlag = true; + SaveDAYTable.Dispose(); + } + catch (SystemException err) + { + if (err.Message != null) + { + strErr = "注意:" + DateTime.Now + "保存日报表数据出错" + strErr + "\r\n"; + textBox1.AppendText(strErr); + } + } + + + + } + + if (SAVETIME.Hour != 1 && SAVETIME.Minute.ToString() != "10") //过了小时准点 存储标志设为否 + { + SaveDayFlag = false; + } + #endregion + } + #endregion + } + catch { } + } + private void frmMain_Activated(object sender, EventArgs e) + { + + } + private void frmMain_FormClosed(object sender, FormClosedEventArgs e) + { + CloseConsel("ConsoleGetPLCData"); + + } + private void frmMain_FormClosing(object sender, FormClosingEventArgs e) + { + CloseConsel("ConsoleGetPLCData"); + File.WriteAllText(strParPath + "runstate.txt", "false"); + System.Environment.Exit(0);//彻底关闭线程 + + } + private void timer2_Tick(object sender, EventArgs e) + { + + } + + private void button3_Click(object sender, EventArgs e) + { + + string strQuery = "update control set ThreadRestartFlag='1',Thread_ZCID='" + comboBox1.SelectedValue.ToString() + "' where id=1 "; //从数据库中查询出所有站场的名称和站场ID//返回不带重复记录的站场ID表格 + OracleLink.ExecuteNonQuery(strQuery, "DTJK", strErr); + + } + + private void button1_Click(object sender, EventArgs e) + { + string strQuery = "update control set ThreadRestartFlag='1',Thread_ZCID='" + comboBox1.SelectedValue.ToString() + "' where id=1 "; //从数据库中查询出所有站场的名称和站场ID//返回不带重复记录的站场ID表格 + OracleLink.ExecuteNonQuery(strQuery, "DTJK", strErr); + + } + + private void button4_Click(object sender, EventArgs e) + { + + FolderBrowserDialog fbd = new FolderBrowserDialog(); + fbd.SelectedPath = @"D:\"; + + if (fbd.ShowDialog() == DialogResult.OK) + { + this.textBox2.Text = fbd.SelectedPath; + } + + File.WriteAllText(strAppPath + "\\CopyPath.txt", textBox2.Text); + + } + + + + + + + public void CopyDirectory(string sourceDirName, string destDirName) + { + try + { + if (!Directory.Exists(destDirName)) + { + Directory.CreateDirectory(destDirName); + File.SetAttributes(destDirName, File.GetAttributes(sourceDirName)); + + } + + if (destDirName[destDirName.Length - 1] != Path.DirectorySeparatorChar) + destDirName = destDirName + Path.DirectorySeparatorChar; + + string[] files = Directory.GetFiles(sourceDirName); + foreach (string file in files) + { + + File.Copy(file, destDirName + Path.GetFileName(file), true); + File.SetAttributes(destDirName + Path.GetFileName(file), FileAttributes.Normal); + //total++; + } + + string[] dirs = Directory.GetDirectories(sourceDirName); + foreach (string dir in dirs) + { + CopyDirectory(dir, destDirName + Path.GetFileName(dir)); + } + } + catch (Exception ex) + { + StreamWriter sw = new StreamWriter(Application.StartupPath + "\\log.txt", true); + sw.Write(ex.Message + " " + DateTime.Now + "\r\n"); + sw.Close(); + } + } + + + } + + +} diff --git a/GetData_PLC/frmMain.resx b/GetData_PLC/frmMain.resx new file mode 100644 index 0000000..ba74c1c --- /dev/null +++ b/GetData_PLC/frmMain.resx @@ -0,0 +1,1667 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + + 138, 17 + + + 228, 17 + + + 318, 17 + + + + + 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 + AAAAAAAAAAEAAAABAAAAAAAAAAAIABUJAgAYEAAAAAQUACEMCAA5CAAAORgQACkgCAA5LBAAAAQhAAgQ + JgARGScAAQk2AAAQOQAQGDIAFiA1AFIKAABjDAAASighAEI8KQBSRRgAa1kYAHdbFABKQSkAWk05AAAT + RgAQHEoAAAhSAAAYVwAYJEQAGChaACEqQgAhMEIAISxSACQyVQAxPFoAAABqAAIYYwAAAncACBB7ABAU + cwACImcAFDBrABAwcwApOGMAMTxjACEwcwAxQVoAM0NlADVIdwBSSUoAWlFCAERVdwBaYWMAhF0QAIx5 + KQCUeSEAnIIpALWEJQC1ojkAvaZCAJiMdwDGtkIA1rZaANvFRwDex1IA59d7AAEAiAASGIkABQCaABgc + lAAhKIQAKTWJACEolAApOJQAMTyUAAgAqAAQCKUACAC4ABAEtQAYEL0AJianADk4tQApRYQANUuIADlR + iAAxQ5gAOVGUAEZZiQBEWJcASmWMAFJlhABadYwASmKcAFJomQBadZwARkG5AEpjpQBTa6YAWXOrAFp3 + tQBjeKsAe32tAGV8twAIAMYAEADMABAA2QAjFtoAMSjOACkg1gAUAOoAGAD9ACYS6QAxHOcAIgT/ACkS + /QAxGP8AOSTnADUk+wBCNtoAQir/AEg0/QBSPPcAWlXOAGt9xgB7dc4Ac3HeAFJH6wBWR/wAZ1X/AGth + 5wBzZ+cAdWb/AHtx/wCEfd4AhHvvAIh3/wBngqkAc4ipAHOSpQBphLkAdYu8AHuYugBrh8gAc4bGAHOO + xgBzgs4Ac47OAHuOzgBzkswAc4bWAHOM1gB7i9YAc5TWAHuW1gB7m9YAe5beAHud3gCtpowAtbKMAIyS + pQCEkr0AlJ69AJyipQCcpr0Axs+tANvLqgDG17UA79+tAOvbvQD3560A7+e9APfnvQCEnMoAhILWAJSO + 2gCMltYAhJ7eAIyb3gCclt4AhqrIAJSozgCEo9oAnKzWAJym3gCcqt4AjLbeAJS33gClos4ApbTOAKm2 + 2gC6vNgAiILvAISc5wCMnucAjIb/AJSI+wCclvcApZ7/AIyk5wCEqucAjKznAISi7wCMpO8AjKzvAJSs + 6wCMsucAlrfuAIyq9wCUrvcAjLL3AJa2+ACtqucAtarvALW+5wCppP8Ata7/AK2+9wC9tP0ArcXWAL3b + 1gCcxu8AnMT4AKrI7AC1z+8AvdPvAKbM+gC5yvkAq9b9ALbc/AC65v8A3tfGAMjJ2ADb2dsA59/OAO/n + zgD358YA9+/WAM7H5wDO1+cAzMT/AMbb/wDe3/8A2uPrAMbt/wDM+P8A7OrtAO3u/wD37/8A7/P/APf1 + 9wD/9/cA//v3APf2/wD///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAubGZlbG6AAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA15mXmZmTk5OTfZEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAACzncLMzZh9jY19jY19jgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAs8PM + 0dLSwpiXk31oaH19ZmiOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALPIzc3R0tLT0tTNspBoaGh9 + fWhoaI4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADky9LU1NTU0t/UspaSjWVlaGhmaI19ZmhmAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAOTT1N/j38ibaGMiDA8yLgwMIl5jZmVoaGhmYwAAAAAAAAAAAAAAAAAAAAAA + AAAAANPU4+PjjS4uWQsEBAAEBAAEAAxZLi5fZmhlZmYAAAAAAAAAAAAAAAAAAAAAAAAA2tLj4+OKBAQE + BAQPWY6WnI5cDAQABAAENWRmZGO+AAAAAAAAAAAAAAAAAAAAAAAA0d/l5eMMBAQEBFuUlpaWlpaWsjUA + AAQAD2RjZl9nAAAAAAAAAAAAAAAAAAAAAOTO1OXl3zUEBAsLX5acwrLCnJaUlJw1AQAEAi5jX19fjrYA + AAAAAAAAAAAAAAAA4+Pf4+XlIAQECw8kssnQ0NDQzbKblJWyDAAABAAgX2RfZWiNAAAAAAAAAAAAAADj + 5eXj4+WLBAQLHgtk0N/f39/U1M+ylpSWMAAABAQANWhfZmVljgAAAAAAAAAAAPLj5ua74+VcBAsPCwuL + 3+Xl5eXm5d/KnJaWNQQEBAQEJI1jXmJkZb8AAAAAAAAAAOPl5rUs3+VdCwswj97Q5ef19efn5uXQspqW + nMpmDwQEMpBmHWJkZI0AAAAAAAAAAOPm5YoqsuO1C4zl3uDk5fX29vb15+ba056W4ubg1FkEaJpZHVpj + ZWUAAAAAAAAA5t/f32QaVt7jtefl+P2n3PX29vb15+bjz56hp/f049NolmgfGlZiY2W4AAAAAAAA4dTU + 02MaKpLj5+fj/fs7E77n5+fn5eXj0mcHO/705cqWkFUdGlViZWSuAAAAAAAA49TU014qKorj5+fl/ao3 + ERE24ePj49/cMxIGN+v347KWfVQqGlVjY2SRAAAAAAAA4dPT018dKpbl9efi/akWAgIIpufn49SgAwUC + F6r33p6WjlYdGlhlY2OUAAAAAAAA5uPf52AdKtDm5+fm/e04ND4VqOfn49+fCT40Ouz33p6WjVkaGlZk + ZWS6AAAAAAAAAOPl5lUdKuPl5+fj/f1CFDQ83efn5d+kOTQYQvv00J6UZF8OGi9iY2gAAAAAAAAAAAAA + bCgdLOPl5efj+v2rQT9D5+fm5d/PQD1CrfvwspCKZF8OGidSAAAAAAAAAAAAAAAAaygdK9/f4+Pj4/39 + 7qzh5ufm49/Tv6fo6u+PjWZkZF8OGidGAAAAAAAAAAAAAABsak8dG46NjY+SlrXc77aPu7u7u5yWio+l + o41mZGRjY14NHUZGUwAAAAAAAAAAAABqamtGJmNkZDWKZY1ojVsijY2NZY1lIF9kZmRiYzJeXlocJ0ZG + RgAAAAAAAAAAAABqampGUFJaXh4eWV9bIgQyZmZkZmRkIgQtVl4yDyJaWCklJUZGRgAAAAAAAAAAAIRq + ampQTU9OVy0EBAQKBARfY2NiY2JeVQQKBAQEBFVJJSUlREZGRgAAAAAAAAAAAIRqamtrTUZPRkcNBAoE + BCJeXl5eWlpaWR4EBAoEDSklJSVERkZGRgAAAAAAAAAAAABqa2tra09GT09EDQQEHlpaWFpaWFpYWlgP + BAQNJSUlJ0ZGRk5GRgAAAAAAAAAAAABqa2prb2trTUZQTUZGRUdKS0tMTElLSEUnJSclJSVETU5NRkZG + TgAAAAAAAAAAAABra29vb29vb29PRk1GRkZEREREREQnJycnJycnRk1QTU1ORkZGUgAAAAAAAAAAAACA + a29vb3Bwb29wcGpQRkZORkZERERERERETk9pUE9PT01NRk5GfgAAAAAAAAAAAAAAa29vcG9wcHBwc3Bw + cGtqaU9OTU9PT2ppT09QT09PT01NTkZGAAAAAAAAAAAAAAAAcm9vcHBwcHBwcHBwcHRva2tra2ppT1FP + ampqamlqT09NRkZhAAAAAAAAAAAAAAAAAG9vcHBwcHBwcHBwiOrA1bCHr7C9wOp8a2tramppT09PTU0A + AAAAAAAAAAAAAAAAAHJvcHBwcHBwcHB06sF09/f39/fvdLTva2trampqak9PTWEAAAAAAAAAAAAAAAAA + AABvcHBwcHBwcHCB9HVw2/f79/fFcHvqbmtqa2pqaU9pUAAAAAAAAAAAAAAAAAAAAACBcHBwcHBwcHCF + 98Vwhv7z+v6BcNb0eG9va2praWlPfwAAAAAAAAAAAAAAAAAAAAAAdHBwcHBwcHCF/fh0efp5gfhzev33 + eG9ra2pqamptAAAAAAAAAAAAAAAAAAAAAAAAAHBwcHBwcHB5/f3FcHl0c3pw2/33b2tra2pqamoAAAAA + AAAAAAAAAAAAAAAAAAAAAABwcHBwcHBw2f3+dHPx2XB6/f3Bb2trampqagAAAAAAAAAAAAAAAAAAAAAA + AAAAAACJcHBwcHBwdNv9x/H9/cfx/cZva29ra2pqAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiXBwcHBw + cHOC8f39/f7bgW9va2tramsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB0cHBwc3NwcHN0dHBvb29r + b2prbgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgXNwc3BwcHBwb29wb2tvamuDAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAACCc3BwcHBvcG9va2tsgwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAACGe3dxcXaAiAAAAAAAAAAAAAAAAAAAAAAAAAAA///4H///AAD//8AH//8AAP// + gAH//wAA//4AAH//AAD/+AAAH/8AAP/gAAAP/wAA/8AAAAf/AAD/wAAAA/8AAP+AAAAB/wAA/4AAAAH/ + AAD+AAAAAH8AAPwAAAAAPwAA+AAAAAAfAADwAAAAAA8AAPAAAAAADwAA8AAAAAAPAADgAAAAAAcAAOAA + AAAABwAA4AAAAAAHAADgAAAAAAcAAOAAAAAABwAA8AAAAAAPAAD8AAAAAD8AAPwAAAAAPwAA+AAAAAAf + AAD4AAAAAB8AAPgAAAAAHwAA8AAAAAAfAADwAAAAAB8AAPgAAAAAHwAA+AAAAAAfAAD4AAAAAB8AAPgA + AAAAHwAA/AAAAAA/AAD8AAAAAD8AAP4AAAAAfwAA/gAAAAB/AAD/AAAAAP8AAP8AAAAA/wAA/4AAAAH/ + AAD/wAAAA/8AAP/gAAAH/wAA/+AAAA//AAD/8AAAH/8AAP/8AAA//wAA//4AAH//AAD//4AB//8AAP// + 8A///wAAKAAAACAAAABAAAAAAQAIAAAAAAAABAAAAAAAAAAAAAAAAQAAAAEAAAAAAAAAAAgAAAIQAAAI + EAAAAhgAAAgYAAgMGAA5CAAAOTAYAAAAIQAADCEAAAQpAAgMKQAIESEACBIpABAYKQAQGDEAEBg5ABgk + OQAhLDkAQggAAEIoIQBCPCEAQjQxAHNnOQACF0oAARlTABgiQgAYKEIAGChKAAghVgAYJloAISpCACEq + SgAhMEoAITRSACk0UgApOFIAKThaAAECaQABAnUACCBjABAsawApPGsAMTxjACE8ewAxQVIAOUljADFB + awA5SWsAOU17AFpRQgBjUVoAQlFrAEJRewB7dXsAlHkpAJh7NQCcjjkApZY5AK2SSgDOsnMAAwOHABQY + iAAFAJgAEAqcABgkiAAhKYkAKTScAAgAqQAQEKUACAC6ABAEuQAhHKUAKSitAClJjAA5R5gAOV2cAEJZ + hABKWYQAQlmMAEJVlwBSZYwAUmmMAFp1jABKYZQAQmGcAEpinABKaZwAUmmUAFJlnABSaZwAWnGcAGNx + nABSSb0ASmWlAFJpqABacaUAUnGtAFpzrQBjeaUAY3WtAGN5rQBje7UAa321AGN9vQBrfb0ACADGABAA + zAAQANoAKRjOACUY2gA2KNsAFADrABgA/QAhDOsAKRTnACMI/wAzGf8AOSjnADcj+gBCOM4AQiz3AEo4 + /wBaTd4AWlfWAGNZzgBracoAc23GAGt9xgBzbd4AWknvAFhG/wBjWe8AZ1f/AHNd/wB7be8AdWb9AIh7 + 7wBrgqUAc5KtAGeEuQBzhrUAe461AHOOvQB7nr0Aa4bGAGuKxgBzjMYAc4bOAHONzgB7is4Ac5LGAHuV + xgBzks4Ae57OAHuK1gBzit4Ac5bWAHuW1gB7mtYAe5TeAHue3gCElrUApa6tANayhADv24wA69mcAPfn + nADGw60Azte9AISGzgCEmsYAhJ7OAIyG3gCMltYAhKbOAJSmxgCUrs4AnK7OAISq1gCMqtYAhKbeAIyq + 3gCcqtYApb7OAK221gCtutYArbreALW63gC9ut4AhJvnAIye5wCUjP8AhKrnAIys5wCMpu8AjK7vAJSm + 5wCMsucAlLbnAJy+5wCUtu8AlLrvAJy+7wCMrvcAlK73AJSz9wCUuvcAnL73ALWy5wC1vOcArar3AKW+ + 9wC9uv8Axrz7ALXT3gCcxfcAtcPnALXP7wCt0+8Atd/vAKXH9wCtx/cApc33AKXH/wClzf8Arc//ALXP + 9wCt1PcApdP/AK3V/wCt3P8AtdP3ALXb9wC92/cAtdP/ALXd/wC14/8Aveb/AL3r/wDG284AzsfvAMrZ + 6wDe2+sAxsP/ANbL/wDe2/8A1uP3AMv4/wDr6e0A6+n7APfz9wD/+/cA9/f/AP///wAAAAAAAAAAAAAA + AAAA06+cl6+9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA06G/v5WBgWpqvAAAAAAAAAAAAAAAAAAAAAAA + AAAA2sDEzs6/oZZpaWpoaLsAAAAAAAAAAAAAAAAAAAAAAMbOzs7Q0LegkmdnZ2dqZ44AAAAAAAAAAAAA + AAAAAADN2eHHlGMhDSASDSFbZWdnZ2QAAAAAAAAAAAAAAAAA1dnhtQ8FDg0xUlMvBg0BD1llYbEAAAAA + AAAAAAAAAADO5+cvBQUkk5qalpaZEwEBJWFbXQAAAAAAAAAAAADj2eHoLgUMG6DDx8O2n5aYAwEBIltb + Z5kAAAAAAAAA7Ofm5pEFDBA2y+Dg3tHDmpogAQICTmNjY6wAAAAAAADl6FjgjAocVK3n7+/u6MyimmlP + DgVOZy1iYwAAAAAA6+XoHrTMNdzb8+35+fnv4MKf8+nDJpNYHmJjuAAAAADf0NAZLeDu5f89N/Dw7+jh + wzSl+tmiaSkZX2OZAAAAANHQxBoq4PDq/zkUF9jn4bkVBzn6zJppKR5iYmkAAAAA5NDlGkvn7+3/OjMW + 8fDmpAgzPPrJnmceGWNimQAAAAAA5Z0aTefu5/+mGDvd7uGyOBin+seUYR8ZTGYAAAAAAAAAbBpW2eDg + +P2nqu7u5sqpp/q7aWZhHxlAAAAAAAAAAHxsPitnaWmQsbOLsLCblFyjj2NjYGAfKECAAAAAAAAAbGxF + RlZQI1tcLCJmZmNjGzBVUBtWTCcoQEoAAAAAAABsbGxFRUQOBQkFMmBgWFcrBQUFEUMnJ0BARgAAAAAA + AGxtbGxFRT4LAh1RUVFRUVERBQsnJyhAQEBJAAAAAAAAcG1tcW1HRUVAPj9CQ0NCPygoJyhARUVARV4A + AAAAAACKbXFxcnFxbEVAQEA+Pj4+PkBFRUVFRUBAAAAAAAAAAABtcXJycnJycnJtbUdHR2trR0dsR0dF + RUEAAAAAAAAAAINycnJycnJyiK6CfX1/q35sbGxsR0VFfwAAAAAAAAAAAHFycnJycnbSdvr6+vJ2vm1t + bGxsRUgAAAAAAAAAAAAAiXFycnJyhPRy1Pv8wXb0cG1tbGxHAAAAAAAAAAAAAAAAdnJycnJ7/4mJhIeE + wfxvbW1sa3kAAAAAAAAAAAAAAAAAdXJycnX3+3WHhnb+9XFtbWxuAAAAAAAAAAAAAAAAAAAAdnJycnb2 + 9f//9dZ0bW1sbwAAAAAAAAAAAAAAAAAAAAAAdnJycnJ7h4Z6bW1tbXAAAAAAAAAAAAAAAAAAAAAAAAAA + iXVycnJycXJxbXOKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACGdnNzd4UAAAAAAAAAAAAAAAAA//gf///g + B///gAH//wAA//4AAH/8AAA//AAAP/AAAA/gAAAH4AAAB8AAAAPAAAADwAAAA8AAAAPgAAAH8AAAD+AA + AAfgAAAH4AAAB+AAAAfgAAAH4AAAD/AAAA/wAAAP+AAAH/gAAD/8AAA//gAAf/8AAP//gAH//8AD///4 + H/8oAAAAEAAAACAAAAABAAgAAAAAAAABAAAAAAAAAAAAAAABAAAAAQAAAAAAAAAACAAABBgAAAgYAAAE + IQAIECkAQiwhAEo0IQAhLEoAISxSACEwUgApNFIAKThSACk0WgApOFoAEBBjAAAAewAQHHMAEBR7ACk4 + ewAxQWMAMUVjAClFewA5TXsAQllzAEJVewBKWXsArZ5rALWucwAICIQAAACMAAgAjAAQFIwACAiUAAgA + nAAhMJQACAClAAgArQAIALUACAC9ACEcrQAxRYQAMU2MADlJnABCVYwAQlmcAEpdnABKYYQAUmmMAFJl + lABSaZwASmWlAEptpQBabaUAUnGlAGN5pQBjda0AY321AGt9tQAQAMYAEADOABAA1gAQAN4AGATeABgI + 3gA5MMYAOTDOABAA5wAYAP8AIQzvACkQ5wAhDPcAKRD/ADEU/wBCOMYASjznAEI07wBSOP8AUjz/AFpN + 1gBSSd4AUkH/AFpF/wB7bfcAhHnnAIR17wBrgq0AY4K1AGOGvQBrhr0Ac4q9AHuOvQBzkr0Aa4LGAHOO + xgBzhs4Ac5LGAHOWzgB7ns4Ae47WAHOW1gB7ltYAxrqcAM7DnACUnsYAhJ7eAISi3gCEpt4AnKrWAIyy + 1gCUttYApa7OAK261gCtut4AnJL/AJyW/wCMqu8AlL7nAJy+7wCUsvcApbLnAKXD3gCtz94AnMP3ALXD + 7wC12+8ArcP3AK3L9wCtz/cApcv/AK3X/wC14/cAteP/ANbXzgDO09YA1tfWAO/v3gDOy/cAzs/3AM7L + /wDG2/cA3tf3AM7j/wDG7/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////AAAAAAAAAHhjX2wAAAAA + AAAAAAAAfHR3aV05Om8AAAAAAAAAfnYZCg4MCBQ4aAAAAAAAjIEYBVdqZTcBCzJwAAAAjnVtBS+AgnZk + FAMyM3EAAIA2Ym6Heo+CW4ZgMxZaAAB7NFiEZwd9eQZmaiopOQAAACNhgogcg3YbhV4XEQAAAAAmKzFW + MFxZGjUsEx4AAABUPCYSBA0uLQkCDxAiAAAAAD5DPCUhICAdHyIkIgAAAABGRERES0JBSjs7JigAAAAA + AERESVONiVVAPCcAAAAAAABRREiLUlGJQDxPAAAAAAAAAE5ETnNzTD1QAAAAAAAAAAAAAE5HRUsAAAAA + AAD8PwAA8A8AAOAHAADAAwAAgAEAAIABAACAAQAAwAMAAMADAACAAwAAwAMAAMADAADgBwAA4AcAAPAP + AAD8PwAAKAAAAIAAAAAAAQAAAQAgAAAAAAAACAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAc4LOCHOCzkJzgs5zc4LOjHOCzqVzgs69c4LOxnOC + ztZzgsbOa4LGxmuCxrVrfcaUa4LGhGuCxmNrgsYpAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABzhs4Yc4LOe3OC + zs5zgs7/c4LO/3OCzv9zgs7/c4LO/3OCzv9zgs7/c4LO/3OCzv9zgs7/c4LO/3OCzv9zgs7/c4LO/3OC + xv9rfcb3a33GnGt9xlIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAABzhs45c4bOrXOCzv9zgs7/c4LO/3OCzv9zgs7/c4LO/3OCzv9zgs7/c4LO/3OC + zv9zgs7/c4LO/3OCzv9zgs7/c4LO/3OCzv9zgs7/c4LO/3OCzv9rfcb/a33G/2t9ve9reb17a3m9CAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB7is45c4bOvXOGzv9zhs7/c4LO/3OC + zv9zhtb/c4bW/3OC1v9zgtb/c4LO/3OGzv9zgs7/c4LO/3OCzv9zgs7/c4LO/3OCzv9zgs7/c4LO/3OC + zv9zgs7/c33O/3N9xv9rfcb/a329/2t5vf9reb33a3m9hGN5vQgAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAB7jtYhc4bOrXOGzv9zhs7/c4bO/3OGzv9zhtb/c4bW/3OK1v9zitb/e4rW/3uK1v97jtb/e4rW/3OK + 1v9zhs7/c4LO/3OCzv9zgs7/c4LO/3OCzv9zgs7/c4LO/3OCzv9zgs7/a33G/2t9xv9rfb3/a3m9/2t5 + vf9reb3/Y3m172N5tWsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB7ktYQe4rOnHuKzv9zitb/c4rW/3OK1v97itb/e47W/3uS + 3v97kt7/e5be/4Sa5/+Enuf/hJ7n/4Se5/97lt7/c4rO/2uGxv9rgsb/a33G/2t9xv9rfcb/a33G/2t9 + xv9rfcb/a33G/2t9xv9rfcb/a329/2t9vf9reb3/a3m9/2t5vf9reb3/Y3m1/2N1tedjdbVaAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACEktYIe47WhHuK + zv97jtb/e5Le/3uW3v97lt7/e5be/4Sa3v+Enuf/hJ7n/4Si5/+Mpu//jKr3/4yu9/+Mqu//e5re/3OK + zv9rhsb/a4LG/2t9vf9rfb3/a329/2t9vf9rfb3/a329/2t9vf9rfb3/a329/2t9vf9rfb3/a329/2t9 + vf9reb3/a3m9/2t5vf9jebX/Y3W1/2N1tf9jdbXOY3W1SgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAACEktYIe47OhHuOzveEktb/hJre/4Sa5/+Enuf/hKLn/4Si5/+Eou//jKbv/4ym + 7/+Mqu//jKr3/5Sy9/+Utv//lK73/4Se3v9zhsb/a4LG/2uCxv9rgsb/a329/2t9vf9rfb3/a329/2t9 + vf9rfb3/a329/2t9vf9rfb3/a329/2t9vf9rfb3/a329/2t9vf9rfb3/a3m9/2t5vf9jebX/Y3m1/2N1 + tf9jdbX/Y3W1xmN1tUIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACEktYQhI7OjHuKzveEjtb/hJbe/4Se + 5/+Eouf/jKLv/4ym7/+Mpu//jKbv/4yq9/+Mrvf/lK73/5Sy//+Utv//lLb//5Sy9/+Eouf/e5LW/3OG + zv9zhs7/a4bO/2uCxv9rgsb/a4LG/2uCxv9rfcb/a329/2t9vf9rfb3/Y329/2N9vf9jfb3/a329/2t9 + vf9rfb3/a329/2t9vf9rfb3/a329/2N5tf9jebX/Y3m1/2N5tf9jdbX/Y3W1/2N1rc5jda1KAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AACEktYQhI7WjHuOzv+Ejtb/hJLe/4Sa3v+Mouf/jKbv/4ym7/+Mpu//jKrv/4yq9/+Mqvf/jK73/5Sy + //+Utv//nLb//5S2//+Usvf/jKbv/3uW3v97jt7/c4rW/3OK1v9zitb/c4bW/3OG1v9rgtb/a4LO/2uC + zv9rgs7/a4LG/2N9vf9jfb3/Y329/2N9vf9jfb3/a329/2uCvf9rgr3/a4K9/2t9vf9rfb3/a329/2t9 + vf9rebX/Y3m1/2N5tf9jebX/Y3W1/2N1tf9jca3OY3WtSgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAhI7We3uO1veEjtb/hJbW/4Sa3v+Mnuf/jKLn/4ym + 7/+Mpu//jKbv/4yq7/+Mqvf/jK73/5Su9/+Usv//lLb//5S2//+Utv//lK73/4ym7/+Enuf/e5bn/3uS + 3v97lt7/e5be/3uW3v97kt7/e5Le/3OO1v9zitb/c4bW/2uCzv9rgsb/a329/2N9tf9jebX/Y321/2N9 + tf9rfb3/a4K9/2uCvf9rgr3/a4K9/2t9vf9rfb3/a329/2t9vf9rfbX/Y3m1/2N5tf9jebX/Y3m1/2N1 + tf9jda3/WnGtxlpxrTEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAhJLWSnuK + 1t6Ejtb/hJbe/4Sa3v+Mouf/jKbv/4ym7/+Mpu//jKbv/4ym7/+Mpu//jKr3/4yu9/+Urvf/lLL//5S2 + //+Usv//lLL3/4yq9/+Mqvf/jKrv/4ym7/+Mqu//jK7v/5Sy7/+Usu//lLLv/4yq5/+Mpuf/hKLn/4Se + 3v97ltb/c47O/2uCxv9jfb3/Y3m1/2N5tf9jfbX/Y321/2N9tf9rfb3/a329/2uCvf9rgr3/a329/2t9 + vf9rgr3/a4K9/2t9vf9rfb3/a321/2N5tf9jebX/Y3m1/2N1tf9jda3/WnGt/1pxpaVaca0QAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAhJbeCHuO1q17jtb/hJLe/4Sa3v+Mouf/jKrv/4yq7/+Mru//jK7v/4yq + 7/+Mqu//jKrv/4yq7/+Mqvf/lK73/5Su9/+Usv//lK73/5Su9/+Urvf/jKr3/4yq9/+Mqu//lLL3/5S2 + 9/+cvvf/nL73/5y+9/+Utu//lLLv/4ym5/+Eouf/hJ7e/3uW1v9zjs7/a4bG/2t9vf9jfbX/Y3m1/2N5 + tf9jebX/Y321/2N9tf9jfb3/a329/2t9vf9rfb3/a329/2uCvf9rgr3/a4K9/2t9vf9rfb3/Y321/2N9 + tf9jebX/Y3m1/2N5tf9jda3/WnGt/1pxpe9acaVKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAISa5zF7jtbnhJLe/4SW + 5/+Enuf/jKbv/5Su7/+Usvf/lLL3/5Sy9/+Usvf/lLL3/5Su9/+Mrvf/lK73/5Sy9/+Usvf/lLL3/5Su + 9/+Urvf/lK73/5Su9/+Urvf/nLr//6XD//+ly///rc///63T//+tz///pcv3/5y+9/+Utu//jKrn/4Si + 5/+Ent7/e5LW/3OKxv9rgr3/a4K9/2OCvf9jfb3/Y321/2N5tf9jebX/Y321/2N9tf9jfbX/a329/2t9 + vf9rfb3/a329/2t9vf9rgr3/a4K9/2uCvf9rfb3/a321/2N9tf9jfbX/Y3m1/2N5tf9jda3/WnWt/1pt + pf9abaWcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAACEludShJbn/4Sa5/+Enu//jKbv/4yu9/+Usvf/lLb3/5S29/+Uuvf/nLr3/5S6 + 9/+Utvf/lLb3/5S29/+Utvf/lLb//5Sy9/+Urvf/lK73/5Sy9/+Utvf/pcP//6XP//+t0///rdP//63P + //+ly///nMP3/5Su5/+Eot7/e5rW/3uW1v97ltb/e5LO/3OOzv9rgr3/a4K9/2uCvf9rgr3/a4K9/2uC + vf9rgr3/Y329/2N9vf9jfbX/Y3m1/2N9tf9jfbX/Y321/2N9tf9jfbX/Y321/2t9vf9rfb3/a4K9/2uC + vf9rfb3/a329/2N9tf9jfbX/Y3m1/2N5tf9jda3/WnGt/1ptpf9SaZzGWm2cEAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAhJ7va4Sa7/+Enu//jKb3/4yu + 9/+Usvf/lLb3/5y69/+cuvf/nL73/5y+9/+cvvf/nL73/5y69/+Utvf/lLb3/5y2//+Utv//lLL3/5Sy + 9/+Usvf/nLr3/6XH//+tz///lLbv/3uW1v9jgr3/Umml/0pdlP9CVYz/QlmM/0pdlP9KZZz/Um2l/1Jt + pf9SZZz/SmGc/0pdlP9KXZT/SmGc/0phnP9KZZz/Umml/1pxrf9jfbX/a4K9/2N9vf9jfbX/Y3m1/2N5 + tf9jfbX/Y321/2N9tf9jfbX/Y321/2N9tf9rfb3/a329/2t9vf9rfb3/a329/2t9tf9jfbX/Y3m1/2N5 + tf9jda3/WnGl/1ptnP9SZZTeUmmcGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAISe92OEnvf/hKL3/4ym9/+Urvf/lLb3/5y+9/+cvvf/nMP3/5zD9/+cw/f/nMP3/5zD + 9/+cvvf/nLr3/5S69/+Utvf/nLr//5y6//+Utv//lLb//5y2//+Uru//a4bG/0phnP9CXZT/Um2t/0ph + lP85SXP/KTxa/yk8Wv8xRWv/Sl2M/1pxrf9SbaX/Um2l/1Jtpf9acaX/Um2l/zlRe/8xPGP/KTha/zlF + a/9KWYz/Umml/0phnP9CWZT/UmWc/2N5tf9jfbX/Y3m1/2N5tf9jebX/Y3m1/2N5tf9jebX/Y321/2N9 + tf9jfbX/a321/2t9vf9rfb3/a329/2N9tf9jfbX/Y3m1/2N1rf9ada3/WnGl/1JpnP9SZZTeUmmcEAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACEovdChJ73/4Si9/+Mqvf/lLL3/5S6 + 9/+cvvf/nMP3/5zH//+lx///pcf//6XH//+lx///pcf//5zD9/+cvvf/lLb3/4Sm5/97ltb/c5LO/3OK + xv9jfb3/QlmU/zlRjP9aca3/a4rO/0pZjP8QFCH/AAAI/wAACP8AAAj/AAAI/wAACP8AAAD/CAwY/zlJ + c/9acaX/Ummc/yEoQv8AAAj/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAj/IShC/1JpnP9SZZz/OU2E/zlN + hP9SZZz/WnGt/2N1rf9jda3/Y3mt/2N5tf9jebX/Y3m1/2N9tf9jfbX/Y321/2N9tf9rfbX/a321/2N9 + tf9jfbX/Y3m1/2N1rf9acaX/Wm2l/1JpnP9SZZTGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAhKL3GISe9++Eovf/jKr3/5Sy9/+Uuvf/nL73/5zH//+lx///pcv//6XL//+ly///pcv//6XL + //+lx///nMP//4yu5/9rhr3/WnWt/1pxpf9abaX/Sl2U/yk8c/9KYZT/WnWt/2N5tf8YHDH/AAAI/wAA + EP8AABD/AAAQ/wAAEP8AABD/AAAI/wAACP8AAAj/AAAA/xggOf8ACBD/AAAI/wAACP8AAAj/AAAI/wAA + CP8AAAj/AAAI/wAACP8AAAj/AAAI/zlNc/9jebX/UmWc/zFFe/9KZZz/WnGl/1pxpf9aca3/WnWt/2N1 + rf9jda3/Y3m1/2N5tf9jfbX/Y321/2N9tf9jfbX/Y321/2N9tf9jebX/Y3Wt/1pxrf9acaX/Wm2c/1Jp + nP9SaZyMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACEnvethJ73/4ym9/+Usvf/nLr3/5zD + 9/+cw/f/pcv//6XL//+ly///pcv//6XL//+ly///pcv//6XL//+Ept7/WnWt/1pxpf9acaX/WnGl/1px + rf9acaX/Ummc/1JtnP9acaX/CBAY/wAAEP8AABD/AAQQ/wAAEP8ABBD/AAQQ/wAEEP8AABD/AAAI/wAA + CP8AAAj/AAAI/wAACP8AAAj/AAAI/wAACP8AAAj/AAAI/wAACP8AAAj/AAAI/wAACP8AAAj/AAAA/zFF + Y/9ada3/SmGU/1ptpf9ada3/WnWt/1p1rf9ada3/Y3m1/1p1rf9ada3/Y3Wt/2N5tf9jebX/Y3m1/2N9 + tf9jfbX/Y321/2N5tf9jea3/WnWt/1pxpf9acaX/Wm2l/1JpnP9SaZwxAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAhKL3QoSe9/+Eovf/jK73/5S69/+cw/f/nMf3/6XL//+ly///pcv//6XL//+ly///pcv//6XL + //+ly///lLbn/0pdjP8hLEr/CBAh/wAEEP8ABBD/CBAh/yEwSv9KYZT/Y3mt/xggMf8AABD/AAAQ/wAE + EP8ABBD/AAQQ/wAEEP8ABBD/AAQY/wAEEP8AAAj/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAI/wAA + CP8AAAj/AAAI/wAACP8AAAj/AAAI/wAACP8AAAj/AAAA/0pdjP9ada3/OUVr/xggMf8ACBD/AAAI/wAI + CP8QHCn/MUFj/1pxpf9acaX/WnWt/2N1rf9jea3/Y3m1/2N5tf9jebX/Y3m1/2N5rf9jda3/WnWt/1px + pf9acaX/Wm2l/1JpnM4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACEnvfGhKL3/4yq9/+Utvf/nMP3/5zH + //+ly///pcv//6XP//+lz///pcv//6XL//+ly///pcv//5zH5/8hKDn/AAAI/wAAEP8AABD/AAQQ/wAE + EP8ABBD/AAAQ/wAACP8YIDn/AAAI/wAAEP8ABBD/AAQQ/wAEGP8ABBj/AAQY/wAEEP8ABBj/ISxC/0JN + a/9abYz/Y32l/3OSvf9zirX/Y32c/1JlhP85RVr/EBgh/wAAAP8AAAj/AAAI/wAACP8AAAj/AAAI/wAA + CP8AAAj/CBAY/wgMGP8AAAD/AAAI/wAACP8AAAj/AAAI/wAACP8AAAD/AAQI/zlJa/9acaX/WnGl/1p1 + rf9jda3/Y3Wt/2N5rf9jea3/Y3mt/2N1rf9ada3/WnWt/1pxpf9abaX/Ummc/1JpnEIAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAhKL3KYSe9/+Epvf/jLL3/5y+9/+cx///pcv//6XL//+lz///pc///6XP//+lz///pc///6XL + 9/+ly+//EBgp/wAAEP8ABBD/AAQQ/wAEEP8ABBD/AAQQ/wAAEP8AABD/AAQQ/wAAEP8ABBD/AAQQ/wAE + EP8ABBj/AAQQ/wAEEP8xPFr/Y3mt/3ue1v+Eot7/e5rW/3uazv97mtb/e5rW/4Se1v+Eotb/jKbe/5Sy + 5/+Uuu//jKrW/1ptjP8YJDH/AAAA/wAACP8AAAj/AAAI/wAACP8AAAj/AAAI/wAACP8AAAj/AAAI/wAA + CP8AAAj/AAAI/wAACP8AAAj/AAAA/zE8Wv9acaX/WnGl/1p1rf9jda3/Y3Wt/2N1rf9jda3/Y3Wt/1p1 + rf9acaX/WnGl/1ptnP9SaZz/UmmctQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACEnveMhKL3/4yq9/+Utvf/nMP3/6XL + //+lz///pc///6XT//+l0///pc///6XP//+lz///rdf//zFBUv8AABD/AAAQ/wAEEP8ABBD/AAQQ/wAE + EP8ABBD/AAQQ/wAEEP8ABBD/AAQQ/wAEEP8ABBj/AAQQ/wAIGP9CUXv/c5LO/3uW1v9zjs7/c47O/3OO + zv9zjs7/c47O/3OOzv9zjs7/c5LO/3OSzv9zls7/e5rW/3ua1v+Entb/jKre/5zD7/+Eosb/KTRC/wAA + AP8AAAj/AAAI/wAACP8AAAj/AAAI/wAACP8AAAj/AAAI/wAACP8AAAj/AAAI/wAACP8AAAj/AAAA/0pd + jP9abaX/WnGl/1pxrf9ada3/WnWt/1p1rf9ada3/WnWt/1pxpf9abaX/Ummc/1JpnP9SaZz/UmmcCAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAISe79aEpvf/jK73/5y69/+lx///pc///6XT//+t0///rdP//63T//+t0///pc///6XP + //+Uut7/AAAI/wAEEP8ABBD/AAQQ/wAEGP8ABBj/AAQY/wAEGP8ABBj/AAQQ/wAEGP8ABBj/AAQY/wAA + EP8pOFr/c47O/3OOzv9zjs7/c47O/3OOzv9zjs7/c47O/3OOzv9zjs7/c47O/3OOzv9zjs7/c47O/3OO + zv9zjs7/c5LO/3OSzv97ltb/hJ7W/4yq3v+cw+//e5a1/xAUGP8AAAj/AAAI/wAACP8AAAj/AAAI/wAA + CP8AAAj/AAAI/wAACP8AAAj/AAAI/wAACP8AAAj/GCQx/1pxrf9acaX/WnGl/1pxrf9aca3/WnGl/1px + pf9acaX/Wm2l/1JpnP9SaZz/Ummc/1JpnP9SaZxaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACMqu8IhKLv/4yq9/+Utvf/nMP//6XL + //+l0///rdP//63X//+t1///rdP//63T//+lz///pc///2N5lP8AAAj/AAQQ/wAEEP8ABBj/AAgY/wAI + GP8ACBj/AAgY/wAIGP8ACBj/AAgY/wAEGP8ABBD/UmGU/3OS1v9zjs7/c47O/3OOzv9zjs7/c47O/3OO + zv9zks7/c5LO/3OSzv9zjs7/c47O/3OOzv9zjs7/c47O/3OOzv9zjs7/c47O/3OOzv9zks7/e5bW/4Se + 1v+Mqt7/lLrn/ykwQv8AAAj/AAAI/wAACP8AAAj/AAAI/wAACP8AAAj/AAAI/wAACP8AAAj/AAAI/wAA + CP8AAAj/WnGl/1pxpf9acaX/WnGl/1pxpf9acaX/WnGl/1ptpf9SaZz/Ummc/1JllP9SZZT/Ummc/1Jp + nJQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAhJ7nGISe51qMqu//lLL3/5y+9/+lx///pc///63T//+t1///rdf//63X//+t1///rdP//63T + //+ly/f/OUlr/wAAEP8ABBD/AAQY/wAEGP8ACBj/AAgh/wAIIf8ACCH/AAgh/wAIGP8ABBj/AAgQ/2N5 + rf9zks7/c47O/3OOzv9zjs7/c5LO/3OSzv9zktb/e5bW/3uW1v9zltb/e5bW/3OW1v9zks7/c5LO/3OS + zv9zjs7/c47O/3OOzv9zjs7/c47O/3OOzv9zks7/c5LO/3uW1v+Entb/lLrv/zlFWv8AAAj/AAAI/wAA + CP8AAAj/AAAI/wAACP8AAAj/AAAI/wAACP8AAAj/AAAI/wAAAP9SaZz/Wm2l/1pxpf9acaX/WnGl/1pt + pf9abZz/Ummc/1JpnP9SZZT/UmWU/1JllP9SZZT/Ummczlp1rSlada0YAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACUsu9KhKLnrXua3vd7kt7/e5rn/4yy9/+Uuvf/nMf//6XP + //+t0///rdP//63X//+t1///rdf//63T//+t1///lLLn/1pxpf8hLEr/AAQQ/wAEEP8ABBj/AAQY/wAI + If8ACCH/AAgh/wAIIf8ADCH/AAgh/wAEEP9jea3/c5LO/3OOzv9zks7/c5LO/3uW1v97ltb/e5rW/3ua + 1v97mtb/e57W/3ue1v97ntb/e5rW/3ua1v97mtb/e5bW/3OSzv9zks7/c47O/3OOzv9zjs7/c47O/3OO + zv9zjs7/c5LO/3OW1v97mtb/nL7v/yk4Sv8AAAj/AAAI/wAACP8AAAj/AAAI/wAACP8AAAj/AAAI/wAA + CP8AAAj/AAAA/0pdjP9acaX/Y3Wt/1pxpf9acaX/Wm2l/1JpnP9SZZT/UmWU/1JpnP9SZZT/UmWU/1Jl + lP9SaZz/Y3m1/2N9tf9jfb33Y329rWN9tUoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACcvvchlLb3xpS2 + 9/+Uuvf/lLb3/4ym7/+Epuf/lLb3/5zD9/+ly///pc///63T//+t1///rdf//63X//+t1///td///1p1 + lP8IDBj/AAAI/wAAEP8ABBj/AAQY/wAEGP8ACBj/AAgh/wAMIf8ADCH/CBAp/wgQKf8ACBj/Sl2M/3ua + 3v9zks7/c5bW/3uW1v97mtb/e57W/4Se3v+Eot7/hKLe/4Sm3v+Ept7/hKbe/4Si3v+Eot7/hKLe/3ue + 3v97ntb/e5rW/3uW1v9zks7/c5LO/3OOzv9zjs7/c47O/3OOzv9zjs7/c5LO/3OW1v97ntb/nL7n/xAU + GP8AAAj/AAAI/wAACP8AAAj/AAAI/wAACP8AAAj/AAAI/wAACP8AAAj/AAAA/wAAAP8hKEL/WnGl/1px + pf9abaX/Ummc/1JllP9SZZT/Um2c/1JpnP9SZZT/UmWU/1JllP9aebX/Y321/2N9vf9jfbX/Y321/2N9 + tcZjfbUhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAnL73OZS6//ecuv//nL7//5zD//+cw///nL73/5Sy7/+cvvf/nMf3/6XP + //+t0///rdf//63X//+t1///rdf//7Xf//9KYXP/AAAI/wAEEP8ABBD/AAQY/wAEGP8ABBj/AAgY/wAI + If8ADCH/CBAp/wgUKf8QFDH/EBQp/xggOf+Mqu//e5rW/3ua1v97mtb/hJ7e/4Si3v+Ept7/hKrn/4yq + 5/+Mruf/jK7n/4yu5/+Mruf/jK7n/4yq5/+Mquf/hKbn/4Si3v+Ent7/e5rW/3uW1v9zks7/c5LO/3OO + zv9zjs7/c47O/3OOzv9zks7/c5LO/3OW1v+Ept7/c46t/wAAAP8AAAj/AAAI/wAACP8AAAj/AAAI/wAA + CP8AAAD/AAAI/wAACP8AAAj/AAAI/wAACP8ICBD/UmWc/1ptpf9SaZz/UmWU/1JpnP9acaX/Wm2l/1Jp + lP9SZZT/UmWU/1p5tf9jfbX/Y321/2N9tf9jfbX/Y321/2N9tfdjfbU5AAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJy+/0qcuv//nL7//5zH + //+ly///pc///6XL//+ly///lLr3/5zD9/+ly///pc///63T//+t1///rdf//63X//+12///a4KU/wAA + CP8ABBD/AAQQ/wAEEP8ABBj/AAgY/wAIGP8ACCH/CAwh/wgQKf8QGDH/EBw5/xAYMf8IDCH/Y321/4Si + 5/97nt7/hJ7e/4Si3v+Equf/jK7n/4yy5/+Utu//lLbv/5S27/+Utu//lLbv/5S27/+Usu//lLLv/4yu + 7/+Mruf/jKrn/4Sm3v+Eot7/hJ7e/3ua1v9zls7/c5LO/3OOzv9zjs7/c47O/3OOzv9zks7/c5LO/3ua + 1v+Utu//GCQx/wAACP8AAAj/AAAI/wAACP8AAAj/AAAA/wAAAP8AAAj/AAAI/wAACP8AAAj/AAAI/wAA + CP8IDBj/WnGl/1JpnP9SZZT/UmWU/1p1rf9ada3/Ummc/0pllP9KYZT/WnWt/2N9tf9jfbX/Y321/2N9 + tf9jfbX/Y321/2N9tf9jfbVKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAACcw/8xnL7//5zD//+ly///pdP//63X//+t2///rdP//6XP//+Uuvf/nMf3/6XP + //+t0///rdf//63X//+t1///rdf//5zH3v8ABAj/AAQQ/wAEEP8ABBj/AAQY/wAIGP8ACCH/AAwh/wgQ + Kf8IFDH/EBgx/xAcOf8QHDn/EBgx/xAUMf+Msvf/hKbn/4Sm3v+Mquf/jK7n/5Sy7/+Uuu//lLrv/5y6 + 7/+cvu//nLr3/5y+9/+Uuu//lLrv/5S67/+Uuu//lLbv/5Sy7/+Msu//jK7n/4Sq5/+Eot7/hJ7e/3ua + 1v97ls7/c5LO/3OOzv9zjs7/c47O/3OOzv9zks7/c5LO/3ue1v9acZT/AAAA/wAACP8AAAj/AAAI/wAA + AP8AAAD/AAAI/wAACP8AAAj/AAAI/wAACP8AAAj/AAAI/wAACP8hKEL/WnGl/0phlP9SZZT/Y3mt/2N9 + tf9acaX/UmWU/0phjP9acaX/Y321/2N9tf9jfbX/Y321/2N9tf9jfbX/Y321/2N9tf9jebUxAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnMP3GJy+/++cw///pcv3/6XT + 9/+t1///rdv//63b//+t2///pc///5y+9/+ly/f/pc///63T//+t1///rdf//63X//+13///OUla/wAE + EP8ABBj/AAQY/wAEGP8ACBj/AAgh/wAMIf8IECn/EBgx/xAcOf8QHDn/EBw5/xAcOf8IFCn/OUlr/4yy + 9/+Mquf/jK7n/5Sy7/+Utu//nL7v/5y+9/+cw/f/nMP3/5zD9/+cw/f/nMP3/5y+9/+cvvf/nL73/5y+ + 9/+cuvf/lLrv/5S27/+Usu//jK7n/4yq5/+Eot7/hJ7e/3ua1v9zls7/c5LO/3OOzv9zjs7/c47O/3OS + zv9zks7/c5bO/4Se1v8AAAD/AAAI/wAACP8AAAD/AAAA/wAACP8AAAj/AAAI/wAACP8AABD/AAAQ/wAA + EP8AAAj/AAAI/wAAAP9KXYz/SmGM/0phlP9jfbX/a4bG/1p1rf9SZZT/Sl2M/1pxpf9jfbX/Y321/2N9 + tf9jfbX/Y321/2N5tf9jebX/Y3m1/2N9te9jebUYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAACcvve9nMP3/6XL9/+l0/f/rdf//63b//+t2///rdv//63b//+t0///nL73/6XL + //+lz///rdP//63X//+t1///rdf//63T9/8ABBD/AAQY/wAEGP8ABBj/AAgY/wAIIf8ADCH/CBAp/xAY + Mf8QHDn/ECA5/xAcOf8QHDn/EBQx/wAIGP9aeaX/jK7v/4yy7/+Utu//lLrv/5zD9/+cx/f/pcf3/6XH + 9/+ly/f/pcf3/6XH9/+cx/f/nMf3/5zD9/+cw/f/nMP3/5zD9/+cvvf/nL73/5S67/+Utu//jK7n/4yq + 5/+Eot7/e57e/3uW1v9zks7/c47O/3OOzv9zjs7/c5LO/3OSzv9zks7/hKLe/xAUGP8AAAj/AAAA/wAA + AP8AAAj/AAAI/wAACP8AABD/AAQQ/wAEEP8AABD/AAAQ/wAACP8AAAj/AAAI/yEsSv9KYZT/SmGM/2N9 + tf9risb/Y321/1JpnP9KYYz/Um2l/2N9tf9jfbX/Y321/1p5tf9aebX/Wnm1/1p5tf9jebX/Y3m1/2N9 + tb0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnL73Y5zD//+cx/f/pc/3/63X + //+t2///rdv//63b//+t2///rdv//63X//+cvvf/pcv3/6XT//+t0///rdf//63X//+t1///hKK1/wAA + CP8ABBj/AAQY/wAIGP8ACCH/AAwh/wgQKf8QGDH/EBw5/xAcOf8QHDn/EBgx/wgUKf8IDCH/AAQQ/3uW + zv+Usu//lLbv/5y+9/+cw/f/pcv3/6XP9/+lz///pc/3/6XP9/+lz/f/pc/3/6XL9/+ly/f/pcv3/6XL + 9/+ly/f/pcv3/6XH9/+cw/f/nL73/5S67/+Utu//jK7n/4yq5/+Eot7/e57W/3uW1v9zks7/c47O/3OO + zv9zks7/c5LO/3OSzv97mt7/ISxC/wAACP8AAAD/AAAI/wAACP8AAAj/AAQQ/wAEEP8ABBj/AAQY/wAE + EP8ABBD/AAAQ/wAAEP8AAAj/CBAY/1JllP9KXYz/Y3m1/2uKzv9jgr3/Um2l/0phjP9acaX/Y321/2N5 + tf9aca3/Um2t/1pxrf9ada3/WnWt/1p5rf9jebX/Y321/2N9tWMAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAJzD9wicvvfvnMf3/6XP9/+t1/f/rdv//63b//+t2///rdv//63b//+t2///rdv//5S6 + 9/+lx/f/pc///63T//+t1///rdf//63b//9jfZz/AAQQ/wAEGP8ABBj/AAgh/wAMIf8IECn/EBQx/xAY + Mf8QHDn/EBgx/wgUMf8IECn/AAwh/wAIIf8ABAj/hKbe/5S27/+cvvf/nMP3/6XL9/+tz/f/rdP//63X + //+t1///rdf//63X//+t0///rdP//63T//+t0///rdP//63T//+t0///pc/3/6XL9/+lx/f/nMP3/5S6 + 7/+Utu//jK7n/4Sm3v+Ent7/e5rW/3OSzv9zjs7/c47O/3OSzv9zks7/c5LO/3OW1v8pOFL/AAAA/wAA + CP8AAAj/AAAI/wAEEP8ABBj/AAgY/wAIGP8ACBj/AAQY/wAEEP8ABBD/AAQQ/wAEEP8ABBD/SmGM/0pd + jP9jfbX/c4rO/2uGxv9acaX/SmGU/1pxpf9jfbX/Um2t/0phpf9KZaX/Um2t/1pxrf9ada3/WnWt/1p5 + tf9jfbX/Y32172N5tQgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnL73hJzD9/+ly/f/rdf//63b + //+t3///rd///63b//+t2///rdv//7Xj//97osb/jK7n/5zD9/+lz///rdP//63X//+t1///rdv//1p1 + lP8ABBj/AAQY/wAIGP8ACCH/CBAp/wgUMf8QGDH/EBgx/xAUMf8IECn/AAwh/wAIIf8ABBj/AAQQ/wAA + CP+Mruf/nLr3/5zD9/+ly/f/rdP//63X//+12///tdv//7Xb//+12///tdv//7Xb//+12///tdv//7Xb + //+12///tdv//63X//+t1///rdP//6XP9/+ly/f/nMP3/5S67/+Usu//jKrn/4Si3v97mtb/e5bW/3OS + zv9zjs7/c5LO/3OSzv9zks7/c5LW/yk4Uv8AAAD/AAAA/wAACP8AABD/AAQQ/wAEGP8ACBj/AAgY/wAI + GP8ACBj/AAQY/wAEEP8ABBD/AAQQ/wAAEP9KXYz/SmGM/2N9vf9zjs7/a4bG/1p1rf9SZZT/QlmU/1Jp + pf9KZaX/SmGl/1Jppf9Sba3/WnGt/1pxrf9ada3/WnWt/2N5tf9jfbX/Y321hAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAJzH9wicvvf3nMf3/6XT9/+t2///td///7Xj//+13///rd///63b//+14///KUF7/wAI + Of9rir3/nMP3/6XL9/+l0///rdP//63X//+t1///Y4Kc/wAEEP8ABBj/AAgh/wAMIf8IECn/EBQx/xAU + Mf8IECn/CBAp/wAEGP8ACCH/MUVS/2N9lP+Eqsb/jK7e/5S69/+cvvf/pcf3/6XP9/+t1///tdv//7Xf + //+14///teP//7Xj//+14///veP//7Xj//+14///teP//7Xf//+13///td///7Xf//+12///rdf//63T + 9/+ly/f/nMP3/5S27/+Mruf/hKbe/4Se1v97mtb/c5bW/3OSzv9zks7/c5LO/3OSzv9zjs7/Y4K1/2uG + vf9jfaX/QlFz/xAcKf8AAAj/AAQQ/wAEGP8ACBj/AAgY/wAIGP8ACBj/AAQY/wAEEP8ABBD/AAQQ/0pZ + jP9SaZz/a4bG/3OOzv9risb/Wnmt/1JtnP8IIFr/ABBK/zlRjP9KYaX/Ummt/1Jxrf9aca3/WnGt/1px + rf9ada3/Wnm1/2N9tf9jgr33Y321CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnL73c5zD9/+ly/f/rdf3/63b + //+13///td///63b//+t2///rdv//3uexv8AEEL/ABhK/0pppf+cvvf/nMf3/6XP9/+t0///rdP//63T + //97orX/AAQQ/wAEGP8ACCH/CBAp/wgUKf8IECn/CBAp/wAIGP8YIDH/c46t/63X9/+12/f/pc/3/5zD + 7/+Mqt7/lLbv/5zD9/+ly/f/rdP//7Xb//+14///vef//73r//+96///vev//73r//+96///vev//73n + //+95///veP//7Xj//+14///td///7Xf//+12///rdf//63T9/+lx/f/nL7v/5Sy5/+Mquf/hKLe/3ue + 1v97ltb/c5LW/3OS1v9zks7/c47O/2uOzv97ntb/lLbv/5S29/+Utv//nL7//4Si3v85TWv/AAQI/wAE + EP8ACBj/AAgY/wAIGP8ABBj/AAQY/wAEEP8IECH/Sl2M/1p1rf9risb/c47O/2uKxv9aea3/Um2c/wAc + Wv8AGFL/CBxS/1Jtrf9Sba3/Um2t/1Jxrf9aca3/WnGt/1pxrf9ada3/Y3m1/2OCvf9jgr1zAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAACcvvfWnMf3/6XT9/+t2/f/rd///7Xf//+t2///rd///63f//+15///QlWE/wAY + Sv8AHFL/GDBr/5zD9/+cw/f/pcv3/6XP9/+t0/f/rdP3/6XH5/8AABD/AAgY/wAMIf8IECn/CBAp/wgM + If8IECH/a4qc/7Xf//+t0/f/pc/v/6XL7/+cx+//lLbn/4Si3v+Mruf/nMP3/6XP9/+t1///teP//73r + ///G7///xvP//8bz///G8///xvP//8bz///G8///xu///8br//+96///vef//73j//+14///teP//7Xf + //+12///rdf//6XP9/+cw/f/lLbv/4yu5/+Epuf/hJ7e/3ua3v9zltb/c5bW/3OS1v9zks7/a4rG/5zH + 9/+lx/f/nMP3/5S69/+Usvf/jLL3/5S6//+Ept7/KTRS/wAACP8ACBj/AAgY/wAIGP8ABBj/AAQQ/xgk + Of9KYYz/a4K9/3OOzv9zjs7/a4rG/1p5rf9CXZT/ABha/wAYWv8AEEr/SmWl/1Jtrf9Sba3/UnGt/1Jx + rf9aca3/WnGt/1pxrf9aebX/Y329/2OCvdYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnMP3KZzD9/+cy/f/pdP3/63b + //+13///rdv//63b//+t2///rdv//73r//8hMGP/ABxS/wAcWv8AFFL/c5rO/5y+7/+lx/f/pc/3/6XT + 9/+l0/f/rdv//xgcMf8ACCH/AAwh/wgQKf8ACBj/OVFj/63b7/+13/f/rdf3/6XP7/+lx+//nL7v/5Sy + 5/+Ept7/e57e/3ue3v+lx/f/pc/3/7Xb//+95///xu///87z///O9///zvv//873///O9///zvf//873 + ///O9///xvP//8bv//+96///vef//73j//+94///teP//7Xf//+t1///rdP3/6XH9/+Uuu//jK7n/4Sq + 5/+Eouf/e57e/3ua1v9zltb/c5bW/3OS1v9zks7/rdf3/63T9/+tz/f/pcv3/5S69/+Usvf/lLL3/4yy + 9/+Uuv//a4K1/wgQIf8ABBj/AAgY/wAIGP8ABBD/MUFj/1JtnP9zktb/c5LW/3OS1v9risb/Y321/xgw + a/8AHGP/ABxa/wAQQv9CWZT/Um2t/1Jtrf9Sba3/UnGt/1Jxrf9aca3/WnGt/1p1rf9jfb3/Y4K9/2N9 + vSkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAACcw/d7nMP3/6XL9/+l0/f/rdf3/63b//+t2///rdf//63b//+t2///teP//xgo + Wv8AHFL/ACBj/wAcY/9CZZz/nL7v/5zD9/+ly/f/pc/3/6XP9/+t0/f/UmmE/wAEGP8ACCH/AAgY/3ua + rf+95///td/3/7Xf9/+t0/f/nMfv/5S25/+Epuf/jKrn/6W67/+9z+//3uP3/5zD9/+lz/f/tdv//73n + ///G8///zvf//877///O+///zvv//877///O+///zvv//877///O9///zvf//8bz//+96///vef//73j + //+14///td///7Xb//+t0///pcv3/5y+9/+Utu//jK7v/4Sm5/97nt7/e5re/3OW1v9zltb/c5LW/626 + 3v/e6/f/zt/v/73f9/+12/f/rdP3/6XL9/+cw/f/nL73/5S29/+Usvf/jK7v/yEsSv8ABBD/AAgY/wAE + EP9SaZz/c47O/3ua3v9zltb/c5LW/2uKxv9jea3/ABRK/wAcWv8AHFr/ABBK/zlRjP9Sca3/Ummt/1Jp + rf9Sba3/UnGt/1pxrf9aca3/WnWt/2N5tf9rgr3/Y4K9ewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJzD972cx/f/pcv3/6XP + 9/+l0/f/rdP//63X//+t0///pcv3/6XL9/+t2///ECRS/wAcWv8AIGP/ACBj/zlRjP+cvvf/nMPv/6XL + 9/+lz/f/pc/3/6XP9/+cx+f/AAAQ/wAIGP+Uus7/teP//7Xj//+14///rdv3/6XP9/+Msuf/pb7v/+/v + ////////////////////////xt///6XP9/+12///vef//8bv///O9///zvv//877///W+///zvv//9b7 + ///W+///zvv//877///O9///zvP//8bv//+95///vef//7Xj//+13///tdv//63T//+ly/f/nMP3/5S2 + 7/+Mru//hKbn/3ue3v97mt7/e5re/3uW1v9zktb/7+/3/+/v9//v6+//7+fn/+fn5//W3+f/veP3/7Xb + //+lz///nMP3/5Sy9/+Mrvf/lLb//zE8Wv8ABBD/IShK/2OCvf97nuf/e5re/3OS1v9zjs7/Y4K9/1px + pf8ACDH/ABBC/wAYUv8AFEr/MU2M/1Jxrf9Sba3/SmWl/1Jprf9Sca3/WnGt/1pxrf9aca3/WnWt/2OC + vf9jgr29AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAnMP395zD9/+cx/f/pcv3/6XL9/+ly/f/pcv3/6XL9/+ly/f/pcv3/63T + //8IIFL/ABxS/wAcWv8AGFL/GChK/4Sizv+cx/f/pcf3/6XL9/+ly/f/pc/3/7Xb//85TVr/e5at/7Xj + //+14///tef//7Xj//+t2/f/nMPv/5y65/////////////////////////////////+9omv/pcv3/63X + //+94///xu///873///O+///zvv//877///W+///zvv//877///O+///zvv//877///O9///xu///73r + //+95///td///7Xf//+t2///rdP//6XP9/+cw/f/lLbv/4yu7/+Eouf/e57e/3ue3v97mt7/e5be/4yK + jP/OtpT/9/f//+/v9//v6+//5+fn/97j5//e397/vef//63X//+lz///lLr3/4yu7/+Mqu//lLL3/xAc + Kf9zisb/e5re/3ua3v9zltb/c47O/2uGvf9jea3/OU2E/wAIKf8ACCn/ABBC/wAQQv8xSYT/WnG1/1Jt + rf9KZaX/Smml/1Jxrf9aca3/WnGt/1pxrf9aca3/Y329/2uCvfcAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJy+9xicw/f/nMP3/5zH + 9/+cx/f/nMP3/5y69/+cuvf/nL73/5y+9/+cvvf/pcf//wgcUv8AHFL/ABxS/wAMMf8AFEr/AAxK/1p1 + pf+ly/f/pcfv/6XL7/+lz/f/rdP3/63T7/+14///teP//73r//+95///tef//63b9/+Utu//3uf3//// + ////////////////////////zrKE/72CCP+9omP/rdf//7Xb//+95///xvP//873///O+///zvv//877 + ///O9///zvf//873///O8///xvP//8bz///G7///vef//7Xj//+13///tdv//63X//+t0///pcv3/5zD + 9/+Uuu//jKrn/4Si5/97nt7/e57n/3ue3v+Motb/xoYQ/61tCP/n173/9/f//+/v9//n6+//5+Pn/97f + 5//O4+//td///6XP//+cvvf/jK7v/4Sq7/+Epuf/e5rW/4Se3v97ltb/c5LO/2uKxv9jgr3/WnWt/wgc + Wv8AEEr/ABRK/wAMMf8ADDH/ABBC/ylBe/9Saa3/Um2t/0plpf9KZaX/UnGt/1pxrf9aca3/WnGt/1px + rf9jfbX/a4K9/2OCvRgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAlLr3SpzD9/+cw/f/nMP3/5zD9/+cuvf/lLL3/5Sy9/+Utvf/lLb3/5S2 + 9/+cw///CBxK/wAcUv8AFEr/ABhK/wAcWv8AIGP/ABRS/5S25/+cw+//pcfv/6XP9/+t1/f/td///7Xj + //+95///vev//73r//+15///rdf3/5S27////////////////////////////+/r3v+1dQj/zo4Y/4RZ + CP9acYT/rd///7Xb//+14///vev//8bz///O9///zvP//8bz///G8///xvP//8bz///G7///xuv//73n + //+94///td///7Xb//+t1///rdP//6XP//+ly///nMf3/5S69/+Mru//hKbn/4Si5/+Eouf/e5re/xgU + GP+tdRD/vYIQ/611If//+///9/f3/+/v7//n5+f/3t/n/9bf5/+14///rdP//5zD9/+Mru//hKbn/4Si + 3v97mt7/c5bW/3OOzv9rhsb/Y329/2N9tf8hPHv/ABRS/wAYUv8AGFL/ABRC/wAIKf8AEEL/KUF7/0ph + pf9KYaX/SmGl/0plpf9Sca3/WnGt/1pxrf9aca3/WnGt/2N5tf9rhr3/Y4K9SgAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACUuveEnL73/5y+ + 9/+Uuvf/nL73/5S29/+Urvf/lLL3/5Sy9/+Utvf/lLb3/5y+9/8AGEr/ABhS/wAUQv8AHFL/ABxa/wAg + Y/8AHFr/UnGl/5zD7/+cx+//pc/3/63b9/+13///teP//73r//+96///vev//7Xj//+t1/f/nLbn//// + ////////////////////////xqJr/8aKEP+1ghj/CAAA/ykEAP9zaXP/rd///63X//+12///td///7Xj + //+14///teP//7Xj//+94///teP//7Xj//+14///td///7Xb//+t1///rdf//63T//+t0///pc///6XL + //+cw/f/lLr3/5Sy7/+Mru//jK7v/4Sa1v85GBj/GAQA/xgQAP/Oihj/tXkI/9bDpf//+///9/P3/+fr + 7//e4+f/3t/e/7Xj//+t0///nMP3/4yu7/+Epuf/hJ7e/3uW1v9zks7/a4rG/2OCvf9jfbX/Y321/wAc + Y/8AHGP/ABxj/wAcWv8AFEr/AAwx/wAQQv8pPHv/SmGl/0phpf9KYaX/SmWl/1Jxrf9aca3/WnGt/1px + rf9Sca3/Wnm1/2uGvf9rhsaEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAJS6962cw/f/lLr3/5S69/+Uvv//lLr3/4yu9/+Mrvf/jLL3/5Sy + 9/+Usu//nL73/wAYSv8AGEr/ABhK/wAcWv8AIGP/ACBr/wAgY/8xSYT/pcf3/5zH7/+lz/f/rdv//7Xj + //+95///vev//73r//+96///tef//6XP9/+lvuf////////////////////////7//+1fRD/1poY/0I0 + CP8pBAD/YwwA/3MIAP97NEL/pcfe/63b//+t1///rdf//63b//+t2///rdv//63b//+t2///rdv//63X + //+t1///rdf//63T//+t0///pdP//6XP//+ly///pcf3/5zD9/+cvvf/lLr3/5S+//+EdZT/cwwA/2MM + AP9CCAD/EAAA/3tVEP/Gihj/tYpC///////39/f/7+vv/+fj5//e397/td/3/6XT9/+cvvf/jKrn/4Si + 5/97mt7/c5bW/3OOzv9rhsb/Y4K9/2N9tf9ada3/ABha/wAga/8AHGP/ABxa/wAYUv8AEDn/ABBC/yE8 + e/9KYaX/Ql2c/0phpf9Sba3/UnGt/1pxrf9aca3/WnGt/1Jtrf9aebX/a4K9/2uGvaUAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlLr3xpzH + 9/+Uuvf/lLb3/5y+//+cvv//lLb3/4yq7/+Eouf/jK7v/4yu7/+Msvf/ABhK/wAYSv8AHFL/ABxa/wAg + Y/8AJGv/ACBr/yE8c/+lx/f/nMfv/6XP9/+t2///teP//73n//+96///vev//73r//+15///pcv3/7XH + 5///////////////////////59e9/72GEP/WniH/CAQA/zkIAP9rDAD/cwwA/3MMAP9aCAD/Y2Vz/6XL + 7/+t1///rdP//63T//+t0///rdP//63T//+t0///rdP//6XT//+lz///pc///6XP//+lz///pcv//6XL + //+lx///nMP//5zL//9zkq3/Wigx/3MIAP9zDAD/cwwA/1IIAP8YBAD/KRwI/9aWGP+tdQj///v3//f7 + ///v7+//5+Pn/97f3v+12/f/pc/3/5y+7/+Epuf/e57e/3ua1v9zks7/a47G/2uGvf9jgr3/Y321/1Jt + pf8AGFr/ACBr/wAcY/8AHFr/ABhS/wAUSv8AFEr/KUF7/0plpf9KZaX/Ummt/1Jxrf9Sca3/WnGt/1px + rf9aca3/Um2t/1p5tf9jgr3/Y4K9xgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACUuvfOnMf3/5S29/+Mrvf/lL7//5zD//+cw///lLr3/4Sm + 7/97nuf/e5rn/3ue5/8AGEr/ABhS/wAcWv8AHGP/ACBj/wAga/8AIGv/KTx7/6XH9/+cx/f/pdP3/7Xb + //+14///vev//73r//+96///vev//7Xj//+cx/f/vc/v///////////////////////Wvoz/zp4h/6WC + If8IAAD/OQgA/2MMAP9jDAD/YwwA/1IMAP8hBAD/AAAA/5SOY/+tw73/pc///6XP//+lz///pcv//6XL + //+ly///pcv//6XL//+ly///pcv//6XL//+lx///pcf//5zD///Gy6X/Y1kx/wgAAP9KCAD/YwwA/2MM + AP9jDAD/QggA/xgEAP8AAAD/xpIh/7V9CP/n28b///v//+/z9//n5+f/3t/e/7XX7/+ly/f/lLrv/4Si + 3v97nt7/c5bW/3OSzv9rjsb/a4bG/2uGvf9jfbX/UnGt/wAYWv8AHGv/ABxj/wAcWv8AGFL/ABRK/wAU + Sv8pQXv/Um2t/1Jtrf9Sba3/UnGt/1Jxrf9aca3/WnGt/1pxrf9Sba3/WnW1/2OCvf9jgr3OAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJS6 + 986ly/f/lLr3/4yq7/+Usvf/nL7//5zD//+cw///nL7//5S29/+Epu//jKrv/wAUSv8AGFL/ABxa/wAc + Y/8AIGP/ACBr/wAgY/85TYT/nMf3/6XH9/+t0/f/td///7Xj//+96///vev//73r//+95///teP//5zD + 9//G1+///////////////////////862a//esin/hG0Y/wAAAP8hBAD/SggA/1IIAP9CCAD/KQQA/xAE + AP8AAAD/c2EY/+e6Mf+cy///rd///7Xf//+t1///pc///6XL//+ly///pcv//6XH//+cx///nL73/4yy + 7/+Equf/jKLG//fHKf85NBD/CAQA/zEIAP9SDAD/SggA/zkIAP8hBAD/CAQA/wAAAP+1hiH/xooQ/9bH + pf//+///9/P3/+fn7//n4+f/tdfv/5zH9/+Utu//hKLe/3ua1v9zls7/c5LO/2uOxv9risb/a4a9/2OC + tf9jebX/ABRa/wAcY/8AHGP/ABxa/wAUSv8AFEr/ABRK/ylBe/9SaaX/Um2t/1Jtrf9Sca3/UnGt/1Jx + rf9Sca3/Um2t/1Jtrf9adbX/Y4K9/2OCvc4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlLr3vaXL9/+cw/f/jK7v/4yq7/+Usvf/lL7//5y+ + //+cw///lLb3/4Sm7/+t1/f/ABBC/wAYUv8AHFr/ABxj/wAgY/8AIGP/ABxj/1Jtpf+cw/f/pcv3/63X + //+13///teP//73r//+96///vev//73r//+14///nMP3/87b9///////////////////////zrZj/+/H + Of9zZSH/AAAA/wgEAP8YBAD/IQQA/xgEAP8QBAD/CAQA/wAAAP9jVRj/78Mx/6XP9/+13///vef//73r + //+96///vef//7Xf//+t1///pc///5zH9/+Uvvf/jLLv/4Sq5/+UprX/98cx/ykkCP8ABAD/EAQA/yEE + AP8hBAD/GAQA/wgEAP8ABAD/AAAA/62CIf/Olhj/1sOU///////38/f/5+fv/+fj5/+10+//nMf3/5S2 + 7/97nt7/e5rW/3OWzv9zks7/c47O/2uKxv9rhr3/Y4K1/2uCvf8AGFL/ABha/wAYWv8AGFL/ABRK/wAU + Sv8AFEr/KUV7/1pxrf9KZaX/Ummt/1Jtrf9Sca3/UnGt/1Jxrf9Sba3/Um2t/1p5tf9jfb3/Y4K9vQAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AACUuu+UnMf3/6XP9/+Utvf/hKbv/4Si7/+Mrvf/lLb3/4Sq7/+Eouf/pcv3/6XP9/8AEEL/ABhS/wAc + Wv8AHFr/ACBj/wAgY/8AFFr/e57O/5zD9/+lz/f/rdf//7Xf//+15///vev//73r//+96///vev//7Xj + //+cw/f/1uP3///////////////////////WumP/9885/3ttIf8AAAD/AAQA/wgIAP8YEAj/GBAI/xAI + CP8ABAD/AAAA/2tZGP/vwzH/pdP3/7Xf//+95///vev//73r//+15///td///63X//+lz///pcv//5zD + 9/+Utu//jKrn/5ymrf/vwyn/KSQI/wAEAP8IBAD/EAwI/xgQCP8YEAj/CAgA/wAEAP8AAAD/tY4p/9ai + If/Wx5T///////fz9//n5+//3uPn/7XP7/+cx/f/lLbv/3ue3v97mtb/c5bW/3OSzv9zjs7/a4rG/2uG + vf9jgrX/a4a9/xgkWv8AFEr/ABRK/wAUQv8AEEL/ABRK/wAUSv8pQXv/Y3m1/1Jtrf9SZaX/Ummt/1Jt + rf9Sca3/UnGt/1Jtrf9Sba3/Wnm1/2N9tf9jgr2UAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJS691Kcw/f/pdP3/6XP9/+Utvf/hKbn/3ue + 5/+Eouf/jK7v/6XP9/+t1/f/rdf3/wAQQv8AGFL/ABxa/wAcWv8AIGP/ACBr/wAYWv+cw/f/nMf3/6XP + //+t2///teP//7Xn//+95///vev//73n//+95///teP//5zD9//W4/f//////////////////////9bD + c//3z0L/jIIp/wAAAP8QDAj/KSAQ/1I8Kf9SQSn/MSQQ/xAMCP8AAAD/e2kh/+/HMf+t1/f/teP//73n + //+96///vev//73n//+13///rdf//6XT//+lz///nMf3/5S69/+Mruf/nKKt/++6Kf9CNBD/AAQA/xgQ + CP85KBj/UkUp/0o4If8pHBD/CAgA/wAAAP/OqjH/1q4p/97Ppf//+///9/P3/+fn7//n4+f/tc/v/5zD + 9/+Msu//e57e/3ua1v9zltb/c5LO/3OOzv9risb/a4a9/2OCtf9jfbX/MUV7/wAMQv8AEEL/ABBC/wAQ + Qv8AFEr/ABRK/yk8c/9jfbX/Y3mt/1pxrf9SaaX/Ummt/1Jtrf9Sba3/Umml/1Jxrf9jebX/Y321/2N9 + tVIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAlLr3GJS+9/+ly/f/pdP3/6XP9/+cx/f/nMP3/6XH9/+t1/f/rd///8bv//+95+//AAxC/wAY + Uv8AHFr/ABxa/wAgY/8AJGv/GDBr/6XP//+ly/f/pdP//63b//+13///teP//73n//+96///vef//73n + //+13///nMP3/9bj9///////////////////////3s+U/+/POf+9sjn/AAQA/yEYCP9jTTH/zr6t/9bL + tf9zYUr/KRwQ/wAEAP+tnjH/78s5/63b9/+15///vev//73v//+96///vef//7Xf//+t1///pdP//6XP + //+cx/f/lL73/4yu5/+Uoq3/564h/2tVGP8IBAD/KSAQ/4RtUv/Wz73/xrac/1JBKf8YFAj/AAQA/+/L + Qv/Wrin/59/G///7///38/f/5+fv/+fj5/+1y+//nL7v/4yy7/97nt7/e5rW/3OW1v9zks7/c5LO/2uK + xv9rgr3/Y321/1p1rf9CXYz/AAg5/wAQQv8AEEL/ABBC/wAUSv8AFEr/ITRr/2N9tf9aebX/Wnmt/1p1 + rf9aca3/Umml/1Jppf9aca3/Wnm1/2N5tf9jfb3/Y329GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlLbv3pzD9/+t1/f/rdv3/63X + //+t1///rdf//7Xj///G8///zvv//63L3v8ADEL/ABhS/wAcWv8AHFr/ACBj/wAga/8xSYT/pcv//6XH + 9/+l0///rdv//7Xf//+14///tef//73n//+95///tef//7Xj//+cx/f/zt/3//////////////////// + ///n373/58cx//fjSv8ICAD/IRwQ/4x1Wv/36+f/9+/n/7WijP8xJBD/AAQA/+/XSv/vz0r/rdv//7Xn + //+96///vev//73v//+95///td///63X//+l0///pc///5zH9/+Uvvf/jLLv/4yivf/Wohj/rZIp/wgI + AP85KBD/vaqU//fv5//3697/hG1S/yEYCP9CNBD/99dK/9auMf//9/f///v//+/v9//n5+f/5+Pn/63H + 7/+cvu//jK7n/3ue3v97mtb/e5rW/3OWzv9zks7/a4rG/2N9tf9ada3/WnGc/1JpnP8ACDn/AAw5/wAQ + Qv8AEEL/ABRK/wAUSv8QJFr/Wm2t/1p1rf9aea3/Y3m1/1p5tf9aebX/Y3mt/2N5tf9jebX/Y321/2uG + vd4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAACUuu9zlLrv/63X9/+13///td///7Xf//+14///xvP//873//+96///e6LG/wAM + Qv8AGFL/ABxa/wAcWv8AIGP/ABxj/0JhnP+lx///pcv//6XT//+t2///td///7Xj//+14///tef//7Xn + //+15///td///6XL9//G1/f////////////////////////79//evjn//+dK/2tlIf8YEAj/Y005/97P + xv/n287/hHVa/yEUCP9aURj//+dS/+fTWv+t3///teP//73r//+96///vev//73n//+t3///rdf//6XT + //+lz///nMv//5zD9/+Msu//hKLW/86aGP/vvjn/GBgI/ykcEP+MeWP/59/W/9bLvf9aSTH/EAwI/62a + Of/vz0L/zrZS///////39/f/7+/v/+fn5//n4+f/pcPv/5S+7/+Mruf/hKLe/3ue3v97mtb/c5bW/3OO + xv9jgr3/WnWt/1ptnP9SbZz/WnGl/wAMOf8ADDn/ABBC/wAQQv8AFEr/ABRK/wgcUv9KYZz/SmWc/1px + rf9ada3/Wnmt/2N5tf9jebX/Y3m1/2N9tf9jgr3/Y4K9cwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJzD9wiUtu/nnMP3/6XT + 9/+12/f/td/3/7Xj//+95///teP//63T9/9SabX/ABRC/wAYUv8AHFL/ABxa/wAgY/8AHGP/UnGt/5zH + //+ly///pdP//63X//+t3///td///7Xj//+14///teP//7Xj//+14///pc///63H7/////////////// + /////////////97Hc//330r/59tK/xAUCP8hGBD/SkEp/1pJMf8pIBD/EAwA/97TSv/331L/zsuE/63f + //+14///vef//73r//+96///tef//63b//+l0///pdP//6XP//+ly///nMP3/5S27/+Epuf/vY4p/96y + Mf+tkjH/CAQA/ykgEP9aTTn/Sjwp/xgUCP85MBD//+NS/+/LOf/e06X///////f39//v7+//5+fn/+fj + 5/+Uuu//lLrv/4Sq5/+Eot7/e57e/3uW1v9zks7/a4a9/2N5rf9acaX/Um2c/1ptnP9jea3/AAw5/wAM + Of8AEEL/ABBC/wAUSv8AFEr/ABBK9yk4lN5KXZT/SmGc/1Jtpf9aca3/WnWt/1p1tf9aebX/Y3m1/2N9 + vecAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAJzD9ymUtu/vlLr3/5zD9/+cx/f/pc/3/63T9/+cvvf/Qk3n/wgI + pf8AGEr/ABhS/wAcUv8AHFr/ACBj/wAYWv9jgrX/nMP//6XL//+l0///rdf//63b//+t3///td///7Xj + //+14///teP//7Xj//+t1///jLLn////////////////////////////7+vW/+fLOf//40r/xrZC/xAM + AP8ICAD/CAgA/wgIAP+9qjn/9+NS//fXQv+1z8b/td///7Xj//+15///vef//73n//+14///rdv//6XT + //+lz///pc///6XL//+cw/f/lLb3/4Sq5/+cjnP/1qYp/+/PQv+EdSn/AAQA/wgIAP8ICAD/ISAI/+fX + Sv/320r/1rpC///79///+///9/f3/+/v7//n5+//3t/n/4y27/+Mtu//hKbn/3ui3v97mtb/c5LO/2uG + vf9jfbX/WnWl/1pxnP9acZz/WnGl/2N9rf8IEEL/AAw5/wAQQv8AEEL/ABRK/wAUSv8AFEr/AACc/xgg + lP9CWZT/SmGU/0phnP9SZaX/Umml/1ptrf9aca3vWnW1KQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJS6 + 9xCUsu+ElLb3tZS297WUtveMMTzn7xAE3v8QAN7/CAyU/wAYSv8AGFL/ABxa/wAcWv8AIGP/ABha/2uK + vf+cw///pcv//6XT//+t1///rdf//63b//+t3///td///7Xj//+14///teP//7Xf//+Msu//5+v3//// + ////////////////////////3s+E//fbSv/331L/59tS/4yGMf+MgjH/59dK//fjUv/330r/1sdr/63f + //+14///teP//7Xn//+15///tef//7Xj//+t2///pdP//6XP//+lz///pcv//5zH9/+Uuvf/jK7n/4yq + 3v+9kiH/57o5//fbSv/Oukr/hHUx/5yWOf/341L/99tS/+/PQv/n373////////7///39/f/7/P3/+/r + 7/+9z+f/jLLv/4yu5/+Eot7/e5rW/3OOxv9rhrX/Y321/2N5rf9adaX/WnGl/1pxpf9acaX/Y3mt/wgU + Qv8ADDn/AAxC/wAQQv8AFEr/ABRK/wAYSv8IAJz/AACc/wAAnP8pNJylQlWUjEpZlLVKYZy1UmWlhFJt + rRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEpV5xAQANb/EADe/xAA + 3v8IDJT/ABhK/wAYUv8AHFL/ABxa/wAgY/8AGFr/a5LG/5zD//+ly///pc///63T//+t1///rdf//63b + //+t2///td///7Xf//+t3///rd///5zH9/+tx+//////////////////////////////////1sdr//fb + Sv/331L/999S//ffUv/331L/999K/97HUv/O4+//rd///7Xj//+14///tef//7Xn//+15///teP//63b + //+l0///pc///6XP//+ly///nMf3/5S+9/+Mru//hKLe/8bLzv/Gmin/58dK/+/TUv/321L/99tS//fb + Uv/vz0L/3s+U//////////////v///f39//v7+//5+fn/4yu5/+Eot7/e5rW/3OSzv9rir3/Y4K1/2N9 + tf9jea3/Wnmt/1p1rf9acaX/WnGl/1pxpf9ada3/CBRC/wAMOf8AEEL/ABBC/wAUQv8AFEr/ABhK/wAA + nP8AAJz/CACc/wgMnJwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAEADWtRAA1v8QANb/EADe/wgMlP8AGEr/ABhS/wAcUv8AHFr/ACBj/wAY + Wv9rksb/nMP3/5zH9/+lz///pdP//63T//+t1///rdf//63X//+t2///rdf//63X//+t1///pdP//4yy + 7//v8///////////////////////////////////3tOM/97HQv/v10L/79dC/+fLOf/ey3v/9/P3/5zD + 7/+13///teP//7Xn//+15///tef//7Xn//+14///rdv//63T//+lz///pc///6XL//+cx/f/lLr3/4yy + 7/+Epuf/lK7e/+/n3v/GqlL/1rpC/+/PSv/nz0L/3sNK/+fftf////////v///f39//v7/f/5+fv/97f + 5/+1w9b/c5LO/3OOxv9rir3/a4K1/2N9tf9jfbX/Y32t/2N5rf9ada3/WnWt/1pxpf9acaX/Um2l/1p1 + rf8QGEr/AAw5/wAQQv8AEEL/ABRC/wAUSv8AFEr/AACc/wAAnP8AAJz/CACc/xAQnDEAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACEY1kIQANb/EADW/xAA + 1v8QANb/CAit/wAYQv8AGFL/ABhS/wAcWv8AIGP/ABRS/3OSxv+cvvf/nMP3/5zH9/+ly/f/pc/3/6XP + 9/+l0///pdP//6XT//+lz/f/pc/3/6XP9/+l0/f/nMf3/5y65/////////////////////////////// + //////////v3/+/jxv/v473/9/fv//////+lvuf/pc/3/7Xf//+14///tef//7Xn//+95///tef//7Xj + //+t2///rdf//6XP//+ly///nMv//5zD9/+Uuvf/jLLv/4Sq5/+Eot7/vcvn/+/z9//n497/3tu9/+fj + zv/38/f/7+/3/+fn7//e4+f/3tve/9bT3v/Oy9b/xsfO/2uGvf9rhr3/a4K1/2OCtf9jfbX/Y3m1/2N5 + rf9jea3/WnWt/1p1rf9ada3/WnGl/1ptpf9abaX/WnWt/xAYSv8ADDn/ABBC/wAQQv8AFEL/ABRK/wAU + Uv8AAJz/AACc/wAAnP8AAJz/CACczgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAEADWxhAA1v8QANb/EADW/xAA1v8QANb/ABRC/wAYUv8AGFL/ABxS/wAc + Wv8AFEr/a47G/5S27/+Utuf/lLbn/5S23v+Uuuf/lLrn/5y+5/+cw+//nMPv/5zD7/+cw+//nMPv/5zH + 7/+cx/f/jLLv/6W+5/////////v////7////+/////v////7////+/////v////7////+///tcfn/4y2 + 5/+t1///rdv//7Xj//+14///tef//7Xn//+14///teP//63b//+l0///pc///5zH9/+cx/f/nL73/5S2 + 7/+Mru//hKrv/4Sm5/97nt7/vcPW/87P1v/Oz9b/zs/W/87L1v/Gx87/xsPO/72+xv+9usb/vbrG/726 + xv9rhrX/Y321/2N9tf9jebX/Y3mt/2N5rf9jea3/Wnmt/1p1rf9ada3/WnGt/1pxpf9abaX/Um2l/1Jt + pf9aca3/EBhK/wAMOf8AEEL/ABBC/wAUQv8AFEr/AAhz/wAAnP8AAJz/AACc/wAAnP8AAJz/CAScSgAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAzjEQAM7/EADO/xAA + zv8QANb/EADW/xAA1v8IBIz/ABA5/wAYSv8AHFL/ABhS/wAUSv9aea3/e5rO/3uaxv97msb/e5rG/3ua + xv97msb/e57G/3uizv+Eos7/hKbO/4Smzv+Eqtb/jKrW/4yu1v+Mrt7/hKbe/4yq1v/W197/5+Pn/+fj + 7//n5+//7+vv/+/v9//38/f/9/f3/62+3v9zms7/lL7n/6XL7/+l0/f/rdf3/63b9/+12/f/rd/3/63b + 9/+t1/f/pdP3/6XL9/+cw/f/nL73/5S+9/+Utu//jK7n/4Sm3v97mtb/c5LO/3OOxv9rir3/paq9/726 + xv+1tsb/tbbG/7W2vf+1sr3/tbK9/722vf+lqr3/Y321/2N5tf9jea3/Y3mt/2N5rf9aea3/Wnmt/1p1 + rf9ada3/WnGt/1pxrf9abaX/Um2l/1Jtpf9SaaX/Umml/1Jtrf8IGEr/AAw5/wAQQv8AEEL/ABRK/wAU + Sv8AAJz/AACc/wAAnP8AAJz/AACc/wAAnP8AAJy9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAEADOnBAAzv8QAM7/EADO/xAAzv8QAM7/EADO/xAA3v8ABHP/AAgx/wAQ + Qv8AFEL/AAQx/0pllP9rir3/a4a1/2uGtf9rhrX/a4K1/2uCtf9rgrX/a4a1/2uGtf9rhrX/a4a1/2uK + tf9rir3/c469/3OSvf9zkr3/c5K9/2uOvf+Mosb/tbrO/8bH1v/Oz9b/1tPW/73D1v97msb/a4a9/3OS + vf+Eos7/c46t/4yu1v+Mrs7/jLLW/5S21v+Uttb/lLbW/4yy1v+Mrtb/hKrW/4Sm1v+Eotb/hKLW/3ue + zv9zls7/a469/2N9tf9jfa3/Y321/2N9tf9jfbX/e461/6Wqvf+1sr3/tbK9/62uvf+Unr3/a4a1/1p1 + rf9jea3/Y3mt/2N5rf9aea3/WnWt/1p1rf9ada3/WnGt/1pxrf9abaX/Um2l/1Jppf9SaaX/Umml/1Jl + pf9KZaX/Umml/wgUSv8ADDn/AAxC/wAQQv8AFEr/AASM/wAAnP8AAJz/AACc/wAAnP8AAJz/AACc/wAA + nP8AAJwhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAM73EADO/xAA + zv8QAM7/EADO/xAAzv8QANb/EADO/xAA3v8YHJT/AAgp/wAIMf8ABCn/QlWE/2N5rf9jea3/Wnmt/1p1 + rf9aea3/Wnmt/2N5rf9jea3/Y321/2N9tf9jfbX/Y321/2OCtf9jgrX/a4K1/2OCtf9rgrX/a4a1/2uG + tf9rhrX/a4q1/2uKvf9rirX/a4q1/2uKtf9rirX/c5K9/0pde/85RWP/c469/3OOvf9zjr3/c5K9/3OO + vf9zjr3/c469/3OOvf9rjr3/a4q9/2uKvf9rir3/a4q9/2uGvf9rgrX/a4K9/xAYKf9jfbX/Y321/2N9 + tf9jfbX/Wnmt/1p5rf9aea3/WnWt/1p1rf9aea3/Wnmt/1p1rf9ada3/WnWt/1p1rf9aca3/WnGt/1px + pf9SbaX/Wm2t/1Jtpf9SaaX/UmWl/1Jlpf9KZaX/SmGc/0phnP9SZaX/CBRC/wAMOf8ACDn/EBxS/wgE + lP8AAJz/AACU/wAAlP8AAJz/AACc/wAAnP8AAJz/AACc/wAAnHsAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAEADOQhAAzv8QAM7/EADO/xAAzv8QAM7/EADO/xAAzv8QAM7/EADW/wgA + pf8QEIz/AAw5/wAEKf85SXv/WnGl/1ptpf9aca3/WnGt/1pxrf9aca3/WnGt/1p1rf85SXP/Y321/2N5 + rf9jfa3/Y321/2N9tf9jgrX/Y4K1/2OCtf9jgrX/Y4K1/2OCtf9rgrX/a4K1/2uGtf9rhrX/a4a1/2uK + vf85SWv/AAAA/1JllP9rhrX/a4a1/2uGtf9rhrX/a4a1/2uGtf9rhrX/a4a1/2uGtf9rgrX/Y4K1/2OC + tf9jgrX/Y321/2N9tf9rgr3/GCAx/wgUIf9acaX/Y3m1/2N5rf9jea3/Wnmt/1p5rf9ada3/WnWt/1p1 + rf9ada3/WnGt/1pxrf9aca3/WnGl/1Jtpf9SbaX/Umml/1Jlpf85SXv/Umml/0plpf9KYZz/SmGc/0ph + nP9KYZz/Sl2c/0plpf8AEDn/AAwx/wgQWv8ABHP/AABr/wAAnP8AAJz/AACc/wAAnP8AAJz/AACc/wAA + nP8AAJz/AACczgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAM6EEADO/xAA + zv8QAM7/EADO/xAAzv8QAM7/EADO/xAAzv8QAMb/AACM/wAAlP8IAKX/CAhj/zFBc/9SaaX/Umml/1Jp + pf9SaaX/Umml/1Jtpf9SbaX/WnW1/wgQIf8xQWP/Y3m1/1p1rf9jea3/Y3mt/2N9rf9jfa3/Y321/2N9 + tf9jfbX/Y321/2N9tf9jgrX/Y4K1/2uCtf9rgrX/IShC/wAACP8AAAD/Y4K1/2OCtf9jgrX/Y4K1/2OC + tf9jgrX/Y321/2N9tf9jfbX/Y321/2N9tf9jfbX/Y3mt/2N5rf9jea3/Y3mt/2N5tf8pPFr/AAQQ/wAI + GP9CVYT/Y321/1p1rf9ada3/WnWt/1p1rf9aca3/WnGt/1pxrf9SbaX/Um2l/1Jtpf9SaaX/Umml/1Jp + pf9KYZz/CBAY/zFJc/9KYZz/SmGc/0phnP9KXZz/Sl2c/0pdnP9KXZz/SmGl/wAQQv8ACGv/AABr/wAA + a/8AAGv/AACM/wAAnP8AAJz/AACc/wAAnP8AAJz/AACc/wAAnP8AAJz/AACcCAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAzr0QAM7/EADO/xAAzv8QAM7/EADO/xAAzv8QAM7/EADW/xAA + tf8AAIz/AACc/wgApf8IAK3/EBSl/0pdnP9KZZz/SmGc/0plpf9SZaX/Umml/1Jppf9aca3/GCA5/wAE + EP8YKEL/WnWt/1p1rf9ada3/Wnmt/2N5rf9jea3/Y3mt/2N5rf9jfa3/Y3mt/2N9tf9rhr3/Sl2M/wgM + GP8AABD/AAQQ/xAYKf9rir3/Y321/2N9tf9jfbX/Y32t/2N5rf9jea3/Y3mt/2N5rf9jea3/Y3mt/2N5 + rf9aea3/WnWt/1p1rf9ada3/WnWt/0pdjP8ABBD/AAgY/wAAEP8hKEr/WnGl/1p1rf9acaX/Um2l/1Jt + pf9SbaX/Umml/1Jppf9SaaX/UmWl/1Jlpf9Saa3/OU17/wAIEP8ABBD/QlGM/0pdnP9KXZz/Sl2c/0pd + nP9CWZz/Qlmc/0phnP8pOIT/AABr/wAAa/8AAGv/AABr/wAAa/8AAHv/AACc/wAAnP8AAJz/AACc/wAA + nP8AAJz/AACc/wAAnP8AAJxCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEADO9xAA + zv8QAM7/EADO/xAAzv8QAM7/EADO/xAAzv8QANb/CACt/wAAjP8IAJz/CACt/wgAvf8IAK3/AASl/zFB + nP9KZZz/SmGc/0phnP9KYZz/SmWc/1Jppf8pNFL/AAQQ/wAEEP8ICBj/OUlz/2N5tf9jebX/WnWt/1p1 + rf9aea3/Y3mt/2N9tf9jfbX/Sl2M/xAcOf8AABj/AAAY/wAEEP8AAAj/MUFj/2N9tf9jea3/Y3mt/2N5 + rf9jea3/Wnmt/1p1rf9ada3/WnWt/1p1rf9ada3/WnWt/1pxrf9aca3/WnGt/1pxrf9acaX/WnGt/wAI + GP8ABBj/AAQY/wAAGP8ABBj/KTRa/1Jppf9aca3/Umml/1Jppf9SZaX/SmWl/1Jlpf9SaaX/QlmU/xgg + Qv8ABBD/AAgY/wAEEP9KWZz/Qlmc/0JZnP9CWZz/Qlmc/0JZnP9CWZz/EBhz/wAAa/8AAGv/AABr/wAA + a/8AAGv/AABr/wAAe/8AAJz/AACc/wAAnP8AAJz/AACc/wAAnP8IAJz/CACc/wAAnHsAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAzggQAM7/EADO/xAAzv8QAM7/EADO/xAAzv8QAM7/EADO/xAA + 1v8IAL3/AACM/wgAnP8IALX/CAC9/wgAvf8IAK3/AACl/xgcnP9KXZz/Sl2c/0pdnP9KXZz/SmGc/zlN + e/8ABBD/AAgY/wAEGP8AABD/AAgY/yEwSv85TXv/Sl2M/0pdjP85TXP/ITBK/wAIIf8AABj/AAAh/wAA + If8AABj/AAQI/wAAAP9SbZz/WnWt/1p1rf9ada3/WnWt/1p1rf9ada3/WnGt/1pxrf9aca3/WnGt/1px + rf9acaX/Um2l/1Jtpf9SbaX/Um2l/1Jppf9Sba3/GChC/wAEGP8ABBj/AAQh/wAEIf8AACH/AAAY/xAY + Mf8pOFr/OUl7/0JRhP85TXv/KThj/xAYMf8ABBD/AAQY/wAIGP8ACBj/CBAh/0pdpf9CWZz/Qlmc/0JZ + nP9CWZz/MUGM/wAEa/8AAGv/AABr/wAAa/8AAGv/AABr/wAAa/8AAGv/AACM/wAAnP8AAJz/AACc/wAA + nP8AAJz/CACc/wgAnP8IAJz/CACclAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEADOKRAA + zv8QAM7/EADO/xAAzv8QAM7/EADO/xAAzv8QAM7/EADO/xAA1v8AAJT/AACU/wgArf8IAL3/CAC9/wgA + tf8IAK3/CACl/wgInP85RZz/Sl2c/0JZnP9KXZz/Sl2c/wAEEP8ACBj/AAQY/wAEGP8ABBj/AAQY/wAE + EP8ABBD/AAQQ/wAEEP8AABj/AAAh/wAAIf8AACH/AAAh/wAEEP8ABAj/EBgp/2N5tf9aca3/WnGt/1px + rf9aba3/Wm2t/1ptpf9SbaX/Um2l/1Jtpf9SbaX/Umml/1Jppf9SaaX/Umml/1Jlpf9SZaX/UmWl/0pl + pf9CUYT/AAQQ/wAEGP8ABBj/AAQY/wAAIf8AACH/AAAh/wAEGP8ABBD/AAQQ/wAEEP8ABBD/AAQY/wAE + GP8ABBj/AAQY/wAEGP8hLFL/Qlmc/0JVlP9CVZT/Qlmc/xgke/8AAGv/AABr/wAAa/8AAGv/AABr/wAA + a/8AAGv/AABr/wAAe/8IAJz/AACc/wAAnP8IAJz/CACc/wgAnP8IAJz/CACc/wgAnP8IAJy1AAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAM45EADO/xAAzv8QAM7/EADO/xAAzv8QAM7/EADO/xAA + zv8QAM7/EADW/wgAvf8AAJT/CACl/wgAtf8IAL3/CAC9/wgAtf8IAK3/CACl/wAAnP8hKJz/Sl2c/0JZ + nP9KXaX/GCA5/wAIGP8ABBj/AAQY/wAAIf8ABBj/AAQY/wAEGP8ABBj/AAAh/wAAIf8AACH/AAAh/wAA + If8ABBD/AAQI/wAACP85SXP/Um2l/1Jppf9SaaX/Umml/1Jppf9SaaX/Umml/1Jppf9SaaX/UmWl/1Jl + pf9SZaX/SmWl/0plpf9KYZz/SmGc/0phnP9KYZz/SmGc/0plpf8IECH/AAgY/wAEGP8ABBj/AAAh/wAA + If8AACH/AAAh/wAEGP8ABBj/AAQY/wAEGP8ABBj/AAQY/wAEGP8ABBj/AAAQ/zlNjP9CVZT/Qlmc/zlF + lP8IDGv/AABr/wAAa/8AAGv/AABr/wAAa/8AAGv/AABr/wAAa/8AAHP/CACU/wgAnP8IAJz/CACc/wgA + nP8IAJz/CACc/wgAnP8IAJz/CACc/wgAnMYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAA + zkoQAM7/EADO/xAAzv8QAM7/EADO/xAAzv8QAM7/EADO/xAA1v8QANb/EADe/wgArf8AAJT/CACl/wgA + rf8IALX/CAC1/wgAtf8IAK3/CACl/wAAnP8ICJz/MUWU/0JdlP85SYT/AAQQ/wAEGP8ABBj/AAAh/wAA + If8AACH/AAAh/wAAIf8AACH/AAAh/wAAIf8AACH/AAQQ/wAEEP8ABBD/CAwY/1Jprf9KZaX/SmWl/0pl + pf9KZaX/SmWl/0phpf9KYZz/SmGc/0phnP9KYZz/SmGc/0phnP9KYZz/Sl2c/0pdnP9KXZz/Sl2c/0pd + nP9KXZz/Qlmc/zFBc/8ABBD/AAgY/wAIGP8ABBj/AAAh/wAAIf8AACH/AAAh/wAAIf8AACH/AAAh/wAA + If8ABCH/AAQY/wAIGP8QFDH/Qlmc/0JVlP8YJHv/AABj/wAAa/8AAGv/AABr/wAAa/8AAGv/AABr/wAA + a/8AAGv/AABz/wgAjP8IAJz/CACc/wgAnP8IAJz/CACc/wgAnP8IAJz/CACc/wgAnP8IAJz/CACczgAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEADOQhAAzv8QAM7/EADO/xAAzv8QAM7/EADO/xAA + zv8QAM7/EADW/xAA1v8QANb/EADe/wgArf8AAJT/CACl/wgArf8IALX/CAC1/wgAtf8IAK3/CACt/wgA + pf8AAJz/GBiU/0JRnP8QIDn/AAQY/wAEGP8AACH/AAAh/wAAIf8AACH/AAAh/wAAIf8AACH/AAAY/wAE + EP8ABBD/AAQQ/wAACP8xRXP/Sl2c/0pdnP9KXZz/Sl2c/0pdnP9KXZz/Sl2c/0pdnP9KXZz/Sl2c/0pd + nP9KXZz/Sl2c/0JdnP9CWZz/Qlmc/0JZnP9CWZz/Qlmc/0JZnP9CWZz/Slmc/wgUKf8ACBj/AAgY/wAI + GP8ABBj/AAAh/wAAIf8AACH/AAAh/wAAIf8AACH/AAAh/wAEGP8ABBj/AAQQ/zlNhP8pOIT/AARr/wAA + a/8AAGv/AABr/wAAa/8AAGv/AABr/wAAa/8AAGv/AABr/wAAc/8IAJT/CACc/wgAnP8IAJz/CACc/wgA + nP8IAJz/CACc/wgAnP8IAJz/CACc/wgAnP8IAJzOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAQAM4xEADO/xAAzv8QAM7/EADO/xAAzv8QAM7/EADO/xAA1v8QANb/EADW/xAA1v8QANb/EADe/wgA + tf8IAJT/CACc/wgApf8IAK3/CAC1/wgAtf8IALX/CACt/wgApf8IAJz/AACc/xAYlP8ACBj/AAgY/wAE + GP8AACH/AAAh/wAAIf8AACH/AAAh/wAEGP8ABBD/AAQQ/wAEEP8ABAj/ECA5/0phpf9CWZz/Qlmc/0JZ + nP9CWZz/Qlmc/0JZnP9CWZz/Qlmc/0JZnP9CWZz/Qlmc/0JZnP9CWZz/Qlmc/0JZnP9CWZz/QlWU/0JV + lP9CVZT/QlWU/0JVlP9CVZT/OU2M/wAEEP8ACBj/AAgY/wAIGP8ABBj/AAQY/wAEGP8ABBj/AAQh/wAE + If8ABBj/AAgY/wAIEP8IEEL/CAxz/wAAY/8AAGv/AABr/wAAa/8AAGv/AABr/wAAa/8AAGv/AABr/wAA + a/8AAHv/CACc/wgAnP8IAJz/CACc/wgAnP8IAJz/CACc/wgAnP8IAJz/CACc/wgAnP8IAJz/CACc/wgA + nL0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAzhAQAM7/EADO/xAAzv8QAM7/EADO/xAA + 1v8QANb/EADW/xAA1v8QANb/EADW/xAA1v8QANb/EADe/wgAvf8IAJT/AACU/wgApf8IAK3/CAC1/wgA + tf8IALX/CACt/wgApf8IAKX/CACc/wgEjP8ACBD/AAgY/wAEGP8ABBj/AAQY/wAEGP8ABBj/AAQQ/wAE + EP8ABBD/AAQI/wgQIf9CWZz/QlWU/0JZnP9CWZz/Qlmc/0JZnP9CWZz/Qlmc/0JZnP9CWZz/Qlmc/0JV + nP9CVZT/QlWU/0JVlP9CVZT/QlWU/0JVlP9CVZT/QlWU/0JVlP9CVZT/QlWU/0JVlP9CVZz/KThr/wAE + EP8ACBj/AAgY/wAIGP8ACBj/AAgY/wAIGP8ACBj/AAgY/wAIGP8ACBD/AAgx/wAAc/8AAGv/AABr/wAA + a/8AAGv/AABr/wAAa/8AAGv/AABr/wAAa/8AAGv/CACE/wgApf8IAJz/CACc/wgAnP8IAJz/CACc/wgA + nP8IAJz/CACc/wgAnP8IAJz/CACc/wgAnP8IAJz/CACcnAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAABAAzv8QAM7/EADO/xAAzv8QANb/EADW/xAA1v8QANb/EADW/xAA1v8QANb/EADW/xAA + 3v8QAM7/EADn/xAAxv8IAJT/AACU/wgAnP8IAK3/CAC1/wgAtf8IALX/CAC1/wgArf8IAKX/CACc/wgE + lP8ACCH/AAgQ/wAIGP8ABBj/AAQQ/wAEEP8ABBD/AAQQ/wAACP8IECH/QlWc/0JVlP9CVZT/QlWU/0JV + lP9CVZT/QlWU/0JVlP9CVZT/QlWU/0JVlP9CVZT/QlWU/0JVlP9CVZT/QlWU/0JVlP9CVZT/QlWU/0JV + lP9CVZT/QlWU/0JRlP9CUZT/QlGU/0JRlP9CVZz/KThr/wAEEP8ACBD/AAgY/wAIGP8ACBj/AAgY/wAI + GP8ACBD/AAgQ/wgIQv8AAGv/AABr/wAAa/8AAGv/AABr/wAAa/8AAGv/AABr/wAAa/8AAGv/AABz/wgA + lP8IAK3/CACc/wgAnP8IAJz/CACc/wgAnP8IAJz/CACc/wgAnP8IAJz/CACc/wgAnP8IAJz/CACc/wgA + nP8IAJyEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEADO5xAAzv8QANb/EADW/xAA + 1v8QANb/EADW/xAA1v8QANb/EADW/xAA3v8QAN7/EADe/xAA3v8QAM7/EADn/xAA1v8IAJz/AACU/wgA + nP8IAKX/CACt/wgAtf8IALX/CAC1/wgArf8IAKX/CACc/wgApf8ICGv/AAgp/wAIEP8ABAj/AAQI/wAE + CP8IEBj/KTha/0JZnP9CUZT/QlWU/0JVlP9CVZT/QlWU/0JVlP9CVZT/QlWU/0JVlP9CVZT/QlWU/0JV + lP9CVZT/QlWU/0JVlP9CVZT/QlGU/0JRlP9CUZT/QlGU/0JRlP9CUZT/QlGU/0JRlP9CUZT/QlGU/0JR + lP9CVZT/OU2M/xggOf8ACBD/AAgQ/wAIEP8ACBD/AAgY/wAIOf8ABGP/AABr/wAAa/8AAGv/AABr/wAA + a/8AAGv/AABr/wAAa/8AAGv/AABr/wAAe/8IAKX/CAC1/wgAnP8IAJz/CACl/wgAnP8IAJz/CACc/wgA + nP8IAJz/CACc/wgAnP8IAJz/CACc/wgAnP8IAJz/CACc/wgAnGsAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAQAM6lEADO/xAAzv8QANb/EADW/xAA1v8QANb/EADW/xAA1v8QAN7/EADe/xAA + 3v8QAN7/EADe/xAA5/8QAM7/EADn/xAA5/8IALX/CACU/wgAlP8IAKX/CACt/wgAtf8IALX/CACt/wgA + rf8IAK3/CACl/wgAnP8IAKX/CASc/wgAjP8AAIT/CASM/wgInP8QHJT/ISiU/zE8lP85TZT/QlWU/0JZ + lP9CVZT/QlWU/0JVlP9CUZT/QlGU/0JRlP9CUZT/QlGU/0JRlP9CUZT/QlGU/0JRlP9CUZT/QlGU/0JR + lP9CUZT/QlGU/0JRlP9CVZT/QlWU/0JVlP85UZT/MUWM/ykwhP8YIHv/EBR7/wAEc/8AAGP/AABj/wAE + a/8AAHP/AABr/wAAa/8AAGv/AABr/wAAa/8AAGv/AABr/wAAa/8AAGv/AABr/wAAc/8IAJT/EAC1/wgA + tf8IAJz/CACc/wgApf8IAKX/CACc/wgAnP8IAJz/CACc/wgAnP8IAJz/CACc/wgAnP8IAJz/CACc/wgA + nP8IAJz/CACcKQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAA1nMQAM7/EADW/xAA + 1v8QANb/EADW/xAA1v8QANb/EADe/xAA3v8QAN7/EADe/xAA3v8QAOf/EADn/xAA5/8QAM7/EADW/xAA + 7/8QANb/CACt/wgAlP8IAJT/CACl/wgArf8IAK3/CACt/wgArf8IAK3/CACt/wgApf8IAJz/AACU/wAA + lP8AAIz/AACM/wAAjP8AAIz/AACM/wAAjP8AAIz/CAyM/xAclP8hJJT/KTCU/zE8lP85RZT/OU2U/zlR + lP9CVZT/QlWU/0JVlP9CVZT/QlWU/0JRlP85TZT/OUmU/zFBjP8pOIz/ISyM/xgghP8QFHv/AAR7/wAA + c/8AAHP/AABz/wAAc/8AAGv/AABr/wAAa/8AAGv/AABr/wAAa/8AAGv/AABr/wAAa/8AAGv/AABr/wAA + a/8AAGv/AABr/wAAc/8IAIz/CAC1/wgAvf8IALX/CACl/wgApf8IAKX/CACl/wgApf8IAJz/CACc/wgA + nP8IAJz/CACc/wgAnP8IAJz/CACc/wgAnP8IAJz/CACc/wgAnP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAEADOKRAA1v8QANb/EADW/xAA1v8QANb/EADW/xAA3v8QAN7/EADe/xAA + 3v8QAOf/EADn/xAA5/8QAOf/EADn/xAA7/8QAM7/EADO/xAA7/8QAO//EADW/wgAtf8IAJz/AACU/wgA + nP8IAKX/CACt/wgArf8IAK3/CACt/wgApf8IAKX/CACc/wgAlP8AAJT/AACM/wAAjP8AAIz/AACM/wAA + jP8AAIz/AACM/wAAjP8AAIz/AACM/wAAjP8AAIz/AACM/wAAhP8AAIT/AACE/wAAhP8AAIT/AACE/wAA + e/8AAHv/AAB7/wAAe/8AAHv/AAB7/wAAe/8AAHv/AAB7/wAAe/8AAHv/AABz/wAAc/8AAHP/AABz/wAA + c/8AAHP/AABz/wAAa/8AAGv/AABr/wAAa/8AAGv/AABr/wAAc/8IAIT/CACl/wgAtf8IALX/CACt/wgA + pf8IAKX/CACl/wgApf8IAKX/CACl/wgApf8IAJz/CACc/wgAnP8IAJz/CACc/wgAnP8IAJz/CACc/wgA + nP8IAJz/CACctQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEADW7xAA + 1v8QANb/EADW/xAA1v8QAN7/EADe/xAA3v8QAN7/EADn/xAA5/8QAOf/GADn/xgA7/8YAO//GADv/xgA + 7/8QAN7/EADO/xAA5/8QAPf/EADv/xAA3v8IAL3/CACc/wgAlP8IAJz/CACl/wgApf8IAKX/CACl/wgA + pf8IAKX/CACl/wgAnP8IAJT/AACU/wAAjP8AAIz/AACM/wAAjP8AAIz/AACM/wAAjP8AAIz/AACM/wAA + jP8AAIz/AACE/wAAhP8AAIT/AACE/wAAhP8AAIT/AACE/wAAhP8AAHv/AAB7/wAAe/8AAHv/AAB7/wAA + e/8AAHv/AAB7/wAAe/8AAHv/AAB7/wAAe/8AAHP/AABz/wAAc/8AAHP/AABz/wAAc/8AAGv/AABr/wAA + c/8IAIz/CACt/xAAtf8IALX/CAC1/wgAtf8IAKX/CACt/wgArf8IAKX/CACl/wgApf8IAKX/CACl/wgA + nP8IAJz/CACc/wgAnP8IAJz/CACc/wgAnP8IAJz/CACc/wgAnP8IAJxzAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQANacEADW/xAA1v8QANb/EADe/xAA3v8QAN7/EADe/xAA + 5/8QAOf/EADn/xgA5/8YAO//GADv/xgA7/8YAO//GADv/xgA9/8YAO//EADW/xAA3v8QAO//EAD3/xAA + 9/8QAOf/EADG/wgApf8IAJz/CACc/wgAnP8IAKX/CACl/wgApf8IAKX/CACl/wgApf8IAJz/CACc/wAA + lP8AAJT/AACU/wAAjP8AAIz/AACM/wAAjP8AAIz/AACM/wAAjP8AAIz/AACM/wAAjP8AAIz/AACM/wAA + jP8AAIT/AACE/wAAhP8AAIT/AACE/wAAhP8AAIT/AACE/wAAhP8AAIT/AACE/wAAe/8AAHv/AAB7/wAA + e/8AAHv/AABz/wAAc/8AAHP/AABz/wgAhP8IAJz/EAC9/xAAvf8IAL3/CAC9/wgAvf8IAK3/CACl/wgA + rf8IAK3/CACt/wgArf8IAKX/CACl/wgApf8IAKX/CACc/wgAnP8IAJz/CACc/wgAnP8IAJz/CACc/wgA + nP8IAJz/CACc/wgAnCEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAA + 1koQANb/EADW/xAA1v8QAN7/EADe/xAA3v8QAOf/EADn/xAA5/8YAO//GADv/xgA7/8YAO//GAD3/xgA + 9/8YAPf/GAD3/xgA9/8YAPf/GADe/xgA3v8YAO//GAD3/xgA9/8YAP//EADv/xAAzv8IAK3/CACl/wgA + nP8IAJz/CACc/wgApf8IAKX/CACl/wgApf8IAKX/CACc/wgAnP8IAJz/CACc/wAAlP8AAJT/AACU/wAA + lP8AAJT/AACM/wAAjP8AAIz/AACM/wAAjP8AAIz/AACM/wAAjP8AAIz/AACM/wAAhP8AAIT/AACE/wAA + hP8AAIT/AACE/wAAhP8AAIT/AAB7/wAAe/8AAHv/AAB7/wAAe/8AAHv/CACM/wgAnP8QAL3/EADO/xAA + zv8IAL3/CAC9/wgAvf8IALX/CACt/wgArf8IALX/CACt/wgArf8IAK3/CACt/wgApf8IAKX/CACl/wgA + pf8IAKX/CACc/wgAnP8IAJz/CACc/wgAnP8IAJz/CACc/wgAnP8IAJzWAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAA1vcQANb/EADe/xAA3v8QAN7/EADn/xAA + 5/8QAOf/EADn/xgA7/8YAO//GADv/xgA9/8YAPf/GAD3/xgA9/8YAPf/GAD3/xgA9/8YAP//GADv/xgA + 3v8YAPf/GAD3/xgA//8YAP//GAD//xgA9/8QAOf/EADO/xAAtf8IAKX/CACc/wgAnP8IAJz/CACc/wgA + nP8IAJz/CACc/wgAnP8IAJz/CACc/wgAnP8IAJT/AACU/wAAlP8AAJT/AACM/wAAjP8AAIz/AACM/wAA + jP8AAIz/AACM/wAAjP8AAIz/AACM/wAAhP8AAIT/AACE/wAAhP8AAIT/AACE/wAAhP8AAIT/AACE/wAA + hP8IAIz/CACl/xAAvf8QAM7/EADW/xAAzv8IAMb/CAC9/wgAvf8IALX/CACt/wgApf8IALX/CAC1/wgA + tf8IALX/CAC1/wgArf8IAK3/CACt/wgApf8IAKX/CACl/wgApf8IAJz/CACc/wgAnP8IAJz/CACc/wgA + nP8IAJz/CACc/wgAnHsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAEADWnBAA1v8QAN7/EADe/xAA3v8QAOf/EADn/xAA5/8YAO//GADv/xgA7/8YAPf/GAD3/xgA + 9/8YAPf/GAD3/xgA//8YAP//GAD//xgA//8YAP//GAD//xgA7/8YAO//IQD//yEA//8hAP//GAD//xgA + //8YAP//GAD3/xgA5/8QAM7/EAC1/wgApf8IAJz/CACU/wAAlP8AAJT/AACU/wAAlP8IAJT/CACU/wgA + lP8IAJT/AACU/wAAjP8AAIz/AACM/wAAjP8AAIz/AACM/wAAjP8AAIz/AACM/wAAjP8AAIT/AACE/wAA + hP8AAIT/AACE/wAAjP8IAIz/CACU/wgAnP8IAK3/EAC9/xAAzv8QANb/EADW/wgAxv8IAMb/CADG/wgA + vf8IALX/CACt/wgApf8IALX/CAC9/wgAvf8IALX/CAC1/wgAtf8IALX/CACt/wgArf8IAK3/CACl/wgA + pf8IAKX/CACl/wgAnP8IAJz/CACc/wgAnP8IAJz/CACc/wgAnP8IAJz/CACcGAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQANY5EADW/xAA3v8QAN7/EADe/xAA + 5/8QAOf/EADn/xgA7/8YAO//GADv/xgA9/8YAPf/GAD3/xgA9/8YAP//GAD//xgA//8YAP//GAD//xgA + //8YAP//GAD//xgA//8YAO//GAD3/yEA//8hAP//IQD//yEA//8YAP//GAD//xgA//8YAP//GADv/xAA + 3v8QAMb/CAC1/wgApf8IAJz/CACc/wgAnP8IAJz/CACU/wgAlP8IAJT/AACM/wAAjP8AAIz/AACM/wAA + jP8AAIz/AACM/wAAjP8AAIz/AACM/wgAjP8IAJT/CACc/wgApf8IAKX/CACt/xAAvf8QAMb/EADO/xAA + 1v8QAM7/CADG/wgAxv8IAMb/CADG/wgAvf8IALX/CACt/wgApf8IALX/CAC9/wgAvf8IAL3/CAC9/wgA + vf8IAL3/CAC1/wgAtf8IALX/CACt/wgArf8IAK3/CACl/wgApf8IAKX/CACc/wgAnP8IAJz/CACc/wgA + nP8IAJz/CACc/wgAnMYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAQAN7eEADe/xAA3v8QAN7/EADn/xgA5/8YAO//GADv/xgA7/8YAPf/GAD3/xgA + 9/8YAPf/GAD3/xgA//8YAP//GAD//xgA//8YAP//GAD//xgA//8YAP//GAD//xgA//8YAP//GADv/xgA + 9/8hAP//IQD//yEA//8hAP//IQD//xgA//8YAP//GAD//xgA//8YAP//GAD3/xgA7/8YAOf/EADe/xAA + 1v8QAM7/EAC9/xAAtf8QALX/CACt/wgArf8IAKX/CACl/wgApf8IAK3/CACt/wgAtf8QAL3/EADG/xAA + zv8QANb/EADW/xAA1v8QANb/EADW/xAAzv8IAMb/CADG/wgAxv8IAL3/CAC9/wgAtf8IAK3/CACl/wgA + pf8IALX/CADG/wgAxv8QAMb/CADG/wgAvf8IAL3/CAC9/wgAvf8IAL3/CAC1/wgAtf8IAK3/CACt/wgA + rf8IAKX/CACl/wgApf8IAKX/CACc/wgAnP8IAJz/CACc/wgAnP8IAJz/CACcYwAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAA3msQAN7/EADe/xAA + 3v8QAOf/GADn/xgA7/8YAO//GADv/xgA9/8YAPf/GAD3/xgA//8YAP//GAD//xgA//8YAP//GAD//xgA + //8YAP//GAD//xgA//8YAP//GAD//xgA//8YAP//GAD//xgA9/8YAPf/IQD//yEA//8hAP//IQD//yEA + //8hAP//IQD//yEA//8YAP//GAD//xgA//8YAPf/GAD3/xgA9/8YAPf/EAD3/xAA9/8QAPf/EADv/xAA + 7/8QAO//EADv/xAA7/8QAO//EADv/xAA5/8QAN7/EADW/xAA1v8IAM7/CADG/wgAxv8IAMb/CADG/wgA + xv8IAL3/CAC9/wgAtf8IAKX/CACl/wgArf8QAL3/EADG/xAAxv8QAMb/EADG/xAAxv8QAMb/EADG/wgA + xv8IAL3/CAC9/wgAvf8IALX/CAC1/wgAtf8IAK3/CACt/wgApf8IAKX/CACl/wgApf8IAJz/CACc/wgA + nP8IAJz/CACc/wgAnO8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAEADeCBAA3vcQAN7/EADn/xAA5/8YAOf/GADv/xgA7/8YAO//GAD3/xgA + 9/8YAPf/GAD//xgA//8YAP//GAD//xgA//8YAP//GAD//xgA//8YAP//GAD//xgA//8YAP//GAD//xgA + //8YAP//GAD//xgA//8YAP//GAD//yEA9/8hAP//IQD//yEA//8hAP//IQD//yEA//8YAPf/GADv/xgA + 5/8QAOf/EADe/xAA3v8QANb/EADW/xAA1v8QANb/EADW/xAA1v8QANb/EADO/xAAzv8QAM7/CADO/wgA + zv8IAMb/CADG/wgAxv8IAMb/CADG/wgAxv8IAL3/CAC1/wgArf8IAK3/CAC1/xAAxv8QAM7/EADO/xAA + zv8QAM7/EADG/xAAxv8QAMb/EADG/xAAxv8QAMb/EADG/wgAxv8IAL3/CAC9/wgAvf8IALX/CAC1/wgA + rf8IAK3/CACt/wgApf8IAKX/CACl/wgApf8IAJz/CACc/wgAnP8IAJz/CACcjAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEADelBAA + 3v8QAOf/EADn/xgA5/8YAO//GADv/xgA7/8YAPf/GAD3/xgA9/8YAP//GAD//xgA//8YAP//GAD//xgA + //8YAP//GAD//xgA//8YAP//GAD//xgA//8YAP//GAD//xgA//8YAP//GAD//xgA//8YAP//GAD//xgA + //8YAP//IQD//xgA//8YAP//EAD//xgA9/8QAOf/EADe/xAA3v8QANb/EADW/xAA1v8QAM7/EADO/wgA + zv8IAM7/CADO/wgAzv8IAM7/CADO/xAAzv8IAMb/CADG/wgAxv8IAMb/CAC9/wAAtf8AAK3/AACt/wgA + rf8QAMb/EADW/xAA1v8QANb/EADW/xAAzv8QAM7/EADO/xAAzv8QAM7/EADO/xAAzv8QAM7/EADG/xAA + xv8QAMb/EADG/wgAvf8IAL3/CAC9/wgAtf8IALX/CAC1/wgArf8IAK3/CACl/wgApf8IAKX/CACl/wgA + pf8IAJz/CACc/wgAnP8IAJwYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAN4YEADe/xAA5/8QAOf/GADn/xgA7/8YAO//GADv/xgA + 9/8YAPf/GAD3/xgA//8YAP//GAD//xgA//8YAP//GAD//xgA//8YAP//GAD//xgA//8YAP//GAD//xgA + //8YAP//GAD//xgA//8YAP//GAD//xgA//8YAP//GAD//xgA//8YBP//xr7v/97b3v+lntb/e3Hn/0pJ + 5/8pIN7/EADW/wgA1v8IAM7/CADO/wgAzv8IAM7/CADO/wgAzv8IAMb/CADG/wgAxv8IAMb/CAC9/wAA + vf8AALX/EAy1/zEwtf9aXb3/hIK9/7261v/v6+f/UlG1/wgAxv8QAN7/EADW/xAA1v8QANb/EADW/xAA + 1v8QAM7/EADO/xAAzv8QAM7/EADO/xAAzv8QAM7/EADO/xAAxv8QAMb/CADG/wgAvf8IAL3/CAC9/wgA + tf8IALX/CACt/wgArf8IAK3/CACl/wgApf8IAKX/CACl/wgApf8IAJz/CACcnAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAQAN6cEADn/xAA5/8YAOf/GADv/xgA7/8YAO//GAD3/xgA9/8YAPf/GAD//xgA//8YAP//GAD//xgA + //8YAP//GAD//xgA//8YAP//GAD//xgA//8YAP//GAD//xgA//8YAP//GAD//xgA//8YAP//GAD//xgA + //8YAP//EAD//7Wu7//n497/zs/O/87P1v/e29b/5+Pe/+/r3v/v6+f/1tfn/8a+5/+lnuf/jIbe/3tx + 1v9jYdb/WlnO/1pdzv9rac7/hHnW/5SO1v+tqtb/xsPW/9bT1v/e49b/5+PW/97b1v/W09b/xsfO/9bX + 3v/37+//OTit/xAA1v8QAN7/EADe/xAA1v8QANb/EADW/xAA1v8QANb/EADO/xAAzv8QAM7/EADO/xAA + zv8QAM7/EADO/xAAxv8QAMb/CAC9/wgAvf8IAL3/CAC1/wgAtf8IALX/CACt/wgArf8IAK3/CACl/wgA + pf8IAKX/CACl/wgApf8IAKUhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAA5xgQAOf/EADn/xgA5/8YAO//GADv/xgA + 7/8YAPf/GAD3/xgA9/8YAP//GAD//xgA//8YAP//GAD//xgA//8YAP//GAD//xgA//8YAP//GAD//xgA + //8YAP//GAD//xgA//8YAP//GAD//xgA//8YAP//GAD//xgA//9jWff/7+vn/87P1v/Oz9b/1tfW/+fj + 3v/e2+f/xr7v/+fn5//n5+//5+fv/+fn7//v6+//7+/v/+/v7//38+//7/Pv/+/v7//v6+//5+fn/+fj + 5//e397/3tve/97f1v+lnt7/5+PW/9bX1v/Oz9b/zsvO/97b3v/W197/CACt/xAA5/8QAN7/EADe/xAA + 1v8QANb/EADW/xAA1v8QANb/EADO/xAAzv8QAM7/EADO/xAAzv8QAM7/EADG/xAAxv8IAMb/CAC9/wgA + vf8IAL3/CAC1/wgAtf8IALX/CACt/wgArf8IAK3/CACl/wgApf8IAKX/CAClpQAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAABAA55QQAOf/GADn/xgA7/8YAO//GADv/xgA9/8YAPf/GAD3/xgA//8YAP//GAD//xgA + //8YAP//GAD//xgA//8YAP//GAD//xgA//8YAP//GAD//xgA//8YAP//GAD//xgA//8YAP//GAD//xgA + //8YAP//EAD//9bX7//e197/zs/O/9bT1v/v697/jIbv/xgI//9aUff/9/Pn/+/r7//n5+//7+vv/+/r + 7//v6+//7+vv/+/r7//n5+//5+fv/+/r7//n5+//5+fn/+fj5//e397/zsve/wgA//9CNO//xsPe/97f + 1v/Oz87/zs/O/+/r5/9aXb3/EADW/xAA5/8QAN7/EADe/xAA3v8QANb/EADW/xAA1v8QANb/EADO/xAA + zv8QAM7/EADO/xAAzv8QAM7/EADG/xAAxv8IAMb/CAC9/wgAvf8IAL3/CAC1/wgAtf8IALX/CACt/wgA + rf8IAK3/CACt/wgApf8IAKUYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEADnEBAA5/8QAOf/GADv/xgA + 7/8YAO//GAD3/xgA9/8YAPf/GAD//xgA//8YAP//GAD//xgA//8YAP//GAD//xgA//8YAP//GAD//xgA + //8YAP//GAD//xgA//8YAP//GAD//xgA//8YAP//GAD//xgA//9CPP//7+/n/9bT1v/e29b/zsfn/zko + //8YAP//IQD//yEI///37+f/7+vv/+/r7//v6+//7+vv/+/r7//v6+//7+vv/+/r7//v6+//7+vv/+/r + 7//v6+//5+fn/+fn5/+Uhu//EAD3/xgA9/8QAPf/c3Hn/97f1v/Oy87/3tve/8a+1v8IAL3/GADn/xAA + 5/8QAN7/EADe/xAA1v8QANb/EADW/xAA1v8QANb/EADO/xAAzv8QAM7/EADO/xAAzv8QAMb/EADG/wgA + xv8IAL3/CAC9/wgAvf8IALX/CAC1/wgAtf8IAK3/CACt/wgArf8IAK3/CACtlAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAEADnhBAA5/8YAO//GADv/xgA7/8YAPf/GAD3/xgA9/8YAP//GAD//xgA + //8YAP//GAD//xgA//8YAP//GAD//xgA//8YAP//GAD//xgA//8YAP//GAD//xgA//8YAP//GAD//xgA + //8YAP//GAD//5SG9//n4+f/1tfW/5ya5/8QAP//IQD//yEA//8hAP//EAD//8a+7//v6+//7+vv/+/r + 7//v6+//7+vv/+/r7//v6+//7+vv/+/r7//v6+//7+vv/+/r7//v6+//9/Pn/0pB9/8YAP//GAD3/xgA + 9/8QAPf/OSzv/87P1v/W09b/7+/n/xAMrf8YAOf/EADn/xAA3v8QAN7/EADe/xAA1v8QANb/EADW/xAA + 1v8QAM7/EADO/xAAzv8QAM7/EADO/xAAxv8QAMb/EADG/wgAxv8IAL3/CAC9/wgAvf8IALX/CAC1/wgA + tf8IALX/CACt/wgArfcIAK0QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAOcIEADn5xgA + 7/8YAO//GADv/xgA9/8YAPf/GAD3/xgA//8YAP//GAD//xgA//8YAP//GAD//xgA//8YAP//GAD//xgA + //8YAP//GAD//xgA//8YAP//GAD//xgA//8YAP//GAD//xgA//8QAP//xr7v/97b3v/e29b/jIbv/xgA + //8hAP//IQD//yEA//8YAP//hHX3//fz7//v6+//7+/v/+/v7//v7+//7+/v/+/v7//v7+//7+/v/+/v + 7//v7+//7+/v/+/r7//v7+//GAT//xgA//8YAP//GAD//xgA9/8hEPf/3tve/9bT1v/v7+f/QkG1/xAA + 3v8YAOf/EADn/xAA3v8QAN7/EADW/xAA1v8QANb/EADW/xAA1v8QAM7/EADO/xAAzv8QAM7/EADG/xAA + xv8QAMb/EADG/wgAvf8IAL3/CAC9/wgAvf8IALX/CAC1/wgAtf8IALX/CAC1cwAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAOdSGADv/xgA7/8YAO//GAD3/xgA9/8YAPf/GAD//xgA + //8YAP//GAD//xgA//8YAP//GAD//xgA//8YAP//GAD//xgA//8YAP//GAD//xgA//8YAP//GAD//xgA + //8YAP//GAD//xAA///v6+//3t/n/97b3v/v7+//IRD//yEA//8hAP//IQD//yEA//85KP//9/fv/+/v + 7//v7+//7+/3/+/v9//v7/f/7+/3/+/v9//38/f/7+/3/+/v9//v7+//7+/v/7Wu9/8QAP//GAD//xgA + //8YAP//EAD3/4R97//n497/1tfW/+fn5/9rab3/EADe/xAA5/8QAOf/EADe/xAA3v8QAN7/EADW/xAA + 1v8QANb/EADW/xAAzv8QAM7/EADO/xAAzv8QAMb/EADG/xAAxv8QAMb/CADG/wgAvf8IAL3/CAC9/wgA + vf8IALX/CAC1/wgAtd4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAYAO+9GADv/xgA7/8YAPf/GAD3/xgA9/8YAP//GAD//xgA//8YAP//GAD//xgA//8YAP//GAD//xgA + //8YAP//GAD//xgA//8YAP//GAD//xgA//8YAP//GAD//xgA//8YAP//IQT///f37//n5+f/5+fn/+/v + 7/+Mhvf/GAD//xgA//8YAP//GAD//xAA///n4/f/9/P3//fz9//38/f/9/P3//fz9//38/f/9/P3//fz + 9//38/f/9/P3//fz9//39/f/c2n//xgA//8YAP//GAD//xgA//8YDP//5+fn/+fj5//e297/5+Pn/4yG + zv8IANb/EADn/xAA5/8QAN7/EADe/xAA3v8QANb/EADW/xAA1v8QANb/EADO/xAAzv8QAM7/EADO/xAA + zv8QAMb/EADG/xAAxv8IAMb/CADG/wgAvf8IAL3/CAC9/wgAvf8IAL3/CAC1OQAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgA7xgYAO/3GADv/xgA9/8YAPf/GAD3/xgA + //8YAP//GAD//xgA//8YAP//GAD//xgA//8YAP//GAD//xgA//8YAP//GAD//xgA//8YAP//GAD//xgA + //8YAP//GAD//xgA//8hEP////vv/+/r7//v6+//7+/v//fv9/8YDP//GAD//xgA//8YAP//EAD//6WW + ///39/f/9/f3//f3///39/////v////7////+///9/f///f3///39///9/f/////9/8pGP//GAD//xgA + //8YAP//GAD//4R59//v7+f/5+fv/97f3v/n4+f/nJbO/wgA1v8QAOf/EADn/xAA3v8QAN7/EADe/xAA + 1v8QANb/EADW/xAA1v8QANb/EADO/xAAzv8QAM7/EADO/xAAxv8QAMb/EADG/xAAxv8IAMb/CADG/wgA + vf8IAL3/CAC9/wgAvZwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAABgA72sYAO//GAD3/xgA9/8YAPf/GAD3/xgA//8YAP//GAD//xgA//8YAP//GAD//xgA + //8YAP//GAD//xgA//8YAP//GAD//xgA//8YAP//GAD//xgA//8YAP//GAD//ykU////+/f/9/P3//fz + 9//38/f/9/f3/4SC//8YAP//GAD//xgA//8YAP//Uk3/////////+/////v////7////+///OTT//7Wq + //////////v////7////+///3tf//xAA//8YAP//GAD//xgA//8YCP//7+vv/+/v7//v7+//3t/e/+fj + 5/+lmtb/CADW/xgA5/8QAOf/EADe/xAA3v8QAN7/EADW/xAA1v8QANb/EADW/xAAzv8QAM7/EADO/xAA + zv8QAM7/EADO/xAAxv8QAMb/EADG/wgAxv8IAMb/CAC9/wgAvf8IAL3nCAC9CAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgA770YAO//GAD3/xgA + 9/8YAPf/GAD//xgA//8YAP//GAD//xgA//8YAP//GAD//xgA//8YAP//GAD//xgA//8YAP//GAD//xgA + //8YAP//GAD//xgA//8YAP//KRT////7///39///9/f///f3///39///9+///xgI//8YAP//GAD//xgA + //8YCP////v//////////////////1pR//8YAP//EAT//9bL//////////////////+Uiv//GAD//xgA + //8YAP//GAD//3t1////+/f/9/f3//fz9//e397/5+Pn/5ya1v8IAN7/GADn/xAA5/8QAOf/EADe/xAA + 3v8QANb/EADW/xAA1v8QANb/EADO/xAAzv8QAM7/EADO/xAAzv8QAM7/EADO/xAAxv8QAMb/EADG/wgA + xv8IAMb/CAC9/wgAvUIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAGAD3GBgA7+8YAPf/GAD3/xgA9/8YAP//GAD//xgA//8YAP//GAD//xgA + //8YAP//GAD//xgA//8YAP//GAD//xgA//8YAP//GAD//xgA//8YAP//GAD//xgA//8YBP/////////7 + ////+/////v////7////////hHn//xgA//8YAP//GAD//xAA//+9tv////////////97df//EAD//xgA + //8YAP//IRD//+fb/////////////0I4//8YAP//GAD//xgA//8YCP//7+/////7////+///9/f//+fj + 5//n5+f/jIrW/xAA3v8YAOf/EADn/xAA3v8QAN7/EADe/xAA1v8QANb/EADW/xAA1v8QAM7/EADO/xAA + zv8QAM7/EADO/xAAzv8QAM7/EADG/xAAxv8QAMb/CADG/wgAxv8IAMaUAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAD3ShgA + 9/8YAPf/GAD3/xgA//8YAP//GAD//xgA//8YAP//GAD//xgA//8YAP//GAD//xgA//8YAP//GAD//xgA + //8YAP//GAD//xgA//8YAP//GAD//xAA///v5//////////////////////////////37///GAj//xgA + //8YAP//GAD//3Nt////////pZ7//xAA//8YAP//GAD//xgA//8YAP//MST///fv///38///EAD//xgA + //8YAP//GAD//3t1////////////////////+///7+vn//fz7/9radb/GADn/xgA5/8QAOf/EADe/xAA + 3v8QAN7/EADW/xAA1v8QANb/EADW/xAAzv8QAM7/EADO/xAAzv8QAM7/EADO/xAAzv8QAMb/EADG/xAA + xv8QAMb/CADGzgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAD3jBgA9/8YAPf/GAD//xgA//8YAP//GAD//xgA + //8YAP//GAD//xgA//8YAP//GAD//xgA//8YAP//GAD//xgA//8YAP//GAD//xgA//8YAP//EAD//62i + //////////////////////////////////+Eef//GAD//xgA//8YAP//MSD//8a+//8QAP//GAD//xgA + //8YAP//GAD//xgA//8YAP//Sjj//7Wm//8QAP//GAD//xgA//8YCP//7+/////////////////////7 + ///v6+//9/f3/ykk1v8YAOf/GADn/xAA5/8QAN7/EADe/xAA3v8QANb/EADW/xAA1v8QANb/EADO/xAA + zv8QAM7/EADO/xAAzv8QAM7/EADO/xAAzv8QAMb/EADG/xAAxvcIAMYhAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAGAD3xhgA9/8YAP//GAD//xgA//8YAP//GAD//xgA//8YAP//GAD//xgA//8YAP//GAD//xgA + //8YAP//GAD//xgA//8YAP//GAD//xgA//8YAP//WlH///////////////////////////////////fz + //8YCP//GAD//xgA//8YAP//GAT//xgA//8YAP//GAD//0Iw//8YAP//GAD//xgA//8YAP//IQj//xgA + //8YAP//GAD//3t1//////////////////////////v//+/v7//W1+//CADe/xgA5/8QAOf/EADe/xAA + 3v8QAN7/EADe/xAA1v8QANb/EADW/xAA1v8QAM7/EADO/xAAzv8QAM7/EADO/xAAzv8QAM7/EADO/xAA + xv8QAMb/EADGQgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAPcQGAD33hgA9/8YAP//GAD//xgA + //8YAP//GAD//xgA//8YAP//GAD//xgA//8YAP//GAD//xgA//8YAP//GAD//xgA//8YAP//GAD//xgA + //8QAP//59///////////////////////////////////4R9//8YAP//GAD//xgA//8YAP//GAD//xgA + //85LP//9/P//62m//8QAP//GAD//xgA//8YAP//GAD//xgA//8YCP//7+////////////////////// + ////+/////v//2Nh3v8QAOf/EADn/xAA5/8QAN7/EADe/xAA3v8QAN7/EADW/xAA1v8QANb/EADO/xAA + zv8QAM7/EADO/xAAzv8QAM7/EADO/xAAzv8QAM7/EADG/xAAxnMAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAYAPchGAD37xgA//8YAP//GAD//xgA//8YAP//GAD//xgA//8YAP//GAD//xgA + //8YAP//GAD//xgA//8YAP//GAD//xgA//8YAP//GAD//xgA//9aSf////////////////////////// + ////////9/P//xgM//8YAP//GAD//xgA//8YAP//MSj//+/r/////////////6We//8QAP//GAD//xgA + //8YAP//GAD//4R5///////////////////////////////7///W0/f/CADe/xAA5/8QAOf/EADn/xAA + 3v8QAN7/EADe/xAA1v8QANb/EADW/xAA1v8QAM7/EADO/xAAzv8QAM7/EADO/xAAzv8QAM7/EADO/xAA + zv8QAM6cAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAP8xGAD//xgA + //8YAP//GAD//xgA//8YAP//GAD//xgA//8YAP//GAD//xgA//8YAP//GAD//xgA//8YAP//GAD//xgA + //8YAP//GAD//xAA//+lmv//////////////////////////////////lIr//xgA//8hAP//GAD//ykk + ///v5////////////////////////5yW//8QAP//GAD//xgA//8YEP//9/P///////////////////// + ////////9/f//yko3v8YAOf/EADn/xAA5/8QAN7/EADe/xAA3v8QAN7/EADW/xAA1v8QANb/EADW/xAA + zv8QAM7/EADO/xAAzv8QAM7/EADO/xAAzv8QAM7/EADOtQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAP9KGAD//xgA//8YAP//GAD//xgA//8YAP//GAD//xgA + //8YAP//GAD//xgA//8YAP//GAD//xgA//8YAP//GAD//xgA//8YAP//GAD//xAA//+9tv////////// + ////////////////////+///IRj//xgA//8pJP//7+f//////////////////////////////////5SO + //8QAP//EAD//5SO//////////////////////////////////9KPOf/EADn/xAA5/8QAOf/EADn/xAA + 3v8QAN7/EADe/xAA1v8QANb/EADW/xAA1v8QANb/EADO/xAAzv8QAM7/EADO/xAAzv8QAM7/EADO/xAA + zs4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAYAP9SGAD//xgA//8YAP//GAD//xgA//8YAP//GAD//xgA//8YAP//GAD//xgA//8YAP//GAD//xgA + //8YAP//GAD//xgA//8YAP//GAD//xAA//+cmv////////////////////////////+tov//KSD//+fj + /////////////////////////////////////////////5SK//8pIP////////////////////////// + ///v5///OTTn/xAA5/8QAOf/EADn/xAA5/8QAN7/EADe/xAA3v8QAN7/EADW/xAA1v8QANb/EADW/xAA + zv8QAM7/EADO/xAAzv8QAM7/EADO/xAAzv8QAM7OEADOCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAP9SGAD//xgA//8YAP//GAD//xgA + //8YAP//GAD//xgA//8YAP//GAD//xgA//8YAP//GAD//xgA//8YAP//GAD//xgA//8YAP//GAD//xAA + //9jUf//7+v////////////////////////v5/////////////////////////////////////////// + /////////////+fj////////////////////////ta73/xgU5/8YAO//EADn/xAA5/8QAOf/EADe/xAA + 3v8QAN7/EADe/xAA3v8QANb/EADW/xAA1v8QANb/EADO/xAAzv8QAM7/EADO/xAAzv8QAM7/EADOzhAA + zggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAYAP9KGAD//xgA//8YAP//GAD//xgA//8YAP//GAD//xgA//8YAP//GAD//xgA + //8YAP//GAD//xgA//8YAP//GAD//xgA//8YAP//IQD//xgA//8YCP//jIb///fz//////////////// + ////////////////////////////////////////////////////////////////////////zsf//0pF + 7/8IAO//GADv/xgA5/8QAOf/EADn/xAA5/8QAN7/EADe/xAA3v8QAN7/EADW/xAA1v8QANb/EADW/xAA + 1v8QANb/EADO/xAAzv8QAM7/EADO/xAAzsYQAM4IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAP8xGAD/7xgA + //8YAP//GAD//xgA//8YAP//GAD//xgA//8YAP//GAD//xgA//8YAP//GAD//xgA//8YAP//GAD//yEA + //8hAP//IQD//yEA//8YAP//GAj//3Np///Wy/////////////////////////////////////////// + ///////////////////38///pZr//0I47/8IAO//GADv/xgA7/8YAOf/GADn/xAA5/8QAOf/EADe/xAA + 3v8QAN7/EADe/xAA1v8QANb/EADW/xAA1v8QANb/EADW/xAA1v8QAM7/EADO/xAAzv8QAM6tAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAP8hGAD/1hgA//8YAP//GAD//xgA//8YAP//GAD//xgA + //8YAP//GAD//xgA//8YAP//GAD//yEA//8hAP//IQD//yEA//8hAP//IQD//yEA//8hAP//GAD//xAA + //8pFP//Ukn//3tx//+Mff//jIL//4yC//+Mgv//jH3//3t1//9aVf//OSz//xAA9/8QAPf/GAD3/xgA + 7/8YAO//GADn/xgA5/8QAOf/EADn/xAA3v8QAN7/EADe/xAA3v8QAN7/EADW/xAA1v8QANb/EADW/xAA + 1v8QANb/EADO/xAAzv8QAM7/EADOhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAYAP8IGAD/tRgA//8YAP//GAD//xgA//8YAP//GAD//xgA//8YAP//GAD//xgA//8hAP//IQD//yEA + //8hAP//IQD//yEA//8hAP//IQD//yEA//8hAP//IQD//yEA//8YAP//GAD//xgA//8YAP//GAD//xgA + //8YAP//GAD//xgA9/8YAPf/GAD3/xgA9/8YAO//GADv/xgA7/8YAOf/EADn/xAA5/8QAN7/EADe/xAA + 3v8QAN7/EADe/xAA1v8QANb/EADW/xAA1v8QANb/EADW/xAA1v8QAM7/EADO9xAAzkoAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAD/axgA//8YAP//GAD//xgA + //8YAP//GAD//xgA//8YAP//IQD//yEA//8hAP//IQD//yEA//8hAP//IQD//yEA//8hAP//IQD//yEA + //8YAP//GAD//xgA//8YAP//GAD//xgA//8YAP//GAD//xgA9/8YAPf/GAD3/xgA9/8YAO//GADv/xgA + 7/8YAO//GADn/xAA5/8QAOf/EADe/xAA3v8QAN7/EADe/xAA3v8QANb/EADW/xAA1v8QANb/EADW/xAA + 1v8QANb/EADW/xAAzs4QAM4hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAGAD/KRgA/84YAP//GAD//xgA//8YAP//GAD//yEA//8hAP//IQD//yEA + //8hAP//IQD//yEA//8hAP//IQD//xgA//8YAP//GAD//xgA//8YAP//GAD//xgA//8YAP//GAD//xgA + 9/8YAPf/GAD3/xgA9/8YAPf/GADv/xgA7/8YAO//GADv/xgA5/8QAOf/EADn/xAA5/8QAN7/EADe/xAA + 3v8QAN7/EADe/xAA1v8QANb/EADW/xAA1v8QANb/EADW/xAA1v8QANZ7AAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgA + /2sYAP/3GAD//xgA//8hAP//IQD//yEA//8hAP//IQD//yEA//8hAP//IQD//yEA//8YAP//GAD//xgA + //8YAP//GAD//xgA//8YAP//GAD//xgA9/8YAPf/GAD3/xgA9/8YAPf/GAD3/xgA7/8YAO//GADv/xgA + 7/8YAOf/EADn/xAA5/8QAOf/EADe/xAA3v8QAN7/EADe/xAA3v8QANb/EADW/xAA1v8QANb/EADW/xAA + 1v8QANa9EADWIQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgA/xAYAP+UIQD//yEA//8hAP//IQD//yEA + //8hAP//IQD//yEA//8hAP//GAD//xgA//8YAP//GAD//xgA//8YAP//GAD//xgA9/8YAPf/GAD3/xgA + 9/8YAPf/GAD3/xgA7/8YAO//GADv/xgA7/8YAOf/GADn/xAA5/8QAOf/EADn/xAA3v8QAN7/EADe/xAA + 3v8QAN7/EADe/xAA1v8QANb/EADW/xAA1v8QANbeEADWUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAYAP8YGAD/lCEA//chAP//IQD//yEA//8hAP//GAD//xgA//8YAP//GAD//xgA + //8YAP//GAD//xgA//8YAPf/GAD3/xgA9/8YAPf/GAD3/xgA7/8YAO//GADv/xgA7/8YAO//GADn/xAA + 5/8QAOf/EADn/xAA5/8QAN7/EADe/xAA3v8QAN7/EADe/xAA3v8QAN7/EADW/xAA1v8QANbOEADWWgAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAD/CBgA + /2MhAP/OIQD//xgA//8YAP//GAD//xgA//8YAP//GAD//xgA//8YAPf/GAD3/xgA9/8YAPf/GAD3/xgA + 9/8YAO//GADv/xgA7/8YAO//GADv/xgA5/8YAOf/EADn/xAA5/8QAOf/EADn/xAA3v8QAN7/EADe/xAA + 3v8QAN7/EADe/xAA3vcQANaUEADWMQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAP8hGAD/exgA/84YAP//GAD//xgA + //8YAP//GAD3/xgA9/8YAPf/GAD3/xgA9/8YAO//GADv/xgA7/8YAO//GADv/xgA7/8YAOf/GADn/xAA + 5/8QAOf/EADn/xAA5/8QAN7/EADe/xAA3v8QAN7/EADe9xAA3qUQAN5SAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAABgA/xAYAP9aGAD/lBgA994YAPf/GAD3/xgA9/8YAPf/GADv/xgA + 7/8YAO//GADv/xgA7/8YAOf/GADn/xAA5/8QAOf/EADn/xAA5/8QAOf/EADe/xAA3vcQAN69EADeexAA + 3jkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAYAPc5GAD3YxgA94QYAO+cGADvtRgA784YAO/WGADn3hgA59YQAOfWEADnxhAA + 560QAOeUEADnexAA51IQAN4YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAD/////////AAH/////////////////+AAAP////////////////+AAAAf///////////////+AAAAB + ///////////////+AAAAAP//////////////+AAAAAA//////////////+AAAAAAD/////////////+A + AAAAAAP////////////+AAAAAAAA////////////+AAAAAAAAD////////////AAAAAAAAAP//////// + ///AAAAAAAAAA///////////AAAAAAAAAAH//////////gAAAAAAAAAA//////////wAAAAAAAAAAD// + ///////4AAAAAAAAAAAf////////8AAAAAAAAAAAD////////+AAAAAAAAAAAA/////////AAAAAAAAA + AAAH////////wAAAAAAAAAAAA////////4AAAAAAAAAAAAP///////+AAAAAAAAAAAAB////////AAAA + AAAAAAAAAf///////wAAAAAAAAAAAAD///////8AAAAAAAAAAAAA///////+AAAAAAAAAAAAAP////// + /AAAAAAAAAAAAAA//////+AAAAAAAAAAAAAAB/////+AAAAAAAAAAAAAAAH/////AAAAAAAAAAAAAAAA + /////gAAAAAAAAAAAAAAAH////wAAAAAAAAAAAAAAAA////4AAAAAAAAAAAAAAAAH///+AAAAAAAAAAA + AAAAAB////AAAAAAAAAAAAAAAAAP///gAAAAAAAAAAAAAAAAB///4AAAAAAAAAAAAAAAAAf//8AAAAAA + AAAAAAAAAAAD///AAAAAAAAAAAAAAAAAA///wAAAAAAAAAAAAAAAAAP//4AAAAAAAAAAAAAAAAAB//+A + AAAAAAAAAAAAAAAAAf//gAAAAAAAAAAAAAAAAAH//4AAAAAAAAAAAAAAAAAB//8AAAAAAAAAAAAAAAAA + AP//AAAAAAAAAAAAAAAAAAD//wAAAAAAAAAAAAAAAAAA//8AAAAAAAAAAAAAAAAAAP//AAAAAAAAAAAA + AAAAAAD//wAAAAAAAAAAAAAAAAAA//8AAAAAAAAAAAAAAAAAAP//AAAAAAAAAAAAAAAAAAD//wAAAAAA + AAAAAAAAAAAA//8AAAAAAAAAAAAAAAAAAP//AAAAAAAAAAAAAAAAAAD//4AAAAAAAAAAAAAAAAAB//+A + AAAAAAAAAAAAAAAAAf//gAAAAAAAAAAAAAAAAAP//8AAAAAAAAAAAAAAAAAD///gAAAAAAAAAAAAAAAA + B////gAAAAAAAAAAAAAAAP////4AAAAAAAAAAAAAAAB////8AAAAAAAAAAAAAAAAf////AAAAAAAAAAA + AAAAAD////gAAAAAAAAAAAAAAAA////4AAAAAAAAAAAAAAAAH///+AAAAAAAAAAAAAAAAB////AAAAAA + AAAAAAAAAAAf///wAAAAAAAAAAAAAAAAD///8AAAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAAAP///g + AAAAAAAAAAAAAAAAD///4AAAAAAAAAAAAAAAAA///+AAAAAAAAAAAAAAAAAP///gAAAAAAAAAAAAAAAA + D///4AAAAAAAAAAAAAAAAA///+AAAAAAAAAAAAAAAAAP///gAAAAAAAAAAAAAAAAD///8AAAAAAAAAAA + AAAAAA////AAAAAAAAAAAAAAAAAP///wAAAAAAAAAAAAAAAAD///8AAAAAAAAAAAAAAAAB////AAAAAA + AAAAAAAAAAAf///4AAAAAAAAAAAAAAAAH///+AAAAAAAAAAAAAAAAB////gAAAAAAAAAAAAAAAA////8 + AAAAAAAAAAAAAAAAP////AAAAAAAAAAAAAAAAD////wAAAAAAAAAAAAAAAB////+AAAAAAAAAAAAAAAA + f////gAAAAAAAAAAAAAAAP////4AAAAAAAAAAAAAAAD/////AAAAAAAAAAAAAAAA/////wAAAAAAAAAA + AAAAAf////+AAAAAAAAAAAAAAAH/////gAAAAAAAAAAAAAAD/////8AAAAAAAAAAAAAAA//////AAAAA + AAAAAAAAAAf/////4AAAAAAAAAAAAAAH/////+AAAAAAAAAAAAAAD//////wAAAAAAAAAAAAAB////// + +AAAAAAAAAAAAAAf//////gAAAAAAAAAAAAAP//////8AAAAAAAAAAAAAD///////gAAAAAAAAAAAAB/ + //////4AAAAAAAAAAAAA////////AAAAAAAAAAAAAf///////4AAAAAAAAAAAAH////////AAAAAAAAA + AAAD////////wAAAAAAAAAAAB////////+AAAAAAAAAAAA/////////wAAAAAAAAAAAf////////+AAA + AAAAAAAAP/////////wAAAAAAAAAAD/////////+AAAAAAAAAAB//////////wAAAAAAAAAA//////// + //+AAAAAAAAAA///////////wAAAAAAAAAf//////////+AAAAAAAAAP///////////4AAAAAAAAH/// + /////////AAAAAAAAH////////////8AAAAAAAD/////////////gAAAAAAD/////////////+AAAAAA + D//////////////4AAAAAD///////////////wAAAAH////////////////gAAAP//////////////// + /wAA/////////ygAAAAwAAAAYAAAAAEAIAAAAAAAgCUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAc4bOEHOCznNzgs61c4LO3nOCzu9zgs7nc4LO1muCxq1rfcZja3m9CAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAHuO1hBzis6Mc4bO93OG1v97itb/e4rW/3OCzv9zgs7/c4LO/3OCzv9rfcb/a3m972N5 + tXNjdbUIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAACEktYIhJLWe3uS3u97lt7/hJrn/4yi7/+Mqu//c47W/2uCxv9rfb3/a329/2t9 + vf9rfb3/a329/2t5vf9jdbXeY3W1YwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + 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 + 3v9zks7/c47O/3OSzv8xQVr/AAAA/wAACP8ABBD/AAAQ/wAACP9CUXv/Y321/1JpnP9aea3/Wnm1/1p5 + tf9jebXnY3m1EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnMP3lKXT9/+t3///rdv//4y2 + 3v+ly/f/rdf//1JlhP8ACBj/CBAp/xAYMf8IECn/CBAh/3OKtf+cx/f/rdP//63X//+t1///rdf//63X + //+tz/f/nMP3/4yu5/97mtb/c5LO/3OSzv9CUXv/AAQI/wAEEP8ACBj/AAQY/wAEEP8xPFr/Y4K9/1px + pf9KZZz/SmWl/1pxrf9adbX/Y321lAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACcw/cYpcv3963b + //+t3///hKrO/xgwa/+cx/f/rdP//1p1jP8ACCH/CBAp/zFBWv97nrX/nL7n/5S27/+t0///vef//73r + ///G6///vef//73j//+13///rdP//5y67/+Ept7/c5bW/3OSzv97ntb/jK7n/2N5pf8YIDn/AAgY/wAE + GP85SWv/a4rO/1p1rf8AGFr/SmGl/1Jxrf9aca3/Y32192N9tRgAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AACcw/djpc/3/63b//+t1///Y4Kt/wAcWv+Eotb/pc/3/4Sqxv8IECH/c5Kl/63b9/+cvu//rcPv/7XL + 9/+t2///xvP//877///O+///zvf//8bv//+94///tdv//6XH9/+Mru//e5re/3OW1v+90+//vdf3/6XH + 9/+Utvf/SlmE/wAIGP9jebX/c5LW/0JZjP8AGFr/QlmU/1Jtrf9aca3/Wnm1/2N9vWMAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAACcw/elnMf3/5zD9/+cw/f/UnWl/wAYUv85UYT/nMfv/6XT9/+Mqsb/tef//6XT + 9//n7////////97Hpf+tx9b/xu///877///O+///zvf//8bz//+94///rdv//6XL9/+Mru//e57e/4yS + pf/ey63/7+vv/9bj7/+lz///jK7v/2N9tf9zktb/Y321/xgoWv8AEDn/OVGM/0plpf9aca3/WnGt/2OC + vaUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACcvvfWnL73/5Sy9/+Usvf/Um2l/wAYSv8AHGP/a47G/6XP + 9/+14///vev//6XP9/////////f3/7WCIf9KKCH/pbbO/7Xf//+94///veP//7Xf//+t2///rdP//6XL + 9/+Utvf/e32t/zkYEP+1hin/9/P3/97j5/+t0/f/jKrn/3OW1v9rhr3/MU2M/wAcWv8AEEL/MUmE/0ph + pf9aca3/WnGt/2OCvdYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACcvvfvlLb3/5S6//+Mqu//Ql2c/wAc + Wv8AIGv/Y321/63T9/+95///vev//63P9///////79u9/3tZEP9SCAD/UgwA/1phY/+tz+f/pdP//6XP + //+ly///nMf//63D1v9SSUr/YwwA/zkIAP+EXRD/59/O/+fn5/+lz/f/hKLe/3OSzv9rhr3/KUWE/wAc + Y/8AFEr/OU2M/1Jtrf9Sca3/WnGt/2OCve8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACcw/fejK7v/5Sy + 9/+Msvf/Um2c/wAcWv8AIGP/c5bO/63X//+95///vev//7XT9///////79+t/2tZGP8YCAD/GAwI/ykg + CP/Gz63/vef//7Xj//+lz///lLr3/7WyjP8YEAD/IQwI/xAIAP9zXRj/59u9/+fn7/+lx+//e57e/3OS + zv9rhr3/OVGM/wAUUv8AFEr/OVWM/1Jprf9Sba3/Um2t/2N9td4AAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AACcvvelpc/3/5zD9/+13///WnWc/wAcWv8AIGP/lLrv/63b//+15///vef//7XX9///////9+fG/4x5 + Kf9aUUL/lIpz/1JFGP/G17X/vev//7Xn//+l0///nMP3/62mjP85LBD/nI57/1pNOf+cgin/7+fO/+fn + 7/+cw+//e57e/3OSzv9rgr3/Sl2U/wAQQv8AFEr/OVGE/1p1rf9aca3/WnWt/2N9taUAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAACcvvc5pcv3/63b9/+13///MUmE/wAcWv8IKGv/pcf//63X//+14///teP//63P + 9/////////v3/97HSv9CPCn/WlFC/7WiOf+929b/vef//7Xj//+l0///nMf3/5yipf+UeSH/WlFC/0pB + Kf/ex1L/9/f3/+fn5/+Utu//e57e/3OOxv9adaX/UmWU/wAMOf8AFEr/GChz90plpf9aca3/Wnm1/2N5 + tTkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjKrvMXOO72MhHN7/CBB7/wAcUv8QMHP/pcv//63T + //+t2///td///6XT9//v8/////////fnrf/Ww0L/xrZC/+fXe/+13///tef//7Xf//+l0///nMf//4yu + 5//Wtlr/vaZC/97HSv/3573/9/f3/87X5/+Eot7/a47G/2N9rf9acaX/Ummc/wAMOf8AFEL/AAxz/xAQ + nOc5SZxaSmGlMQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACEY1nsQANb/CAyE/wAc + Uv8QMGv/nL73/5zH7/+ly/f/pc/3/6XL9/+ty/f///v////////379b/7+e9/7XP7/+13///tef//7Xf + //+lz///nMP3/4yu7/+tut7/1s+t/97Xxv/e297/zsvW/3uSvf9jgrX/Y3mt/1p1rf9acaX/Ummc/wAM + Of8AFEL/AAh7/wAAnP8QEJxSAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEADOCBAA + zu8QAM7/CAC9/wAQUv8QHEr/c469/2uKvf9rir3/c469/3OSxv97lsb/hJ7G/7W+1v/Gy97/lKrO/3ua + vf+Utt7/lLre/5S23v+Mqtb/hKLW/3OSxv9jea3/hJK9/5ymvf+Unr3/a4K1/1p5rf9ada3/WnGt/1Jt + pf9SaaX/SmGc/wAMOf8AEFr/AACU/wAAnP8AAJzGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAEADOQhAAzv8QAM7/EADO/wgEnP8IEGP/Um2l/1Jtpf9aca3/QlF7/2N5rf9jfbX/Y321/2OC + tf9rgrX/SmWM/yk4Uv9rgrX/a4K1/2OCtf9jgrX/Y321/2N9tf8hKEL/UmWU/1p1rf9ada3/WnGt/1Jt + pf9SaaX/OUl7/0phnP9KXZz/QlWU/wAIUv8AAHP/AACc/wAAnP8AAJz/AACcGAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAACADOexAAzv8QAM7/EADO/wgAlP8IALX/ISSl/0pZnP9KYZz/GCRC/xgk + Qv9CWYT/Um2c/0pdjP8hLFL/AAQY/zlJa/9jea3/WnWt/1p1rf9ada3/WnGt/1pxpf8hMFL/AAgh/yk0 + Wv9CVYz/Sl2U/zFJc/8QGDH/ITBa/0JZnP85UZT/EBRz/wAAa/8AAGv/AACc/wAAnP8AAJz/AACcSgAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEADOlBAAzv8QAM7/EADO/wgAtf8IAK3/CAC1/xAI + pf8xRZz/KThj/wAEGP8ABBj/AAQY/wAAIf8AABj/AAgQ/1JlnP9SaaX/Umml/1Jppf9SZaX/SmWl/0ph + nP85TYT/AAQY/wAAIf8AABj/AAQY/wAEGP8ABBj/MUV7/yk4hP8ABGv/AABr/wAAa/8AAIT/AACc/wgA + nP8IAJz/AACcYwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEADOlBAAzv8QAM7/EADW/xAA + 1v8IAK3/CACl/wgAtf8IAKX/GByU/wAIKf8AACH/AAAh/wAAGP8ABBD/ITBa/0pdnP9KXZz/Sl2c/0pd + nP9CWZz/Qlmc/0JZnP9CVZT/GCBC/wAIGP8ABBj/AAAh/wAEGP8IDDH/EBRz/wAAa/8AAGv/AABr/wgA + jP8IAJz/CACc/wgAnP8AAJz/AACcYwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEADOexAA + zv8QANb/EADW/xAA1v8QANb/CAC1/wgAnP8IALX/CACt/wgAlP8ABDn/AAQQ/wAEEP8YKEr/QlWU/0JV + lP9CVZT/QlWU/0JVlP9CVZT/QlWU/0JRlP9CUZT/OU2M/xAgOf8ACBD/AAgY/wAEMf8AAGP/AABr/wAA + a/8AAHP/CACc/wgAnP8IAJz/CACc/wgAnP8AAJz/AACcSgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAEADOShAA1v8QANb/EADW/xAA3v8QAOf/EADe/xAAzv8IAK3/CACl/wgArf8IAKX/CACc/wAA + lP8QEIz/GByM/yEolP8pNJT/KTyU/zFBlP8xPJT/KTiM/ykwjP8hKIT/EByE/wgMc/8AAGv/AABr/wAA + a/8AAGv/AABr/wgAjP8IAK3/CACl/wgApf8IAJz/CACc/wgAnP8IAJz/CACcIQAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAEADWEBAA1vcQANb/EADe/xAA5/8YAOf/GADv/xgA5/8QAOf/EADe/wgA + tf8IAKX/CACl/wgApf8IAJz/AACU/wAAjP8AAIz/AACM/wAAhP8AAIT/AACE/wAAe/8AAHv/AAB7/wAA + e/8AAHv/AABz/wAAe/8IAJT/CACt/wgAtf8IAK3/CACl/wgApf8IAJz/AACc/wgAnP8AAJzeAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAA1rUQAN7/EADn/xgA5/8YAO//GAD3/xgA + 9/8YAPf/GADv/xgA9/8YAO//EADO/wgArf8IAJz/CACc/wgAnP8AAJT/AACU/wAAjP8AAIz/AACM/wAA + hP8AAIT/AACE/wAAjP8IAJz/CAC1/xAAxv8IALX/CAC1/wgAtf8IALX/CACt/wgApf8IAJz/CACc/wgA + nP8IAJyMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAA3lIQAN7/EADn/xgA + 7/8YAPf/GAD3/xgA//8YAP//GAD//xgA//8hAP//IQD//xgA//8YAPf/EADe/xAAzv8QAMb/CAC1/wgA + rf8IAK3/CAC1/wgAtf8IAL3/EADG/xAAxv8IAL3/CAC1/wgAtf8IAL3/CAC9/wgAvf8IALX/CACt/wgA + pf8IAKX/CACc/wgAnP8AAJwpAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAQAN7nEADn/xgA7/8YAPf/GAD//xgA//8YAP//GAD//xgA//8YAP//GAD//xgA//8hAP//KRD//xAA + 7/8QAN7/EADW/xAA1v8QANb/EADO/wgAxv8IAL3/GBC9/wgAvf8QAMb/EADO/xAAzv8QAMb/EADG/wgA + xv8IAL3/CAC1/wgArf8IAKX/CACc/wgAnL0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAQAOdzEADn/xgA7/8YAPf/GAD//xgA//8YAP//GAD//xgA//8YAP//GAD//xgA + //+Efe//1tPW/72+3v+tquf/lI7e/4R93v+Egtb/lI7W/6Wizv+9utb/1tPW/1pVzv8QAN7/EADW/xAA + 1v8QAM7/EADO/xAAxv8IAL3/CAC1/wgArf8IAKX/CACl/wgApUIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAOcIEADn5xgA7/8YAPf/GAD//xgA//8YAP//GAD//xgA + //8YAP//GAD//ykU///e297/jILv/ykY///v5+//7+vv/+/r7//v6+//5+fv/87H5/8pGPf/nJbe/8bH + 1v8QANb/EADe/xAA1v8QAM7/EADO/xAAzv8IAMb/CAC9/wgAtf8IAK3/CACtvQAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEADnWhgA7/8YAPf/GAD//xgA + //8YAP//GAD//xgA//8YAP//GAD//1pN///e297/MRj//xgA//+9tvf/7+/v/+/v7//v7+//7+/v/5SK + 9/8YAP//Sjj3/97f3v8pINb/EADe/xAA1v8QANb/EADO/xAAzv8IAMb/CAC9/wgAvf8IALX/CAC1MQAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgA + 770YAPf/GAD//xgA//8YAP//GAD//xgA//8YAP//GAD//3Nl///v7+//jIb//xgA//97cf//9/f//97f + ///v7///9/f//1JF//8YAP//tarv/+fj5/9CONb/EADn/xAA3v8QANb/EADO/xAAzv8QAMb/CADG/wgA + vf8IAL2MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAABgA7xgYAPfvGAD//xgA//8YAP//GAD//xgA//8YAP//GAD//3Nh////+///7+///ykU + //85KP//7+///0Io//9aTf//7+v//yEI//9KNP////v//+/r7/9CNN7/EADn/xAA3v8QANb/EADO/xAA + zv8QAM7/EADG/wgAxtYIAL0IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAPdSGAD3/xgA//8YAP//GAD//xgA//8YAP//GAD//0Is + /////////////5SG//8YAP//QjD//ykQ//8hBP//SjT//xgA//+9sv///////+/r7/8YCN7/EADe/xAA + 3v8QANb/EADO/xAAzv8QAM7/EADG9wgAxikAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAD3exgA//8YAP//GAD//xgA + //8YAP//GAD//xgA//+1rv////////fz//8pFP//KQz//87H//+tpv//GAT//0o0/////////////4SC + 7/8QAOf/EADe/xAA1v8QANb/EADO/xAAzv8QAM7/EADGSgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgA + /4wYAP//GAD//xgA//8YAP//GAD//xgA//8pDP//vbb///////+lnv//zsP/////////////paL//8bD + ////////nJb3/xgA5/8QAN7/EADe/xAA1v8QANb/EADO/xAAzv8QAM5jAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAYAP+EGAD//xgA//8YAP//GAD//xgA//8YAP//IQD//2NV///Ow///9/f///// + ////////9+///72y//9SQff/EADn/xAA5/8QAN7/EADW/xAA1v8QANb/EADO9xAAzloAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAD/WhgA//cYAP//GAD//xgA//8hAP//IQD//yEA + //8YAP//IQz//ykQ//8pEP//GAj3/xgA7/8YAO//EADn/xAA3v8QAN7/EADW/xAA1v8QAM7nEADOOQAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgA/yEYAP+1GAD//xgA + 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 + Uv9ada3/UnGt/2N5tc4AAAAAAAAAAAAAAAAAAAAAnMP3WqXP9+dzit7/ABhS/zldnP+t0///teP//63X + ////////79uM/3NlOf+lljn/td/v/7Xj//+lz///lK7O/5R5Kf9zaTn/79uc/+fr7/+Mruf/c47G/1px + pf8YKFr/ABRK/zFBnPdSbaXnY3m1WgAAAAAAAAAAAAAAAAAAAAAAAAAAOTzeORAAzv8AGFL/QmGc/5zH + 9/+lz/f/pc/3/9bj9///+/f/9+ec/87Xvf+14///teP//6XP//+Utu//xsOt/+fXnP/n4+f/rbbW/2uG + vf9jea3/WnGl/xgoWv8AFEr/AACc/yEknCEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAM61EADO/wgI + hP8pPGv/Y4K1/2OCtf9rir3/c469/5Smxv+crs7/a4Kl/4Smzv+Eps7/e57O/3OOxv9acZz/hJa1/3uO + tf9ada3/WnGt/1Jppf9SZaX/GCRa/wAIc/8AAJz/AACclAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAA + zvcQAM7/CACt/xAQpf9CWZz/QlmM/yE0Uv9SaZz/Um2c/zE8Y/8hMEr/Y3mt/2N5rf9ada3/WnGt/xgg + Qv8xQWv/SmGU/0JZjP8YJEL/Qlmc/zlJlP8IDGv/AAB7/wAAnP8AAJzWAAAAAAAAAAAAAAAAAAAAAAAA + AAAQAM4IEADO/xAAzv8IAMb/CACt/wgErf8pNJz/CBAp/wAAGP8AACH/AAAY/zlNe/9SZaX/UmWl/0ph + nP9KYZz/KTxr/wAEGP8AABj/AAAY/xAYOf8hLIT/AABr/wAAa/8IAJT/AACc/wgAnPcAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAQAM7/EADW/xAA1v8QAMb/CACl/wgArf8IBIT/AAQp/wAEEP8YKEr/QlWc/0JV + lP9CVZT/QlWU/0JVlP9CUZT/GCBC/wAIGP8ABCn/AABj/wAAa/8AAHP/CACU/wgAnP8IAJz/CACc5wAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAABAA1tYQANb/EADe/xAA5/8QANb/CAC9/wgApf8IAKX/CACU/wgM + jP8YGIz/GCSM/yEojP8hKIz/GCSE/xAYhP8ICHv/AABz/wAAa/8AAHP/CACU/wgArf8IAKX/CACc/wgA + nP8IAJy1AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEADWhBAA3v8QAOf/GADv/xgA9/8YAO//GADv/xAA + zv8IAK3/CACc/wAAlP8AAJT/AACM/wAAjP8AAIT/AACE/wAAhP8IAJT/CACt/wgAtf8IALX/CACt/wgA + pf8IAJz/CACc/wgAnGsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAN4pEADe/xgA7/8YAPf/GAD//xgA + //8YAP//GAD//xgA//8YAPf/EADe/xAAzv8IAL3/CAC9/wgAvf8IAMb/CADG/wgAvf8IAL3/EAC9/wgA + vf8IALX/CACt/wgApf8IAJz3CACcEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAOe1GADv/xgA + 9/8YAP//GAD//xgA//8YAP//GAD//3tt7/+Mht7/c23e/1pV1v9aWdb/a2nO/4SGzv9jWc7/EADW/xAA + zv8QAM7/EADG/wgAvf8IAK3/CACl/wgApZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAA + 5zEYAO//GAD3/xgA//8YAP//GAD//xgA//8xGP//tbLn/zEg///n4+//7+vv/+/r7//Ox+//OST3/726 + 3v8YBNb/EADW/xAAzv8QAM7/CADG/wgAtf8IAK33CACtGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAABgA75wYAPf/GAD//xgA//8YAP//GAD//1JB///e1+//IQj//62q9//v6/f/9/P3/5SK + //8xGP//3t/n/zEg3v8QAN7/EADW/xAAzv8IAMb/CAC9/wgAtXsAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAGADvCBgA994YAP//GAD//xgA//8YAP//Sjj////7//97bf//c2H//1pF + //9zYf//WkX//5SO///38/f/KRze/xAA3v8QANb/EADO/xAAxv8IAMbGAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAD3KRgA//cYAP//GAD//xgA//8hBP//3tv//+fn + //8hCP//c2X//1pN//8xGP//9/f//8a+9/8QAOf/EADe/xAA1v8QAM7/EADO5xAAxhgAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAD/ORgA//cYAP//GAD//xgA + //85JP//1sv//8a6//////////v//8bD//+9uv//KRTn/xAA3v8QANb/EADO/xAAzu8QAM4pAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAD/MRgA + /+cYAP//GAD//xgA//8YAP//Sjj//3Nd//9rXf//Qiz3/xAA5/8QAN7/EADe/xAA1v8QAM7WEADOIQAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAGAD/CBgA/5QYAP/3GAD//xgA//8YAP//GAD3/xgA7/8YAO//EADn/xAA3v8QANb3EADWhAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAABgA/xAYAP9jGAD/rRgA994YAO/3GADn9xAA59YQAN6lEADeWhAA + 1ggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/wD///wAP//wAA//4A + AH/8AAA//AAAP/gAAB/gAAAH4AAAB8AAAAPAAAADwAAAA8AAAAPAAAADwAAAA+AAAAfgAAAH4AAAB8AA + AAfgAAAH4AAAB+AAAAfgAAAH8AAAD/AAAA/4AAAf+AAAP/wAAD/+AAB//wAA//+AA///4Af/KAAAABAA + AAAgAAAAAQAgAAAAAABABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAa3W1KXuO + 1q1zitb3a33G72t5vaVSZZQhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABabaUIhJ7npYyq + 7/+Usvf/hJ7e/2uCxv9jfbX/Y321/2N1rZw5TXMIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjK73tZy+ + 7/9CVXv/ITBS/yk4Wv8pOFL/ISxK/zFBY/9jda3/Wm2lrQAAAAAAAAAAAAAAAAAAAAAAAAAAlLb3hKXL + //9CWXP/CBAp/2OCtf+Eot7/e5bW/2N5pf8AAAj/KTRS/1JpnP9jebWEAAAAAAAAAAAAAAAAnMf3hJS+ + 5/+Mstb/CBAp/0phhP+tz/f/rdf//5y+7/9zltb/MUVj/wAIGP9SaZz/SmWl/2N5tYQAAAAAAAAAAJzD + 995ScaX/e57O/5S21v/W19b/rc/e/8bv//+t1///e469/87T1v9zksb/SmWl/ylFe/9adbXeAAAAAAAA + AACcvvfvSm2l/2OGvf+14///zsOc/0o0If+12+//pcPe/0IsIf/Gupz/hKbe/zFNjP8xRYT/WnW17wAA + AAAAAAAAe5bvWiEwlP9zls7/rdf//+/v3v+1rnP/teP3/5y+7/+tnmv/1tfO/3OOxv85TXv/EBhz/0JZ + pVoAAAAAAAAAAAgAxmsIALX/OUmc/1JllP9rgq3/UmmM/3OSvf9rhr3/Sll7/1ptpf9CVYz/KTh7/wAA + jP8AAJRaAAAAAAAAAAAQAM6EEADO/wgAtf8QFHv/AAQh/yk0Wv9KXZz/Qlmc/yEsUv8ABBj/EBBj/wAA + e/8IAJz/AACccwAAAAAAAAAAEADGUhAA3v8QAOf/EADO/wgArf8ICJT/EBSM/xAUjP8ICIT/CACM/wgA + nP8IAKX/CACc/wAAlEIAAAAAAAAAAAgAjAgQAOfvGAD//xgA//8YAP//Sjzn/zkwzv85MMb/QjjG/xAA + xv8QAMb/CAC1/wgApecAAAAAAAAAAAAAAAAAAAAAEADncxgA//8YAP//MRT//3tt9//e1/f/zsv3/4R1 + 7/8YCN7/EADO/wgAvf8IAK1jAAAAAAAAAAAAAAAAAAAAAAAAAAAYAPe9GAD//ykQ///Oy///WkX//1JB + ///Oz/f/GATe/xAAzv8QAMa1AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEADGCBgA/8YYAP//Ujz//5yW + //+ckv//QjTv/xAA1v8QAM61CACcCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAD/YxgA + /8YYAPf3GADv9xAA3sYQANZaAAAAAAAAAAAAAAAAAAAAAAAAAAD4HwAA4AcAAOAHAADAAwAAgAEAAIAB + AACAAQAAgAEAAIABAACAAQAAgAEAAIADAADAAwAA4AcAAOAHAAD4HwAA + + + \ No newline at end of file diff --git a/GetData_PLC/obj/Debug/DesignTimeResolveAssemblyReferences.cache b/GetData_PLC/obj/Debug/DesignTimeResolveAssemblyReferences.cache new file mode 100644 index 0000000000000000000000000000000000000000..ebeb19c3afe352770da4192076c76bedfd5ff55c GIT binary patch literal 1453 zcmcIk-EPw`6i$EFrs*jEH(UgX3(%^lr3?nBLZhSF1e*q}wws{IjZcbIC!TDlr920( zz$I_OJMaR$1NfxffKYK)NBLsMU;LeO^4V6-vaFw`;S-yaH*j{y0x6UTwf8b%oO(l| zCd!+(A9}5(dje815qEKfSJUk!TqhE`F(g_N-gJ+X5of_`m=DDS;_j%`3Ae*1VY^MY zTckrusCIX?$Y8ECL<3DUAgdZO4(X_HXEEjV1m_TF6N2*giTa?)hy#XQEf^>w{Fl06 z2=*I6XrBaH$c<$_m7a*si3HieMSFt6u@qBAL00g^fPI3Z$w-w?2v0y+R-s^(O0~)= zt%HlT?yZRV;Ggw>yxn9^L~9wD1oWM z`Xu%wnX!1BW>Ym%XKRp(R3Id0qg2E;B9k?UEPu`^i>a6?uP3mH&{ zEUY^}GG=usoI^~FrHzvv6%egKrjFl~Nvv4}%Pm_EFT9PPS^0cEm#^bVU_Jl-^~>jP z`?hVDubH8ZX7@U+PW!2y!z?i1KS|fKB+N2Px{)Pe6|$t8SrS$$OS+XMVHLBa+Zj^r E7tNQm$N&HU literal 0 HcmV?d00001 diff --git a/GetData_PLC/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache b/GetData_PLC/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache new file mode 100644 index 0000000000000000000000000000000000000000..01eb2fc98dae94d33b0aa3121d6a65e737896ae1 GIT binary patch literal 7410 zcmeHMTT>f16t)8>7($BEG#ApOn>KBe)U&lQgv$&Mi47@Jpp5N-&cu|+yT?XhceRnU zfXndSf6-si=}&CWS%bMI?SpqF50=NrvTmQw*(2?Dq*OYUO8tY0ekt9!hQeJHj*?n7 zjlCgs#J#GCTp{g}^nDpDmlt!^1}H6Luuzz^^YqDCrN}dpf`tGgqqvu|)}w|eoS&gx zle-WsH1fsfbaSRzD7e#kUgSdrIr{;mSCQ~s!dnguC>d@l9)_Uo3RlZP7#V#RJKyJ? zC-=d9sWtcwuf2F+AfQ?4F>GCuK~uDrga>yV9=O8g22NU1seaImJa0*HANHl%J*lek z2G-p^SGOcR7xjHag*C2PV7lF^QA2}S!$I^D(F&x3GBi1wVmZ(T=XW~0&cM$<-l#KN zr|DgB^$-s)m7ncpd8ns07p7Sj3LGPq06iYMhN~)YA0?>16oV< z5@#
    Vz(L+y&f96d2*dahHoDb*!Y>H8#LlDm8%eS~{I(_(l2WP_?ZM_~>-_)Eq-@ zWWR<0lyK}7G{M`#n>Qb6f_}ciy$II1P;V!@O{+$Upp~0n&{IpziqW?!(|m>HoWyO=K) z<}zR4|124tzU&SOdtU^;%ZR`a+OFrZdvOj9AWP4LpxAvBza?U#Rjx3Q5sqXNi19uV zjI)oc27V|NS8e2ncGx^%4-$h#cfkl-v#h7+7|-fm$Fq*t1kLkw?R5R>{3@!GFP%2COVu5&!q{ydkwyuC zoiOznBS}C7G0tPeG0EZ3c4d=5Pdp9FW8|-s)i6e; zZRH!pkqK+~i{g$4B~RcM9xL|*L3a`ah0v32dSS$9-y+&pa%g15?+^l#gD5MGuY*>s z&G!hE;9A=hfh+g5y(E>dW5A~f$dl9USKo_ao*_&#S(p_OyeF(dA~by#-e=)GJ#XrD z5F2yBZ9Kj6_0YB!zr*nMUgtO&YyKYWz8f!}!}Sl@=pg-r=YdK1eXk#WkB=PQYz+@* zp5v}}lCl)e(bWR`0Y#yiP7Tqk*Q|yT$DKV~kmg30RDpQzA!t4}EQo0`7n4l;P{MFwt{_Enczh88( IPPRt>1=dBUt^fc4 literal 0 HcmV?d00001 diff --git a/GetData_PLC/obj/Debug/GetData_PLC.Properties.Resources.resources b/GetData_PLC/obj/Debug/GetData_PLC.Properties.Resources.resources new file mode 100644 index 0000000000000000000000000000000000000000..6c05a9776bd7cbae976fdcec7e3a254e93018279 GIT binary patch literal 180 zcmX?i>is@O1_p+SK%5g?SzMBus~417oL^d$oLUTL1*ImYq!#HYR*8GxXUf^%t3Noi54ZC+|=Nl{{sjzU0bQch;FcWPxwes*e}ZIZcpqG__J onW3ezNveT`r81^vrFkWpxv4PQgHubGfR2KJ07n-P+5+SQ04Y>DD*ylh literal 0 HcmV?d00001 diff --git a/GetData_PLC/obj/Debug/GetData_PLC.application b/GetData_PLC/obj/Debug/GetData_PLC.application new file mode 100644 index 0000000..4daa6cc --- /dev/null +++ b/GetData_PLC/obj/Debug/GetData_PLC.application @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + /98GKWwhOmh5/MvPNrQLRo+qqVs= + + + + \ No newline at end of file diff --git a/GetData_PLC/obj/Debug/GetData_PLC.csproj.FileListAbsolute.txt b/GetData_PLC/obj/Debug/GetData_PLC.csproj.FileListAbsolute.txt new file mode 100644 index 0000000..8f142db --- /dev/null +++ b/GetData_PLC/obj/Debug/GetData_PLC.csproj.FileListAbsolute.txt @@ -0,0 +1,57 @@ +E:\我的文档\Documents\Visual Studio 2013\Projects\GetData_PLC\GetData_PLC\bin\Debug\GetData_PLC.exe.config +E:\我的文档\Documents\Visual Studio 2013\Projects\GetData_PLC\GetData_PLC\bin\Debug\GetData_PLC.exe +E:\我的文档\Documents\Visual Studio 2013\Projects\GetData_PLC\GetData_PLC\bin\Debug\GetData_PLC.pdb +E:\我的文档\Documents\Visual Studio 2013\Projects\GetData_PLC\GetDataPLC_exe\GetData_PLC.exe.config +E:\我的文档\Documents\Visual Studio 2013\Projects\GetData_PLC\GetDataPLC_exe\GetData_PLC.exe.manifest +E:\我的文档\Documents\Visual Studio 2013\Projects\GetData_PLC\GetDataPLC_exe\GetData_PLC.application +E:\我的文档\Documents\Visual Studio 2013\Projects\GetData_PLC\GetDataPLC_exe\GetData_PLC.exe +E:\我的文档\Documents\Visual Studio 2013\Projects\GetData_PLC\GetDataPLC_exe\GetData_PLC.pdb +E:\我的文档\Documents\Visual Studio 2013\Projects\GetData_PLC\GetData_PLC\obj\Debug\GetData_PLC.frmMain.resources +E:\我的文档\Documents\Visual Studio 2013\Projects\GetData_PLC\GetData_PLC\obj\Debug\GetData_PLC.Properties.Resources.resources +E:\我的文档\Documents\Visual Studio 2013\Projects\GetData_PLC\GetData_PLC\obj\Debug\GetData_PLC.csproj.GenerateResource.Cache +E:\我的文档\Documents\Visual Studio 2013\Projects\GetData_PLC\GetData_PLC\obj\Debug\GetData_PLC.exe.manifest +E:\我的文档\Documents\Visual Studio 2013\Projects\GetData_PLC\GetData_PLC\obj\Debug\GetData_PLC.application +E:\我的文档\Documents\Visual Studio 2013\Projects\GetData_PLC\GetData_PLC\obj\Debug\GetData_PLC.exe +E:\我的文档\Documents\Visual Studio 2013\Projects\GetData_PLC\GetData_PLC\obj\Debug\GetData_PLC.pdb +E:\我的文档\Documents\Visual Studio 2013\Projects\GetData_PLC\GetData_PLC\obj\Debug\GetData_PLC.csprojResolveAssemblyReference.cache +E:\自动接收\计量管理科(F0BF97D8CA14)\GetData_PLC+三力超声波\GetData_PLC\GetData_PLC\obj\Debug\GetData_PLC.frmMain.resources +E:\自动接收\计量管理科(F0BF97D8CA14)\GetData_PLC+三力超声波\GetData_PLC\GetData_PLC\obj\Debug\GetData_PLC.Properties.Resources.resources +E:\自动接收\计量管理科(F0BF97D8CA14)\GetData_PLC+三力超声波\GetData_PLC\GetData_PLC\obj\Debug\GetData_PLC.csproj.GenerateResource.Cache +E:\自动接收\计量管理科(F0BF97D8CA14)\GetData_PLC+三力超声波\GetData_PLC\GetData_PLC\obj\Debug\GetData_PLC.exe.manifest +E:\自动接收\计量管理科(F0BF97D8CA14)\GetData_PLC+三力超声波\GetData_PLC\GetData_PLC\obj\Debug\GetData_PLC.application +E:\自动接收\计量管理科(F0BF97D8CA14)\GetData_PLC+三力超声波\GetData_PLC\GetData_PLC\obj\Debug\GetData_PLC.exe +E:\自动接收\计量管理科(F0BF97D8CA14)\GetData_PLC+三力超声波\GetData_PLC\GetData_PLC\obj\Debug\GetData_PLC.pdb +C:\Users\cloud\Documents\Visual Studio 2012\Projects\GetData_PLC+三力超声波\GetData_PLC\GetData_PLC\obj\Debug\GetData_PLC.frmMain.resources +C:\Users\cloud\Documents\Visual Studio 2012\Projects\GetData_PLC+三力超声波\GetData_PLC\GetData_PLC\obj\Debug\GetData_PLC.Properties.Resources.resources +C:\Users\cloud\Documents\Visual Studio 2012\Projects\GetData_PLC+三力超声波\GetData_PLC\GetData_PLC\obj\Debug\GetData_PLC.csproj.GenerateResource.Cache +C:\Users\cloud\Documents\Visual Studio 2012\Projects\GetData_PLC+三力超声波\GetData_PLC\GetData_PLC\obj\Debug\GetData_PLC.exe.manifest +C:\Users\cloud\Documents\Visual Studio 2012\Projects\GetData_PLC+三力超声波\GetData_PLC\GetData_PLC\obj\Debug\GetData_PLC.application +C:\Users\cloud\Documents\Visual Studio 2012\Projects\GetData_PLC+三力超声波\GetData_PLC\GetData_PLC\obj\Debug\GetData_PLC.exe +C:\Users\cloud\Documents\Visual Studio 2012\Projects\GetData_PLC+三力超声波\GetData_PLC\GetData_PLC\obj\Debug\GetData_PLC.pdb +E:\ldy\Desktop\GetData_PLC+三力超声波\GetData_PLC\GetData_PLC\obj\Debug\GetData_PLC.exe +E:\ldy\Desktop\GetData_PLC+三力超声波\GetData_PLC\GetData_PLC\obj\Debug\GetData_PLC.pdb +E:\ldy\Desktop\GetData_PLC+三力超声波\GetData_PLC\GetData_PLC\obj\Debug\GetData_PLC.frmMain.resources +E:\ldy\Desktop\GetData_PLC+三力超声波\GetData_PLC\GetData_PLC\obj\Debug\GetData_PLC.Properties.Resources.resources +E:\ldy\Desktop\GetData_PLC+三力超声波\GetData_PLC\GetData_PLC\obj\Debug\GetData_PLC.csproj.GenerateResource.Cache +E:\ldy\Desktop\GetData_PLC+三力超声波\GetData_PLC\GetData_PLC\obj\Debug\GetData_PLC.exe.manifest +E:\ldy\Desktop\GetData_PLC+三力超声波\GetData_PLC\GetData_PLC\obj\Debug\GetData_PLC.application +E:\ldy\Documents\Visual Studio 2013\Projects\GetData_PLC+三力超声波\GetData_PLC\GetData_PLC\obj\Debug\GetData_PLC.exe +E:\ldy\Documents\Visual Studio 2013\Projects\GetData_PLC+三力超声波\GetData_PLC\GetData_PLC\obj\Debug\GetData_PLC.pdb +E:\ldy\Documents\Visual Studio 2013\Projects\GetData_PLC+三力超声波\GetData_PLC\GetData_PLC\obj\Debug\GetData_PLC.csprojResolveAssemblyReference.cache +E:\ldy\Documents\Visual Studio 2013\Projects\GetData_PLC+三力超声波\GetData_PLC\GetData_PLC\obj\Debug\GetData_PLC.frmMain.resources +E:\ldy\Documents\Visual Studio 2013\Projects\GetData_PLC+三力超声波\GetData_PLC\GetData_PLC\obj\Debug\GetData_PLC.Properties.Resources.resources +E:\ldy\Documents\Visual Studio 2013\Projects\GetData_PLC+三力超声波\GetData_PLC\GetData_PLC\obj\Debug\GetData_PLC.csproj.GenerateResource.Cache +E:\ldy\Documents\Visual Studio 2013\Projects\GetData_PLC+三力超声波\GetData_PLC\GetData_PLC\obj\Debug\GetData_PLC.exe.manifest +E:\ldy\Documents\Visual Studio 2013\Projects\GetData_PLC+三力超声波\GetData_PLC\GetData_PLC\obj\Debug\GetData_PLC.application +D:\GetPLCData\GetData_PLC.exe.config +D:\GetPLCData\GetData_PLC.exe.manifest +D:\GetPLCData\GetData_PLC.application +D:\GetPLCData\GetData_PLC.exe +D:\GetPLCData\GetData_PLC.pdb +E:\ldy\Documents\Visual Studio 2013\Projects\GetData_PLC_NEW\GetData_PLC\GetData_PLC\obj\Debug\GetData_PLC.frmMain.resources +E:\ldy\Documents\Visual Studio 2013\Projects\GetData_PLC_NEW\GetData_PLC\GetData_PLC\obj\Debug\GetData_PLC.Properties.Resources.resources +E:\ldy\Documents\Visual Studio 2013\Projects\GetData_PLC_NEW\GetData_PLC\GetData_PLC\obj\Debug\GetData_PLC.csproj.GenerateResource.Cache +E:\ldy\Documents\Visual Studio 2013\Projects\GetData_PLC_NEW\GetData_PLC\GetData_PLC\obj\Debug\GetData_PLC.exe.manifest +E:\ldy\Documents\Visual Studio 2013\Projects\GetData_PLC_NEW\GetData_PLC\GetData_PLC\obj\Debug\GetData_PLC.application +E:\ldy\Documents\Visual Studio 2013\Projects\GetData_PLC_NEW\GetData_PLC\GetData_PLC\obj\Debug\GetData_PLC.exe +E:\ldy\Documents\Visual Studio 2013\Projects\GetData_PLC_NEW\GetData_PLC\GetData_PLC\obj\Debug\GetData_PLC.pdb diff --git a/GetData_PLC/obj/Debug/GetData_PLC.csproj.GenerateResource.Cache b/GetData_PLC/obj/Debug/GetData_PLC.csproj.GenerateResource.Cache new file mode 100644 index 0000000000000000000000000000000000000000..b5b8bdcf2006cc0311b5244d41c226766d4854f6 GIT binary patch literal 979 zcma)4!D&K@L)9v1N+WEpl1!CaPr8)AZ4h$aLNqV!DHV6(l`OLtGm z_yzeEf53xy_v%IOo&`Tas~QtRGDvEmy1MFhy?)c>`JU(fL8FzddkfvWsmQf5s<7#^ zN=Tj_F*7si$>>Qs9Q2Pt8==ZE?dTiyCzZ67hH(j%)l3fh2UR9T{sQVFHG^`T4cCi} z;%PA&@r@x{XCbjYZYFsJ<~fwxuz-?7nF}yW2#z$E*E>Rj=`EDDER(P=GR-vBS2JdC zSI&SFVq0j)tUEibD!-aFoP$`DH;54r^m!o=%jMcvt+H zCf#M`z0>7bLOkOWi=%5{5K!vB2bU2L?<>Z480laB_fGAJnlG3Joe;%DaX8TGL~zh; zN*sz05a3Ih)-jV67^GbC!m!hB;@Ug!^{7F?-nIU}UT$uYoH%we=z>ujolk;D4*_sF z2SgY~F}j4Hbh6b!*DdsX%0!vs5S+HUn7M}%7N9M@{u>+^Rp}gzD<{<7{lXOtqTA>a zYD<<-YqF4PqvqMTK7VVNazoesHVYNE6|l}4)?F*B{O!axF`hhyH{#( zDvUKPoRJmZUHcA_M5Oxdm#?2b?|wh?eG=i+^r%Mq>)#*kkDuSp{2sx{dQ>Cp`~{(C B4KV-! literal 0 HcmV?d00001 diff --git a/GetData_PLC/obj/Debug/GetData_PLC.exe b/GetData_PLC/obj/Debug/GetData_PLC.exe new file mode 100644 index 0000000000000000000000000000000000000000..465d8ef9277e93636ad2aba5e23665dc3f6cec34 GIT binary patch literal 221696 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

    }Y+RN<6(IavC9=uOk4S$ceoA~;iFXQ)-mjZYP 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%0DM7G*MQG9I(JmIxAZsi!H zHjE7&YvOuqZH$pI0#Mkf5m1>>J162CC{3USkw^`?BX9yJX5jil#|PNZw2`606F$;{ zVnewaU|xh7ZINS5_{7ZE@Y;(-0dWCj=F&y+w%X|^-pCb>88apnXsW#!|D4!j3<93i zb08UQwO808ZIPhAEs{Br*~Ea_{0LwrFdAwv4n=9hfT@s>5JrFnmL>H3fDu|=IHBOZ z@Y==0hH+}+*ieft(kQAMhOA=(qfkv?D2ynZv0{r1nHVsVbD^0cFRDjF(MaLvC@y0R zN-_l)7}=l@^Iq+BXc!3K1hSZrwN5~7LdP;OdBxku;V}ZC+c?NpyHh&1TYh#`_D#0m4ZDm>v`Fr+ZI+RD ziVXM2GQhT+ua(n{iI8D!GVEdLw2S1ANl%CH{5AlYfG-2*3J#W0&r0VNcEW3aC!IH? z^T$BO#P>K$K!9m%s4dbW*gCxSm`rd&I`5!Gmhh3o0|LTpPk@7th1b3lUi&`qVDt}Q z;Q$OF0e2`Me^fxAE*TR7_!@~`>Cag~n-f4YqpT=YP@)LmEy4~x_jF^Z)dwhwz!*NZ<@v@TQT%54S@vt0q7EC+K5ukl+3JX~1njj~4j|8o8 z2`D^#Y4}p3IRMg%n`qk@X))jhOa5gV=$ZxjI0NJ=SzSI^oyw@l$uF5K&o7{6?Z^TS zI_Kx&T!kkf0|zt;oqRq{J2O#IW{I03zk7w(CQ;pZW|oa(@juT%XH8z1yu|Z1!6fye zEdEH9ftG}h@I+~6Qu*+hmGeY-Vxp#54HTq1DS;LmQVhl7sC)SxWZR(}dE}k;o9)Iz)8F4c%woi?le(|MKr>vS1d+D@G?K82g z5^SJ=IMpVgEkM+V2Yf#PzjOHA&n3oD%ggMgI9B30VTn^OIOZtQ65aP;-gTUqQ9cG? zFNYfG)nvA53D*|5pTfs&DTF~(`TTbMYQ^#=@=VdDkbE;P2pdF4D6_>kKO1ea4 zlrv$t2~$_%5D34>=~}77M)tzw<$Ax*bIGbTE5!jAedy%UoK+0jf8K9|RWc|;HkqHJ z28S_9myQSrq|0z1SG?*Z-h6dB#ld^d>z+VSvj;Ea+tB}m7%+)9$tPmvGZfIThiip< zD_q~kSVX_OAK_3^=m1n%WoHOs{NS~h!xPOT7M~4W1W{B|L4-x*CA;M1%5pMBzI}KWyFk*=Ci3p!P z!ANHBVtGFA5|cbWP$1T$ zM2er8^MFGGV3I3=#h3®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 O{*^NS@%KNk1^z!(ir0Do literal 0 HcmV?d00001 diff --git a/GetData_PLC/obj/Debug/GetData_PLC.exe.manifest b/GetData_PLC/obj/Debug/GetData_PLC.exe.manifest new file mode 100644 index 0000000..e37b68d --- /dev/null +++ b/GetData_PLC/obj/Debug/GetData_PLC.exe.manifest @@ -0,0 +1,75 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + e9iL5hYMgAegTkQAkal1B3YrHE4= + + + + + + + + + + 9qAuvVJinL/10w661sMdCpZV2TU= + + + + + + + + + N55XevUJHGJDRLBdhAY/WZd6pH4= + + + \ No newline at end of file diff --git a/GetData_PLC/obj/Debug/GetData_PLC.frmMain.resources b/GetData_PLC/obj/Debug/GetData_PLC.frmMain.resources new file mode 100644 index 0000000000000000000000000000000000000000..a9a903bd9a0b08ebae2d4f0317c7308a34ebf2a3 GIT binary patch literal 92348 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 literal 0 HcmV?d00001 diff --git a/GetData_PLC/obj/Debug/GetData_PLC.pdb b/GetData_PLC/obj/Debug/GetData_PLC.pdb new file mode 100644 index 0000000000000000000000000000000000000000..429bca6cbe8aa93539d0f4ddb9a06eb4f186712d GIT binary patch literal 58880 zcmeI52Vhm@-T%)GA%KDvMFj**AS}Uew)2I78M7m4D&yz=Q5XTsihWs{(cQgV9O_a)b3mY zLsQ!Dzjx=N*e&zE_Y(y%(+2jXAxKbNf=@olgr9uU%;@+0`TCYXWA%T?p8Eg#R(M*@ z*5wt%ZoGN%@iEMgZ1ME_OZt2~`M!;9%R4+c;1KUrc9N*tI(8tea> z2&3b_^vX^;zam-Olg#auz@GZwPT}kZRv#^xKH`xUFSK1-9Bi3-ZN}9PjhT4K8?Qg# zcI^nO-}{QQ=Cob-LfiWe4T6taPPlLW4b_D|FF#|_J@1WraaG-om$)Tk&~mR;Pfq^R zv;XKb=ar)`UD*D(-Js~c7Fpa`_5aqrkM(W2XyW82w*Ks~ntlg9_O&RS-5?V?tNyR( zR`~B%-mH3K>*FJ@y8hWM-`Wj|?rV|7omKxUuE}_J<3)=mw=FC>>i2b5jQv^^&Tf#2 zomKx&_L*3+`H`-r`M*1T{mAB(-`EX`?rV|7omKy*4%qhC?Q7qd_k(fQ{-gN5mVf

    + /// 执行存储过程 + /// + /// 存储过程名 + /// 存储过程参数 + /// os_Info执行信息 + public static string RunProcedure(string sprocName, IDataParameter[] parameters) + { + + using (OracleConnection con = new OracleConnection(condb)) + { + string infostr; + con.Open(); + + OracleCommand cmd = new OracleCommand(sprocName, con); + cmd.CommandType = CommandType.StoredProcedure; + if (parameters != null) + { + foreach (IDataParameter parameter in parameters) + { + cmd.Parameters.Add(parameter); + } + } + cmd.Parameters.Add("os_Info", OracleType.VarChar, 30); + cmd.Parameters["os_Info"].Direction = ParameterDirection.Output; + cmd.ExecuteNonQuery(); + //infostr = Convert.ToInt32(cmd.ExecuteScalar().ToString()); + infostr = cmd.Parameters["os_Info"].Value.ToString(); + con.Close(); + return infostr; + } + } + /**/ + /// + /// 执行存储过程 + /// + /// 存储过程名 + /// 表名 + /// 存储过程参数 + /// 返回记录集 + public static DataSet RunProcedureDataSet(string sprocName, IDataParameter[] parameters) + { + + using (OracleConnection con = new OracleConnection(condb)) + { + con.Open(); + + OracleCommand cmd = new OracleCommand(sprocName, con); + cmd.CommandType = CommandType.StoredProcedure; + if (parameters != null) + { + foreach (IDataParameter parameter in parameters) + { + cmd.Parameters.Add(parameter); + } + } + cmd.Parameters.Add("TZ_CURSOR", OracleType.Cursor); + cmd.Parameters["TZ_CURSOR"].Direction = ParameterDirection.Output; + cmd.Parameters.Add("HZ_CURSOR", OracleType.Cursor); + cmd.Parameters["HZ_CURSOR"].Direction = ParameterDirection.Output; + cmd.Parameters.Add("QJ_CURSOR", OracleType.Cursor); + cmd.Parameters["QJ_CURSOR"].Direction = ParameterDirection.Output; + cmd.Parameters.Add("AL_CURSOR", OracleType.Cursor); + cmd.Parameters["AL_CURSOR"].Direction = ParameterDirection.Output; + DataSet ds = new DataSet(); + OracleDataAdapter da = new OracleDataAdapter(cmd); + da.Fill(ds); + con.Close(); + return ds; + } + } + + public static DataSet RunProcedureDataSetfb(string sprocName, IDataParameter[] parameters) + { + + using (OracleConnection con = new OracleConnection(condb)) + { + con.Open(); + + OracleCommand cmd = new OracleCommand(sprocName, con); + cmd.CommandType = CommandType.StoredProcedure; + if (parameters != null) + { + foreach (IDataParameter parameter in parameters) + { + cmd.Parameters.Add(parameter); + } + } + cmd.Parameters.Add("TZ_CURSOR", OracleType.Cursor); + cmd.Parameters["TZ_CURSOR"].Direction = ParameterDirection.Output; + cmd.Parameters.Add("HZ_CURSOR", OracleType.Cursor); + cmd.Parameters["HZ_CURSOR"].Direction = ParameterDirection.Output; + DataSet ds = new DataSet(); + OracleDataAdapter da = new OracleDataAdapter(cmd); + da.Fill(ds); + con.Close(); + return ds; + } + } + + //Andy 20131008 + public static DataSet RunProcedureDataSetRY(string sprocName, IDataParameter[] parameters) + { + + using (OracleConnection con = new OracleConnection(condb)) + { + con.Open(); + + OracleCommand cmd = new OracleCommand(sprocName, con); + cmd.CommandType = CommandType.StoredProcedure; + if (parameters != null) + { + foreach (IDataParameter parameter in parameters) + { + cmd.Parameters.Add(parameter); + } + } + cmd.Parameters.Add("RY_CURSOR_ALL", OracleType.Cursor); + cmd.Parameters["RY_CURSOR_ALL"].Direction = ParameterDirection.Output; + cmd.Parameters.Add("RY_CURSOR_Dept", OracleType.Cursor); + cmd.Parameters["RY_CURSOR_Dept"].Direction = ParameterDirection.Output; + DataSet ds = new DataSet(); + OracleDataAdapter da = new OracleDataAdapter(cmd); + da.Fill(ds); + con.Close(); + return ds; + } + } + + //Andy 20130724 + public static DataSet RunProcedureDataSetColumnChart(string sprocName, IDataParameter[] parameters) + { + using (OracleConnection con = new OracleConnection(condb)) + { + con.Open(); + + OracleCommand cmd = new OracleCommand(sprocName, con); + cmd.CommandType = CommandType.StoredProcedure; + if (parameters != null) + { + foreach (IDataParameter parameter in parameters) + { + cmd.Parameters.Add(parameter); + } + } + cmd.Parameters.Add("TZ_CURSOR", OracleType.Cursor); + cmd.Parameters["TZ_CURSOR"].Direction = ParameterDirection.Output; + DataSet ds = new DataSet(); + OracleDataAdapter da = new OracleDataAdapter(cmd); + da.Fill(ds); + con.Close(); + return ds; + } + } + + public static string ExecuteProcedure(string sprocName, IDataParameter parameter) + { + string info; + using (OracleConnection con = new OracleConnection(condb)) + { + con.Open(); + OracleCommand cmd = new OracleCommand(sprocName, con); + cmd.CommandType = CommandType.StoredProcedure; + if (parameter != null) + { + cmd.Parameters.Add(parameter); + } + cmd.Parameters.Add("Info", OracleType.VarChar, 30); + cmd.Parameters["Info"].Direction = ParameterDirection.Output; + cmd.ExecuteNonQuery(); + info = cmd.Parameters["Info"].Value.ToString(); + con.Close(); + return info; + } + } + + public static int isExit(string sql) + { + using (OracleConnection con = new OracleConnection(condb)) + { + int Num; + con.Open(); + OracleCommand cmd = new OracleCommand(sql, con); + Num = Convert.ToInt32(cmd.ExecuteScalar()); + con.Close(); + return Num; + } + } + + + //201309 add + public static DataTable ExecuteDataTable(string sql) + { + // Create a new Oracle command + OracleCommand command = null; + + try + { + //Create a connection + using (OracleConnection connection = new OracleConnection(condb)) + { + command = new OracleCommand(sql, connection); + OracleDataAdapter adapter = new OracleDataAdapter(command); + DataSet ds = new DataSet(); + //System.Threading.Thread.Sleep(10); + adapter.Fill(ds); + + + //if(ds.Tables.Count<1) + // return; + DataTable dt = ds.Tables[0].Copy(); + ds.Dispose(); + return dt; + + } + } + catch (Exception ex) + { + //strError = " oracle查询返回表格错误!" + ex.Message; + return null; + } + } + public static void SaveDataTable(string sql, DataTable _TempTable) + { + // Create a new Oracle command + OracleCommand command = null; + try + { + //Create a connection + using (OracleConnection connection = new OracleConnection(condb)) + { + command = new OracleCommand(sql, connection); + OracleDataAdapter adapter = new OracleDataAdapter(command); + OracleCommandBuilder cb = new OracleCommandBuilder(adapter); + adapter.Update(_TempTable); + + } + } + catch (Exception ex) + { + + //strError = " oracle保存表格错误!" + ex.Message; + } + + } + } +} diff --git a/UpdateMeter/Program.cs b/UpdateMeter/Program.cs new file mode 100644 index 0000000..e2e02f7 --- /dev/null +++ b/UpdateMeter/Program.cs @@ -0,0 +1,687 @@ +using OraDataBase; +using System; +using System.Collections.Generic; +using System.Data; +using System.IO; +using System.Linq; +using System.Text; +using System.Threading; +using System.Threading.Tasks; + +namespace UpdateMeter +{ + class UpdateMeter + { + bool T = true; + + DataTable dt = new DataTable(); + DataTable dtXML = new DataTable(); + DataSet ds = new DataSet(); + + string path = Environment.CurrentDirectory + @"\Data\UpdateMeter\"; + static void Main(string[] args) + { + Console.WriteLine("更新厂台帐到局系统台帐"); + + UpdateMeter objUpdate = new UpdateMeter(); + + + if (File.Exists(objUpdate.path + "updateFlag.xml")) + { + File.Delete(objUpdate.path + "updateFlag.xml"); + } + + + objUpdate.ToUpdate(objUpdate.TRQCXC(), objUpdate.TRQCXC_NoZY(), objUpdate.ZYYT(), objUpdate.GLDW(), objUpdate.EquipInfo(), objUpdate.ZQDDJ(), objUpdate.CLCS(), objUpdate.CLJZ(), objUpdate.JDDW()); + + + while (objUpdate.T) + { + Thread.Sleep(1); + } + Console.Read(); + + } + + + + + private DataTable TRQCXC_NoZY() + { + string sql = "select * from clsbtz where 状态 !='在用'"; + //string sql = "select * from clsbtz where 状态 ='在用' and 使用存放地点 is not null and 制造厂家 is not null and 测量设备名称 not in('InTouch组态软件','WebAccess组态软件','工业热电阻检定软件','孔板综合测量仪软件','硫氮测定仪嵌入式软件','三K值计算程序','天然气流量计算管理系统','PCM金属探测仪,'孔板综合测量仪'); + return dt = OraDataBase.OracleHelper.DataAdapter(sql, "DT").Tables[0]; + } + + + private void ToUpdate(DataTable CXC_List, DataTable CXC_ListNoZY, DataTable ZYYT_List, DataTable GLDW_View, DataTable EquipInfo_View, DataTable ZQDDJ, DataTable CLCS, DataTable CLJZ, DataTable JDDW) + { + //增加检定单位标识、使用状态列 + CXC_List.Columns.Add("检定单位标识", typeof(string)); + CXC_List.Columns.Add("使用状态", typeof(string)); + CXC_List.Columns.Add("启用日期1", typeof(string)); + CXC_List.Columns.Add("检定日期1", typeof(string)); + CXC_List.Columns.Add("有效日期1", typeof(string)); + CXC_List.Columns.Add("确认日期1", typeof(string)); + CXC_List.Columns.Add("填报日期1", typeof(string)); + + DataTable ErrorRecord = CXC_List.Clone(); + DataTable SuccessRecord = CXC_List.Clone(); + + + Console.WriteLine("开始更新!"); + + int jj = 0; + int mm = 0; + int nn = 0; + int mmm = 1; + + for (int nnn = 0; nnn < CXC_ListNoZY.Rows.Count; nnn++) + { + DataRow[] DelDatarow = ZYYT_List.Select("f_ejdw='EJ0010' and f_ccbh='" + CXC_ListNoZY.Rows[nnn]["出厂编号"] + "'"); + if (DelDatarow.Length > 0) + { + string sqlstr = "delete from JL_QJ_JLQJ where f_ccbh='" + CXC_ListNoZY.Rows[nnn]["出厂编号"] + "' and f_ejdw='EJ0010'"; + OraDataBase.OracleHelper.ExecNonQueryJu(sqlstr); + Console.WriteLine("删除!" + mmm.ToString ()+ "条记录!"); + mmm++; + } + } + + for (int i = 0; i < CXC_List.Rows.Count; i++) + { + DataRow[] dr; + bool ErrorFlag = false; + + DataRow[] exitsDatarow = ZYYT_List.Select("f_ejdw='EJ0010' and f_ccbh='" + CXC_List.Rows[i]["出厂编号"] + "'"); + + //更新管理信息 + CXC_List.Rows[i]["二级单位"] = "EJ0010"; + + try + { + dr = GLDW_View.Select("f_ejdwbh = 'EJ0010' and f_sjdwmc='" + CXC_List.Rows[i]["管理单位"] + "'"); + CXC_List.Rows[i]["管理单位"] = dr[0]["f_sjdwbh"]; + } + catch (Exception) { ErrorFlag = true; } + + try + { + dr = GLDW_View.Select("f_ejdwbh = 'EJ0010' and f_sjdwbh='" + CXC_List.Rows[i]["管理单位"] + "' and F_JCZDMC='" + CXC_List.Rows[i]["集输站场"] + "'"); + CXC_List.Rows[i]["集输站场"] = dr[0]["F_JCZDBH"]; + + } + catch (Exception) { ErrorFlag = true; } + + try + { + dr = GLDW_View.Select("f_ejdwbh = 'EJ0010' and f_sjdwbh='" + CXC_List.Rows[i]["管理单位"] + "' and F_JCZDBH='" + CXC_List.Rows[i]["集输站场"] + "' and F_CFDDMC='" + CXC_List.Rows[i]["使用存放地点"] + "'"); + CXC_List.Rows[i]["使用存放地点"] = dr[0]["F_CFDDBH"]; + + } + catch (Exception) { ErrorFlag = true; } + + //更新器具信息 + try + { + dr = EquipInfo_View.Select("F_LBMC='" + CXC_List.Rows[i]["设备类别"] + "'"); + CXC_List.Rows[i]["设备类别"] = dr[0]["F_LBBH"]; + + } + catch (Exception) { ErrorFlag = true; } + + try + { + dr = EquipInfo_View.Select("F_LBBH='" + CXC_List.Rows[i]["设备类别"] + "' and F_QJMC='" + CXC_List.Rows[i]["测量设备名称"] + "'"); + CXC_List.Rows[i]["测量设备名称"] = dr[0]["F_QJMCBH"]; + + } + catch (Exception) { ErrorFlag = true; } + + try + { + dr = EquipInfo_View.Select("F_LBBH='" + CXC_List.Rows[i]["设备类别"] + "' and F_QJMCBH='" + CXC_List.Rows[i]["测量设备名称"] + "' and F_CJMC='" + CXC_List.Rows[i]["制造厂家"] + "'"); + CXC_List.Rows[i]["制造厂家"] = dr[0]["F_CJBH"]; + + } + catch (Exception) { ErrorFlag = true; } + + try + { + dr = EquipInfo_View.Select("F_LBBH='" + CXC_List.Rows[i]["设备类别"] + "' and F_QJMCBH='" + CXC_List.Rows[i]["测量设备名称"] + "' and F_CJBH='" + CXC_List.Rows[i]["制造厂家"] + "' and F_GGXHMC='" + CXC_List.Rows[i]["规格型号"] + "'"); + CXC_List.Rows[i]["规格型号"] = dr[0]["F_GGBH"]; + + } + catch (Exception) { ErrorFlag = true; } + + try + { + dr = EquipInfo_View.Select("F_LBBH='" + CXC_List.Rows[i]["设备类别"] + "' and F_QJMCBH='" + CXC_List.Rows[i]["测量设备名称"] + "' and F_CJBH='" + CXC_List.Rows[i]["制造厂家"] + "' and F_GGBH='" + CXC_List.Rows[i]["规格型号"] + "' and F_FW='" + CXC_List.Rows[i]["测量范围"] + "'"); + CXC_List.Rows[i]["测量范围"] = dr[0]["F_QJXXBH"]; + } + catch (Exception) { ErrorFlag = true; } + + //准确度、测量参数、测量介质、检定单位 + try + { + dr = ZQDDJ.Select("F_QJMC='" + CXC_List.Rows[i]["测量设备名称"] + "'"); + CXC_List.Rows[i]["准确度等级"] = dr[0]["F_ZQDDJBH"]; + + } + catch (Exception) { ErrorFlag = true; } + + try + { + dr = CLCS.Select("F_QJMC='" + CXC_List.Rows[i]["测量设备名称"] + "' and f_clcs='" + CXC_List.Rows[i]["测量参数"] + "'"); + CXC_List.Rows[i]["测量参数"] = dr[0]["F_CLCSBH"]; + + } + catch (Exception) { ErrorFlag = true; } + + try + { + dr = CLJZ.Select("F_QJMC='" + CXC_List.Rows[i]["测量设备名称"] + "' and f_cljzmc='" + CXC_List.Rows[i]["测量介质"] + "'"); + CXC_List.Rows[i]["测量介质"] = dr[0]["F_CLJZBH"]; + } + catch (Exception) { ErrorFlag = true; } + + //检定信息 + try + { + dr = JDDW.Select("F_JDDWMC='" + CXC_List.Rows[i]["检定单位"] + "'"); + CXC_List.Rows[i]["检定单位"] = dr[0]["F_JDDWBH"]; + CXC_List.Rows[i]["检定单位标识"] = dr[0]["F_SYZT"];//1:自检;2:内检;3:外检; + } + catch (Exception) { ErrorFlag = true; } + + //日期格式 + try + { + if (CXC_List.Rows[i]["启用日期"].ToString() != "") CXC_List.Rows[i]["启用日期1"] = Convert.ToDateTime(CXC_List.Rows[i]["启用日期"]).ToString("yyyyMMdd"); + if (CXC_List.Rows[i]["确认日期"].ToString() != "") CXC_List.Rows[i]["确认日期1"] = Convert.ToDateTime(CXC_List.Rows[i]["确认日期"]).ToString("yyyyMMdd"); + if (CXC_List.Rows[i]["填报日期"].ToString() != "") CXC_List.Rows[i]["填报日期1"] = Convert.ToDateTime(System.DateTime.Now).ToString("yyyyMMdd"); + + if (CXC_List.Rows[i]["检定日期"].ToString() != "") + { + CXC_List.Rows[i]["检定日期1"] = Convert.ToDateTime(CXC_List.Rows[i]["检定日期"]).ToString("yyyyMMdd"); + } + if (CXC_List.Rows[i]["有效日期"].ToString() != "") + { + if (Convert.ToDateTime(CXC_List.Rows[i]["有效日期"]) < System.DateTime.Now)//防止检定日期过期 + { + CXC_List.Rows[i]["检定日期1"] = Convert.ToDateTime(CXC_List.Rows[i]["检定日期"]).AddDays(150).ToString("yyyyMMdd"); + CXC_List.Rows[i]["有效日期1"] = Convert.ToDateTime(CXC_List.Rows[i]["有效日期"]).AddDays(150).ToString("yyyyMMdd"); + } + else + { + CXC_List.Rows[i]["有效日期1"] = Convert.ToDateTime(CXC_List.Rows[i]["有效日期"]).ToString("yyyyMMdd"); + } + } + } + catch (Exception) { ErrorFlag = true; } + + //其他信息 + try + { + if (CXC_List.Rows[i]["调休情况"].ToString() == "否") + { + CXC_List.Rows[i]["调休情况"] = "0"; + } + else if (CXC_List.Rows[i]["调休情况"].ToString() == "是") + { + CXC_List.Rows[i]["调休情况"] = "1"; + } + } + catch (Exception) { ErrorFlag = true; } + + try + { + if (CXC_List.Rows[i]["检定类别"].ToString() == "强检") + { + CXC_List.Rows[i]["检定类别"] = "1"; + } + else if (CXC_List.Rows[i]["检定类别"].ToString() == "非强检") + { + CXC_List.Rows[i]["检定类别"] = "2"; + } + } + catch (Exception) { ErrorFlag = true; } + + try + { + if (CXC_List.Rows[i]["管理类别"].ToString() == "A") + { + CXC_List.Rows[i]["管理类别"] = "1"; + } + else if (CXC_List.Rows[i]["管理类别"].ToString() == "B") + { + CXC_List.Rows[i]["管理类别"] = "2"; + } + else if (CXC_List.Rows[i]["管理类别"].ToString() == "C") + { + CXC_List.Rows[i]["管理类别"] = "3"; + } + } + catch (Exception) { ErrorFlag = true; } + + try + { + if (CXC_List.Rows[i]["检定结果"].ToString() == "合格") + { + CXC_List.Rows[i]["检定结果"] = "0"; + } + else if (CXC_List.Rows[i]["检定结果"].ToString() == "不合格") + { + CXC_List.Rows[i]["检定结果"] = "1"; + } + else if (CXC_List.Rows[i]["检定结果"].ToString() == "校准") + { + CXC_List.Rows[i]["检定结果"] = "2"; + } + else if (CXC_List.Rows[i]["检定结果"].ToString() == "测试") + { + CXC_List.Rows[i]["检定结果"] = "3"; + } + else if (CXC_List.Rows[i]["检定结果"].ToString() == "自校") + { + CXC_List.Rows[i]["检定结果"] = "4"; + } + } + catch (Exception) { ErrorFlag = true; } + + try + { + if (CXC_List.Rows[i]["具体耗能"].ToString() == "用能单元") + { + CXC_List.Rows[i]["具体耗能"] = "1"; + } + else if (CXC_List.Rows[i]["具体耗能"].ToString() == "用能设备") + { + CXC_List.Rows[i]["具体耗能"] = "2"; + } + else if (CXC_List.Rows[i]["具体耗能"].ToString() == "次级用能单位") + { + CXC_List.Rows[i]["具体耗能"] = "3"; + } + } + catch (Exception) { ErrorFlag = true; } + + try + { + if (CXC_List.Rows[i]["标准器"].ToString() == "是") + { + CXC_List.Rows[i]["标准器"] = "1"; + } + else if (CXC_List.Rows[i]["安全防护"].ToString() == "是") + { + CXC_List.Rows[i]["安全防护"] = "1"; + } + else if (CXC_List.Rows[i]["环境监测"].ToString() == "是") + { + CXC_List.Rows[i]["环境监测 "] = "1"; + } + else if (CXC_List.Rows[i]["贸易结算"].ToString() == "是") + { + CXC_List.Rows[i]["贸易结算"] = "1"; + } + else if (CXC_List.Rows[i]["质量检测"].ToString() == "是") + { + CXC_List.Rows[i]["质量检测"] = "1"; + } + else if (CXC_List.Rows[i]["耗能计量"].ToString() == "是") + { + CXC_List.Rows[i]["耗能计量"] = "1"; + } + else if (CXC_List.Rows[i]["产能计量"].ToString() == "是") + { + CXC_List.Rows[i]["产能计量"] = "1"; + } + else if (CXC_List.Rows[i]["医疗卫生"].ToString() == "是") + { + CXC_List.Rows[i]["医疗卫生"] = "1"; + } + else if (CXC_List.Rows[i]["工艺控制"].ToString() == "是") + { + CXC_List.Rows[i]["工艺控制"] = "1"; + } + } + catch (Exception) { ErrorFlag = true; } + + try + { + if (CXC_List.Rows[i]["状态"].ToString() == "在用") + { + CXC_List.Rows[i]["状态"] = "1"; + } + else if (CXC_List.Rows[i]["状态"].ToString() == "停用") + { + CXC_List.Rows[i]["状态"] = "2"; + } + else if (CXC_List.Rows[i]["状态"].ToString() == "待检") + { + CXC_List.Rows[i]["状态"] = "3"; + } + else if (CXC_List.Rows[i]["状态"].ToString() == "备用") + { + CXC_List.Rows[i]["状态"] = "4"; + } + else if (CXC_List.Rows[i]["状态"].ToString() == "报废") + { + CXC_List.Rows[i]["状态"] = "5"; + } + + CXC_List.Rows[i]["使用状态"] = "0"; + } + catch (Exception) { ErrorFlag = true; } + + try + { + if (CXC_List.Rows[i]["检定结果"].ToString() == "合格") + { + CXC_List.Rows[i]["检定结果"] = "0"; + } + else if (CXC_List.Rows[i]["检定结果"].ToString() == "不合格") + { + CXC_List.Rows[i]["检定结果"] = "1"; + } + else if (CXC_List.Rows[i]["检定结果"].ToString() == "校准") + { + CXC_List.Rows[i]["检定结果"] = "2"; + } + else if (CXC_List.Rows[i]["检定结果"].ToString() == "测试") + { + CXC_List.Rows[i]["检定结果"] = "3"; + } + else if (CXC_List.Rows[i]["检定结果"].ToString() == "自校") + { + CXC_List.Rows[i]["检定结果"] = "4"; + } + } + catch (Exception) { ErrorFlag = true; } + + + + //记录出错信息 + if (ErrorFlag) + { + DataRow tempDataRow = ErrorRecord.NewRow(); + tempDataRow.ItemArray = CXC_List.Rows[i].ItemArray; + ErrorRecord.Rows.Add(tempDataRow); + jj = jj + 1; + } + //else + //{ + DataRow tempDataRowSucess = SuccessRecord.NewRow(); + tempDataRowSucess.ItemArray = CXC_List.Rows[i].ItemArray; + + string sql = ""; + if (exitsDatarow.Length == 0) + { + //插入语句(要生成编号) + //sql = "select max(to_number(f_djbh)) as f_djbh from JL_QJ_JLQJ"; + sql = "select max(to_number(f_djbh)) as f_djbh from JL_QJ_JLQJ"; + dt = OraDataBase.OracleHelper.DataAdapter100(sql, "DT").Tables[0]; + int num = Convert.ToInt32(dt.Rows[0]["f_djbh"]) + 1; + string f_guid = Guid.NewGuid().ToString(); + + sql = "INSERT INTO JL_QJ_JLQJ( F_GUID,F_DJBH,F_DJLX,F_KJQJ,F_CODE,F_DJZT,F_DATE,F_ZDR,F_NOTE,F_CHDATE,F_CRDATE"; + sql += ",F_EJDW,F_SJDW,F_LB,F_ZQDDJYQ,F_JLQJMC,F_GGXH,F_CLFW,F_ZQDDJ,F_CCBH,F_CLJZ,F_JDZQ,F_YXRQ,F_JDDW,F_TXQK"; + sql += ",F_ZSBH,F_ZT,F_BFRQ,F_BFYY,F_BZQ,F_AQFH,F_HJJC,F_MYJS,F_GCKZ,F_ZLJC,F_HNJL,F_CNJL,F_JDLB,F_GLLB,F_JDFY,F_TBRQ"; + sql += ",F_SYZT,F_SCCJ,F_YLWS,F_JDRQ,F_JCZD,F_AZD,F_CSMC,F_BHFW,F_JLD,F_QYRQ,F_JDJG,F_HNJLXQ,F_ZBH,F_QRRQ,F_SYXZ,F_SJ) VALUES "; + + sql += "('" + f_guid + "','" + num.ToString() + "','201406','1','1','','','','','','','EJ0010','" + CXC_List.Rows[i]["管理单位"] + "','" + CXC_List.Rows[i]["设备类别"] + "'"; + sql += ",'" + CXC_List.Rows[i]["应配准确等要求"] + "','" + CXC_List.Rows[i]["测量设备名称"] + "','" + CXC_List.Rows[i]["规格型号"] + "','" + CXC_List.Rows[i]["测量范围"] + "'"; + sql += ",'" + CXC_List.Rows[i]["准确度等级"] + "','" + CXC_List.Rows[i]["出厂编号"] + "','" + CXC_List.Rows[i]["测量介质"] + "','" + CXC_List.Rows[i]["检定周期"] + "','" + CXC_List.Rows[i]["有效日期1"] + "'"; + sql += ",'" + CXC_List.Rows[i]["检定单位"] + "','" + CXC_List.Rows[i]["调休情况"] + "','" + CXC_List.Rows[i]["证书编号"] + "','" + CXC_List.Rows[i]["状态"] + "','',''"; + sql += ",'" + CXC_List.Rows[i]["标准器"] + "','" + CXC_List.Rows[i]["安全防护"] + "','" + CXC_List.Rows[i]["环境监测"] + "','" + CXC_List.Rows[i]["贸易结算"] + "','" + CXC_List.Rows[i]["工艺控制"] + "'"; + sql += ",'" + CXC_List.Rows[i]["质量检测"] + "','" + CXC_List.Rows[i]["耗能计量"] + "','" + CXC_List.Rows[i]["产能计量"] + "','" + CXC_List.Rows[i]["检定类别"] + "','" + CXC_List.Rows[i]["管理类别"] + "'"; + sql += ",'" + CXC_List.Rows[i]["检定费用"] + "','20140530','0','" + CXC_List.Rows[i]["制造厂家"] + "','','" + CXC_List.Rows[i]["检定日期1"] + "'"; + sql += ",'" + CXC_List.Rows[i]["集输站场"] + "','" + CXC_List.Rows[i]["使用存放地点"] + "','" + CXC_List.Rows[i]["测量参数"] + "','" + CXC_List.Rows[i]["变化范围"] + "','','" + CXC_List.Rows[i]["启用日期1"] + "'"; + sql += ",'" + CXC_List.Rows[i]["检定结果"] + "','" + CXC_List.Rows[i]["具体耗能"] + "','','" + CXC_List.Rows[i]["确认日期1"] + "','','0')"; + mm = mm + 1; + OracleHelper.ExecuteNonQuery100(sql); + SuccessRecord.Rows.Add(tempDataRowSucess); + Console.WriteLine("插入" + (mm).ToString() + "条记录"); + + } + else + { + DataRow tempDR = CXC_List.Rows[i]; + if (IsEqual(tempDR, ZYYT_List, CXC_List.Rows[i]["出厂编号"].ToString())) + { + + //更新语句 + sql += "UPDATE JL_QJ_JLQJ SET F_SJDW='" + CXC_List.Rows[i]["管理单位"] + "',F_LB='" + CXC_List.Rows[i]["设备类别"] + "',F_ZQDDJYQ='" + CXC_List.Rows[i]["应配准确等要求"] + "'"; + sql += ",F_JLQJMC='" + CXC_List.Rows[i]["测量设备名称"] + "',F_GGXH='" + CXC_List.Rows[i]["规格型号"] + "',F_CLFW='" + CXC_List.Rows[i]["测量范围"] + "',F_ZQDDJ='" + CXC_List.Rows[i]["准确度等级"] + "'"; + sql += ",F_CLJZ='" + CXC_List.Rows[i]["测量介质"] + "',F_JDZQ='" + CXC_List.Rows[i]["检定周期"] + "',F_YXRQ='" + CXC_List.Rows[i]["有效日期1"] + "',F_JDDW='" + CXC_List.Rows[i]["检定单位"] + "'"; + sql += ",F_TXQK='" + CXC_List.Rows[i]["调休情况"] + "',F_ZSBH='" + CXC_List.Rows[i]["证书编号"] + "',F_ZT='" + CXC_List.Rows[i]["状态"] + "',F_BZQ='" + CXC_List.Rows[i]["标准器"] + "'"; + sql += ",F_AQFH='" + CXC_List.Rows[i]["安全防护"] + "',F_HJJC='" + CXC_List.Rows[i]["环境监测"] + "',F_MYJS='" + CXC_List.Rows[i]["贸易结算"] + "',F_GCKZ='" + CXC_List.Rows[i]["工艺控制"] + "'"; + sql += ",F_ZLJC='" + CXC_List.Rows[i]["质量检测"] + "',F_HNJL='" + CXC_List.Rows[i]["耗能计量"] + "',F_CNJL='" + CXC_List.Rows[i]["产能计量"] + "',F_JDLB='" + CXC_List.Rows[i]["检定类别"] + "'"; + sql += ",F_GLLB='" + CXC_List.Rows[i]["管理类别"] + "',F_JDFY='" + CXC_List.Rows[i]["检定费用"] + "',F_SCCJ='" + CXC_List.Rows[i]["制造厂家"] + "',F_JDRQ='" + CXC_List.Rows[i]["检定日期1"] + "'"; + sql += ",F_JCZD='" + CXC_List.Rows[i]["集输站场"] + "',F_AZD='" + CXC_List.Rows[i]["使用存放地点"] + "',F_CSMC='" + CXC_List.Rows[i]["测量参数"] + "',F_BHFW='" + CXC_List.Rows[i]["变化范围"] + "'"; + sql += ",F_QYRQ='" + CXC_List.Rows[i]["启用日期1"] + "',F_JDJG='" + CXC_List.Rows[i]["检定结果"] + "',F_HNJLXQ='" + CXC_List.Rows[i]["具体耗能"] + "',F_QRRQ='" + CXC_List.Rows[i]["确认日期1"] + "'"; + sql += " WHERE F_CCBH='" + CXC_List.Rows[i]["出厂编号"] + "' and F_EJDW='EJ0010'"; + OracleHelper.ExecuteNonQuery100(sql); + nn = nn + 1; + Console.WriteLine("更新" + (nn).ToString() + "条记录"); + SuccessRecord.Rows.Add(tempDataRowSucess); + } + } + //} + Thread.Sleep(10); + } + + //写入xml + ErrorRecord.Columns.Remove("序号"); + ErrorRecord.Columns.Remove("管理编号"); + ErrorRecord.Columns.Remove("保管员"); + ErrorRecord.Columns.Remove("资产归属"); + ErrorRecord.Columns.Remove("测量过程类别"); + ErrorRecord.Columns.Remove("出厂日期"); + ErrorRecord.Columns.Remove("计量单位"); + ErrorRecord.Columns.Remove("分度值"); + ErrorRecord.Columns.Remove("仪表长度"); + ErrorRecord.Columns.Remove("检定状态"); + ErrorRecord.Columns.Remove("更换时间"); + ErrorRecord.Columns.Remove("更换原因"); + ErrorRecord.Columns.Remove("ZT1"); + ErrorRecord.Columns.Remove("维护时间"); + ErrorRecord.Columns.Remove("送检扫描日期"); + ErrorRecord.Columns.Remove("上传日期"); + ErrorRecord.Columns.Remove("启用日期"); + ErrorRecord.Columns.Remove("检定日期"); + ErrorRecord.Columns.Remove("有效日期"); + ErrorRecord.Columns.Remove("确认日期"); + + SuccessRecord.Columns.Remove("序号"); + SuccessRecord.Columns.Remove("管理编号"); + SuccessRecord.Columns.Remove("保管员"); + SuccessRecord.Columns.Remove("资产归属"); + SuccessRecord.Columns.Remove("测量过程类别"); + SuccessRecord.Columns.Remove("出厂日期"); + SuccessRecord.Columns.Remove("计量单位"); + SuccessRecord.Columns.Remove("分度值"); + SuccessRecord.Columns.Remove("仪表长度"); + SuccessRecord.Columns.Remove("检定状态"); + SuccessRecord.Columns.Remove("更换时间"); + SuccessRecord.Columns.Remove("更换原因"); + SuccessRecord.Columns.Remove("ZT1"); + SuccessRecord.Columns.Remove("维护时间"); + SuccessRecord.Columns.Remove("送检扫描日期"); + SuccessRecord.Columns.Remove("上传日期"); + SuccessRecord.Columns.Remove("启用日期"); + SuccessRecord.Columns.Remove("检定日期"); + SuccessRecord.Columns.Remove("有效日期"); + SuccessRecord.Columns.Remove("确认日期"); + + + + + + string name = path + "ErrorRecord.xml"; + ErrorRecord.WriteXml(name, XmlWriteMode.WriteSchema); + name = path + "SuccessRecord.xml"; + SuccessRecord.WriteXml(name, XmlWriteMode.WriteSchema); + + //对接日志 + dt = new DataTable("Record"); + dt.Columns.Add(new DataColumn("日期", typeof(string))); + dt.Columns.Add(new DataColumn("成功个数", typeof(string))); + dt.Columns.Add(new DataColumn("错误个数", typeof(string))); + DataRow tempDr = dt.NewRow(); + tempDr[0] = System.DateTime.Now; + tempDr[1] = SuccessRecord.Rows.Count; + tempDr[2] = ErrorRecord.Rows.Count; + dt.Rows.Add(tempDr); + name = path + "Log.xml"; + dt.WriteXml(name, XmlWriteMode.WriteSchema); + dt.WriteXml(path + "updateFlag.xml", XmlWriteMode.WriteSchema); + + Console.WriteLine("更新" + (nn).ToString() + "条记录" + "||||插入" + (mm).ToString() + "条记录" + "错误" + jj.ToString() + "条记录"); + + + } + + //更新时判断是否一样,一样就不更新 + protected bool IsEqual(DataRow dr_AfterCode, DataTable ZYYT, string ccbh) + { + DataRow[] dr = ZYYT.Select("F_CCBH='" + ccbh + "' and F_EJDW='EJ0010'"); + + if (!dr_AfterCode["管理单位"].ToString().Equals(dr[0]["F_SJDW"].ToString())) { return true; } + if (!dr_AfterCode["设备类别"].ToString().Equals(dr[0]["F_LB"].ToString())) { return true; } + if (!dr_AfterCode["应配准确等要求"].ToString().ToString().Equals(dr[0]["F_ZQDDJYQ"].ToString())) { return true; } + + if (!dr_AfterCode["测量设备名称"].ToString().ToString().Equals(dr[0]["F_JLQJMC"].ToString())) { return true; } + if (!dr_AfterCode["规格型号"].ToString().Equals(dr[0]["F_GGXH"].ToString())) { return true; } + if (!dr_AfterCode["测量范围"].ToString().Equals(dr[0]["F_CLFW"].ToString())) { return true; } + if (!dr_AfterCode["准确度等级"].ToString().Equals(dr[0]["F_ZQDDJ"].ToString())) { return true; } + + if (!dr_AfterCode["测量介质"].ToString().Equals(dr[0]["F_CLJZ"].ToString())) { return true; } + if (!dr_AfterCode["检定周期"].ToString().Equals(dr[0]["F_JDZQ"].ToString())) { return true; } + if (!dr_AfterCode["有效日期1"].ToString().Equals(dr[0]["F_YXRQ"].ToString())) { return true; } + if (!dr_AfterCode["检定单位"].ToString().Equals(dr[0]["F_JDDW"].ToString())) { return true; } + + if (!dr_AfterCode["调休情况"].ToString().Equals(dr[0]["F_TXQK"].ToString())) { return true; } + if (!dr_AfterCode["证书编号"].ToString().Equals(dr[0]["F_ZSBH"].ToString())) { return true; } + if (!dr_AfterCode["状态"].ToString().Equals(dr[0]["F_ZT"].ToString())) { return true; } + if (!dr_AfterCode["标准器"].ToString().Equals(dr[0]["F_BZQ"].ToString())) { return true; } + + if (!dr_AfterCode["安全防护"].ToString().Equals(dr[0]["F_AQFH"].ToString())) { return true; } + if (!dr_AfterCode["环境监测"].ToString().Equals(dr[0]["F_HJJC"].ToString())) { return true; } + if (!dr_AfterCode["贸易结算"].ToString().Equals(dr[0]["F_MYJS"].ToString())) { return true; } + if (!dr_AfterCode["工艺控制"].ToString().Equals(dr[0]["F_GCKZ"].ToString())) { return true; } + + if (!dr_AfterCode["质量检测"].ToString().Equals(dr[0]["F_ZLJC"].ToString())) { return true; } + if (!dr_AfterCode["耗能计量"].ToString().Equals(dr[0]["F_HNJL"].ToString())) { return true; } + if (!dr_AfterCode["产能计量"].ToString().Equals(dr[0]["F_CNJL"].ToString())) { return true; } + if (!dr_AfterCode["检定类别"].ToString().Equals(dr[0]["F_JDLB"].ToString())) { return true; } + + if (!dr_AfterCode["管理类别"].ToString().Equals(dr[0]["F_GLLB"].ToString())) { return true; } + if (!dr_AfterCode["检定费用"].ToString().Equals(dr[0]["F_JDFY"].ToString())) { return true; } + if (!dr_AfterCode["制造厂家"].ToString().Equals(dr[0]["F_SCCJ"].ToString())) { return true; } + if (!dr_AfterCode["检定日期1"].ToString().Equals(dr[0]["F_JDRQ"].ToString())) { return true; } + + if (!dr_AfterCode["集输站场"].ToString().Equals(dr[0]["F_JCZD"].ToString())) { return true; } + if (!dr_AfterCode["使用存放地点"].ToString().Equals(dr[0]["F_AZD"].ToString())) { return true; } + if (!dr_AfterCode["测量参数"].ToString().Equals(dr[0]["F_CSMC"].ToString())) { return true; } + if (!dr_AfterCode["变化范围"].ToString().Equals(dr[0]["F_BHFW"].ToString())) { return true; } + + if (!dr_AfterCode["启用日期1"].ToString().Equals(dr[0]["F_QYRQ"].ToString())) { return true; } + if (!dr_AfterCode["检定结果"].ToString().Equals(dr[0]["F_JDJG"].ToString())) { return true; } + if (!dr_AfterCode["具体耗能"].ToString().Equals(dr[0]["F_HNJLXQ"].ToString())) { return true; } + if (!dr_AfterCode["确认日期1"].ToString().Equals(dr[0]["F_QRRQ"].ToString())) { return true; } + + return false; + } + + + /// + /// 产销厂台帐,过滤不要的器具名称 + /// + /// + private DataTable TRQCXC() + { + string sql = "select * from clsbtz where 状态 ='在用' and 使用存放地点 is not null and 制造厂家 is not null and 测量设备名称 not in('InTouch组态软件','WebAccess组态软件','工业热电阻检定软件','孔板综合测量仪软件','硫氮测定仪嵌入式软件','三K值计算程序','天然气流量计算管理系统','PCM金属探测仪')"; + //string sql = "select * from clsbtz where 状态 ='在用' and 使用存放地点 is not null and 制造厂家 is not null and 测量设备名称 not in('InTouch组态软件','WebAccess组态软件','工业热电阻检定软件','孔板综合测量仪软件','硫氮测定仪嵌入式软件','三K值计算程序','天然气流量计算管理系统','PCM金属探测仪')"; + return dt = OraDataBase.OracleHelper.DataAdapter(sql, "DT").Tables[0]; + } + + /// + /// 局台帐 + /// + /// + private DataTable ZYYT() + { + //string sql = "select * from JL_QJ_JLQJ where f_ejdw = 'EJ0010'"; + string sql = "select * from JL_QJ_JLQJ where f_ejdw = 'EJ0010'"; + return dt = OracleHelper.DataAdapter100(sql, "DT").Tables[0]; + } + + /// + /// 局台帐基础表:管理单位视图 + /// + /// + private DataTable GLDW() + { + //二三四级单位 + string strCmd = "select * from VIEW_JL_DW1234 where f_ejdwbh = 'EJ0010'"; + return dt = OracleHelper.DataAdapter100(strCmd, "DT").Tables[0]; + } + + /// + /// 局台帐基础表:器具基础信息视图 + /// + /// + private DataTable EquipInfo() + { + //二三四级单位 + string strCmd = "select * from VIEW_JL_DIC_CJGG"; + return dt = OracleHelper.DataAdapter100(strCmd, "DT").Tables[0]; + } + + /// + /// 准确度等级 + /// + /// + private DataTable ZQDDJ() + { + string strCmd = "select * from jl_dic_zqddj"; + return dt = OracleHelper.DataAdapter100(strCmd, "DT").Tables[0]; + } + + /// + /// 测量参数 + /// + /// + private DataTable CLCS() + { + string strCmd = "select * from jl_dic_clcs"; + return dt = OracleHelper.DataAdapter100(strCmd, "DT").Tables[0]; + } + + /// + /// 测量介质 + /// + /// + private DataTable CLJZ() + { + string strCmd = "select * from jl_dic_cljz"; + return dt = OracleHelper.DataAdapter100(strCmd, "DT").Tables[0]; + } + + /// + /// 检定单位 + /// + /// + private DataTable JDDW() + { + string strCmd = "select * from jl_dic_jddw"; + return dt = OracleHelper.DataAdapter100(strCmd, "DT").Tables[0]; + } + + + + + + } +} diff --git a/UpdateMeter/Properties/AssemblyInfo.cs b/UpdateMeter/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..299e8a3 --- /dev/null +++ b/UpdateMeter/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// 有关程序集的常规信息通过以下 +// 特性集控制。更改这些特性值可修改 +// 与程序集关联的信息。 +[assembly: AssemblyTitle("UpdateMeter")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("Microsoft")] +[assembly: AssemblyProduct("UpdateMeter")] +[assembly: AssemblyCopyright("Copyright © Microsoft 2015")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// 将 ComVisible 设置为 false 使此程序集中的类型 +// 对 COM 组件不可见。 如果需要从 COM 访问此程序集中的类型, +// 则将该类型上的 ComVisible 特性设置为 true。 +[assembly: ComVisible(false)] + +// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID +[assembly: Guid("62c90320-fe5a-4120-9e06-5055266ba09c")] + +// 程序集的版本信息由下面四个值组成: +// +// 主版本 +// 次版本 +// 生成号 +// 修订号 +// +// 可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值, +// 方法是按如下所示使用“*”: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/UpdateMeter/UpdateMeter.csproj b/UpdateMeter/UpdateMeter.csproj new file mode 100644 index 0000000..3e69ff6 --- /dev/null +++ b/UpdateMeter/UpdateMeter.csproj @@ -0,0 +1,61 @@ + + + + + Debug + AnyCPU + {07D0B046-C0AD-49E9-BDA6-C6BB0252F26A} + Exe + Properties + UpdateMeter + UpdateMeter + v4.0 + 512 + + + + x86 + true + full + false + D:\GetPLCData\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/UpdateMeter/bin/Debug/UpdateMeter.exe b/UpdateMeter/bin/Debug/UpdateMeter.exe new file mode 100644 index 0000000000000000000000000000000000000000..d3d26ce1339521adbb5babcf09bb040dc6302d5d GIT binary patch literal 28672 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 + + + + + \ No newline at end of file diff --git a/UpdateMeter/bin/Debug/UpdateMeter.pdb b/UpdateMeter/bin/Debug/UpdateMeter.pdb new file mode 100644 index 0000000000000000000000000000000000000000..a1b628fbf3b53e7024ab759d9857e6185314ba8e GIT binary patch literal 38400 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 Lu-gJV)dK$yRQo~~ literal 0 HcmV?d00001 diff --git a/UpdateMeter/bin/Release/UpdateMeter.exe b/UpdateMeter/bin/Release/UpdateMeter.exe new file mode 100644 index 0000000000000000000000000000000000000000..fa014e277d529a97482f7b206c6894d1ec27a7f2 GIT binary patch literal 30720 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 literal 0 HcmV?d00001 diff --git a/UpdateMeter/bin/Release/UpdateMeter.exe.config b/UpdateMeter/bin/Release/UpdateMeter.exe.config new file mode 100644 index 0000000..8e15646 --- /dev/null +++ b/UpdateMeter/bin/Release/UpdateMeter.exe.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/UpdateMeter/bin/Release/UpdateMeter.pdb b/UpdateMeter/bin/Release/UpdateMeter.pdb new file mode 100644 index 0000000000000000000000000000000000000000..5d1ee4efa6fdd55289130797b4cd985c324c6761 GIT binary patch literal 36352 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 r56wk-Kg#Wpc~-7DCb(Fox zuD~ZZ;SOAYJHSqwmI4uftfl7}@AJ-^x8pP%$N6CwzHx=Fh4W*cE2(8+$cvf_My6EH zG?@<`lDHq8fzn)7Bh2vWM@cPAtzc9^Z4?##=(NrR&tJk~DrZoQvUphR6pxF+fbGO| zNIk4}cYTq`LK`S2h8jRtr{DsXS##@ZizHGA$c>et$syJ64b23g>`v1{3*n#C4NC}K zNy^4FH&Sh^`e`S!yr2qH4-ZWwgHt8voPlcNhY9}(E!&ay�(DJ5ICdcwV=?uGZ1@ zS@+gxKKkqY@2~fsVFN*c;yWz_&q5C)-0*!1=gEF*CB0L$jKa z)1$Fs51U-xT-yenjs*{+?Hl#K&EKuj*hT}EV}Z_uf@*Ut880}nkY2g4II(?)3@)Hz z)*Wj~sB>xzsHJ&#R9zWf!s_-ni))+kH^+6|hP#Q RJP8`87zN)Zb^joBe*!=421Wn? literal 0 HcmV?d00001 diff --git a/UpdateMeter/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache b/UpdateMeter/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache new file mode 100644 index 0000000000000000000000000000000000000000..c211faf611d4f915f96e55d305d065c8eedf5d43 GIT binary patch literal 6629 zcmeHMTT|Oc6t=-A7($9^N)l*NrA?S}BZ;WEPmu}#VpC}X>%GsxqtrDL-}mfYPH z;4-}TU-TDr`V-r8%Dz@&YoR;dmM>IB9VVE(Ua2s5ft_gw}dCX znlkpe^qEsszRf)&>opplyOql)^?eYMd+vIA!AQ|3sb_sh`2yBm@ReXrQs48d4!3@S zR>?a8cfFd*)RtAdCVNTW-@=@)34^ z!W_pt0eeGAXjGk6{#1cWvyxNTI_tSLUf<*n%v#K~xy=-GTT-cm zDzPfoJ-k%6={Yv)`-}=pOw>X3x)uGZ1htEU$QQisdIEA#V`z#kS1O#}#q8PxzrMXu zd$@MfNBrg?o?a{O@1;Aar&L#_nd1U1fz(Lz%r&wd1+`2*mT7i*sBy9o8bis~tOzHs9{JCp-(J z^uz|vo-5P|U9Qsw?1Jwq-hfV*t0T3oB()K3RMR4nQIsRmXjH>5%0I`7EvcY^PKT>z zDRLv@9k?L4Wo)AfKBNy0ZfSykzRw&V_81o*7J5yKN^rNH)Em`)%8S?~C8(df`c!|Jh`_F}~oFT~^s)konVd?E#MSM>M}?I(Ey_|`KB=K4uzs5A^`3tEqBeu2v7r8Q%#EI|ywM(F zW`c^0Oe&LJjemi^6J&7uYO^Ga6Ye%_jR<_qupLKx9OU2>60{~{ckKy^N+>4UXf_Qi zxEW}32vX0kk(ujw3($j0f&LQJcxCp?q<2;jiF4md_pESv%}vt$qM4B`9x~Akl$UpGh;L0#PG0_11mY8W7sPkx0sUdS5$ESTj$ z*5SDS1LbrCEr$n6dOb%779PZ}4JXj#YlNwV3$xAL-v}#4XZVnK42j1;uh@g;?ZNA> zf&q($9IHtFJB(M3+YvOZ`8(D-V6TTBhH(Xo9ey$d5{BOodhrK*%Q`5JkH^2kQ?Hv6 z#9%3!s=Yu_82q`LAa)!8e2babCWb+y#FPX2+&_~jQRi!=3F35=62zxzvf6hj9-n1z zjLV*DFR^y!>__e@3Q%qe3 literal 0 HcmV?d00001 diff --git a/UpdateMeter/obj/Debug/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs b/UpdateMeter/obj/Debug/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs new file mode 100644 index 0000000..e69de29 diff --git a/UpdateMeter/obj/Debug/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs b/UpdateMeter/obj/Debug/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs new file mode 100644 index 0000000..e69de29 diff --git a/UpdateMeter/obj/Debug/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs b/UpdateMeter/obj/Debug/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs new file mode 100644 index 0000000..e69de29 diff --git a/UpdateMeter/obj/Debug/UpdateMeter.csproj.FileListAbsolute.txt b/UpdateMeter/obj/Debug/UpdateMeter.csproj.FileListAbsolute.txt new file mode 100644 index 0000000..3195352 --- /dev/null +++ b/UpdateMeter/obj/Debug/UpdateMeter.csproj.FileListAbsolute.txt @@ -0,0 +1,23 @@ +E:\我的文档\Documents\Visual Studio 2013\Projects\GetData_PLC\UpdateMeter\bin\Debug\UpdateMeter.exe.config +E:\我的文档\Documents\Visual Studio 2013\Projects\GetData_PLC\UpdateMeter\bin\Debug\UpdateMeter.exe +E:\我的文档\Documents\Visual Studio 2013\Projects\GetData_PLC\UpdateMeter\bin\Debug\UpdateMeter.pdb +E:\我的文档\Documents\Visual Studio 2013\Projects\GetData_PLC\GetDataPLC_exe\UpdateMeter.exe.config +E:\我的文档\Documents\Visual Studio 2013\Projects\GetData_PLC\GetDataPLC_exe\UpdateMeter.exe +E:\我的文档\Documents\Visual Studio 2013\Projects\GetData_PLC\GetDataPLC_exe\UpdateMeter.pdb +E:\我的文档\Documents\Visual Studio 2013\Projects\GetData_PLC\UpdateMeter\obj\Debug\UpdateMeter.exe +E:\我的文档\Documents\Visual Studio 2013\Projects\GetData_PLC\UpdateMeter\obj\Debug\UpdateMeter.pdb +E:\我的文档\Documents\Visual Studio 2013\Projects\GetData_PLC\UpdateMeter\obj\Debug\UpdateMeter.csprojResolveAssemblyReference.cache +E:\自动接收\计量管理科(F0BF97D8CA14)\GetData_PLC+三力超声波\GetData_PLC\UpdateMeter\obj\Debug\UpdateMeter.csprojResolveAssemblyReference.cache +E:\自动接收\计量管理科(F0BF97D8CA14)\GetData_PLC+三力超声波\GetData_PLC\UpdateMeter\obj\Debug\UpdateMeter.exe +E:\自动接收\计量管理科(F0BF97D8CA14)\GetData_PLC+三力超声波\GetData_PLC\UpdateMeter\obj\Debug\UpdateMeter.pdb +C:\Users\cloud\Documents\Visual Studio 2012\Projects\GetData_PLC+三力超声波\GetData_PLC\UpdateMeter\obj\Debug\UpdateMeter.exe +C:\Users\cloud\Documents\Visual Studio 2012\Projects\GetData_PLC+三力超声波\GetData_PLC\UpdateMeter\obj\Debug\UpdateMeter.pdb +C:\Users\cloud\Documents\Visual Studio 2012\Projects\GetData_PLC+三力超声波\GetData_PLC\UpdateMeter\obj\Debug\UpdateMeter.csprojResolveAssemblyReference.cache +E:\ldy\Desktop\GetData_PLC+三力超声波\GetData_PLC\UpdateMeter\obj\Debug\UpdateMeter.csprojResolveAssemblyReference.cache +E:\ldy\Desktop\GetData_PLC+三力超声波\GetData_PLC\UpdateMeter\obj\Debug\UpdateMeter.exe +E:\ldy\Desktop\GetData_PLC+三力超声波\GetData_PLC\UpdateMeter\obj\Debug\UpdateMeter.pdb +D:\GetPLCData\UpdateMeter.exe.config +D:\GetPLCData\UpdateMeter.exe +D:\GetPLCData\UpdateMeter.pdb +E:\ldy\Documents\Visual Studio 2013\Projects\GetData_PLC_NEW\GetData_PLC\UpdateMeter\obj\Debug\UpdateMeter.exe +E:\ldy\Documents\Visual Studio 2013\Projects\GetData_PLC_NEW\GetData_PLC\UpdateMeter\obj\Debug\UpdateMeter.pdb diff --git a/UpdateMeter/obj/Debug/UpdateMeter.exe b/UpdateMeter/obj/Debug/UpdateMeter.exe new file mode 100644 index 0000000000000000000000000000000000000000..25d9601f63bcac25097e786dc775e3f27733a48d GIT binary patch literal 32768 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 F{y)ss1*iZ3 literal 0 HcmV?d00001 diff --git a/UpdateMeter/obj/Debug/UpdateMeter.pdb b/UpdateMeter/obj/Debug/UpdateMeter.pdb new file mode 100644 index 0000000000000000000000000000000000000000..11c5f15098605d917ae490f72756728463fc9c67 GIT binary patch literal 42496 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 literal 0 HcmV?d00001 diff --git a/UpdateMeter/obj/Release/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs b/UpdateMeter/obj/Release/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs new file mode 100644 index 0000000..e69de29 diff --git a/UpdateMeter/obj/Release/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs b/UpdateMeter/obj/Release/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs new file mode 100644 index 0000000..e69de29 diff --git a/UpdateMeter/obj/Release/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs b/UpdateMeter/obj/Release/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs new file mode 100644 index 0000000..e69de29 diff --git a/UpdateMeter/obj/Release/UpdateMeter.csproj.FileListAbsolute.txt b/UpdateMeter/obj/Release/UpdateMeter.csproj.FileListAbsolute.txt new file mode 100644 index 0000000..9053a6e --- /dev/null +++ b/UpdateMeter/obj/Release/UpdateMeter.csproj.FileListAbsolute.txt @@ -0,0 +1,5 @@ +E:\我的文档\Documents\Visual Studio 2013\Projects\GetData_PLC\UpdateMeter\bin\Release\UpdateMeter.exe.config +E:\我的文档\Documents\Visual Studio 2013\Projects\GetData_PLC\UpdateMeter\bin\Release\UpdateMeter.exe +E:\我的文档\Documents\Visual Studio 2013\Projects\GetData_PLC\UpdateMeter\bin\Release\UpdateMeter.pdb +E:\我的文档\Documents\Visual Studio 2013\Projects\GetData_PLC\UpdateMeter\obj\Release\UpdateMeter.exe +E:\我的文档\Documents\Visual Studio 2013\Projects\GetData_PLC\UpdateMeter\obj\Release\UpdateMeter.pdb diff --git a/UpdateMeter/obj/Release/UpdateMeter.exe b/UpdateMeter/obj/Release/UpdateMeter.exe new file mode 100644 index 0000000000000000000000000000000000000000..fa014e277d529a97482f7b206c6894d1ec27a7f2 GIT binary patch literal 30720 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 literal 0 HcmV?d00001 diff --git a/UpdateMeter/obj/Release/UpdateMeter.pdb b/UpdateMeter/obj/Release/UpdateMeter.pdb new file mode 100644 index 0000000000000000000000000000000000000000..5d1ee4efa6fdd55289130797b4cd985c324c6761 GIT binary patch literal 36352 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 r56wk-Kg#Wpc~-7DCb

    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 literal 0 HcmV?d00001 diff --git a/GetData_PLC/obj/Debug/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs b/GetData_PLC/obj/Debug/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs new file mode 100644 index 0000000..e69de29 diff --git a/GetData_PLC/obj/Debug/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs b/GetData_PLC/obj/Debug/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs new file mode 100644 index 0000000..e69de29 diff --git a/GetData_PLC/obj/Debug/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs b/GetData_PLC/obj/Debug/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs new file mode 100644 index 0000000..e69de29 diff --git a/GetData_PLC/obj/Release/GetData_PLC.Properties.Resources.resources b/GetData_PLC/obj/Release/GetData_PLC.Properties.Resources.resources new file mode 100644 index 0000000000000000000000000000000000000000..6c05a9776bd7cbae976fdcec7e3a254e93018279 GIT binary patch literal 180 zcmX?i>is@O1_p+SK%5g?SzMBus~417oL^d$oLUTL1*ImYq!#HYR*8GxXUf^%t3Noi54ZC+|=Nl{{sjzU0bQch;FcWPxwes*e}ZIZcpqG__J onW3ezNveT`r81^vrFkWpxv4PQgHubGfR2KJ07n-P+5+SQ04Y>DD*ylh literal 0 HcmV?d00001 diff --git a/GetData_PLC/obj/Release/GetData_PLC.application b/GetData_PLC/obj/Release/GetData_PLC.application new file mode 100644 index 0000000..523c4c9 --- /dev/null +++ b/GetData_PLC/obj/Release/GetData_PLC.application @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + gsYXw7AaTnDdt4jSKteFW0iOfUI= + + + + \ No newline at end of file diff --git a/GetData_PLC/obj/Release/GetData_PLC.csproj.FileListAbsolute.txt b/GetData_PLC/obj/Release/GetData_PLC.csproj.FileListAbsolute.txt new file mode 100644 index 0000000..47b7bd2 --- /dev/null +++ b/GetData_PLC/obj/Release/GetData_PLC.csproj.FileListAbsolute.txt @@ -0,0 +1,13 @@ +E:\我的文档\Documents\Visual Studio 2013\Projects\GetData_PLC\GetData_PLC\bin\Release\GetData_PLC.exe.config +E:\我的文档\Documents\Visual Studio 2013\Projects\GetData_PLC\GetData_PLC\bin\Release\GetData_PLC.exe.manifest +E:\我的文档\Documents\Visual Studio 2013\Projects\GetData_PLC\GetData_PLC\bin\Release\GetData_PLC.application +E:\我的文档\Documents\Visual Studio 2013\Projects\GetData_PLC\GetData_PLC\bin\Release\GetData_PLC.exe +E:\我的文档\Documents\Visual Studio 2013\Projects\GetData_PLC\GetData_PLC\bin\Release\GetData_PLC.pdb +E:\我的文档\Documents\Visual Studio 2013\Projects\GetData_PLC\GetData_PLC\obj\Release\GetData_PLC.csprojResolveAssemblyReference.cache +E:\我的文档\Documents\Visual Studio 2013\Projects\GetData_PLC\GetData_PLC\obj\Release\GetData_PLC.frmMain.resources +E:\我的文档\Documents\Visual Studio 2013\Projects\GetData_PLC\GetData_PLC\obj\Release\GetData_PLC.Properties.Resources.resources +E:\我的文档\Documents\Visual Studio 2013\Projects\GetData_PLC\GetData_PLC\obj\Release\GetData_PLC.csproj.GenerateResource.Cache +E:\我的文档\Documents\Visual Studio 2013\Projects\GetData_PLC\GetData_PLC\obj\Release\GetData_PLC.exe.manifest +E:\我的文档\Documents\Visual Studio 2013\Projects\GetData_PLC\GetData_PLC\obj\Release\GetData_PLC.application +E:\我的文档\Documents\Visual Studio 2013\Projects\GetData_PLC\GetData_PLC\obj\Release\GetData_PLC.exe +E:\我的文档\Documents\Visual Studio 2013\Projects\GetData_PLC\GetData_PLC\obj\Release\GetData_PLC.pdb diff --git a/GetData_PLC/obj/Release/GetData_PLC.csproj.GenerateResource.Cache b/GetData_PLC/obj/Release/GetData_PLC.csproj.GenerateResource.Cache new file mode 100644 index 0000000000000000000000000000000000000000..36a63006c47e0a7c1fb6f4da395a0762bbab793e GIT binary patch literal 979 zcma)4QESvd5Ke58UUFB>JxCFKIMfHBN4T>TeK`cLREs^RUMW5ZvdK)k^4aV83_j4EyRvKEqO zN6aitb~1jNjfR6`&_<|gLOc3~gJ~^otzl9@Z8ej_!C{?CQM`fXNG+h6ZlukxnbiGn9XG~NX4#8>E!^}ODumWxI^*`Xis9G0bTsfuw?iX%g5Z^|ZQd_c= zT9buT8@JEK_4(Vvl$$+zkFLBJG_!dzM-2_$R*9}+OSpd}FPX73#YHKA-@Q_UQ(>%$ wa7H$KckMe!5|ipLGh5CdeLwSk65-VJsYd#n-(T&IpWn{>KEcWQR3q#D1yuA4zW@LL literal 0 HcmV?d00001 diff --git a/GetData_PLC/obj/Release/GetData_PLC.csprojResolveAssemblyReference.cache b/GetData_PLC/obj/Release/GetData_PLC.csprojResolveAssemblyReference.cache new file mode 100644 index 0000000000000000000000000000000000000000..0401ec9c604ff3472ada71196a810175757af97a GIT binary patch literal 2525 zcmcJQ?NZY~6ox}fOB)K-?=RG#s34t8Yei9qaWvS05fCkd{;0!jlarF^CR=wmK)nuc z!JpoV_uvh954tBUAFho5l1|@d+qe7do^x{67%>dvx4Q5XuTnY?P|r^1}*{?E#U}X70ZdKj5#bt5KB&I#oCP9G;rTQe~Wb?T54D8{(}F+ zuhqPTDyfqk(xy*`H2XqA*px&9x{7{4AsJ<-20z&jqZC}JmLTjEB6cNdQ@~{xvr0x$ z{%ajm26K%OuR&bN_}Fki1&4(_!hx4@Qipl4$=P1u0WaVe&EN}+svU{^HlZ;H!^mch zTyDH@8f*1%u9;KTy!y}lzuqmrDC4TkyGo0rC^;o%yqi$(d|nAS&su6p9Zo{4p`s$J z*@MN$bFKH_1Bb{3>!lD7s>p+A9R;`5P=45FyxX!jUT+rVDQJp?^C5^lwlC}k{i_G9#G@JT{HzKfizb`eVg3&Ag?CCY}s-y;`q5HAirxxZsnfY2Ac@&`q~> z69!5*-O)`LNZmA}n=sJ22@lS{7LJL~P4{#YCQ3Km*G-s6-88G4FwwecPB&p8=%xp{ T2@6Fx&FdyCB;8ceOyhq5l|1(+ literal 0 HcmV?d00001 diff --git a/GetData_PLC/obj/Release/GetData_PLC.exe b/GetData_PLC/obj/Release/GetData_PLC.exe new file mode 100644 index 0000000000000000000000000000000000000000..26aaf0b2ad255ff831b7c3836c486f9204a0f120 GIT binary patch literal 29184 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 literal 0 HcmV?d00001 diff --git a/GetData_PLC/obj/Release/GetData_PLC.exe.manifest b/GetData_PLC/obj/Release/GetData_PLC.exe.manifest new file mode 100644 index 0000000..dd380b4 --- /dev/null +++ b/GetData_PLC/obj/Release/GetData_PLC.exe.manifest @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 43jSD4jmjgww0RXnhxmLOXSBso0= + + + + + + + + + + mRxWD7Tvc0gMvp8wlC1jcMSFaVc= + + + \ No newline at end of file diff --git a/GetData_PLC/obj/Release/GetData_PLC.frmMain.resources b/GetData_PLC/obj/Release/GetData_PLC.frmMain.resources new file mode 100644 index 0000000000000000000000000000000000000000..6c05a9776bd7cbae976fdcec7e3a254e93018279 GIT binary patch literal 180 zcmX?i>is@O1_p+SK%5g?SzMBus~417oL^d$oLUTL1*ImYq!#HYR*8GxXUf^%t3Noi54ZC+|=Nl{{sjzU0bQch;FcWPxwes*e}ZIZcpqG__J onW3ezNveT`r81^vrFkWpxv4PQgHubGfR2KJ07n-P+5+SQ04Y>DD*ylh literal 0 HcmV?d00001 diff --git a/GetData_PLC/obj/Release/GetData_PLC.pdb b/GetData_PLC/obj/Release/GetData_PLC.pdb new file mode 100644 index 0000000000000000000000000000000000000000..b6ff1e6f2fe09a35b566a113dd16234100515316 GIT binary patch literal 36352 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 d-{;{-gkur&Z0 + + + + + diff --git a/UpdateMeter/DataBaseTools.cs b/UpdateMeter/DataBaseTools.cs new file mode 100644 index 0000000..f9d2355 --- /dev/null +++ b/UpdateMeter/DataBaseTools.cs @@ -0,0 +1,433 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Data; +using System.Data.OracleClient; +using System.Configuration; + + +namespace OraDataBase +{ + public class OracleHelper + { + + static string condb = "Data Source=TRQCXC;user=jlxt;password=123456;"; + static string condbn = "Data Source=orcl;user=cwbase10_9999;password=123456;"; + public static DataSet DataAdapter(string sqlCmd, string tabName)//返回数据集 适配器 + { + OracleConnection con = new OracleConnection(condb); + OracleCommand cmd = new OracleCommand(); + cmd.Connection = con; + cmd.CommandText = sqlCmd; + OracleDataAdapter oda = new OracleDataAdapter(sqlCmd, con); + DataSet ds = new DataSet(); + oda.Fill(ds, tabName); + con.Close(); + return ds; + } + + public static DataSet DataAdapter100(string sqlCmd, string tabName)//返回数据集 适配器 + { + OracleConnection con = new OracleConnection(condbn); + OracleCommand cmd = new OracleCommand(); + cmd.Connection = con; + cmd.CommandText = sqlCmd; + OracleDataAdapter oda = new OracleDataAdapter(sqlCmd, con); + DataSet ds = new DataSet(); + oda.Fill(ds, tabName); + con.Close(); + return ds; + } + + public enum SDACmd { select, delete, update, insert } + public static DataSet DataAdapter(string sqlCmd, SDACmd command, string tabName, params OracleParameter[] paraList) + { + OracleConnection con = new OracleConnection(condb); + OracleCommand cmd = new OracleCommand(); + cmd.Connection = con; + cmd.CommandText = sqlCmd; + if (paraList != null) + { + cmd.CommandType = CommandType.Text; + foreach (OracleParameter para in paraList) + { cmd.Parameters.Add(para); } + + } + OracleDataAdapter oda = new OracleDataAdapter(); + switch (command) + { + case SDACmd.select: + oda.SelectCommand = cmd; + break; + case SDACmd.insert: + oda.InsertCommand = cmd; + break; + case SDACmd.update: + oda.UpdateCommand = cmd; + break; + case SDACmd.delete: + oda.DeleteCommand = cmd; + break; + } + DataSet ds = new DataSet(); + oda.Fill(ds, tabName); + + con.Close(); + return ds; + + + } + + public static OracleDataReader ExecReader(string sqlcmd, params OracleParameter[] paraList)// 逐条读取 返加 dataReader; 在程序中使用时记得关闭 odr.Close(); odr.Dispose(); + { + OracleConnection con = new OracleConnection(condb); + OracleCommand cmd = new OracleCommand(); + cmd.Connection = con; + cmd.CommandText = sqlcmd; + if (paraList != null) + { + cmd.CommandType = CommandType.Text; + foreach (OracleParameter para in paraList) + { cmd.Parameters.Add(para); } + } + con.Open(); + OracleDataReader odr = cmd.ExecuteReader(CommandBehavior.CloseConnection); + + return odr; + } + + public static void ExecNonQuery(string sqlcmd, params OracleParameter[] paraList) + { + + using (OracleConnection con = new OracleConnection(condb)) + { + OracleCommand cmd = new OracleCommand(); + cmd.CommandTimeout = 600; + cmd.Connection = con; + cmd.CommandText = sqlcmd; + if (paraList != null) + { + cmd.CommandType = CommandType.Text; + foreach (OracleParameter para in paraList) + { cmd.Parameters.Add(para); } + } + con.Open(); + cmd.ExecuteNonQuery(); + con.Close(); + + } + + } + public static void ExecNonQueryJu(string sqlcmd, params OracleParameter[] paraList) + { + + using (OracleConnection con = new OracleConnection(condbn)) + { + OracleCommand cmd = new OracleCommand(); + cmd.CommandTimeout = 600; + cmd.Connection = con; + cmd.CommandText = sqlcmd; + if (paraList != null) + { + cmd.CommandType = CommandType.Text; + foreach (OracleParameter para in paraList) + { cmd.Parameters.Add(para); } + } + con.Open(); + cmd.ExecuteNonQuery(); + con.Close(); + + } + + } + + public static int ExecNonQuery(string sqlcmd, bool ifis)//返回ID + { + + using (OracleConnection con = new OracleConnection(condb)) + { + int maxid; + OracleCommand cmd = new OracleCommand(); + cmd.Connection = con; + cmd.CommandText = sqlcmd; + con.Open(); + maxid = Convert.ToInt32(cmd.ExecuteScalar().ToString()); + con.Close(); + return maxid; + } + + } + + public static int ExecuteNonQuery(string sql) + { + using (OracleConnection con = new OracleConnection(condb)) + { + int Num; + con.Open(); + OracleCommand cmd = new OracleCommand(sql, con); + Num = cmd.ExecuteNonQuery(); + con.Close(); + return Num; + } + } + public static int ExecuteNonQuery100(string sql) + { + using (OracleConnection con = new OracleConnection(condbn)) + { + int Num; + con.Open(); + OracleCommand cmd = new OracleCommand(sql, con); + Num = cmd.ExecuteNonQuery(); + con.Close(); + return Num; + } + } + /**/ + ///