From 175c9b9969c1d1fbb21d052ea133717b50dae3cf Mon Sep 17 00:00:00 2001
From: Jack.Peng <jack.peng@broconcentric.com>
Date: 星期五, 12 三月 2021 13:35:24 +0800
Subject: [PATCH] 新增设备输出OK也输出白点信息。
---
P066.Data/P066数据分析程序.csproj | 83 ++
P066.Data/P066.Data.csproj | 83 ++
.gitignore | 340 +++++++++
P066.Data/Program.cs | 22
P066.Data/Properties/Resources.resx | 117 +++
P066.Data/Properties/Settings.Designer.cs | 30
P066.Data/Properties/Settings.settings | 7
P066.Data.sln | 25
P066.Data/App.config | 6
P066.Data/Form1.resx | 123 +++
P066.Data/Properties/Resources.Designer.cs | 71 +
P066.Data/Form1.Designer.cs | 93 ++
P066数据分析程序.sln | 25
P066.Data/Form1.cs | 1131 ++++++++++++++++++++++++++++++
P066.Data/Properties/AssemblyInfo.cs | 36
15 files changed, 2,192 insertions(+), 0 deletions(-)
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..4ce6fdd
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,340 @@
+## Ignore Visual Studio temporary files, build results, and
+## files generated by popular Visual Studio add-ons.
+##
+## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
+
+# User-specific files
+*.rsuser
+*.suo
+*.user
+*.userosscache
+*.sln.docstates
+
+# User-specific files (MonoDevelop/Xamarin Studio)
+*.userprefs
+
+# Build results
+[Dd]ebug/
+[Dd]ebugPublic/
+[Rr]elease/
+[Rr]eleases/
+x64/
+x86/
+[Aa][Rr][Mm]/
+[Aa][Rr][Mm]64/
+bld/
+[Bb]in/
+[Oo]bj/
+[Ll]og/
+
+# Visual Studio 2015/2017 cache/options directory
+.vs/
+# Uncomment if you have tasks that create the project's static files in wwwroot
+#wwwroot/
+
+# Visual Studio 2017 auto generated files
+Generated\ Files/
+
+# MSTest test Results
+[Tt]est[Rr]esult*/
+[Bb]uild[Ll]og.*
+
+# NUNIT
+*.VisualState.xml
+TestResult.xml
+
+# Build Results of an ATL Project
+[Dd]ebugPS/
+[Rr]eleasePS/
+dlldata.c
+
+# Benchmark Results
+BenchmarkDotNet.Artifacts/
+
+# .NET Core
+project.lock.json
+project.fragment.lock.json
+artifacts/
+
+# StyleCop
+StyleCopReport.xml
+
+# Files built by Visual Studio
+*_i.c
+*_p.c
+*_h.h
+*.ilk
+*.meta
+*.obj
+*.iobj
+*.pch
+*.pdb
+*.ipdb
+*.pgc
+*.pgd
+*.rsp
+*.sbr
+*.tlb
+*.tli
+*.tlh
+*.tmp
+*.tmp_proj
+*_wpftmp.csproj
+*.log
+*.vspscc
+*.vssscc
+.builds
+*.pidb
+*.svclog
+*.scc
+
+# Chutzpah Test files
+_Chutzpah*
+
+# Visual C++ cache files
+ipch/
+*.aps
+*.ncb
+*.opendb
+*.opensdf
+*.sdf
+*.cachefile
+*.VC.db
+*.VC.VC.opendb
+
+# Visual Studio profiler
+*.psess
+*.vsp
+*.vspx
+*.sap
+
+# Visual Studio Trace Files
+*.e2e
+
+# TFS 2012 Local Workspace
+$tf/
+
+# Guidance Automation Toolkit
+*.gpState
+
+# ReSharper is a .NET coding add-in
+_ReSharper*/
+*.[Rr]e[Ss]harper
+*.DotSettings.user
+
+# JustCode is a .NET coding add-in
+.JustCode
+
+# TeamCity is a build add-in
+_TeamCity*
+
+# DotCover is a Code Coverage Tool
+*.dotCover
+
+# AxoCover is a Code Coverage Tool
+.axoCover/*
+!.axoCover/settings.json
+
+# Visual Studio code coverage results
+*.coverage
+*.coveragexml
+
+# NCrunch
+_NCrunch_*
+.*crunch*.local.xml
+nCrunchTemp_*
+
+# MightyMoose
+*.mm.*
+AutoTest.Net/
+
+# Web workbench (sass)
+.sass-cache/
+
+# Installshield output folder
+[Ee]xpress/
+
+# DocProject is a documentation generator add-in
+DocProject/buildhelp/
+DocProject/Help/*.HxT
+DocProject/Help/*.HxC
+DocProject/Help/*.hhc
+DocProject/Help/*.hhk
+DocProject/Help/*.hhp
+DocProject/Help/Html2
+DocProject/Help/html
+
+# Click-Once directory
+publish/
+
+# Publish Web Output
+*.[Pp]ublish.xml
+*.azurePubxml
+# Note: Comment the next line if you want to checkin your web deploy settings,
+# but database connection strings (with potential passwords) will be unencrypted
+*.pubxml
+*.publishproj
+
+# Microsoft Azure Web App publish settings. Comment the next line if you want to
+# checkin your Azure Web App publish settings, but sensitive information contained
+# in these scripts will be unencrypted
+PublishScripts/
+
+# NuGet Packages
+*.nupkg
+# The packages folder can be ignored because of Package Restore
+**/[Pp]ackages/*
+# except build/, which is used as an MSBuild target.
+!**/[Pp]ackages/build/
+# Uncomment if necessary however generally it will be regenerated when needed
+#!**/[Pp]ackages/repositories.config
+# NuGet v3's project.json files produces more ignorable files
+*.nuget.props
+*.nuget.targets
+
+# Microsoft Azure Build Output
+csx/
+*.build.csdef
+
+# Microsoft Azure Emulator
+ecf/
+rcf/
+
+# Windows Store app package directories and files
+AppPackages/
+BundleArtifacts/
+Package.StoreAssociation.xml
+_pkginfo.txt
+*.appx
+
+# Visual Studio cache files
+# files ending in .cache can be ignored
+*.[Cc]ache
+# but keep track of directories ending in .cache
+!?*.[Cc]ache/
+
+# Others
+ClientBin/
+~$*
+*~
+*.dbmdl
+*.dbproj.schemaview
+*.jfm
+*.pfx
+*.publishsettings
+orleans.codegen.cs
+
+# Including strong name files can present a security risk
+# (https://github.com/github/gitignore/pull/2483#issue-259490424)
+#*.snk
+
+# Since there are multiple workflows, uncomment next line to ignore bower_components
+# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
+#bower_components/
+
+# RIA/Silverlight projects
+Generated_Code/
+
+# Backup & report files from converting an old project file
+# to a newer Visual Studio version. Backup files are not needed,
+# because we have git ;-)
+_UpgradeReport_Files/
+Backup*/
+UpgradeLog*.XML
+UpgradeLog*.htm
+ServiceFabricBackup/
+*.rptproj.bak
+
+# SQL Server files
+*.mdf
+*.ldf
+*.ndf
+
+# Business Intelligence projects
+*.rdl.data
+*.bim.layout
+*.bim_*.settings
+*.rptproj.rsuser
+*- Backup*.rdl
+
+# Microsoft Fakes
+FakesAssemblies/
+
+# GhostDoc plugin setting file
+*.GhostDoc.xml
+
+# Node.js Tools for Visual Studio
+.ntvs_analysis.dat
+node_modules/
+
+# Visual Studio 6 build log
+*.plg
+
+# Visual Studio 6 workspace options file
+*.opt
+
+# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
+*.vbw
+
+# Visual Studio LightSwitch build output
+**/*.HTMLClient/GeneratedArtifacts
+**/*.DesktopClient/GeneratedArtifacts
+**/*.DesktopClient/ModelManifest.xml
+**/*.Server/GeneratedArtifacts
+**/*.Server/ModelManifest.xml
+_Pvt_Extensions
+
+# Paket dependency manager
+.paket/paket.exe
+paket-files/
+
+# FAKE - F# Make
+.fake/
+
+# JetBrains Rider
+.idea/
+*.sln.iml
+
+# CodeRush personal settings
+.cr/personal
+
+# Python Tools for Visual Studio (PTVS)
+__pycache__/
+*.pyc
+
+# Cake - Uncomment if you are using it
+# tools/**
+# !tools/packages.config
+
+# Tabs Studio
+*.tss
+
+# Telerik's JustMock configuration file
+*.jmconfig
+
+# BizTalk build output
+*.btp.cs
+*.btm.cs
+*.odx.cs
+*.xsd.cs
+
+# OpenCover UI analysis results
+OpenCover/
+
+# Azure Stream Analytics local run output
+ASALocalRun/
+
+# MSBuild Binary and Structured Log
+*.binlog
+
+# NVidia Nsight GPU debugger configuration file
+*.nvuser
+
+# MFractors (Xamarin productivity tool) working folder
+.mfractor/
+
+# Local History for Visual Studio
+.localhistory/
+
+# BeatPulse healthcheck temp database
+healthchecksdb
\ No newline at end of file
diff --git a/P066.Data.sln b/P066.Data.sln
new file mode 100644
index 0000000..195a719
--- /dev/null
+++ b/P066.Data.sln
@@ -0,0 +1,25 @@
+锘�
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 15
+VisualStudioVersion = 15.0.28307.1259
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "P066.Data", "P066.Data\P066.Data.csproj", "{8B8F7749-8823-48C6-B12A-54979E28C10C}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Release|Any CPU = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {8B8F7749-8823-48C6-B12A-54979E28C10C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {8B8F7749-8823-48C6-B12A-54979E28C10C}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {8B8F7749-8823-48C6-B12A-54979E28C10C}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {8B8F7749-8823-48C6-B12A-54979E28C10C}.Release|Any CPU.Build.0 = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ SolutionGuid = {9015AB30-DC50-4705-A9A7-45C14C06313E}
+ EndGlobalSection
+EndGlobal
diff --git a/P066.Data/App.config b/P066.Data/App.config
new file mode 100644
index 0000000..731f6de
--- /dev/null
+++ b/P066.Data/App.config
@@ -0,0 +1,6 @@
+锘�<?xml version="1.0" encoding="utf-8" ?>
+<configuration>
+ <startup>
+ <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" />
+ </startup>
+</configuration>
\ No newline at end of file
diff --git a/P066.Data/Form1.Designer.cs b/P066.Data/Form1.Designer.cs
new file mode 100644
index 0000000..f399a82
--- /dev/null
+++ b/P066.Data/Form1.Designer.cs
@@ -0,0 +1,93 @@
+锘縩amespace P066.Data
+{
+ partial class Form1
+ {
+ /// <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 绐椾綋璁捐鍣ㄧ敓鎴愮殑浠g爜
+
+ /// <summary>
+ /// 璁捐鍣ㄦ敮鎸佹墍闇�鐨勬柟娉� - 涓嶈淇敼
+ /// 浣跨敤浠g爜缂栬緫鍣ㄤ慨鏀规鏂规硶鐨勫唴瀹广��
+ /// </summary>
+ private void InitializeComponent()
+ {
+ this.btnLoadData1 = new System.Windows.Forms.Button();
+ this.folderBrowserDialog1 = new System.Windows.Forms.FolderBrowserDialog();
+ this.btnAnalyze = new System.Windows.Forms.Button();
+ this.btnLoadData2 = new System.Windows.Forms.Button();
+ this.SuspendLayout();
+ //
+ // btnLoadData1
+ //
+ this.btnLoadData1.Location = new System.Drawing.Point(16, 15);
+ this.btnLoadData1.Margin = new System.Windows.Forms.Padding(4);
+ this.btnLoadData1.Name = "btnLoadData1";
+ this.btnLoadData1.Size = new System.Drawing.Size(176, 29);
+ this.btnLoadData1.TabIndex = 0;
+ this.btnLoadData1.Text = "鍔犺浇鏂囦欢澶�1";
+ this.btnLoadData1.UseVisualStyleBackColor = true;
+ this.btnLoadData1.Click += new System.EventHandler(this.btnLoadData1_Click);
+ //
+ // btnAnalyze
+ //
+ this.btnAnalyze.Location = new System.Drawing.Point(16, 88);
+ this.btnAnalyze.Margin = new System.Windows.Forms.Padding(4);
+ this.btnAnalyze.Name = "btnAnalyze";
+ this.btnAnalyze.Size = new System.Drawing.Size(176, 29);
+ this.btnAnalyze.TabIndex = 1;
+ this.btnAnalyze.Text = "寮�濮嬪垎鏋�";
+ this.btnAnalyze.UseVisualStyleBackColor = true;
+ this.btnAnalyze.Click += new System.EventHandler(this.btnAnalyze_Click);
+ //
+ // btnLoadData2
+ //
+ this.btnLoadData2.Location = new System.Drawing.Point(16, 51);
+ this.btnLoadData2.Margin = new System.Windows.Forms.Padding(4);
+ this.btnLoadData2.Name = "btnLoadData2";
+ this.btnLoadData2.Size = new System.Drawing.Size(176, 29);
+ this.btnLoadData2.TabIndex = 1;
+ this.btnLoadData2.Text = "鍔犺浇鏂囦欢澶�2";
+ this.btnLoadData2.UseVisualStyleBackColor = true;
+ this.btnLoadData2.Click += new System.EventHandler(this.btnLoadData2_Click);
+ //
+ // Form1
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 15F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.ClientSize = new System.Drawing.Size(1067, 562);
+ this.Controls.Add(this.btnAnalyze);
+ this.Controls.Add(this.btnLoadData2);
+ this.Controls.Add(this.btnLoadData1);
+ this.Margin = new System.Windows.Forms.Padding(4);
+ this.Name = "Form1";
+ this.Text = "Form1";
+ this.ResumeLayout(false);
+
+ }
+
+ #endregion
+
+ private System.Windows.Forms.Button btnLoadData1;
+ private System.Windows.Forms.FolderBrowserDialog folderBrowserDialog1;
+ private System.Windows.Forms.Button btnAnalyze;
+ private System.Windows.Forms.Button btnLoadData2;
+ }
+}
+
diff --git a/P066.Data/Form1.cs b/P066.Data/Form1.cs
new file mode 100644
index 0000000..d531351
--- /dev/null
+++ b/P066.Data/Form1.cs
@@ -0,0 +1,1131 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+using System.IO;
+
+namespace P066.Data
+{
+ public partial class Form1 : Form
+ {
+ DirectoryInfo directoryInfo1;
+ DirectoryInfo directoryInfo2;
+
+ public Form1()
+ {
+ InitializeComponent();
+ }
+
+ private void btnLoadData1_Click(object sender, EventArgs e)
+ {
+ if (folderBrowserDialog1.ShowDialog() != DialogResult.OK)
+ return;
+ directoryInfo1 = new DirectoryInfo(folderBrowserDialog1.SelectedPath);
+ }
+
+ private void btnLoadData2_Click(object sender, EventArgs e)
+ {
+ if (folderBrowserDialog1.ShowDialog() != DialogResult.OK)
+ return;
+
+ directoryInfo2 = new DirectoryInfo(folderBrowserDialog1.SelectedPath);
+ }
+
+
+
+ private void btnAnalyze_Click(object sender, EventArgs e)
+ {
+
+ var fileinfos1 = directoryInfo1.GetFiles();
+ var fileinfos2 = directoryInfo2.GetFiles();
+ var listSum = new List<ResultData>();
+ var JudgeListSum = new List<ResultData>();
+ string filename = "";
+ int WhiteI = 0;
+ int WhiteningI = 0;
+ for (int i = 0; i < fileinfos1.Length; i++)
+ {
+ var list = CompareFile(fileinfos1[i], fileinfos2[i]);
+ var judgeList = JudgeCompareFile(fileinfos1[i], fileinfos2[i]);
+
+ if (fileinfos1[i].Name.Contains("鐧界偣"))
+ {
+ WhiteI++;
+ list.ForEach(a => a.Lensnumber = WhiteI);
+ listSum.AddRange(list);
+ judgeList.ForEach(a => a.Lensnumber = WhiteI);
+ JudgeListSum.AddRange(judgeList);
+ }
+ if (fileinfos1[i].Name.Contains("鍒櫧"))
+ {
+ WhiteningI++;
+ list.ForEach(a => a.Lensnumber = WhiteningI);
+ listSum.AddRange(list);
+ judgeList.ForEach(a => a.Lensnumber = WhiteningI);
+ JudgeListSum.AddRange(judgeList);
+
+ }
+
+ var group = judgeList.GroupBy(a => a.TimeTip);
+
+ foreach (var item in group)
+ {
+ //璁$畻闀滃ご1缂洪櫡浣嶇疆鍙婅搴�
+ var listLensnumber1 = judgeList.FindAll(a => a.TimeTip == item.Key && a.Lensnumber == 1);
+ for (int k = 0; k < listLensnumber1.Count; k++)
+ {
+ var lenAngle = GetAngle(listLensnumber1[k].X, listLensnumber1[k].Y);
+ if (lenAngle < 0)
+ {
+ lenAngle = 360 + lenAngle;
+ }
+ listLensnumber1[k].angle = lenAngle;
+
+ var distance = GetDistance(1050, 1050, listLensnumber1[k].X, listLensnumber1[k].Y);
+
+ if (distance <= 539.87)
+ {
+ listLensnumber1[k].location = "闀滃ご";
+ listLensnumber1[k].R = distance;
+ }
+ else if (539.87 < distance && distance <= 777.11)
+ {
+ listLensnumber1[k].location = "鏂滈潰";
+ listLensnumber1[k].R = distance;
+ }
+ else if (777.11 < distance && distance <= 919.88)
+ {
+ listLensnumber1[k].location = "骞抽潰";
+ listLensnumber1[k].R = distance;
+ }
+ else
+ {
+ listLensnumber1[k].location = "鍖哄煙澶�";
+ listLensnumber1[k].R = distance;
+ }
+
+ }
+ //璁$畻闀滃ご2浣嶇疆鍙婅搴�
+ var listLensnumber2 = judgeList.FindAll(a => a.TimeTip == item.Key && a.Lensnumber == 2);
+ for (int k = 0; k < listLensnumber2.Count; k++)
+ {
+ var lenAngle = GetAngle(listLensnumber2[k].X, listLensnumber2[k].Y);
+ if (lenAngle < 0)
+ {
+ lenAngle = 360 + lenAngle;
+ }
+ listLensnumber2[k].angle = lenAngle;
+ var distance = GetDistance(1050, 1050, listLensnumber2[k].X, listLensnumber2[k].Y);
+ if (distance <= 400)
+ {
+ listLensnumber2[k].location = "闀滃ご";
+ listLensnumber2[k].R = distance;
+ }
+ else if (400 < distance && distance <= 772.18)
+ {
+ listLensnumber2[k].location = "鏂滈潰";
+ listLensnumber2[k].R = distance;
+ }
+ else if (772.18 < distance && distance <= 873.38)
+ {
+ listLensnumber2[k].location = "骞抽潰";
+ listLensnumber2[k].R = distance;
+ }
+ else
+ {
+ listLensnumber2[k].location = "鍖哄煙澶�";
+ listLensnumber2[k].R = distance;
+ }
+ }
+ //璁$畻闀滃ご3浣嶇疆鍙婅搴�
+ var listLensnumber3 = judgeList.FindAll(a => a.TimeTip == item.Key && a.Lensnumber == 3);
+ for (int k = 0; k < listLensnumber3.Count; k++)
+ {
+ var lenAngle = GetAngle(listLensnumber3[k].X, listLensnumber3[k].Y);
+ if (lenAngle < 0)
+ {
+ lenAngle = 360 + lenAngle;
+ }
+ listLensnumber3[k].angle = lenAngle;
+ var distance = GetDistance(1050, 1050, listLensnumber3[k].X, listLensnumber3[k].Y);
+ if (distance <= 105.63)
+ {
+ listLensnumber3[k].location = "闀滃ご";
+ listLensnumber3[k].R = distance;
+ }
+ else
+ {
+ listLensnumber3[k].location = "鏂滈潰";
+ listLensnumber3[k].R = distance;
+ }
+ }
+ //璁$畻闀滃ご4浣嶇疆鍙婅搴�
+ var listLensnumber4 = judgeList.FindAll(a => a.TimeTip == item.Key && a.Lensnumber == 4);
+ for (int k = 0; k < listLensnumber4.Count; k++)
+ {
+ var lenAngle = GetAngle(listLensnumber4[k].X, listLensnumber4[k].Y);
+ if (lenAngle < 0)
+ {
+ lenAngle = 360 + lenAngle;
+ }
+ listLensnumber4[k].angle = lenAngle;
+ var distance = GetDistance(1050, 1050, listLensnumber4[k].X, listLensnumber4[k].Y);
+ if (distance <= 339.88)
+ {
+ listLensnumber4[k].location = "闀滃ご";
+ listLensnumber4[k].R = distance;
+ }
+ else if (339.88 < distance && distance <= 547.02)
+ {
+ listLensnumber4[k].location = "鏂滈潰";
+ listLensnumber4[k].R = distance;
+ }
+ else if (547.02 < distance && distance <= 614.73)
+ {
+ listLensnumber4[k].location = "骞抽潰";
+ listLensnumber4[k].R = distance;
+ }
+ else
+ {
+ listLensnumber4[k].location = "鍖哄煙澶�";
+ listLensnumber4[k].R = distance;
+ }
+ }
+
+ }
+
+
+
+ #region//缁欓暅澶村尯鍒嗕綅缃強瑙掑害
+ var group11 = list.GroupBy(a => a.TimeTip);
+ string currPath = "";
+ foreach (var item in group11)
+ {
+ //璁$畻闀滃ご1缂洪櫡浣嶇疆鍙婅搴�
+ var listLensnumber1 = list.FindAll(a => a.TimeTip == item.Key && a.Lensnumber == 1);
+ for (int k = 0; k < listLensnumber1.Count; k++)
+ {
+ var lenAngle = GetAngle(listLensnumber1[k].X, listLensnumber1[k].Y);
+ if (lenAngle<0)
+ {
+ lenAngle = 360 + lenAngle;
+ }
+ listLensnumber1[k].angle = lenAngle;
+
+ var distance = GetDistance(1050, 1050, listLensnumber1[k].X, listLensnumber1[k].Y);
+
+ if (distance <= 539.87)
+ {
+ listLensnumber1[k].location = "闀滃ご";
+ listLensnumber1[k].R = distance;
+ }
+ else if (539.87 < distance && distance <= 777.11)
+ {
+ listLensnumber1[k].location = "鏂滈潰";
+ listLensnumber1[k].R = distance;
+ }
+ else if (777.11 < distance && distance <= 919.88)
+ {
+ listLensnumber1[k].location = "骞抽潰";
+ listLensnumber1[k].R = distance;
+ }
+ else
+ {
+ listLensnumber1[k].location = "鍖哄煙澶�";
+ listLensnumber1[k].R = distance;
+ }
+
+ }
+ //璁$畻闀滃ご2浣嶇疆鍙婅搴�
+ var listLensnumber2 = list.FindAll(a => a.TimeTip == item.Key && a.Lensnumber == 2);
+ for (int k = 0; k < listLensnumber2.Count; k++)
+ {
+ var lenAngle = GetAngle(listLensnumber2[k].X, listLensnumber2[k].Y);
+ if (lenAngle < 0)
+ {
+ lenAngle = 360 + lenAngle;
+ }
+ listLensnumber2[k].angle = lenAngle;
+ var distance = GetDistance(1050, 1050, listLensnumber2[k].X, listLensnumber2[k].Y);
+ if (distance <= 400)
+ {
+ listLensnumber2[k].location = "闀滃ご";
+ listLensnumber2[k].R = distance;
+ }
+ else if (400 < distance && distance <= 772.18)
+ {
+ listLensnumber2[k].location = "鏂滈潰";
+ listLensnumber2[k].R = distance;
+ }
+ else if (772.18 < distance && distance <= 873.38)
+ {
+ listLensnumber2[k].location = "骞抽潰";
+ listLensnumber2[k].R = distance;
+ }
+ else
+ {
+ listLensnumber2[k].location = "鍖哄煙澶�";
+ listLensnumber2[k].R = distance;
+ }
+ }
+ //璁$畻闀滃ご3浣嶇疆鍙婅搴�
+ var listLensnumber3 = list.FindAll(a => a.TimeTip == item.Key && a.Lensnumber == 3);
+ for (int k = 0; k < listLensnumber3.Count; k++)
+ {
+ var lenAngle = GetAngle(listLensnumber3[k].X, listLensnumber3[k].Y);
+ if (lenAngle < 0)
+ {
+ lenAngle = 360 + lenAngle;
+ }
+ listLensnumber3[k].angle = lenAngle;
+ var distance = GetDistance(1050, 1050, listLensnumber3[k].X, listLensnumber3[k].Y);
+ if (distance <= 105.63)
+ {
+ listLensnumber3[k].location = "闀滃ご";
+ listLensnumber3[k].R = distance;
+ }
+ else
+ {
+ listLensnumber3[k].location = "鏂滈潰";
+ listLensnumber3[k].R = distance;
+ }
+ }
+ //璁$畻闀滃ご4浣嶇疆鍙婅搴�
+ var listLensnumber4 = list.FindAll(a => a.TimeTip == item.Key && a.Lensnumber == 4);
+ for (int k = 0; k < listLensnumber4.Count; k++)
+ {
+ var lenAngle = GetAngle(listLensnumber4[k].X, listLensnumber4[k].Y);
+ if (lenAngle < 0)
+ {
+ lenAngle = 360 + lenAngle;
+ }
+ listLensnumber4[k].angle = lenAngle;
+ var distance = GetDistance(1050, 1050, listLensnumber4[k].X, listLensnumber4[k].Y);
+ if (distance <= 339.88)
+ {
+ listLensnumber4[k].location = "闀滃ご";
+ listLensnumber4[k].R = distance;
+ }
+ else if (339.88 < distance && distance <= 547.02)
+ {
+ listLensnumber4[k].location = "鏂滈潰";
+ listLensnumber4[k].R = distance;
+ }
+ else if (547.02 < distance && distance <= 614.73)
+ {
+ listLensnumber4[k].location = "骞抽潰";
+ listLensnumber4[k].R = distance;
+ }
+ else
+ {
+ listLensnumber4[k].location = "鍖哄煙澶�";
+ listLensnumber4[k].R = distance;
+ }
+ }
+
+ }
+ #endregion
+ #region//鍒ゆ柇鏄垵妫�鏂囦欢澶硅繕鏄妫�鏂囦欢澶�
+ if (fileinfos1[i].Name.Contains("鍒濇"))
+ {
+ filename = "鍒濇";
+ }
+ if (fileinfos1[i].Name.Contains("澶嶆"))
+ {
+ filename = "澶嶆";
+ }
+ if (fileinfos1[i].Name.Contains("鍒櫧"))
+ {
+ filename = "鍒櫧";
+ }
+ currPath = directoryInfo1.Parent.Parent.FullName;
+ string subPath = currPath + "/" + filename + "鍚堝苟鍚�" + "/";
+ if (false==Directory.Exists(subPath))
+ {
+ Directory.CreateDirectory(subPath);
+ }
+
+ #endregion
+ #region//娴嬭瘯杈撳嚭璁惧鍒ゆ柇缁撴灉
+
+ //var title12 = $"鏃堕棿鎴�,璁惧鍒ゆ柇缁撴灉";
+ //var file12 = $"{directoryInfo1.Parent.FullName}\\{filename + (i + 111)}.csv";
+ //File.AppendAllText(file12, title12, Encoding.UTF8);
+ //File.AppendAllText(file12, "\r\n");
+
+ //foreach (var item in JudgeListSum)
+ //{
+
+ // var conrent12 = $"{item.TimeTip},{item.JudgmentResult}";
+ // File.AppendAllText(file12, conrent12, Encoding.UTF8);
+ // File.AppendAllText(file12, "\r\n");
+ //}
+
+ #endregion
+
+ var title1 = $"鏃堕棿鎴�,鏂囦欢鍚�,鍒ゆ柇,鍙兘鎬�,涓嶇‘瀹氭��,楂�,瀹�,X,Y,鏈�澶у昂瀵�,浣嶇疆,R,瑙掑害,缂洪櫡绫诲瀷";
+ var file1 = $"{subPath}\\{filename + (i+1)}.csv";
+ File.AppendAllText(file1, title1, Encoding.UTF8);
+ File.AppendAllText(file1, "\r\n");
+
+ #region//璁$畻鎬绘暟
+
+ //var group1 = list.GroupBy(a => a.TimeTip);
+
+ //var title2 = $"鏃堕棿鎴�,鎬绘暟";
+ //var file2 = $"{directoryInfo1.Parent.FullName}\\{ "鎬绘暟" +( i+1)}.csv";
+ //File.AppendAllText(file2, title2, Encoding.UTF8);
+ //File.AppendAllText(file2, "\r\n");
+ //foreach (var item in group1)
+ //{
+ // var content = $"{item.Key},{item.ToList().Count}";
+
+ // File.AppendAllText(file2, content, Encoding.UTF8);
+ // File.AppendAllText(file2, "\r\n");
+ //}
+ #endregion
+ foreach (var item in list)
+ {
+ string result = item.Result ? "OK" : "NG";
+
+ var content = $"{item.TimeTip},{item.ImageFileName},{result},{item.Probability},{item.Uncertainty},{item.Height},{item.Width},{item.X},{item.Y},{item.ex},{item.location},{ Convert.ToInt32(item.R)},{ Convert.ToInt32(item.angle)},{item.DefectType}";
+
+ File.AppendAllText(file1, content, Encoding.UTF8);
+ File.AppendAllText(file1, "\r\n");
+ }
+ }
+
+
+ var dataGroup1 = listSum.GroupBy(a => a.TimeTip);
+ var dataListSum = new List<string>();
+
+ foreach (var item in dataGroup1)
+ {
+ dataListSum.Add(item.Key);
+ }
+ dataListSum = dataListSum.Distinct().ToList();
+ dataListSum.Sort();
+ var dataList = new List<ResultData>();
+
+ var title12 = $"鏃堕棿鎴�,鐩告満搴忓彿,璁惧鍒ゆ柇缁撴灉,缂洪櫡绫诲瀷,X,Y,鏈�澶у昂瀵�,R,浣嶇疆,瑙掑害";
+ var file12 = $"{directoryInfo1.Parent.FullName}\\{filename+"璁惧鍒ゆ柇缁撴灉"}.csv";
+
+ File.AppendAllText(file12, title12, Encoding.UTF8);
+ File.AppendAllText(file12, "\r\n");
+
+ foreach (var item in dataListSum)
+ {
+ var test11 = JudgeListSum.FindAll(a => a.TimeTip == item&&a.Lensnumber==1);
+ if (test11.Count==0)
+ {
+
+ var content11 = $"{item},{1},{"OK"}";
+ File.AppendAllText(file12, content11, Encoding.UTF8);
+ File.AppendAllText(file12, "\r\n");
+ }
+ else
+ {
+ if (test11[0].DefectType=="鍒櫧")
+ {
+ var content11 = $"{item},{1},{test11[0].JudgmentResult},{test11[0].DefectType}";
+ File.AppendAllText(file12, content11, Encoding.UTF8);
+ File.AppendAllText(file12, "\r\n");
+ for (int i = 0; i < test11.Count; i++)
+ {
+ if (test11[i].DefectType=="鍒櫧")
+ {
+ var content111 = $"{""},{""},{""},{""},{test11[i].X},{test11[i].Y},{test11[i].ex},{(int)(test11[i].R)},{test11[i].location},{(int)(test11[i].angle)}";
+ File.AppendAllText(file12, content111, Encoding.UTF8);
+ File.AppendAllText(file12, "\r\n");
+ }
+ else
+ {
+ var content111 = $"{""},{""},{""},{test11[i].DefectType},{test11[i].X},{test11[i].Y},{test11[i].ex},{(int)(test11[i].R)},{test11[i].location},{(int)(test11[i].angle)}";
+ File.AppendAllText(file12, content111, Encoding.UTF8);
+ File.AppendAllText(file12, "\r\n");
+ }
+
+ }
+ }
+ else
+ {
+ var content11 = $"{item},{1},{test11[0].JudgmentResult},{test11[0].DefectType}";
+ File.AppendAllText(file12, content11, Encoding.UTF8);
+ File.AppendAllText(file12, "\r\n");
+ for (int i = 0; i < test11.Count; i++)
+ {
+ var content111 = $"{""},{""},{""},{""},{test11[i].X},{test11[i].Y},{test11[i].ex},{(int)(test11[i].R)},{test11[i].location},{(int)(test11[i].angle)}";
+ File.AppendAllText(file12, content111, Encoding.UTF8);
+ File.AppendAllText(file12, "\r\n");
+ }
+ }
+
+ }
+ var test12 = JudgeListSum.FindAll(a => a.TimeTip == item && a.Lensnumber == 2);
+ if (test12.Count == 0)
+ {
+
+ var content11 = $"{""},{2},{"OK"}";
+ File.AppendAllText(file12, content11, Encoding.UTF8);
+ File.AppendAllText(file12, "\r\n");
+ }
+ else
+ {
+ if (test12[0].DefectType == "鍒櫧")
+ {
+ var content11 = $"{""},{2},{test12[0].JudgmentResult},{test12[0].DefectType}";
+ File.AppendAllText(file12, content11, Encoding.UTF8);
+ File.AppendAllText(file12, "\r\n");
+ for (int i = 0; i < test12.Count; i++)
+ {
+ if (test12[i].DefectType == "鍒櫧")
+ {
+ var content111 = $"{""},{""},{""},{""},{test12[i].X},{test12[i].Y},{test12[i].ex},{(int)(test12[i].R)},{test12[i].location},{(int)(test12[i].angle)}";
+ File.AppendAllText(file12, content111, Encoding.UTF8);
+ File.AppendAllText(file12, "\r\n");
+ }
+ else
+ {
+ var content111 = $"{""},{""},{""},{test12[i].DefectType},{test12[i].X},{test12[i].Y},{test12[i].ex},{(int)(test12[i].R)},{test12[i].location},{(int)(test12[i].angle)}";
+ File.AppendAllText(file12, content111, Encoding.UTF8);
+ File.AppendAllText(file12, "\r\n");
+ }
+
+ }
+
+
+ }
+ else
+ {
+ var content11 = $"{""},{2},{test12[0].JudgmentResult},{test12[0].DefectType}";
+ File.AppendAllText(file12, content11, Encoding.UTF8);
+ File.AppendAllText(file12, "\r\n");
+ for (int i = 0; i < test12.Count; i++)
+ {
+ var content111 = $"{""},{""},{""},{""},{test12[i].X},{test12[i].Y},{test12[i].ex},{(int)(test12[i].R)},{test12[i].location},{(int)(test12[i].angle)}";
+ File.AppendAllText(file12, content111, Encoding.UTF8);
+ File.AppendAllText(file12, "\r\n");
+ }
+ }
+ }
+ var test13 = JudgeListSum.FindAll(a => a.TimeTip == item && a.Lensnumber == 3);
+ if (test13.Count == 0)
+ {
+
+ var content11 = $"{""},{3},{"OK"}";
+ File.AppendAllText(file12, content11, Encoding.UTF8);
+ File.AppendAllText(file12, "\r\n");
+ }
+ else
+ {
+ if (test13[0].DefectType == "鍒櫧")
+ {
+ var content11 = $"{""},{3},{test13[0].JudgmentResult},{test13[0].DefectType}";
+ File.AppendAllText(file12, content11, Encoding.UTF8);
+ File.AppendAllText(file12, "\r\n");
+ for (int i = 0; i < test13.Count; i++)
+ {
+ if (test13[i].DefectType == "鍒櫧")
+ {
+ var content111 = $"{""},{""},{""},{""},{test13[i].X},{test13[i].Y},{test13[i].ex},{(int)(test13[i].R)},{test13[i].location},{(int)(test13[i].angle)}";
+ File.AppendAllText(file12, content111, Encoding.UTF8);
+ File.AppendAllText(file12, "\r\n");
+ }
+ else
+ {
+ var content111 = $"{""},{""},{""},{test13[i].DefectType},{test13[i].X},{test13[i].Y},{test13[i].ex},{(int)(test13[i].R)},{test13[i].location},{(int)(test13[i].angle)}";
+ File.AppendAllText(file12, content111, Encoding.UTF8);
+ File.AppendAllText(file12, "\r\n");
+ }
+
+ }
+
+ }
+ else
+ {
+ var content11 = $"{""},{3},{test13[0].JudgmentResult},{test13[0].DefectType}";
+ File.AppendAllText(file12, content11, Encoding.UTF8);
+ File.AppendAllText(file12, "\r\n");
+ for (int i = 0; i < test13.Count; i++)
+ {
+ var content111 = $"{""},{""},{""},{""},{test13[i].X},{test13[i].Y},{test13[i].ex},{(int)(test13[i].R)},{test13[i].location},{(int)(test13[i].angle)}";
+ File.AppendAllText(file12, content111, Encoding.UTF8);
+ File.AppendAllText(file12, "\r\n");
+ }
+ }
+ }
+ var test14 = JudgeListSum.FindAll(a => a.TimeTip == item && a.Lensnumber == 4);
+ if (test14.Count == 0)
+ {
+
+ var content11 = $"{""},{4},{"OK"}";
+ File.AppendAllText(file12, content11, Encoding.UTF8);
+ File.AppendAllText(file12, "\r\n");
+ }
+ else
+ {
+ if (test14[0].DefectType == "鍒櫧")
+ {
+ var content11 = $"{""},{4},{test14[0].JudgmentResult},{test14[0].DefectType}";
+ File.AppendAllText(file12, content11, Encoding.UTF8);
+ File.AppendAllText(file12, "\r\n");
+ for (int i = 0; i < test14.Count; i++)
+ {
+ if (test14[i].DefectType == "鍒櫧")
+ {
+ var content111 = $"{""},{""},{""},{""},{test14[i].X},{test14[i].Y},{test14[i].ex},{(int)(test14[i].R)},{test14[i].location},{(int)(test14[i].angle)}";
+ File.AppendAllText(file12, content111, Encoding.UTF8);
+ File.AppendAllText(file12, "\r\n");
+ }
+ else
+ {
+ var content111 = $"{""},{""},{""},{test14[i].DefectType},{test14[i].X},{test14[i].Y},{test14[i].ex},{(int)(test14[i].R)},{test14[i].location},{(int)(test14[i].angle)}";
+ File.AppendAllText(file12, content111, Encoding.UTF8);
+ File.AppendAllText(file12, "\r\n");
+ }
+
+ }
+ }
+ else
+ {
+ var content11 = $"{""},{4},{test14[0].JudgmentResult},{test14[0].DefectType}";
+ File.AppendAllText(file12, content11, Encoding.UTF8);
+ File.AppendAllText(file12, "\r\n");
+ for (int i = 0; i < test14.Count; i++)
+ {
+ var content111 = $"{""},{""},{""},{""},{test14[i].X},{test14[i].Y},{test14[i].ex},{(int)(test14[i].R)},{test14[i].location},{(int)(test14[i].angle)}";
+ File.AppendAllText(file12, content111, Encoding.UTF8);
+ File.AppendAllText(file12, "\r\n");
+ }
+ }
+ }
+ //var conrent12 = $"{item},{item}";
+ //File.AppendAllText(file12, conrent12, Encoding.UTF8);
+ //File.AppendAllText(file12, "\r\n");
+ }
+
+
+
+
+
+
+
+
+
+
+
+
+ #region//鏍规嵁浜у搧缂栧彿杈撳嚭鎬荤己闄锋姤琛�
+ var title = $"浜у搧缂栧彿,闀滃ご缂栧彿,鎬荤己闄锋暟閲�";
+ var file = $"{directoryInfo1.Parent.FullName}\\{filename+ "缂洪櫡鎬绘暟鎶ヨ〃"}.csv";
+ File.AppendAllText(file, title, Encoding.UTF8);
+ File.AppendAllText(file, "\r\n");
+ var listSumGroup = listSum.GroupBy(a => a.TimeTip);
+ foreach (var item in listSumGroup)
+ {
+ var listLensnumber1 = listSum.FindAll(a => a.TimeTip == item.Key && a.Lensnumber == 1);
+ var listLensnumberCount1 = listLensnumber1.Count;
+ var listLensnumber2 = listSum.FindAll(a => a.TimeTip == item.Key && a.Lensnumber == 2);
+ var listLensnumberCount2 = listLensnumber2.Count;
+ var listLensnumber3 = listSum.FindAll(a => a.TimeTip == item.Key && a.Lensnumber == 3);
+ var listLensnumberCount3 = listLensnumber3.Count;
+ var listLensnumber4 = listSum.FindAll(a => a.TimeTip == item.Key && a.Lensnumber == 4);
+ var listLensnumberCount4 = listLensnumber4.Count;
+ //绗竴琛�
+ var content1 = $"{item.Key},{1},{listLensnumberCount1}";
+ File.AppendAllText(file, content1, Encoding.UTF8);
+ File.AppendAllText(file, "\r\n");
+ //绗簩琛�
+ var content2 = $"{""},{2},{listLensnumberCount2}";
+ File.AppendAllText(file, content2, Encoding.UTF8);
+ File.AppendAllText(file, "\r\n");
+ //绗笁琛�
+ var content3 = $"{""},{3},{listLensnumberCount3}";
+ File.AppendAllText(file, content3, Encoding.UTF8);
+ File.AppendAllText(file, "\r\n");
+ //绗洓琛�
+ var content4 = $"{""},{4},{listLensnumberCount4}";
+ File.AppendAllText(file, content4, Encoding.UTF8);
+ File.AppendAllText(file, "\r\n");
+
+ }
+ #endregion
+
+
+ }
+
+
+ private List<ResultData> CompareFile(FileInfo fileInfo1, FileInfo fileInfo2)
+ {
+ var allLines1 = File.ReadAllLines(fileInfo1.FullName, Encoding.Default);
+ var allLines2 = File.ReadAllLines(fileInfo2.FullName, Encoding.Default);
+ List<ResultData> dataList1 = new List<ResultData>();
+ List<ResultData> dataList2 = new List<ResultData>();
+ if (allLines1.Length>1)
+ {
+ dataList1 = GetData(allLines1);
+ }
+ if (allLines2.Length > 1)
+ {
+ dataList2 = GetData(allLines2);
+ }
+
+
+
+ #region //灏嗘椂闂存埑鐩稿悓鐨勫垎涓轰竴缁勫苟鎺掑簭
+
+ var dataGroup1 = dataList1.GroupBy(a => a.TimeTip);
+ var dataGroup2 = dataList2.GroupBy(a => a.TimeTip);
+ var dataListSum = new List<string>();
+
+ foreach (var item in dataGroup1)
+ {
+ dataListSum.Add(item.Key);
+ }
+ foreach (var item in dataGroup2)
+ {
+ dataListSum.Add(item.Key);
+ }
+ dataListSum = dataListSum.Distinct().ToList();
+ dataListSum.Sort();
+ #endregion
+
+ var dataList = new List<ResultData>();
+ var dataList11 = new List<ResultData>();
+ var dataList22 = new List<ResultData>();
+ foreach (var item in dataListSum)
+ {
+ var list1 = dataList1.FindAll(a => a.TimeTip == item && !a.Result);
+ var list2 = dataList2.FindAll(a => a.TimeTip == item && !a.Result);
+ var itemToRemove = new List<ResultData>();
+ #region//璁$畻琛ㄦ牸2鏈�澶у昂瀵�
+ for (int ii = 0; ii < list2.Count; ii++)
+ {
+ if (list2[ii].Width > list2[ii].Height)
+ {
+ list2[ii].ex = list2[ii].Width * 0.0042;
+ }
+ else
+ {
+ list2[ii].ex = list2[ii].Height * 0.0042;
+ }
+ var distance = GetDistance(1050, 1050, list2[ii].X, list2[ii].Y);
+ list2[ii].R = distance;
+ }
+ #endregion
+ for (int i = 0; i < list1.Count; i++)
+ {
+ #region//璁$畻琛ㄦ牸1鏈�澶у昂瀵�
+ if (list1[i].Width > list1[i].Height)
+ {
+ list1[i].ex = list1[i].Width * 0.0042;
+ }
+ else
+ {
+ list1[i].ex = list1[i].Height * 0.0042;
+ }
+ var distance1 = GetDistance(1050, 1050, list1[i].X, list1[i].Y);
+ list1[i].R = distance1;
+
+ #endregion
+ for (int j = 0; j < list2.Count; j++)
+ {
+
+ var distance = GetDistance(list1[i].X, list1[i].Y, list2[j].X, list2[j].Y);
+ if (distance < 20)
+ {
+ itemToRemove.Add(list2[j]);
+ }
+ }
+ }
+
+ for (int i = 0; i < itemToRemove.Count; i++)
+ {
+ list2.Remove(itemToRemove[i]);
+ }
+
+ dataList11.AddRange(list1);
+ dataList22.AddRange(list2);
+ }
+
+
+ dataList.AddRange(dataList1);
+ dataList.AddRange(dataList2);
+ return dataList;
+ }
+ //缁熻璁惧鍒ゆ柇缁撴灉
+ private List<ResultData> JudgeCompareFile(FileInfo fileInfo1, FileInfo fileInfo2)
+ {
+
+ #region //灞忚斀
+ //var allLines1 = File.ReadAllLines(fileInfo1.FullName,Encoding.Default);
+ //var allLines2 = File.ReadAllLines(fileInfo2.FullName, Encoding.Default);
+ ////var dataJudgeList1 = GetJudgeData(allLines1);
+ ////var dataJudgeList2 = GetJudgeData(allLines2);
+ //List<ResultData> dataJudgeList1 = new List<ResultData>();
+ //List<ResultData> dataJudgeList2 = new List<ResultData>();
+ //if (allLines1.Length > 1)
+ //{
+ // dataJudgeList1 = GetData(allLines1);
+ //}
+ //if (allLines2.Length > 1)
+ //{
+
+ // dataJudgeList2 = GetData(allLines2);
+ //}
+
+ //var dataGroup1 = dataJudgeList1.GroupBy(a => a.TimeTip);
+ //var dataGroup2 = dataJudgeList2.GroupBy(a => a.TimeTip);
+ //var dataListSum = new List<string>();
+
+ //foreach (var item in dataGroup1)
+ //{
+ // dataListSum.Add(item.Key);
+ //}
+ //foreach (var item in dataGroup2)
+ //{
+ // dataListSum.Add(item.Key);
+ //}
+ //dataListSum = dataListSum.Distinct().ToList();
+ //dataListSum.Sort();
+ //var dataList = new List<ResultData>();
+ //var itemToRemove = new List<ResultData>();
+ //foreach (var item in dataListSum)
+ //{
+
+ // var list1 = dataJudgeList1.FindAll(a => a.TimeTip == item && a.JudgmentResult=="NG"&&!a.Result);
+ // var list2 = dataJudgeList2.FindAll(a => a.TimeTip == item && a.JudgmentResult == "NG"&&!a.Result);
+ // for (int i = 0; i < list1.Count; i++)
+ // {
+ // for (int j = 0; j < list2.Count; j++)
+ // {
+ // if (list1[i].JudgmentResult != list2[j].JudgmentResult)
+ // {
+ // list1[i].JudgmentResult = "NG";
+ // list2[j].JudgmentResult = "NG";
+ // itemToRemove.Add(list2[j]);
+ // }
+ // if (list1[i].JudgmentResult == list2[j].JudgmentResult)
+ // {
+ // itemToRemove.Add(list2[j]);
+ // }
+ // }
+ // }
+ // //if (list1.Count ==0&&list2.Count==0)
+ // //{
+ // // dataList.Add(new ResultData()
+ // // {
+ // // TimeTip = item,
+ // // JudgmentResult = "OK",
+
+ // // }); ; ;
+ // //}
+ // dataList.AddRange(list1);
+ // dataList.AddRange(list2);
+ //}
+ //for (int i = 0; i < itemToRemove.Count; i++)
+ //{
+ // dataList.Remove(itemToRemove[i]);
+ //}
+ #endregion
+
+ var allLines1 = File.ReadAllLines(fileInfo1.FullName, Encoding.Default);
+ var allLines2 = File.ReadAllLines(fileInfo2.FullName, Encoding.Default);
+ List<ResultData> dataList1 = new List<ResultData>();
+ List<ResultData> dataList2 = new List<ResultData>();
+ if (allLines1.Length > 1)
+ {
+ dataList1 = GetData(allLines1);
+ }
+ if (allLines2.Length > 1)
+ {
+ dataList2 = GetData(allLines2);
+ }
+
+
+
+ #region //灏嗘椂闂存埑鐩稿悓鐨勫垎涓轰竴缁勫苟鎺掑簭
+
+ var dataGroup1 = dataList1.GroupBy(a => a.TimeTip);
+ var dataGroup2 = dataList2.GroupBy(a => a.TimeTip);
+ var dataListSum = new List<string>();
+
+ foreach (var item in dataGroup1)
+ {
+ dataListSum.Add(item.Key);
+ }
+ foreach (var item in dataGroup2)
+ {
+ dataListSum.Add(item.Key);
+ }
+ dataListSum = dataListSum.Distinct().ToList();
+ dataListSum.Sort();
+ #endregion
+
+ var dataList = new List<ResultData>();
+ var dataList11 = new List<ResultData>();
+ var dataList22 = new List<ResultData>();
+ foreach (var item in dataListSum)
+ {
+ var list1 = dataList1.FindAll(a => a.TimeTip == item && !a.Result);
+ var list2 = dataList2.FindAll(a => a.TimeTip == item && !a.Result);
+ var itemToRemove1 = new List<ResultData>();
+ #region//璁$畻琛ㄦ牸2鏈�澶у昂瀵�
+ for (int ii = 0; ii < list2.Count; ii++)
+ {
+ if (list2[ii].Width > list2[ii].Height)
+ {
+ list2[ii].ex = list2[ii].Width * 0.0042;
+ }
+ else
+ {
+ list2[ii].ex = list2[ii].Height * 0.0042;
+ }
+ var distance = GetDistance(1050, 1050, list2[ii].X, list2[ii].Y);
+ list2[ii].R = distance;
+ }
+ #endregion
+ for (int i = 0; i < list1.Count; i++)
+ {
+ #region//璁$畻琛ㄦ牸1鏈�澶у昂瀵�
+ if (list1[i].Width > list1[i].Height)
+ {
+ list1[i].ex = list1[i].Width * 0.0042;
+ }
+ else
+ {
+ list1[i].ex = list1[i].Height * 0.0042;
+ }
+ var distance1 = GetDistance(1050, 1050, list1[i].X, list1[i].Y);
+ list1[i].R = distance1;
+
+ #endregion
+ for (int j = 0; j < list2.Count; j++)
+ {
+
+ var distance = GetDistance(list1[i].X, list1[i].Y, list2[j].X, list2[j].Y);
+ if (distance < 20)
+ {
+ itemToRemove1.Add(list2[j]);
+ if (list1[i].JudgmentResult!=list2[j].JudgmentResult)
+ {
+ list1[i].JudgmentResult = "NG";
+ list2[j].JudgmentResult = "NG";
+ }
+
+ }
+ }
+ }
+
+ for (int i = 0; i < itemToRemove1.Count; i++)
+ {
+ list2.Remove(itemToRemove1[i]);
+ }
+
+ dataList11.AddRange(list1);
+ dataList22.AddRange(list2);
+ }
+
+ //var itemToRemove = new List<ResultData>();
+ foreach (var item in dataListSum)
+ {
+
+ var list1 = dataList11.FindAll(a => a.TimeTip == item/* && a.JudgmentResult == "NG"*/ ); //涓嶇OK銆丯G閮借杈撳嚭
+ var list2 = dataList22.FindAll(a => a.TimeTip == item /*&& a.JudgmentResult == "NG"*/); //涓嶇OK銆丯G閮借杈撳嚭
+ //for (int i = 0; i < list1.Count; i++)
+ //{
+ // for (int j = 0; j < list2.Count; j++)
+ // {
+ // if (list1[i].JudgmentResult != list2[j].JudgmentResult)
+ // {
+ // list1[i].JudgmentResult = "NG";
+ // list2[j].JudgmentResult = "NG";
+ // itemToRemove.Add(list2[j]);
+ // }
+ // if (list1[i].JudgmentResult == list2[j].JudgmentResult)
+ // {
+ // itemToRemove.Add(list2[j]);
+ // }
+ // }
+ //}
+
+ dataList.AddRange(list1);
+ dataList.AddRange(list2);
+ }
+ //for (int i = 0; i < itemToRemove.Count; i++)
+ //{
+ // dataList.Remove(itemToRemove[i]);
+ //}
+
+ return dataList;
+
+ }
+
+ private List<ResultData> GetData(string[] allLines)
+ {
+ var dataList = new List<ResultData>();
+ var nametemp = allLines[1].Split(',')[0];
+ var resulttemp = allLines[1].Split(',')[1];
+ //var Ptr = allLines[1].Split(',')[10];
+ for (int i = 1; i < allLines.Length; i++)
+ {
+
+
+ var data = allLines[i].Split(',');
+
+ if (data[6]=="-")
+ {
+ continue;
+ }
+
+ string defectType = "";
+ string bbb = "";
+ string Ptr = "";
+ if (data[0] == "")
+ {
+ data[0] = nametemp;
+ data[1] = resulttemp;
+ //data[10] = Ptr;
+
+ }
+ if (data[1]== "鍒櫧")
+ {
+ defectType = "鍒櫧";
+ bbb = "NG";
+ Ptr = "";
+ }
+ else
+ {
+ defectType = "鐧界偣";
+ bbb = data[1];
+
+ if (data.Length>10)
+ {
+ Ptr = data[10];
+ }
+ }
+ var data6 = data[6].Split('#').ToList();
+ data6.Remove("");
+ var temp6 = Convert.ToInt32(data6[0]);
+ for (int a6 = 0; a6 < data6.Count; a6++)
+ {
+ if (Convert.ToInt32(data6[a6]) > temp6)
+ {
+ temp6 = Convert.ToInt32(data6[a6]);
+ }
+ }
+ data[6] = Convert.ToString(temp6);
+
+ var data7 = data[7].Split('#').ToList();
+ data7.Remove("");
+ var temp7 = Convert.ToInt32(data7[0]);
+ for (int a7 = 0; a7 < data7.Count; a7++)
+ {
+ if (Convert.ToInt32(data7[a7]) > temp7)
+ {
+ temp7 = Convert.ToInt32(data7[a7]);
+ }
+ }
+ data[7] = Convert.ToString(temp7);
+
+ dataList.Add(new ResultData()
+ {
+ TimeTip = data[0].Split('-')[0],
+ ImageFileName = data[0],
+ JudgmentResult = bbb,
+ Result = data[3] == "OK",
+ Probability = Convert.ToDouble(data[4]),
+ Uncertainty = Convert.ToDouble(data[5]),
+ //Height = Convert.ToDouble(data[6].Replace("#", "").Replace("-", "")),
+ //Width = Convert.ToDouble(data[7].Replace("#", "").Replace("-", "")),
+ Height = Convert.ToDouble(data[6]),
+ Width = Convert.ToDouble(data[7]),
+ X = Convert.ToDouble(data[8].Replace("#", "").Replace("-", "")),
+ Y = Convert.ToDouble(data[9].Replace("#", "").Replace("-", "")),
+ DefectType = defectType,
+ PostTreatmentResults = Ptr,
+
+ }) ; ; ;
+
+ nametemp = data[0];
+ resulttemp= data[1];
+
+ }
+
+ return dataList;
+ }
+ //private List<ResultData> GetJudgeData(string[] allLines)
+ //{
+ // var dataList = new List<ResultData>();
+ // for (int i = 1; i < allLines.Length; i++)
+ // {
+ // var data = allLines[i].Split(',');
+ // string defectType = "";
+ // string aaa = "";
+ // if (data[0] != "")
+ // {
+ // try
+ // {
+ // defectType = data[10];
+ // }
+ // catch (Exception)
+ // {
+
+ // defectType = "鍒櫧";
+ // aaa = "NG";
+ // }
+
+ // dataList.Add(new ResultData()
+ // {
+ // TimeTip = data[0].Split('-')[0],
+ // JudgmentResult = aaa,
+ // DefectType= defectType,
+
+ // }); ; ;
+ // }
+
+ // }
+ // return dataList;
+ //}
+
+ private double GetDistance(double x1, double y1, double x2, double y2)
+ {
+ return Math.Sqrt(Math.Pow((x2 - x1), 2) + Math.Pow((y2 - y1), 2));
+ }
+ private double GetAngle(double x1, double y1)
+ {
+ return Math.Atan2((y1 - 1050), (x1 - 1050)) * (180 / Math.PI);
+ }
+
+ }
+
+ public class ResultData
+ {
+ public string TimeTip = "";
+ public string JudgmentResult = "";
+ public string ImageFileName = "";
+ public bool Result = true;
+ public int Lensnumber = 0;
+ public double Probability = 0;
+ public double Uncertainty = 0;
+ public double Height = 0;
+ public double Width = 0;
+ public double X = 0;
+ public double Y = 0;
+ public double ex = 0;
+ public string location = "";
+ public double angle = 0;
+ public double R = 0;
+ public string DefectType = "";
+ public string PostTreatmentResults = "";
+
+
+ }
+
+
+}
diff --git a/P066.Data/Form1.resx b/P066.Data/Form1.resx
new file mode 100644
index 0000000..69f943d
--- /dev/null
+++ b/P066.Data/Form1.resx
@@ -0,0 +1,123 @@
+锘�<?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="folderBrowserDialog1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+ <value>17, 17</value>
+ </metadata>
+</root>
\ No newline at end of file
diff --git a/P066.Data/P066.Data.csproj b/P066.Data/P066.Data.csproj
new file mode 100644
index 0000000..bb373e6
--- /dev/null
+++ b/P066.Data/P066.Data.csproj
@@ -0,0 +1,83 @@
+锘�<?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>{8B8F7749-8823-48C6-B12A-54979E28C10C}</ProjectGuid>
+ <OutputType>WinExe</OutputType>
+ <RootNamespace>P066.Data</RootNamespace>
+ <AssemblyName>P066.Data</AssemblyName>
+ <TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
+ <FileAlignment>512</FileAlignment>
+ <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
+ <Deterministic>true</Deterministic>
+ </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>
+ </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>
+ </PropertyGroup>
+ <ItemGroup>
+ <Reference Include="System" />
+ <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.Net.Http" />
+ <Reference Include="System.Windows.Forms" />
+ <Reference Include="System.Xml" />
+ </ItemGroup>
+ <ItemGroup>
+ <Compile Include="Form1.cs">
+ <SubType>Form</SubType>
+ </Compile>
+ <Compile Include="Form1.Designer.cs">
+ <DependentUpon>Form1.cs</DependentUpon>
+ </Compile>
+ <Compile Include="Program.cs" />
+ <Compile Include="Properties\AssemblyInfo.cs" />
+ <EmbeddedResource Include="Form1.resx">
+ <DependentUpon>Form1.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>
+ </Compile>
+ <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>
+ <None Include="App.config" />
+ </ItemGroup>
+ <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+</Project>
\ No newline at end of file
diff --git "a/P066.Data/P066\346\225\260\346\215\256\345\210\206\346\236\220\347\250\213\345\272\217.csproj" "b/P066.Data/P066\346\225\260\346\215\256\345\210\206\346\236\220\347\250\213\345\272\217.csproj"
new file mode 100644
index 0000000..bb373e6
--- /dev/null
+++ "b/P066.Data/P066\346\225\260\346\215\256\345\210\206\346\236\220\347\250\213\345\272\217.csproj"
@@ -0,0 +1,83 @@
+锘�<?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>{8B8F7749-8823-48C6-B12A-54979E28C10C}</ProjectGuid>
+ <OutputType>WinExe</OutputType>
+ <RootNamespace>P066.Data</RootNamespace>
+ <AssemblyName>P066.Data</AssemblyName>
+ <TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
+ <FileAlignment>512</FileAlignment>
+ <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
+ <Deterministic>true</Deterministic>
+ </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>
+ </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>
+ </PropertyGroup>
+ <ItemGroup>
+ <Reference Include="System" />
+ <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.Net.Http" />
+ <Reference Include="System.Windows.Forms" />
+ <Reference Include="System.Xml" />
+ </ItemGroup>
+ <ItemGroup>
+ <Compile Include="Form1.cs">
+ <SubType>Form</SubType>
+ </Compile>
+ <Compile Include="Form1.Designer.cs">
+ <DependentUpon>Form1.cs</DependentUpon>
+ </Compile>
+ <Compile Include="Program.cs" />
+ <Compile Include="Properties\AssemblyInfo.cs" />
+ <EmbeddedResource Include="Form1.resx">
+ <DependentUpon>Form1.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>
+ </Compile>
+ <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>
+ <None Include="App.config" />
+ </ItemGroup>
+ <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+</Project>
\ No newline at end of file
diff --git a/P066.Data/Program.cs b/P066.Data/Program.cs
new file mode 100644
index 0000000..69a8b5d
--- /dev/null
+++ b/P066.Data/Program.cs
@@ -0,0 +1,22 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+
+namespace P066.Data
+{
+ static class Program
+ {
+ /// <summary>
+ /// 搴旂敤绋嬪簭鐨勪富鍏ュ彛鐐广��
+ /// </summary>
+ [STAThread]
+ static void Main()
+ {
+ Application.EnableVisualStyles();
+ Application.SetCompatibleTextRenderingDefault(false);
+ Application.Run(new Form1());
+ }
+ }
+}
diff --git a/P066.Data/Properties/AssemblyInfo.cs b/P066.Data/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..8aed378
--- /dev/null
+++ b/P066.Data/Properties/AssemblyInfo.cs
@@ -0,0 +1,36 @@
+锘縰sing System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// 鏈夊叧绋嬪簭闆嗙殑涓�鑸俊鎭敱浠ヤ笅
+// 鎺у埗銆傛洿鏀硅繖浜涚壒鎬у�煎彲淇敼
+// 涓庣▼搴忛泦鍏宠仈鐨勪俊鎭��
+[assembly: AssemblyTitle("P066.Data")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("P066.Data")]
+[assembly: AssemblyCopyright("Copyright 漏 2021")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// 灏� ComVisible 璁剧疆涓� false 浼氫娇姝ょ▼搴忛泦涓殑绫诲瀷
+//瀵� COM 缁勪欢涓嶅彲瑙併�傚鏋滈渶瑕佷粠 COM 璁块棶姝ょ▼搴忛泦涓殑绫诲瀷
+//璇峰皢姝ょ被鍨嬬殑 ComVisible 鐗规�ц缃负 true銆�
+[assembly: ComVisible(false)]
+
+// 濡傛灉姝ら」鐩悜 COM 鍏紑锛屽垯涓嬪垪 GUID 鐢ㄤ簬绫诲瀷搴撶殑 ID
+[assembly: Guid("8b8f7749-8823-48c6-b12a-54979e28c10c")]
+
+// 绋嬪簭闆嗙殑鐗堟湰淇℃伅鐢变笅鍒楀洓涓�肩粍鎴�:
+//
+// 涓荤増鏈�
+// 娆$増鏈�
+// 鐢熸垚鍙�
+// 淇鍙�
+//
+// 鍙互鎸囧畾鎵�鏈夊�硷紝涔熷彲浠ヤ娇鐢ㄤ互涓嬫墍绀虹殑 "*" 棰勭疆鐗堟湰鍙峰拰淇鍙�
+// 鏂规硶鏄寜濡備笅鎵�绀轰娇鐢ㄢ��*鈥�: :
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/P066.Data/Properties/Resources.Designer.cs b/P066.Data/Properties/Resources.Designer.cs
new file mode 100644
index 0000000..dd60e96
--- /dev/null
+++ b/P066.Data/Properties/Resources.Designer.cs
@@ -0,0 +1,71 @@
+锘�//------------------------------------------------------------------------------
+// <auto-generated>
+// 姝や唬鐮佺敱宸ュ叿鐢熸垚銆�
+// 杩愯鏃剁増鏈�: 4.0.30319.42000
+//
+// 瀵规鏂囦欢鐨勬洿鏀瑰彲鑳藉鑷翠笉姝g‘鐨勮涓猴紝濡傛灉
+// 閲嶆柊鐢熸垚浠g爜锛屽垯鎵�鍋氭洿鏀瑰皢涓㈠け銆�
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace P066.Data.Properties
+{
+
+
+ /// <summary>
+ /// 寮虹被鍨嬭祫婧愮被锛岀敤浜庢煡鎵炬湰鍦板寲瀛楃涓茬瓑銆�
+ /// </summary>
+ // 姝ょ被鏄敱 StronglyTypedResourceBuilder
+ // 绫婚�氳繃绫讳技浜� ResGen 鎴� Visual Studio 鐨勫伐鍏疯嚜鍔ㄧ敓鎴愮殑銆�
+ // 鑻ヨ娣诲姞鎴栧垹闄ゆ垚鍛橈紝璇风紪杈� .ResX 鏂囦欢锛岀劧鍚庨噸鏂拌繍琛� ResGen
+ // (浠� /str 浣滀负鍛戒护閫夐」)锛屾垨閲嶆柊鐢熸垚 VS 椤圭洰銆�
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+ internal class Resources
+ {
+
+ private static global::System.Resources.ResourceManager resourceMan;
+
+ private static global::System.Globalization.CultureInfo resourceCulture;
+
+ [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
+ internal Resources()
+ {
+ }
+
+ /// <summary>
+ /// 杩斿洖姝ょ被浣跨敤鐨勭紦瀛� ResourceManager 瀹炰緥銆�
+ /// </summary>
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ internal static global::System.Resources.ResourceManager ResourceManager
+ {
+ get
+ {
+ if ((resourceMan == null))
+ {
+ global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("P066.Data.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;
+ }
+ }
+ }
+}
diff --git a/P066.Data/Properties/Resources.resx b/P066.Data/Properties/Resources.resx
new file mode 100644
index 0000000..af7dbeb
--- /dev/null
+++ b/P066.Data/Properties/Resources.resx
@@ -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>
\ No newline at end of file
diff --git a/P066.Data/Properties/Settings.Designer.cs b/P066.Data/Properties/Settings.Designer.cs
new file mode 100644
index 0000000..444fee0
--- /dev/null
+++ b/P066.Data/Properties/Settings.Designer.cs
@@ -0,0 +1,30 @@
+锘�//------------------------------------------------------------------------------
+// <auto-generated>
+// This code was generated by a tool.
+// Runtime Version:4.0.30319.42000
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace P066.Data.Properties
+{
+
+
+ [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
+ internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
+ {
+
+ private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
+
+ public static Settings Default
+ {
+ get
+ {
+ return defaultInstance;
+ }
+ }
+ }
+}
diff --git a/P066.Data/Properties/Settings.settings b/P066.Data/Properties/Settings.settings
new file mode 100644
index 0000000..3964565
--- /dev/null
+++ b/P066.Data/Properties/Settings.settings
@@ -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>
diff --git "a/P066\346\225\260\346\215\256\345\210\206\346\236\220\347\250\213\345\272\217.sln" "b/P066\346\225\260\346\215\256\345\210\206\346\236\220\347\250\213\345\272\217.sln"
new file mode 100644
index 0000000..303c51c
--- /dev/null
+++ "b/P066\346\225\260\346\215\256\345\210\206\346\236\220\347\250\213\345\272\217.sln"
@@ -0,0 +1,25 @@
+锘�
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 16
+VisualStudioVersion = 16.0.30225.117
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "P066鏁版嵁鍒嗘瀽绋嬪簭", "P066.Data\P066鏁版嵁鍒嗘瀽绋嬪簭.csproj", "{8B8F7749-8823-48C6-B12A-54979E28C10C}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Release|Any CPU = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {8B8F7749-8823-48C6-B12A-54979E28C10C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {8B8F7749-8823-48C6-B12A-54979E28C10C}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {8B8F7749-8823-48C6-B12A-54979E28C10C}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {8B8F7749-8823-48C6-B12A-54979E28C10C}.Release|Any CPU.Build.0 = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ SolutionGuid = {9015AB30-DC50-4705-A9A7-45C14C06313E}
+ EndGlobalSection
+EndGlobal
--
Gitblit v1.8.0