添加项目文件。

This commit is contained in:
Administrator 2024-12-12 14:03:53 +08:00 committed by lxd
parent 211b35114c
commit 60d5ed7712
23 changed files with 5819 additions and 0 deletions

122
FlyDockTool.csproj Normal file
View File

@ -0,0 +1,122 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{038F3E03-92BE-44E8-B672-69312A8CF19F}</ProjectGuid>
<OutputType>WinExe</OutputType>
<RootNamespace>FlyDockTool</RootNamespace>
<AssemblyName>FlyDockTool</AssemblyName>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<Deterministic>true</Deterministic>
<TargetFrameworkProfile>
</TargetFrameworkProfile>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
<PropertyGroup>
<ApplicationIcon>logo.ico</ApplicationIcon>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
<DebugSymbols>true</DebugSymbols>
<OutputPath>bin\x86\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<DebugType>full</DebugType>
<PlatformTarget>x86</PlatformTarget>
<LangVersion>7.3</LangVersion>
<ErrorReport>prompt</ErrorReport>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
<OutputPath>bin\x86\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<Optimize>true</Optimize>
<DebugType>pdbonly</DebugType>
<PlatformTarget>x86</PlatformTarget>
<LangVersion>7.3</LangVersion>
<ErrorReport>prompt</ErrorReport>
</PropertyGroup>
<ItemGroup>
<Reference Include="Newtonsoft.Json, Version=13.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<HintPath>packages\Newtonsoft.Json.13.0.3\lib\net40\Newtonsoft.Json.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.configuration" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Deployment" />
<Reference Include="System.Drawing" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="apiOptions.cs" />
<Compile Include="baseMsgModel.cs" />
<Compile Include="commonOptions.cs" />
<Compile Include="deviceAnalysis.cs" />
<Compile Include="deviceInfo.cs" />
<Compile Include="examImageParaModel.cs" />
<Compile Include="examResultMode.cs" />
<Compile Include="mainForm.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="mainForm.Designer.cs">
<DependentUpon>mainForm.cs</DependentUpon>
</Compile>
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="serialPortOption.cs" />
<Compile Include="accessOptions.cs" />
<EmbeddedResource Include="mainForm.resx">
<DependentUpon>mainForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Properties\Resources.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
<SubType>Designer</SubType>
</EmbeddedResource>
<Compile Include="Properties\Resources.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Resources.resx</DependentUpon>
<DesignTime>True</DesignTime>
</Compile>
<None Include="app.config" />
<None Include="packages.config" />
<None Include="Properties\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
</None>
<Compile Include="Properties\Settings.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Settings.settings</DependentUpon>
<DesignTimeSharedInput>True</DesignTimeSharedInput>
</Compile>
</ItemGroup>
<ItemGroup>
<Content Include="logo.ico" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>

31
FlyDockTool.sln Normal file
View File

@ -0,0 +1,31 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.9.34723.18
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FlyDockTool", "FlyDockTool.csproj", "{038F3E03-92BE-44E8-B672-69312A8CF19F}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Debug|x86 = Debug|x86
Release|Any CPU = Release|Any CPU
Release|x86 = Release|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{038F3E03-92BE-44E8-B672-69312A8CF19F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{038F3E03-92BE-44E8-B672-69312A8CF19F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{038F3E03-92BE-44E8-B672-69312A8CF19F}.Debug|x86.ActiveCfg = Debug|x86
{038F3E03-92BE-44E8-B672-69312A8CF19F}.Debug|x86.Build.0 = Debug|x86
{038F3E03-92BE-44E8-B672-69312A8CF19F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{038F3E03-92BE-44E8-B672-69312A8CF19F}.Release|Any CPU.Build.0 = Release|Any CPU
{038F3E03-92BE-44E8-B672-69312A8CF19F}.Release|x86.ActiveCfg = Release|x86
{038F3E03-92BE-44E8-B672-69312A8CF19F}.Release|x86.Build.0 = Release|x86
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {4EBBBB63-17F4-466F-909A-A502565AFE4F}
EndGlobalSection
EndGlobal

21
Program.cs Normal file
View File

@ -0,0 +1,21 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
namespace FlyDockTool
{
internal static class Program
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new mainForm()); ;
}
}
}

View File

@ -0,0 +1,36 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// 有关程序集的一般信息由以下
// 控制。更改这些特性值可修改
// 与程序集关联的信息。
[assembly: AssemblyTitle("FlyDockTool")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("FlyDockTool")]
[assembly: AssemblyCopyright("Copyright © 2024")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// 将 ComVisible 设置为 false 会使此程序集中的类型
//对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型
//请将此类型的 ComVisible 特性设置为 true。
[assembly: ComVisible(false)]
// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID
[assembly: Guid("038f3e03-92be-44e8-b672-69312a8cf19f")]
// 程序集的版本信息由下列四个值组成:
//
// 主版本
// 次版本
// 生成号
// 修订号
//
//可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值
//通过使用 "*",如下所示:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]

63
Properties/Resources.Designer.cs generated Normal file
View File

@ -0,0 +1,63 @@
//------------------------------------------------------------------------------
// <auto-generated>
// 此代码由工具生成。
// 运行时版本:4.0.30319.42000
//
// 对此文件的更改可能会导致不正确的行为,并且如果
// 重新生成代码,这些更改将会丢失。
// </auto-generated>
//------------------------------------------------------------------------------
namespace FlyDockTool.Properties {
using System;
/// <summary>
/// 一个强类型的资源类,用于查找本地化的字符串等。
/// </summary>
// 此类是由 StronglyTypedResourceBuilder
// 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。
// 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen
// (以 /str 作为命令选项),或重新生成 VS 项目。
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.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() {
}
/// <summary>
/// 返回此类使用的缓存的 ResourceManager 实例。
/// </summary>
[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("FlyDockTool.Properties.Resources", typeof(Resources).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
/// <summary>
/// 重写当前线程的 CurrentUICulture 属性,对
/// 使用此强类型资源类的所有资源查找执行重写。
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Globalization.CultureInfo Culture {
get {
return resourceCulture;
}
set {
resourceCulture = value;
}
}
}
}

117
Properties/Resources.resx Normal file
View File

@ -0,0 +1,117 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

26
Properties/Settings.Designer.cs generated Normal file
View File

@ -0,0 +1,26 @@
//------------------------------------------------------------------------------
// <auto-generated>
// 此代码由工具生成。
// 运行时版本:4.0.30319.42000
//
// 对此文件的更改可能会导致不正确的行为,并且如果
// 重新生成代码,这些更改将会丢失。
// </auto-generated>
//------------------------------------------------------------------------------
namespace FlyDockTool.Properties {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.9.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;
}
}
}
}

View File

@ -0,0 +1,7 @@
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)">
<Profiles>
<Profile Name="(Default)" />
</Profiles>
<Settings />
</SettingsFile>

226
accessOptions.cs Normal file
View File

@ -0,0 +1,226 @@
using System.Data;
using System.IO;
using System.Windows.Forms;
using System.Drawing;
using System.Data.SqlClient;
using System;
using System.Text;
using System.Data.OleDb;
namespace FlyDockTool
{
public class accessOptions
{
public OleDbConnection SqlConn = null;
/// <summary>
/// 让此类创建一个单例类
/// </summary>
public static accessOptions Instance = null;//申明一个EcgDrawing对象复制Null
private static readonly object LockHelper = new object();
public static accessOptions CreateInstance(string accessDbPath)
{
if (Instance == null)
{
lock (LockHelper)
{
if (Instance == null)
Instance = new accessOptions(accessDbPath);
}
}
return Instance;
}
public accessOptions(string accessDbPath)
{
GetSqlConnection(accessDbPath);
}
/// <summary>
/// 获得sqlite数据库连接
/// </summary>
/// <returns></returns>
public bool GetSqlConnection(string accessDbPath)
{
try
{
string ConnectionStr = "Provider=Microsoft.Jet.OleDb.4.0;";
ConnectionStr += @"Data Source="+ accessDbPath + "";
OleDbConnection conn = new OleDbConnection(ConnectionStr);
SqlConn = conn;
}
catch { return false; }
return true;
}
/// <summary>
/// 执行sqlite查询语句并返回一个 DataTable
/// </summary>
/// <param name="sqliteStr"></param>
/// <returns></returns>
public DataTable ExcuteSql(string sqliteStr)
{
try
{
if (SqlConn.State == ConnectionState.Closed)
{
SqlConn.Open();
}
var sqliteDp = new OleDbDataAdapter(sqliteStr, SqlConn) {SelectCommand = {CommandTimeout = 600000}};
var sqliteds = new DataSet();
sqliteDp.Fill(sqliteds);
return sqliteds.Tables[0];
}
catch(Exception ex)
{
//byte[] ecgDataArray = Encoding.UTF8.GetBytes(sqliteStr.ToString() + "\r\n"+ex.ToString()+"\r\n");
//ecgFileWrite(ecgDataArray, @"d:\log.txt");
return null;
}
}
private void ecgFileWrite(byte[] ecgDataArray, string FilePath)
{
FileStream fs = new FileStream(FilePath, FileMode.OpenOrCreate);
fs.Position = fs.Length;
//开始写入
fs.Write(ecgDataArray, 0, ecgDataArray.Length);
//清空缓冲区、关闭流
fs.Flush();
fs.Close();
}
/// <summary>
/// Sqlite 添加数据的操作函数
/// </summary>
/// <param name="sqliteSQL"></param>
/// <returns></returns>
public bool SqlAdd(string sqliteSQL)
{
try
{
if (SqlConn.State == ConnectionState.Closed)
SqlConn.Open();
var sqliteCmd = new OleDbCommand(sqliteSQL, SqlConn);
sqliteCmd.ExecuteNonQuery();
sqliteCmd.Dispose();
SqlConn.Close();
}
catch { return false; }
return true;
}
/// <summary>
/// Sqlite 删除数据的操作函数
/// </summary>
/// <param name="sqliteSQL"></param>
/// <returns></returns>
public bool SqlDelete(string sqliteSQL)
{
try
{
if (SqlConn.State == ConnectionState.Closed)
SqlConn.Open();
var sqliteCmd = new OleDbCommand(sqliteSQL, SqlConn);
sqliteCmd.ExecuteNonQuery();
sqliteCmd.Dispose();
SqlConn.Close();
}
catch { return false; }
return true;
}
/// <summary>
/// Sqlite 更新数据的操作函数
/// </summary>
/// <param name="sqliteSQL"></param>
/// <returns></returns>
public bool SqlUpdate(string sqliteSQL)
{
try
{
if (SqlConn.State == ConnectionState.Closed)
SqlConn.Open();
var sqliteCmd = new OleDbCommand(sqliteSQL, SqlConn);
sqliteCmd.ExecuteNonQuery();
sqliteCmd.Dispose();
SqlConn.Close();
}
catch { return false; }
return true;
}
/// <summary>
/// 执行SQL语句函数
/// </summary>
/// <param name="sqlcmd">SQL语句</param>
/// <param name="paras">SQL语句中的参数组</param>
/// <returns>返回受影响记录条数</returns>
public int ExecuteSql(string sqlcmd, params SqlParameter[] paras)
{
var cmd = new OleDbCommand(sqlcmd, SqlConn);
if (SqlConn.State == ConnectionState.Closed)
{
SqlConn.Open();
}
foreach (SqlParameter p in paras)
{
cmd.Parameters.Add(p);
}
int cnt = cmd.ExecuteNonQuery();
SqlConn.Close();
return cnt;
}
/// <summary>
/// Sqlite 执行数据库的多条语句,
/// </summary>
/// <param name="sqliteSQL"></param>
/// <returns></returns>
public bool SqlExecuteNonQuery(string[] sqliteSQL)
{
if (SqlConn.State == ConnectionState.Closed)
{
SqlConn.Open();
}
OleDbTransaction sqlTran = SqlConn.BeginTransaction();
try
{
foreach (string sql in sqliteSQL)
{
var sqliteCmd = new OleDbCommand(sql, SqlConn, sqlTran);
int i = sqliteCmd.ExecuteNonQuery();
sqliteCmd.Dispose();
}
sqlTran.Commit();
}
catch
{
sqlTran.Rollback();
return false;
}
finally
{
SqlConn.Close();
}
return true;
}
public Image GetImg(byte[] imgBytes)
{
var ms = new MemoryStream(imgBytes);
Image img = Image.FromStream(ms);
return img;
}
}
}

89
apiOptions.cs Normal file
View File

@ -0,0 +1,89 @@
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Configuration;
using System.IO;
using System.IO.Ports;
using System.Linq;
using System.Text;
using System.Threading;
using System.Windows.Forms;
namespace FlyDockTool
{
internal class apiOptions
{
/// <summary>
/// 让此类创建一个API操作的单例类
/// </summary>
public static apiOptions Instance; //申明一个EcgDrawing对象复制Null
private static readonly object LockHelper = new object();
public static string MacAddress;//计算机名称 设备唯一代码,这个代码是LIS系统里添加设备时给设备生成的唯一设备码
public static string MachineCode;//设备型号
public static string MachineID;//设备编码
public static string CurrentDevice;//当前设备
public static apiOptions CreateInstance()
{
if (Instance == null)
lock (LockHelper)
{
if (Instance == null)
Instance = new apiOptions();
}
return Instance;
}
/// <summary>
/// 1.根据MacAddress获取设备信息,请求方式get
/// </summary>
/// <param name="MacAddress">计算机名称</param>
/// <param name="MachineCode">设备型号</param>
/// <returns></returns>
public baseMsgModel getMacAddressInfo()
{
string apiUrl = ConfigurationManager.AppSettings["getMacAddressInfo"];//获取设备信息URL
if (MacAddress.Trim().Length > 0)
apiUrl += "?MacAddress="+ apiOptions.MacAddress;
if (MachineCode.Trim().Length > 0)
apiUrl += "&MachineCode=" + apiOptions.MachineCode;
//string returnDeviceInfoJson=commonOptions.HttpGet(apiUrl);
string returnDeviceInfoJson = commonOptions.HttpGet(apiUrl);
baseMsgModel bmm=JsonConvert.DeserializeObject<baseMsgModel>(returnDeviceInfoJson);
return bmm;
}
/// <summary>
/// 上传检查结果到LIS系统
/// </summary>
/// <param name="ermList"></param>
/// <returns></returns>
public baseMsgModel upLoadExamResult(List<examResultMode> ermList)
{
string apiUrl = ConfigurationManager.AppSettings["upLoadExamResult"];
string examListJson = JsonConvert.SerializeObject(ermList);
string returnJson = commonOptions.PostMoths(apiUrl, examListJson);
baseMsgModel bmm = JsonConvert.DeserializeObject<baseMsgModel>(returnJson);
return bmm;
}
/// <summary>
/// 上传图片结果到LIS系统
/// </summary>
/// <param name="EIPM"></param>
/// <returns></returns>
public baseMsgModel uploadExamImage(List<examImageParaModel> EIPM)
{
string apiUrl = ConfigurationManager.AppSettings["upLoadExamImage"];
string examImageListJson = JsonConvert.SerializeObject(EIPM);
string returnJson = commonOptions.PostMoths(apiUrl, examImageListJson);
baseMsgModel bmm = JsonConvert.DeserializeObject<baseMsgModel>(returnJson);
return bmm;
}
}
}

65
app.config Normal file
View File

@ -0,0 +1,65 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup>
<appSettings>
<!--根据MacAddress获取设备信息,请求方式get-->
<add key="getMacAddressInfo" value="https://wlcblis.gw12320.com:8443/interFace/list" />
<!--上传检查结果到LIS系统-->
<add key="upLoadExamResult" value="https://wlcblis.gw12320.com:8443/interFace/result" />
<!--上传图片结果到LIS系统-->
<add key="upLoadExamImage" value="https://wlcblis.gw12320.com:8443/interFace/acceptImgList" />
<!--华晟源尿常规H-II : 串口COM1 波特率9600 校验位NONE 数据位8 停止位1-->
<add key="HSYH-II" value="User-2024H-II,H-II,86,COM1,9600,NONE,8,1" />
<!--盛世东唐BT-200尿常规-->
<add key="BT-200" value="user-PC,BT-200,89,COM1,4800,NONE,8,1" />
<!--编码方式枚举Unicode UTF-8 GB18030 GB2312 UTF-8 ASCII UTF-7 UTF-32-->
<!--优利特血常规URIT-5181-->
<add key="URIT-5181" value="User-2024H-II,URIT-5181,87,127.0.0.1,6688,GB18030" />
<!--优利特血常规URIT-1500-->
<add key="URIT-1500" value="User-2024H-II,URIT-1500,87,127.0.0.1,6688,GB18030" />
<!--帝迈血常规DF55-->
<add key="DF55" value="User-2024H-II,DF55,90,127.0.0.1,6688,GB18030" />
<!--迪瑞全自动生化分析仪 CS-480-->
<add key="CS-480" value="User-2024H-II,CS-480,88,127.0.0.1,6688,GB18030" />
<!--Senlo生化SL300C-->
<add key="SL300C" value="User-2024H-II,SL300C,91,127.0.0.1,6688,GB18030" />
<!--BK600全自动生化分析仪 读access数据库-->
<add key="BK600" value="User-2024H-II,SL300C,92,C:\\Users\\Administrator\\Desktop\\乌兰察布察右前旗设备\\平地泉中心卫生院\\生化\\20230926.mdb" />
<!--尿常规 GeniusBA600 -->
<add key="BA600" value="User-2024H-II,H-II,86,COM1,19200,NONE,8,1,Unicode" />
<!--血常规MAC-600 -->
<add key="MC-600" value="User-2024H-II,H-II,86,COM1,115200,NONE,8,1" />
<!--TCP 数据接收测试-->
<add key="TCPTEST" value="User-2024H-II,H-II,87,127.0.0.1,6688,GB18030" />
<!--迪瑞全自动生化分析仪 CS-1300B-->
<add key="CS-1300B" value="User-2019DLKLHT,CS-1300B,88,192.168.24.113,1234,GB18030" />
<!--煤窑中心卫生院的尿常规 GeniusBA600 -->
<add key="BA600MY" value="User-2024H-II,H-II,86,COM1,19200,NONE,8,1,Unicode" />
<!--优利特血常规URIT-5180-->
<add key="URIT-5180" value="User-2024H-II,URIT-5180,87,127.0.0.1,6688,GB18030" />
<!--BS-430-->
<add key="BS-430" value="User-2024H-II,BS-430,91,127.0.0.1,6688,GB18030" />
<!--尿常规 URIT-1600 -->
<add key="URIT-1600" value="User-2024H-II,URIT-1600,86,COM1,19200,NONE,8,1,Unicode" />
<!--HTSH-4000全自动生化分析仪 读access数据库-->
<add key="HTSH-4000" value="2012-0825-0909,HTSH-4000,115,C:\Users\Administrator\Desktop\察哈尔右翼中旗\宏盘卫生院\HTSH4000\KY_300.MDB" />
<!--帝迈血常规DH56-->
<add key="DH56" value="User-2024H-II,DH56,90,127.0.0.1,6688,GB18030" />
<!--优利特血常规URIT-5380-->
<add key="URIT-5380" value="User-2024H-II,URIT-5181,87,127.0.0.1,6688,GB18030" />
<!--艾康生物尿常规U500-->
<add key="U500" value="user-PC,U500,89,COM1,4800,NONE,8,1" />
<!--血常规 BC-5130-->
<add key="BC-5130" value="wstwsy-PC,BC-5130,90,127.0.0.1,6688,GB18030" />
<!--斯玛特生化分析仪SD1-->
<add key="SD1" value="User-2019DLKLHT,SD1,88,127.0.0.1,1234,GB18030" />
<!--hhh5-->
<add key="hhh5" value="wstwsy-PC,hhh5,90,127.0.0.1,6688,GB18030" />
<!--帝迈血常规DF55-->
<add key="DF55-2" value="PC-202106061449,DF55-2,121,127.0.0.1,5600,GB18030" />
<add key="MA-4210" value="wstwsy-PC,MA-4210,90,COM1,9600,NONE,8,1" />
<add key="CurrentDevice" value="BC-5130" />
</appSettings>
</configuration>

14
baseMsgModel.cs Normal file
View File

@ -0,0 +1,14 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace FlyDockTool
{
public class baseMsgModel
{
public string msg { get; set; }//
public int code { get; set; }
public object data { get; set; }
}
}

797
commonOptions.cs Normal file
View File

@ -0,0 +1,797 @@
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;
using System.Linq;
using System.Net;
using System.Security.Cryptography;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace FlyDockTool
{
public class commonOptions
{
/// <summary>
/// 获取验证码文本
/// </summary>
/// <param name="lengths"></param>
/// <returns></returns>
public static string RandomVerificationCode(int lengths)
{
string[] chars = new string[] { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "P", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z" };
string code = "";
Random random = new Random();
for (int i = 0; i < lengths; i++)
{
code += chars[random.Next(chars.Length)];
}
return code;
}
/// <summary>
/// 生成验证码图片
/// </summary>
/// <param name="code"></param>
/// <returns></returns>
public static Bitmap VerificationCodeImg(string code)
{
Color[] colors = {
Color.Red, Color.OrangeRed,Color.SaddleBrown,
Color.LimeGreen,Color.Green,Color.MediumAquamarine,
Color.Blue,Color.MediumOrchid,Color.Black,
Color.DarkBlue,Color.Orange,Color.Brown,
Color.DarkCyan,Color.Purple
};
string[] fonts = { "Verdana", "Microsoft Sans Serif", "Comic Sans MS", "Arial", "宋体" };
Random random = new Random();
// 创建一个 Bitmap 图片类型对象
//Bitmap bitmap = new Bitmap(code.Length * 18, 32);
Bitmap bitmap = new Bitmap(80, 33);
// 创建一个图形画笔
Graphics graphics = Graphics.FromImage(bitmap);
// 将图片背景填充成白色
graphics.Clear(Color.White);
// 绘制验证码噪点
//for (int i = 0; i < random.Next(60, 80); i++)
//{
// int pointX = random.Next(bitmap.Width);
// int pointY = random.Next(bitmap.Height);
// graphics.DrawLine(new Pen(Color.LightGray, 1), pointX, pointY, pointX + 1, pointY);
//}
// 绘制随机线条 1 条
//graphics.DrawLine(
// new Pen(colors[random.Next(colors.Length)], random.Next(3)),
// new Point(
// random.Next(bitmap.Width),
// random.Next(bitmap.Height)),
// new Point(random.Next(bitmap.Width),
// random.Next(bitmap.Height)));
// 绘制验证码
for (int i = 0; i < code.Length; i++)
{
graphics.DrawString(
code.Substring(i, 1),
new System.Drawing.Font(fonts[random.Next(fonts.Length)], 17, FontStyle.Bold),
new SolidBrush(colors[random.Next(colors.Length)]),
16 * i + 1,
random.Next(0, 5)
);
}
// 绘制验证码噪点
//for (int i = 0; i < random.Next(30, 50); i++)
//{
// int pointX = random.Next(bitmap.Width);
// int pointY = random.Next(bitmap.Height);
// graphics.DrawLine(new Pen(colors[random.Next(colors.Length)], 1), pointX, pointY, pointX, pointY + 1);
//}
// 绘制随机线条 1 条
//graphics.DrawLine(
// new Pen(colors[random.Next(colors.Length)], random.Next(3)),
// new Point(
// random.Next(bitmap.Width),
// random.Next(bitmap.Height)),
// new Point(random.Next(bitmap.Width),
// random.Next(bitmap.Height)));
return bitmap;
}
///// <summary>
///// 获取福乐云HIS系统的token
///// </summary>
///// <param name="username"></param>
///// <param name="pwd"></param>
///// <returns></returns>
//public static string getHisToken(string url1,string appkey, string appsecret)
//{
// Dictionary<string, object> dic = new Dictionary<string, object>();
// dic.Add("appkey", appkey);
// dic.Add("appsecret", appsecret);
// string resultV = commonOptions.PostFile3(url1, dic);
// FlyHisTokenMsgModel tm = JsonConvert.DeserializeObject<FlyHisTokenMsgModel>(resultV);
// return tm.data.access_token;
//}
///// <summary>
///// 获取福乐云HIS系统的患者基本信息
///// </summary>
///// <param name="username"></param>
///// <param name="pwd"></param>
///// <returns></returns>
//public static FlyHisEcgDataModel GetHisEcgData(string url1, string Yiyuanid, string kaifangsj,string token)
//{
// Dictionary<string, object> dic = new Dictionary<string, object>();
// dic.Add("Yiyuanid", Yiyuanid);
// dic.Add("kaifangsj", kaifangsj);
// dic.Add("token", token);
// string resultV = commonOptions.PostFile3(url1, dic);
// FlyHisEcgDataModel tm = JsonConvert.DeserializeObject<FlyHisEcgDataModel>(resultV);
// return tm;
//}
/// <summary>
/// post form-data 参数
/// </summary>
/// <param name="url"></param>
/// <param name="items"></param>
/// <returns></returns>
//public static string PostFile3(string url, Dictionary<string, object> items)
//{
// string boundary = DateTime.Now.Ticks.ToString("x");
// HttpWebRequest request = null;
// //如果是发送HTTPS请求              
// if (url.StartsWith("https", StringComparison.OrdinalIgnoreCase))
// {
// //处理HttpWebRequest访问https有安全证书的问题 请求被中止: 未能创建 SSL/TLS 安全通道。)
// ServicePointManager.ServerCertificateValidationCallback += (s, cert, chain, sslPolicyErrors) => true;
// ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls;
// //ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult);
// request = WebRequest.Create(url) as HttpWebRequest;
// request.ProtocolVersion = HttpVersion.Version10;
// }
// else
// {
// request = WebRequest.Create(url) as HttpWebRequest;
// }
// request.ContentType = "multipart/form-data; boundary=" + boundary;
// request.Method = "POST";
// // request.Headers.Add("Authorization", "Bearer " + token);
// // 最后的结束符
// var endBoundary = Encoding.UTF8.GetBytes("\r\n--" + boundary + "--\r\n");
// //文件数据
// string fileFormdataTemplate =
// "--" + boundary +
// "\r\nContent-Disposition: form-data; name=\"{0}\"; filename=\"{1}\"" +
// "\r\nContent-Type: application/octet-stream" +
// "\r\n\r\n";
// //文本数据
// string dataFormdataTemplate =
// "\r\n--" + boundary +
// "\r\nContent-Disposition: form-data; name=\"{0}\"" +
// "\r\n\r\n{1}";
// //FileInfo fi = new FileInfo(filePath);
// //string fileHeader = string.Format(fileFormdataTemplate, "file", fi.Name);
// //var fileBytes = Encoding.UTF8.GetBytes(fileHeader);
// using (var postStream = new MemoryStream())
// {
// ////写入文件格式串
// //postStream.Write(fileBytes, 0, fileBytes.Length);
// //#region 写入文件流
// //using (var fs = new FileStream(filePath, FileMode.Open, FileAccess.Read))
// //{
// // byte[] buffer = new byte[1024];
// // int bytesRead = 0;
// // while ((bytesRead = fs.Read(buffer, 0, buffer.Length)) != 0)
// // {
// // postStream.Write(buffer, 0, bytesRead);
// // }
// //}
// //#endregion
// #region 写入其他表单参数
// foreach (KeyValuePair<string, object> key in items)
// {
// var p = string.Format(dataFormdataTemplate, key.Key, key.Value);
// var bp = Encoding.UTF8.GetBytes(p);
// postStream.Write(bp, 0, bp.Length);
// }
// #endregion
// //写入结束边界
// postStream.Write(endBoundary, 0, endBoundary.Length);
// #region 写入流
// request.ContentLength = postStream.Length;
// postStream.Position = 0;
// using (Stream ds = request.GetRequestStream())
// {
// byte[] buffer = new byte[1024];
// int bytesRead = 0;
// while ((bytesRead = postStream.Read(buffer, 0, buffer.Length)) != 0)
// {
// ds.Write(buffer, 0, bytesRead);
// }
// }
// #endregion
// #region 获取返回值
// string result = string.Empty;
// using (HttpWebResponse rep = (HttpWebResponse)request.GetResponse())
// {
// using (Stream ds = rep.GetResponseStream())
// {
// using (StreamReader sr = new StreamReader(ds))
// {
// result = sr.ReadToEnd();
// }
// }
// }
// return result;
// #endregion
// }
//}
// 非对称公钥加密 使用公钥加密数据
public static string Encrypt(string plainText)
{
string base64EncryptedData = string.Empty;
// 创建 RSA 密钥对
using (var rsa = new RSACryptoServiceProvider())
{
// 获取公钥
string publicKey = rsa.ToXmlString(false);
// 加载公钥
rsa.FromXmlString("<RSAKeyValue><Modulus>gMIre8vicEqHjwhyrMUSMbwyR+STy9vGDyqmOd9xA4JI9/ghqAQAl5T9R8z87gwKMosPsEaRf4/1tg8taa/q2g0xwcZZ3dZlBzDSQ7k7I7t/Cv+m3YUZDp1U1TooSw8NzX3MQ36u1uiniWAUMvA0PT17dR6dxsQmMdDN4xSJO/0=</Modulus><Exponent>AQAB</Exponent></RSAKeyValue>");
// 将待加密数据转换成字节数组
byte[] dataToEncrypt = Encoding.UTF8.GetBytes(plainText);
// 使用公钥加密数据
byte[] encryptedData = rsa.Encrypt(dataToEncrypt, false);
// 将加密后的数据转换为 Base64 编码的字符串
base64EncryptedData = Convert.ToBase64String(encryptedData);
string aaa = "公钥:" + publicKey;
}
return base64EncryptedData;
//byte[] encryptedData = Encoding.UTF8.GetBytes(plainText);
//using (RSA rsa = RSA.Create())
//{
// rsa.ImportParameters(publicKey);
// // return rsa.Encrypt(data, RSAEncryptionPadding.Pkcs1);
// return Encoding.UTF8.GetString(rsa.Encrypt(encryptedData, RSAEncryptionPadding.Pkcs1));
//}
}
//----------------------------------------------------------------------------------------------------------------------------
// 非对称公钥加密 使用公钥加密数据
//public static string Encrypt(string plainText, RSAParameters publicKey)
//{
// byte[] encryptedData = Encoding.UTF8.GetBytes(plainText);
// using (RSA rsa = RSA.Create())
// {
// rsa.ImportParameters(publicKey);
// // return rsa.Encrypt(data, RSAEncryptionPadding.Pkcs1);
// return Encoding.UTF8.GetString(rsa.Encrypt(encryptedData, RSAEncryptionPadding.Pkcs1));
// }
//}
/// <summary>
/// DES加密
/// </summary>
/// <param name="data">加密数据</param>
/// <param name="key">8位字符的密钥字符串</param>
/// <param name="iv">8位字符的初始化向量字符串</param>
/// <returns></returns>
public static string DESEncrypt(string data, string key, string iv)
{
byte[] byKey = System.Text.ASCIIEncoding.ASCII.GetBytes(key);
byte[] byIV = System.Text.ASCIIEncoding.ASCII.GetBytes(iv);
DESCryptoServiceProvider cryptoProvider = new DESCryptoServiceProvider();
int i = cryptoProvider.KeySize;
MemoryStream ms = new MemoryStream();
CryptoStream cst = new CryptoStream(ms, cryptoProvider.CreateEncryptor(byKey, byIV), CryptoStreamMode.Write);
StreamWriter sw = new StreamWriter(cst);
sw.Write(data);
sw.Flush();
cst.FlushFinalBlock();
sw.Flush();
return Convert.ToBase64String(ms.GetBuffer(), 0, (int)ms.Length);
}
/// <summary>
/// DES解密
/// </summary>
/// <param name="data">解密数据</param>
/// <param name="key">8位字符的密钥字符串(需要和加密时相同)</param>
/// <param name="iv">8位字符的初始化向量字符串(需要和加密时相同)</param>
/// <returns></returns>
public static string DESDecrypt(string data, string key, string iv)
{
byte[] byKey = System.Text.ASCIIEncoding.ASCII.GetBytes(key);
byte[] byIV = System.Text.ASCIIEncoding.ASCII.GetBytes(iv);
byte[] byEnc;
try
{
byEnc = Convert.FromBase64String(data);
}
catch
{
return null;
}
DESCryptoServiceProvider cryptoProvider = new DESCryptoServiceProvider();
MemoryStream ms = new MemoryStream(byEnc);
CryptoStream cst = new CryptoStream(ms, cryptoProvider.CreateDecryptor(byKey, byIV), CryptoStreamMode.Read);
StreamReader sr = new StreamReader(cst);
return sr.ReadToEnd();
}
public static string PostMoths(string url, string param)
{
string strURL = url;
HttpWebRequest request;
request = (HttpWebRequest)WebRequest.Create(strURL);
request.Method = "POST";
request.ContentType = "application/json;charset=UTF-8";
string paraUrlCoded = param;
byte[] payload;
payload = Encoding.UTF8.GetBytes(paraUrlCoded);
request.ContentLength = payload.Length;
Stream writer = request.GetRequestStream();
writer.Write(payload, 0, payload.Length);
writer.Close();
System.Net.HttpWebResponse response;
response = (System.Net.HttpWebResponse)request.GetResponse();
System.IO.Stream s;
s = response.GetResponseStream();
string StrDate = "";
string strValue = "";
StreamReader Reader = new StreamReader(s, Encoding.UTF8);
while ((StrDate = Reader.ReadLine()) != null)
{
strValue += StrDate + "\r\n";
}
return strValue;
}
/// <summary>
///
/// </summary>
/// <param name="url"></param>
/// <param name="token"></param>
/// <param name="jsonContent"></param>
/// <returns></returns>
public static string PostByParas(string url, string token, string jsonContent)
{
string result = "";
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
req.Method = "POST";
req.ContentType = "application/json";
req.Headers.Add("Authorization", "Bearer " + token);
byte[] data = Encoding.UTF8.GetBytes(jsonContent);
req.ContentLength = data.Length;
using (Stream reqStream = req.GetRequestStream())
{
reqStream.Write(data, 0, data.Length);
reqStream.Close();
}
HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
Stream stream = resp.GetResponseStream();
//获取响应内容
using (StreamReader reader = new StreamReader(stream, Encoding.UTF8))
{
result = reader.ReadToEnd();
}
return result;
}
/// <summary>
/// http 上传文件 好用版
/// </summary>
/// <param name="url"></param>
/// <param name="filePath"></param>
/// <param name="items"></param>
/// <param name="token"></param>
/// <returns></returns>
public static string PostFile2(string url, string filePath, Dictionary<string, object> items)
{
string boundary = DateTime.Now.Ticks.ToString("x");
HttpWebRequest request = null;
//如果是发送HTTPS请求              
if (url.StartsWith("https", StringComparison.OrdinalIgnoreCase))
{
////处理HttpWebRequest访问https有安全证书的问题 请求被中止: 未能创建 SSL/TLS 安全通道。)
//ServicePointManager.ServerCertificateValidationCallback += (s, cert, chain, sslPolicyErrors) => true;
//ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls;
////ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult);
//request = WebRequest.Create(url) as HttpWebRequest;
//request.ProtocolVersion = HttpVersion.Version10;
}
else
{
request = WebRequest.Create(url) as HttpWebRequest;
}
request.ContentType = "multipart/form-data; boundary=" + boundary;
request.Method = "POST";
// request.Headers.Add("Authorization", "Bearer " + token);
// 最后的结束符
var endBoundary = Encoding.UTF8.GetBytes("\r\n--" + boundary + "--\r\n");
//文件数据
string fileFormdataTemplate =
"--" + boundary +
"\r\nContent-Disposition: form-data; name=\"{0}\"; filename=\"{1}\"" +
"\r\nContent-Type: application/octet-stream" +
"\r\n\r\n";
//文本数据
string dataFormdataTemplate =
"\r\n--" + boundary +
"\r\nContent-Disposition: form-data; name=\"{0}\"" +
"\r\n\r\n{1}";
FileInfo fi = new FileInfo(filePath);
string fileHeader = string.Format(fileFormdataTemplate, "img", fi.Name);
var fileBytes = Encoding.UTF8.GetBytes(fileHeader);
using (var postStream = new MemoryStream())
{
//写入文件格式串
postStream.Write(fileBytes, 0, fileBytes.Length);
#region
using (var fs = new FileStream(filePath, FileMode.Open, FileAccess.Read))
{
byte[] buffer = new byte[1024];
int bytesRead = 0;
while ((bytesRead = fs.Read(buffer, 0, buffer.Length)) != 0)
{
postStream.Write(buffer, 0, bytesRead);
}
}
#endregion
#region
foreach (KeyValuePair<string, object> key in items)
{
var p = string.Format(dataFormdataTemplate, key.Key, key.Value);
var bp = Encoding.UTF8.GetBytes(p);
postStream.Write(bp, 0, bp.Length);
//System.Diagnostics.Debug.WriteLine(p);
}
#endregion
//写入结束边界
postStream.Write(endBoundary, 0, endBoundary.Length);
#region
request.ContentLength = postStream.Length;
postStream.Position = 0;
using (Stream ds = request.GetRequestStream())
{
byte[] buffer = new byte[1024];
int bytesRead = 0;
while ((bytesRead = postStream.Read(buffer, 0, buffer.Length)) != 0)
{
ds.Write(buffer, 0, bytesRead);
}
}
#endregion
#region
string result = string.Empty;
using (HttpWebResponse rep = (HttpWebResponse)request.GetResponse())
{
using (Stream ds = rep.GetResponseStream())
{
using (StreamReader sr = new StreamReader(ds))
{
result = sr.ReadToEnd();
}
}
}
return result;
#endregion
}
}
/// <summary>
/// 图片转base64
/// </summary>
/// <param name="fileName"></param>
/// <returns></returns>
public static string DocumentToBase64Str(string fileName)
{
FileStream filestream = new FileStream(fileName, FileMode.Open);
byte[] bt = new byte[filestream.Length];
//调用read读取方法
filestream.Read(bt, 0, bt.Length);
string base64Str = Convert.ToBase64String(bt);
filestream.Close();
return base64Str;
}
/// <summary>
/// 海军给的 http 上传文件 好用版
/// </summary>
/// <param name="url"></param>
/// <param name="filePath"></param>
/// <param name="items"></param>
/// <param name="token"></param>
/// <returns></returns>
//public static string PostFile2(string url, string filePath, Dictionary<string, object> items, string token)
//{
// string boundary = DateTime.Now.Ticks.ToString("x");
// HttpWebRequest request = null;
// //如果是发送HTTPS请求              
// if (url.StartsWith("https", StringComparison.OrdinalIgnoreCase))
// {
// //处理HttpWebRequest访问https有安全证书的问题 请求被中止: 未能创建 SSL/TLS 安全通道。)
// ServicePointManager.ServerCertificateValidationCallback += (s, cert, chain, sslPolicyErrors) => true;
// ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls;
// //ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult);
// request = WebRequest.Create(url) as HttpWebRequest;
// request.ProtocolVersion = HttpVersion.Version10;
// }
// else
// {
// request = WebRequest.Create(url) as HttpWebRequest;
// }
// request.ContentType = "multipart/form-data; boundary=" + boundary;
// request.Method = "POST";
// request.Headers.Add("Authorization", "Bearer " + token);
// // 最后的结束符
// var endBoundary = Encoding.UTF8.GetBytes("\r\n--" + boundary + "--\r\n");
// //文件数据
// string fileFormdataTemplate =
// "--" + boundary +
// "\r\nContent-Disposition: form-data; name=\"{0}\"; filename=\"{1}\"" +
// "\r\nContent-Type: application/octet-stream" +
// "\r\n\r\n";
// //文本数据
// string dataFormdataTemplate =
// "\r\n--" + boundary +
// "\r\nContent-Disposition: form-data; name=\"{0}\"" +
// "\r\n\r\n{1}";
// FileInfo fi = new FileInfo(filePath);
// string fileHeader = string.Format(fileFormdataTemplate, "file", fi.Name);
// var fileBytes = Encoding.UTF8.GetBytes(fileHeader);
// using (var postStream = new MemoryStream())
// {
// //写入文件格式串
// postStream.Write(fileBytes, 0, fileBytes.Length);
// #region 写入文件流
// using (var fs = new FileStream(filePath, FileMode.Open, FileAccess.Read))
// {
// byte[] buffer = new byte[1024];
// int bytesRead = 0;
// while ((bytesRead = fs.Read(buffer, 0, buffer.Length)) != 0)
// {
// postStream.Write(buffer, 0, bytesRead);
// }
// }
// #endregion
// #region 写入其他表单参数
// foreach (KeyValuePair<string, object> key in items)
// {
// var p = string.Format(dataFormdataTemplate, key.Key, key.Value);
// var bp = Encoding.UTF8.GetBytes(p);
// postStream.Write(bp, 0, bp.Length);
// //System.Diagnostics.Debug.WriteLine(p);
// }
// #endregion
// //写入结束边界
// postStream.Write(endBoundary, 0, endBoundary.Length);
// #region 写入流
// request.ContentLength = postStream.Length;
// postStream.Position = 0;
// using (Stream ds = request.GetRequestStream())
// {
// byte[] buffer = new byte[1024];
// int bytesRead = 0;
// while ((bytesRead = postStream.Read(buffer, 0, buffer.Length)) != 0)
// {
// ds.Write(buffer, 0, bytesRead);
// }
// }
// #endregion
// #region 获取返回值
// string result = string.Empty;
// using (HttpWebResponse rep = (HttpWebResponse)request.GetResponse())
// {
// using (Stream ds = rep.GetResponseStream())
// {
// using (StreamReader sr = new StreamReader(ds))
// {
// result = sr.ReadToEnd();
// }
// }
// }
// return result;
// #endregion
// }
//}
/// <summary>
/// 指定Post地址使用Get 方式获取全部字符串
/// </summary>
/// <param name="url">请求后台地址</param>
/// <returns></returns>
public static string PostByParas(string url, Dictionary<string, string> dic)
{
string result = "";
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
req.Method = "POST";
req.ContentType = "application/x-www-form-urlencoded";
#region Post
StringBuilder builder = new StringBuilder();
int i = 0;
foreach (var item in dic)
{
if (i > 0)
builder.Append("&");
builder.AppendFormat("{0}={1}", item.Key, item.Value);
i++;
}
byte[] data = Encoding.UTF8.GetBytes(builder.ToString());
req.ContentLength = data.Length;
using (Stream reqStream = req.GetRequestStream())
{
reqStream.Write(data, 0, data.Length);
reqStream.Close();
}
#endregion
HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
Stream stream = resp.GetResponseStream();
//获取响应内容
using (StreamReader reader = new StreamReader(stream, Encoding.UTF8))
{
result = reader.ReadToEnd();
}
return result;
}
///// <summary>
///// 发送HttpGet请求
///// </summary>
///// <param name="Url"></param>
///// <returns></returns>
//public static string HttpGet1(string Url)
//{
// try
// {
// HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url);
// HttpWebResponse response = (HttpWebResponse)request.GetResponse();
// //response.Cookies = cookie.GetCookies(response.ResponseUri);
// Stream myResponseStream = response.GetResponseStream();
// StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8"));
// string retString = myStreamReader.ReadToEnd();
// myStreamReader.Close();
// myResponseStream.Close();
// return retString;
// }
// catch (Exception e)
// {
// return "error:" + e.ToString();
// }
//}
public static string HttpGet(string url)
{
//ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult);
try
{
// MessageBox.Show(url);
// Encoding encoding = Encoding.UTF8;
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "GET";
request.Accept = "text/html, application/xhtml+xml, */*";
request.ContentType = "application/json";
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
using (StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8))
{
return reader.ReadToEnd();
}
}catch (Exception ex) { MessageBox.Show(ex.ToString()); }
return "";
}
/// <summary>
/// 格式化磁盘
/// </summary>
/// <param name="DiskName">盘符名称C:、D:、E:、F:</param>
/// <returns></returns>
public static bool FormatDisk(string DiskName)
{
ProcessStartInfo processStartInfo = new ProcessStartInfo("cmd.exe");
processStartInfo.RedirectStandardInput = true;
processStartInfo.RedirectStandardOutput = true;
processStartInfo.UseShellExecute = false;
Process process = Process.Start(processStartInfo);
if (process != null)
{
process.StandardInput.WriteLine($"FORMAT {DiskName} /y /FS:FAT32 /V:BMECG /Q");
process.StandardInput.Close();
string outputString = process.StandardOutput.ReadToEnd();
if (outputString.Contains("已完成"))
{
return true;
}
}
return false;
}
}
}

2897
deviceAnalysis.cs Normal file

File diff suppressed because it is too large Load Diff

36
deviceInfo.cs Normal file
View File

@ -0,0 +1,36 @@
using System;
using System.Collections.Generic;
using System.IO.Ports;
using System.Linq;
using System.Net.Mail;
using System.Runtime.InteropServices;
using System.Security.AccessControl;
using System.Text;
namespace FlyDockTool
{
public class deviceInfo
{
public string MachineCode { get; set; }// 设备型号
public string MachineID { get; set; }// 设备后台编号
public string MacAddress { get; set; }// 绑定的电脑标志信息
public string MacConfigID { get; set; }// 后台设备接口配置编号
public string InterFaceCode { get; set; }// 接口类型代码
public string ChatSet { get; set; }// 字符集
public string AckFlag { get; set; }// 应答ACK = 06H标志
public string ResultPath { get; set; }// 结果存储路径
public string DbCon { get; set; }// 数据库链接
public string DbSql { get; set; }// 数据库Sql语句
public string HL7TYPE { get; set; }//HL7协议类型标志
public string ChatRoom { get; set; }// HL7协议方式(UDP/TCP)
public string HL7IP { get; set; }// HL7协议服务启动IP地址
public string HL7Port { get; set; }// HL7协议服务监听端口
public string PortName { get; set; }// 串口号
public string BaudRate { get; set; }// 波特率
public string DataBit { get; set; }//数据位
public string Parity { get; set; }//校验位
public string StopBits { get; set; }// 停止位
public string HexFlag { get; set; }// 数据接收方式
public string ImgPath { get; set; }//图像存储路径
}
}

16
examImageParaModel.cs Normal file
View File

@ -0,0 +1,16 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace FlyDockTool
{
public class examImageParaModel
{
public string machineCode { get; set; }//设备型号
public string machineID { get; set; }//设备id
public string testDate { get; set; }//检验时间
public string sampleNo { get; set; }// 样本号
public string img { get; set; }//图片文件
}
}

28
examResultMode.cs Normal file
View File

@ -0,0 +1,28 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace FlyDockTool
{
public class examResultMode
{
public string machineCode { get; set; }// 设备代码 varchar(50)
public string machineID { get; set; }// 设备后台编号 varchar(50) 不能为空
public string testDate { get; set; }// 检验日期 Varchar(50)
public string sampleNo { get; set; }//样本号 Varchar(50)
public string barCode { get; set; }//条码号 Varchar(50)
public string itemName { get; set; }//项目名称 Varchar(50)
public string itemCode { get; set; }//项目代码 Varchar(50)
public string chanelNo { get; set; }//通道号 Varchar(50)
public string itemValue { get; set; }//项目结果 Varchar(50)
public string itemTips { get; set; }//项目提示 Varchar(50)
public string itemRange { get; set; }//参考范围 Varchar(200)
public string yangFlag { get; set; }//阳性标志 Tinyint default 0
public string itemUnit { get; set; }//项目单位 Varchar(50)
public string lowValue { get; set; }//参考下限 Varchar(50)
public string highValue { get; set; }//参考上限 Varchar(50)
}
}

BIN
logo.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

219
mainForm.Designer.cs generated Normal file
View File

@ -0,0 +1,219 @@
namespace FlyDockTool
{
partial class mainForm
{
/// <summary>
/// 必需的设计器变量。
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// 清理所有正在使用的资源。
/// </summary>
/// <param name="disposing">如果应释放托管资源,为 true否则为 false。</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows
/// <summary>
/// 设计器支持所需的方法 - 不要修改
/// 使用代码编辑器修改此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(mainForm));
this.groupBox2 = new System.Windows.Forms.GroupBox();
this.button1 = new System.Windows.Forms.Button();
this.lb_currentDeviceInfo = new System.Windows.Forms.Label();
this.lb_info = new System.Windows.Forms.Label();
this.label1 = new System.Windows.Forms.Label();
this.btn_start_or_stop = new System.Windows.Forms.Button();
this.groupBox3 = new System.Windows.Forms.GroupBox();
this.txt_msg = new System.Windows.Forms.TextBox();
this.timer_dataShow = new System.Windows.Forms.Timer(this.components);
this.notifyIcon1 = new System.Windows.Forms.NotifyIcon(this.components);
this.contextMenuStrip1 = new System.Windows.Forms.ContextMenuStrip(this.components);
this.ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.退ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.groupBox2.SuspendLayout();
this.groupBox3.SuspendLayout();
this.contextMenuStrip1.SuspendLayout();
this.SuspendLayout();
//
// groupBox2
//
this.groupBox2.Controls.Add(this.button1);
this.groupBox2.Controls.Add(this.lb_currentDeviceInfo);
this.groupBox2.Controls.Add(this.lb_info);
this.groupBox2.Controls.Add(this.label1);
this.groupBox2.Controls.Add(this.btn_start_or_stop);
this.groupBox2.Dock = System.Windows.Forms.DockStyle.Top;
this.groupBox2.Location = new System.Drawing.Point(0, 0);
this.groupBox2.Name = "groupBox2";
this.groupBox2.Size = new System.Drawing.Size(1107, 144);
this.groupBox2.TabIndex = 1;
this.groupBox2.TabStop = false;
this.groupBox2.Text = "操作";
//
// button1
//
this.button1.Location = new System.Drawing.Point(840, 82);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(198, 41);
this.button1.TabIndex = 2;
this.button1.Text = "获取设备编号";
this.button1.UseVisualStyleBackColor = true;
this.button1.Click += new System.EventHandler(this.button1_Click);
//
// lb_currentDeviceInfo
//
this.lb_currentDeviceInfo.AutoSize = true;
this.lb_currentDeviceInfo.Location = new System.Drawing.Point(191, 39);
this.lb_currentDeviceInfo.Name = "lb_currentDeviceInfo";
this.lb_currentDeviceInfo.Size = new System.Drawing.Size(17, 18);
this.lb_currentDeviceInfo.TabIndex = 1;
this.lb_currentDeviceInfo.Text = "-";
//
// lb_info
//
this.lb_info.AutoSize = true;
this.lb_info.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.lb_info.ForeColor = System.Drawing.Color.Blue;
this.lb_info.Location = new System.Drawing.Point(212, 82);
this.lb_info.Name = "lb_info";
this.lb_info.Size = new System.Drawing.Size(18, 24);
this.lb_info.TabIndex = 1;
this.lb_info.Text = "-";
//
// label1
//
this.label1.AutoSize = true;
this.label1.Location = new System.Drawing.Point(78, 39);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(98, 18);
this.label1.TabIndex = 1;
this.label1.Text = "当前设备:";
//
// btn_start_or_stop
//
this.btn_start_or_stop.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btn_start_or_stop.Location = new System.Drawing.Point(81, 76);
this.btn_start_or_stop.Name = "btn_start_or_stop";
this.btn_start_or_stop.Size = new System.Drawing.Size(112, 47);
this.btn_start_or_stop.TabIndex = 0;
this.btn_start_or_stop.Text = "启动";
this.btn_start_or_stop.UseVisualStyleBackColor = true;
this.btn_start_or_stop.Click += new System.EventHandler(this.btn_start_or_stop_Click);
//
// groupBox3
//
this.groupBox3.Controls.Add(this.txt_msg);
this.groupBox3.Dock = System.Windows.Forms.DockStyle.Fill;
this.groupBox3.Location = new System.Drawing.Point(0, 144);
this.groupBox3.Name = "groupBox3";
this.groupBox3.Size = new System.Drawing.Size(1107, 593);
this.groupBox3.TabIndex = 2;
this.groupBox3.TabStop = false;
this.groupBox3.Text = "数据接收";
//
// txt_msg
//
this.txt_msg.BackColor = System.Drawing.Color.Black;
this.txt_msg.Dock = System.Windows.Forms.DockStyle.Fill;
this.txt_msg.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.txt_msg.ForeColor = System.Drawing.Color.GreenYellow;
this.txt_msg.Location = new System.Drawing.Point(3, 24);
this.txt_msg.Multiline = true;
this.txt_msg.Name = "txt_msg";
this.txt_msg.ScrollBars = System.Windows.Forms.ScrollBars.Vertical;
this.txt_msg.Size = new System.Drawing.Size(1101, 566);
this.txt_msg.TabIndex = 0;
//
// timer_dataShow
//
this.timer_dataShow.Enabled = true;
this.timer_dataShow.Interval = 1000;
//
// notifyIcon1
//
this.notifyIcon1.ContextMenuStrip = this.contextMenuStrip1;
this.notifyIcon1.Icon = ((System.Drawing.Icon)(resources.GetObject("notifyIcon1.Icon")));
this.notifyIcon1.Text = "福乐云软硬件数据对接工具正在运行中......请勿关闭";
this.notifyIcon1.Visible = true;
this.notifyIcon1.DoubleClick += new System.EventHandler(this.notifyIcon1_DoubleClick);
//
// contextMenuStrip1
//
this.contextMenuStrip1.ImageScalingSize = new System.Drawing.Size(24, 24);
this.contextMenuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.ToolStripMenuItem,
this.退ToolStripMenuItem});
this.contextMenuStrip1.Name = "contextMenuStrip1";
this.contextMenuStrip1.Size = new System.Drawing.Size(133, 80);
//
// 显示ToolStripMenuItem
//
this.ToolStripMenuItem.Font = new System.Drawing.Font("Microsoft YaHei UI", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.ToolStripMenuItem.Name = "显示ToolStripMenuItem";
this.ToolStripMenuItem.Size = new System.Drawing.Size(132, 38);
this.ToolStripMenuItem.Text = "显示";
this.ToolStripMenuItem.Click += new System.EventHandler(this.ToolStripMenuItem_Click);
//
// 退出ToolStripMenuItem
//
this.退ToolStripMenuItem.Font = new System.Drawing.Font("Microsoft YaHei UI", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.退ToolStripMenuItem.Name = "退出ToolStripMenuItem";
this.退ToolStripMenuItem.Size = new System.Drawing.Size(132, 38);
this.退ToolStripMenuItem.Text = "退出";
this.退ToolStripMenuItem.Click += new System.EventHandler(this.退ToolStripMenuItem_Click);
//
// mainForm
//
this.AutoScaleDimensions = new System.Drawing.SizeF(9F, 18F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(1107, 737);
this.Controls.Add(this.groupBox3);
this.Controls.Add(this.groupBox2);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.MaximizeBox = false;
this.MinimizeBox = false;
this.Name = "mainForm";
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
this.Text = "福乐云软硬件数据对接工具V1.1(2024121101)";
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.mainForm_FormClosing);
this.Load += new System.EventHandler(this.Form1_Load);
this.groupBox2.ResumeLayout(false);
this.groupBox2.PerformLayout();
this.groupBox3.ResumeLayout(false);
this.groupBox3.PerformLayout();
this.contextMenuStrip1.ResumeLayout(false);
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.GroupBox groupBox2;
private System.Windows.Forms.GroupBox groupBox3;
private System.Windows.Forms.TextBox txt_msg;
private System.Windows.Forms.Button btn_start_or_stop;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.Label lb_currentDeviceInfo;
private System.Windows.Forms.Label lb_info;
private System.Windows.Forms.Timer timer_dataShow;
private System.Windows.Forms.NotifyIcon notifyIcon1;
private System.Windows.Forms.ContextMenuStrip contextMenuStrip1;
private System.Windows.Forms.ToolStripMenuItem ToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem 退ToolStripMenuItem;
private System.Windows.Forms.Button button1;
}
}

145
mainForm.cs Normal file
View File

@ -0,0 +1,145 @@
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Configuration;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Net.Mail;
using System.Text;
using System.Web;
using System.Windows.Forms;
using static System.Windows.Forms.VisualStyles.VisualStyleElement.ToolTip;
namespace FlyDockTool
{
public partial class mainForm : Form
{
public mainForm()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
string CurrentDevice= ConfigurationManager.AppSettings["CurrentDevice"];
apiOptions.CurrentDevice = CurrentDevice;
apiOptions.MacAddress = ConfigurationManager.AppSettings[CurrentDevice].Split(',')[0];
apiOptions.MachineCode = ConfigurationManager.AppSettings[CurrentDevice].Split(',')[1];
apiOptions.MachineID = ConfigurationManager.AppSettings[CurrentDevice].Split(',')[2];
lb_currentDeviceInfo.Text = CurrentDevice;
btn_start_or_stop_Click(null,null);//启动数据接收
////测试代码 测试完毕后注释调一下两行代码
//string resultDataStr = File.ReadAllText(@"C:\Users\Administrator\Desktop\察哈尔右翼中旗\黄羊城\尿常规MA-4210\尿常规MA-4210.txt", Encoding.GetEncoding("GB18030"));
//deviceAnalysis.CreateInstance().deviceAnalysisOption(resultDataStr);
}
private void btn_start_or_stop_Click(object sender, EventArgs e)
{
if (btn_start_or_stop.Text == "启动")
{
//if (MessageBox.Show("确定启动数据接收?","提示",MessageBoxButtons.OKCancel)==DialogResult.OK)
//{
deviceAnalysis.CreateInstance().startDataReceive();
deviceAnalysis.CreateInstance().dataOutPutShow += new EventHandler(onReData);
btn_start_or_stop.Text = "停止";
timer_dataShow.Enabled = true;
//txt_msg.AppendText(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")+" | 设备:"+ apiOptions.MacAddress+ " 数据接收已启动...\r\n");
DoData("设备:" + apiOptions.MacAddress + " 数据接收已启动...\r\n");
lb_info.Text = "数据接收已启动...";
//}
}
else if (btn_start_or_stop.Text == "停止")
{
if (MessageBox.Show("确定停止数据接收?", "提示", MessageBoxButtons.OKCancel) == DialogResult.OK)
{
deviceAnalysis.CreateInstance().stopDataReceive();
btn_start_or_stop.Text = "启动";
timer_dataShow.Enabled = false;
// txt_msg.AppendText(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + " | "+ apiOptions.MacAddress+ " 数据接收已停止...\r\n");
DoData("设备:" + apiOptions.MacAddress + " 数据接收已停止...\r\n");
lb_info.Text = "数据接收已停止...";
}
}
}
private delegate void DoDataDelegate(object txtContent);
/// <summary>
/// 异步赋值
/// </summary>
/// <param name="number"></param>
private void DoData(object txtContent)
{
if (txt_msg.InvokeRequired)
{
DoDataDelegate d = DoData;
txt_msg.Invoke(d, txtContent);
}
else
{
txt_msg.AppendText("\r\n" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "接收到数据 : " + txtContent.ToString() + "\r\n");
}
}
/// <summary>
/// 显示串口或者TCP接收到的数据
/// </summary>
/// <param name="o"></param>
/// <param name="e"></param>
void onReData(object o, EventArgs e)
{
//txt_msg.AppendText(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "接收到数据 : " + o.ToString()+ "\r\n");
DoData(o);
}
bool isClose = false;
private void mainForm_FormClosing(object sender, FormClosingEventArgs e)
{
if (!isClose)
{
e.Cancel = true;
this.Hide();
}
}
private void notifyIcon1_DoubleClick(object sender, EventArgs e)
{
this.Show();
}
private void 退ToolStripMenuItem_Click(object sender, EventArgs e)
{
if (MessageBox.Show("确定退出该软件?", "提示", MessageBoxButtons.OKCancel) == DialogResult.OK)
{
isClose = true;
Application.Exit();
}
}
private void ToolStripMenuItem_Click(object sender, EventArgs e)
{
this.Show();
}
private void button1_Click(object sender, EventArgs e)
{
baseMsgModel bmm = apiOptions.CreateInstance().getMacAddressInfo();
if (bmm.code == 200)
{
List<deviceInfo> diList = JsonConvert.DeserializeObject<List<deviceInfo>>(bmm.data.ToString());
string showStr= "计算机名称(MacAddress)" + diList[0].MacAddress+"\r\n";
showStr += "设备型号(MachineCode)" + diList[0].MachineCode + "\r\n";
showStr += "设备编号(MachineID)" + diList[0].MachineID + "\r\n";
MessageBox.Show(showStr);
}
else
MessageBox.Show("未查到设备编号请先在配置文件中配置MacAddress和MachineCode");
}
}
}

704
mainForm.resx Normal file
View File

@ -0,0 +1,704 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="timer_dataShow.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>248, 17</value>
</metadata>
<metadata name="notifyIcon1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>452, 17</value>
</metadata>
<metadata name="contextMenuStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>611, 14</value>
</metadata>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="notifyIcon1.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAABAAEAQEAAAAEAIAAoQgAAFgAAACgAAABAAAAAgAAAAAEAIAAAAAAAAEAAAMMOAADDDgAAAAAAAAAA
AACtra3/////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////7+
//95dO//JR3m/ykh5v8pIeb/KSHm/ykh5v8pIeb/KSHm/ykh5v8pIeb/KSHm/ycf5v+alvP/////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////ra2t////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////x8X4/zUu5/8oIOb/KSHm/ykh5v8pIeb/KSHm/ykh5v8pIeb/KSHm/ykh
5v8mHub/Xljs//f3/v//////////////////////////////////////////////////////////////
/////////////////////////////////////////////62trf//////////////////////////////
///////////////////////////////////////////////////y8f3/r6z2/6ai9f+mo/X/pqP1/6aj
9f+mo/X/pqP1/6aj9f+mo/X/paL0/7+89//7+/////////X1/v9ZU+z/Jh7m/ykh5v8pIeb/KSHm/ykh
5v8pIeb/KSHm/ykh5v8pIeb/KCDm/zUu5//Hxfn/////////////////////////////////////////
//////////////////////////////////////////////////////////////////+tra3/////////
////////////////////////////////////////////////////////////////////////+fn+/3Jt
7/8kHOX/Jx/m/ycf5v8nH+b/Jx/m/ycf5v8nH+b/Jx/m/yUd5v88Nej/3t37////////////o6D0/ysj
5v8pIeb/KSHm/ykh5v8pIeb/KSHm/ykh5v8pIeb/KSHm/ykh5v8lHeb/fHfw////////////////////
///////////////////////////////////////////////////////////////////////////////+
/P/88tz/ra2t////////////////////////////////////////////////////////////////////
//////////////////+8uvf/KyPm/ykh5v8pIeb/KSHm/ykh5v8pIeb/KSHm/ykh5v8pIeb/KiLm/6Sh
9P///////////+Tj/P9BOun/Jx/m/ykh5v8pIeb/KSHm/ykh5v8pIeb/KSHm/ykh5v8pIeb/Jx/m/0lC
6v/k4/z/////////////////////////////////////////////////////////////////////////
///////////////////++vL/77tE/62trf//////////////////////////////////////////////
////////////////////////////////////////6+r9/1NN6/8nH+b/KSHm/ykh5v8pIeb/KSHm/ykh
5v8pIeb/KSHm/yYe5v9UTev/8O/9///////8+///fXjw/yce5v8pIeb/KSHm/ykh5v8pIeb/KSHm/ykh
5v8pIeb/KSHm/ykh5v8oIOb/l5Pz////////////////////////////////////////////////////
/////////////////////////////////////////vrx/+62OP+tra3///////////////////////n5
/v+sqfX/kIzy/5GN8v+RjfL/kY3y/5GN8v+RjfL/kY3y/5GM8v+emvT/8/L+//////+bl/P/Jh7m/ykh
5v8pIeb/KSHm/ykh5v8pIeb/KSHm/ykh5v8oIOb/NCzn/8fF+P///////////8rI+f8xKef/KSHm/ykh
5v8pIeb/KSHm/ykh5v8pIeb/KSHm/ykh5v8pIeb/Jx7m/01H6v/u7f3/////////////////////////
//////////////////////////////////////////////////////////////768f/utjj/ra2t////
////////////////////////nJjz/yYe5v8lHeb/JR3m/yUd5v8lHeb/JR3m/yUd5v8kHOX/LCXm/7m2
9///////0tD6/zs06P8oIOb/KSHm/ykh5v8pIeb/KSHm/ykh5v8pIeb/KSHm/yYe5v9zbe//+/v/////
///v7/3/WlTs/yYe5v8pIeb/KSHm/ykh5v8pIeb/KSHm/ykh5v8pIeb/KSHm/ygg5v8xKef/vbv3////
////////////////////////////////////////////////////////////////////////////////
///++vH/7rY4/62trf///////////////////////////97c+/88NOj/KCDm/ykh5v8pIeb/KSHm/ykh
5v8pIeb/KSHm/yYe5v9lX+3/+fj+//39//94c+//JR3m/ykh5v8pIeb/KSHm/ykh5v8pIeb/KSHm/ykh
5v8nH+b/RT7p/+Lh/P///////////6qn9f8pIeb/KSHm/ykh5v8pIeb/KSHm/ykh5v8pIeb/KSHm/ykh
5v8pIeb/Jh3m/2pk7v/6+v7/////////////////////////////////////////////////////////
/////////////////////////vrx/+62OP+tra3////////////////////////////7+/7/eXTv/yce
5v8pIeb/KSHm/ykh5v8pIeb/KSHm/ykh5v8oIOb/Pjbo/9jX+v//////sa72/y0l5v8pIeb/KSHm/ykh
5v8pIeb/KSHm/ykh5v8pIeb/KSHm/ygg5v+Xk/P////////////a2fv/QDjp/ygg5v8pIeb/KSHm/ykh
5v8pIeb/KSHm/ykh5v8pIeb/KSHm/ycf5v9AOen/3Nr7////////////////////////////////////
//////////////////////////////////////////////768f/utjj/ra2t////////////////////
/////////////8PA+P8tJuf/KSHm/ykh5v8pIeb/KSHm/ykh5v8pIeb/KSHm/yYe5v+Ig/H///////Dw
/f9ZU+z/Jh7m/ykh5v8pIeb/KSHm/ykh5v8pIeb/KSHm/ykh5v8mHub/Xljs//X0/v///////v7//4aC
8f8mHub/KSHm/ykh5v8pIeb/KSHm/ykh5v8pIeb/KSHm/ykh5v8pIeb/Jx7m/4yI8v//////////////
///////////////////////////////////////////////////////////////////++vH/7rY4/62t
rf/////////////////////////////////t7f3/VlDr/ycf5v8pIeb/KSHm/ykh5v8pIeb/KSHm/ykh
5v8mHub/VE7r/+7t/f//////jYny/yYe5v8pIeb/KSHm/ykh5v8pIeb/KSHm/ykh5v8pIeb/KSHm/zAo
5/+8uff///////////+9u/f/Lyjn/ygg5v8pIeb/KSHm/ykh5v8pIeb/KSHm/ykh5v8pIeb/KSHm/yYe
5v9YUuv/8PD9////////////////////////////////////////////////////////////////////
/////////vrx/+62OP+tra3//////////////////////////////////////6Ke9P8nH+b/KSHm/ykh
5v8pIeb/KSHm/ykh5v8pIeb/KSHm/ysk5v+sqfX//////9zb+/9BOun/KB/m/ykh5v8pIeb/KSHm/ykh
5v8pIeb/KSHm/ykh5v8lHeb/fnnw//7+////////9fX+/2Vf7f8mHub/KSHm/ykh5v8pIeb/KSHm/ykh
5v8pIeb/KSHm/ykh5v8pIeb/LSXm/7Gu9v//////////////////////////////////////////////
//////////////////////////////768f/utjj/ra2t////////////////////////////////////
///W1Pr/PTbo/ygf5v8pIeb/KSHm/ykh5v8pIeb/KSHm/ykh5v8lHeb/cm3v//v7///7+///a2Xu/yYd
5v8pIeb/KSHm/ykh5v8pIeb/KSHm/ykh5v8pIeb/Jx/m/0I76f/b2fv///////////+5tvf/Libn/ykh
5v8pIeb/KSHm/ykh5v8pIeb/KSHm/ykh5v8pIeb/KSHm/yUd5v93cu///Pz/////////////////////
///////////////////////////////////////////////////++vH/7rY4/62trf//////////////
/////////////////////////f3//4R/8f8nH+b/KSHm/ykh5v8pIeb/KSHm/ykh5v8pIeb/KCDm/zkx
6P/OzPn//////7279/8xKef/KCDm/ykh5v8pIeb/KSHm/ykh5v8pIeb/KSHm/ykh5v8nH+b/oJz0////
////////5eT8/0dB6v8nH+b/KSHm/ykh5v8pIeb/KSHm/ykh5v8pIeb/KSHm/ykh5v8oIOb/OzTo/9LQ
+v///////////////////////////////////////////////////////////////////////vrx/+62
OP+tra3////////////////////////////////////////////S0Pr/Ni7o/ygg5v8pIeb/KSHm/ykh
5v8pIeb/KSHm/ykh5v8mHub/k4/y///////v7/3/T0jq/yYe5v8pIeb/KSHm/ykh5v8pIeb/KSHm/ykh
5v8pIeb/Jh7m/11X7P/x8P3///////////+VkfP/KB/m/ykh5v8pIeb/KSHm/ykh5v8pIeb/KSHm/ykh
5v8pIeb/KSHm/yYe5v+ZlfP/////////////////////////////////////////////////////////
//////////////768f/utjj/ra2t////////////////////////////////////////////8/L+/2Ba
7P8mHub/KSHm/ykh5v8pIeb/KSHm/ykh5v8pIeb/Jx/m/1BK6//o6Pz//////5iU8/8pIeb/KSHm/ykh
5v8pIeb/KSHm/ykh5v8pIeb/KSHm/ykh5v8tJuf/wb74////////////zsz5/zQs5/8oIOb/KSHm/ykh
5v8pIeb/KSHm/ykh5v8pIeb/KSHm/ykh5v8nH+b/VE3r/+vq/f//////////////////////////////
///////////////////////////////////++vH/7rU4/62trf//////////////////////////////
//////////////////+ysPb/KyPm/ykh5v8pIeb/KSHm/ykh5v8pIeb/KSHm/ykh5v8qIub/tbP2////
///a2fv/OTLo/ygg5v8pIeb/KSHm/ykh5v8pIeb/KSHm/ykh5v8pIeb/Jx7m/4B78P/9/f////////n5
/v9wa+7/Jh7m/ykh5v8pIeb/KSHm/ykh5v8pIeb/KSHm/ykh5v8pIeb/KCDm/ygg5v+3tPf/////////
/////////////////////////////////////////////////////////vv1//PMc/+tra3/////////
////////////////////////////////////////4N/7/0Q96f8nH+b/KSHm/ykh5v8pIeb/KSHm/ykh
5v8pIeb/Jh7m/3Br7v/5+f7/+fn+/3Jt7/8mHub/KSHm/ykh5v8pIeb/KSHm/ykh5v8pIeb/KSHm/ygg
5v88NOj/29n7////////////sa72/yoi5v8pIeb/KSHm/ykh5v8pIeb/KSHm/ykh5v8nH+b/JR3m/y8o
5/9jXe3/urf3////////////////////////////////////////////////////////////////////
////////ra2t//////////////////////////////////////////////////////+Pi/L/Jx/m/ykh
5v8pIeb/KSHm/ykh5v8pIeb/KSHm/ygg5v81Lef/09H6//////++vPf/LCXm/ykh5v8pIeb/KSHm/ykh
5v8pIeb/KSHm/ykh5v8pIeb/KSHm/6Og9P///////////+jo/P9RSuv/Jx/m/ykh5v8pIeb/KSHm/yce
5v8oIOb/QDnp/4SA8f+8uvf/9PT+////////////////////////////////////////////////////
/////////////////////v7/+ea6/62trf//////////////////////////////////////////////
////////xsT4/zIq5/8oIOb/KSHm/ykh5v8pIeb/KSHm/ykh5v8pIeb/KCDm/5aS8///////6un9/1FK
6/8nH+b/KSHm/ykh5v8pIeb/KSHm/ykh5v8nH+b/Jx/m/y8n5/99efD/9vb+////////////j4vy/yUd
5v8oIOb/Jx/m/y8n5/9aVOz/p6T1/9rZ+//8/P//////////////////////////////////////////
////////////////////////////////////////+unD/+uqGf+tra3/////////////////////////
//////////////////////////////j4/v9sZu7/Jh7m/ykh5v8pIeb/KSHm/ykh5v8pIeb/KSHm/yYe
5v9EPen/4N/7//////+dmfT/Jx/m/ykh5v8pIeb/KCDm/yYe5v8sJOb/QTrp/4WA8f/Myvn/8fH9////
/////////////87M+f83L+j/ODHo/3558P/Ixvn/8O/9////////////////////////////////////
//////////////////////////////////////////////////////////////rqxv/rqBX/ra2t////
////////////////////////////////////////////////////////p6T1/ygg5v8pIeb/KSHm/ykh
5v8pIeb/KB/m/yUd5v8xKef/UUvr/8vJ+f//////0c/6/zoy6P8mHub/Jh7m/zcw6P9bVOz/q6j1/+Tj
/P/8+//////////////////////////////6+v7/tbP2/87M+f/7+///////////////////////////
////////////////////////////////////////////////////////////////////////////////
///+/Pj/99ye/62trf///////////////////////////////////////////////////////////+bl
/P9NRur/Jx/m/ykh5v8mHub/Jh7m/0E66f9taO7/vbv3//Dw/f/9/f////////z8//99ePD/SEHq/3x3
8P/Pzfn/9PT+//7+////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////+tra3/////////////////////////////////////////
////////////////////////hYHx/yIa5f8tJeb/W1Ts/5CM8v/d2/v//Pz/////////////////////
////////4+L8/9jX+v/v7v3/9PT+//79////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////ra2t////////////////////
/////////////////////////////////////////////8zK+f9/evD/s7D2//Hx/f//////////////
////////9PP+/9TT+v+cmPP/l5Pz/42J8v9TTev/SkPq/1VO6/+Pi/L/l5Pz/5+b9P/Y1/r/9vX+////
////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////62t
rf/////////////////////////////////////////////////////////////////7+///+vr+////
//////////////7+///j4vz/mJXz/2Jc7f83MOj/Jx/m/yUd5v8lHeb/Jx7m/ycf5v8mHub/JR3m/yUd
5v8oIOb/OTHo/2di7f+FgPH/y8n5//v6/v//////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
//////////////////+tra3/////////////////////////////////////////////////////////
/////////////////////////v7//+Ph/P+VkfP/R0Dp/ycf5v8mHub/KCDm/ykh5v8pIeb/KSHm/ykh
5v8pIeb/KSHm/ykh5v8pIeb/KSHm/ygg5v8mHub/JR3m/zYu6P95dO//5OP8//7+////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////ra2t////////////////////////////////////
/////////////////////////////////////////v7//7Ct9v9GP+n/KB/m/ycf5v8pIeb/KSHm/ykh
5v8pIeb/KSHm/ykh5v8pIeb/KSHm/ykh5v8pIeb/KSHm/ykh5v8pIeb/KSHm/ykh5v8oIOb/Jx/m/0xF
6v+dmfT/8fD9////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////62trf//////////////
////////////////////////////////////////////////////////7Oz9/4qG8f83MOj/Jh7m/ykh
5v8pIeb/KSHm/ykh5v8pIeb/KSHm/ykh5v8pIeb/KSHm/ykh5v8pIeb/KSHm/ykh5v8pIeb/KSHm/ykh
5v8pIeb/KSHm/ykh5v8nH+b/KCDm/3x38P/y8v7/////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
//+tra3/////////////////////////////////////////////////////////////////7ez9/3Fr
7v8mHub/KCDm/ykh5v8pIeb/KSHm/ykh5v8pIeb/KSHm/ygg5v8mHub/JR3m/yUd5v8lHeb/JR3m/yUd
5v8nHub/KCDm/ykh5v8pIeb/KSHm/ykh5v8pIeb/KSHm/ykh5v8pIeb/d3Lv/9rY+///////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////ra2t////////////////////////////////////////////////////
////////7Oz9/3Fs7v8nH+b/KSHm/ykh5v8pIeb/KSHm/ykh5v8pIeb/Jx/m/yYe5v82Luf/W1Xs/4eD
8f+HgvH/h4Lx/4eC8f+GgvH/VlDr/zQs5/8mHub/Jx/m/ykh5v8pIeb/KSHm/ykh5v8pIeb/KSHm/yYd
5v9TTOv/6un9////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////62trf//////////////////////////////
////////////////////////+fn+/3hz7/8nH+b/KSHm/ykh5v8pIeb/KSHm/ykh5v8oIOb/KSHm/1BJ
6/+WkvP/zsz5//Hx/f///////////////////////////+/v/f/Jx/n/ko7y/0tE6v8oIOb/Jx/m/ykh
5v8pIeb/KSHm/ykh5v8pIeb/KiLm/3x38P/y8v7/////////////////////////////////////////
//////////////////////////////////////////////////////////////////+tra3/////////
/////////////////////////////////////////v7//66r9v8yKuf/KCDm/ykh5v8pIeb/KSHm/ykh
5v8mHub/NS7n/52a9P/q6f3//v7///////////////////////////////////////////////////7+
///m5fz/mpbz/0hB6v8nH+b/KSHm/ykh5v8pIeb/KSHm/ykh5v8oH+b/jIjy////////////////////
////////////////////////////////////////////////////////////////////////////////
////////ra2t/////////////////////////////////////////////////8/O+f85Muj/Jx/m/ykh
5v8pIeb/KSHm/ykh5v8oIOb/U03r/7Wy9v/9/f//////////////////////////////////////////
///////////////////////////////////Y1vr/Ukzr/yYe5v8pIeb/KSHm/ykh5v8pIeb/KCDm/zoz
6P/Bv/j/////////////////////////////////////////////////////////////////////////
/////////////////////////////62trf////////////////////////////////////////////v7
//96dvD/Jh7m/ykh5v8pIeb/KSHm/ykh5v8mHub/TEbq/9/e+///////////////////////////////
/////////////////////////////////////////////////////////////9jW+v9STOv/Jh7m/ykh
5v8pIeb/KSHm/ykh5v8lHeb/ZF7t//X1/v//////////////////////////////////////////////
//////////////////////////////////////////////////+tra3/////////////////////////
///////////////////OzPn/ODHo/ygg5v8pIeb/KSHm/ykh5v8oIOb/NS7n/6+s9v//////////////
////////////////////////////////////////////////////////////////////////////////
////////2Nb6/09J6v8nH+b/KSHm/ykh5v8pIeb/KCDm/y8o5/+7uPf/////////////////////////
////////////////////////////////////////////////////////////////////////ra2t////
///////////////////////////////////7+///enXv/yYe5v8pIeb/KSHm/ykh5v8pIeb/KCDm/5SQ
8v////////////////////////////////////////////b29//t7e3/7e3u/+3t7v/4+Pj/////////
//////////////////////////////////+tqvX/KyTm/ykh5v8pIeb/KSHm/ykh5v8mHub/aGLt//r5
/v//////////////////////////////////////////////////////////////////////////////
/////////////62trf//////////////////////////////////////7+/9/0tE6v8nH+b/KSHm/ykh
5v8pIeb/Jx/m/0hB6v/h4Pz/////////////////////////////////+Pj4/8TExv9ub3T/SElP/0lK
UP9JSU//c3N4/62usP/4+Pj/////////////////////////////////7+79/1hS7P8mHub/KSHm/ykh
5v8pIeb/KB/m/z846f/a2fv/////////////////////////////////////////////////////////
//////////////////////////////////+tra3//////////////////////////////////////8jG
+f81Lef/KCDm/ykh5v8pIeb/KSHm/y4m5/+zsfb/////////////////////////////////9vb2/4qL
j/8zNDr/KCkw/ykqMf8pKjH/KSox/ycoL/8wMTf/dXV6/93e3///////////////////////////////
//+sqfX/LCTm/ykh5v8pIeb/KSHm/ykh5v8pIeb/qqf1////////////////////////////////////
////////////////////////////////////////////////////////ra2t////////////////////
//////////////////+SjvL/Jh7m/ykh5v8pIeb/KSHm/ygg5v84MOj/2Nf6////////////////////
////////9vb2/4mKjf8sLTT/Kisy/yssM/8rLDP/Kywz/yssM/8rLDP/Kisy/yYnLv9mZ2z/9PT1////
////////////////////////7u39/1FL6/8mHub/KSHm/ykh5v8pIeb/JR3m/29q7v/+/v//////////
/////////////////////////////////////////////////////////////////////////////62t
rf/////////////////////////////////6+v7/X1ns/yYe5v8pIeb/KSHm/ykh5v8mHeb/Y13t//j3
/v///////////////////////////6usrv8tLjX/Kisy/yssM/8rLDP/Kywz/yssM/8rLDP/Kywz/yss
M/8rLDP/LzA3/52doP////////////////////////////////+HgvH/Jx/m/ykh5v8pIeb/KSHm/yUd
5v9taO7//v7/////////////////////////////////////////////////////////////////////
//////////////////+tra3/////////////////////////////////+vr+/19Z7P8mHub/KSHm/ykh
5v8pIeb/Jh7m/4B88P////////////////////////////n5+f9iYmj/KCkw/yssM/8rLDP/Kywz/yss
M/8rLDP/Kywz/yssM/8rLDP/Kywz/ygpMP9bXGH/8/Pz////////////////////////////sa72/ygg
5v8pIeb/KSHm/ykh5v8nH+b/SkPq/+Xk/P//////////////////////////////////////////////
////////////////////////////////////////ra2t//////////////////////////////////f3
/v9cVuz/Jh7m/ykh5v8pIeb/KSHm/ysj5v+9u/f////////////////////////////T09X/OjtC/yor
Mv8rLDP/Kisy/ykqMf8rLDP/Kywz/yssM/8rLDP/Kywz/yssM/8rLDP/NTY9/9PT1f//////////////
/////////////7Gu9v8oIOb/KSHm/ykh5v8pIeb/KSDm/zIr5//U0/r/////////////////////////
/////////////////////////////////////////////////////////////62trf//////////////
///////////////////Y1vr/PTbo/ygg5v8pIeb/KSHm/ykh5v8rI+b/wL34////////////////////
////////xMTG/y0uNf8rLDP/Kisy/zQ1PP9CQ0n/LS41/yssM/8rLDP/Kywz/yssM/8rLDP/Kywz/zM0
O//S0tP///////////////////////////+xrvb/KCDm/ykh5v8pIeb/KSHm/ygg5v8zLOf/1dT6////
////////////////////////////////////////////////////////////////////////////////
//+tra3/////////////////////////////////9fT+/1pU7P8mHub/KSHm/ykh5v8pIeb/KyPm/7+8
+P///////////////////////////8XGx/8vMDb/Kywz/ywtNP+io6b/1NTV/zs8Q/8qKzL/Kywz/yss
M/8rLDP/Kywz/yssM/8yMzr/0dHT////////////////////////////sa72/ygg5v8pIeb/KSHm/ykh
5v8oIOb/Myzn/9XU+v//////////////////////////////////////////////////////////////
//////////////7//v/9/v3/ra2t//////////////////////////////////r6/v9fWez/Jh7m/ykh
5v8pIeb/KSHm/ycf5v+GgfH////////////////////////////p6er/TU1T/ygpMf8rLDP/e3yA/6mp
rP83OD//Kisy/yssM/8rLDP/Kywz/yssM/8qKzL/REVL/+Dg4f///////////////////////////7Gu
9v8oIOb/KSHm/ykh5v8pIeb/KCDm/zYv6P/X1vr/////////////////////////////////////////
///////////////////////////////////V6MP/gblL/62trf//////////////////////////////
///19P7/WlPs/yYe5v8pIeb/KSHm/ykh5v8lHeb/bGbu//7+/////////////////////////f39/4aH
i/8rLDP/Kywz/yorMv8sLTT/Kywz/yssM/8rLDP/Kywz/yssM/8rLDP/Jicu/3Jyd//+/v7/////////
//////////////////+NifL/Jx/m/ykh5v8pIeb/KSHm/yYe5v9iXO3/9vb+////////////////////
////////////////////////////////////////////////////////2erJ/1miGP+tra3/////////
////////////////////////vrz3/zIq5/8pIeb/KSHm/ykh5v8pIeb/Jx/m/01G6v/n5vz/////////
///////////////////q6uv/VFRa/ygpMP8rLDP/Kywz/yssM/8rLDP/Kywz/yssM/8rLDP/KCkw/1FS
WP/V1df////////////////////////////6+v7/Xljs/yYe5v8pIeb/KSHm/ykh5v8lHeb/bmju//7+
//////////////////////////////////////////////////////////////////////////////v9
+f/C3aj/ra2t/////////////////////////////////3hz7/8lHeb/KSHm/ykh5v8pIeb/KSHm/ykh
5v8uJuf/vbv3/////////////////////////////////8zMzv9JSlD/Jygv/yorMv8rLDP/Kywz/yss
M/8qKzL/Jicv/1FSWP/V1df/////////////////////////////////1dT6/z026P8oIOb/KSHm/ykh
5v8pIeb/KSHm/6Wi9P//////////////////////////////////////////////////////////////
/////////////////////////////62trf///////////////////////////93c+/9EPen/Jx/m/ykh
5v8pIeb/KSHm/ykh5v8pIeb/Jh7m/2tl7v/39v7/////////////////////////////////z8/R/2ts
cf88PUP/Kisy/ygpMP8nKDD/Njc+/3JzeP/X19j//////////////////////////////////f3//4J9
8P8mHub/KSHm/ykh5v8pIeb/KSHm/y8n5//Fw/j/////////////////////////////////////////
//////////////////////////////////////////////////+tra3/////////////////////////
//+NifL/Jx/m/ykh5v8pIeb/KSHm/ykh5v8pIeb/KSHm/ygg5v8yKuf/wb/4////////////////////
///////////////////29vb/2trb/6Ojpv+cnaD/nJ2g/8fHyf/4+Pn/////////////////////////
/////////////9TS+v88Nej/KCDm/ykh5v8pIeb/KSHm/yYe5v9RSuv/8O/9////////////////////
////////////////////////////////////////////////////////////////////////ra2t////
///////////////////r6v3/SULq/ycf5v8pIeb/KSHm/ykh5v8pIeb/KSHm/ykh5v8pIeb/Jh7m/2Fb
7f/n5vz/////////////////////////////////////////////////////////////////////////
//////////////////////////////Ly/v9kXu3/Jx/m/ykh5v8pIeb/KSHm/ykh5v8nH+b/jYny////
////////////////////////////////////////////////////////////////////////////////
/////////////62trf//////////////////////1tT6/0dA6v8mHub/Jh7m/ykh5v8pIeb/KSHm/ykh
5v8pIeb/KSHm/ykh5v8mHub/eHLv//v7////////////////////////////////////////////////
//////////////////////////////////////////////r6/v+Xk/P/LSXm/ygg5v8pIeb/KSHm/ykh
5v8nH+b/Qjvp/9zb+///////////////////////////////////////////////////////////////
//////////////////////////////////+tra3///////////////////////39///Z1/v/mpbz/1tV
7P8sJeb/Jh7m/ygg5v8pIeb/KSHm/ykh5v8pIeb/KCDm/zMs5/+IhPH/5+b8////////////////////
//////////////////////////////////////////////////////////////r6/v+YlPP/Libn/ygg
5v8pIeb/KSHm/ykh5v8pIeb/Libn/6mm9f/+/v//////////////////////////////////////////
////////////////////////////////////////////////////////ra2t////////////////////
///////////////////v7v3/u7n3/3558P85Muj/Jx/m/ykh5v8pIeb/KSHm/ykh5v8oIOb/JR3m/2Vg
7f/T0fr//Pz//////////////////////////////////////////////////////////////////9/d
+/92ce//Lyfn/ygg5v8pIeb/KSHm/ykh5v8pIeb/JR3m/11X7P/x8f3/////////////////////////
/////////////////////////////////////////////////////////////////////////////62t
rf/////////////////////////////////////////////////8/P//09H6/19Z7P8mHub/KSHm/ykh
5v8pIeb/KSHm/ykh5v8nH+b/OTLo/3148P/R0Pr/9fT+////////////////////////////////////
///5+f7/5eT8/52Z9P9KROr/Jh7m/ygg5v8pIeb/KSHm/ykh5v8pIeb/Jx/m/0A56f/Dwfj/////////
////////////////////////////////////////////////////////////////////////////////
//////////////////+tra3/////////////////////////////////////////////////////////
///Dwfj/OjPo/ycf5v8pIeb/KSHm/ykh5v8pIeb/KSHm/ygg5v8mHub/OTHo/19Z7P+UkPL/u7j3/+Lg
/P/g3/v/4eD8/7Wy9v+Xk/P/dnHv/0M86f8pIeb/Jx/m/ykh5v8pIeb/KSHm/ykh5v8pIeb/Jh7m/0A5
6f/Cv/j/////////////////////////////////////////////////////////////////////////
////////////////////////////////////////ra2t////////////////////////////////////
/////////////////////////////7e09/85Muj/Jh3m/ykh5v8pIeb/KSHm/ykh5v8pIeb/KSHm/ygg
5v8mHub/JR3m/zAo5/87NOj/OzTo/zs06P8uJuf/JR3m/yYe5v8nH+b/KSHm/ykh5v8pIeb/KSHm/ykh
5v8pIeb/Jx/m/zkx6P+lovT/////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////62trf//////////////
////////////////////////////////////////////////////////u7n3/1VP6/8nH+b/KCDm/ykh
5v8pIeb/KSHm/ykh5v8pIeb/KSHm/ykh5v8oIOb/KCDm/ygg5v8oIOb/KSDm/ykh5v8pIeb/KSHm/ykh
5v8pIeb/KSHm/ykh5v8pIeb/JR3m/0A46f/Cv/j//f3/////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
//+tra3/////////////////////////////////////////////////////////////////////////
///n5vz/bGbu/y4m5/8nH+b/KSHm/ykh5v8pIeb/KSHm/ykh5v8pIeb/KSHm/ykh5v8pIeb/KSHm/ykh
5v8pIeb/KSHm/ykh5v8pIeb/KSHm/ykh5v8nH+b/KCDm/2Re7f/Ixvn/////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////ra2t////////////////////////////////////////////////////
//////////////////////////////T0/v+lofT/RD3p/ycf5v8nH+b/KSHm/ykh5v8pIeb/KSHm/ykh
5v8pIeb/KSHm/ykh5v8pIeb/KSHm/ykh5v8pIeb/KSHm/ycf5v8oIOb/SkPq/5qW8//s7P3/////////
////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////62trf//////////////////////////////
/////////////////////////////////////////////////////////v7//+Hg/P+UkPL/R0Dq/zMr
5/8pIOb/KCDm/ykh5v8pIeb/KSHm/ykh5v8pIeb/KSHm/ykh5v8pIeb/Jx/m/y8n5/9MRer/m5fz/+bl
/P/+/v//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////+tra3/////////
////////////////////////////////////////////////////////////////////////////////
/////////////+Df+//Ixvn/hYDx/0U+6f8nH+b/KSHm/ykh5v8pIeb/KSHm/ykh5v8oIOb/Mirn/29q
7v+zsfb/5eT8////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=
</value>
</data>
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAABAAEAQEAAAAEAIAAoQgAAFgAAACgAAABAAAAAgAAAAAEAIAAAAAAAAEAAAMMOAADDDgAAAAAAAAAA
AACtra3/////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////7+
//95dO//JR3m/ykh5v8pIeb/KSHm/ykh5v8pIeb/KSHm/ykh5v8pIeb/KSHm/ycf5v+alvP/////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////ra2t////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////x8X4/zUu5/8oIOb/KSHm/ykh5v8pIeb/KSHm/ykh5v8pIeb/KSHm/ykh
5v8mHub/Xljs//f3/v//////////////////////////////////////////////////////////////
/////////////////////////////////////////////62trf//////////////////////////////
///////////////////////////////////////////////////y8f3/r6z2/6ai9f+mo/X/pqP1/6aj
9f+mo/X/pqP1/6aj9f+mo/X/paL0/7+89//7+/////////X1/v9ZU+z/Jh7m/ykh5v8pIeb/KSHm/ykh
5v8pIeb/KSHm/ykh5v8pIeb/KCDm/zUu5//Hxfn/////////////////////////////////////////
//////////////////////////////////////////////////////////////////+tra3/////////
////////////////////////////////////////////////////////////////////////+fn+/3Jt
7/8kHOX/Jx/m/ycf5v8nH+b/Jx/m/ycf5v8nH+b/Jx/m/yUd5v88Nej/3t37////////////o6D0/ysj
5v8pIeb/KSHm/ykh5v8pIeb/KSHm/ykh5v8pIeb/KSHm/ykh5v8lHeb/fHfw////////////////////
///////////////////////////////////////////////////////////////////////////////+
/P/88tz/ra2t////////////////////////////////////////////////////////////////////
//////////////////+8uvf/KyPm/ykh5v8pIeb/KSHm/ykh5v8pIeb/KSHm/ykh5v8pIeb/KiLm/6Sh
9P///////////+Tj/P9BOun/Jx/m/ykh5v8pIeb/KSHm/ykh5v8pIeb/KSHm/ykh5v8pIeb/Jx/m/0lC
6v/k4/z/////////////////////////////////////////////////////////////////////////
///////////////////++vL/77tE/62trf//////////////////////////////////////////////
////////////////////////////////////////6+r9/1NN6/8nH+b/KSHm/ykh5v8pIeb/KSHm/ykh
5v8pIeb/KSHm/yYe5v9UTev/8O/9///////8+///fXjw/yce5v8pIeb/KSHm/ykh5v8pIeb/KSHm/ykh
5v8pIeb/KSHm/ykh5v8oIOb/l5Pz////////////////////////////////////////////////////
/////////////////////////////////////////vrx/+62OP+tra3///////////////////////n5
/v+sqfX/kIzy/5GN8v+RjfL/kY3y/5GN8v+RjfL/kY3y/5GM8v+emvT/8/L+//////+bl/P/Jh7m/ykh
5v8pIeb/KSHm/ykh5v8pIeb/KSHm/ykh5v8oIOb/NCzn/8fF+P///////////8rI+f8xKef/KSHm/ykh
5v8pIeb/KSHm/ykh5v8pIeb/KSHm/ykh5v8pIeb/Jx7m/01H6v/u7f3/////////////////////////
//////////////////////////////////////////////////////////////768f/utjj/ra2t////
////////////////////////nJjz/yYe5v8lHeb/JR3m/yUd5v8lHeb/JR3m/yUd5v8kHOX/LCXm/7m2
9///////0tD6/zs06P8oIOb/KSHm/ykh5v8pIeb/KSHm/ykh5v8pIeb/KSHm/yYe5v9zbe//+/v/////
///v7/3/WlTs/yYe5v8pIeb/KSHm/ykh5v8pIeb/KSHm/ykh5v8pIeb/KSHm/ygg5v8xKef/vbv3////
////////////////////////////////////////////////////////////////////////////////
///++vH/7rY4/62trf///////////////////////////97c+/88NOj/KCDm/ykh5v8pIeb/KSHm/ykh
5v8pIeb/KSHm/yYe5v9lX+3/+fj+//39//94c+//JR3m/ykh5v8pIeb/KSHm/ykh5v8pIeb/KSHm/ykh
5v8nH+b/RT7p/+Lh/P///////////6qn9f8pIeb/KSHm/ykh5v8pIeb/KSHm/ykh5v8pIeb/KSHm/ykh
5v8pIeb/Jh3m/2pk7v/6+v7/////////////////////////////////////////////////////////
/////////////////////////vrx/+62OP+tra3////////////////////////////7+/7/eXTv/yce
5v8pIeb/KSHm/ykh5v8pIeb/KSHm/ykh5v8oIOb/Pjbo/9jX+v//////sa72/y0l5v8pIeb/KSHm/ykh
5v8pIeb/KSHm/ykh5v8pIeb/KSHm/ygg5v+Xk/P////////////a2fv/QDjp/ygg5v8pIeb/KSHm/ykh
5v8pIeb/KSHm/ykh5v8pIeb/KSHm/ycf5v9AOen/3Nr7////////////////////////////////////
//////////////////////////////////////////////768f/utjj/ra2t////////////////////
/////////////8PA+P8tJuf/KSHm/ykh5v8pIeb/KSHm/ykh5v8pIeb/KSHm/yYe5v+Ig/H///////Dw
/f9ZU+z/Jh7m/ykh5v8pIeb/KSHm/ykh5v8pIeb/KSHm/ykh5v8mHub/Xljs//X0/v///////v7//4aC
8f8mHub/KSHm/ykh5v8pIeb/KSHm/ykh5v8pIeb/KSHm/ykh5v8pIeb/Jx7m/4yI8v//////////////
///////////////////////////////////////////////////////////////////++vH/7rY4/62t
rf/////////////////////////////////t7f3/VlDr/ycf5v8pIeb/KSHm/ykh5v8pIeb/KSHm/ykh
5v8mHub/VE7r/+7t/f//////jYny/yYe5v8pIeb/KSHm/ykh5v8pIeb/KSHm/ykh5v8pIeb/KSHm/zAo
5/+8uff///////////+9u/f/Lyjn/ygg5v8pIeb/KSHm/ykh5v8pIeb/KSHm/ykh5v8pIeb/KSHm/yYe
5v9YUuv/8PD9////////////////////////////////////////////////////////////////////
/////////vrx/+62OP+tra3//////////////////////////////////////6Ke9P8nH+b/KSHm/ykh
5v8pIeb/KSHm/ykh5v8pIeb/KSHm/ysk5v+sqfX//////9zb+/9BOun/KB/m/ykh5v8pIeb/KSHm/ykh
5v8pIeb/KSHm/ykh5v8lHeb/fnnw//7+////////9fX+/2Vf7f8mHub/KSHm/ykh5v8pIeb/KSHm/ykh
5v8pIeb/KSHm/ykh5v8pIeb/LSXm/7Gu9v//////////////////////////////////////////////
//////////////////////////////768f/utjj/ra2t////////////////////////////////////
///W1Pr/PTbo/ygf5v8pIeb/KSHm/ykh5v8pIeb/KSHm/ykh5v8lHeb/cm3v//v7///7+///a2Xu/yYd
5v8pIeb/KSHm/ykh5v8pIeb/KSHm/ykh5v8pIeb/Jx/m/0I76f/b2fv///////////+5tvf/Libn/ykh
5v8pIeb/KSHm/ykh5v8pIeb/KSHm/ykh5v8pIeb/KSHm/yUd5v93cu///Pz/////////////////////
///////////////////////////////////////////////////++vH/7rY4/62trf//////////////
/////////////////////////f3//4R/8f8nH+b/KSHm/ykh5v8pIeb/KSHm/ykh5v8pIeb/KCDm/zkx
6P/OzPn//////7279/8xKef/KCDm/ykh5v8pIeb/KSHm/ykh5v8pIeb/KSHm/ykh5v8nH+b/oJz0////
////////5eT8/0dB6v8nH+b/KSHm/ykh5v8pIeb/KSHm/ykh5v8pIeb/KSHm/ykh5v8oIOb/OzTo/9LQ
+v///////////////////////////////////////////////////////////////////////vrx/+62
OP+tra3////////////////////////////////////////////S0Pr/Ni7o/ygg5v8pIeb/KSHm/ykh
5v8pIeb/KSHm/ykh5v8mHub/k4/y///////v7/3/T0jq/yYe5v8pIeb/KSHm/ykh5v8pIeb/KSHm/ykh
5v8pIeb/Jh7m/11X7P/x8P3///////////+VkfP/KB/m/ykh5v8pIeb/KSHm/ykh5v8pIeb/KSHm/ykh
5v8pIeb/KSHm/yYe5v+ZlfP/////////////////////////////////////////////////////////
//////////////768f/utjj/ra2t////////////////////////////////////////////8/L+/2Ba
7P8mHub/KSHm/ykh5v8pIeb/KSHm/ykh5v8pIeb/Jx/m/1BK6//o6Pz//////5iU8/8pIeb/KSHm/ykh
5v8pIeb/KSHm/ykh5v8pIeb/KSHm/ykh5v8tJuf/wb74////////////zsz5/zQs5/8oIOb/KSHm/ykh
5v8pIeb/KSHm/ykh5v8pIeb/KSHm/ykh5v8nH+b/VE3r/+vq/f//////////////////////////////
///////////////////////////////////++vH/7rU4/62trf//////////////////////////////
//////////////////+ysPb/KyPm/ykh5v8pIeb/KSHm/ykh5v8pIeb/KSHm/ykh5v8qIub/tbP2////
///a2fv/OTLo/ygg5v8pIeb/KSHm/ykh5v8pIeb/KSHm/ykh5v8pIeb/Jx7m/4B78P/9/f////////n5
/v9wa+7/Jh7m/ykh5v8pIeb/KSHm/ykh5v8pIeb/KSHm/ykh5v8pIeb/KCDm/ygg5v+3tPf/////////
/////////////////////////////////////////////////////////vv1//PMc/+tra3/////////
////////////////////////////////////////4N/7/0Q96f8nH+b/KSHm/ykh5v8pIeb/KSHm/ykh
5v8pIeb/Jh7m/3Br7v/5+f7/+fn+/3Jt7/8mHub/KSHm/ykh5v8pIeb/KSHm/ykh5v8pIeb/KSHm/ygg
5v88NOj/29n7////////////sa72/yoi5v8pIeb/KSHm/ykh5v8pIeb/KSHm/ykh5v8nH+b/JR3m/y8o
5/9jXe3/urf3////////////////////////////////////////////////////////////////////
////////ra2t//////////////////////////////////////////////////////+Pi/L/Jx/m/ykh
5v8pIeb/KSHm/ykh5v8pIeb/KSHm/ygg5v81Lef/09H6//////++vPf/LCXm/ykh5v8pIeb/KSHm/ykh
5v8pIeb/KSHm/ykh5v8pIeb/KSHm/6Og9P///////////+jo/P9RSuv/Jx/m/ykh5v8pIeb/KSHm/yce
5v8oIOb/QDnp/4SA8f+8uvf/9PT+////////////////////////////////////////////////////
/////////////////////v7/+ea6/62trf//////////////////////////////////////////////
////////xsT4/zIq5/8oIOb/KSHm/ykh5v8pIeb/KSHm/ykh5v8pIeb/KCDm/5aS8///////6un9/1FK
6/8nH+b/KSHm/ykh5v8pIeb/KSHm/ykh5v8nH+b/Jx/m/y8n5/99efD/9vb+////////////j4vy/yUd
5v8oIOb/Jx/m/y8n5/9aVOz/p6T1/9rZ+//8/P//////////////////////////////////////////
////////////////////////////////////////+unD/+uqGf+tra3/////////////////////////
//////////////////////////////j4/v9sZu7/Jh7m/ykh5v8pIeb/KSHm/ykh5v8pIeb/KSHm/yYe
5v9EPen/4N/7//////+dmfT/Jx/m/ykh5v8pIeb/KCDm/yYe5v8sJOb/QTrp/4WA8f/Myvn/8fH9////
/////////////87M+f83L+j/ODHo/3558P/Ixvn/8O/9////////////////////////////////////
//////////////////////////////////////////////////////////////rqxv/rqBX/ra2t////
////////////////////////////////////////////////////////p6T1/ygg5v8pIeb/KSHm/ykh
5v8pIeb/KB/m/yUd5v8xKef/UUvr/8vJ+f//////0c/6/zoy6P8mHub/Jh7m/zcw6P9bVOz/q6j1/+Tj
/P/8+//////////////////////////////6+v7/tbP2/87M+f/7+///////////////////////////
////////////////////////////////////////////////////////////////////////////////
///+/Pj/99ye/62trf///////////////////////////////////////////////////////////+bl
/P9NRur/Jx/m/ykh5v8mHub/Jh7m/0E66f9taO7/vbv3//Dw/f/9/f////////z8//99ePD/SEHq/3x3
8P/Pzfn/9PT+//7+////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////+tra3/////////////////////////////////////////
////////////////////////hYHx/yIa5f8tJeb/W1Ts/5CM8v/d2/v//Pz/////////////////////
////////4+L8/9jX+v/v7v3/9PT+//79////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////ra2t////////////////////
/////////////////////////////////////////////8zK+f9/evD/s7D2//Hx/f//////////////
////////9PP+/9TT+v+cmPP/l5Pz/42J8v9TTev/SkPq/1VO6/+Pi/L/l5Pz/5+b9P/Y1/r/9vX+////
////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////62t
rf/////////////////////////////////////////////////////////////////7+///+vr+////
//////////////7+///j4vz/mJXz/2Jc7f83MOj/Jx/m/yUd5v8lHeb/Jx7m/ycf5v8mHub/JR3m/yUd
5v8oIOb/OTHo/2di7f+FgPH/y8n5//v6/v//////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
//////////////////+tra3/////////////////////////////////////////////////////////
/////////////////////////v7//+Ph/P+VkfP/R0Dp/ycf5v8mHub/KCDm/ykh5v8pIeb/KSHm/ykh
5v8pIeb/KSHm/ykh5v8pIeb/KSHm/ygg5v8mHub/JR3m/zYu6P95dO//5OP8//7+////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////ra2t////////////////////////////////////
/////////////////////////////////////////v7//7Ct9v9GP+n/KB/m/ycf5v8pIeb/KSHm/ykh
5v8pIeb/KSHm/ykh5v8pIeb/KSHm/ykh5v8pIeb/KSHm/ykh5v8pIeb/KSHm/ykh5v8oIOb/Jx/m/0xF
6v+dmfT/8fD9////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////62trf//////////////
////////////////////////////////////////////////////////7Oz9/4qG8f83MOj/Jh7m/ykh
5v8pIeb/KSHm/ykh5v8pIeb/KSHm/ykh5v8pIeb/KSHm/ykh5v8pIeb/KSHm/ykh5v8pIeb/KSHm/ykh
5v8pIeb/KSHm/ykh5v8nH+b/KCDm/3x38P/y8v7/////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
//+tra3/////////////////////////////////////////////////////////////////7ez9/3Fr
7v8mHub/KCDm/ykh5v8pIeb/KSHm/ykh5v8pIeb/KSHm/ygg5v8mHub/JR3m/yUd5v8lHeb/JR3m/yUd
5v8nHub/KCDm/ykh5v8pIeb/KSHm/ykh5v8pIeb/KSHm/ykh5v8pIeb/d3Lv/9rY+///////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////ra2t////////////////////////////////////////////////////
////////7Oz9/3Fs7v8nH+b/KSHm/ykh5v8pIeb/KSHm/ykh5v8pIeb/Jx/m/yYe5v82Luf/W1Xs/4eD
8f+HgvH/h4Lx/4eC8f+GgvH/VlDr/zQs5/8mHub/Jx/m/ykh5v8pIeb/KSHm/ykh5v8pIeb/KSHm/yYd
5v9TTOv/6un9////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////62trf//////////////////////////////
////////////////////////+fn+/3hz7/8nH+b/KSHm/ykh5v8pIeb/KSHm/ykh5v8oIOb/KSHm/1BJ
6/+WkvP/zsz5//Hx/f///////////////////////////+/v/f/Jx/n/ko7y/0tE6v8oIOb/Jx/m/ykh
5v8pIeb/KSHm/ykh5v8pIeb/KiLm/3x38P/y8v7/////////////////////////////////////////
//////////////////////////////////////////////////////////////////+tra3/////////
/////////////////////////////////////////v7//66r9v8yKuf/KCDm/ykh5v8pIeb/KSHm/ykh
5v8mHub/NS7n/52a9P/q6f3//v7///////////////////////////////////////////////////7+
///m5fz/mpbz/0hB6v8nH+b/KSHm/ykh5v8pIeb/KSHm/ykh5v8oH+b/jIjy////////////////////
////////////////////////////////////////////////////////////////////////////////
////////ra2t/////////////////////////////////////////////////8/O+f85Muj/Jx/m/ykh
5v8pIeb/KSHm/ykh5v8oIOb/U03r/7Wy9v/9/f//////////////////////////////////////////
///////////////////////////////////Y1vr/Ukzr/yYe5v8pIeb/KSHm/ykh5v8pIeb/KCDm/zoz
6P/Bv/j/////////////////////////////////////////////////////////////////////////
/////////////////////////////62trf////////////////////////////////////////////v7
//96dvD/Jh7m/ykh5v8pIeb/KSHm/ykh5v8mHub/TEbq/9/e+///////////////////////////////
/////////////////////////////////////////////////////////////9jW+v9STOv/Jh7m/ykh
5v8pIeb/KSHm/ykh5v8lHeb/ZF7t//X1/v//////////////////////////////////////////////
//////////////////////////////////////////////////+tra3/////////////////////////
///////////////////OzPn/ODHo/ygg5v8pIeb/KSHm/ykh5v8oIOb/NS7n/6+s9v//////////////
////////////////////////////////////////////////////////////////////////////////
////////2Nb6/09J6v8nH+b/KSHm/ykh5v8pIeb/KCDm/y8o5/+7uPf/////////////////////////
////////////////////////////////////////////////////////////////////////ra2t////
///////////////////////////////////7+///enXv/yYe5v8pIeb/KSHm/ykh5v8pIeb/KCDm/5SQ
8v////////////////////////////////////////////b29//t7e3/7e3u/+3t7v/4+Pj/////////
//////////////////////////////////+tqvX/KyTm/ykh5v8pIeb/KSHm/ykh5v8mHub/aGLt//r5
/v//////////////////////////////////////////////////////////////////////////////
/////////////62trf//////////////////////////////////////7+/9/0tE6v8nH+b/KSHm/ykh
5v8pIeb/Jx/m/0hB6v/h4Pz/////////////////////////////////+Pj4/8TExv9ub3T/SElP/0lK
UP9JSU//c3N4/62usP/4+Pj/////////////////////////////////7+79/1hS7P8mHub/KSHm/ykh
5v8pIeb/KB/m/z846f/a2fv/////////////////////////////////////////////////////////
//////////////////////////////////+tra3//////////////////////////////////////8jG
+f81Lef/KCDm/ykh5v8pIeb/KSHm/y4m5/+zsfb/////////////////////////////////9vb2/4qL
j/8zNDr/KCkw/ykqMf8pKjH/KSox/ycoL/8wMTf/dXV6/93e3///////////////////////////////
//+sqfX/LCTm/ykh5v8pIeb/KSHm/ykh5v8pIeb/qqf1////////////////////////////////////
////////////////////////////////////////////////////////ra2t////////////////////
//////////////////+SjvL/Jh7m/ykh5v8pIeb/KSHm/ygg5v84MOj/2Nf6////////////////////
////////9vb2/4mKjf8sLTT/Kisy/yssM/8rLDP/Kywz/yssM/8rLDP/Kisy/yYnLv9mZ2z/9PT1////
////////////////////////7u39/1FL6/8mHub/KSHm/ykh5v8pIeb/JR3m/29q7v/+/v//////////
/////////////////////////////////////////////////////////////////////////////62t
rf/////////////////////////////////6+v7/X1ns/yYe5v8pIeb/KSHm/ykh5v8mHeb/Y13t//j3
/v///////////////////////////6usrv8tLjX/Kisy/yssM/8rLDP/Kywz/yssM/8rLDP/Kywz/yss
M/8rLDP/LzA3/52doP////////////////////////////////+HgvH/Jx/m/ykh5v8pIeb/KSHm/yUd
5v9taO7//v7/////////////////////////////////////////////////////////////////////
//////////////////+tra3/////////////////////////////////+vr+/19Z7P8mHub/KSHm/ykh
5v8pIeb/Jh7m/4B88P////////////////////////////n5+f9iYmj/KCkw/yssM/8rLDP/Kywz/yss
M/8rLDP/Kywz/yssM/8rLDP/Kywz/ygpMP9bXGH/8/Pz////////////////////////////sa72/ygg
5v8pIeb/KSHm/ykh5v8nH+b/SkPq/+Xk/P//////////////////////////////////////////////
////////////////////////////////////////ra2t//////////////////////////////////f3
/v9cVuz/Jh7m/ykh5v8pIeb/KSHm/ysj5v+9u/f////////////////////////////T09X/OjtC/yor
Mv8rLDP/Kisy/ykqMf8rLDP/Kywz/yssM/8rLDP/Kywz/yssM/8rLDP/NTY9/9PT1f//////////////
/////////////7Gu9v8oIOb/KSHm/ykh5v8pIeb/KSDm/zIr5//U0/r/////////////////////////
/////////////////////////////////////////////////////////////62trf//////////////
///////////////////Y1vr/PTbo/ygg5v8pIeb/KSHm/ykh5v8rI+b/wL34////////////////////
////////xMTG/y0uNf8rLDP/Kisy/zQ1PP9CQ0n/LS41/yssM/8rLDP/Kywz/yssM/8rLDP/Kywz/zM0
O//S0tP///////////////////////////+xrvb/KCDm/ykh5v8pIeb/KSHm/ygg5v8zLOf/1dT6////
////////////////////////////////////////////////////////////////////////////////
//+tra3/////////////////////////////////9fT+/1pU7P8mHub/KSHm/ykh5v8pIeb/KyPm/7+8
+P///////////////////////////8XGx/8vMDb/Kywz/ywtNP+io6b/1NTV/zs8Q/8qKzL/Kywz/yss
M/8rLDP/Kywz/yssM/8yMzr/0dHT////////////////////////////sa72/ygg5v8pIeb/KSHm/ykh
5v8oIOb/Myzn/9XU+v//////////////////////////////////////////////////////////////
//////////////7//v/9/v3/ra2t//////////////////////////////////r6/v9fWez/Jh7m/ykh
5v8pIeb/KSHm/ycf5v+GgfH////////////////////////////p6er/TU1T/ygpMf8rLDP/e3yA/6mp
rP83OD//Kisy/yssM/8rLDP/Kywz/yssM/8qKzL/REVL/+Dg4f///////////////////////////7Gu
9v8oIOb/KSHm/ykh5v8pIeb/KCDm/zYv6P/X1vr/////////////////////////////////////////
///////////////////////////////////V6MP/gblL/62trf//////////////////////////////
///19P7/WlPs/yYe5v8pIeb/KSHm/ykh5v8lHeb/bGbu//7+/////////////////////////f39/4aH
i/8rLDP/Kywz/yorMv8sLTT/Kywz/yssM/8rLDP/Kywz/yssM/8rLDP/Jicu/3Jyd//+/v7/////////
//////////////////+NifL/Jx/m/ykh5v8pIeb/KSHm/yYe5v9iXO3/9vb+////////////////////
////////////////////////////////////////////////////////2erJ/1miGP+tra3/////////
////////////////////////vrz3/zIq5/8pIeb/KSHm/ykh5v8pIeb/Jx/m/01G6v/n5vz/////////
///////////////////q6uv/VFRa/ygpMP8rLDP/Kywz/yssM/8rLDP/Kywz/yssM/8rLDP/KCkw/1FS
WP/V1df////////////////////////////6+v7/Xljs/yYe5v8pIeb/KSHm/ykh5v8lHeb/bmju//7+
//////////////////////////////////////////////////////////////////////////////v9
+f/C3aj/ra2t/////////////////////////////////3hz7/8lHeb/KSHm/ykh5v8pIeb/KSHm/ykh
5v8uJuf/vbv3/////////////////////////////////8zMzv9JSlD/Jygv/yorMv8rLDP/Kywz/yss
M/8qKzL/Jicv/1FSWP/V1df/////////////////////////////////1dT6/z026P8oIOb/KSHm/ykh
5v8pIeb/KSHm/6Wi9P//////////////////////////////////////////////////////////////
/////////////////////////////62trf///////////////////////////93c+/9EPen/Jx/m/ykh
5v8pIeb/KSHm/ykh5v8pIeb/Jh7m/2tl7v/39v7/////////////////////////////////z8/R/2ts
cf88PUP/Kisy/ygpMP8nKDD/Njc+/3JzeP/X19j//////////////////////////////////f3//4J9
8P8mHub/KSHm/ykh5v8pIeb/KSHm/y8n5//Fw/j/////////////////////////////////////////
//////////////////////////////////////////////////+tra3/////////////////////////
//+NifL/Jx/m/ykh5v8pIeb/KSHm/ykh5v8pIeb/KSHm/ygg5v8yKuf/wb/4////////////////////
///////////////////29vb/2trb/6Ojpv+cnaD/nJ2g/8fHyf/4+Pn/////////////////////////
/////////////9TS+v88Nej/KCDm/ykh5v8pIeb/KSHm/yYe5v9RSuv/8O/9////////////////////
////////////////////////////////////////////////////////////////////////ra2t////
///////////////////r6v3/SULq/ycf5v8pIeb/KSHm/ykh5v8pIeb/KSHm/ykh5v8pIeb/Jh7m/2Fb
7f/n5vz/////////////////////////////////////////////////////////////////////////
//////////////////////////////Ly/v9kXu3/Jx/m/ykh5v8pIeb/KSHm/ykh5v8nH+b/jYny////
////////////////////////////////////////////////////////////////////////////////
/////////////62trf//////////////////////1tT6/0dA6v8mHub/Jh7m/ykh5v8pIeb/KSHm/ykh
5v8pIeb/KSHm/ykh5v8mHub/eHLv//v7////////////////////////////////////////////////
//////////////////////////////////////////////r6/v+Xk/P/LSXm/ygg5v8pIeb/KSHm/ykh
5v8nH+b/Qjvp/9zb+///////////////////////////////////////////////////////////////
//////////////////////////////////+tra3///////////////////////39///Z1/v/mpbz/1tV
7P8sJeb/Jh7m/ygg5v8pIeb/KSHm/ykh5v8pIeb/KCDm/zMs5/+IhPH/5+b8////////////////////
//////////////////////////////////////////////////////////////r6/v+YlPP/Libn/ygg
5v8pIeb/KSHm/ykh5v8pIeb/Libn/6mm9f/+/v//////////////////////////////////////////
////////////////////////////////////////////////////////ra2t////////////////////
///////////////////v7v3/u7n3/3558P85Muj/Jx/m/ykh5v8pIeb/KSHm/ykh5v8oIOb/JR3m/2Vg
7f/T0fr//Pz//////////////////////////////////////////////////////////////////9/d
+/92ce//Lyfn/ygg5v8pIeb/KSHm/ykh5v8pIeb/JR3m/11X7P/x8f3/////////////////////////
/////////////////////////////////////////////////////////////////////////////62t
rf/////////////////////////////////////////////////8/P//09H6/19Z7P8mHub/KSHm/ykh
5v8pIeb/KSHm/ykh5v8nH+b/OTLo/3148P/R0Pr/9fT+////////////////////////////////////
///5+f7/5eT8/52Z9P9KROr/Jh7m/ygg5v8pIeb/KSHm/ykh5v8pIeb/Jx/m/0A56f/Dwfj/////////
////////////////////////////////////////////////////////////////////////////////
//////////////////+tra3/////////////////////////////////////////////////////////
///Dwfj/OjPo/ycf5v8pIeb/KSHm/ykh5v8pIeb/KSHm/ygg5v8mHub/OTHo/19Z7P+UkPL/u7j3/+Lg
/P/g3/v/4eD8/7Wy9v+Xk/P/dnHv/0M86f8pIeb/Jx/m/ykh5v8pIeb/KSHm/ykh5v8pIeb/Jh7m/0A5
6f/Cv/j/////////////////////////////////////////////////////////////////////////
////////////////////////////////////////ra2t////////////////////////////////////
/////////////////////////////7e09/85Muj/Jh3m/ykh5v8pIeb/KSHm/ykh5v8pIeb/KSHm/ygg
5v8mHub/JR3m/zAo5/87NOj/OzTo/zs06P8uJuf/JR3m/yYe5v8nH+b/KSHm/ykh5v8pIeb/KSHm/ykh
5v8pIeb/Jx/m/zkx6P+lovT/////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////62trf//////////////
////////////////////////////////////////////////////////u7n3/1VP6/8nH+b/KCDm/ykh
5v8pIeb/KSHm/ykh5v8pIeb/KSHm/ykh5v8oIOb/KCDm/ygg5v8oIOb/KSDm/ykh5v8pIeb/KSHm/ykh
5v8pIeb/KSHm/ykh5v8pIeb/JR3m/0A46f/Cv/j//f3/////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
//+tra3/////////////////////////////////////////////////////////////////////////
///n5vz/bGbu/y4m5/8nH+b/KSHm/ykh5v8pIeb/KSHm/ykh5v8pIeb/KSHm/ykh5v8pIeb/KSHm/ykh
5v8pIeb/KSHm/ykh5v8pIeb/KSHm/ykh5v8nH+b/KCDm/2Re7f/Ixvn/////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////ra2t////////////////////////////////////////////////////
//////////////////////////////T0/v+lofT/RD3p/ycf5v8nH+b/KSHm/ykh5v8pIeb/KSHm/ykh
5v8pIeb/KSHm/ykh5v8pIeb/KSHm/ykh5v8pIeb/KSHm/ycf5v8oIOb/SkPq/5qW8//s7P3/////////
////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////62trf//////////////////////////////
/////////////////////////////////////////////////////////v7//+Hg/P+UkPL/R0Dq/zMr
5/8pIOb/KCDm/ykh5v8pIeb/KSHm/ykh5v8pIeb/KSHm/ykh5v8pIeb/Jx/m/y8n5/9MRer/m5fz/+bl
/P/+/v//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////+tra3/////////
////////////////////////////////////////////////////////////////////////////////
/////////////+Df+//Ixvn/hYDx/0U+6f8nH+b/KSHm/ykh5v8pIeb/KSHm/ykh5v8oIOb/Mirn/29q
7v+zsfb/5eT8////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=
</value>
</data>
</root>

4
packages.config Normal file
View File

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Newtonsoft.Json" version="13.0.3" targetFramework="net40" />
</packages>

156
serialPortOption.cs Normal file
View File

@ -0,0 +1,156 @@
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Globalization;
using System.IO;
using System.IO.Ports;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading;
using System.Windows.Forms;
namespace FlyDockTool
{
public class SerialPortOption
{
/// <summary>
/// 让此类创建一个串口操作的单例类
/// </summary>
public static SerialPortOption Instance; //申明一个EcgDrawing对象复制Null
public static int BufferBytesLength = 0;
private Thread _thSerialPortDataRead; //串口数据读取线程
public SerialPort DataReadSerialPort;
public DateTime SerialTime;
private static readonly object LockHelper = new object();
public EventHandler dataOutPutShow;
public static SerialPortOption CreateInstance()
{
if (Instance == null)
lock (LockHelper)
{
if (Instance == null)
Instance = new SerialPortOption();
}
return Instance;
}
/// <summary>
/// 初始化串口
/// </summary>
public void IniserialPortOption()
{
//数据读取串口 初始化
//CcgDataReadSerialPort = new SerialPort(ConfigHelper.EcgDataComPort, 1500000, Parity.None, 8, StopBits.One)
// string CurrentDevice = ConfigurationManager.AppSettings["CurrentDevice"];//获取设备信息URL
string comName= ConfigurationManager.AppSettings[apiOptions.CurrentDevice].Split(',')[3];
int baudRate= int.Parse(ConfigurationManager.AppSettings[apiOptions.CurrentDevice].Split(',')[4]);
string parity1= ConfigurationManager.AppSettings[apiOptions.CurrentDevice].Split(',')[5];
Parity parity = Parity.None;
if (parity1.ToUpper()== "NONE")
parity= Parity.None;
if (parity1.ToUpper() == "EVEN")
parity = Parity.Even;
int databits= int.Parse(ConfigurationManager.AppSettings[apiOptions.CurrentDevice].Split(',')[6]);
StopBits SB = StopBits.One;
string sb1 = ConfigurationManager.AppSettings[apiOptions.CurrentDevice].Split(',')[7];
if (sb1== "1")
SB = StopBits.One;
if (sb1.ToUpper() == "NONE")
SB = StopBits.None;
if (sb1.ToUpper() == "2")
SB = StopBits.Two;
DataReadSerialPort = new SerialPort(comName, baudRate, parity, databits, SB)
{
RtsEnable = false,
ReadBufferSize = 4096000,
ReadTimeout = 3000,
ReceivedBytesThreshold = 1
};
SerialTime = DateTime.Now;
}
/// <summary>
/// 下发AD启动指令
/// </summary>
public void writeStartAD_Command()
{
byte[] EcgStart = { 0xBB, 0x44, 0xAA, 0x55, 0xCC, 0x01, 0x00, 0x00, 0xCB, 0x02 };
if (!DataReadSerialPort.IsOpen)
DataReadSerialPort.Open();
DataReadSerialPort.Write(EcgStart, 0, EcgStart.Length);
}
/// <summary>
/// 下发AD停止命令
/// </summary>
public void writeStopAD_Command()
{
byte[] EcgEnd = { 0xBB, 0x44, 0xAA, 0x55, 0x02, 0x00, 0x00, 0xCC, 0x02 };
if (!DataReadSerialPort.IsOpen)
{
DataReadSerialPort.Open();
}
DataReadSerialPort.Write(EcgEnd, 0, EcgEnd.Length);
}
/// <summary>
/// 终止串口数据读取的线程
/// </summary>
public void StopDataReadThread()
{
_thSerialPortDataRead.Abort();
}
/// <summary>
/// 开启串口数据读取的线程
/// </summary>
public void StartDataReadThread()
{
_thSerialPortDataRead = new Thread(DataRead)
{
IsBackground = true,
Priority = ThreadPriority.Highest
};
_thSerialPortDataRead.Start();
}
/// <summary>
/// 读取串口数据
/// </summary>
private void DataRead()
{
while (true)
{
try
{
if (!DataReadSerialPort.IsOpen)
{
DataReadSerialPort.Open();
}
BufferBytesLength = DataReadSerialPort.BytesToRead;
if (BufferBytesLength > 0)
{
var buffer = new byte[BufferBytesLength];
DataReadSerialPort.Read(buffer, 0, BufferBytesLength);
string encodingStr = "UTF-8";
try
{
encodingStr = ConfigurationManager.AppSettings[apiOptions.CurrentDevice].Split(',')[8];
}
catch { }
string ReDataStr = Encoding.GetEncoding(encodingStr).GetString(buffer);
dataOutPutShow(ReDataStr, null);
}
}
catch { }
Thread.Sleep(1000);//睡眠1秒
}
}
}
}