V1.0 修复容错功能报错

This commit is contained in:
CPL 2024-04-01 15:23:50 +08:00
parent 30ff04ea77
commit c5b2c70d84
94 changed files with 165160 additions and 11586 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 134 KiB

View File

@ -14,7 +14,7 @@
<Deterministic>true</Deterministic>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<PlatformTarget>x64</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
@ -32,9 +32,62 @@
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup>
<ApplicationIcon>
</ApplicationIcon>
</PropertyGroup>
<ItemGroup>
<Reference Include="BarTenderPrint">
<HintPath>..\..\..\..\..\版博士\源码\标签打印模块\BarTender\BarTenderPrint\BarTenderPrint\bin\x64\Debug\BarTenderPrint.dll</HintPath>
</Reference>
<Reference Include="CSkin">
<HintPath>..\..\..\..\..\..\模块化\Code\MaiMuControl\MaiMuControl\bin\x64\Debug\CSkin.dll</HintPath>
</Reference>
<Reference Include="HZH_Controls">
<HintPath>..\..\..\..\..\版博士\源码\V2.0\halftoneproject-master\BanBoShi\Dlls\HZH_Controls.dll</HintPath>
</Reference>
<Reference Include="MaiMuControl">
<HintPath>..\..\..\..\..\..\模块化\Code\MaiMuControl\MaiMuControl\bin\x64\Debug\MaiMuControl.dll</HintPath>
</Reference>
<Reference Include="Models, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\Models\bin\Debug\Models.dll</HintPath>
</Reference>
<Reference Include="OpenCvSharp, Version=1.0.0.0, Culture=neutral, PublicKeyToken=6adad1e807fea099, processorArchitecture=MSIL">
<HintPath>..\packages\OpenCvSharp4.4.8.0.20230708\lib\net48\OpenCvSharp.dll</HintPath>
</Reference>
<Reference Include="OpenCvSharp.Extensions, Version=1.0.0.0, Culture=neutral, PublicKeyToken=6adad1e807fea099, processorArchitecture=MSIL">
<HintPath>..\packages\OpenCvSharp4.Extensions.4.7.0.20230115\lib\net48\OpenCvSharp.Extensions.dll</HintPath>
</Reference>
<Reference Include="Service">
<HintPath>..\Service\bin\Debug\Service.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Buffers, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Buffers.4.5.1\lib\net461\System.Buffers.dll</HintPath>
</Reference>
<Reference Include="System.Core" />
<Reference Include="System.Design" />
<Reference Include="System.Drawing.Common, Version=4.0.0.2, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Drawing.Common.5.0.3\lib\net461\System.Drawing.Common.dll</HintPath>
</Reference>
<Reference Include="System.Memory, Version=4.0.1.2, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Memory.4.5.5\lib\net461\System.Memory.dll</HintPath>
</Reference>
<Reference Include="System.Numerics" />
<Reference Include="System.Numerics.Vectors, Version=4.1.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll</HintPath>
</Reference>
<Reference Include="System.Runtime.CompilerServices.Unsafe, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Runtime.CompilerServices.Unsafe.6.0.0\lib\net461\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
</Reference>
<Reference Include="System.Security" />
<Reference Include="System.ValueTuple, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.ValueTuple.4.5.0\lib\net47\System.ValueTuple.dll</HintPath>
</Reference>
<Reference Include="System.Web" />
<Reference Include="System.Windows.Forms.DataVisualization" />
<Reference Include="System.Xaml" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
@ -46,6 +99,7 @@
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="ImageDefect\DefectLib.cs" />
<Compile Include="Main.cs">
<SubType>Form</SubType>
</Compile>
@ -54,6 +108,22 @@
</Compile>
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="SysCtrl\ConfMgr.cs" />
<Compile Include="SysCtrl\SysEnum.cs" />
<Compile Include="SysCtrl\SysMgr.cs" />
<Compile Include="UI\Load\InitFrm.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="UI\Load\InitFrm.Designer.cs">
<DependentUpon>InitFrm.cs</DependentUpon>
</Compile>
<Compile Include="UI\SysSet\SysSetFrm.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="UI\SysSet\SysSetFrm.Designer.cs">
<DependentUpon>SysSetFrm.cs</DependentUpon>
</Compile>
<Compile Include="UI\UIStyle.cs" />
<EmbeddedResource Include="Main.resx">
<DependentUpon>Main.cs</DependentUpon>
</EmbeddedResource>
@ -65,7 +135,15 @@
<Compile Include="Properties\Resources.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Resources.resx</DependentUpon>
<DesignTime>True</DesignTime>
</Compile>
<EmbeddedResource Include="UI\Load\InitFrm.resx">
<DependentUpon>InitFrm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="UI\SysSet\SysSetFrm.resx">
<DependentUpon>SysSetFrm.cs</DependentUpon>
</EmbeddedResource>
<None Include="packages.config" />
<None Include="Properties\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
@ -79,5 +157,8 @@
<ItemGroup>
<None Include="App.config" />
</ItemGroup>
<ItemGroup>
<None Include="Ge.ico" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>

View File

@ -0,0 +1,697 @@
using HZH_Controls.Controls;
using MaiMuControl.Device;
using Models;
using OpenCvSharp;
using System;
using System.Collections.Generic;
using System.Data;
using System.Diagnostics;
using System.Linq;
using System.Reflection;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using static System.ComponentModel.Design.ObjectSelectorEditor;
namespace GeBoShi.ImageDefect
{
public class DefectLib
{
#region C++dll
private const string dll_path = "yolo_trt.dll";
[DllImport(dll_path, CharSet = CharSet.Unicode, CallingConvention = CallingConvention.StdCall)]
static extern IntPtr CreateDetector(string model_path);
[DllImport(dll_path, CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)]
extern static bool DestroyDetector(IntPtr detector);
/// <summary>
/// 非0值表示成功0表示失败 返回小图张数
/// </summary>
/// <param name="detector"></param>
/// <returns></returns>
[DllImport(dll_path, CharSet = CharSet.Unicode, CallingConvention = CallingConvention.StdCall)]
static extern int GetBatchSize(IntPtr detector);
[DllImport(dll_path, CharSet = CharSet.Unicode, CallingConvention = CallingConvention.StdCall)]
static extern bool Detect(IntPtr detector, ref byte bgrs_data,
int image_num, int width, int height, int channels,
float conf_threshold, float iou_threshold,
ref float output, int output_size, ref int object_num,
int expand_pixel);
#endregion
public Action<WarningEnum, string> WarningEvent;
/// <summary>
/// 检测结果JSON(原图,结果)
/// </summary>
public Action<DefectTask> finishEvent;
/// <summary>
/// 是否打开设备成功
/// </summary>
public bool IsInit { get; private set; } = false;
private IntPtr detector = IntPtr.Zero;
private Thread t_task, t_task_operation, t_task_maketag;
//=======task list
private List<DefectTask> taskList = new List<DefectTask>();
private List<DefectTask> taskOperationList = new List<DefectTask>();
private List<DefectTask> taskMakeTagList = new List<DefectTask>();
private string preModelName = "";
#region
private readonly int image_width = 2048;
private readonly int image_hight = 2048;
private readonly int image_channels = 3;
private readonly int image_bytes = 2048 * 2048 * 3;
private readonly int detect_elem_size = 7; //维度数据结果x y w h conf classid
private readonly int detect_max_object_num = 20;//这个指的是一张子图可能最多给你返回的目标个球
public Action<int, int> QueueCountEvent;//0/1/2, 数量
#endregion
public DefectLib()
{
}
public bool start()
{
try
{
//detector = CreateDetector(Config.model_path, Config.labels_path, true, 6);
//if (detector == IntPtr.Zero)
// throw new Exception("模型初始化失败!");
preModelName = "";
IsInit = true;
taskList.Clear();
taskOperationList.Clear();
taskMakeTagList.Clear();
t_task = new System.Threading.Thread(runStep);
t_task.IsBackground = true;
t_task.Start();
t_task_operation = new System.Threading.Thread(run2);
t_task_operation.IsBackground = true;
t_task_operation.Start();
t_task_maketag = new System.Threading.Thread(run3);
t_task_maketag.IsBackground = true;
t_task_maketag.Start();
return true;
}
catch (Exception ex)
{
WarningEvent?.Invoke(WarningEnum.High, ex.Message);
return false;
}
}
public void stop()
{
if (!IsInit) return;
try
{
IsInit = false;
//timer.Elapsed -= Timer_Elapsed;
preModelName = "";
//释放模型
if (detector != IntPtr.Zero)
{
DestroyDetector(detector);
detector = IntPtr.Zero;
}
if (t_task != null)
{
bool b = t_task.Join(5000);
if (!b) t_task.Abort();
t_task = null;
}
if (t_task_operation != null)
{
bool b = t_task_operation.Join(5000);
if (!b) t_task_operation.Abort();
t_task_operation = null;
}
if (t_task_maketag != null)
{
bool b = t_task_maketag.Join(5000);
if (!b) t_task_maketag.Abort();
t_task_maketag = null;
}
taskList.Clear();
taskOperationList.Clear();
taskMakeTagList.Clear();
}
catch { }
}
/// <summary>
/// 切割(先左右,后上下)
/// </summary>
/// <param name="mat"></param>
/// <param name="width"></param>
/// <param name="height"></param>
/// <returns></returns>
private Mat[] OpenCVToCutsMat(Mat mat, int width, int height)
{
Mat[] array = new Mat[mat.Width / width * mat.Height / height];
int num = 0;
for (int i = 0; i < mat.Height / height; i++)
{
for (int j = 0; j < mat.Width / width; j++)
{
int x = j * width;
int y = i * height;
System.Drawing.Rectangle rectangle = new System.Drawing.Rectangle(x, y, width, height);
Rect roi = new Rect(rectangle.X, rectangle.Y, rectangle.Width, rectangle.Height);
array[num] = new Mat(mat, roi).Clone();
num++;
}
}
return array;
}
private void runStep()
{
int step = 0;
while (IsInit)
{
if (taskList.Count < 1)
{
Thread.Sleep(0);
continue;
}
//
step = 1;
var task = pop();
try
{
if (task != null)
{
Stopwatch stopwatch = Stopwatch.StartNew();
step = 2;
if (preModelName != task.modelName)
{
step = 3;
//先释放模型
if (detector != IntPtr.Zero)
{
step = 4;
DestroyDetector(detector);
detector = IntPtr.Zero;
}
step = 5;
detector = CreateDetector($"./models/{task.modelName}");
if (detector == IntPtr.Zero)
throw new Exception($"模型({task.modelName})初始化失败!");
step = 6;
preModelName = task.modelName;
}
//源图
//Bitmap bmp = yolo1.Read2Bmp(file_path);
//切割图像输入图像格式14208*10640
stopwatch.Start();
//task.resizeBmp = OpenCVUtil.resize( task.bmp.Clone(), task.resize.Width, task.resize.Height);//在外面已做了resize
//Cv2.CvtColor(task.bmp, task.bmpBgr2rgb, ColorConversionCodes.BGR2RGB);
//task.bmps_cut = OpenCVToCutsMat(task.bmpBgr2rgb, image_width, image_hight); //这里cut时之前加的clone
step = 7;
task.bmps_cut = OpenCVToCutsMat(task.bmp, image_width, image_hight); //这里cut时之前加的clone
stopwatch.Stop();
task.stopwatch[0] = stopwatch.ElapsedMilliseconds;
//Resize图像
//stopwatch.Restart();
//task.bmps_resize = yolo1.OpenCVToResizesMat(task.bmps_cut, task.resize.Width, task.resize.Height);
//stopwatch.Stop();
//task.stopwatch[1] = stopwatch.ElapsedMilliseconds;
//预处理模型
//stopwatch.Restart();
//task.tensors = yolo1.PreprocessImageMat(task.bmps_resize);
//stopwatch.Stop();
//task.stopwatch[2] = stopwatch.ElapsedMilliseconds;
step = 8;
lock (taskOperationList)
{
taskOperationList.Add(task);
QueueCountEvent?.BeginInvoke(1, taskOperationList.Count, null, null);
}
step = 9;
}
}
catch (Exception ex)
{
WarningEvent?.Invoke(WarningEnum.Low, $"DefectLib task1 err({step}):" + ex.Message);
task.isSucceed = false;
task.resultInfo = ex.Message;
callback(task);
}
}
}
//推理
private void run2()
{
QualifiedLimit qualifiedLimit;
while (IsInit)
{
if (taskOperationList.Count < 1)
{
Thread.Sleep(0);
continue;
}
//
var task = pop2();
int cut_count = 0, step = 0;
try
{
if (task != null && task.bmps_cut.Count() > 0)
{
//WarningEvent?.Invoke(DateTime.Now,WarningEnum.Low, "DefectLib tasks 运行推理...");
cut_count = task.bmps_cut.Count();
Stopwatch stopwatch = Stopwatch.StartNew();
//====推理(必需单队列)
stopwatch.Start();
// 把数据转为byte数组【h, w, c】的bgr格式第一张在前第二张在后
byte[] imgData = new byte[image_bytes * cut_count];
for (int i = 0; i < cut_count; i++)
Marshal.Copy(task.bmps_cut[i].Data, imgData, image_bytes * i, image_bytes);
step = 1;
stopwatch.Stop();
task.stopwatch[1] = stopwatch.ElapsedMilliseconds;
stopwatch.Restart();
task.output = new float[cut_count * detect_elem_size * detect_max_object_num];
task.output_num = new int[cut_count];
//执行推理
step = 2;
bool ok = Detect(detector, ref imgData[0], cut_count, image_width, image_hight, image_channels,
0.25f, 0.45f, ref task.output[0], task.output.Length, ref task.output_num[0], task.expand_pixel);
//bool ok = Detect(_detector, ref imgData[0], imgs.Count, ImageWidth, image_hight, image_channels,
// 0.25f, 0.45f, ref output[0], output.Length, ref output_num[0]);
step = 3;
stopwatch.Stop();
task.stopwatch[2] = stopwatch.ElapsedMilliseconds;
//WarningEvent?.Invoke(DateTime.Now,WarningEnum.Low, $"DefectLib tasks 结果推理={ok}");
for (int i = 0; i < cut_count; i++)
task.bmps_cut[i].Dispose();
if (ok == false)
throw new Exception($"推理失败或者输入数组太小({cut_count}");
//
lock (taskMakeTagList)
{
taskMakeTagList.Add(task);
QueueCountEvent?.BeginInvoke(2, taskMakeTagList.Count, null, null);
}
}
}
catch (Exception ex)
{
WarningEvent?.Invoke(WarningEnum.Low, $"DefectLib task2 err({step}):({cut_count}){ex.Message}");
task.isSucceed = false;
task.resultInfo = ex.Message;
callback(task);
}
}
}
//打标
private void run3()
{
QualifiedLimit qualifiedLimit;
while (IsInit)
{
if (taskMakeTagList.Count < 1)
{
Thread.Sleep(0);
continue;
}
//
var task = pop3();
int liStep = 0;
try
{
Stopwatch stopwatch = Stopwatch.StartNew();
stopwatch.Restart();
int cut_count = task.bmps_cut.Count();//上面bmps_cut已销毁
int colNum = task.bmp.Width / image_width;
int rowNum = task.bmp.Height / image_hight;
int count = 0;
liStep = 3;
//车用革去除接头处横档误判
bool haveJieTou = false;
List<DefectLabelInfo> DefectLabelInfoList = new List<DefectLabelInfo>();
for (int i = 0; i < cut_count; i++)
{
liStep = i * 100;
task.resultInfo += $"第 {i}/{cut_count} 张小图(大图索引{task.photoIndex}): 缺陷数 = {task.output_num[i]}\n";
//task.resultInfo +=$"大图({task.tag})[{task.bmp.Width}*{task.bmp.Height}],第 {i + 1}/{cut_count} 张小图[{task.bmps_cut[i].Width}*{task.bmps_cut[i].Height}]: 瑕疵output_num = {output_num[i]}\n";
#region
for (int j = 0; j < task.output_num[i]; j++)//缺陷数
{
liStep += j;//0
//WarningEvent?.Invoke(DateTime.Now,WarningEnum.Low, $"-------");
int index = count * detect_elem_size;
// 打印输出信息(示例代码,根据实际情况进行修改和格式化)
// 获取输出信息
int x = (int)task.output[index];
int y = (int)task.output[index + 1];
int w = (int)task.output[index + 2];
int h = (int)task.output[index + 3];
int classId = (int)task.output[index + 4];
double confidence = Math.Round(task.output[index + 5], 2); //置信度
double contrast = Math.Round(task.output[index + 6], 3);//对比度
//y = image_hight-y-h;//转到右下角为原点
count++;
var cmW = Math.Round(w * task.widthRatio / task.cm2px_x, 2);
var cmH = Math.Round(h * task.widthRatio / task.cm2px_y, 2);
// 打印输出信息
task.resultInfo += $"----{i}----col:{i % colNum}/{colNum} row:{i / colNum}/{colNum}-----------\n目标:{j + 1} 类别ID:{classId} 置信度:{confidence} 对比度:{contrast} 坐标:({x},{y})-({x + w},{y + h}) 宽高:w={w},h={h}; \n";
DefectLabelInfoList.Add(new DefectLabelInfo()
{
x = (int)task.output[index],
y = (int)task.output[index + 1],
w = (int)task.output[index + 2],
h = (int)task.output[index + 3],
classId = (int)task.output[index + 4],
confidence = Math.Round(task.output[index + 5], 2), //置信度
contrast = Math.Round(task.output[index + 6], 3),//对比度
cmW = Math.Round(w * task.widthRatio / task.cm2px_x, 2),
cmH = Math.Round(h * task.widthRatio / task.cm2px_y, 2),
i = i,
j = j,
});
}
#endregion
}
//结果过滤
#region
//降序排序,先得到是否有接头检出
List<DefectLabelInfo> DefectLabelInfoListByClassID = DefectLabelInfoList.OrderByDescending(t => t.classId).ToList();//降序
for (int q = 0; q < DefectLabelInfoList.Count; q++)
{
//是否满足此产品标准
if (task.qualifiedLimitList != null && task.qualifiedLimitList.Count > 0)
{
qualifiedLimit = task.qualifiedLimitList.FirstOrDefault(m => m.Code == task.labelDic[DefectLabelInfoList[q].classId]);
if (qualifiedLimit != null)
{
//if ((qualifiedLimit.ZXD > 0 && qualifiedLimit.ZXD > confidence)
// || (qualifiedLimit.ContrastTop + qualifiedLimit.ContrastLower > 0 && x> qualifiedLimit.ContrastLower && x < qualifiedLimit.ContrastTop)
// || (qualifiedLimit.Area > 0 && qualifiedLimit.Area > cmW * cmH))
if (DefectLabelInfoList[q].confidence <= qualifiedLimit.ZXD)//confidence > qualifiedLimit.ZXD 是瑕疵 才继续判断下面的两个条件
{
task.resultInfo += $" 置信度不满足此产品瑕疵标准,跳过! \n";
continue;
}
//下限<对比度<上限:不是瑕疵
var ContrastTotal = qualifiedLimit.ContrastTop + qualifiedLimit.ContrastLower;
if (qualifiedLimit.IsOR)
{
if (!(
(qualifiedLimit.Area <= 0 || DefectLabelInfoList[q].cmW * DefectLabelInfoList[q].cmH >= qualifiedLimit.Area) ||
(ContrastTotal <= 0 || (DefectLabelInfoList[q].contrast < qualifiedLimit.ContrastLower || DefectLabelInfoList[q].contrast > qualifiedLimit.ContrastTop))))
{
task.resultInfo += $" 不满足此产品瑕疵标准,跳过! \n";
//WarningEvent?.Invoke(DateTime.Now,WarningEnum.Low, $"判断不是瑕疵类别ID:{classId} 置信度({confidence},[{qualifiedLimit.ZXD}]); isOr({qualifiedLimit.IsOR}); 面积({cmW * cmH},[{ qualifiedLimit.Area}]); 对比度({contrast},[{qualifiedLimit.ContrastLower}-{qualifiedLimit.ContrastTop}])");
continue;
}
}
else
{
if (!(
(qualifiedLimit.Area <= 0 || DefectLabelInfoList[q].cmW * DefectLabelInfoList[q].cmH >= qualifiedLimit.Area) &&
(ContrastTotal <= 0 || (DefectLabelInfoList[q].contrast < qualifiedLimit.ContrastLower || DefectLabelInfoList[q].contrast > qualifiedLimit.ContrastTop))))
{
task.resultInfo += $" 不满足此产品瑕疵标准,跳过! \n";
//WarningEvent?.Invoke(DateTime.Now,WarningEnum.Low, $"判断不是瑕疵类别ID:{classId} 置信度({confidence},[{qualifiedLimit.ZXD}]); isOr({qualifiedLimit.IsOR}); 面积({cmW * cmH},[{ qualifiedLimit.Area}]); 对比度({contrast},[{qualifiedLimit.ContrastLower}-{qualifiedLimit.ContrastTop}])");
continue;
}
}
if (task.labelDic[DefectLabelInfoList[q].classId] == "jietou")
haveJieTou = true;
if (haveJieTou && (task.labelDic[DefectLabelInfoList[q].classId] == "hengdang"))
{
task.resultInfo += $" 判断为接头处横档,跳过! \n";
continue;
}
//WarningEvent?.Invoke(DateTime.Now,WarningEnum.Low, $"判断是瑕疵类别ID:{classId} 置信度({confidence},[{qualifiedLimit.ZXD}]); isOr({qualifiedLimit.IsOR}); 面积({cmW * cmH},[{ qualifiedLimit.Area}]); 对比度({contrast},[{qualifiedLimit.ContrastLower}-{qualifiedLimit.ContrastTop}])");
}
}
liStep++;//1
//打标
var point1 = new OpenCvSharp.Point((DefectLabelInfoList[q].i % colNum) * image_width + DefectLabelInfoList[q].x, (DefectLabelInfoList[q].i / colNum) * image_hight + DefectLabelInfoList[q].y);
var point2 = new OpenCvSharp.Point(point1.X + DefectLabelInfoList[q].w, point1.Y + DefectLabelInfoList[q].h);
liStep++;//2
task.resultInfo += $" 转换到大图坐标(px)p1={point1.X},{point1.Y}; p2={point2.X},{point2.Y}\n";
Cv2.Rectangle(task.bmpTag, point1, point2, new Scalar(0.0, 0.0, 255.0), 1);//画打标点
//WarningEvent?.Invoke(DateTime.Now,WarningEnum.Low, $"保存第 {count} 行缺陷信息;");
var cmX = Math.Round(point1.X * task.widthRatio / task.cm2px_x, 2);
var cmY = Math.Round((task.bmp.Height - point1.Y - DefectLabelInfoList[q].h) * task.widthRatio / task.cm2px_y, 2);//外面计Y从右下角为原点
liStep++;//3
task.resultInfo += $" 转换到大图坐标(cm)[widthRatio={task.widthRatio}]x={cmX},y={cmY}; w={DefectLabelInfoList[q].cmW},h={DefectLabelInfoList[q].cmH}\n";
task.excelTable.Rows.Add($"{task.photoIndex}", cmX, cmY, DefectLabelInfoList[q].cmW, DefectLabelInfoList[q].cmH, DefectLabelInfoList[q].j + 1, DefectLabelInfoList[q].classId, DefectLabelInfoList[q].confidence, DefectLabelInfoList[q].contrast);
liStep++;//4
//切缺陷小图
//WarningEvent?.Invoke(DateTime.Now,WarningEnum.Low, $"保存第 {count} 个缺陷小图;");
int left, top, decX, decY;
decX = (DefectLabelInfoList[q].w > 236 ? 20 : 256 - DefectLabelInfoList[q].w) / 2;
decY = (DefectLabelInfoList[q].h > 236 ? 20 : 256 - DefectLabelInfoList[q].h) / 2;
left = point1.X - decX;
top = point1.Y - decY;
if (left < 0) left = 0;
if (top < 0) top = 0;
int width = DefectLabelInfoList[q].w + decX * 2;
int height = DefectLabelInfoList[q].h + decY * 2;
if (left + width > task.bmp.Width - 1) width = task.bmp.Width - left - 1;
if (top + height > task.bmp.Height - 1) height = task.bmp.Height - top - 1;
liStep++;//5
Rect roi = new Rect(left, top, width, height);
liStep++;//6
if (height < 1 || width < 1)
{
task.resultInfo += $" 打标到大图坐标Rect(px)left={left},top={top}; width={width},height={height}\n";
task.resultInfo += $" test point1.Y={point1.Y},h={DefectLabelInfoList[q].h}; top={top},mat.Height={task.bmp.Height}\n================\n";
WarningEvent?.Invoke(WarningEnum.Normal, task.resultInfo);
}
//保存
//string filename = $"{Config.appBasePath}\\temp\\{task.tag}\\{task.tag}_X{mmX.ToString()}_Y{mmY.ToString()}_W{mmW.ToString()}_H{mmH.ToString()}_目标{j + 1}_类别{classId}_置信度{confidence}.bmp";
//OpenCvSharp.Extensions.BitmapConverter.ToBitmap(new Mat(task.bmp, roi)).Save(filename, ImageFormat.Jpeg);
task.lstDefectBmp.Add(new Mat(task.bmpTag, roi).Clone());
liStep++;//7
}
#endregion
liStep = 99;
stopwatch.Stop();
task.stopwatch[3] = stopwatch.ElapsedMilliseconds;
task.isSucceed = true;
callback(task);
}
catch (Exception ex)
{
WarningEvent?.Invoke(WarningEnum.Low, $"DefectLib task3 err({liStep}):" + ex.Message);
task.isSucceed = false;
task.resultInfo = ex.Message;
callback(task);
}
}
}
#region
private void callback(DefectTask task)
{
//返回成功/失败,异步调用
if (task.finishEvent != null || (task.finishEvent = finishEvent) != null)
//task.finishEvent.BeginInvoke(result, errInfo, res => task.finishEvent.EndInvoke(res), null);
System.Threading.ThreadPool.QueueUserWorkItem(waitCallback, task);
}
//异步回调
WaitCallback waitCallback = new WaitCallback(o =>
{
var task = (DefectTask)o;
task.finishEvent(task);
});
#endregion
#region
public void add(DefectTask task)
{
lock (taskList)
{
taskList.Add(task);
QueueCountEvent?.BeginInvoke(0, taskList.Count, null, null);
}
}
private DefectTask pop()
{
lock (taskList)
{
if (taskList.Count < 1)
return null;
//int index = 0;// taskList.FindIndex(p => { return p.isSync; });
//if (index < 0) index = 0;
var task = taskList[0];
taskList.RemoveAt(0);
QueueCountEvent?.BeginInvoke(0, taskList.Count, null, null);
return task;
}
}
private DefectTask pop2()
{
lock (taskOperationList)
{
if (taskOperationList.Count < 1)
return null;
//int index = 0;// taskList.FindIndex(p => { return p.isSync; });
//if (index < 0) index = 0;
var task = taskOperationList[0];
taskOperationList.RemoveAt(0);
QueueCountEvent?.BeginInvoke(1, taskOperationList.Count, null, null);
return task;
}
}
private DefectTask pop3()
{
lock (taskMakeTagList)
{
if (taskMakeTagList.Count < 1)
return null;
//int index = 0;// taskList.FindIndex(p => { return p.isSync; });
//if (index < 0) index = 0;
var task = taskMakeTagList[0];
taskMakeTagList.RemoveAt(0);
QueueCountEvent?.BeginInvoke(2, taskMakeTagList.Count, null, null);
return task;
}
}
#endregion
public void Dispose()
{
stop();
}
private class DefectLabelInfo
{
public int x { get; set; }
public int y { get; set; }
public int w { get; set; }
public int h { get; set; }
public int classId { get; set; }
public double confidence { get; set; } //置信度
public double contrast { get; set; }//对比度
public double cmW { get; set; }
public double cmH { get; set; }
public int i { get; set; }//小图index
public int j { get; set; }//缺陷index
}
}
public class DefectTask
{
public DefectTask()
{
// 创建一个 DataTable 对象来存储数据
excelTable = new DataTable("MyData");
// 添加列到 DataTable
excelTable.Columns.Add("FileName", typeof(string));
excelTable.Columns.Add("X", typeof(decimal));
excelTable.Columns.Add("Y", typeof(decimal));
excelTable.Columns.Add("W", typeof(decimal));
excelTable.Columns.Add("H", typeof(decimal));
excelTable.Columns.Add("目标", typeof(int));
excelTable.Columns.Add("类别", typeof(int));
excelTable.Columns.Add("置信度", typeof(decimal));
excelTable.Columns.Add("对比度", typeof(decimal));
// 向 DataTable 中添加数据行
//excelTable.Rows.Add("John Doe", 30);
//excelTable.Rows.Add("Jane Smith", 25);
}
/// <summary>
/// 处理参数
/// </summary>
public int expand_pixel;
public int cm2px_x;
public int cm2px_y;
public Dictionary<int, string> labelDic;
/// <summary>
/// 模型名字
/// </summary>
public string modelName;
public Models.Records record;
//public string bmpPath;//源图路径(仅目录)
/// <summary>
/// 源图(resize后的)
/// </summary>
public Mat bmp;
//public Mat bmpBgr2rgb=new Mat();
public System.Drawing.Size resize = new System.Drawing.Size(224, 224);
//public Mat resizeBmp;//resize后 BGR2RGB图只用于识别
public Mat bmpTag;
/// <summary>
/// 图片索引0-n
/// </summary>
public int photoIndex;//excel中对应的图像路径标识
public float widthRatio;//宽度比例resize前/resize后
//切割后
public Mat[] bmps_cut;
//用于比对参数 }//置信度 面积 对比度
public List<QualifiedLimit> qualifiedLimitList;
//推理后结果用于打标
public float[] output;
public int[] output_num;
//
/// <summary>
/// 完成后回调
/// </summary>
public Action<DefectTask> finishEvent;
//==结果返回
public bool isSucceed;//转换是否成功
public string resultInfo = "";//成功或失败信息
public List<Mat> lstDefectBmp = new List<Mat>();
/// <summary>
/// fileIndex,x_mm,y_mm,w_mm,h_mm,目标,类别ID,置信度
/// </summary>
public DataTable excelTable = new DataTable();
public long[] stopwatch = new long[4];
}
}

File diff suppressed because it is too large Load Diff

View File

@ -1,10 +1,16 @@
using System;
using GeBoShi.SysCtrl;
using GeBoShi.UI;
using GeBoShi.UI.Load;
using GeBoShi.UI.SysSet;
using HZH_Controls.Forms;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
@ -15,6 +21,262 @@ namespace GeBoShi
public Main()
{
InitializeComponent();
UIStyle.SetUIStyle(this);
this.uiTitel1.FatherForm = this;
this.uiTitel1.UserMenuStrip = this.menuStrip1;
this.uiTitel1.ShowContrlBox(true, true, true);
this.uiTitel1.ShowMenu();
this.DoubleBuffered = true;//设置本窗体
SetStyle(ControlStyles.UserPaint, true);
SetStyle(ControlStyles.AllPaintingInWmPaint, true); // 禁止擦除背景.
SetStyle(ControlStyles.DoubleBuffer, true); // 双缓冲
}
#region
/// <summary>
/// 初始化
/// </summary>
/// <returns></returns>
private bool InitSystem()
{
//进入初始化,初始化失败则中断
InitFrm initFrm = new InitFrm();
initFrm.ShowDialog();
if (initFrm.DialogResult == DialogResult.OK)
{
//初始化成功
}
else
{
initFrm.Dispose();
return false;
}
initFrm.Dispose();
return true;
}
#endregion
#region
private void ResetUI(bool clearSN)
{
//保持产品名称和料号
//txtProductName.Text = txtProductCode.Text = txtProductSN.Text = "";
if (clearSN)
cbPdtSN.Text = "";
this.lstLog.Items.Clear();
this.tsbtnImpStop.Enabled = false;
this.tsbtnStart.Enabled = true;
this.tsbtnStop.Enabled = false;
this.cbPdtSN.Enabled = true;
this.cbProductCode.Enabled = true;
this.cbProductBatch.Enabled = true;
this.cbProductReelNum.Enabled = true;
this.cbProductNum.Enabled = true;
tslabelTime.Text = "实时测试:0.00s";
this.Refresh();
}
#endregion
#region
private void UserRightCheck()
{
this.tsmPdtMgr.Enabled = SysMgr.Instance.UserMgr.RightControl(MaiMuControl.SysStatusMgr.UserMgr.UserRightEnum.Product);
this.tsmSysDataFind.Visible = SysMgr.Instance.UserMgr.RightControl(MaiMuControl.SysStatusMgr.UserMgr.UserRightEnum.Statistics);
this.tsmUserList.Enabled = SysMgr.Instance.UserMgr.RightControl(MaiMuControl.SysStatusMgr.UserMgr.UserRightEnum.User);
this.tsmUserRight.Enabled = SysMgr.Instance.UserMgr.RightControl(MaiMuControl.SysStatusMgr.UserMgr.UserRightEnum.Role);
if (this.tsmUserList.Enabled == false && this.tsmUserRight.Enabled == false)
this.tsmSysUserMgr.Visible = false;
else
this.tsmSysUserMgr.Visible = true;
this.tsmDebug.Enabled = SysMgr.Instance.UserMgr.RightControl(MaiMuControl.SysStatusMgr.UserMgr.UserRightEnum.Debug);
this.tsmSysSet.Enabled = SysMgr.Instance.UserMgr.RightControl(MaiMuControl.SysStatusMgr.UserMgr.UserRightEnum.ParamsSetting);
if (this.tsmDebug.Enabled == false && this.tsmSysSet.Enabled == false)
this.stmSysSet.Visible = false;
else
this.stmSysSet.Visible = true;
}
#endregion
#region
/// <summary>
/// 系统是否在运行
/// </summary>
/// <returns></returns>
private bool SystemIsRun()
{
if (SysMgr.Instance.IsRuning)
{
FrmDialog.ShowDialog(this, "设备正在运行中!", "警告", false);
//MessageBox.Show("设备正在运行中!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return false;
}
return true;
}
#endregion
#region
private void Main_Load(object sender, EventArgs e)
{
//登入
if (SysMgr.Instance.LoginSystem())
{
//登入成功
if (InitSystem())
{
this.Cursor = Cursors.WaitCursor;
//this.WindowState = FormWindowState.Normal;
this.Top = 0;
this.Left = 0;
this.Width = SystemInformation.WorkingArea.Width;
this.Height = SystemInformation.WorkingArea.Height;
//this.WindowState = FormWindowState.Maximized;
//this.splitContainer1.SplitterDistance = this.Width / 3;
ResetUI(true);
this.Show();
this.tsslLoginInfo.Text = $"操作员:{SysMgr.Instance.UserMgr.LoginUser.Code}({SysMgr.Instance.UserMgr.LoginUser.Name})";
this.statusStrip1.LayoutStyle = System.Windows.Forms.ToolStripLayoutStyle.HorizontalStackWithOverflow;
this.tsslLoginTime.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right;
this.tsslLoginInfo.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right;
this.tsAxisState.Text = "";
//更新数据库格式
Service.InitDB.initDB(ConfMgr.Instance.DBConStr);
//权限判断
UserRightCheck();
//开启后台
//timer1.Enabled = true;
//backgroundWorkerDo = true;
//backgroundWorker1.RunWorkerAsync();
//s_BackWorker = true;
//backgroundWorker.RunWorkerAsync();
//开启云端连接
//SysMgr.Instance.InitCloudConnect();
//开启产品服务
//SysMgr.Instance.InitPdtService();
//开启处理事件反馈
//SysMgr.Instance.InitDefectEvent();
//加载产品料号
//SysMgr.Instance.LoadProductCodeList();
//加载产品选择
//LoadPdtList(SysMgr.Instance.ProductCodeList);
//LoadSNList(SysMgr.Instance.ProductSNList);
this.Cursor = Cursors.Default;
//运行前检测磁盘空间
SysMgr.CheckDisk(this);
}
else
{
Application.Exit();
}
}
else
{
Application.Exit();
}
}
private void Main_FormClosing(object sender, FormClosingEventArgs e)
{
//backgroundWorkerDo = false;
Thread.Sleep(300);
if (SystemIsRun())
{
DialogResult dr = DialogResult.Cancel;
if (SysMgr.Instance.IsInit)
{
dr = FrmDialog.ShowDialog(this, "确定要退出当前系统?", "警告", true);
}
else
dr = DialogResult.OK;
if (dr == DialogResult.Cancel)
{
e.Cancel = true;
}
else
{
Thread.Sleep(300);
if (SysMgr.Instance.IsInit)
SysMgr.Instance.Close();
//SysMgr.Instance.MainRuning -= main_running;
}
}
else
e.Cancel = true;
}
private void Main_SizeChanged(object sender, EventArgs e)
{
if (this.WindowState == FormWindowState.Maximized)
{
this.WindowState = FormWindowState.Normal;
this.Top = 0;
this.Left = 0;
this.Width = SystemInformation.WorkingArea.Width;
this.Height = SystemInformation.WorkingArea.Height;
}
}
#endregion
#region
#region 退
private void 退ToolStripMenuItem_Click(object sender, EventArgs e)
{
this.Close();
}
#endregion
#region
private void tsmUserRight_Click(object sender, EventArgs e)
{
SysMgr.Instance.UserPermissiomMgr();
}
private void tsmUserList_Click(object sender, EventArgs e)
{
SysMgr.Instance.UserListMgr();
}
#endregion
#region
private void MainFrm_Paint(object sender, PaintEventArgs e)
{
this.tsbtnReset.Visible = ConfMgr.Instance.SysConfigParams.ShowResetBtn;
}
private void tsmSysSet_Click(object sender, EventArgs e)
{
if (SystemIsRun())
{
SysMgr.Instance.StatusMgr.GotoSetParams();
SysMgr.Instance.SendStatus();
SysSetFrm frm = new SysSetFrm();
frm.ShowDialog();
MainFrm_Paint(null, null);
SysMgr.Instance.StatusMgr.GotoNormalStandby();
SysMgr.Instance.SendStatus();
}
}
#endregion
#endregion
}
}

View File

@ -117,4 +117,330 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="toolStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>241, 17</value>
</metadata>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="tsbtnImpStop.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAFISURBVFhH1VftEYIwDOWOQ4fgUEdxFDfpKIziGPjPUTAp
EWhJv1t7vrt3Ak2TZ5o20Pwdpuv59rqcBHEkimnoHlPf3sksL3ZBZyf79g2/I86h6fEICqxzESLIVThk
8KF7HhyHEoQEZwPXknUWSxThWx+Udt5RCn0zkSXtJoIICsMDjHBL8ZPzcaRwKqypp4qWe92TNIf1xS4F
DBr/PTokM29IEYwv4jELRsXA7AL0WnCoLZGBWdmWVQTsfcID63FbQgBwO6bhxrr9CgnYChFvtEGFvxBQ
dwlcxiUEKD5dDaiIAP00tDWhEgLIbAM8NNZBAQHHo9jVjNChL2GOsB7tXDNCwGDc+18Y+XaMkFmwKE+m
3oQ4uHZECuu9F2INhX60ZFuOmOBfUCZSCjP+w2SPVYhPRhabPIE5oJh1ry9dFInXIjrV9dA0H/ABIzl5
lqSJAAAAAElFTkSuQmCC
</value>
</data>
<data name="tsbtnStart.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAH3SURBVFhHvVfbbcMwDPQo3aFo8ttN7E06ij+LxkN0lI7S
8mhSpqwXpRg9gEgikdTxSKno1IP75/xyeywfb1/L9+u2/Ny25RefMKzR7/W+ze/ifg30UBzmNSZHMYiV
NGPIHSyVr7wHNR7zwr93S33JR9L5AeYi6ZEQFTnkzSkGIm41OIEJBpERKc9EXCTgIBLvBEbkO6GLhJX9
ymmWOQkkZDlG1LdC5SA10g4gyk8DK8sHdBMqyFICBLIPVSRLXVCFk1ZoYlitQuuH771qwN/Gy/JRfbSY
AfaNb9/1EmiOMAt2QFrJNPhsPS3BHGkcDzp9CUnFpwjrmzF3S2yMvXpV+QH4iG/WvC3RM3ngESQJniag
1mqJXkmegxBYuPsW5OciwFbJ9y8Equ+JEIAdLbiQQOsZJx/OwwpEA9GABpYMCT1/Q8iX8/CZUT8a0MCc
eQpQBNUpX/owVIAA9bXmqVoRPXyIK77PGWDf+Lolt7A5ZOlYbCW0wT2SK4rFelXAHvs4bkwOOvCw5MW0
vSkdAJ9eyRX27mfzg5FlOFplDiCteautAwlzRS4hYSv3XPWEBBgn/XLgrGjXjUEwBYWJF0Ku//s41vab
rCp7CblEMCUD48GFz+4XCEdGe5JyDCUiNWOSzx58BojINK+QVOcEnzDuNx3ad02n6Q9WpF/OirtI5AAA
AABJRU5ErkJggg==
</value>
</data>
<data name="tsbtnStop.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAFoSURBVFhH3VfbDcIwDIyEgCEQj1EYhU0ySkZhjPaPUcDn
mAKNG5w2kRCWToTGta9n10pdiXXH7ak/bHy/X1/73epG6zv/Arh22IRutzqLex0bkiKZFZGcx70SZp4h
yEfgUggRCWc3fuooqR64FETErIZIrgdaAgsJTh5l04MsxTcSVWWfApGQdJ9Gm8sargxB0r5McWqHcSno
YkicdPhuv75k+gQqWpV8qaBsahhuoHWSBMRk29ZLz17gJ9IcUtQlQOCxTQur/NUJEHyJc30C5OcyDTVG
fQLoA3VDxx8SIPxACexsGzWhEmwCLUoQHIaBsqGhOgEeROYDCOQSo//a8BqOXta+EvfJgBrw5HrJKClU
oHVxSdsdwzJITkbCXnVugPSkzCrYu3c+3nopMSZhH0zlwOD5Zs1IoEmtn23VSeRknzImYX+lcij/NHu3
WUSiessSjw1EZGwHflueJcIvEN8gb64zm3MPKind9AUiYpEAAAAASUVORK5CYII=
</value>
</data>
<data name="tsbtnWarning.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAZHSURBVFhH1Zd5TFRXFIdRZh4yLANapTbiUiurtsjqwAAG
FwRkEVSQQlWEIKigzkCriSiKAkWURVExosEF12rFpbU2NdJamyoDiBQQUbHQAuKCWtf29Jw3b3DAN4Oa
/tOTfMnlvt8958495y7o/K9siYdwjEzKpMilTBlySW7DvGShNvbRN9Jw8v/OlroxiUulurWFCwdD5Vlv
uN+yAh62r4N/XpSyUJv66BtpSEtjuOHvbjKpMHKplLlwcrMtPLqTCX8/3QUvH2fCi84keH5vPjzrmM1C
beqjb6QhbWmeNU6EuUA+OHdvZzI3YVpO5ADouCWDFw/Xw/M7CfDkj3B40jJTO6ghLY3puCmDrFATkLsJ
Uzm3b2ZyqTBnd/JQeNy2Bp62yeHxrVnw6Mb0t4LGPG1Lgketq4F8kU/OvXaj2RbLzeFJ6yr4qykOOutC
oLN22ruBY8kH+SpKHNL7SlC+soLFcK9hEXQ2RMHdikAk4DVSJhjCtmlGXWwJMoIMHzGvlnx0NkSzPtMD
jWkS4Vy4142Kpv4bX3hQOw/af/GH9ot+vOQHGMHJOSZdlH5mAjvC+vNqWdDXg9oYuHbGF1PBlHHhuhtt
m6KIQdBxORJaf/SHP89N0Ui2nyEciRB3cThcDAXTTXm1KtrQ593KKCicNRBkbnoLubBKmzFDRzfJnYHy
HEdoOesPzacnaSV9iiHsCxN3sSdUDBsCTXi16rSeD4HLG+xBLtG9yoVWmsxdzys3uD/UbpFAQ5E7NB31
0krqJCMomm7cxfYQY8jwN+XVqtO4xxNjuEI2TlbuKpBw4dniSz8UMwxq8lygKsMBbpR4aiU9cABsClQW
H5GHNZETOpBXq86VLx3ZGAdjzDENwjQuPO17puzcMiuo3uAE5Ss+YVfi2k6pRjaGvQ9Zvhh0qpIMHwMo
mDOEV6uibpsr67s62xm+T7Kkc+EMFx5XwJlpK8+0h8q19qxIscoOagvGQd1WCS9b5ppD6kQDyPQxZFmF
7aLYEbxaFvxBFavHsr6r1jnAr2vt8JgW3OLC6+jES5lnV3NcQLHSjhURFaljoQb7anJfZ3vsh7BsvAjW
TDZkSfYUQXHCKF4tUbFGGVz146pwpRPcmPtceOUEKDeKlFcTYMU4oSuZDlCd5diN4gQLWCwV4YFkwJLo
JoL9ckxhDx2NpYDdfNIEcnpMgFJQlevclYKeKFLtoDJNmSLioMwa4l1EuAoGLHHYPv65bdd30tIK8vli
Y2Q7dE8BFeFPa8dA9XplEWpCkaJclRPJNhDtpA9JHiKWKKd+cHb5aPYbafjGqqjOdoLzK217FCFuw2OL
hkPNJhfeQT35YfkYCLDRg4ix/VgCrPXg514Cq6AYRxcO674Nk6QCz7xgU6jf4aZx6dShir5xAPe2GuoF
rAkaV18kZU/NZHeBMxdeafSMqixwgt82j+MdrM7pRGtY7j0IVvqasVD7+AJLXq06tQUSUOQ74o3IVHFh
XxldRjsjzOB6iQdbRHwOVBzGYOF2/SBunD7Lp9jeGzuKV6uCfF7f5wGFYe9h/gVxXNjuRtexIs+ePbm0
LelXiVYw10EfluBWJKIc9aFkgQWvliBf13ZJoTzXTvN1TEYPErrpGg954OmFqdBQWEcSrCBIrQin2erB
3ngNE0AfdYUSaDzsAWmTRdofJGT0bNo6sz/cPj0Rz2/MGc9KVKXjhdWjCOmi6amjQ6duuyv8/u1EyA9+
i8cpPSALQ3ESpyZAQ7G015rgg8Y07Mar/YQXbA4xpX3/Zo9SldFs0/GiaSyRQMsZb/ZSUV0o2iAN3Xwt
33lDQ4kLkA/6j4lz26v1QXQRfUQc7ShYsFjCXDowzwyaT3ni284Pmr72gnpcVjrRKBUEtamv6bgXq2k+
NR72zzWDJRLmYpyzcB760kP6IuRfq5HIEBmK0EERjMROGiU4FussbMsPEkNZyki4eQjzWuoB9xT+LNSm
Pvq20d8I7wlhi5+lYDeO9UPskMEI/Sjyr9VIIEI+QByQIGQ+8gWSOtykzw4fi74XIu0FzbMdhe3xrswz
IsZR2DbbXnB7qmXf88PEffJRm4xEI77Ix8ggRLUKWo2WiEQkNkZooDkyAvkIsUCsEBtktBr0N/XT95EI
6YcgAxEjhEF4guvo/AsMq/UIa/uj/AAAAABJRU5ErkJggg==
</value>
</data>
<data name="tsbtnReset.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGGSURBVFhH7VftcYMwDGWUbkDZoKP0Lsl1jI7SUTIKySSp
nlCoLGwsgZP+aN/du4At68uyTLp/7MH40b+A8vp4wNjl+Pp5PQ1n4m3mYRiZNI55EW8HGF4YXSM5czkN
X7nsXI/9uzz6IBHnDdUIR1RG4BSNn+W1DggnCkUpxqF4PPRvnB2KChQDqTzRbJvPAbUgUSTTRXCdFBwR
1h1YpJ2iRrQy7QJnZsqWNg6uOyAF97OAlMhUGDCW6Jq47gAE9IJo5HdYPYpVB2Zh7KUMhwAjWo9h2QGu
ZiWcO8ceYF2JIpKHrV4Zfh7I6Jy6renfBX1sPGe+OZIM/LYDeJbh5yEpwh0NaDPQdFQGNjehHO4X0upR
xKR2oNVJgGG3TtsLwh8QBjarVQdsFvgmrHWwAliXvhG9dWVbMjsRvY5N5GBIx+KbgOjpDYg6uzZaTyVF
yAaUYQ4RQQ6/eM/KEzEuauMoKfUyunVZcDGlXbJKzhCtExVtoLZl6cxU7Y/5Y1IC73/rKP8Yuu4b4r2U
wFZ1ZhkAAAAASUVORK5CYII=
</value>
</data>
<data name="tsbGoHome.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAcLSURBVFhH1ZZ5UNVVFMdfOdooy3u/9x4osiiKpChGrrii
LMqiiCixCOKCIhBqpmJiKogj5KgoDIop5iBkOi65kmZTbriAIqioyZhgmJATmSOR1ul7fvwevt8DAZ3+
6cx85v3eveeec++55557Ff8r2aUyd8xRaZfnmmrO5AraghWC9gXD39zGfawjqf93AsPzclXaW2ds7ahy
YgjVbtxGdVm76Z+bt0X4m9u4j3VYl8dIw99cvlRpwnKV2vM3Bg6huuyv6e+zF+nF7sP0fEMm/bUimeoW
LhPhb27jPtZh3ZJ+g4jHsg3J3OtJrqBJOmndlZ4mb6Ln+/KoLmUjPZsfR89iFjQPdOpS0uj5gTx6umYj
He9sTbCVIJltnWBA6gV7B/pzx16qXZ9JT2MX0x+R814LHlObupVqt39FbIttSuabF57tefveVIt9fZqQ
QjWzY6kmIubNmD0XNj4TbZ3t0bPlSPB+HUXInqxOpd8/WUWPp8+hx9MiZVSFzaAydy+67DSA9nW3pyM9
HKgQ39xWHT6rQa8yYArtRD/beBKfJNo8ZGFF8BEiuWssnDQVIdOpZtkqqoKxR2EzZZT5+NMWS2vapDaj
rRpz+hzwb4bGjFLRlmreiUpGuNLDkKmUZdON4k3V4ji2VbNsNT2AbT6ukju58LE5gRlXL1xKv2BAZXC4
jPwBg2m1WktpcLQBv4mCmrKhn43QZiJZkwWtOLF1+N3SsTNl4DtBqW4YzzYfx62gPNselKNSfyi5rZc9
CkUbFBMqdh1DDxC+coRPn/whLpSg0tB6GF1j1pEKx/nTrwviqSp2EVhI1fPi6G54JO2x70XpiEamFJlP
VWqZncqIWCoa5cHH84bkul5ylRrXwza2dH3seLrl40f3JgY2cMd3Eq0wM6cUTDDJrBPdmzGHKkJnyHSY
Uuh90c0O0TETo8TEKQWZzp3xk0Qfhyy7UI4gDJHci3u/5jsHRyr28KIrLm70I4zpON5/MMXD0DKVQKcQ
oTK/D2T9TP4od5qv0dIS6K1EpBIlok2UMr2rWP01+DjVy5FPRJLkHhNAYuSj2hW5jqWLQ0fS9TE+dMt7
gki6nT0txV4uQUjvTgpuaNfnwABn2uHoRLve6y9jR99+DTo3xo4TbRdhEfnQ36XSnpDcKxTZgrqq0MWd
Cka6iUqXh4/CJLwxyIeWI+s/xsqSbbuL/5vijl8AlWGP9Sn2nSz+6nQujxgt2i6Ej0J85xhr70vuFYp0
QVtX7O5Jl4a5iEq6SVxDRBZZWVOosQlt6tWHit08W0UGkjEYYz7q2En8XyA5Z9gHR2GnoK2R3Osm4C2b
gE65FCs55+lLt3396epoj1aR2MWWYkxUFIm8uISFGNoscvWUT4C34JrBTHUkIvQrYTABsGFmuU1XykBE
Cke6NkkkTkAEEnBuZ6tG9rifj6JsCzgJC4a6iLM3HBBgrKRpxqY0XSLMyIQmw/jegc7iNunDq8txfJ+m
QCcMW7DBoW8je+zjsvNweRLyMTyDLC7x8G40YIqpiubAYRSIBNFaczqLaPFxNdT9fvAwmokqyRMNgu65
JnTYxw99nOTHEGXY5SjK6U0cF16J/gCeADvmCcwGCy0s6RhWr6/D5GLl7DwczoMRgc04hob7zyeBfRyy
QiFSqwdJ7uuFn1HXcaMZRiEEE+AVRaCshsKwzsEsOItChYwGQWjjsHNfoJExrcIpuOZWX1P04fpSgpOF
LS+W3L4UvoxOdn9XLL36yRiIGjBda0ZXUEiy8MwKUapEZ1Oxx7rc4F+xTdDQfuQS1xB9x0wBbkm2ndfV
DpeRJkpyKxe+jq+PHkOlCJPuSEYgk7/FXnI4uS7cQF9Wv8GUgFswFvd7FG6+eDxEt2FyRZ7j6QrKsqFz
tsXVsMQFF9GrrmMWfpAc7GhJZRMCUL3qS2eply8qpKvMGJdsDmep18syy5PTTdoQ7meb+80tmn+QsPCz
6Rs8Ju5PDhZL6KuMtgYey87LA0LoGJK8xSeZTqCYeqJLNyrnywfXc1MFqiV4z29jbLl/EB23tm39o1Qn
PFvejvt4hlUEhonRMDyiTcFHjVf9AGN+8vIjtoEEXy6ZbVHeAm1Ae6DcaKqK2SkIBaeRcJUTg+hR6Ezx
YXETyVaEZC1EcjL8zW33sFp+A1ZC57RdT9qh0l7YrFTPhK13wNuA7TcrrGQMbAAXCn8QOauD0UEYqjpm
aUPF/Z2pwmciPcTD5Ldps0X4m9u474iFNaUplZXR7Y2zMdYHOAELwIti+80KK3QAnUF/4AfmgCUgwalN
u+1RRkbn15qa/pyqFKrTVZo6Zq1SqFpnYlIR3cHkdO+2bdOguxhEAG/QF5gDXRSaFQ4RK7GyKeCB1sAW
2AF70BM4gD568H9u5/7ugPWtgBkwAe1AE84Vin8BLf0+DUMI9pQAAAAASUVORK5CYII=
</value>
</data>
<metadata name="menuStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>353, 17</value>
</metadata>
<data name="tsmPdtMgr.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAAW1JREFUWEft
ldFxgzAMhhkhJQtklI7STTJF4TGjdIzexbnrKMSypEgIYxsHv/T47ziMZev/LAzuDtXoNP5e+tFd+8FN
/XD/68fH7TS6Twq3Exo/bmLsIV7P/moFEjOmUJBUxMf2BMkZW+0GIonKjK0WIP4OfRROC4hrja3mIIUQ
5+/7l5SvkDohXcmifELNVagDkRxu+hjcz+YctSBS8grj2PsvBUkZ6/nJr+I1cGa4DhL2S+hLGWMMxut8
UbEBtJeGFoQSh/t8ZVhJjGsonScqDcBCQ/kZwaopFGLUDIJnMOSxttxVAKxl8rl5ypj1FgArVAQS+Yu6
yDyT3GsXABBCuIlXCm39atbUBMDCpHQAHABZAD6KISl1RVUPkPlaMJmnzJBuBYAY54Xx1B0XDNB/tRhx
KYDNlTXXWk4WgxyAnVvyk1oVTLYgawChrQ6u5IbbKtyg8B7xiLUAzYy1cIXuigByGEFfU+N/rK57Armc
yzE7MZQkAAAAAElFTkSuQmCC
</value>
</data>
<data name="退出ToolStripMenuItem.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAAZdJREFUWEft
ldFxAjEMRK+UlEIplMEfpVBKSkkpZJ9ZzZE5Y8t3Jl/szA4jWdbKOmEvHxzB/XK5Qpv/D4nfoM35UPKv
1gl7BbCXHDbHwEbxG9q1gdZ6BbD/RxwrQhtO4l1stpf1ZEy+CAJFxLvDpZjUDJBLzBWhoGbbn6G4VAFA
cRTQPpQCzgTa7AJxaLMJxdFZijjbtYUWOX36f63YdAGA3GjY/AstlG9vMwXEoc0uQoNfu1bIWQbFZgqK
HyoAKL7e5ZcLDSAObaaARnWPnBTwekAqIFE1WQNooGVzhZx8m5PNFBCHNlNAAy2bK+QcvjIVTztHPxsF
bGcNJ4s23wZp1O8aOYdnYA+kUb8LvDD0PfcAcbRsrpAzXsCxp3MA5G5qaKH/YBwAudGwuUUEiNO7QE6R
07fnzAVM74Jy8u37V72C4tmcVgS5UuIBBZf/6owiLD58y7Kx3FhOsGsmtK+0Xdx3wSHsJGV4sL3UhOLi
1Ow9PtBKEt2IpAjgC1JceeXEiJl/rZNURBwBCnouipcx3aUPHliWX+WksNj7r3wlAAAAAElFTkSuQmCC
</value>
</data>
<data name="本地数据库查询ToolStripMenuItem.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAAKBJREFUWEdj
GAWjAB10P/P63/3Mcz+US38w6gBCDmh/7qHQ/dSrHoZBfKgUdQAhB3Q/93GAqIFiIB8qRR0w6gBqOgBk
DkItbjNRALJicIIDWQjFYHl6OgCc0uEGeP0Hiw1WByBnTbgYXR2ALAbUBxEbdcCoA0YdMOqAoe6AAQEw
B4B9SgNMsAmHCDIaYWj04ATgeKclBoYC1KpRMBgAAwMAqk+AdECToL8AAAAASUVORK5CYII=
</value>
</data>
<data name="tsmUserRight.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAAYxJREFUWEft
l9FtwzAMRD1Gmq+OkjH8mU06SkbxKJ4g7Qgpn8EL5EqyLFUuWqAHHMCYR+pCy3Iy/CPEfTy9vY8vj86c
6etL5HHQ4k/ex/PNl0rDRDPCj/F08UtdYP1e3cTsl9Jw0cM/dkXYmy9o8RR90T0GrOhKsZFpQRpdPZ0F
fSGxbnW0L0JRCpZj4UXzlaVNJh1xkwEVbXHLhDTETQaUK3ByeQRpiKsNBLu4SLRetoLyxNUGVLCHUVOH
8sQNBs435UrMHTbKE1cb8EdvtVCOpk0eYsoTVxsAe6YQNQwgDXGTAd+Iy1Gd4eYxKx1xkwHgtyJpIjd6
QTriZgOAhUwTmphLiwPpib81ARWH5BomjMkzAEhLXGWApjWPoZGXU2REeeIqA/Z5a+PlGB3JyhHXTuDi
BeErOFxM5PrEtKjx8iekI64y0At/xsAyXhth8RdODbgluwwocRS1YNYAj89BJlb/C7IGfgo6V3YZ0FR6
UpNJPa4RKk/BGmZ/P67ABIzLO6AX6entfwOG4RPOwTWlOwT6PQAAAABJRU5ErkJggg==
</value>
</data>
<data name="tsmUserList.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAAQFJREFUWEft
lcENwjAMRTtGjozCKGzCKAxAK0boKJ6gZASwJYdD6gQndiSQ+qV3afNtJ3Xc6dDfKT7CaVvC9TmHFXkh
sM3hRs/oHS8bo3gPZ05aAqgQXu4r3rWUdId7EYqd5wB52G4XBkzfuwVgu11CcBVstyku4SIF1+DyGUwF
oJfD9KujAT/4FIDDRQquwW0wYbDmW0DTke129ZyC6xwgtTSje/IkTUMO+RdwYsiTVQDPG9AzhhPQfRMs
1y+jvQjH5Im2ItBgOfYSur+jZfZ/Q9WYktGR+imM3H2iego0vyWTJ9VBhQtGNF/Oyun2wpct066Xch8I
i4fA6Q79gqbpDVvluAR1f2kTAAAAAElFTkSuQmCC
</value>
</data>
<data name="tsmSysSet.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAAXJJREFUWEft
VsFtwzAM9Cix2wEKxP13lG7SUfwskAzhUTpKStJHiZIlRWrs9lEfcEAsieTpREjpDlhcx+HjMg633Xge
vrgGyoXYvbhhUgSrkwVQeR2f37bk5fXp3dZAWQ+nkBZiaHOICNTBkIdOsFoMbQ5x4hBwCDgE/KWAz5fT
SeqULqI9BTBYBH6G+C0BWagAsmda3oI8a65rsbvlWncCKpm1EtCHp9pRl1wC+7lEdgFhDvraqTAVoC6I
c6nmU6iAn/bAIg4b0OL6rXOl/HcX3IGcuS2cIvUXlq/hF/YzhprhBfQzC2KK9chd3Jy1SRKVaERy0iCW
GDeom0d8qofqLDTU3dh/OUpJaEB5p2AN1cFUiMUy2hEnzRFJVIAIX82FO/QbIydoXexQE2IBFoGDuNDs
WCqmGblkttmyzFmfgx6JpSaLBZhGm+xxLE5QHJyI47IIkiQYJ1Kx+FzdhDzfdPaiOirqWGGlnv9DDfcP
0HXfsvKIP/AcQ5QAAAAASUVORK5CYII=
</value>
</data>
<data name="tsmDebug.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAAXdJREFUWEft
VtsRwjAM6xg8fhiFUdiEURiFUXLwTxkB7KAGp3XSxGl/OHSn4xpkWW0ebfeHFU+3OTzv+5On2xwxvD64
cX/fXvvb7iX5uO0u/B9k64GauXFzQQfZOqC7PCtNI7IG8uVBDXJ3/yFND+Q2YH6dNp+TZjon08BevEaY
GEpDLLBJCL4uIeQefD14FgXwBd9HrT6JUsDr82RqpkamXoQ1zQdE6RsJy3poZhbCrh6amYWwq4dmZiHs
6qGZWQi7efDCk9TMJElzLNRFvmgXg4Tzx+yIKLU8qelLCy8aDiGpFQeitCRA5MvfECjNA8VJQlasq4Zm
JgnZigFmjmPI8gEsx/AAfnuppiBk2QBFb8AU5rYYZNkA5NH2wUomyd0ASS5A2zfiImvAGkI09/uWf3Ed
CKkWYFxTHsLPu2yOOeRxHFahkS8gyDG56rGGQgi+xl9pyOYYihCCiEas5bEhrEQUQtQkga3XtnhG8CGo
edOW/FF03RtcMcE7miFSggAAAABJRU5ErkJggg==
</value>
</data>
<data name="tsmReadLog.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAABGdBTUEAALGPC/xhBQAAA0FJREFUeF7t
Wu1t3DAMvZ8F7oboKB2lm2SUjtJBmkN+Fsh1h5aPRxmOTH1YIiO70AMeEJwpmnykKCWXy8TExEQNHr9u
397v1x+P++3vEfnnfn17vN5+0s8vErId4HT9sqMTYvx++/JVwu8DOTxV8oEQQVJoB9pec34Wvr9ev0sq
bSAnp6z+QpoJkkobjjz0ati9DWSqqs7Pwq5hOAWYAhQEwHOcFKNYMaTdBDA5Zw1QGtR+HUDPxGwocNar
8QldOwBtKKZDgOSyRSL6zgAiCwG7EVTiiekuwNE5BZgCTAH8BOAB+LyMjGFFgVwFELOhGHYRwovFbCiG
XoTEbCjGXYWJEEEC0PdoLXfeKJEU1skMUmMLdBWgm+S/NcAgwsZnxEMKwJUz+j2ChcjEeTwByKe4z4IT
I5FqEmDbRDccS4BM8iGJ1L4O8yb3p26y24jgLgAHDLsCU8dmrnop5rYQPf/gy1eAzn2M9arfem6+B2RB
V3G7CdB7ESpdYGqpxSFdxc/dBEAbitlu1FQ+7PliFz656YQgsOsW4ACRTIbiasG6OjE5aWXIYQ3Ie19Z
B8brwntcBaihuFrAoil2NVtKklIHptaRiH+oAHFSoSoluxJojSpC3AXowLECRAFp1W+ZJSykElvsC3ZD
BYhfru1hbc/XgGdM5IupzJ1mdAlAa8XNAs2utULcBYq/zxag+h+SUgHL4yYk4rP7J6msAEqFc1BbdqeP
GIkT5ZgCaB3QMgDX0GYK8ZMEeHLsFlD8tQ5VFRUCJKlVV7NrHVpIVPPXOlRV9AjAjJKzugcAqdjksQ26
BYi2iDoIiWY3wZ1+iugVQN0GaZ9V8wR20bqFpu0PGHTAZhukugDkqZ6YCfg8MfWZ5tUHLATQAqPPk1UE
kSjIM6Myhpx4zTDpAGJ8NPGRaOR7TXMRrIJEYOJygdwLsp3QQlMRLKuU2qP0rOorrjXFPvsndBMRyJl1
hdRJj27gi01B8JC4LON1riJIm26c9xCBiXsV/E4KXG56KAB/eYrPxeQD3EUgRy77NJVQC3IioKvErA1c
EScRMBeshJA4t+/qFSAAL9hzLtcyCGExtFQRDPyeCqFQLKzlr8YTExP/IS6Xf0foDWqW/njVAAAAAElF
TkSuQmCC
</value>
</data>
<data name="tsmHelpInfo.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAAfJJREFUWEft
VjtOA0EMTY+QECfgKByFU1AlkJ5D5CKgFLChpoQmBQUou1KOEPxsz8zO7nw3ocuTXKzHYz8/e6LMzqjB
8v3nZt60j4tNu2Zr2sOi6bZs9I2z+Wt7q+GnA5JKIRQssW57EiLo2HWqiaFAs7szBRDDceQjWw2J4IyT
1UKS+oX1KAncE5JHkBDJNQEpoO4qqCqqSMVI/M53K3V7sF3yeLAbu1WoSxunJEIxI9iZRzqXWRuCfQuP
iRvK5LToS68uD/1zFMP3sMuQ1EzC3EuNwjKlLtXlwcw01KklkVWu26prDAkIdw/IvNtDaJauy3CBrAqO
YXjxAFYg0qEdT2LORuGQgpJcCATlzyE3PiBJMiVvDq54Yr6EfyHQL567m9yTKQQgtyTMPK8eTLx+OphO
ShMBtXuTHsEkApFuInCKBV6a+zWLP8MhJhCIK5ZckAg4YUjOCLJ75jZ62m9BCsjJuVOE7ZJUqFAKyVuw
Y1aFjLTLzfc1xX2RfS7X+yt1B1GakyG7ILPCjNU9AiV7kBhYN1f3CLZ4japuIeMX79/aSzp/IXt++vi9
ULcF57DF6543w1ei/E8p4J603q0tbjDsQgjhLcvfcpwbw7dfmKxk5iVAcp9Izo7oOgUZC71nkGFCUESN
vqEAYjT8jALMZn/kcXbr5nSkbgAAAABJRU5ErkJggg==
</value>
</data>
<data name="tsmInfoUS.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAAipJREFUWEfF
VztSw0AMTcc1UlBT2qGCE3AGSs5Ak4OkgFPQ5iDMJDeIXRAMVdDbPI3lz3q1hgxvRon9pNXTaj+ZLOag
qVZL2r2xJd2XAQSOVbH+rMrThO2PVfmCgjjs90AyJO4L0bbGrD/EyNhHpskHZixJbGKZXbEGz5AB4GOX
bMEoJG95KK5JgjBdLowU4i+C4lr9lvQs9Cci7+m9YQYkxY/V6gHG11GYbqQ7AVGveFOXb4w94Zn0KNiJ
6dxojyYkFcXp/fpKY9XA0T0KFhG6Cy3SLcQRKhSn6+hI7A7xtB3pSSA34/ekzog6JtBUt3eytq8wPJOe
BLugE227gNsLZO5xmwPdkNAk1e58VEjqYmAXut0mkdx8fTR18QzjqxsQh16YMNaCBWRdOtLKDcdh6Tak
XYAWxoV9IB9hA3bWxAEVVyPtgsR3CpjVAY6ZVYBuekx+fFM4oMJqpF2AFsZA+/8LIDG8HBJAvDXSSUBj
MKa9HPwXkSYZJEtg9CIyVbmXQYXVSCcBDcR3uo21EDL3xyi7AORm/PDE2S6gINJRSNyB8bAD6Sg4yRAP
LdJdiDN0QSy5FF/16kkT4pl0FCZ3/L5hlWGNPDfj90d5A+NrFEY8vcdsqzDAsxwxMJeK+4+57QS+c46n
Qo+b5nCLK1CE3tmaBEmnEp3HBGEtHpb1GzOAJMXRsQlDMTS0V836Q0z2rGPAzJCMHekXYy3ZpT8BC+r8
PacrE4vFDyempcfTTYR5AAAAAElFTkSuQmCC
</value>
</data>
<data name="skinTabImage.PageArrowDown" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABUAAAAiCAYAAACwaJKDAAAABGdBTUEAALGPC/xhBQAAABl0RVh0U29m
dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAD9SURBVEhL1dO7CoJQGMDxtu73+1CBzY31Ck0NvkOb
gzi6+QaCEDgLTqKCEPQIIUGbb+Gui+YXBIc4WcP3DQ0/OJfv/LdTyfO8iu2/ojVsZNE6NrJoAxtZtIkN
oi1sZNE2NrJoBxtEu9gg2vvE9/2JLMtrURQ3LEmSBMdxprw3oDQKwTiOT8X6zirOTAjDDA9E+58EQTBV
FGWbJMm52D+DaZpeVFXdeZ43Y2dZEB2UMQxjaVnWPsuya+Hmuu5B1/UVb/blaxRomiaEYXiMokiBNW+G
BdHhL2zbXpimueTdvYPoCBtZdIwNohNsZFH4bqjIovDdUJFF59j+JZrPH4oDa+C9e8hUAAAAAElFTkSu
QmCC
</value>
</data>
<data name="skinTabImage.PageArrowHover" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABUAAAAiCAYAAACwaJKDAAAABGdBTUEAALGPC/xhBQAAABl0RVh0U29m
dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAEwSURBVEhLtdNNS4RAAMbxvkBtLxu9UFT0skUv1rZ7
7h77HfZkH0QPeu0mePQgnsSrhCCCN+8e99DVayKhNk+wUDFWh2eFH8yMzh9kmKW2bZfZEF1hW1i0x4bo
Khuia2yIrrMhusGGaJ8N0U02RLfYEN1mQ3SHDdFdNkT32BDd7xLH8amu6/eqqj58JdZGURSdyfYAogdd
TNMcFUXxIsbfHrEWGYYxFkPpPkQPu6RpOtA07bEsy5mYfz5VVb2K4CRJknMxle5D9Og3rusqnudN67p+
a5rmPQiCJ8dxbmXfziF6/BfbtsdZlml5nj9bloXfln43h+jJf4RhqPi+fyd79xOiOEUqRAdsiOIUqRC9
YEP0kg3RKzZEr9kQvWFDVGFDFPeYClFcPSpEh2wLiLbDDwVKnf7UO7t5AAAAAElFTkSuQmCC
</value>
</data>
<data name="skinTabImage.PageCloseHover" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAYAAABWdVznAAAABGdBTUEAALGPC/xhBQAAAH9JREFUKFNj
+P//P0kYmcMKxXjFYIwzaBiXGFgDyIQzHB2n/4MwiA3DaGJgm1A0cHad+88//T6Q+/8MiAbxsWmAWw9S
JLH653+p9f/BNEwzFMOdhKIJpBiGYWJADFeHophYG0j2A1wDkiQYo4lhehoJ4xJD8TTIBLApuMX+MwAA
JO7ByqoT8QIAAAAASUVORK5CYII=
</value>
</data>
<data name="skinTabImage.PageCloseNormal" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAYAAABWdVznAAAABGdBTUEAALGPC/xhBQAAAItJREFUKFOd
kbENgDAMBCNRIFExAAUtbYoMQc8A7EHBFKxrfJGxUERjkJ7E9r/fSZKIhMCvUwyK0cC+/8jBqwKCSZEV
RbEoZluJyVOHVwV0yOtxCdBvV2ysrxwieC4oT9EIZxPj5AKssPeODRlH6j4SB2Rmxmg7n5anDu+fQ/gM
bEK3hFXoHQIvLekGBLunGoMvIJEAAAAASUVORK5CYII=
</value>
</data>
<data name="skinTabImage.PageDown" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAADsAAAAiCAYAAADh/KHgAAAABGdBTUEAALGPC/xhBQAAAOZJREFUaEPl
2KsKQlEURdHrG996BYNgMBgMFoPBYrAYDBaDwWAwGARBEAT//bpXWHC+YXpghhVHPDuLVyqKokFPTmOb
9FJsm16K7dJLsQN6KXZEL8WO6RlbjjGhJ6exU3opdkYvxc7pGVuJsaAnp7FLesZWY6zoyWnsmp6xtRgb
enIKW4+xpSensPrc7ujJaeyenrH6yR/oySlsK8aRnpzC6mxxoiensJ0YZ3pyCqsbzYWenML2YlzpySls
P8aNnpzG3ukZq1Pjg56cwg5jPOnJaeyLnrF5jDc9OY390EuxX3p/hs3yH+t9kV6QtrMcAAAAAElFTkSu
QmCC
</value>
</data>
<data name="skinTabImage.PageHover" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAADsAAAAiCAYAAADh/KHgAAAABGdBTUEAALGPC/xhBQAAABl0RVh0U29m
dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAEISURBVGhD3dirTkNRFEXRy7NAICGkaaAhvIpC4ZB1
lTgsEolF1lZWIrFIHBKHw2FQqIoKfuGyptjJ/YZ5kimWHHKfJm+lbdtdezgLu2+vi+3bK+xqxpE9nIU9
sdfFXtrrYq/sFXYt49oezsLe2CvsesbYHs7CTuwVdiPj1h5OsJsZd/Zwgu1l3NvDCXYr48EeTrDbGY/2
cILdyXiyhxMsx+3UHk6wexkzezjBcsnP7eEEe5DxbA8nWL4tXuzhBDvIeLWHE+xhxps9nGCHGe/2cII9
zviwh7Own/YKy1fjlz2cYE8zvu3hBHuW8WMPJ9jzjF97OMFeZCzs4Szs0l5hRxl/9pqmGf0Dp89NtaTt
b1AAAAAASUVORK5CYII=
</value>
</data>
<metadata name="Column1.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="Column2.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="statusStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>474, 17</value>
</metadata>
<metadata name="bindingSource1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>597, 17</value>
</metadata>
</root>

View File

@ -3,47 +3,42 @@
// 此代码由工具生成。
// 运行时版本:4.0.30319.42000
//
// 对此文件的更改可能导致不正确的行为,如果
// 重新生成代码,则所做更改将丢失。
// 对此文件的更改可能导致不正确的行为,并且如果
// 重新生成代码,这些更改将会丢失。
// </auto-generated>
//------------------------------------------------------------------------------
namespace GeBoShi.Properties
{
namespace GeBoShi.Properties {
using System;
/// <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.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
internal class Resources
{
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()
{
internal Resources() {
}
/// <summary>
/// 返回此类使用的缓存 ResourceManager 实例。
/// 返回此类使用的缓存 ResourceManager 实例。
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Resources.ResourceManager ResourceManager
{
get
{
if ((resourceMan == null))
{
internal static global::System.Resources.ResourceManager ResourceManager {
get {
if (object.ReferenceEquals(resourceMan, null)) {
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("GeBoShi.Properties.Resources", typeof(Resources).Assembly);
resourceMan = temp;
}
@ -56,16 +51,23 @@ namespace GeBoShi.Properties
/// 使用此强类型资源类的所有资源查找执行重写。
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Globalization.CultureInfo Culture
{
get
{
internal static global::System.Globalization.CultureInfo Culture {
get {
return resourceCulture;
}
set
{
set {
resourceCulture = value;
}
}
/// <summary>
/// 查找类似于 (图标) 的 System.Drawing.Icon 类型的本地化资源。
/// </summary>
internal static System.Drawing.Icon Ge {
get {
object obj = ResourceManager.GetObject("Ge", resourceCulture);
return ((System.Drawing.Icon)(obj));
}
}
}
}

View File

@ -46,7 +46,7 @@
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Serialization.Formatters.Binary.BinaryFormatter
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
@ -60,6 +60,7 @@
: 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">
@ -68,9 +69,10 @@
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" />
<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">
@ -85,9 +87,10 @@
<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="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">
@ -109,9 +112,13 @@
<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>
<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=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="Ge" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Ge.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
</root>

View File

@ -0,0 +1,774 @@
using MaiMuControl.SysStatusMgr.UserMgr;
using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using ToolKits.Ini;
using ToolKits.mAPI;
namespace GeBoShi.SysCtrl
{
/// <summary>
/// 设备参数
/// </summary>
public class ConfMgr
{
#region
/// <summary>
/// 实例
/// </summary>
private static ConfMgr _instance;
private static readonly object _lock = new object();
public static ConfMgr Instance
{
get
{
if (_instance == null)
{
lock (_lock)
{
if (_instance == null)
{
_instance = new ConfMgr();
}
}
}
return _instance;
}
}
#endregion
#region
private readonly string _rootPath;
private readonly string _configFile;
private readonly string _projectDir;
private readonly string _pointsPath;
private readonly string _markPicPath;
#endregion
private ConfMgr()
{
_rootPath = Path.Combine(Directory.GetCurrentDirectory(), "ConfigFiles");
_configFile = Path.Combine(_rootPath, "SysParamsConfig.ini");
_devConfigPath = Path.Combine(_rootPath, "DevParamsConfig.ini");
_projectDir = Path.Combine(_rootPath, "Project");
_pointsPath = Path.Combine(_rootPath, "PointsConfig.ini");
_markPicPath = Path.Combine(_rootPath, "MarkPic");
_specificationPath = Path.Combine(_rootPath, "版博士软件操作说明.docx");
DBConStr = "server = localhost; Database = LeatherDB; Uid = root; Pwd = " + ConteolUserDB.GetSqlDBCode() + "; AllowLoadLocalInfile = true;";
}
#region
//DB
//有些服务器防火墙有问题需要加上 min pool size=1 避免认为是恶意请求
//如果用到bulkCopy需要加 AllowLoadLocalInfile=true
public string DBConStr = "server=localhost;Database=LeatherDB;Uid=root;Pwd=123456; AllowLoadLocalInfile=true";
/// <summary>
/// 系统配置参数
/// </summary>
public SysConfigParams SysConfigParams { get; set; }
private string _devConfigPath;
/// <summary>
/// 获取驱动配制文件路径
/// </summary>
public string DevConfigPath { get { return _devConfigPath; } }
//public string ProjectDir { get { return _projectDir; } }
public string ProjectDir { get { return SysConfigParams.ProductPath; } }
public string MarkPicPath { get { return _markPicPath; } }
/// <summary>
/// 说明书路径
/// </summary>
public string SpecificationPath { get { return _specificationPath; } }
private string _specificationPath;
/// <summary>
/// 上料位X1
/// </summary>
public double LoadPoint_X1 { get; set; }
/// <summary>
/// 上料位X2
/// </summary>
public double LoadPoint_X2 { get; set; }
/// <summary>
/// 上料位Y
/// </summary>
public double LoadPoint_Y { get; set; }
/// <summary>
/// 上料位Z
/// </summary>
public double LoadPoint_Z { get; set; }
/// <summary>
/// 测厚气缸到位等待时间
/// </summary>
public int HeightDoWait { get; set; }
/// <summary>
/// 加紧气缸到位等待时间
/// </summary>
public int ProductDoWait { get; set; }
#endregion
#region
#region
/// <summary>
/// 写入ini
/// </summary>
/// <param name="SocketParams"></param>
public void WriteSysConfParams(SysConfigParams SysParams)
{
//XmlHelper.Serialize<SysConfParams>(_configFile, sysConfParams);
IniHelper iniHelper = new IniHelper(_configFile);
iniHelper.WriteBool("SaveAllImg", "SaveAllImg", SysParams.SaveAllImg);
iniHelper.WriteString("DefectSrcImag", "SavePath", SysParams.DefectSrcImag.SavePath);
iniHelper.WriteBool("DefectSrcImag", "AutoSave", SysParams.DefectSrcImag.AutoSave);
iniHelper.WriteBool("DefectSrcImag", "AutoDelete", SysParams.DefectSrcImag.AutoDelete);
iniHelper.WriteDouble("DefectSrcImag", "AutoDeleteDays", SysParams.DefectSrcImag.AutoDeleteDays);
iniHelper.WriteString("DefectSmallImag", "SavePath", SysParams.DefectSmallImag.SavePath);
iniHelper.WriteBool("DefectSmallImag", "AutoSave", SysParams.DefectSmallImag.AutoSave);
iniHelper.WriteBool("DefectSmallImag", "AutoDelete", SysParams.DefectSmallImag.AutoDelete);
iniHelper.WriteDouble("DefectSmallImag", "AutoDeleteDays", SysParams.DefectSmallImag.AutoDeleteDays);
iniHelper.WriteString("DefectSplicImag", "SavePath", SysParams.DefectSplicImag.SavePath);
iniHelper.WriteBool("DefectSplicImag", "AutoSave", SysParams.DefectSplicImag.AutoSave);
iniHelper.WriteBool("DefectSplicImag", "AutoDelete", SysParams.DefectSplicImag.AutoDelete);
iniHelper.WriteDouble("DefectSplicImag", "AutoDeleteDays", SysParams.DefectSplicImag.AutoDeleteDays);
iniHelper.WriteString("Log", "SavePath", SysParams.LogPath);
iniHelper.WriteBool("Log", "AutoDelete", SysParams.AutoDeleteLog);
iniHelper.WriteDouble("Log", "AutoDeleteDays", SysParams.AutoDeleteLogData);
iniHelper.WriteBool("SysFunction", "OpenBuzzer", SysParams.OpenBuzzer);
iniHelper.WriteBool("SysFunction", "OpenDoor", SysParams.OpenDoor);
iniHelper.WriteString("Dev", "LightCom", SysParams.LightCom);
iniHelper.WriteInteger("Dev", "LightComBaud", SysParams.LightComBaud);
iniHelper.WriteString("Dev", "IODevName", SysParams.IODevName);
iniHelper.WriteString("Dev", "IOCfgPath", SysParams.IOCfgPath);
iniHelper.WriteString("Sys", "AIModelPath", SysParams.AIModelPath);
iniHelper.WriteString("Sys", "ProductPath", SysParams.ProductPath);
iniHelper.WriteBool("ShowMainWin", "ShowResetBtn", SysParams.ShowResetBtn);
iniHelper.WriteBool("ShowMainWin", "ShowBuzz", SysParams.ShowBuzz);
iniHelper.WriteBool("ShowMainWin", "ShowDoorAlm", SysParams.ShowDoorAlm);
iniHelper.WriteBool("CloudAndMES", "OpenCloud", SysParams.OpenCloud);
iniHelper.WriteString("CloudAndMES", "CloudThisName", SysParams.CloudThisName);
iniHelper.WriteString("CloudAndMES", "CloudServerIP", SysParams.CloudServerIP);
iniHelper.WriteInteger("CloudAndMES", "CloudServerPort", SysParams.CloudServerPort);
iniHelper.WriteString("CloudAndMES", "CloudUser", SysParams.CloudUser);
iniHelper.WriteString("CloudAndMES", "CloudPassword", SysParams.CloudPassword);
iniHelper.WriteBool("CloudAndMES", "OpenPdtServer", SysParams.OpenPdtServer);
iniHelper.WriteString("CloudAndMES", "PdtServerIP", SysParams.PdtServerIP);
iniHelper.WriteInteger("CloudAndMES", "PdtServerPort", SysParams.PdtServerPort);
iniHelper.WriteBool("CloudAndMES", "IsPdtServer", SysParams.IsPdtServer);
iniHelper.WriteBool("LabelPrint", "EnableLabelPrint", SysParams.EnableLabelPrint);
iniHelper.WriteString("LabelPrint", "LabelPrinterName", SysParams.LabelPrinterName);
iniHelper.WriteBool("ExcelPrint", "EnableExcelPrint", SysParams.EnableExcelPrint);
iniHelper.WriteString("ExcelPrint", "ExcelPrinterName", SysParams.ExcelPrinterName);
SysConfigParams = SysParams;
}
/// <summary>
/// 读取ini
/// </summary>
/// <returns></returns>
public SysConfigParams ReadSysConfParams()
{
//return XmlHelper.Deserialize<SysConfParams>(_configFile);
SysConfigParams sysParams = new SysConfigParams();
IniHelper iniHelper = new IniHelper(_configFile);
string sValue = "";
int iValue = 0;
double dValue = 0;
bool bValue = false;
iniHelper.ReadBool("SaveAllImg", "SaveAllImg", out bValue);
sysParams.SaveAllImg = bValue;
iniHelper.ReadString("DefectSrcImag", "SavePath", out sValue);
sysParams.DefectSrcImag.SavePath = sValue.Replace("\0", "");
iniHelper.ReadBool("DefectSrcImag", "AutoSave", out bValue);
sysParams.DefectSrcImag.AutoSave = bValue;
iniHelper.ReadBool("DefectSrcImag", "AutoDelete", out bValue);
sysParams.DefectSrcImag.AutoDelete = bValue;
iniHelper.ReadDouble("DefectSrcImag", "AutoDeleteDays", out dValue);
sysParams.DefectSrcImag.AutoDeleteDays = dValue;
iniHelper.ReadString("DefectSmallImag", "SavePath", out sValue);
sysParams.DefectSmallImag.SavePath = sValue.Replace("\0", "");
iniHelper.ReadBool("DefectSmallImag", "AutoSave", out bValue);
sysParams.DefectSmallImag.AutoSave = bValue;
iniHelper.ReadBool("DefectSmallImag", "AutoDelete", out bValue);
sysParams.DefectSmallImag.AutoDelete = bValue;
iniHelper.ReadDouble("DefectSmallImag", "AutoDeleteDays", out dValue);
sysParams.DefectSmallImag.AutoDeleteDays = dValue;
iniHelper.ReadString("DefectSplicImag", "SavePath", out sValue);
sysParams.DefectSplicImag.SavePath = sValue.Replace("\0", "");
iniHelper.ReadBool("DefectSplicImag", "AutoSave", out bValue);
sysParams.DefectSplicImag.AutoSave = bValue;
iniHelper.ReadBool("DefectSplicImag", "AutoDelete", out bValue);
sysParams.DefectSplicImag.AutoDelete = bValue;
iniHelper.ReadDouble("DefectSplicImag", "AutoDeleteDays", out dValue);
sysParams.DefectSplicImag.AutoDeleteDays = dValue;
iniHelper.ReadString("Log", "SavePath", out sValue);
sysParams.LogPath = sValue.Replace("\0", "");
iniHelper.ReadBool("Log", "AutoDelete", out bValue);
sysParams.AutoDeleteLog = bValue;
iniHelper.ReadDouble("Log", "AutoDeleteDays", out dValue);
sysParams.AutoDeleteLogData = dValue;
iniHelper.ReadBool("SysFunction", "OpenBuzzer", out bValue);
sysParams.OpenBuzzer = bValue;
iniHelper.ReadBool("SysFunction", "OpenDoor", out bValue);
sysParams.OpenDoor = bValue;
iniHelper.ReadString("Dev", "LightCom", out sValue);
sysParams.LightCom = sValue.Replace("\0", "");
iniHelper.ReadInteger("Dev", "LightComBaud", out iValue);
sysParams.LightComBaud = iValue;
iniHelper.ReadString("Dev", "IODevName", out sValue);
sysParams.IODevName = sValue.Replace("\0", "");
iniHelper.ReadString("Dev", "IOCfgPath", out sValue);
sysParams.IOCfgPath = sValue.Replace("\0", "");
iniHelper.ReadString("Sys", "AIModelPath", out sValue);
sysParams.AIModelPath = sValue.Replace("\0", "");
iniHelper.ReadString("Sys", "ProductPath", out sValue);
sysParams.ProductPath = sValue.Replace("\0", "");
iniHelper.ReadString("Sys", "HttpServerIP", out sValue);
iniHelper.ReadBool("ShowMainWin", "ShowResetBtn", out bValue);
sysParams.ShowResetBtn = bValue;
iniHelper.ReadBool("ShowMainWin", "ShowBuzz", out bValue);
sysParams.ShowBuzz = bValue;
iniHelper.ReadBool("ShowMainWin", "ShowDoorAlm", out bValue);
sysParams.ShowDoorAlm = bValue;
iniHelper.ReadBool("CloudAndMES", "OpenCloud", out bValue);
sysParams.OpenCloud = bValue;
iniHelper.ReadString("CloudAndMES", "CloudThisName", out sValue);
sysParams.CloudThisName = sValue.Replace("\0", string.Empty);
iniHelper.ReadString("CloudAndMES", "CloudServerIP", out sValue);
sysParams.CloudServerIP = sValue;
iniHelper.ReadInteger("CloudAndMES", "CloudServerPort", out iValue);
sysParams.CloudServerPort = iValue;
iniHelper.ReadString("CloudAndMES", "CloudUser", out sValue);
sysParams.CloudUser = sValue;
iniHelper.ReadString("CloudAndMES", "CloudPassword", out sValue);
sysParams.CloudPassword = sValue;
iniHelper.ReadBool("CloudAndMES", "OpenPdtServer", out bValue);
sysParams.OpenPdtServer = bValue;
iniHelper.ReadString("CloudAndMES", "PdtServerIP", out sValue);
sysParams.PdtServerIP = sValue;
iniHelper.ReadInteger("CloudAndMES", "PdtServerPort", out iValue);
sysParams.PdtServerPort = iValue;
iniHelper.ReadBool("CloudAndMES", "IsPdtServer", out bValue);
sysParams.IsPdtServer = bValue;
iniHelper.ReadBool("LabelPrint", "EnableLabelPrint", out bValue);
sysParams.EnableLabelPrint = bValue;
iniHelper.ReadString("LabelPrint", "LabelPrinterName", out sValue);
sysParams.LabelPrinterName = sValue;
iniHelper.ReadBool("ExcelPrint", "EnableExcelPrint", out bValue);
sysParams.EnableExcelPrint = bValue;
iniHelper.ReadString("ExcelPrint", "ExcelPrinterName", out sValue);
sysParams.ExcelPrinterName = sValue;
SysConfigParams = sysParams;
return sysParams;
}
/// <summary>
/// 写入系统默认配置
/// </summary>
public void WriteDefaultSystemConfig()
{
SysConfigParams = new SysConfigParams();
WriteSysConfParams(SysConfigParams);
}
/// <summary>
/// 加载系统配置
/// </summary>
/// <returns></returns>
public bool LoadSystemConfig()
{
bool ret = false;
if (!Directory.Exists(_rootPath))
{
Directory.CreateDirectory(_rootPath);
}
if (!Directory.Exists(_projectDir))
{
Directory.CreateDirectory(_projectDir);
}
if (File.Exists(_configFile))
{
SysConfigParams = ReadSysConfParams();
if (null != SysConfigParams)
{
ret = true;
}
}
else
{
// write default value
WriteDefaultSystemConfig();
ret = true;
}
return ret;
}
#endregion
#region
/// <summary>
/// 选择目录
/// </summary>
/// <returns></returns>
public static string SelectFolder(string defaultPath = "")
{
FolderBrowserDialog dlg = new FolderBrowserDialog();
dlg.SelectedPath = (defaultPath != "" ? defaultPath : Path.GetFullPath("."));
if (dlg.ShowDialog() == DialogResult.OK)
return dlg.SelectedPath;
return "";
}
/// <summary>
/// 选择文件
/// </summary>
/// <param name="filter">如 图像文件|*.jpg|图像文件|*.png|所有文件|*.*</param>
/// <returns></returns>
public static string SelectFile(string filter = "所有文件|*.*", string defaultPath = "")
{
OpenFileDialog fie = new OpenFileDialog();
fie.Title = "选择文件";
//fie.InitialDirectory = (defaultPath != "" ? defaultPath : Path.GetFullPath("."));
fie.Filter = filter; //设置文件类型
if (fie.ShowDialog() == DialogResult.OK)
return fie.FileName;
return "";
}
/// <summary>
/// 删除指定目录下文件
/// </summary>
/// <param name="defaultPath"></param>
/// <param name="fileExtend"></param>
/// <returns></returns>
public static bool DelFilesInFolder(string FolderPath, string fileExtend = "*")
{
if (!Directory.Exists(FolderPath))
return false;
string[] files = Directory.GetFiles(FolderPath, fileExtend, SearchOption.TopDirectoryOnly);
foreach (string file in files)
API.DeleteFile(file);
return true;
}
/// <summary>
/// 另存为
/// </summary>
/// <param name="defaultFileName">默认文件名</param>
/// <param name="filter">如 图像文件|*.jpg|图像文件|*.png|所有文件|*.*</param>
/// <returns></returns>
public static string SaveAsFile(string defaultFileName, string filter = "所有文件|*.*")
{
SaveFileDialog s = new SaveFileDialog();
s.Title = "保存文件";
s.Filter = filter; //"图像文件|*.jpg|图像文件|*.png|所有文件|*.*";
//s.DefaultExt = "图像文件|*.jpg"; //默认扩展名
//s.InitialDirectory = @"C:\Users\Administrator\Desktop"; //保存的初始目录
s.FileName = defaultFileName;//默认文件名
if (s.ShowDialog() == DialogResult.OK)
return s.FileName;
return "";
}
#endregion
#region json操作
//public static void addKey(JObject obj, string key, JToken value)
//{
// if (obj.ContainsKey(key))
// obj[key] = value;
// else
// obj.Add(key, value);
//}
#endregion
#region enum名称
public static ArrayList GetArrayList<T>()
{
ArrayList list = new ArrayList();
Type type = typeof(T);
//list.Add(new DictionaryEntry("start", "启动按钮"));
foreach (int value in Enum.GetValues(type))
{
string strName = Enum.GetName(type, value);//获取名称
list.Add(new DictionaryEntry(value, strName));
}
return list;
}
#endregion
#region
public bool SetDailyOutputAdd(out int tDailyOutput)
{
bool ret = true;
try
{
//读取数据
string tempFile = Path.Combine(_rootPath, "DailyOutput.ini");
IniHelper iniHelper = new IniHelper(tempFile);
int iValue = 0;
iniHelper.ReadInteger("TempData", "DailyOutput", out iValue);
tDailyOutput = iValue;
iniHelper.ReadInteger("TempData", "Date", out iValue);
int dateNum = iValue;
int nowDateNum = int.Parse(DateTime.Now.ToString("yyyyMMdd"));
if (dateNum == nowDateNum)
{
//同一天,生产数量+1
tDailyOutput++;
}
else if (dateNum < nowDateNum)
{
//昨天数据为1
tDailyOutput = 1;
}
//重新记录
iniHelper.WriteInteger("TempData", "DailyOutput", tDailyOutput);
iniHelper.WriteInteger("TempData", "Date", nowDateNum);
}
catch (Exception ex)
{
tDailyOutput = 0;
ret = false;
string tempFile = Path.Combine(_rootPath, "DailyOutput.ini");
IniHelper iniHelper = new IniHelper(tempFile);
int nowDateNum = int.Parse(DateTime.Now.ToString("yyyyMMdd"));
//重新记录
iniHelper.WriteInteger("TempData", "DailyOutput", tDailyOutput);
iniHelper.WriteInteger("TempData", "Date", nowDateNum);
}
return ret;
}
public bool GetDailyOutput(out int tDailyOutput)
{
bool ret = true;
try
{
//读取数据
string tempFile = Path.Combine(_rootPath, "DailyOutput.ini");
IniHelper iniHelper = new IniHelper(tempFile);
int iValue = 0;
iniHelper.ReadInteger("TempData", "DailyOutput", out iValue);
tDailyOutput = iValue;
iniHelper.ReadInteger("TempData", "Date", out iValue);
int dateNum = iValue;
int nowDateNum = int.Parse(DateTime.Now.ToString("yyyyMMdd"));
if (dateNum == nowDateNum)
{
//同一天,生产数量+1
//tDailyOutput++;
}
else if (dateNum < nowDateNum)
{
//昨天数据为1
tDailyOutput = 0;
}
}
catch (Exception ex)
{
tDailyOutput = 0;
ret = false;
}
return ret;
}
#endregion
#endregion
}
#region
/// <summary>
/// 图片保存参数
/// </summary>
[Serializable]
public class ImageSaveParam
{
/// <summary>
/// 保存路径
/// </summary>
public string SavePath { get; set; }
/// <summary>
/// 自动保存
/// </summary>
public bool AutoSave { get; set; }
/// <summary>
/// 自动删除
/// </summary>
public bool AutoDelete { get; set; }
/// <summary>
/// 自动删除日期
/// </summary>
public double AutoDeleteDays { get; set; }
public ImageSaveParam()
{
SavePath = "D:\\AllImageSave";
AutoSave = true;
AutoDelete = true;
AutoDeleteDays = 3;
}
public ImageSaveParam(string path)
{
SavePath = path;
AutoSave = true;
AutoDelete = true;
AutoDeleteDays = 3;
}
}
[Serializable]
public class SysConfigParams
{
#region
/// <summary>
/// 保存所有图片
/// </summary>
public bool SaveAllImg { get; set; }
/// <summary>
/// 缺陷原大图
/// </summary>
public ImageSaveParam DefectSrcImag { get; set; }
/// <summary>
/// 缺陷合并图
/// </summary>
public ImageSaveParam DefectSplicImag { get; set; }
/// <summary>
/// 缺陷小图
/// </summary>
public ImageSaveParam DefectSmallImag { get; set; }
#endregion
#region
/// <summary>
/// 开启蜂鸣器
/// </summary>
public bool OpenBuzzer { get; set; }
/// <summary>
/// 开启门磁
/// </summary>
public bool OpenDoor { get; set; }
#endregion
#region
/// <summary>
/// 光源串口
/// </summary>
//public LightParams LightCfg { get; set; }
public string LightCom { get; set; }
/// <summary>
/// 光源波特率
/// </summary>
public int LightComBaud { get; set; }
#endregion
#region IO//
/// <summary>
/// 是否使用PLC代替io
/// </summary>
public bool IsPLC { get; set; }
/// <summary>
/// 西门子PLC IP
/// </summary>
public string PLC_IP { get; set; }
/// <summary>
/// 西门子PLC 端口
/// </summary>
public int PLC_Rack { get; set; }
/// <summary>
/// 西门子PLC 端口
/// </summary>
public int PLC_Solt { get; set; }
/// <summary>
/// IO驱动名称
/// </summary>
//public IOParams IOCfg { get; set; }
public string IODevName { get; set; }
/// <summary>
/// IO配置文件路径
/// </summary>
public string IOCfgPath { get; set; }
#endregion
#region
public string AIModelPath { get; set; }
public string ProductPath { get; set; }
public string LogPath { get; set; }
public bool AutoDeleteLog { get; set; }
public double AutoDeleteLogData { get; set; }
/// <summary>
/// 调试:主界面显示复位按钮
/// </summary>
public bool ShowResetBtn { get; set; }
/// <summary>
/// 调试:主界面显示蜂鸣器控制
/// </summary>
public bool ShowBuzz { get; set; }
/// <summary>
/// 调试:主界面显示门磁报警控制
/// </summary>
public bool ShowDoorAlm { get; set; }
/// <summary>
/// 1cm X方向像素
/// </summary>
public int Cm2px_x = 1;
/// <summary>
/// 1cm Y方向像素
/// </summary>
public int Cm2px_y = 1;
/// <summary>
/// 对比度范围阔算
/// </summary>
public int Expand_pixel = 50;
#endregion
#region Http/MES
#endregion
#region MQTT本地云/
/// <summary>
/// 开启局域网云端
/// </summary>
public bool OpenCloud { get; set; }
public string CloudThisName { get; set; }
public string CloudServerIP { get; set; }
public int CloudServerPort { get; set; }
public string CloudUser { get; set; }
public string CloudPassword { get; set; }
/// <summary>
/// 开启产品转发
/// </summary>
public bool OpenPdtServer { get; set; }
public string PdtServerIP { get; set; }
public int PdtServerPort { get; set; }
/// <summary>
/// 是否作为服务器还是客户端
/// </summary>
public bool IsPdtServer { get; set; }
#endregion
#region BarTender
/// <summary>
/// 开启标签打印
/// </summary>
public bool EnableLabelPrint { get; set; }
/// <summary>
/// 打印机名称
/// </summary>
public string LabelPrinterName { get; set; }
#endregion
#region Excel
/// <summary>
/// 开启Excel打印
/// </summary>
public bool EnableExcelPrint { get; set; }
/// <summary>
/// 打印机名称
/// </summary>
public string ExcelPrinterName { get; set; }
#endregion
public SysConfigParams()
{
DefectSrcImag = new ImageSaveParam("D:\\Image\\DefectSrcImag");
DefectSmallImag = new ImageSaveParam("D:\\Image\\DefectSmallImag");
DefectSplicImag = new ImageSaveParam("D:\\Image\\DefectSplicImag");
OpenBuzzer = true;
OpenDoor = true;
IODevName = "";
IOCfgPath = Path.Combine(Directory.GetCurrentDirectory(), "ConfigFiles\\IOCard_default.xml"); ;
LightCom = "";
LightComBaud = 9600;
SaveAllImg = false;
AIModelPath = Path.Combine(Directory.GetCurrentDirectory(), "ConfigFiles\\onnxFiles");
ProductPath = Path.Combine(Directory.GetCurrentDirectory(), "ConfigFiles\\Project");
LogPath = Path.Combine(Directory.GetCurrentDirectory(), "LogFiles");
AutoDeleteLog = false;
AutoDeleteLogData = 0;
ShowResetBtn = true;
ShowBuzz = false;
ShowDoorAlm = false;
EnableLabelPrint = false;
LabelPrinterName = "";
EnableExcelPrint = false;
ExcelPrinterName = "";
OpenCloud = false;
CloudThisName = "Test";
CloudServerIP = "127.0.0.1";
CloudServerPort = 1883;
CloudUser = "";
CloudPassword = "";
OpenPdtServer = false;
PdtServerIP = "127.0.0.1";
PdtServerPort = 10573;
IsPdtServer = true;
}
}
#endregion
}

View File

@ -0,0 +1,71 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace GeBoShi.SysCtrl
{
public enum LightChannelEnum
{
[Description("通道1")]
CH1 = 1,
[Description("通道2")]
CH2 = 2,
[Description("通道3")]
CH3 = 3,
[Description("通道4")]
CH4 = 4,
[Description("通道5")]
CH5 = 5,
[Description("通道6")]
CH6 = 6,
}
public enum DOName
{
= 0,
绿 = 1,
= 2,
= 3,
= 4,
= 5,
绿 = 7,
绿 = 8,
= 9,
= 10,
= 11,
= 12,
X1回原 = 13,
X2回原 = 14,
Y轴回原点 = 15
}
public enum DIName
{
= 14,
= 3,
= 2,
= 4,
= 5,
= 6,
= 7,
= 8,
= 9,
= 0,
= 1,
= 10,
= 11,
Y轴回原点完成 = 15
}
}

View File

@ -0,0 +1,800 @@
using BarTenderPrint;
using GeBoShi.ImageDefect;
using HZH_Controls.Forms;
using MaiMuControl.Device;
using MaiMuControl.Device.IOCardDev;
using MaiMuControl.Device.IOCardDev.Advantech;
using MaiMuControl.Device.LightDev;
using MaiMuControl.Device.LightDev.CST;
using MaiMuControl.Device.LightDev.Rsee;
using MaiMuControl.SysStatusMgr.CloudMgr;
using MaiMuControl.SysStatusMgr.StatusMgr;
using MaiMuControl.SysStatusMgr.UserMgr;
using System;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
using ToolKits.Disk;
namespace GeBoShi.SysCtrl
{
/// <summary>
/// 主系统控制
/// </summary>
public class SysMgr
{
#region singleton实例化
private static SysMgr _instance;
private static readonly object _lock = new object();
public static SysMgr Instance
{
get
{
if (_instance == null)
{
lock (_lock)
{
if (_instance == null)
{
_instance = new SysMgr();
}
}
}
return _instance;
}
}
#endregion
#region
//系统状态
private StatusMgr statusMgr;
public StatusMgr StatusMgr { get { return statusMgr; } }
//用户管理
private UserMgr userMgr;
public UserMgr UserMgr { get { return userMgr; } }
//系统配置管理
private ConfMgr confMgr;
//图像处理
private DefectLib defectLib;
public DefectLib DefectLib { get { return defectLib; } }
#endregion
#region
private bool _isInit;
/// <summary>
/// 是否初始化完成
/// </summary>
public bool IsInit { get { return _isInit; } }
private bool _isRuning;
/// <summary>
/// 设备正在运行
/// </summary>
public bool IsRuning { get { return _isRuning; } }
private bool _isAuto;
/// <summary>
/// 设备正在自动化流程中
/// </summary>
public bool IsAuto { get { return _isAuto; } }
#endregion
#region
//主流程
private Thread _mainThread;
private CancellationTokenSource _cts;
#endregion
#region
//局域网云端
private bool init_Cloud;
private CloudMgr cloudMgr;
private int DailyOutput;
#endregion
private SysMgr()
{
_isInit = false;
_isRuning = false;
_isAuto = false;
statusMgr = StatusMgr.Instance;
confMgr = ConfMgr.Instance;
userMgr = new UserMgr(statusMgr.MySqlIP);
_cts = new CancellationTokenSource();
init_Cloud = false;
cloudMgr = new CloudMgr();
DailyOutput = 0;
}
#region
/// <summary>
/// 上传当日产量
/// </summary>
private void SendDailyOutput()
{
//开启云端
if (init_Cloud)
{
try
{
if (!cloudMgr.SendTopic("device/attributes", $"{{ \"DailyOutput\": \"{DailyOutput}\"}}"))
Log("云端", $"上传失败", WarningEnum.Low);
}
catch (Exception e)
{
Log("云端", $"上传失败:{e.Message}", WarningEnum.Low);
}
}
}
/// <summary>
/// 上传正常状态
/// </summary>
public void SendStatus()
{
//开启云端
if (init_Cloud)
{
//上传报警状态和信息
string statusStr = "正常";
switch (StatusMgr.Status)
{
case SystemStsEnum.Manual:
statusStr = "人工操作";
break;
case SystemStsEnum.Standby:
statusStr = "正常待机";
break;
case SystemStsEnum.Initial:
statusStr = "初始化";
break;
case SystemStsEnum.Auto:
statusStr = "自动运行";
break;
case SystemStsEnum.Pause:
statusStr = "自动暂停";
break;
case SystemStsEnum.SetParams:
statusStr = "参数设置";
break;
case SystemStsEnum.Debug:
statusStr = "调试";
break;
case SystemStsEnum.Warning:
statusStr = "系统报警";
break;
case SystemStsEnum.Bootload:
statusStr = "Bootload";
break;
default:
statusStr = "未知";
break;
}
try
{
if (!cloudMgr.SendTopic("device/attributes", $"{{\"status\": \"{statusStr}\", \"alm\": \"无报警信息\", " +
$"\"name\": \"{confMgr.SysConfigParams.CloudThisName}\", \"DailyOutput\": \"{DailyOutput}\"}}"))
Log("云端", $"上传失败", WarningEnum.Low);
}
catch (Exception e)
{
Log("云端", $"上传失败:{e.Message}", WarningEnum.Low);
}
}
}
#endregion
#region ++
/// <summary>
/// 登入
/// </summary>
/// <returns></returns>
public bool LoginSystem()
{
return userMgr.UserLoginDialog();
}
/// <summary>
/// 用户权限
/// </summary>
public void UserPermissiomMgr()
{
userMgr.RightManageDialog();
}
/// <summary>
/// 用户管理
/// </summary>
public void UserListMgr()
{
userMgr.UserManagerDialog();
}
#endregion
#region &&
/// <summary>
/// 系统初始化
/// </summary>
/// <returns></returns>
public bool Initial()
{
try
{
bool ret = false;
string err = "";
InitLog("系统开始初始化...");
//Thread.Sleep(200);
// 加载系统配置
InitLog("加载系统参数...");
ret = confMgr.LoadSystemConfig();
if (!ret)
{
throw new Exception("系统参数加载失败...");
}
InitLog("系统参数加载完成!");
//根据llog路径开始记录日志
statusMgr.StartLog(confMgr.SysConfigParams.LogPath);
statusMgr.GotoInitial();
SendStatus();
//Thread.Sleep(200);
// 硬件初始化
if (!InitAllDev())
{
throw new Exception("硬件初始化失败...");
}
InitLog("硬件初始化完成!");
// 加载硬件配置
InitLog("加载硬件驱动参数...");
if (!LoadDevConfig())
{
throw new Exception("加载硬件驱动参数失败...");
}
InitLog("加载硬件驱动参数完成!");
//Thread.Sleep(200);
// 处理运行
InitLog("AI算法核心初始化...");
if (!defectLib.start())
throw new Exception("外观检测核心初始化失败...");
InitLog("AI算法核心初始化完成");
LedReady();
//初始化成功
_isInit = true;
statusMgr.GotoNormalStandby();
SendStatus();
OnInitRuning(new InitEventArgs("系统初始化完成...", this.IsInit));
Run();
return ret;
}
catch (Exception ex)
{
InitLog(ex.Message, "初始化", WarningEnum.High);
InitLog("系统初始化失败!", "初始化", WarningEnum.High);
//statusMgr.GotoWarning(MaiMuControl.Device.WarningEnum.High, "初始化", ex.Message);
return false;
}
}
/// <summary>
/// 初始化图像处理报警
/// </summary>
/// <returns></returns>
public bool InitDefectEvent()
{
defectLib.WarningEvent = (warning, msg) =>
{
Log("缺陷检测", msg, warning);
};
return true;
}
public bool InitCloudConnect()
{
if (confMgr.SysConfigParams.OpenCloud)
{
if (cloudMgr.ConnectCloud(confMgr.SysConfigParams.CloudServerIP, confMgr.SysConfigParams.CloudServerPort,
confMgr.SysConfigParams.CloudUser, confMgr.SysConfigParams.CloudPassword))
{
init_Cloud = true;
Log("云端数据", "开启云端连接");
return true;
}
Log("云端数据", "云端连接失败!", WarningEnum.Low);
return false;
}
return true;
}
/// <summary>
/// 运行主线程
/// </summary>
private void Run()
{
_mainThread = new Thread(() =>
{
MainThreadFunction();
});
_mainThread.IsBackground = true;
_mainThread.Start();
}
#endregion
#region
/// <summary>
/// 中断工序运行
/// </summary>
/// <returns></returns>
private bool isBreakProcessRun()
{
return statusMgr.Status == SystemStsEnum.Pause || statusMgr.Warning == WarningEnum.High;
}
/// <summary>
/// 后台运行主线程
/// </summary>
private void MainThreadFunction()
{
while (true)
{
try
{
if (_cts.IsCancellationRequested)
break;
if (IsRuning)
{
////暂停开始
//stopWatch.Start();
//do
//{
// CurrProcessIndex = nextProcess(CurrProductModel, CurrProcessIndex);
//} while (CurrProcessIndex >= 0 && !isBreakProcessRun());
////暂停中断
//stopWatch.Stop();
_isRuning = false;
}
Thread.Sleep(10);
}
catch (Exception e)
{
_isRuning = false;
Log("运行报警", "流程运行出错:" + e.Message + "\n", WarningEnum.High);
}
}
}
#endregion
#region IO解析
private int GetIOPortIndex(int DIDOEnum)
{
return DIDOEnum / 8;
}
private int GetIOBitIndex(int DIDOEnum)
{
return DIDOEnum % 8;
}
#endregion
#region
/// <summary>
/// 三色灯初始化
/// </summary>
public void LedReady()
{
ioCardDev.WriteBitState(GetIOPortIndex((int)DOName.绿), GetIOBitIndex((int)DOName.绿), false);
ioCardDev.WriteBitState(GetIOPortIndex((int)DOName.), GetIOBitIndex((int)DOName.), false);
ioCardDev.WriteBitState(GetIOPortIndex((int)DOName.), GetIOBitIndex((int)DOName.), false);
ioCardDev.WriteBitState(GetIOPortIndex((int)DOName.), GetIOBitIndex((int)DOName.), false);
ioCardDev.WriteBitState(GetIOPortIndex((int)DOName.绿), GetIOBitIndex((int)DOName.绿), false);
ioCardDev.WriteBitState(GetIOPortIndex((int)DOName.), GetIOBitIndex((int)DOName.), false);
ioCardDev.WriteBitState(GetIOPortIndex((int)DOName.), GetIOBitIndex((int)DOName.), false);
ioCardDev.WriteBitState(GetIOPortIndex((int)DOName.绿), GetIOBitIndex((int)DOName.绿), false);
}
/// <summary>
/// 运行状态三色灯
/// </summary>
public void LedRun()
{
ioCardDev.WriteBitState(GetIOPortIndex((int)DOName.绿), GetIOBitIndex((int)DOName.绿), true);
ioCardDev.WriteBitState(GetIOPortIndex((int)DOName.), GetIOBitIndex((int)DOName.), false);
ioCardDev.WriteBitState(GetIOPortIndex((int)DOName.), GetIOBitIndex((int)DOName.), false);
ioCardDev.WriteBitState(GetIOPortIndex((int)DOName.), GetIOBitIndex((int)DOName.), false);
ioCardDev.WriteBitState(GetIOPortIndex((int)DOName.绿), GetIOBitIndex((int)DOName.绿), true);
ioCardDev.WriteBitState(GetIOPortIndex((int)DOName.), GetIOBitIndex((int)DOName.), false);
ioCardDev.WriteBitState(GetIOPortIndex((int)DOName.), GetIOBitIndex((int)DOName.), false);
ioCardDev.WriteBitState(GetIOPortIndex((int)DOName.绿), GetIOBitIndex((int)DOName.绿), false);
}
/// <summary>
/// 暂停状态三色灯
/// </summary>
public void LedPause()
{
ioCardDev.WriteBitState(GetIOPortIndex((int)DOName.绿), GetIOBitIndex((int)DOName.绿), false);
ioCardDev.WriteBitState(GetIOPortIndex((int)DOName.), GetIOBitIndex((int)DOName.), false);
ioCardDev.WriteBitState(GetIOPortIndex((int)DOName.), GetIOBitIndex((int)DOName.), true);
ioCardDev.WriteBitState(GetIOPortIndex((int)DOName.), GetIOBitIndex((int)DOName.), false);
ioCardDev.WriteBitState(GetIOPortIndex((int)DOName.绿), GetIOBitIndex((int)DOName.绿), false);
ioCardDev.WriteBitState(GetIOPortIndex((int)DOName.), GetIOBitIndex((int)DOName.), false);
ioCardDev.WriteBitState(GetIOPortIndex((int)DOName.), GetIOBitIndex((int)DOName.), true);
ioCardDev.WriteBitState(GetIOPortIndex((int)DOName.绿), GetIOBitIndex((int)DOName.绿), false);
}
//控制黄灯闪烁
private bool Blink;
private int BlinkCnt = 0;
//控制蜂鸣间隔
private int BuzzCnt = 0;
/// <summary>
/// 回原状态三色灯
/// </summary>
/// <param name="val"></param>
public void LedRset(bool val)
{
ioCardDev.WriteBitState(GetIOPortIndex((int)DOName.绿), GetIOBitIndex((int)DOName.绿), false);
//ioCardDev.WriteBitState(GetIOPortIndex((int)DOName.三色灯黄灯), GetIOBitIndex((int)DOName.三色灯黄灯), val);
ioCardDev.WriteBitState(GetIOPortIndex((int)DOName.), GetIOBitIndex((int)DOName.), false);
ioCardDev.WriteBitState(GetIOPortIndex((int)DOName.), GetIOBitIndex((int)DOName.), false);
ioCardDev.WriteBitState(GetIOPortIndex((int)DOName.绿), GetIOBitIndex((int)DOName.绿), false);
ioCardDev.WriteBitState(GetIOPortIndex((int)DOName.), GetIOBitIndex((int)DOName.), val);
ioCardDev.WriteBitState(GetIOPortIndex((int)DOName.), GetIOBitIndex((int)DOName.), false);
ioCardDev.WriteBitState(GetIOPortIndex((int)DOName.绿), GetIOBitIndex((int)DOName.绿), false);
Blink = val;
BlinkCnt = 0;
}
#endregion
#region
/// <summary>
/// 关闭
/// </summary>
public void Close()
{
_isInit = false;
_isRuning = false;
if (null != _cts)
{
_cts.Cancel();
}
if (null != _mainThread)
{
_mainThread.Join(1000);
}
//关闭相机
//关闭光源
for (int i = 0; i < LightChCount; i++)
{
lightDev.CloseLight(i + 1);
}
lightDev.CloseDev();
//关闭io
ioCardDev.ResetAllDO();
ioCardDev.CloseBoard();
}
#endregion
#region
/// <summary>
/// 初始化记录报警和显示
/// </summary>
/// <param name="tag">标头</param>
/// <param name="msg">内容</param>
/// <param name="warning">报警状态</param>
private void InitLog(string msg, string tag = "初始化", WarningEnum warning = WarningEnum.Normal)
{
OnInitRuning(new InitEventArgs(msg));
statusMgr.GotoWarning(warning, tag, msg);
}
/// <summary>
/// 记录报警和显示
/// </summary>
/// <param name="tag">标头</param>
/// <param name="msg">内容</param>
/// <param name="warning">报警状态</param>
private void Log(string tag, string msg, WarningEnum warning = WarningEnum.Normal)
{
OnMainRuning(new MainEventArgs(tag, msg, warning));
statusMgr.GotoWarning(warning, tag, msg);
//开启云端
if ((init_Cloud) && (warning != WarningEnum.Normal))
{
//上传报警状态和信息
string statusStr = warning == WarningEnum.Normal ? "正常" : warning == WarningEnum.Low ? "警告" : "系统报警";
cloudMgr.SendTopic("device/attributes", $"{{\"status\": \"{statusStr}\", \"alm\": \"{tag}-{msg}\", " +
$"\"name\": \"{confMgr.SysConfigParams.CloudThisName}\", \"DailyOutput\": \"{DailyOutput}\"}}");
}
}
#endregion
#region
#region
public LightDevNameEnum SysUseLight = LightDevNameEnum.CST;
#endregion
#region
private IOCardDev ioCardDev;
/// <summary>
/// io控制卡
/// </summary>
public IOCardDev IOCardDev { get { return ioCardDev; } }
private LightDev lightDev;
/// <summary>
/// 光源控制
/// </summary>
public LightDev LightDev { get { return lightDev; } }
public string LightName { get { return "Light"; } }
public int LightChCount = 6;//美尚4通道其他6通道
private PrintControl printControl;
/// <summary>
/// 打印机模块
/// </summary>
public PrintControl PrintControl { get { return printControl; } }
#endregion
#region IO操作
private void InitDev()
{
ioCardDev = new AdvantechIO();
if (SysUseLight == LightDevNameEnum.CST)
lightDev = new CSTLight(LightName, LightChCount);
else
lightDev = new RseeLight(SysUseLight, LightName);
}
/// <summary>
/// 初始化硬件
/// </summary>
/// <returns></returns>
private bool InitAllDev()
{
bool ret = false;
InitDev();
//打印机模块初始化
InitLog("打印机模块初始化...");
try
{
printControl = new PrintControl();
InitLog("初始化打印机模块成功!");
}
catch (Exception ex)
{
printControl = null;
InitLog($"初始化打印机模块失败! {ex.Message}");
}
if (confMgr.SysConfigParams.IsPLC)
{
//PLC初始化
InitLog("PLC连接初始化...");
InitLog("PLC连接成功");
}
else
{
//IO初始化
InitLog("IO板卡初始化...");
if (ioCardDev.InitBoard(MaiMuControl.Device.IOBordType.Advantech) < 0)
{
InitLog("IO板卡初始化失败", "初始化", WarningEnum.High);
return ret;
}
if (ioCardDev.OpenBoard(confMgr.SysConfigParams.IODevName, confMgr.SysConfigParams.IOCfgPath) < 0)
{
InitLog("打开IO板卡失败", "初始化", WarningEnum.High);
return ret;
}
if (ioCardDev.ResetAllDO() < 0)
{
InitLog("IO Reset失败", "初始化", WarningEnum.High);
return ret;
}
InitLog("初始化IO板卡成功");
}
//光源初始化
InitLog("光源控制器初始化...");
int com_num = int.Parse(confMgr.SysConfigParams.LightCom.Remove(0, 3));
if (lightDev.InitDev(com_num, confMgr.SysConfigParams.LightComBaud) < 0)
{
InitLog("光源控制器初始化失败!", "初始化", WarningEnum.High);
return ret;
}
InitLog("初始化光源控制器成功!");
//关闭光源
for (int i = 0; i < LightChCount; i++)
{
lightDev.CloseLight(i + 1);
}
ret = true;
return ret;
}
/// <summary>
/// 读取硬件配置
/// </summary>
private bool LoadDevConfig()
{
LightParams lightParams = new LightParams(LightName, LightChCount);
//LightChCount = 6;
//lightParams.DevName = LightName;
lightParams.ComName = confMgr.SysConfigParams.LightCom;
lightParams.Buad = confMgr.SysConfigParams.LightComBaud;
//lightParams.ChCount = LightChCount;
lightDev.WriteCfgInfo(confMgr.DevConfigPath, lightParams);
return true;
}
#endregion
#endregion
#region
public static bool CheckDisk(IWin32Window owner, int max = 10)
{
string path = ConfMgr.Instance.SysConfigParams.DefectSrcImag.SavePath;
string volume = path.Substring(0, path.IndexOf(':'));
long freespace = DiskAPI.GetHardDiskSpace(volume);
if (freespace < max)
{
string tip = $"当前{volume}硬盘容量:{freespace}GB小于{max}GB。注意清理";
FrmDialog.ShowDialog(owner, tip, "警告", true);
return false;
}
return true;
}
#endregion
#region
/// <summary>
/// 初始化回调
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
public delegate void InitEventHandler(Object sender, InitEventArgs e);
public event InitEventHandler InitRuning;
protected virtual void OnInitRuning(InitEventArgs e)
{
if (null != InitRuning)
{
InitRuning(this, e);
}
}
#endregion
#region
/// <summary>
/// 主窗体回调
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
public delegate void MainEventHandler(Object sender, MainEventArgs e);
public event MainEventHandler MainRuning;
protected virtual void OnMainRuning(MainEventArgs e)
{
if (null != MainRuning)
{
MainRuning(this, e);
}
}
#endregion
}
#region
/// <summary>
/// 显图事件
/// </summary>
public class ImgEventArgs : EventArgs
{
//private Bitmap[] _bmps;
//public Bitmap[] Bitmaps { get { return _bmps; } }
//private Mat[] _bmps_cut;
//public Mat[] Bmps_cut { get { return _bmps_cut; } }
//private double _x;
//public double X { get { return _x; } }
//private double _y;
//public double Y { get { return _y; } }
//private List<Dictionary<int, List<string>[]>> _info;
//public List<Dictionary<int, List<string>[]>> Info
//{
// get { return _info; }
//}
//public ImgEventArgs(Bitmap[] bmps, Mat[] bmps_cut, double Xmm, double Ymm, List<Dictionary<int, List<string>[]>> info)
//{
// this._bmps = new Bitmap[bmps.Length];
// for (int i = 0; i < bmps.Length; i++)
// {
// this._bmps[i] = (Bitmap)bmps[i].Clone();
// }
// this._bmps_cut = new Mat[bmps_cut.Length];
// for (int i = 0; i < bmps_cut.Length; i++)
// {
// this._bmps_cut[i] = bmps_cut[i].Clone();
// }
// this._x = Xmm;
// this._y = Ymm;
// this._info = info;
//}
}
/// <summary>
/// 主窗体事件
/// </summary>
public class MainEventArgs : EventArgs
{
private string _tag;
public string Tag { get { return _tag; } }
private string _message;
public string Message { get { return _message; } }
private int _showIndex;
public int ShowIndex { get { return _showIndex; } }
private WarningEnum _warning;
public WarningEnum Warning { get { return _warning; } }
public MainEventArgs(int index)
{
this._showIndex = index;
}
public MainEventArgs(int index, string message)
{
this._message = message;
this._showIndex = index;
}
public MainEventArgs(string tag, string message, WarningEnum warning = WarningEnum.Normal)
{
this._tag = tag;
this._message = message;
this._showIndex = 0;
this._warning = warning;
}
}
/// <summary>
/// 初始化事件
/// </summary>
public class InitEventArgs : EventArgs
{
private string _message;
public string Message { get { return _message; } }
private bool _isInitialized;
public bool IsInitialized { get { return _isInitialized; } }
public InitEventArgs()
{
}
public InitEventArgs(string message, bool isInitialized = false)
{
this._message = message;
this._isInitialized = isInitialized;
}
}
#endregion
}

View File

@ -0,0 +1,108 @@
namespace GeBoShi.UI.Load
{
partial class InitFrm
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
this.StsTextBox = new System.Windows.Forms.TextBox();
this.skinButton1 = new CCWin.SkinControl.SkinButton();
this.uiTitel1 = new MaiMuControl.UIKits.MaiMuMenu.UITitel();
this.backgroundWorker1 = new System.ComponentModel.BackgroundWorker();
this.SuspendLayout();
//
// StsTextBox
//
this.StsTextBox.Cursor = System.Windows.Forms.Cursors.AppStarting;
this.StsTextBox.Font = new System.Drawing.Font("微软雅黑", 15F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.StsTextBox.Location = new System.Drawing.Point(12, 46);
this.StsTextBox.Multiline = true;
this.StsTextBox.Name = "StsTextBox";
this.StsTextBox.ReadOnly = true;
this.StsTextBox.ScrollBars = System.Windows.Forms.ScrollBars.Both;
this.StsTextBox.Size = new System.Drawing.Size(433, 366);
this.StsTextBox.TabIndex = 39;
this.StsTextBox.Text = "1\r\n2\r\n3\r\n43\r\n4\r\n5\r\n56\r\n6\r\n7";
//
// skinButton1
//
this.skinButton1.BackColor = System.Drawing.Color.Transparent;
this.skinButton1.BorderColor = System.Drawing.Color.Silver;
this.skinButton1.ControlState = CCWin.SkinClass.ControlState.Normal;
this.skinButton1.DownBack = null;
this.skinButton1.Font = new System.Drawing.Font("宋体", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.skinButton1.Location = new System.Drawing.Point(12, 418);
this.skinButton1.MouseBack = null;
this.skinButton1.Name = "skinButton1";
this.skinButton1.NormlBack = null;
this.skinButton1.Radius = 16;
this.skinButton1.RoundStyle = CCWin.SkinClass.RoundStyle.All;
this.skinButton1.Size = new System.Drawing.Size(99, 38);
this.skinButton1.TabIndex = 38;
this.skinButton1.Text = "跳过";
this.skinButton1.UseVisualStyleBackColor = false;
this.skinButton1.Click += new System.EventHandler(this.skinButton1_Click);
//
// uiTitel1
//
this.uiTitel1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(8)))), ((int)(((byte)(31)))), ((int)(((byte)(120)))));
this.uiTitel1.Dock = System.Windows.Forms.DockStyle.Top;
this.uiTitel1.FatherForm = null;
this.uiTitel1.Location = new System.Drawing.Point(0, 0);
this.uiTitel1.Name = "uiTitel1";
this.uiTitel1.Size = new System.Drawing.Size(461, 46);
this.uiTitel1.TabIndex = 37;
//
// backgroundWorker1
//
this.backgroundWorker1.DoWork += new System.ComponentModel.DoWorkEventHandler(this.backgroundWorker1_DoWork);
//
// InitFrm
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(8)))), ((int)(((byte)(31)))), ((int)(((byte)(120)))));
this.ClientSize = new System.Drawing.Size(461, 461);
this.Controls.Add(this.StsTextBox);
this.Controls.Add(this.skinButton1);
this.Controls.Add(this.uiTitel1);
this.Name = "InitFrm";
this.Text = "InitFrm";
this.Load += new System.EventHandler(this.InitFrm_Load);
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.TextBox StsTextBox;
private CCWin.SkinControl.SkinButton skinButton1;
private MaiMuControl.UIKits.MaiMuMenu.UITitel uiTitel1;
private System.ComponentModel.BackgroundWorker backgroundWorker1;
}
}

View File

@ -0,0 +1,122 @@
using GeBoShi.SysCtrl;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace GeBoShi.UI.Load
{
public partial class InitFrm : Form
{
public InitFrm()
{
InitializeComponent();
this.uiTitel1.FatherForm = this;
this.uiTitel1.ShowContrlBox(false, false, true, false);
UIStyle.SetUIStyle(this);
SysMgr.Instance.InitRuning += init_Process;
}
#region
private void init_Process(object sender, InitEventArgs e)
{
ShowInitMessage(e.Message);
if (e.IsInitialized)
{
Thread.Sleep(1000);
CloseWnd();
}
}
private delegate void dSkip_init();
private void Skip_init()
{
if (this.InvokeRequired)
{
dSkip_init d = new dSkip_init(Skip_init);
this.Invoke(d);
}
else
{
this.Cursor = Cursors.Default;
skinButton1.Visible = true;
}
}
private delegate void dCloseWnd();
private void CloseWnd()
{
if (this.InvokeRequired)
{
dCloseWnd d = new dCloseWnd(CloseWnd);
this.Invoke(d);
}
else
{
this.Cursor = Cursors.Default;
SysMgr.Instance.InitRuning -= init_Process;
this.DialogResult = DialogResult.OK;
this.Close();
}
}
private delegate void dShowInitMessage(string message);
private void ShowInitMessage(string message)
{
if (this.InvokeRequired)
{
dShowInitMessage d = new dShowInitMessage(ShowInitMessage);
this.Invoke(d, message);
}
else
{
if (!string.IsNullOrEmpty(StsTextBox.Text))
{
StsTextBox.Text = StsTextBox.Text + "\r\n" + message;
}
else
{ StsTextBox.Text = message; }
StsTextBox.SelectionStart = StsTextBox.Text.Length;
StsTextBox.ScrollToCaret();
}
}
#endregion
private void InitFrm_Load(object sender, EventArgs e)
{
StsTextBox.Text = "";
this.Cursor = Cursors.WaitCursor;
backgroundWorker1.RunWorkerAsync();
skinButton1.Visible = false;
}
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
Thread.Sleep(500);
try
{
if (!SysMgr.Instance.Initial())
Skip_init();
}
catch (Exception ex)
{
//CloseWnd();
}
}
private void skinButton1_Click(object sender, EventArgs e)
{
SysMgr.Instance.InitRuning -= init_Process;
this.DialogResult = DialogResult.OK;
this.Close();
}
}
}

View File

@ -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="backgroundWorker1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
</root>

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,22 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace GeBoShi.UI.SysSet
{
public partial class SysSetFrm : Form
{
public SysSetFrm()
{
InitializeComponent();
UIStyle.SetUIStyle(this);
this.uiTitel1.FatherForm = this;
}
}
}

View File

@ -0,0 +1,282 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="skinTabControl1.PageArrowDown" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABUAAAAiCAYAAACwaJKDAAAABGdBTUEAALGPC/xhBQAAABl0RVh0U29m
dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAD9SURBVEhL1dO7CoJQGMDxtu73+1CBzY31Ck0NvkOb
gzi6+QaCEDgLTqKCEPQIIUGbb+Gui+YXBIc4WcP3DQ0/OJfv/LdTyfO8iu2/ojVsZNE6NrJoAxtZtIkN
oi1sZNE2NrJoBxtEu9gg2vvE9/2JLMtrURQ3LEmSBMdxprw3oDQKwTiOT8X6zirOTAjDDA9E+58EQTBV
FGWbJMm52D+DaZpeVFXdeZ43Y2dZEB2UMQxjaVnWPsuya+Hmuu5B1/UVb/blaxRomiaEYXiMokiBNW+G
BdHhL2zbXpimueTdvYPoCBtZdIwNohNsZFH4bqjIovDdUJFF59j+JZrPH4oDa+C9e8hUAAAAAElFTkSu
QmCC
</value>
</data>
<data name="skinTabControl1.PageArrowHover" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABUAAAAiCAYAAACwaJKDAAAABGdBTUEAALGPC/xhBQAAABl0RVh0U29m
dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAEwSURBVEhLtdNNS4RAAMbxvkBtLxu9UFT0skUv1rZ7
7h77HfZkH0QPeu0mePQgnsSrhCCCN+8e99DVayKhNk+wUDFWh2eFH8yMzh9kmKW2bZfZEF1hW1i0x4bo
Khuia2yIrrMhusGGaJ8N0U02RLfYEN1mQ3SHDdFdNkT32BDd7xLH8amu6/eqqj58JdZGURSdyfYAogdd
TNMcFUXxIsbfHrEWGYYxFkPpPkQPu6RpOtA07bEsy5mYfz5VVb2K4CRJknMxle5D9Og3rusqnudN67p+
a5rmPQiCJ8dxbmXfziF6/BfbtsdZlml5nj9bloXfln43h+jJf4RhqPi+fyd79xOiOEUqRAdsiOIUqRC9
YEP0kg3RKzZEr9kQvWFDVGFDFPeYClFcPSpEh2wLiLbDDwVKnf7UO7t5AAAAAElFTkSuQmCC
</value>
</data>
<data name="skinTabControl1.PageCloseHover" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAYAAABWdVznAAAABGdBTUEAALGPC/xhBQAAAH9JREFUKFNj
+P//P0kYmcMKxXjFYIwzaBiXGFgDyIQzHB2n/4MwiA3DaGJgm1A0cHad+88//T6Q+/8MiAbxsWmAWw9S
JLH653+p9f/BNEwzFMOdhKIJpBiGYWJADFeHophYG0j2A1wDkiQYo4lhehoJ4xJD8TTIBLApuMX+MwAA
JO7ByqoT8QIAAAAASUVORK5CYII=
</value>
</data>
<data name="skinTabControl1.PageCloseNormal" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAYAAABWdVznAAAABGdBTUEAALGPC/xhBQAAAItJREFUKFOd
kbENgDAMBCNRIFExAAUtbYoMQc8A7EHBFKxrfJGxUERjkJ7E9r/fSZKIhMCvUwyK0cC+/8jBqwKCSZEV
RbEoZluJyVOHVwV0yOtxCdBvV2ysrxwieC4oT9EIZxPj5AKssPeODRlH6j4SB2Rmxmg7n5anDu+fQ/gM
bEK3hFXoHQIvLekGBLunGoMvIJEAAAAASUVORK5CYII=
</value>
</data>
<data name="skinTabControl1.PageDown" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAADsAAAAiCAYAAADh/KHgAAAABGdBTUEAALGPC/xhBQAAAOZJREFUaEPl
2KsKQlEURdHrG996BYNgMBgMFoPBYrAYDBaDwWAwGARBEAT//bpXWHC+YXpghhVHPDuLVyqKokFPTmOb
9FJsm16K7dJLsQN6KXZEL8WO6RlbjjGhJ6exU3opdkYvxc7pGVuJsaAnp7FLesZWY6zoyWnsmp6xtRgb
enIKW4+xpSensPrc7ujJaeyenrH6yR/oySlsK8aRnpzC6mxxoiensJ0YZ3pyCqsbzYWenML2YlzpySls
P8aNnpzG3ukZq1Pjg56cwg5jPOnJaeyLnrF5jDc9OY390EuxX3p/hs3yH+t9kV6QtrMcAAAAAElFTkSu
QmCC
</value>
</data>
<data name="skinTabControl1.PageHover" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAADsAAAAiCAYAAADh/KHgAAAABGdBTUEAALGPC/xhBQAAABl0RVh0U29m
dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAEISURBVGhD3dirTkNRFEXRy7NAICGkaaAhvIpC4ZB1
lTgsEolF1lZWIrFIHBKHw2FQqIoKfuGyptjJ/YZ5kimWHHKfJm+lbdtdezgLu2+vi+3bK+xqxpE9nIU9
sdfFXtrrYq/sFXYt49oezsLe2CvsesbYHs7CTuwVdiPj1h5OsJsZd/Zwgu1l3NvDCXYr48EeTrDbGY/2
cILdyXiyhxMsx+3UHk6wexkzezjBcsnP7eEEe5DxbA8nWL4tXuzhBDvIeLWHE+xhxps9nGCHGe/2cII9
zviwh7Own/YKy1fjlz2cYE8zvu3hBHuW8WMPJ9jzjF97OMFeZCzs4Szs0l5hRxl/9pqmGf0Dp89NtaTt
b1AAAAAASUVORK5CYII=
</value>
</data>
<data name="btnClearDefect_Compress_SavePath.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAL
DAAACwwBP0AiyAAAAB90RVh0U29mdHdhcmUATWFjcm9tZWRpYSBGaXJld29ya3MgOLVo0ngAAAJRSURB
VFhHxZfNTsMwEISBtyoXKM3TwIUDTa9U4h8BT8CDAiphd+J118nENlCEpU9q7dmZrZ2mzZ6Mg38mfdN1
XUTGfpjfBfsDbx06HwVY+Fgujjbt4vR9uTgcCH8DvN+Wi9mmbc4k49h5Q4DuPtvmpVs1nfG5aq530ATC
4ZV6v5r3gb6QT3zsBU54o+tBzAImsTp4EG/JnIuuF8q2nzORYjvxnSZcePLJPZop2rgDMyYy5HiwE2HQ
UEcfrjXEy9BM1WpBfw1kulU2q+a2ogmEQ0s8DNtVHUnh1HkZ8qnuVBeKffB221VDag1k9PUYY4PCTsj6
qAlXWwofXk/bBmxCF2ULSztxH0wwEK5zRGvAc1sT83w4UFEwzJ9j2zw67SPTGPAK2kFe8iYSjctbeqmw
NQMePFwZTURqm8hRCFfoZCQ2UThfBmry4QqdTIhNrPLn7IG2HK7QyRGuiex5K9DUhSt0coRrYM1CPdDs
sgEX/swCGdDWNUEnIz8JNyqboJPAhSd/VL4DavNN0MnqcPmqrRW2ZhSaGE1sw9vmiRkafovxmmgMeAXt
IC95g4lgmL+3h3AbVU2Ee0MYMS+G62IwemAGhqyPttTV5o9MvdPa2IAZZG+5LNyw+Yomkp9yLba/ZFes
wJD1qXOM2Dq0xMNAVu/TF71fnBwyoSEFtfd230T2OtJM0fcFhb/lw3Mr4pqYvJ6Gf8unHkxqflIprgl6
XWmm6CDGEOGrF8h3F+f0k3AjNqFe3luyZB0jEcqD41wfIN8u/uDhVDzDw+m8z+v2vgCLN08Z7ifCRgAA
AABJRU5ErkJggg==
</value>
</data>
<data name="btnClearDefect_Small_Path.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAL
DAAACwwBP0AiyAAAAB90RVh0U29mdHdhcmUATWFjcm9tZWRpYSBGaXJld29ya3MgOLVo0ngAAAJRSURB
VFhHxZfNTsMwEISBtyoXKM3TwIUDTa9U4h8BT8CDAiphd+J118nENlCEpU9q7dmZrZ2mzZ6Mg38mfdN1
XUTGfpjfBfsDbx06HwVY+Fgujjbt4vR9uTgcCH8DvN+Wi9mmbc4k49h5Q4DuPtvmpVs1nfG5aq530ATC
4ZV6v5r3gb6QT3zsBU54o+tBzAImsTp4EG/JnIuuF8q2nzORYjvxnSZcePLJPZop2rgDMyYy5HiwE2HQ
UEcfrjXEy9BM1WpBfw1kulU2q+a2ogmEQ0s8DNtVHUnh1HkZ8qnuVBeKffB221VDag1k9PUYY4PCTsj6
qAlXWwofXk/bBmxCF2ULSztxH0wwEK5zRGvAc1sT83w4UFEwzJ9j2zw67SPTGPAK2kFe8iYSjctbeqmw
NQMePFwZTURqm8hRCFfoZCQ2UThfBmry4QqdTIhNrPLn7IG2HK7QyRGuiex5K9DUhSt0coRrYM1CPdDs
sgEX/swCGdDWNUEnIz8JNyqboJPAhSd/VL4DavNN0MnqcPmqrRW2ZhSaGE1sw9vmiRkafovxmmgMeAXt
IC95g4lgmL+3h3AbVU2Ee0MYMS+G62IwemAGhqyPttTV5o9MvdPa2IAZZG+5LNyw+Yomkp9yLba/ZFes
wJD1qXOM2Dq0xMNAVu/TF71fnBwyoSEFtfd230T2OtJM0fcFhb/lw3Mr4pqYvJ6Gf8unHkxqflIprgl6
XWmm6CDGEOGrF8h3F+f0k3AjNqFe3luyZB0jEcqD41wfIN8u/uDhVDzDw+m8z+v2vgCLN08Z7ifCRgAA
AABJRU5ErkJggg==
</value>
</data>
<data name="btnClearDefect_Path.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAL
DAAACwwBP0AiyAAAAB90RVh0U29mdHdhcmUATWFjcm9tZWRpYSBGaXJld29ya3MgOLVo0ngAAAJRSURB
VFhHxZfNTsMwEISBtyoXKM3TwIUDTa9U4h8BT8CDAiphd+J118nENlCEpU9q7dmZrZ2mzZ6Mg38mfdN1
XUTGfpjfBfsDbx06HwVY+Fgujjbt4vR9uTgcCH8DvN+Wi9mmbc4k49h5Q4DuPtvmpVs1nfG5aq530ATC
4ZV6v5r3gb6QT3zsBU54o+tBzAImsTp4EG/JnIuuF8q2nzORYjvxnSZcePLJPZop2rgDMyYy5HiwE2HQ
UEcfrjXEy9BM1WpBfw1kulU2q+a2ogmEQ0s8DNtVHUnh1HkZ8qnuVBeKffB221VDag1k9PUYY4PCTsj6
qAlXWwofXk/bBmxCF2ULSztxH0wwEK5zRGvAc1sT83w4UFEwzJ9j2zw67SPTGPAK2kFe8iYSjctbeqmw
NQMePFwZTURqm8hRCFfoZCQ2UThfBmry4QqdTIhNrPLn7IG2HK7QyRGuiex5K9DUhSt0coRrYM1CPdDs
sgEX/swCGdDWNUEnIz8JNyqboJPAhSd/VL4DavNN0MnqcPmqrRW2ZhSaGE1sw9vmiRkafovxmmgMeAXt
IC95g4lgmL+3h3AbVU2Ee0MYMS+G62IwemAGhqyPttTV5o9MvdPa2IAZZG+5LNyw+Yomkp9yLba/ZFes
wJD1qXOM2Dq0xMNAVu/TF71fnBwyoSEFtfd230T2OtJM0fcFhb/lw3Mr4pqYvJ6Gf8unHkxqflIprgl6
XWmm6CDGEOGrF8h3F+f0k3AjNqFe3luyZB0jEcqD41wfIN8u/uDhVDzDw+m8z+v2vgCLN08Z7ifCRgAA
AABJRU5ErkJggg==
</value>
</data>
<metadata name="toolStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
<data name="tsbtnSave.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAD3SURBVFhH7ZVLDsIwEEN7i0pdsQvcgqNwE46aY/BbAEEe
QSdpYwsIqsSTZjEZ2/WuXWI4b64NJvaHsHp80FMQf2vKJUyANaN293h9+uh9j3jPS3iDp3b3lPSzJUqG
V9T7lN6XwHO7AgmUGN/nDAn1ruqXX8Aj58mGCnIea1AH9ozszhrUgT0ju9cMn+ZfYFkF+kvY2l2cmLyI
GWEarNMF3vi4TbGE3bFOF7D34RR2eKIZjus9/M+/HrBcrPUCWGXoXFooQufSQhE6lxaK0Lm0UITOpYUi
dC4tFKFzaaEInUsLRehcWihC59JCETrXHloPPv/LAl13A1LYVlVnNRG8AAAAAElFTkSuQmCC
</value>
</data>
<data name="tsbtnDataSave.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAD+SURBVFhH7ZZRDoIwEER7FI/iHYz0l5t4ECB80MRjeBSP
osxSmqqgu90agjLJS5DQYdgOBrNpFXK2LrtDddVwtu3O28kFA2ebm4pjc/F2cnW22qfgivqUHAAjmzLl
4m0MbiwOAIOQPBV/wzAFUYCiaV8MhaA38EoKEMamhLy0AYZp1CWf3AGiQnEUv7L4/QMBekNsA5dxHSCv
1ZdQA3mpt4DGOtX2OXIH+Pu3AMfPTX9HWNdDXqsvoQbyUncAY4UJF78OkNd4LjlAphLiQegCjr4RAP8R
dAFHcQAcxy3/RFjXAy982om/iB8CKPB2ci0eAPuuCTH0QLDnm5aTMXdXn0kUg17O3gAAAABJRU5ErkJg
gg==
</value>
</data>
<data name="tsbtnDatImport.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAJaSURBVFhHvZfBSxtBGMXzR/QPqJfSFiEsaZOoDRu1ERJq
YozQlFLUHoJUQbBIQbDx2EMO6i3nnnspePCUgxcR/wdPnrxJC6WlTPNb9wvjZjfZZGf74C1sdua9tzPz
bfgSo6K88ckqre20ujy1i7Xrqerqj8mXpT+pVEoJX9j2X36bmS/+Zky+9u6COc1L9cCVGR2F+sa3dDr7
K7ewqOCb/bba+nrpcPfk2mHzXDmUe569P/zujF2oN5xwaKDlyg7H3Mr602nb/okpYmIyDgmFBmHQRNu1
CQYDeRM/wSgkCNquTTBYNj8BE0TbtQkGg/T9NUU0Qwdg/5c2D4wEYTvRQjN0ACayZ1IBHCKpAkIJdSPu
pQqgmDKXe8aMFMArLKUloSBjhWKGMcTUG/JegGQy+bD7w5UuIkTMO9kE0Xbt7yAhJqq7ncSRUsKp7XYs
IfoCgP8VAh3fACAoRGbzOHKIvirgMoiPSo1eAPiksqXS2Wm18rFlpgqci2YQhs8aLZXN5dV8bdURFerB
xWxoFYwTAJo4E5ECWHt3HyY/4bAcO4AJc1auF2AQJ2eXjJr3VYEfKEPLsjqPC6/PdPOJt1/U83TGOVyx
/RcEmcubi7Dx/wIwzFyfbIL3Aoi5/hbCOMwh2q59MBjkXToTRDN0AFaAfTQRJFQV6GAQEzlETIKxVoEX
EsArHEsV+MEbwCRDBZitLN/wtn4CUcgqhmpMTLZmkG1ga9CcKbwqujaDwTei/OFze265fqvvLYH0g6ib
QJ7p54UlH7k59ULac1ruoPYc6u05rbx/e55I/AOb0atfg4Jn8AAAAABJRU5ErkJggg==
</value>
</data>
<data name="tsbtnExit.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAEySURBVFhH7ZfhDYJADIVJCDoEQR3FUdyEURjFMeCfo2hL
HviQEgo9//EljebZvqvlvIvZwUB7Pd+6qnh2l9M7FOKhXrD1I8XNzGx/NLD1Y5iEArZ+uHjPCNsyv7MH
ZD+hYhDyCBWDrsxfvYe8QvKTooEQ/2hAvGr3fkrdwHimeM+FlA20VfFgP1cTXAAphPjU7LnaBCdDCiNe
/iY4EZIJDhw19sXw0xxiqQlOgmTCeYGY3xWcAMmE83aHTAF2XzgBkgl2uD1uK4xHAKspnAQpjHhNr/il
xRVOhBRCfPyLK5wMaTfWQYSPluECSCHGZ+9ZXEndgKKTwNt1/tHAJlI0sHnsTJIGIh5c7Lq/f9Aa9oDs
Z3ZiBQO2fqQo3R8T+TKw9dOPUDZPgkk0emXD9mCFLPsAVd5Z/YQOzbIAAAAASUVORK5CYII=
</value>
</data>
</root>

View File

@ -0,0 +1,25 @@
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace GeBoShi.UI
{
public class UIStyle
{
public static void SetUIStyle(Form frm)
{
frm.BackColor = Color.FromArgb(8, 31, 120);
frm.FormBorderStyle = FormBorderStyle.None;
frm.StartPosition = FormStartPosition.CenterScreen;
frm.Icon = Properties.Resources.Ge;
frm.ShowIcon = true;
//frm.ForeColor = Color.White;
//frm.MouseMove += Main_MouseMove;
//frm.MouseLeave += Main_Leave; // 有控件在边缘时,处理一下更好一些
}
}
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,6 @@
#Login.ini
[User]
UserCode=admin
UserPw=
IsRememberUserCode=True
IsRememberUserPw=True

View File

@ -0,0 +1,54 @@
#SysParamsConfig.ini
[SaveAllImg]
SaveAllImg=False
[DefectSrcImag]
SavePath=D:\Image\DefectSrcImag
AutoSave=True
AutoDelete=True
AutoDeleteDays=3
[DefectSmallImag]
SavePath=D:\Image\DefectSmallImag
AutoSave=True
AutoDelete=True
AutoDeleteDays=3
[DefectSplicImag]
SavePath=D:\Image\DefectSplicImag
AutoSave=True
AutoDelete=True
AutoDeleteDays=3
[Log]
SavePath=E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\GeBoShi\bin\Debug\LogFiles
AutoDelete=False
AutoDeleteDays=0
[SysFunction]
OpenBuzzer=True
OpenDoor=True
[Dev]
LightCom=
LightComBaud=9600
IODevName=
IOCfgPath=E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\GeBoShi\bin\Debug\ConfigFiles\IOCard_default.xml
[Sys]
AIModelPath=E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\GeBoShi\bin\Debug\ConfigFiles\onnxFiles
ProductPath=E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\GeBoShi\bin\Debug\ConfigFiles\Project
[ShowMainWin]
ShowResetBtn=True
ShowBuzz=False
ShowDoorAlm=False
[CloudAndMES]
OpenCloud=False
CloudThisName=Test
CloudServerIP=127.0.0.1
CloudServerPort=1883
CloudUser=
CloudPassword=
OpenPdtServer=False
PdtServerIP=127.0.0.1
PdtServerPort=10573
IsPdtServer=True
[LabelPrint]
EnableLabelPrint=False
LabelPrinterName=
[ExcelPrint]
EnableExcelPrint=False
ExcelPrinterName=

View File

@ -0,0 +1,38 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8" />
</startup>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Memory" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.1.2" newVersion="4.0.1.2" />
</dependentAssembly>
</assemblyBinding>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
</dependentAssembly>
</assemblyBinding>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Data.SQLite" publicKeyToken="db937bc2d44ff139" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-1.0.102.0" newVersion="1.0.102.0" />
</dependentAssembly>
</assemblyBinding>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-13.0.0.0" newVersion="13.0.0.0" />
</dependentAssembly>
</assemblyBinding>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="MySql.Data" publicKeyToken="c5687fc88969c44d" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-8.1.0.0" newVersion="8.1.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="OpenCvSharp" publicKeyToken="6adad1e807fea099" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-1.0.0.0" newVersion="1.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8" /></startup></configuration>

View File

@ -0,0 +1,929 @@
<?xml version="1.0"?>
<doc>
<assembly>
<name>ImageBox</name>
</assembly>
<members>
<member name="F:ImageToolKits.HPictureBox.components">
<summary>
必需的设计器变量。
</summary>
</member>
<member name="M:ImageToolKits.HPictureBox.Dispose(System.Boolean)">
<summary>
清理所有正在使用的资源。
</summary>
<param name="disposing">如果应释放托管资源,为 true否则为 false。</param>
</member>
<member name="M:ImageToolKits.HPictureBox.InitializeComponent">
<summary>
设计器支持所需的方法 - 不要
使用代码编辑器修改此方法的内容。
</summary>
</member>
<member name="T:ImageToolKits.ImageBox">
<summary>
自制控件
</summary>
</member>
<member name="F:ImageToolKits.ImageBox.img2ClientInit">
<summary>
图像坐标与picturebox的工作区域之间在自适应或等比例缩放时计算出的初始变换矩阵
</summary>
</member>
<member name="F:ImageToolKits.ImageBox.clientPoint">
<summary>
光标在PictureBox工作区域的坐标
</summary>
</member>
<member name="F:ImageToolKits.ImageBox.sSize">
<summary>
表示画ROI时使用的尺寸画点时十字大小的一半或距离点到直线、点到中心的一半或小矩形的尺寸标注角点
</summary>
</member>
<member name="F:ImageToolKits.ImageBox.fillModeTransparent">
<summary>
填充模式下的透明度[0-255]
</summary>
</member>
<member name="F:ImageToolKits.ImageBox.brushWidth">
<summary>
画刷宽度
</summary>
</member>
<member name="F:ImageToolKits.ImageBox.dLayers">
<summary>
绘制的图层集合
</summary>
</member>
<member name="F:ImageToolKits.ImageBox.uvHxy">
<summary>
图像与实际物理坐标系之间的变换关系
</summary>
</member>
<member name="E:ImageToolKits.ImageBox.DrawOverEventHandler">
<summary>
图像窗口交互绘制完成的事件
</summary>
</member>
<member name="P:ImageToolKits.ImageBox.DrawStyle">
<summary>
获取或设置画图风格
</summary>
</member>
<member name="P:ImageToolKits.ImageBox.ColorName">
<summary>
获取或设置区域或轮廓显示的颜色名称
</summary>
</member>
<member name="P:ImageToolKits.ImageBox.IsColored">
<summary>
获取或设置多颜色显示区域或轮廓
</summary>
</member>
<member name="P:ImageToolKits.ImageBox.LineWidth">
<summary>
获取或设置轮廓线的显示宽度
</summary>
</member>
<member name="P:ImageToolKits.ImageBox.BackColor">
<summary>
获取或设置图像控件背景颜色
</summary>
</member>
<member name="P:ImageToolKits.ImageBox.IsShowCenter">
<summary>
是否显示图像中心
</summary>
</member>
<member name="P:ImageToolKits.ImageBox.Image">
<summary>
当前窗口中的图像
</summary>
</member>
<member name="P:ImageToolKits.ImageBox.DrawParam">
<summary>
获取最近一次所画图形
</summary>
</member>
<member name="T:ImageToolKits.ImageBox.CursorModeEnum">
<summary>
光标模式
</summary>
</member>
<member name="F:ImageToolKits.ImageBox.CursorModeEnum.Arrow">
<summary>
选择模式
</summary>
</member>
<member name="F:ImageToolKits.ImageBox.CursorModeEnum.Hand">
<summary>
移动模式,可以拖拽图像
</summary>
</member>
<member name="F:ImageToolKits.ImageBox.CursorModeEnum.Low">
<summary>
低配选点模式
</summary>
</member>
<member name="F:ImageToolKits.ImageBox.CursorModeEnum.Point">
<summary>
高配选点模式
</summary>
</member>
<member name="T:ImageToolKits.ImageBox.ImageModeEnum">
<summary>
图像显示方式枚举
</summary>
</member>
<member name="F:ImageToolKits.ImageBox.ImageModeEnum.Stretch">
<summary>
图像被拉伸或收缩以适应图像窗口大小
</summary>
</member>
<member name="F:ImageToolKits.ImageBox.ImageModeEnum.Zoom">
<summary>
图像大小按其原有的大小比例被增加或减小
</summary>
</member>
<member name="F:ImageToolKits.ImageBox.ImageModeEnum.Part">
<summary>
图像按照原有显示区域显示,局部显示
</summary>
</member>
<member name="T:ImageToolKits.ImageBox.DrawTypeEnum">
<summary>
画图形状枚举
</summary>
</member>
<member name="F:ImageToolKits.ImageBox.DrawTypeEnum.Point">
<summary>
</summary>
</member>
<member name="F:ImageToolKits.ImageBox.DrawTypeEnum.Line">
<summary>
直线
</summary>
</member>
<member name="F:ImageToolKits.ImageBox.DrawTypeEnum.Rectangle1">
<summary>
矩形1与坐标轴平行的矩形
</summary>
</member>
<member name="F:ImageToolKits.ImageBox.DrawTypeEnum.Circle">
<summary>
</summary>
</member>
<member name="F:ImageToolKits.ImageBox.DrawTypeEnum.Xld">
<summary>
任意形状的多边形
</summary>
</member>
<member name="F:ImageToolKits.ImageBox.DrawTypeEnum.Region">
<summary>
任意形状的区域
</summary>
</member>
<member name="F:ImageToolKits.ImageBox.DrawTypeEnum.Brush">
<summary>
画刷区域
</summary>
</member>
<member name="F:ImageToolKits.ImageBox.DrawTypeEnum.None">
<summary>
空状态
</summary>
</member>
<member name="T:ImageToolKits.ImageBox.DrawStyleEnum">
<summary>
画图风格
</summary>
</member>
<member name="F:ImageToolKits.ImageBox.DrawStyleEnum.Margin">
<summary>
轮廓显示
</summary>
</member>
<member name="F:ImageToolKits.ImageBox.DrawStyleEnum.Fill">
<summary>
填充显示
</summary>
</member>
<member name="T:ImageToolKits.ImageBox.DrawStatusEnum">
<summary>
绘制图形的状态枚举
</summary>
</member>
<member name="F:ImageToolKits.ImageBox.DrawStatusEnum.Start">
<summary>
开始绘制
</summary>
</member>
<member name="F:ImageToolKits.ImageBox.DrawStatusEnum.Drawing">
<summary>
正在绘制
</summary>
</member>
<member name="F:ImageToolKits.ImageBox.DrawStatusEnum.Over">
<summary>
绘制完成
</summary>
</member>
<member name="T:ImageToolKits.ImageBox.BaseDrawParam">
<summary>
图像坐标系下图形结构体参数基类
</summary>
</member>
<member name="P:ImageToolKits.ImageBox.BaseDrawParam.DrawType">
<summary>
图形绘制类型
</summary>
</member>
<member name="P:ImageToolKits.ImageBox.BaseDrawParam.SmallestRectangle1">
<summary>
读取图形的平行于坐标轴的最小外接矩形
</summary>
</member>
<member name="M:ImageToolKits.ImageBox.BaseDrawParam.IsValid">
<summary>
绘制的图形是否有效
</summary>
<returns></returns>
</member>
<member name="T:ImageToolKits.ImageBox.ColorDrawParam">
<summary>
区域+颜色类型
</summary>
</member>
<member name="T:ImageToolKits.ImageBox.Point">
<summary>
点类型
</summary>
</member>
<member name="P:ImageToolKits.ImageBox.Point.Row">
<summary>
点行坐标
</summary>
</member>
<member name="P:ImageToolKits.ImageBox.Point.Column">
<summary>
点列坐标
</summary>
</member>
<member name="P:ImageToolKits.ImageBox.Point.DrawType">
<summary>
图形类型其值为【Point】
</summary>
</member>
<member name="P:ImageToolKits.ImageBox.Point.SmallestRectangle1">
<summary>
点的平行于坐标轴的最小外界矩形(无效结果)
</summary>
</member>
<member name="M:ImageToolKits.ImageBox.Point.IsValid">
<summary>
图形是否有效
</summary>
<returns></returns>
</member>
<member name="T:ImageToolKits.ImageBox.Line">
<summary>
线类型
</summary>
</member>
<member name="P:ImageToolKits.ImageBox.Line.Start">
<summary>
线段的起点坐标
</summary>
</member>
<member name="P:ImageToolKits.ImageBox.Line.End">
<summary>
线段的终点坐标
</summary>
</member>
<member name="P:ImageToolKits.ImageBox.Line.DrawType">
<summary>
图形类型其值为【Line】
</summary>
</member>
<member name="P:ImageToolKits.ImageBox.Line.SmallestRectangle1">
<summary>
线的平行于坐标轴的最小外界矩形(无效结果)
</summary>
</member>
<member name="M:ImageToolKits.ImageBox.Line.IsValid">
<summary>
图形是否有效
</summary>
<returns></returns>
</member>
<member name="T:ImageToolKits.ImageBox.Rectangle1">
<summary>
平行于坐标轴的矩形类型
</summary>
</member>
<member name="P:ImageToolKits.ImageBox.Rectangle1.LeftUp">
<summary>
矩形左上角顶点坐标
</summary>
</member>
<member name="P:ImageToolKits.ImageBox.Rectangle1.RightDown">
<summary>
矩形右下角顶点坐标
</summary>
</member>
<member name="P:ImageToolKits.ImageBox.Rectangle1.Width">
<summary>
矩形宽
</summary>
</member>
<member name="P:ImageToolKits.ImageBox.Rectangle1.Height">
<summary>
矩形高
</summary>
</member>
<member name="P:ImageToolKits.ImageBox.Rectangle1.DrawType">
<summary>
图形类型其值为【Rectangle1】
</summary>
</member>
<member name="P:ImageToolKits.ImageBox.Rectangle1.SmallestRectangle1">
<summary>
矩形的平行于坐标轴的最小外界矩形
</summary>
</member>
<member name="M:ImageToolKits.ImageBox.Rectangle1.IsValid">
<summary>
图形是否有效
</summary>
<returns></returns>
</member>
<member name="T:ImageToolKits.ImageBox.Circle">
<summary>
圆类型
</summary>
</member>
<member name="P:ImageToolKits.ImageBox.Circle.Center">
<summary>
圆心点坐标
</summary>
</member>
<member name="P:ImageToolKits.ImageBox.Circle.Radius">
<summary>
圆半径
</summary>
</member>
<member name="P:ImageToolKits.ImageBox.Circle.DrawType">
<summary>
图形类型其值为【Circle】
</summary>
</member>
<member name="P:ImageToolKits.ImageBox.Circle.SmallestRectangle1">
<summary>
圆的平行于坐标轴的最小外界矩形
</summary>
</member>
<member name="M:ImageToolKits.ImageBox.Circle.IsValid">
<summary>
图形是否有效
</summary>
<returns></returns>
</member>
<member name="T:ImageToolKits.ImageBox.Xld">
<summary>
多边形类型
</summary>
</member>
<member name="P:ImageToolKits.ImageBox.Xld.Corners">
<summary>
多边形角点坐标集合
</summary>
</member>
<member name="P:ImageToolKits.ImageBox.Xld.DrawType">
<summary>
图形类型其值为【Xld】
</summary>
</member>
<member name="P:ImageToolKits.ImageBox.Xld.SmallestRectangle1">
<summary>
多边形的平行于坐标轴的最小外界矩形
</summary>
</member>
<member name="M:ImageToolKits.ImageBox.Xld.IsValid">
<summary>
图形是否有效
</summary>
<returns></returns>
</member>
<member name="T:ImageToolKits.ImageBox.Region">
<summary>
区域类型
</summary>
</member>
<member name="P:ImageToolKits.ImageBox.Region.Points">
<summary>
区域轮廓点的集合
</summary>
</member>
<member name="P:ImageToolKits.ImageBox.Region.DrawType">
<summary>
图形类型其值为【Region】
</summary>
</member>
<member name="P:ImageToolKits.ImageBox.Region.SmallestRectangle1">
<summary>
任意区域的平行于坐标轴的最小外界矩形
</summary>
</member>
<member name="M:ImageToolKits.ImageBox.Region.IsValid">
<summary>
图形是否有效
</summary>
<returns></returns>
</member>
<member name="T:ImageToolKits.ImageBox.Brush">
<summary>
画刷区域类型
</summary>
</member>
<member name="P:ImageToolKits.ImageBox.Brush.Regions">
<summary>
区域轮廓点的集合
</summary>
</member>
<member name="P:ImageToolKits.ImageBox.Brush.DrawType">
<summary>
图形类型其值为【Region】
</summary>
</member>
<member name="P:ImageToolKits.ImageBox.Brush.SmallestRectangle1">
<summary>
画刷区域的平行于坐标轴的最小外界矩形
</summary>
</member>
<member name="M:ImageToolKits.ImageBox.Brush.IsValid">
<summary>
图形是否有效
</summary>
<returns></returns>
</member>
<member name="M:ImageToolKits.ImageBox.InitImage2ClientMatrix">
<summary>
图像到初始化图像控件的变换矩阵
</summary>
</member>
<member name="M:ImageToolKits.ImageBox.GetImageRectangle(System.Windows.Forms.PictureBox)">
<summary>
获取图像在控件上Client区域
</summary>
<param name="picBox"></param>
<returns></returns>
</member>
<member name="M:ImageToolKits.ImageBox.ShowCenter">
<summary>
显示中心,有图像时显示的是图像的中心,否则显示图像窗口的中心
</summary>
</member>
<member name="M:ImageToolKits.ImageBox.AddROI2GraphicsPath(System.Drawing.Drawing2D.GraphicsPath,System.Drawing.Drawing2D.GraphicsPath,System.Collections.Generic.Dictionary{System.Int32,ImageToolKits.ImageBox.DrawPoint},ImageToolKits.ImageBox.DrawTypeEnum,System.Boolean)">
<summary>
根据drawPoints绘制ROI,添加到GraphicsPath中
</summary>
<param name="gpROI">ROI图形路径</param>
<param name="gpInteractive">交互图形路径</param>
<param name="drawPoints">轮廓点集合</param>
<param name="drawType">图形类型</param>
<param name="isDrawing">是否是交互绘制</param>
</member>
<member name="M:ImageToolKits.ImageBox.AddROI2GraphicsPath(System.Drawing.Drawing2D.GraphicsPath,System.Drawing.Drawing2D.GraphicsPath,ImageToolKits.ImageBox.BaseDrawParam)">
<summary>
根据drawParam绘制ROI,添加到GraphicsPath中
</summary>
<param name="gpROI">ROI图形路径</param>
<param name="gpInteractive">交互图形路径</param>
<param name="baseDrawPrm">ROI</param>
</member>
<member name="M:ImageToolKits.ImageBox.DrawROIByGraphicsPath(System.Drawing.Graphics,System.Drawing.Drawing2D.GraphicsPath,System.Drawing.Drawing2D.GraphicsPath)">
<summary>
根据绘图路径绘制ROI
</summary>
<param name="g"></param>
<param name="gpROI">ROI图形路径</param>
<param name="gpInteractive">交互图形路径</param>
</member>
<member name="M:ImageToolKits.ImageBox.DrawROIByGraphicsPath(System.Drawing.Graphics,System.Drawing.Drawing2D.GraphicsPath,System.Drawing.Drawing2D.GraphicsPath,System.Drawing.Color)">
<summary>
根据绘图路径绘制ROI
</summary>
<param name="g"></param>
<param name="gpROI">ROI图形路径</param>
<param name="gpInteractive">交互图形路径</param>
<param name="color">颜色</param>
</member>
<member name="M:ImageToolKits.ImageBox.GetInsideIndex(System.Drawing.PointF)">
<summary>
计算某个点是否在某些点内部
</summary>
<param name="point"></param>
<returns></returns>
</member>
<member name="M:ImageToolKits.ImageBox.InsertXldCornerPoints(ImageToolKits.ImageBox.DrawPoint,System.Int32@,System.Collections.Generic.Dictionary{System.Int32,ImageToolKits.ImageBox.DrawPoint}@)">
<summary>
在画xld时判断是否将新增点插入某两个点中间
前提是新增点不在原有角点附近
</summary>
<param name="point"></param>
<param name="insideIndex">更新后该点在点集合中的索引位置</param>
<param name="dDrawPoint"></param>
</member>
<member name="M:ImageToolKits.ImageBox.GetImageCoord(System.Drawing.PointF)">
<summary>
获取鼠标指针在图像中的坐标
</summary>
<returns></returns>
</member>
<member name="M:ImageToolKits.ImageBox.GetClientCoord(ImageToolKits.ImageBox.Point)">
<summary>
获取图形点位在控件工作区域内坐标
</summary>
<param name="imagePoint"></param>
<returns></returns>
</member>
<member name="M:ImageToolKits.ImageBox.TransToDrawParam(System.Collections.Generic.Dictionary{System.Int32,ImageToolKits.ImageBox.DrawPoint},ImageToolKits.ImageBox.DrawTypeEnum)">
<summary>
将控件坐标转换成图像坐标
</summary>
</member>
<member name="M:ImageToolKits.ImageBox.TransFromDrawParam(ImageToolKits.ImageBox.BaseDrawParam,System.Boolean)">
<summary>
将图形坐标转换成控件坐标
</summary>
<param name="drawPrm"></param>
<param name="cvt2client"></param>
<returns></returns>
</member>
<member name="M:ImageToolKits.ImageBox.Get2DGrayval(OpenCvSharp.Mat,System.Int32,System.Int32)">
<summary>
获取图像灰度信息
</summary>
<param name="image"></param>
<param name="row"></param>
<param name="column"></param>
<returns></returns>
</member>
<member name="M:ImageToolKits.ImageBox.GetCirclePointsF(ImageToolKits.ImageBox.Circle,System.Single,System.Single,System.Single)">
<summary>
获取圆上离散点坐标
</summary>
<param name="circle"></param>
<param name="angleStart">起始角度,单位:°</param>
<param name="angleExtent">角度范围,单位:°</param>
<param name="angleStep">离散点获取的步长,单位:°</param>
<returns></returns>
</member>
<member name="M:ImageToolKits.ImageBox.GetCirclePoints(ImageToolKits.ImageBox.Circle,System.Single,System.Single,System.Single)">
<summary>
获取圆上离散点坐标
</summary>
<param name="circle"></param>
<param name="angleStart">起始角度,单位:°</param>
<param name="angleExtent">角度范围,单位:°</param>
<param name="angleStep">离散点获取的步长,单位:°</param>
<returns></returns>
</member>
<member name="M:ImageToolKits.ImageBox.GetCirclePointsFExt(ImageToolKits.ImageBox.Circle,System.Single,System.Single,System.Single)">
<summary>
获取圆上离散点坐标
</summary>
<param name="circle"></param>
<param name="angleStart">起始角度,单位:°</param>
<param name="angleExtent">角度范围,单位:°</param>
<param name="angleStep">离散点获取的步长,单位:°</param>
<returns>Point类型</returns>
</member>
<member name="M:ImageToolKits.ImageBox.GetLineAngle(System.Drawing.PointF,System.Drawing.PointF,System.Boolean)">
<summary>
计算线段角度(起点到终点方向),单位:°
</summary>
<param name="start">线段起点</param>
<param name="end">线段终点</param>
<param name="isNormalized">默认角度范围是[-180,180],归一化之后为[-90,90]</param>
<returns>返回线段角度,单位:°</returns>
</member>
<member name="M:ImageToolKits.ImageBox.GetBrushEdgePointsBySkelton(System.Collections.Generic.Dictionary{System.Int32,ImageToolKits.ImageBox.DrawPoint})">
<summary>
根据骨架线计算包围轮廓线
</summary>
<param name="drawPoints"></param>
<returns></returns>
</member>
<member name="M:ImageToolKits.ImageBox.GetMeanPoint(ImageToolKits.ImageBox.Point,ImageToolKits.ImageBox.Point)">
<summary>
计算两点中点迭代计算任意两点间被N等分点
</summary>
<param name="start"></param>
<param name="end"></param>
<returns></returns>
</member>
<member name="M:ImageToolKits.ImageBox.GetRegionPoints1(ImageToolKits.ImageBox.BaseDrawParam)">
<summary>
获取区域包含的点坐标
</summary>
<param name="baseDrawPrm"></param>
<returns></returns>
</member>
<member name="M:ImageToolKits.ImageBox.GetRegionPolygon(ImageToolKits.ImageBox.BaseDrawParam)">
<summary>
获取轮廓占据的像素点(包含像素去重)
</summary>
<param name="baseDrawParam"></param>
<returns></returns>
</member>
<member name="M:ImageToolKits.ImageBox.GetRegionRuns(System.Collections.Generic.List{ImageToolKits.ImageBox.Point})">
<summary>
获取区域Runs默认输入的点已经去重处理
</summary>
<param name="points"></param>
<returns></returns>
</member>
<member name="M:ImageToolKits.ImageBox.Dispose">
<summary>
释放控件占用的所有资源
</summary>
</member>
<member name="M:ImageToolKits.ImageBox.SetStripVisible(System.Boolean)">
<summary>
设置右键菜单栏中选项是否可见
</summary>
</member>
<member name="M:ImageToolKits.ImageBox.SetIconsVisible(System.Boolean)">
<summary>
设置左侧交互按钮是否可见
</summary>
<param name="isVisible"></param>
</member>
<member name="M:ImageToolKits.ImageBox.SetStatusVisible(System.Boolean)">
<summary>
设置底部图像信息栏是否可见
</summary>
<param name="isVisible"></param>
</member>
<member name="M:ImageToolKits.ImageBox.SetInteractive(System.Boolean)">
<summary>
设置图像窗口是否激活,
显示图像和区域之前不需要激活图像控件
显示图像和区域之后需要激活图像控件
</summary>
<param name="isActive"></param>
</member>
<member name="M:ImageToolKits.ImageBox.ClearWindow">
<summary>
清除图像窗口,图像数据并未清除
</summary>
</member>
<member name="M:ImageToolKits.ImageBox.ReadImage(System.String,OpenCvSharp.Mat@)">
<summary>
加载图像
</summary>
<param name="fileName">图像路径,需要是英文路径</param>
<param name="image">图像Mat</param>
<returns></returns>
</member>
<member name="M:ImageToolKits.ImageBox.WriteImage(System.String,OpenCvSharp.Mat)">
<summary>
保存图像
</summary>
<param name="fileName">图像路径,需要时英文路径</param>
<param name="image">图像Mat</param>
<returns></returns>
</member>
<member name="M:ImageToolKits.ImageBox.WriteWindowDumpImage(System.String,System.Drawing.Size)">
<summary>
截图当前窗口
</summary>
<param name="fileName"></param>
<param name="size"></param>
<returns></returns>
</member>
<member name="M:ImageToolKits.ImageBox.WriteWindowDumpImage(System.String,OpenCvSharp.Mat,System.Collections.Generic.List{ImageToolKits.ImageBox.BaseDrawParam},System.Drawing.Size)">
<summary>
将区域信息绘制在图像上保存
</summary>
<param name="fileName"></param>
<param name="image"></param>
<param name="region"></param>
<param name="size"></param>
<returns></returns>
</member>
<member name="M:ImageToolKits.ImageBox.RefreshWindow(OpenCvSharp.Mat,System.Collections.Generic.List{ImageToolKits.ImageBox.BaseDrawParam},ImageToolKits.ImageBox.ImageModeEnum)">
<summary>
显示图像与区域
</summary>
<param name="image">图像</param>
<param name="region">一个或多个区域</param>
<param name="imageMode">图像显示方式见枚举ImageModeEnum</param>
</member>
<member name="M:ImageToolKits.ImageBox.RefreshWindow(OpenCvSharp.Mat,System.Collections.Generic.List{ImageToolKits.ImageBox.ColorDrawParam},ImageToolKits.ImageBox.ImageModeEnum)">
<summary>
显示图像与区域
</summary>
<param name="image">图像</param>
<param name="colorRegion">一个或多个不同颜色区域</param>
<param name="imageMode">图像显示方式见枚举ImageModeEnum</param>
</member>
<member name="M:ImageToolKits.ImageBox.RefreshWindow(OpenCvSharp.Mat,ImageToolKits.ImageBox.BaseDrawParam,ImageToolKits.ImageBox.ImageModeEnum)">
<summary>
显示图像与区域
</summary>
<param name="image">图像</param>
<param name="region">一个区域</param>
<param name="imageMode">图像显示方式见枚举ImageModeEnum</param>
</member>
<member name="M:ImageToolKits.ImageBox.RefreshWindow(OpenCvSharp.Mat,ImageToolKits.ImageBox.ImageModeEnum)">
<summary>
显示图像与区域
</summary>
<param name="image">图像</param>
<param name="imageMode">图像显示方式见枚举ImageModeEnum</param>
</member>
<member name="M:ImageToolKits.ImageBox.DisplayROIs(System.Collections.Generic.List{ImageToolKits.ImageBox.BaseDrawParam})">
<summary>
显示多个区域
</summary>
<param name="lDrawParam">多个区域</param>
</member>
<member name="M:ImageToolKits.ImageBox.DisplayROIs(System.Collections.Generic.List{ImageToolKits.ImageBox.ColorDrawParam})">
<summary>
显示多个区域分色
</summary>
<param name="lDrawParam">多个区域</param>
</member>
<member name="M:ImageToolKits.ImageBox.DisplayROI(ImageToolKits.ImageBox.BaseDrawParam)">
<summary>
显示一个区域
</summary>
<param name="drawParam">一个区域</param>
</member>
<member name="M:ImageToolKits.ImageBox.GetPart(ImageToolKits.ImageBox.Rectangle1@)">
<summary>
获取当前图像显示的局部位置
</summary>
<param name="rectangle">图像局部范围</param>
</member>
<member name="M:ImageToolKits.ImageBox.SetPart(ImageToolKits.ImageBox.Rectangle1)">
<summary>
设置图像显示的局部位置
</summary>
<param name="rectangle">图像局部范围</param>
</member>
<member name="M:ImageToolKits.ImageBox.SmallestRectangle1(System.Collections.Generic.List{ImageToolKits.ImageBox.BaseDrawParam})">
<summary>
计算ROI集合的平行于坐标轴的最小外接矩形
</summary>
<param name="lDrawPrm"></param>
<returns>平行于坐标轴的最小外接矩形</returns>
</member>
<member name="M:ImageToolKits.ImageBox.GetRegionPoints(ImageToolKits.ImageBox.BaseDrawParam)">
<summary>
获取区域包含的点坐标
</summary>
<param name="baseDrawPrm"></param>
<returns></returns>
</member>
<member name="M:ImageToolKits.ImageBox.SetLowLevelMode(System.Int32)">
<summary>
特色功能低配置版,只能放大缩小,移动,取点
</summary>
</member>
<member name="F:ImageToolKits.ImageBox.components">
<summary>
必需的设计器变量。
</summary>
</member>
<member name="M:ImageToolKits.ImageBox.Dispose(System.Boolean)">
<summary>
清理所有正在使用的资源。
</summary>
<param name="disposing">如果应释放托管资源,为 true否则为 false。</param>
</member>
<member name="M:ImageToolKits.ImageBox.InitializeComponent">
<summary>
设计器支持所需的方法 - 不要
使用代码编辑器修改此方法的内容。
</summary>
</member>
<member name="T:ImageToolKits.Layer">
<summary>
图层
</summary>
</member>
<member name="F:ImageToolKits.Layer.uvHxy">
<summary>
图像与实际物理坐标系之间的变换关系
</summary>
</member>
<member name="P:ImageToolKits.Layer.CurPosize">
<summary>
获取图形当前位姿与尺寸信息
</summary>
</member>
<member name="P:ImageToolKits.Layer.Name">
<summary>
图层ID
</summary>
</member>
<member name="P:ImageToolKits.Layer.Image">
<summary>
图层需要显示的对象
</summary>
</member>
<member name="P:ImageToolKits.Layer.IsActive">
<summary>
图层对象是否激活
</summary>
</member>
<member name="P:ImageToolKits.Layer.DrawPoints">
<summary>
代表图形变换后需要绘制的区域的点单位像素长度为4
</summary>
</member>
<member name="P:ImageToolKits.Layer.TrackPoints">
<summary>
突出显示当前图形的顶点坐标单位像素长度为4
</summary>
</member>
<member name="M:ImageToolKits.Layer.#ctor(OpenCvSharp.Mat,System.String,ImageToolKits.PoseSize,System.Drawing.Drawing2D.Matrix)">
<summary>
</summary>
<param name="image">cv mat</param>
<param name="name">图层名称</param>
<param name="srcPosize">图形原始位姿和尺寸信息</param>
<param name="uvHxy">图像与实际物理坐标系之间的变换关系</param>
</member>
<member name="M:ImageToolKits.Layer.#ctor(System.Drawing.Bitmap,System.String,ImageToolKits.PoseSize,System.Drawing.Drawing2D.Matrix)">
<summary>
</summary>
<param name="image">bitmap image</param>
<param name="name">图层名称</param>
<param name="srcPosize">图形原始位姿和尺寸信息</param>
<param name="uvHxy">图像与实际物理坐标系之间的变换关系</param>
</member>
<member name="M:ImageToolKits.Layer.Trans2Transparent">
<summary>
将ezcad四通道图形转成透明图形
</summary>
<returns></returns>
</member>
<member name="M:ImageToolKits.Layer.GraphTransform(ImageToolKits.PoseSize,System.Boolean)">
<summary>
图形变换
</summary>
<param name="posize">图形位姿和尺寸信息</param>
<param name="isRotation">是否旋转图形true只旋转图形false缩放和平移图形</param>
</member>
<member name="T:ImageToolKits.PoseSize">
<summary>
图形的位姿和尺寸类
</summary>
</member>
<member name="P:ImageToolKits.PoseSize.X">
<summary>
图形位置X单位mm
</summary>
</member>
<member name="P:ImageToolKits.PoseSize.Y">
<summary>
图形位置Y单位mm
</summary>
</member>
<member name="P:ImageToolKits.PoseSize.Angle">
<summary>
图形角度,单位角度
</summary>
</member>
<member name="P:ImageToolKits.PoseSize.Size">
<summary>
图形尺寸单位mm
</summary>
</member>
<member name="T:ImageToolKits.Properties.Resources">
<summary>
一个强类型的资源类,用于查找本地化的字符串等。
</summary>
</member>
<member name="P:ImageToolKits.Properties.Resources.ResourceManager">
<summary>
返回此类使用的缓存的 ResourceManager 实例。
</summary>
</member>
<member name="P:ImageToolKits.Properties.Resources.Culture">
<summary>
重写当前线程的 CurrentUICulture 属性,对
使用此强类型资源类的所有资源查找执行重写。
</summary>
</member>
</members>
</doc>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,245 @@
<?xml version="1.0"?>
<doc>
<assembly>
<name>K4os.Hash.xxHash</name>
</assembly>
<members>
<member name="T:K4os.Hash.xxHash.HashAlgorithmAdapter">
<summary>
Adapter implementing <see cref="T:System.Security.Cryptography.HashAlgorithm"/>
</summary>
</member>
<member name="M:K4os.Hash.xxHash.HashAlgorithmAdapter.#ctor(System.Int32,System.Action,System.Action{System.Byte[],System.Int32,System.Int32},System.Func{System.Byte[]})">
<summary>
Creates new <see cref="T:K4os.Hash.xxHash.HashAlgorithmAdapter"/>.
</summary>
<param name="hashSize">Hash size (in bytes)</param>
<param name="reset">Reset function.</param>
<param name="update">Update function.</param>
<param name="digest">Digest function.</param>
</member>
<member name="P:K4os.Hash.xxHash.HashAlgorithmAdapter.HashSize">
<inheritdoc />
</member>
<member name="P:K4os.Hash.xxHash.HashAlgorithmAdapter.Hash">
<inheritdoc />
</member>
<member name="M:K4os.Hash.xxHash.HashAlgorithmAdapter.HashCore(System.Byte[],System.Int32,System.Int32)">
<inheritdoc />
</member>
<member name="M:K4os.Hash.xxHash.HashAlgorithmAdapter.HashFinal">
<inheritdoc />
</member>
<member name="M:K4os.Hash.xxHash.HashAlgorithmAdapter.Initialize">
<inheritdoc />
</member>
<member name="T:K4os.Hash.xxHash.XXH">
<summary>
Base class for both <see cref="T:K4os.Hash.xxHash.XXH32"/> and <see cref="T:K4os.Hash.xxHash.XXH64"/>. Do not use directly.
</summary>
</member>
<member name="M:K4os.Hash.xxHash.XXH.#ctor">
<summary>Protected constructor to prevent instantiation.</summary>
</member>
<member name="T:K4os.Hash.xxHash.XXH32">
<summary>
xxHash 32-bit.
</summary>
</member>
<member name="T:K4os.Hash.xxHash.XXH32.State">
<summary>Internal state of the algorithm.</summary>
</member>
<member name="F:K4os.Hash.xxHash.XXH32.EmptyHash">
<summary>Hash of empty buffer.</summary>
</member>
<member name="M:K4os.Hash.xxHash.XXH32.DigestOf(System.Void*,System.Int32)">
<summary>Hash of provided buffer.</summary>
<param name="bytes">Buffer.</param>
<param name="length">Length of buffer.</param>
<returns>Digest.</returns>
</member>
<member name="M:K4os.Hash.xxHash.XXH32.DigestOf(System.Void*,System.Int32,System.UInt32)">
<summary>Hash of provided buffer.</summary>
<param name="bytes">Buffer.</param>
<param name="length">Length of buffer.</param>
<param name="seed">Seed.</param>
<returns>Digest.</returns>
</member>
<member name="M:K4os.Hash.xxHash.XXH32.DigestOf(System.ReadOnlySpan{System.Byte})">
<summary>Hash of provided buffer.</summary>
<param name="bytes">Buffer.</param>
<returns>Digest.</returns>
</member>
<member name="M:K4os.Hash.xxHash.XXH32.DigestOf(System.Byte[],System.Int32,System.Int32)">
<summary>Hash of provided buffer.</summary>
<param name="bytes">Buffer.</param>
<param name="offset">Starting offset.</param>
<param name="length">Length of buffer.</param>
<returns>Digest.</returns>
</member>
<member name="M:K4os.Hash.xxHash.XXH32.#ctor">
<summary>Creates xxHash instance.</summary>
</member>
<member name="M:K4os.Hash.xxHash.XXH32.#ctor(System.UInt32)">
<summary>Creates xxHash instance.</summary>
</member>
<member name="M:K4os.Hash.xxHash.XXH32.Reset">
<summary>Resets hash calculation.</summary>
</member>
<member name="M:K4os.Hash.xxHash.XXH32.Reset(System.UInt32)">
<summary>Resets hash calculation.</summary>
</member>
<member name="M:K4os.Hash.xxHash.XXH32.Update(System.Void*,System.Int32)">
<summary>Updates the hash using given buffer.</summary>
<param name="bytes">Buffer.</param>
<param name="length">Length of buffer.</param>
</member>
<member name="M:K4os.Hash.xxHash.XXH32.Update(System.Byte*,System.Int32)">
<summary>Updates the hash using given buffer.</summary>
<param name="bytes">Buffer.</param>
<param name="length">Length of buffer.</param>
</member>
<member name="M:K4os.Hash.xxHash.XXH32.Update(System.ReadOnlySpan{System.Byte})">
<summary>Updates the has using given buffer.</summary>
<param name="bytes">Buffer.</param>
</member>
<member name="M:K4os.Hash.xxHash.XXH32.Update(System.Byte[],System.Int32,System.Int32)">
<summary>Updates the has using given buffer.</summary>
<param name="bytes">Buffer.</param>
<param name="offset">Starting offset.</param>
<param name="length">Length of buffer.</param>
</member>
<member name="M:K4os.Hash.xxHash.XXH32.Digest">
<summary>Hash so far.</summary>
<returns>Hash so far.</returns>
</member>
<member name="M:K4os.Hash.xxHash.XXH32.DigestBytes">
<summary>Hash so far, as byte array.</summary>
<returns>Hash so far.</returns>
</member>
<member name="M:K4os.Hash.xxHash.XXH32.AsHashAlgorithm">
<summary>Converts this class to <see cref="T:System.Security.Cryptography.HashAlgorithm"/></summary>
<returns><see cref="T:System.Security.Cryptography.HashAlgorithm"/></returns>
</member>
<member name="M:K4os.Hash.xxHash.XXH32.Reset(K4os.Hash.xxHash.XXH32.State@,System.UInt32)">
<summary>Resets hash calculation.</summary>
<param name="state">Hash state.</param>
<param name="seed">Hash seed.</param>
</member>
<member name="M:K4os.Hash.xxHash.XXH32.Update(K4os.Hash.xxHash.XXH32.State@,System.Void*,System.Int32)">
<summary>Updates the has using given buffer.</summary>
<param name="state">Hash state.</param>
<param name="bytes">Buffer.</param>
<param name="length">Length of buffer.</param>
</member>
<member name="M:K4os.Hash.xxHash.XXH32.Update(K4os.Hash.xxHash.XXH32.State@,System.ReadOnlySpan{System.Byte})">
<summary>Updates the has using given buffer.</summary>
<param name="state">Hash state.</param>
<param name="bytes">Buffer.</param>
</member>
<member name="M:K4os.Hash.xxHash.XXH32.Digest(K4os.Hash.xxHash.XXH32.State@)">
<summary>Hash so far.</summary>
<returns>Hash so far.</returns>
</member>
<member name="T:K4os.Hash.xxHash.XXH64">
<summary>
xxHash 64-bit.
</summary>
</member>
<member name="T:K4os.Hash.xxHash.XXH64.State">
<summary>Internal state of the algorithm.</summary>
</member>
<member name="F:K4os.Hash.xxHash.XXH64.EmptyHash">
<summary>Hash of empty buffer.</summary>
</member>
<member name="M:K4os.Hash.xxHash.XXH64.DigestOf(System.Void*,System.Int32)">
<summary>Hash of provided buffer.</summary>
<param name="bytes">Buffer.</param>
<param name="length">Length of buffer.</param>
<returns>Digest.</returns>
</member>
<member name="M:K4os.Hash.xxHash.XXH64.DigestOf(System.Void*,System.Int32,System.UInt64)">
<summary>Hash of provided buffer.</summary>
<param name="bytes">Buffer.</param>
<param name="length">Length of buffer.</param>
<param name="seed">Seed.</param>
<returns>Digest.</returns>
</member>
<member name="M:K4os.Hash.xxHash.XXH64.DigestOf(System.ReadOnlySpan{System.Byte})">
<summary>Hash of provided buffer.</summary>
<param name="bytes">Buffer.</param>
<returns>Digest.</returns>
</member>
<member name="M:K4os.Hash.xxHash.XXH64.DigestOf(System.Byte[],System.Int32,System.Int32)">
<summary>Hash of provided buffer.</summary>
<param name="bytes">Buffer.</param>
<param name="offset">Starting offset.</param>
<param name="length">Length of buffer.</param>
<returns>Digest.</returns>
</member>
<member name="M:K4os.Hash.xxHash.XXH64.#ctor">
<summary>Creates xxHash instance.</summary>
</member>
<member name="M:K4os.Hash.xxHash.XXH64.#ctor(System.UInt64)">
<summary>Creates xxHash instance.</summary>
</member>
<member name="M:K4os.Hash.xxHash.XXH64.Reset">
<summary>Resets hash calculation.</summary>
</member>
<member name="M:K4os.Hash.xxHash.XXH64.Reset(System.UInt64)">
<summary>Resets hash calculation.</summary>
</member>
<member name="M:K4os.Hash.xxHash.XXH64.Update(System.Void*,System.Int32)">
<summary>Updates the hash using given buffer.</summary>
<param name="bytes">Buffer.</param>
<param name="length">Length of buffer.</param>
</member>
<member name="M:K4os.Hash.xxHash.XXH64.Update(System.Byte*,System.Int32)">
<summary>Updates the hash using given buffer.</summary>
<param name="bytes">Buffer.</param>
<param name="length">Length of buffer.</param>
</member>
<member name="M:K4os.Hash.xxHash.XXH64.Update(System.ReadOnlySpan{System.Byte})">
<summary>Updates the has using given buffer.</summary>
<param name="bytes">Buffer.</param>
</member>
<member name="M:K4os.Hash.xxHash.XXH64.Update(System.Byte[],System.Int32,System.Int32)">
<summary>Updates the has using given buffer.</summary>
<param name="bytes">Buffer.</param>
<param name="offset">Starting offset.</param>
<param name="length">Length of buffer.</param>
</member>
<member name="M:K4os.Hash.xxHash.XXH64.Digest">
<summary>Hash so far.</summary>
<returns>Hash so far.</returns>
</member>
<member name="M:K4os.Hash.xxHash.XXH64.DigestBytes">
<summary>Hash so far, as byte array.</summary>
<returns>Hash so far.</returns>
</member>
<member name="M:K4os.Hash.xxHash.XXH64.AsHashAlgorithm">
<summary>Converts this class to <see cref="T:System.Security.Cryptography.HashAlgorithm"/></summary>
<returns><see cref="T:System.Security.Cryptography.HashAlgorithm"/></returns>
</member>
<member name="M:K4os.Hash.xxHash.XXH64.Reset(K4os.Hash.xxHash.XXH64.State@,System.UInt64)">
<summary>Resets hash calculation.</summary>
<param name="state">Hash state.</param>
<param name="seed">Hash seed.</param>
</member>
<member name="M:K4os.Hash.xxHash.XXH64.Update(K4os.Hash.xxHash.XXH64.State@,System.Void*,System.Int32)">
<summary>Updates the has using given buffer.</summary>
<param name="state">Hash state.</param>
<param name="bytes">Buffer.</param>
<param name="length">Length of buffer.</param>
</member>
<member name="M:K4os.Hash.xxHash.XXH64.Update(K4os.Hash.xxHash.XXH64.State@,System.ReadOnlySpan{System.Byte})">
<summary>Updates the has using given buffer.</summary>
<param name="state">Hash state.</param>
<param name="bytes">Buffer.</param>
</member>
<member name="M:K4os.Hash.xxHash.XXH64.Digest(K4os.Hash.xxHash.XXH64.State@)">
<summary>Hash so far.</summary>
<returns>Hash so far.</returns>
</member>
</members>
</doc>

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,34 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8" />
</startup>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="halcondotnet" publicKeyToken="4973bed59ddbf2b8" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-12.0.0.0" newVersion="12.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Data.SQLite" publicKeyToken="db937bc2d44ff139" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-1.0.90.0" newVersion="1.0.90.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="MySql.Data" publicKeyToken="c5687fc88969c44d" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-8.1.0.0" newVersion="8.1.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Memory" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.1.2" newVersion="4.0.1.2" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-13.0.0.0" newVersion="13.0.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,148 @@
<?xml version="1.0"?>
<doc>
<assembly>
<name>OpenCvSharp.Extensions</name>
</assembly>
<members>
<member name="T:OpenCvSharp.Extensions.Binarizer">
<summary>
Various binarization methods (ATTENTION : The methods of this class is not implemented in OpenCV)
</summary>
</member>
<member name="M:OpenCvSharp.Extensions.Binarizer.Niblack(OpenCvSharp.Mat,OpenCvSharp.Mat,System.Int32,System.Double)">
<summary>
Binarizes by Niblack's method (This is faster but memory-hogging)
</summary>
<param name="src">Input image</param>
<param name="dst">Output image</param>
<param name="kernelSize">Window size</param>
<param name="k">Adequate coefficient</param>
</member>
<member name="M:OpenCvSharp.Extensions.Binarizer.Sauvola(OpenCvSharp.Mat,OpenCvSharp.Mat,System.Int32,System.Double,System.Double)">
<summary>
Binarizes by Sauvola's method (This is faster but memory-hogging)
</summary>
<param name="src">Input image</param>
<param name="dst">Output image</param>
<param name="kernelSize">Window size</param>
<param name="k">Adequate coefficient</param>
<param name="r">Adequate coefficient</param>
</member>
<member name="M:OpenCvSharp.Extensions.Binarizer.Bernsen(OpenCvSharp.Mat,OpenCvSharp.Mat,System.Int32,System.Byte,System.Byte)">
<summary>
Binarizes by Bernsen's method
</summary>
<param name="src">Input image</param>
<param name="dst">Output image</param>
<param name="kernelSize">Window size</param>
<param name="constrastMin">Adequate coefficient</param>
<param name="bgThreshold">Adequate coefficient</param>
</member>
<member name="M:OpenCvSharp.Extensions.Binarizer.Nick(OpenCvSharp.Mat,OpenCvSharp.Mat,System.Int32,System.Double)">
<summary>
Binarizes by Nick's method
</summary>
<param name="src">Input image</param>
<param name="dst">Output image</param>
<param name="kernelSize">Window size</param>
<param name="k">Adequate coefficient</param>
</member>
<member name="M:OpenCvSharp.Extensions.Binarizer.MinMax(OpenCvSharp.Mat,System.Int32,System.Int32,System.Int32,System.Byte@,System.Byte@)">
<summary>
注目画素の周辺画素の最大値と最小値を求める
</summary>
<param name="img">画像の画素データ</param>
<param name="x">x座標</param>
<param name="y">y座標</param>
<param name="size">周辺画素の探索サイズ。奇数でなければならない</param>
<param name="min">出力される最小値</param>
<param name="max">出力される最大値</param>
</member>
<member name="T:OpenCvSharp.Extensions.BitmapConverter">
<summary>
static class which provides conversion between System.Drawing.Bitmap and Mat
</summary>
</member>
<member name="M:OpenCvSharp.Extensions.BitmapConverter.ToMat(System.Drawing.Bitmap)">
<summary>
Converts System.Drawing.Bitmap to Mat
</summary>
<param name="src">System.Drawing.Bitmap object to be converted</param>
<returns>A Mat object which is converted from System.Drawing.Bitmap</returns>
</member>
<member name="M:OpenCvSharp.Extensions.BitmapConverter.ToMat(System.Drawing.Bitmap,OpenCvSharp.Mat)">
<summary>
Converts System.Drawing.Bitmap to Mat
</summary>
<param name="src">System.Drawing.Bitmap object to be converted</param>
<param name="dst">A Mat object which is converted from System.Drawing.Bitmap</param>
</member>
<member name="M:OpenCvSharp.Extensions.BitmapConverter.ToBitmap(OpenCvSharp.Mat)">
<summary>
Converts Mat to System.Drawing.Bitmap
</summary>
<param name="src">Mat</param>
<returns></returns>
</member>
<member name="M:OpenCvSharp.Extensions.BitmapConverter.ToBitmap(OpenCvSharp.Mat,System.Drawing.Imaging.PixelFormat)">
<summary>
Converts Mat to System.Drawing.Bitmap
</summary>
<param name="src">Mat</param>
<param name="pf">Pixel Depth</param>
<returns></returns>
</member>
<member name="M:OpenCvSharp.Extensions.BitmapConverter.ToBitmap(OpenCvSharp.Mat,System.Drawing.Bitmap)">
<summary>
Converts Mat to System.Drawing.Bitmap
</summary>
<param name="src">Mat</param>
<param name="dst">Mat</param>
<remarks>Author: shimat, Gummo (ROI support)</remarks>
</member>
<member name="T:OpenCvSharp.Extensions.CvExtensions">
<summary>
</summary>
</member>
<member name="M:OpenCvSharp.Extensions.CvExtensions.HoughLinesProbabilisticEx(OpenCvSharp.Mat,System.Double,System.Double,System.Int32,System.Double,System.Double,System.Double,System.Double)">
<summary>
</summary>
<param name="img"></param>
<param name="rho"></param>
<param name="theta"></param>
<param name="threshold"></param>
<param name="minLineLength"></param>
<param name="maxLineGap"></param>
<param name="thetaMin"></param>
<param name="thetaMax"></param>
<returns></returns>
</member>
<member name="T:OpenCvSharp.Extensions.OS">
<summary>
</summary>
</member>
<member name="T:OpenCvSharp.Extensions.Runtime">
<summary>
</summary>
</member>
<member name="T:OpenCvSharp.Extensions.Platform">
<summary>
Provides information for the platform which the user is using
</summary>
</member>
<member name="F:OpenCvSharp.Extensions.Platform.OS">
<summary>
OS type
</summary>
</member>
<member name="F:OpenCvSharp.Extensions.Platform.Runtime">
<summary>
Runtime type
</summary>
</member>
</members>
</doc>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,23 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Memory" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.1.2" newVersion="4.0.1.2" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="MySqlConnector" publicKeyToken="d33d3e53aa5f8c92" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="MySql.Data" publicKeyToken="c5687fc88969c44d" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-8.0.31.0" newVersion="8.0.31.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>

View File

@ -0,0 +1,38 @@
<?xml version="1.0" encoding="utf-8"?><doc>
<assembly>
<name>System.Buffers</name>
</assembly>
<members>
<member name="T:System.Buffers.ArrayPool`1">
<summary>Provides a resource pool that enables reusing instances of type <see cref="T[]"></see>.</summary>
<typeparam name="T">The type of the objects that are in the resource pool.</typeparam>
</member>
<member name="M:System.Buffers.ArrayPool`1.#ctor">
<summary>Initializes a new instance of the <see cref="T:System.Buffers.ArrayPool`1"></see> class.</summary>
</member>
<member name="M:System.Buffers.ArrayPool`1.Create">
<summary>Creates a new instance of the <see cref="T:System.Buffers.ArrayPool`1"></see> class.</summary>
<returns>A new instance of the <see cref="System.Buffers.ArrayPool`1"></see> class.</returns>
</member>
<member name="M:System.Buffers.ArrayPool`1.Create(System.Int32,System.Int32)">
<summary>Creates a new instance of the <see cref="T:System.Buffers.ArrayPool`1"></see> class using the specifed configuration.</summary>
<param name="maxArrayLength">The maximum length of an array instance that may be stored in the pool.</param>
<param name="maxArraysPerBucket">The maximum number of array instances that may be stored in each bucket in the pool. The pool groups arrays of similar lengths into buckets for faster access.</param>
<returns>A new instance of the <see cref="System.Buffers.ArrayPool`1"></see> class with the specified configuration.</returns>
</member>
<member name="M:System.Buffers.ArrayPool`1.Rent(System.Int32)">
<summary>Retrieves a buffer that is at least the requested length.</summary>
<param name="minimumLength">The minimum length of the array.</param>
<returns>An array of type <see cref="T[]"></see> that is at least <paramref name="minimumLength">minimumLength</paramref> in length.</returns>
</member>
<member name="M:System.Buffers.ArrayPool`1.Return(`0[],System.Boolean)">
<summary>Returns an array to the pool that was previously obtained using the <see cref="M:System.Buffers.ArrayPool`1.Rent(System.Int32)"></see> method on the same <see cref="T:System.Buffers.ArrayPool`1"></see> instance.</summary>
<param name="array">A buffer to return to the pool that was previously obtained using the <see cref="M:System.Buffers.ArrayPool`1.Rent(System.Int32)"></see> method.</param>
<param name="clearArray">Indicates whether the contents of the buffer should be cleared before reuse. If <paramref name="clearArray">clearArray</paramref> is set to true, and if the pool will store the buffer to enable subsequent reuse, the <see cref="M:System.Buffers.ArrayPool`1.Return(`0[],System.Boolean)"></see> method will clear the <paramref name="array">array</paramref> of its contents so that a subsequent caller using the <see cref="M:System.Buffers.ArrayPool`1.Rent(System.Int32)"></see> method will not see the content of the previous caller. If <paramref name="clearArray">clearArray</paramref> is set to false or if the pool will release the buffer, the array&amp;#39;s contents are left unchanged.</param>
</member>
<member name="P:System.Buffers.ArrayPool`1.Shared">
<summary>Gets a shared <see cref="T:System.Buffers.ArrayPool`1"></see> instance.</summary>
<returns>A shared <see cref="System.Buffers.ArrayPool`1"></see> instance.</returns>
</member>
</members>
</doc>

View File

@ -0,0 +1,341 @@
<?xml version="1.0" encoding="utf-8"?>
<doc>
<assembly>
<name>System.IO.Pipelines</name>
</assembly>
<members>
<member name="T:System.IO.Pipelines.FlushResult">
<summary>Result returned by <see cref="M:System.IO.Pipelines.PipeWriter.FlushAsync(System.Threading.CancellationToken)" /> call.</summary>
</member>
<member name="M:System.IO.Pipelines.FlushResult.#ctor(System.Boolean,System.Boolean)">
<summary>Initializes a new instance of <see cref="T:System.IO.Pipelines.FlushResult" /> struct setting the <see cref="P:System.IO.Pipelines.FlushResult.IsCanceled" /> and <see cref="P:System.IO.Pipelines.FlushResult.IsCompleted" /> flags.</summary>
<param name="isCanceled">
<see langword="true" /> to indicate the current <see cref="M:System.IO.Pipelines.PipeWriter.FlushAsync(System.Threading.CancellationToken)" /> operation that produced this <see cref="T:System.IO.Pipelines.FlushResult" /> was canceled by <see cref="M:System.IO.Pipelines.PipeWriter.CancelPendingFlush" />; otherwise, <see langword="false" />.</param>
<param name="isCompleted">
<see langword="true" /> to indicate the reader is no longer reading data written to the <see cref="T:System.IO.Pipelines.PipeWriter" />.</param>
</member>
<member name="P:System.IO.Pipelines.FlushResult.IsCanceled">
<summary>Gets a value that indicates whether the current <see cref="M:System.IO.Pipelines.PipeWriter.FlushAsync(System.Threading.CancellationToken)" /> operation was canceled.</summary>
<returns>
<see langword="true" /> if the current <see cref="M:System.IO.Pipelines.PipeWriter.FlushAsync(System.Threading.CancellationToken)" /> operation was canceled; otherwise, <see langword="false" />.</returns>
</member>
<member name="P:System.IO.Pipelines.FlushResult.IsCompleted">
<summary>Gets a value that indicates the reader is no longer reading data written to the <see cref="T:System.IO.Pipelines.PipeWriter" />.</summary>
<returns>
<see langword="true" /> if the reader is no longer reading data written to the <see cref="T:System.IO.Pipelines.PipeWriter" />; otherwise, <see langword="false" />.</returns>
</member>
<member name="T:System.IO.Pipelines.IDuplexPipe">
<summary>Defines a class that provides a duplex pipe from which data can be read from and written to.</summary>
</member>
<member name="P:System.IO.Pipelines.IDuplexPipe.Input">
<summary>Gets the <see cref="T:System.IO.Pipelines.PipeReader" /> half of the duplex pipe.</summary>
</member>
<member name="P:System.IO.Pipelines.IDuplexPipe.Output">
<summary>Gets the <see cref="T:System.IO.Pipelines.PipeWriter" /> half of the duplex pipe.</summary>
</member>
<member name="T:System.IO.Pipelines.Pipe">
<summary>The default <see cref="T:System.IO.Pipelines.PipeWriter" /> and <see cref="T:System.IO.Pipelines.PipeReader" /> implementation.</summary>
</member>
<member name="M:System.IO.Pipelines.Pipe.#ctor">
<summary>Initializes a new instance of the <see cref="T:System.IO.Pipelines.Pipe" /> class using <see cref="P:System.IO.Pipelines.PipeOptions.Default" /> as options.</summary>
</member>
<member name="M:System.IO.Pipelines.Pipe.#ctor(System.IO.Pipelines.PipeOptions)">
<summary>Initializes a new instance of the <see cref="T:System.IO.Pipelines.Pipe" /> class with the specified options.</summary>
<param name="options">The set of options for this pipe.</param>
</member>
<member name="M:System.IO.Pipelines.Pipe.Reset">
<summary>Resets the pipe.</summary>
</member>
<member name="P:System.IO.Pipelines.Pipe.Reader">
<summary>Gets the <see cref="T:System.IO.Pipelines.PipeReader" /> for this pipe.</summary>
<returns>A <see cref="T:System.IO.Pipelines.PipeReader" /> instance for this pipe.</returns>
</member>
<member name="P:System.IO.Pipelines.Pipe.Writer">
<summary>Gets the <see cref="T:System.IO.Pipelines.PipeWriter" /> for this pipe.</summary>
<returns>A <see cref="T:System.IO.Pipelines.PipeWriter" /> instance for this pipe.</returns>
</member>
<member name="T:System.IO.Pipelines.PipeOptions">
<summary>Represents a set of <see cref="T:System.IO.Pipelines.Pipe" /> options.</summary>
</member>
<member name="M:System.IO.Pipelines.PipeOptions.#ctor(System.Buffers.MemoryPool{System.Byte},System.IO.Pipelines.PipeScheduler,System.IO.Pipelines.PipeScheduler,System.Int64,System.Int64,System.Int32,System.Boolean)">
<summary>Initializes a new instance of the <see cref="T:System.IO.Pipelines.PipeOptions" /> class with the specified parameters.</summary>
<param name="pool">The pool of memory blocks to be used for buffer management.</param>
<param name="readerScheduler">The <see cref="T:System.IO.Pipelines.PipeScheduler" /> to be used to execute <see cref="T:System.IO.Pipelines.PipeReader" /> callbacks and async continuations.</param>
<param name="writerScheduler">The <see cref="T:System.IO.Pipelines.PipeScheduler" /> used to execute <see cref="T:System.IO.Pipelines.PipeWriter" /> callbacks and async continuations.</param>
<param name="pauseWriterThreshold">The number of bytes in the <see cref="T:System.IO.Pipelines.Pipe" /> before <see cref="M:System.IO.Pipelines.PipeWriter.FlushAsync(System.Threading.CancellationToken)" /> starts blocking. A value of zero prevents <see cref="M:System.IO.Pipelines.PipeWriter.FlushAsync(System.Threading.CancellationToken)" /> from ever blocking, effectively making the number of bytes in the <see cref="T:System.IO.Pipelines.Pipe" /> unlimited.</param>
<param name="resumeWriterThreshold">The number of bytes in the <see cref="T:System.IO.Pipelines.Pipe" /> when <see cref="M:System.IO.Pipelines.PipeWriter.FlushAsync(System.Threading.CancellationToken)" /> stops blocking.</param>
<param name="minimumSegmentSize">The minimum size of the segment requested from <paramref name="pool" />.</param>
<param name="useSynchronizationContext">
<see langword="true" /> if asynchronous continuations should be executed on the <see cref="T:System.Threading.SynchronizationContext" /> they were captured on; <see langword="false" /> otherwise. This takes precedence over the schedulers specified in <see cref="P:System.IO.Pipelines.PipeOptions.ReaderScheduler" /> and <see cref="P:System.IO.Pipelines.PipeOptions.WriterScheduler" />.</param>
</member>
<member name="P:System.IO.Pipelines.PipeOptions.Default">
<summary>Gets the default instance of <see cref="T:System.IO.Pipelines.PipeOptions" />.</summary>
<returns>A <see cref="T:System.IO.Pipelines.PipeOptions" /> object initialized with default parameters.</returns>
</member>
<member name="P:System.IO.Pipelines.PipeOptions.MinimumSegmentSize">
<summary>Gets the minimum size of the segment requested from the <see cref="P:System.IO.Pipelines.PipeOptions.Pool" />.</summary>
<returns>The minimum size of the segment requested from the <see cref="P:System.IO.Pipelines.PipeOptions.Pool" />.</returns>
</member>
<member name="P:System.IO.Pipelines.PipeOptions.PauseWriterThreshold">
<summary>Gets the number of bytes in the <see cref="T:System.IO.Pipelines.Pipe" /> when <see cref="M:System.IO.Pipelines.PipeWriter.FlushAsync(System.Threading.CancellationToken)" /> starts blocking.</summary>
<returns>The number of bytes in the <see cref="T:System.IO.Pipelines.Pipe" /> when <see cref="M:System.IO.Pipelines.PipeWriter.FlushAsync(System.Threading.CancellationToken)" /> starts blocking.</returns>
</member>
<member name="P:System.IO.Pipelines.PipeOptions.Pool">
<summary>Gets the <see cref="T:System.Buffers.MemoryPool`1" /> object used for buffer management.</summary>
<returns>A pool of memory blocks used for buffer management.</returns>
</member>
<member name="P:System.IO.Pipelines.PipeOptions.ReaderScheduler">
<summary>Gets the <see cref="T:System.IO.Pipelines.PipeScheduler" /> used to execute <see cref="T:System.IO.Pipelines.PipeReader" /> callbacks and async continuations.</summary>
<returns>A <see cref="T:System.IO.Pipelines.PipeScheduler" /> that is used to execute <see cref="T:System.IO.Pipelines.PipeReader" /> callbacks and async continuations.</returns>
</member>
<member name="P:System.IO.Pipelines.PipeOptions.ResumeWriterThreshold">
<summary>Gets the number of bytes in the <see cref="T:System.IO.Pipelines.Pipe" /> when <see cref="M:System.IO.Pipelines.PipeWriter.FlushAsync(System.Threading.CancellationToken)" /> stops blocking.</summary>
<returns>The number of bytes in the <see cref="T:System.IO.Pipelines.Pipe" /> when <see cref="M:System.IO.Pipelines.PipeWriter.FlushAsync(System.Threading.CancellationToken)" /> stops blocking.</returns>
</member>
<member name="P:System.IO.Pipelines.PipeOptions.UseSynchronizationContext">
<summary>Gets a value that determines if asynchronous callbacks and continuations should be executed on the <see cref="T:System.Threading.SynchronizationContext" /> they were captured on. This takes precedence over the schedulers specified in <see cref="P:System.IO.Pipelines.PipeOptions.ReaderScheduler" /> and <see cref="P:System.IO.Pipelines.PipeOptions.WriterScheduler" />.</summary>
<returns>
<see langword="true" /> if asynchronous callbacks and continuations should be executed on the <see cref="T:System.Threading.SynchronizationContext" /> they were captured on; otherwise, <see langword="false" />.</returns>
</member>
<member name="P:System.IO.Pipelines.PipeOptions.WriterScheduler">
<summary>Gets the <see cref="T:System.IO.Pipelines.PipeScheduler" /> used to execute <see cref="T:System.IO.Pipelines.PipeWriter" /> callbacks and async continuations.</summary>
<returns>A <see cref="T:System.IO.Pipelines.PipeScheduler" /> object used to execute <see cref="T:System.IO.Pipelines.PipeWriter" /> callbacks and async continuations.</returns>
</member>
<member name="T:System.IO.Pipelines.PipeReader">
<summary>Defines a class that provides access to a read side of pipe.</summary>
</member>
<member name="M:System.IO.Pipelines.PipeReader.#ctor">
<summary>Initializes a new instance of the <see cref="T:System.IO.Pipelines.PipeReader" /> class.</summary>
</member>
<member name="M:System.IO.Pipelines.PipeReader.AdvanceTo(System.SequencePosition)">
<summary>Moves forward the pipeline's read cursor to after the consumed data, marking the data as processed.</summary>
<param name="consumed">Marks the extent of the data that has been successfully processed.</param>
</member>
<member name="M:System.IO.Pipelines.PipeReader.AdvanceTo(System.SequencePosition,System.SequencePosition)">
<summary>Moves forward the pipeline's read cursor to after the consumed data, marking the data as processed, read and examined.</summary>
<param name="consumed">Marks the extent of the data that has been successfully processed.</param>
<param name="examined">Marks the extent of the data that has been read and examined.</param>
</member>
<member name="M:System.IO.Pipelines.PipeReader.AsStream(System.Boolean)">
<summary>Returns a <see cref="T:System.IO.Stream" /> representation of the <see cref="T:System.IO.Pipelines.PipeReader" />.</summary>
<param name="leaveOpen">An optional flag that indicates whether disposing the returned <see cref="T:System.IO.Stream" /> leaves <see cref="T:System.IO.Pipelines.PipeReader" /> open (<see langword="true" />) or completes <see cref="T:System.IO.Pipelines.PipeReader" /> (<see langword="false" />).</param>
<returns>A stream that represents the <see cref="T:System.IO.Pipelines.PipeReader" />.</returns>
</member>
<member name="M:System.IO.Pipelines.PipeReader.CancelPendingRead">
<summary>Cancels to currently pending or if none is pending next call to <see cref="M:System.IO.Pipelines.PipeReader.ReadAsync(System.Threading.CancellationToken)" />, without completing the <see cref="T:System.IO.Pipelines.PipeReader" />.</summary>
</member>
<member name="M:System.IO.Pipelines.PipeReader.Complete(System.Exception)">
<summary>Signals to the producer that the consumer is done reading.</summary>
<param name="exception">Optional <see cref="T:System.Exception" /> indicating a failure that's causing the pipeline to complete.</param>
</member>
<member name="M:System.IO.Pipelines.PipeReader.CompleteAsync(System.Exception)">
<summary>Marks the current pipe reader instance as being complete, meaning no more data will be read from it.</summary>
<param name="exception">An optional exception that indicates the failure that caused the reader to complete.</param>
<returns>A value task that represents the asynchronous complete operation.</returns>
</member>
<member name="M:System.IO.Pipelines.PipeReader.CopyToAsync(System.IO.Pipelines.PipeWriter,System.Threading.CancellationToken)">
<summary>Asynchronously reads the bytes from the <see cref="T:System.IO.Pipelines.PipeReader" /> and writes them to the specified <see cref="T:System.IO.Pipelines.PipeWriter" />, using a specified buffer size and cancellation token.</summary>
<param name="destination">The pipe writer to which the contents of the current stream will be copied.</param>
<param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None" />.</param>
<returns>A task that represents the asynchronous copy operation.</returns>
</member>
<member name="M:System.IO.Pipelines.PipeReader.CopyToAsync(System.IO.Stream,System.Threading.CancellationToken)">
<summary>Asynchronously reads the bytes from the <see cref="T:System.IO.Pipelines.PipeReader" /> and writes them to the specified stream, using a specified cancellation token.</summary>
<param name="destination">The stream to which the contents of the current stream will be copied.</param>
<param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None" />.</param>
<returns>A task that represents the asynchronous copy operation.</returns>
</member>
<member name="M:System.IO.Pipelines.PipeReader.Create(System.IO.Stream,System.IO.Pipelines.StreamPipeReaderOptions)">
<summary>Creates a <see cref="T:System.IO.Pipelines.PipeReader" /> wrapping the specified <see cref="T:System.IO.Stream" />.</summary>
<param name="stream">The stream that the pipe reader will wrap.</param>
<param name="readerOptions">The options to configure the pipe reader.</param>
<returns>A <see cref="T:System.IO.Pipelines.PipeReader" /> that wraps the <see cref="T:System.IO.Stream" />.</returns>
</member>
<member name="M:System.IO.Pipelines.PipeReader.OnWriterCompleted(System.Action{System.Exception,System.Object},System.Object)">
<summary>Registers a callback that executes when the <see cref="T:System.IO.Pipelines.PipeWriter" /> side of the pipe is completed.</summary>
<param name="callback">The callback to register.</param>
<param name="state">The state object to pass to <paramref name="callback" /> when it's invoked.</param>
</member>
<member name="M:System.IO.Pipelines.PipeReader.ReadAsync(System.Threading.CancellationToken)">
<summary>Asynchronously reads a sequence of bytes from the current <see cref="T:System.IO.Pipelines.PipeReader" />.</summary>
<param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see langword="default" />.</param>
<returns>A <see cref="T:System.Threading.Tasks.ValueTask`1" /> representing the asynchronous read operation.</returns>
</member>
<member name="M:System.IO.Pipelines.PipeReader.TryRead(System.IO.Pipelines.ReadResult@)">
<summary>Attempts to synchronously read data the <see cref="T:System.IO.Pipelines.PipeReader" />.</summary>
<param name="result">When this method returns <see langword="true" />, this value is set to a <see cref="T:System.IO.Pipelines.ReadResult" /> instance that represents the result of the read call; otherwise, this value is set to <see langword="default" />.</param>
<returns>
<see langword="true" /> if data was available, or if the call was canceled or the writer was completed; otherwise, <see langword="false" />.</returns>
</member>
<member name="T:System.IO.Pipelines.PipeScheduler">
<summary>Abstraction for running <see cref="T:System.IO.Pipelines.PipeReader" /> and <see cref="T:System.IO.Pipelines.PipeWriter" /> callbacks and continuations.</summary>
</member>
<member name="M:System.IO.Pipelines.PipeScheduler.#ctor">
<summary>Initializes new a <see cref="T:System.IO.Pipelines.PipeScheduler" /> instance.</summary>
</member>
<member name="M:System.IO.Pipelines.PipeScheduler.Schedule(System.Action{System.Object},System.Object)">
<summary>Requests <paramref name="action" /> to be run on scheduler with <paramref name="state" /> being passed in.</summary>
<param name="action">The single-parameter action delegate to schedule.</param>
<param name="state">The parameter to pass to the <paramref name="action" /> delegate.</param>
</member>
<member name="P:System.IO.Pipelines.PipeScheduler.Inline">
<summary>The <see cref="T:System.IO.Pipelines.PipeScheduler" /> implementation that runs callbacks inline.</summary>
<returns>A <see cref="T:System.IO.Pipelines.PipeScheduler" /> instance that runs callbacks inline.</returns>
</member>
<member name="P:System.IO.Pipelines.PipeScheduler.ThreadPool">
<summary>The <see cref="T:System.IO.Pipelines.PipeScheduler" /> implementation that queues callbacks to the thread pool.</summary>
<returns>A <see cref="T:System.IO.Pipelines.PipeScheduler" /> instance that queues callbacks to the thread pool.</returns>
</member>
<member name="T:System.IO.Pipelines.PipeWriter">
<summary>Defines a class that provides a pipeline to which data can be written.</summary>
</member>
<member name="M:System.IO.Pipelines.PipeWriter.#ctor">
<summary>Initializes a new instance of the class.</summary>
</member>
<member name="M:System.IO.Pipelines.PipeWriter.Advance(System.Int32)">
<summary>Notifies the <see cref="T:System.IO.Pipelines.PipeWriter" /> that <paramref name="bytes" /> bytes were written to the output <see cref="T:System.Span`1" /> or <see cref="T:System.Memory`1" />. You must request a new buffer after calling <see cref="M:System.IO.Pipelines.PipeWriter.Advance(System.Int32)" /> to continue writing more data; you cannot write to a previously acquired buffer.</summary>
<param name="bytes">The number of bytes written to the <see cref="T:System.Span`1" /> or <see cref="T:System.Memory`1" />.</param>
</member>
<member name="M:System.IO.Pipelines.PipeWriter.AsStream(System.Boolean)">
<summary>Returns a <see cref="T:System.IO.Stream" /> representation of the <see cref="T:System.IO.Pipelines.PipeWriter" />.</summary>
<param name="leaveOpen">An optional flag that indicates whether disposing the returned <see cref="T:System.IO.Stream" /> leaves <see cref="T:System.IO.Pipelines.PipeReader" /> open (<see langword="true" />) or completes <see cref="T:System.IO.Pipelines.PipeReader" /> (<see langword="false" />).</param>
<returns>A stream that represents the <see cref="T:System.IO.Pipelines.PipeWriter" />.</returns>
</member>
<member name="M:System.IO.Pipelines.PipeWriter.CancelPendingFlush">
<summary>Cancels the pending <see cref="M:System.IO.Pipelines.PipeWriter.FlushAsync(System.Threading.CancellationToken)" /> operation. If there is none, cancels next <see cref="M:System.IO.Pipelines.PipeWriter.FlushAsync(System.Threading.CancellationToken)" /> operation, without completing the <see cref="T:System.IO.Pipelines.PipeWriter" />.</summary>
</member>
<member name="M:System.IO.Pipelines.PipeWriter.Complete(System.Exception)">
<summary>Marks the <see cref="T:System.IO.Pipelines.PipeWriter" /> as being complete, meaning no more items will be written to it.</summary>
<param name="exception">Optional <see cref="T:System.Exception" /> indicating a failure that's causing the pipeline to complete.</param>
</member>
<member name="M:System.IO.Pipelines.PipeWriter.CompleteAsync(System.Exception)">
<summary>Marks the current pipe writer instance as being complete, meaning no more data will be written to it.</summary>
<param name="exception">An optional exception that indicates the failure that caused the pipeline to complete.</param>
<returns>A value task that represents the asynchronous complete operation.</returns>
</member>
<member name="M:System.IO.Pipelines.PipeWriter.CopyFromAsync(System.IO.Stream,System.Threading.CancellationToken)">
<summary>Asynchronously reads the bytes from the specified stream and writes them to the <see cref="T:System.IO.Pipelines.PipeWriter" />.</summary>
<param name="source">The stream from which the contents will be copied.</param>
<param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None" />.</param>
<returns>A task that represents the asynchronous copy operation.</returns>
</member>
<member name="M:System.IO.Pipelines.PipeWriter.Create(System.IO.Stream,System.IO.Pipelines.StreamPipeWriterOptions)">
<summary>Creates a <see cref="T:System.IO.Pipelines.PipeWriter" /> wrapping the specified <see cref="T:System.IO.Stream" />.</summary>
<param name="stream">The stream that the pipe writer will wrap.</param>
<param name="writerOptions">The options to configure the pipe writer.</param>
<returns>A <see cref="T:System.IO.Pipelines.PipeWriter" /> that wraps the <see cref="T:System.IO.Stream" />.</returns>
</member>
<member name="M:System.IO.Pipelines.PipeWriter.FlushAsync(System.Threading.CancellationToken)">
<summary>Makes bytes written available to <see cref="T:System.IO.Pipelines.PipeReader" /> and runs <see cref="M:System.IO.Pipelines.PipeReader.ReadAsync(System.Threading.CancellationToken)" /> continuation.</summary>
<param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None" />.</param>
<returns>A task that represents and wraps the asynchronous flush operation.</returns>
</member>
<member name="M:System.IO.Pipelines.PipeWriter.GetMemory(System.Int32)">
<summary>Returns a <see cref="T:System.Memory`1" /> to write to that is at least the requested size, as specified by the <paramref name="sizeHint" /> parameter.</summary>
<param name="sizeHint">The minimum length of the returned <see cref="T:System.Memory`1" />. If 0, a non-empty memory buffer of arbitrary size is returned.</param>
<exception cref="T:System.OutOfMemoryException">The requested buffer size is not available.</exception>
<returns>A memory buffer of at least <paramref name="sizeHint" /> bytes. If <paramref name="sizeHint" /> is 0, returns a non-empty buffer of arbitrary size.</returns>
</member>
<member name="M:System.IO.Pipelines.PipeWriter.GetSpan(System.Int32)">
<summary>Returns a <see cref="T:System.Span`1" /> to write to that is at least the requested size, as specified by the <paramref name="sizeHint" /> parameter.</summary>
<param name="sizeHint">The minimum length of the returned <see cref="T:System.Span`1" />. If 0, a non-empty buffer of arbitrary size is returned.</param>
<exception cref="T:System.OutOfMemoryException">The requested buffer size is not available.</exception>
<returns>A buffer of at least <paramref name="sizeHint" /> bytes. If <paramref name="sizeHint" /> is 0, returns a non-empty buffer of arbitrary size.</returns>
</member>
<member name="M:System.IO.Pipelines.PipeWriter.OnReaderCompleted(System.Action{System.Exception,System.Object},System.Object)">
<summary>Registers a callback that executes when the <see cref="T:System.IO.Pipelines.PipeReader" /> side of the pipe is completed.</summary>
<param name="callback">The callback to register.</param>
<param name="state">The state object to pass to <paramref name="callback" /> when it's invoked.</param>
</member>
<member name="M:System.IO.Pipelines.PipeWriter.WriteAsync(System.ReadOnlyMemory{System.Byte},System.Threading.CancellationToken)">
<summary>Writes the specified byte memory range to the pipe and makes data accessible to the <see cref="T:System.IO.Pipelines.PipeReader" />.</summary>
<param name="source">The read-only byte memory region to write.</param>
<param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None" />.</param>
<returns>A task that represents the asynchronous write operation, and wraps the flush asynchronous operation.</returns>
</member>
<member name="T:System.IO.Pipelines.ReadResult">
<summary>Represents the result of a <see cref="M:System.IO.Pipelines.PipeReader.ReadAsync(System.Threading.CancellationToken)" /> call.</summary>
</member>
<member name="M:System.IO.Pipelines.ReadResult.#ctor(System.Buffers.ReadOnlySequence{System.Byte},System.Boolean,System.Boolean)">
<summary>Creates a new instance of <see cref="T:System.IO.Pipelines.ReadResult" /> setting <see cref="P:System.IO.Pipelines.ReadResult.IsCanceled" /> and <see cref="P:System.IO.Pipelines.ReadResult.IsCompleted" /> flags.</summary>
<param name="buffer">The read-only sequence containing the bytes of data that were read in the <see cref="M:System.IO.Pipelines.PipeReader.ReadAsync(System.Threading.CancellationToken)" /> call.</param>
<param name="isCanceled">A flag that indicates if the <see cref="M:System.IO.Pipelines.PipeReader.ReadAsync(System.Threading.CancellationToken)" /> operation that produced this <see cref="T:System.IO.Pipelines.ReadResult" /> was canceled by <see cref="M:System.IO.Pipelines.PipeReader.CancelPendingRead" />.</param>
<param name="isCompleted">A flag that indicates whether the end of the data stream has been reached.</param>
</member>
<member name="P:System.IO.Pipelines.ReadResult.Buffer">
<summary>Gets the <see cref="T:System.Buffers.ReadOnlySequence`1" /> that was read.</summary>
<returns>A read-only sequence containing the bytes of data that were read in the <see cref="M:System.IO.Pipelines.PipeReader.ReadAsync(System.Threading.CancellationToken)" /> call.</returns>
</member>
<member name="P:System.IO.Pipelines.ReadResult.IsCanceled">
<summary>Gets a value that indicates whether the current <see cref="M:System.IO.Pipelines.PipeReader.ReadAsync(System.Threading.CancellationToken)" /> operation was canceled.</summary>
<returns>
<see langword="true" /> if the <see cref="M:System.IO.Pipelines.PipeReader.ReadAsync(System.Threading.CancellationToken)" /> operation that produced this <see cref="T:System.IO.Pipelines.ReadResult" /> was canceled by <see cref="M:System.IO.Pipelines.PipeReader.CancelPendingRead" />; otherwise, <see langword="false" />.</returns>
</member>
<member name="P:System.IO.Pipelines.ReadResult.IsCompleted">
<summary>Gets a value that indicates whether the end of the data stream has been reached.</summary>
<returns>
<see langword="true" /> if the end of the data stream has been reached; otherwise, <see langword="false" />.</returns>
</member>
<member name="T:System.IO.Pipelines.StreamPipeExtensions">
<summary>Provides extension methods for <see cref="T:System.IO.Stream" /> that support read and write operations directly into pipes.</summary>
</member>
<member name="M:System.IO.Pipelines.StreamPipeExtensions.CopyToAsync(System.IO.Stream,System.IO.Pipelines.PipeWriter,System.Threading.CancellationToken)">
<summary>Asynchronously reads the bytes from the <see cref="T:System.IO.Stream" /> and writes them to the specified <see cref="T:System.IO.Pipelines.PipeWriter" />, using a cancellation token.</summary>
<param name="source">The stream from which the contents of the current stream will be copied.</param>
<param name="destination">The writer to which the contents of the source stream will be copied.</param>
<param name="cancellationToken">The token to monitor for cancellation requests. The default value is <see cref="P:System.Threading.CancellationToken.None" />.</param>
<returns>A task that represents the asynchronous copy operation.</returns>
</member>
<member name="T:System.IO.Pipelines.StreamPipeReaderOptions">
<summary>Represents a set of options for controlling the creation of the <see cref="T:System.IO.Pipelines.PipeReader" />.</summary>
</member>
<member name="M:System.IO.Pipelines.StreamPipeReaderOptions.#ctor(System.Buffers.MemoryPool{System.Byte},System.Int32,System.Int32,System.Boolean)">
<summary>Initializes a <see cref="T:System.IO.Pipelines.StreamPipeReaderOptions" /> instance, optionally specifying a memory pool, a minimum buffer size, a minimum read size, and whether the underlying stream should be left open after the <see cref="T:System.IO.Pipelines.PipeReader" /> completes.</summary>
<param name="pool">The memory pool to use when allocating memory. The default value is <see langword="null" />.</param>
<param name="bufferSize">The minimum buffer size to use when renting memory from the <paramref name="pool" />. The default value is 4096.</param>
<param name="minimumReadSize">The threshold of remaining bytes in the buffer before a new buffer is allocated. The default value is 1024.</param>
<param name="leaveOpen">
<see langword="true" /> to leave the underlying stream open after the <see cref="T:System.IO.Pipelines.PipeReader" /> completes; <see langword="false" /> to close it. The default is <see langword="false" />.</param>
</member>
<member name="P:System.IO.Pipelines.StreamPipeReaderOptions.BufferSize">
<summary>Gets the minimum buffer size to use when renting memory from the <see cref="P:System.IO.Pipelines.StreamPipeReaderOptions.Pool" />.</summary>
<returns>The buffer size.</returns>
</member>
<member name="P:System.IO.Pipelines.StreamPipeReaderOptions.LeaveOpen">
<summary>Gets the value that indicates if the underlying stream should be left open after the <see cref="T:System.IO.Pipelines.PipeReader" /> completes.</summary>
<returns>
<see langword="true" /> if the underlying stream should be left open after the <see cref="T:System.IO.Pipelines.PipeReader" /> completes; otherwise, <see langword="false" />.</returns>
</member>
<member name="P:System.IO.Pipelines.StreamPipeReaderOptions.MinimumReadSize">
<summary>Gets the threshold of remaining bytes in the buffer before a new buffer is allocated.</summary>
<returns>The minimum read size.</returns>
</member>
<member name="P:System.IO.Pipelines.StreamPipeReaderOptions.Pool">
<summary>Gets the <see cref="T:System.Buffers.MemoryPool`1" /> to use when allocating memory.</summary>
<returns>A memory pool instance.</returns>
</member>
<member name="T:System.IO.Pipelines.StreamPipeWriterOptions">
<summary>Represents a set of options for controlling the creation of the <see cref="T:System.IO.Pipelines.PipeWriter" />.</summary>
</member>
<member name="M:System.IO.Pipelines.StreamPipeWriterOptions.#ctor(System.Buffers.MemoryPool{System.Byte},System.Int32,System.Boolean)">
<summary>Initializes a <see cref="T:System.IO.Pipelines.StreamPipeWriterOptions" /> instance, optionally specifying a memory pool, a minimum buffer size, and whether the underlying stream should be left open after the <see cref="T:System.IO.Pipelines.PipeWriter" /> completes.</summary>
<param name="pool">The memory pool to use when allocating memory. The default value is <see langword="null" />.</param>
<param name="minimumBufferSize">The minimum buffer size to use when renting memory from the <paramref name="pool" />. The default value is 4096.</param>
<param name="leaveOpen">
<see langword="true" /> to leave the underlying stream open after the <see cref="T:System.IO.Pipelines.PipeWriter" /> completes; <see langword="false" /> to close it. The default is <see langword="false" />.</param>
</member>
<member name="P:System.IO.Pipelines.StreamPipeWriterOptions.LeaveOpen">
<summary>Gets the value that indicates if the underlying stream should be left open after the <see cref="T:System.IO.Pipelines.PipeWriter" /> completes.</summary>
<returns>
<see langword="true" /> if the underlying stream should be left open after the <see cref="T:System.IO.Pipelines.PipeWriter" /> completes; otherwise, <see langword="false" />.</returns>
</member>
<member name="P:System.IO.Pipelines.StreamPipeWriterOptions.MinimumBufferSize">
<summary>Gets the minimum buffer size to use when renting memory from the <see cref="P:System.IO.Pipelines.StreamPipeWriterOptions.Pool" />.</summary>
<returns>An integer representing the minimum buffer size.</returns>
</member>
<member name="P:System.IO.Pipelines.StreamPipeWriterOptions.Pool">
<summary>Gets the <see cref="T:System.Buffers.MemoryPool`1" /> to use when allocating memory.</summary>
<returns>A memory pool instance.</returns>
</member>
</members>
</doc>

View File

@ -0,0 +1,355 @@
<?xml version="1.0" encoding="utf-8"?><doc>
<assembly>
<name>System.Memory</name>
</assembly>
<members>
<member name="T:System.Span`1">
<typeparam name="T"></typeparam>
</member>
<member name="M:System.Span`1.#ctor(`0[])">
<param name="array"></param>
</member>
<member name="M:System.Span`1.#ctor(System.Void*,System.Int32)">
<param name="pointer"></param>
<param name="length"></param>
</member>
<member name="M:System.Span`1.#ctor(`0[],System.Int32)">
<param name="array"></param>
<param name="start"></param>
</member>
<member name="M:System.Span`1.#ctor(`0[],System.Int32,System.Int32)">
<param name="array"></param>
<param name="start"></param>
<param name="length"></param>
</member>
<member name="M:System.Span`1.Clear">
</member>
<member name="M:System.Span`1.CopyTo(System.Span{`0})">
<param name="destination"></param>
</member>
<member name="M:System.Span`1.DangerousCreate(System.Object,`0@,System.Int32)">
<param name="obj"></param>
<param name="objectData"></param>
<param name="length"></param>
<returns></returns>
</member>
<member name="M:System.Span`1.DangerousGetPinnableReference">
<returns></returns>
</member>
<member name="P:System.Span`1.Empty">
<returns></returns>
</member>
<member name="M:System.Span`1.Equals(System.Object)">
<param name="obj"></param>
<returns></returns>
</member>
<member name="M:System.Span`1.Fill(`0)">
<param name="value"></param>
</member>
<member name="M:System.Span`1.GetHashCode">
<returns></returns>
</member>
<member name="P:System.Span`1.IsEmpty">
<returns></returns>
</member>
<member name="P:System.Span`1.Item(System.Int32)">
<param name="index"></param>
<returns></returns>
</member>
<member name="P:System.Span`1.Length">
<returns></returns>
</member>
<member name="M:System.Span`1.op_Equality(System.Span{`0},System.Span{`0})">
<param name="left"></param>
<param name="right"></param>
<returns></returns>
</member>
<member name="M:System.Span`1.op_Implicit(System.ArraySegment{T})~System.Span{T}">
<param name="arraySegment"></param>
<returns></returns>
</member>
<member name="M:System.Span`1.op_Implicit(System.Span{T})~System.ReadOnlySpan{T}">
<param name="span"></param>
<returns></returns>
</member>
<member name="M:System.Span`1.op_Implicit(T[])~System.Span{T}">
<param name="array"></param>
<returns></returns>
</member>
<member name="M:System.Span`1.op_Inequality(System.Span{`0},System.Span{`0})">
<param name="left"></param>
<param name="right"></param>
<returns></returns>
</member>
<member name="M:System.Span`1.Slice(System.Int32)">
<param name="start"></param>
<returns></returns>
</member>
<member name="M:System.Span`1.Slice(System.Int32,System.Int32)">
<param name="start"></param>
<param name="length"></param>
<returns></returns>
</member>
<member name="M:System.Span`1.ToArray">
<returns></returns>
</member>
<member name="M:System.Span`1.TryCopyTo(System.Span{`0})">
<param name="destination"></param>
<returns></returns>
</member>
<member name="T:System.SpanExtensions">
</member>
<member name="M:System.SpanExtensions.AsBytes``1(System.ReadOnlySpan{``0})">
<param name="source"></param>
<typeparam name="T"></typeparam>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.AsBytes``1(System.Span{``0})">
<param name="source"></param>
<typeparam name="T"></typeparam>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.AsSpan(System.String)">
<param name="text"></param>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.AsSpan``1(System.ArraySegment{``0})">
<param name="arraySegment"></param>
<typeparam name="T"></typeparam>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.AsSpan``1(``0[])">
<param name="array"></param>
<typeparam name="T"></typeparam>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.CopyTo``1(``0[],System.Span{``0})">
<param name="array"></param>
<param name="destination"></param>
<typeparam name="T"></typeparam>
</member>
<member name="M:System.SpanExtensions.IndexOf(System.Span{System.Byte},System.ReadOnlySpan{System.Byte})">
<param name="span"></param>
<param name="value"></param>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.IndexOf(System.Span{System.Byte},System.Byte)">
<param name="span"></param>
<param name="value"></param>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.IndexOf(System.ReadOnlySpan{System.Byte},System.Byte)">
<param name="span"></param>
<param name="value"></param>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.IndexOf(System.ReadOnlySpan{System.Byte},System.ReadOnlySpan{System.Byte})">
<param name="span"></param>
<param name="value"></param>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.IndexOf``1(System.ReadOnlySpan{``0},System.ReadOnlySpan{``0})">
<param name="span"></param>
<param name="value"></param>
<typeparam name="T"></typeparam>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.IndexOf``1(System.ReadOnlySpan{``0},``0)">
<param name="span"></param>
<param name="value"></param>
<typeparam name="T"></typeparam>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.IndexOf``1(System.Span{``0},System.ReadOnlySpan{``0})">
<param name="span"></param>
<param name="value"></param>
<typeparam name="T"></typeparam>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.IndexOf``1(System.Span{``0},``0)">
<param name="span"></param>
<param name="value"></param>
<typeparam name="T"></typeparam>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.IndexOfAny(System.ReadOnlySpan{System.Byte},System.Byte,System.Byte,System.Byte)">
<param name="span"></param>
<param name="value0"></param>
<param name="value1"></param>
<param name="value2"></param>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.IndexOfAny(System.Span{System.Byte},System.Byte,System.Byte,System.Byte)">
<param name="span"></param>
<param name="value0"></param>
<param name="value1"></param>
<param name="value2"></param>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.IndexOfAny(System.Span{System.Byte},System.Byte,System.Byte)">
<param name="span"></param>
<param name="value0"></param>
<param name="value1"></param>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.IndexOfAny(System.ReadOnlySpan{System.Byte},System.ReadOnlySpan{System.Byte})">
<param name="span"></param>
<param name="values"></param>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.IndexOfAny(System.Span{System.Byte},System.ReadOnlySpan{System.Byte})">
<param name="span"></param>
<param name="values"></param>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.IndexOfAny(System.ReadOnlySpan{System.Byte},System.Byte,System.Byte)">
<param name="span"></param>
<param name="value0"></param>
<param name="value1"></param>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.NonPortableCast``2(System.ReadOnlySpan{``0})">
<param name="source"></param>
<typeparam name="TFrom"></typeparam>
<typeparam name="TTo"></typeparam>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.NonPortableCast``2(System.Span{``0})">
<param name="source"></param>
<typeparam name="TFrom"></typeparam>
<typeparam name="TTo"></typeparam>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.SequenceEqual(System.ReadOnlySpan{System.Byte},System.ReadOnlySpan{System.Byte})">
<param name="first"></param>
<param name="second"></param>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.SequenceEqual(System.Span{System.Byte},System.ReadOnlySpan{System.Byte})">
<param name="first"></param>
<param name="second"></param>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.SequenceEqual``1(System.ReadOnlySpan{``0},System.ReadOnlySpan{``0})">
<param name="first"></param>
<param name="second"></param>
<typeparam name="T"></typeparam>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.SequenceEqual``1(System.Span{``0},System.ReadOnlySpan{``0})">
<param name="first"></param>
<param name="second"></param>
<typeparam name="T"></typeparam>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.StartsWith(System.ReadOnlySpan{System.Byte},System.ReadOnlySpan{System.Byte})">
<param name="span"></param>
<param name="value"></param>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.StartsWith(System.Span{System.Byte},System.ReadOnlySpan{System.Byte})">
<param name="span"></param>
<param name="value"></param>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.StartsWith``1(System.ReadOnlySpan{``0},System.ReadOnlySpan{``0})">
<param name="span"></param>
<param name="value"></param>
<typeparam name="T"></typeparam>
<returns></returns>
</member>
<member name="M:System.SpanExtensions.StartsWith``1(System.Span{``0},System.ReadOnlySpan{``0})">
<param name="span"></param>
<param name="value"></param>
<typeparam name="T"></typeparam>
<returns></returns>
</member>
<member name="T:System.ReadOnlySpan`1">
<typeparam name="T"></typeparam>
</member>
<member name="M:System.ReadOnlySpan`1.#ctor(`0[])">
<param name="array"></param>
</member>
<member name="M:System.ReadOnlySpan`1.#ctor(System.Void*,System.Int32)">
<param name="pointer"></param>
<param name="length"></param>
</member>
<member name="M:System.ReadOnlySpan`1.#ctor(`0[],System.Int32)">
<param name="array"></param>
<param name="start"></param>
</member>
<member name="M:System.ReadOnlySpan`1.#ctor(`0[],System.Int32,System.Int32)">
<param name="array"></param>
<param name="start"></param>
<param name="length"></param>
</member>
<member name="M:System.ReadOnlySpan`1.CopyTo(System.Span{`0})">
<param name="destination"></param>
</member>
<member name="M:System.ReadOnlySpan`1.DangerousCreate(System.Object,`0@,System.Int32)">
<param name="obj"></param>
<param name="objectData"></param>
<param name="length"></param>
<returns></returns>
</member>
<member name="M:System.ReadOnlySpan`1.DangerousGetPinnableReference">
<returns></returns>
</member>
<member name="P:System.ReadOnlySpan`1.Empty">
<returns></returns>
</member>
<member name="M:System.ReadOnlySpan`1.Equals(System.Object)">
<param name="obj"></param>
<returns></returns>
</member>
<member name="M:System.ReadOnlySpan`1.GetHashCode">
<returns></returns>
</member>
<member name="P:System.ReadOnlySpan`1.IsEmpty">
<returns></returns>
</member>
<member name="P:System.ReadOnlySpan`1.Item(System.Int32)">
<param name="index"></param>
<returns></returns>
</member>
<member name="P:System.ReadOnlySpan`1.Length">
<returns></returns>
</member>
<member name="M:System.ReadOnlySpan`1.op_Equality(System.ReadOnlySpan{`0},System.ReadOnlySpan{`0})">
<param name="left"></param>
<param name="right"></param>
<returns></returns>
</member>
<member name="M:System.ReadOnlySpan`1.op_Implicit(System.ArraySegment{T})~System.ReadOnlySpan{T}">
<param name="arraySegment"></param>
<returns></returns>
</member>
<member name="M:System.ReadOnlySpan`1.op_Implicit(T[])~System.ReadOnlySpan{T}">
<param name="array"></param>
<returns></returns>
</member>
<member name="M:System.ReadOnlySpan`1.op_Inequality(System.ReadOnlySpan{`0},System.ReadOnlySpan{`0})">
<param name="left"></param>
<param name="right"></param>
<returns></returns>
</member>
<member name="M:System.ReadOnlySpan`1.Slice(System.Int32)">
<param name="start"></param>
<returns></returns>
</member>
<member name="M:System.ReadOnlySpan`1.Slice(System.Int32,System.Int32)">
<param name="start"></param>
<param name="length"></param>
<returns></returns>
</member>
<member name="M:System.ReadOnlySpan`1.ToArray">
<returns></returns>
</member>
<member name="M:System.ReadOnlySpan`1.TryCopyTo(System.Span{`0})">
<param name="destination"></param>
<returns></returns>
</member>
</members>
</doc>

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,291 @@
<?xml version="1.0" encoding="utf-8"?>
<doc>
<assembly>
<name>System.Runtime.CompilerServices.Unsafe</name>
</assembly>
<members>
<member name="T:System.Runtime.CompilerServices.Unsafe">
<summary>Contains generic, low-level functionality for manipulating pointers.</summary>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.Add``1(``0@,System.Int32)">
<summary>Adds an element offset to the given reference.</summary>
<param name="source">The reference to add the offset to.</param>
<param name="elementOffset">The offset to add.</param>
<typeparam name="T">The type of reference.</typeparam>
<returns>A new reference that reflects the addition of offset to pointer.</returns>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.Add``1(``0@,System.IntPtr)">
<summary>Adds an element offset to the given reference.</summary>
<param name="source">The reference to add the offset to.</param>
<param name="elementOffset">The offset to add.</param>
<typeparam name="T">The type of reference.</typeparam>
<returns>A new reference that reflects the addition of offset to pointer.</returns>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.Add``1(``0@,System.UIntPtr)">
<summary>Adds an element offset to the given reference.</summary>
<param name="source">The reference to add the offset to.</param>
<param name="elementOffset">The offset to add.</param>
<typeparam name="T">The type of reference.</typeparam>
<returns>A new reference that reflects the addition of offset to pointer.</returns>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.Add``1(System.Void*,System.Int32)">
<summary>Adds an element offset to the given void pointer.</summary>
<param name="source">The void pointer to add the offset to.</param>
<param name="elementOffset">The offset to add.</param>
<typeparam name="T">The type of void pointer.</typeparam>
<returns>A new void pointer that reflects the addition of offset to the specified pointer.</returns>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.AddByteOffset``1(``0@,System.IntPtr)">
<summary>Adds a byte offset to the given reference.</summary>
<param name="source">The reference to add the offset to.</param>
<param name="byteOffset">The offset to add.</param>
<typeparam name="T">The type of reference.</typeparam>
<returns>A new reference that reflects the addition of byte offset to pointer.</returns>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.AddByteOffset``1(``0@,System.UIntPtr)">
<summary>Adds a byte offset to the given reference.</summary>
<param name="source">The reference to add the offset to.</param>
<param name="byteOffset">The offset to add.</param>
<typeparam name="T">The type of reference.</typeparam>
<returns>A new reference that reflects the addition of byte offset to pointer.</returns>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.AreSame``1(``0@,``0@)">
<summary>Determines whether the specified references point to the same location.</summary>
<param name="left">The first reference to compare.</param>
<param name="right">The second reference to compare.</param>
<typeparam name="T">The type of reference.</typeparam>
<returns>
<see langword="true" /> if <paramref name="left" /> and <paramref name="right" /> point to the same location; otherwise, <see langword="false" />.</returns>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.As``1(System.Object)">
<summary>Casts the given object to the specified type.</summary>
<param name="o">The object to cast.</param>
<typeparam name="T">The type which the object will be cast to.</typeparam>
<returns>The original object, casted to the given type.</returns>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.As``2(``0@)">
<summary>Reinterprets the given reference as a reference to a value of type <typeparamref name="TTo" />.</summary>
<param name="source">The reference to reinterpret.</param>
<typeparam name="TFrom">The type of reference to reinterpret.</typeparam>
<typeparam name="TTo">The desired type of the reference.</typeparam>
<returns>A reference to a value of type <typeparamref name="TTo" />.</returns>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.AsPointer``1(``0@)">
<summary>Returns a pointer to the given by-ref parameter.</summary>
<param name="value">The object whose pointer is obtained.</param>
<typeparam name="T">The type of object.</typeparam>
<returns>A pointer to the given value.</returns>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.AsRef``1(``0@)">
<summary>Reinterprets the given read-only reference as a reference.</summary>
<param name="source">The read-only reference to reinterpret.</param>
<typeparam name="T">The type of reference.</typeparam>
<returns>A reference to a value of type <typeparamref name="T" />.</returns>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.AsRef``1(System.Void*)">
<summary>Reinterprets the given location as a reference to a value of type <typeparamref name="T" />.</summary>
<param name="source">The location of the value to reference.</param>
<typeparam name="T">The type of the interpreted location.</typeparam>
<returns>A reference to a value of type <typeparamref name="T" />.</returns>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.ByteOffset``1(``0@,``0@)">
<summary>Determines the byte offset from origin to target from the given references.</summary>
<param name="origin">The reference to origin.</param>
<param name="target">The reference to target.</param>
<typeparam name="T">The type of reference.</typeparam>
<returns>Byte offset from origin to target i.e. <paramref name="target" /> - <paramref name="origin" />.</returns>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.Copy``1(``0@,System.Void*)">
<summary>Copies a value of type <typeparamref name="T" /> to the given location.</summary>
<param name="destination">The location to copy to.</param>
<param name="source">A pointer to the value to copy.</param>
<typeparam name="T">The type of value to copy.</typeparam>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.Copy``1(System.Void*,``0@)">
<summary>Copies a value of type <typeparamref name="T" /> to the given location.</summary>
<param name="destination">The location to copy to.</param>
<param name="source">A reference to the value to copy.</param>
<typeparam name="T">The type of value to copy.</typeparam>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.CopyBlock(System.Byte@,System.Byte@,System.UInt32)">
<summary>Copies bytes from the source address to the destination address.</summary>
<param name="destination">The destination address to copy to.</param>
<param name="source">The source address to copy from.</param>
<param name="byteCount">The number of bytes to copy.</param>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.CopyBlock(System.Void*,System.Void*,System.UInt32)">
<summary>Copies bytes from the source address to the destination address.</summary>
<param name="destination">The destination address to copy to.</param>
<param name="source">The source address to copy from.</param>
<param name="byteCount">The number of bytes to copy.</param>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.CopyBlockUnaligned(System.Byte@,System.Byte@,System.UInt32)">
<summary>Copies bytes from the source address to the destination address without assuming architecture dependent alignment of the addresses.</summary>
<param name="destination">The destination address to copy to.</param>
<param name="source">The source address to copy from.</param>
<param name="byteCount">The number of bytes to copy.</param>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.CopyBlockUnaligned(System.Void*,System.Void*,System.UInt32)">
<summary>Copies bytes from the source address to the destination address without assuming architecture dependent alignment of the addresses.</summary>
<param name="destination">The destination address to copy to.</param>
<param name="source">The source address to copy from.</param>
<param name="byteCount">The number of bytes to copy.</param>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.InitBlock(System.Byte@,System.Byte,System.UInt32)">
<summary>Initializes a block of memory at the given location with a given initial value.</summary>
<param name="startAddress">The address of the start of the memory block to initialize.</param>
<param name="value">The value to initialize the block to.</param>
<param name="byteCount">The number of bytes to initialize.</param>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.InitBlock(System.Void*,System.Byte,System.UInt32)">
<summary>Initializes a block of memory at the given location with a given initial value.</summary>
<param name="startAddress">The address of the start of the memory block to initialize.</param>
<param name="value">The value to initialize the block to.</param>
<param name="byteCount">The number of bytes to initialize.</param>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.InitBlockUnaligned(System.Byte@,System.Byte,System.UInt32)">
<summary>Initializes a block of memory at the given location with a given initial value without assuming architecture dependent alignment of the address.</summary>
<param name="startAddress">The address of the start of the memory block to initialize.</param>
<param name="value">The value to initialize the block to.</param>
<param name="byteCount">The number of bytes to initialize.</param>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.InitBlockUnaligned(System.Void*,System.Byte,System.UInt32)">
<summary>Initializes a block of memory at the given location with a given initial value without assuming architecture dependent alignment of the address.</summary>
<param name="startAddress">The address of the start of the memory block to initialize.</param>
<param name="value">The value to initialize the block to.</param>
<param name="byteCount">The number of bytes to initialize.</param>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.IsAddressGreaterThan``1(``0@,``0@)">
<summary>Returns a value that indicates whether a specified reference is greater than another specified reference.</summary>
<param name="left">The first value to compare.</param>
<param name="right">The second value to compare.</param>
<typeparam name="T">The type of the reference.</typeparam>
<returns>
<see langword="true" /> if <paramref name="left" /> is greater than <paramref name="right" />; otherwise, <see langword="false" />.</returns>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.IsAddressLessThan``1(``0@,``0@)">
<summary>Returns a value that indicates whether a specified reference is less than another specified reference.</summary>
<param name="left">The first value to compare.</param>
<param name="right">The second value to compare.</param>
<typeparam name="T">The type of the reference.</typeparam>
<returns>
<see langword="true" /> if <paramref name="left" /> is less than <paramref name="right" />; otherwise, <see langword="false" />.</returns>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.IsNullRef``1(``0@)">
<summary>Determines if a given reference to a value of type <typeparamref name="T" /> is a null reference.</summary>
<param name="source">The reference to check.</param>
<typeparam name="T">The type of the reference.</typeparam>
<returns>
<see langword="true" /> if <paramref name="source" /> is a null reference; otherwise, <see langword="false" />.</returns>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.NullRef``1">
<summary>Returns a reference to a value of type <typeparamref name="T" /> that is a null reference.</summary>
<typeparam name="T">The type of the reference.</typeparam>
<returns>A reference to a value of type <typeparamref name="T" /> that is a null reference.</returns>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.Read``1(System.Void*)">
<summary>Reads a value of type <typeparamref name="T" /> from the given location.</summary>
<param name="source">The location to read from.</param>
<typeparam name="T">The type to read.</typeparam>
<returns>An object of type <typeparamref name="T" /> read from the given location.</returns>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.ReadUnaligned``1(System.Byte@)">
<summary>Reads a value of type <typeparamref name="T" /> from the given location without assuming architecture dependent alignment of the addresses.</summary>
<param name="source">The location to read from.</param>
<typeparam name="T">The type to read.</typeparam>
<returns>An object of type <typeparamref name="T" /> read from the given location.</returns>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.ReadUnaligned``1(System.Void*)">
<summary>Reads a value of type <typeparamref name="T" /> from the given location without assuming architecture dependent alignment of the addresses.</summary>
<param name="source">The location to read from.</param>
<typeparam name="T">The type to read.</typeparam>
<returns>An object of type <typeparamref name="T" /> read from the given location.</returns>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.SizeOf``1">
<summary>Returns the size of an object of the given type parameter.</summary>
<typeparam name="T">The type of object whose size is retrieved.</typeparam>
<returns>The size of an object of type <typeparamref name="T" />.</returns>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.SkipInit``1(``0@)">
<summary>Bypasses definite assignment rules for a given value.</summary>
<param name="value">The uninitialized object.</param>
<typeparam name="T">The type of the uninitialized object.</typeparam>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.Subtract``1(``0@,System.Int32)">
<summary>Subtracts an element offset from the given reference.</summary>
<param name="source">The reference to subtract the offset from.</param>
<param name="elementOffset">The offset to subtract.</param>
<typeparam name="T">The type of reference.</typeparam>
<returns>A new reference that reflects the subtraction of offset from pointer.</returns>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.Subtract``1(``0@,System.IntPtr)">
<summary>Subtracts an element offset from the given reference.</summary>
<param name="source">The reference to subtract the offset from.</param>
<param name="elementOffset">The offset to subtract.</param>
<typeparam name="T">The type of reference.</typeparam>
<returns>A new reference that reflects the subtraction of offset from pointer.</returns>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.Subtract``1(``0@,System.UIntPtr)">
<summary>Subtracts an element offset from the given reference.</summary>
<param name="source">The reference to subtract the offset from.</param>
<param name="elementOffset">The offset to subtract.</param>
<typeparam name="T">The type of reference.</typeparam>
<returns>A new reference that reflects the subraction of offset from pointer.</returns>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.Subtract``1(System.Void*,System.Int32)">
<summary>Subtracts an element offset from the given void pointer.</summary>
<param name="source">The void pointer to subtract the offset from.</param>
<param name="elementOffset">The offset to subtract.</param>
<typeparam name="T">The type of the void pointer.</typeparam>
<returns>A new void pointer that reflects the subtraction of offset from the specified pointer.</returns>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.SubtractByteOffset``1(``0@,System.IntPtr)">
<summary>Subtracts a byte offset from the given reference.</summary>
<param name="source">The reference to subtract the offset from.</param>
<param name="byteOffset">The offset to subtract.</param>
<typeparam name="T">The type of reference.</typeparam>
<returns>A new reference that reflects the subtraction of byte offset from pointer.</returns>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.SubtractByteOffset``1(``0@,System.UIntPtr)">
<summary>Subtracts a byte offset from the given reference.</summary>
<param name="source">The reference to subtract the offset from.</param>
<param name="byteOffset">The offset to subtract.</param>
<typeparam name="T">The type of reference.</typeparam>
<returns>A new reference that reflects the subraction of byte offset from pointer.</returns>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.Unbox``1(System.Object)">
<summary>Returns a <see langword="mutable ref" /> to a boxed value.</summary>
<param name="box">The value to unbox.</param>
<typeparam name="T">The type to be unboxed.</typeparam>
<exception cref="T:System.NullReferenceException">
<paramref name="box" /> is <see langword="null" />, and <typeparamref name="T" /> is a non-nullable value type.</exception>
<exception cref="T:System.InvalidCastException">
<paramref name="box" /> is not a boxed value type.
-or-
<paramref name="box" /> is not a boxed <typeparamref name="T" />.</exception>
<exception cref="T:System.TypeLoadException">
<typeparamref name="T" /> cannot be found.</exception>
<returns>A <see langword="mutable ref" /> to the boxed value <paramref name="box" />.</returns>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.Write``1(System.Void*,``0)">
<summary>Writes a value of type <typeparamref name="T" /> to the given location.</summary>
<param name="destination">The location to write to.</param>
<param name="value">The value to write.</param>
<typeparam name="T">The type of value to write.</typeparam>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.WriteUnaligned``1(System.Byte@,``0)">
<summary>Writes a value of type <typeparamref name="T" /> to the given location without assuming architecture dependent alignment of the addresses.</summary>
<param name="destination">The location to write to.</param>
<param name="value">The value to write.</param>
<typeparam name="T">The type of value to write.</typeparam>
</member>
<member name="M:System.Runtime.CompilerServices.Unsafe.WriteUnaligned``1(System.Void*,``0)">
<summary>Writes a value of type <typeparamref name="T" /> to the given location without assuming architecture dependent alignment of the addresses.</summary>
<param name="destination">The location to write to.</param>
<param name="value">The value to write.</param>
<typeparam name="T">The type of value to write.</typeparam>
</member>
</members>
</doc>

View File

@ -0,0 +1,166 @@
<?xml version="1.0" encoding="utf-8"?><doc>
<assembly>
<name>System.Threading.Tasks.Extensions</name>
</assembly>
<members>
<member name="T:System.Runtime.CompilerServices.ValueTaskAwaiter`1">
<typeparam name="TResult"></typeparam>
</member>
<member name="M:System.Runtime.CompilerServices.ValueTaskAwaiter`1.GetResult">
<returns></returns>
</member>
<member name="P:System.Runtime.CompilerServices.ValueTaskAwaiter`1.IsCompleted">
<returns></returns>
</member>
<member name="M:System.Runtime.CompilerServices.ValueTaskAwaiter`1.OnCompleted(System.Action)">
<param name="continuation"></param>
</member>
<member name="M:System.Runtime.CompilerServices.ValueTaskAwaiter`1.UnsafeOnCompleted(System.Action)">
<param name="continuation"></param>
</member>
<member name="T:System.Threading.Tasks.ValueTask`1">
<summary>Provides a value type that wraps a <see cref="Task{TResult}"></see> and a <typeparamref name="TResult">TResult</typeparamref>, only one of which is used.</summary>
<typeparam name="TResult">The result.</typeparam>
</member>
<member name="M:System.Threading.Tasks.ValueTask`1.#ctor(System.Threading.Tasks.Task{`0})">
<summary>Initializes a new instance of the <see cref="ValueTask{TResult}"></see> class using the supplied task that represents the operation.</summary>
<param name="task">The task.</param>
<exception cref="T:System.ArgumentNullException">The <paramref name="task">task</paramref> argument is null.</exception>
</member>
<member name="M:System.Threading.Tasks.ValueTask`1.#ctor(`0)">
<summary>Initializes a new instance of the <see cref="ValueTask{TResult}"></see> class using the supplied result of a successful operation.</summary>
<param name="result">The result.</param>
</member>
<member name="M:System.Threading.Tasks.ValueTask`1.AsTask">
<summary>Retrieves a <see cref="Task{TResult}"></see> object that represents this <see cref="ValueTask{TResult}"></see>.</summary>
<returns>The <see cref="Task{TResult}"></see> object that is wrapped in this <see cref="ValueTask{TResult}"></see> if one exists, or a new <see cref="Task{TResult}"></see> object that represents the result.</returns>
</member>
<member name="M:System.Threading.Tasks.ValueTask`1.ConfigureAwait(System.Boolean)">
<summary>Configures an awaiter for this value.</summary>
<param name="continueOnCapturedContext">true to attempt to marshal the continuation back to the captured context; otherwise, false.</param>
<returns>The configured awaiter.</returns>
</member>
<member name="M:System.Threading.Tasks.ValueTask`1.CreateAsyncMethodBuilder">
<summary>Creates a method builder for use with an async method.</summary>
<returns>The created builder.</returns>
</member>
<member name="M:System.Threading.Tasks.ValueTask`1.Equals(System.Object)">
<summary>Determines whether the specified object is equal to the current object.</summary>
<param name="obj">The object to compare with the current object.</param>
<returns>true if the specified object is equal to the current object; otherwise, false.</returns>
</member>
<member name="M:System.Threading.Tasks.ValueTask`1.Equals(System.Threading.Tasks.ValueTask{`0})">
<summary>Determines whether the specified <see cref="ValueTask{TResult}"></see> object is equal to the current <see cref="ValueTask{TResult}"></see> object.</summary>
<param name="other">The object to compare with the current object.</param>
<returns>true if the specified object is equal to the current object; otherwise, false.</returns>
</member>
<member name="M:System.Threading.Tasks.ValueTask`1.GetAwaiter">
<summary>Creates an awaiter for this value.</summary>
<returns>The awaiter.</returns>
</member>
<member name="M:System.Threading.Tasks.ValueTask`1.GetHashCode">
<summary>Returns the hash code for this instance.</summary>
<returns>The hash code for the current object.</returns>
</member>
<member name="P:System.Threading.Tasks.ValueTask`1.IsCanceled">
<summary>Gets a value that indicates whether this object represents a canceled operation.</summary>
<returns>true if this object represents a canceled operation; otherwise, false.</returns>
</member>
<member name="P:System.Threading.Tasks.ValueTask`1.IsCompleted">
<summary>Gets a value that indicates whether this object represents a completed operation.</summary>
<returns>true if this object represents a completed operation; otherwise, false.</returns>
</member>
<member name="P:System.Threading.Tasks.ValueTask`1.IsCompletedSuccessfully">
<summary>Gets a value that indicates whether this object represents a successfully completed operation.</summary>
<returns>true if this object represents a successfully completed operation; otherwise, false.</returns>
</member>
<member name="P:System.Threading.Tasks.ValueTask`1.IsFaulted">
<summary>Gets a value that indicates whether this object represents a failed operation.</summary>
<returns>true if this object represents a failed operation; otherwise, false.</returns>
</member>
<member name="M:System.Threading.Tasks.ValueTask`1.op_Equality(System.Threading.Tasks.ValueTask{`0},System.Threading.Tasks.ValueTask{`0})">
<summary>Compares two values for equality.</summary>
<param name="left">The first value to compare.</param>
<param name="right">The second value to compare.</param>
<returns>true if the two <see cref="ValueTask{TResult}"></see> values are equal; otherwise, false.</returns>
</member>
<member name="M:System.Threading.Tasks.ValueTask`1.op_Inequality(System.Threading.Tasks.ValueTask{`0},System.Threading.Tasks.ValueTask{`0})">
<summary>Determines whether two <see cref="ValueTask{TResult}"></see> values are unequal.</summary>
<param name="left">The first value to compare.</param>
<param name="right">The seconed value to compare.</param>
<returns>true if the two <see cref="ValueTask{TResult}"></see> values are not equal; otherwise, false.</returns>
</member>
<member name="P:System.Threading.Tasks.ValueTask`1.Result">
<summary>Gets the result.</summary>
<returns>The result.</returns>
</member>
<member name="M:System.Threading.Tasks.ValueTask`1.ToString">
<summary>Returns a string that represents the current object.</summary>
<returns>A string that represents the current object.</returns>
</member>
<member name="T:System.Runtime.CompilerServices.AsyncMethodBuilderAttribute">
</member>
<member name="M:System.Runtime.CompilerServices.AsyncMethodBuilderAttribute.#ctor(System.Type)">
<param name="builderType"></param>
</member>
<member name="P:System.Runtime.CompilerServices.AsyncMethodBuilderAttribute.BuilderType">
<returns></returns>
</member>
<member name="T:System.Runtime.CompilerServices.AsyncValueTaskMethodBuilder`1">
<typeparam name="TResult"></typeparam>
</member>
<member name="M:System.Runtime.CompilerServices.AsyncValueTaskMethodBuilder`1.AwaitOnCompleted``2(``0@,``1@)">
<param name="awaiter"></param>
<param name="stateMachine"></param>
<typeparam name="TAwaiter"></typeparam>
<typeparam name="TStateMachine"></typeparam>
</member>
<member name="M:System.Runtime.CompilerServices.AsyncValueTaskMethodBuilder`1.AwaitUnsafeOnCompleted``2(``0@,``1@)">
<param name="awaiter"></param>
<param name="stateMachine"></param>
<typeparam name="TAwaiter"></typeparam>
<typeparam name="TStateMachine"></typeparam>
</member>
<member name="M:System.Runtime.CompilerServices.AsyncValueTaskMethodBuilder`1.Create">
<returns></returns>
</member>
<member name="M:System.Runtime.CompilerServices.AsyncValueTaskMethodBuilder`1.SetException(System.Exception)">
<param name="exception"></param>
</member>
<member name="M:System.Runtime.CompilerServices.AsyncValueTaskMethodBuilder`1.SetResult(`0)">
<param name="result"></param>
</member>
<member name="M:System.Runtime.CompilerServices.AsyncValueTaskMethodBuilder`1.SetStateMachine(System.Runtime.CompilerServices.IAsyncStateMachine)">
<param name="stateMachine"></param>
</member>
<member name="M:System.Runtime.CompilerServices.AsyncValueTaskMethodBuilder`1.Start``1(``0@)">
<param name="stateMachine"></param>
<typeparam name="TStateMachine"></typeparam>
</member>
<member name="P:System.Runtime.CompilerServices.AsyncValueTaskMethodBuilder`1.Task">
<returns></returns>
</member>
<member name="T:System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1.ConfiguredValueTaskAwaiter">
<typeparam name="TResult"></typeparam>
</member>
<member name="M:System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1.ConfiguredValueTaskAwaiter.GetResult">
<returns></returns>
</member>
<member name="P:System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1.ConfiguredValueTaskAwaiter.IsCompleted">
<returns></returns>
</member>
<member name="M:System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1.ConfiguredValueTaskAwaiter.OnCompleted(System.Action)">
<param name="continuation"></param>
</member>
<member name="M:System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1.ConfiguredValueTaskAwaiter.UnsafeOnCompleted(System.Action)">
<param name="continuation"></param>
</member>
<member name="T:System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1">
<typeparam name="TResult"></typeparam>
</member>
<member name="M:System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1.GetAwaiter">
<returns></returns>
</member>
</members>
</doc>

View File

@ -0,0 +1,8 @@
<?xml version="1.0"?>
<doc>
<assembly>
<name>System.ValueTuple</name>
</assembly>
<members>
</members>
</doc>

View File

@ -0,0 +1,3 @@
#SystemDefault.ini
[SystemDefault]
MySqlCode=123456

View File

@ -0,0 +1,83 @@
E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\GeBoShi\bin\Debug\GeBoShi.exe.config
E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\GeBoShi\bin\Debug\GeBoShi.exe
E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\GeBoShi\bin\Debug\GeBoShi.pdb
E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\GeBoShi\bin\Debug\CSkin.dll
E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\GeBoShi\bin\Debug\MaiMuControl.dll
E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\GeBoShi\bin\Debug\S7.Net.dll
E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\GeBoShi\bin\Debug\MQTTnet.dll
E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\GeBoShi\bin\Debug\ImageBox.dll
E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\GeBoShi\bin\Debug\halcondotnet.dll
E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\GeBoShi\bin\Debug\OpenCvSharp.dll
E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\GeBoShi\bin\Debug\Yolo5.dll
E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\GeBoShi\bin\Debug\Newtonsoft.Json.dll
E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\GeBoShi\bin\Debug\BouncyCastle.Crypto.dll
E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\GeBoShi\bin\Debug\SqlSugar.dll
E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\GeBoShi\bin\Debug\MySql.Data.dll
E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\GeBoShi\bin\Debug\MySqlBackup.dll
E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\GeBoShi\bin\Debug\ControllerDllCSharp.dll
E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\GeBoShi\bin\Debug\Automation.BDaq4.dll
E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\GeBoShi\bin\Debug\MvCameraControl.Net.dll
E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\GeBoShi\bin\Debug\IKapC.NET.dll
E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\GeBoShi\bin\Debug\IKapBoardClassLibrary.dll
E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\GeBoShi\bin\Debug\AdvMotAPI.dll
E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\GeBoShi\bin\Debug\System.Memory.dll
E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\GeBoShi\bin\Debug\System.Buffers.dll
E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\GeBoShi\bin\Debug\OpenCvSharp.Extensions.dll
E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\GeBoShi\bin\Debug\System.Runtime.CompilerServices.Unsafe.dll
E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\GeBoShi\bin\Debug\Google.Protobuf.dll
E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\GeBoShi\bin\Debug\ZstdSharp.dll
E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\GeBoShi\bin\Debug\K4os.Compression.LZ4.Streams.dll
E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\GeBoShi\bin\Debug\System.Threading.Tasks.Extensions.dll
E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\GeBoShi\bin\Debug\System.Numerics.Vectors.dll
E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\GeBoShi\bin\Debug\K4os.Compression.LZ4.dll
E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\GeBoShi\bin\Debug\System.IO.Pipelines.dll
E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\GeBoShi\bin\Debug\K4os.Hash.xxHash.dll
E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\GeBoShi\bin\Debug\MaiMuControl.pdb
E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\GeBoShi\bin\Debug\MaiMuControl.dll.config
E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\GeBoShi\bin\Debug\S7.Net.xml
E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\GeBoShi\bin\Debug\MQTTnet.xml
E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\GeBoShi\bin\Debug\ImageBox.pdb
E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\GeBoShi\bin\Debug\ImageBox.xml
E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\GeBoShi\bin\Debug\ImageBox.dll.config
E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\GeBoShi\bin\Debug\OpenCvSharp.xml
E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\GeBoShi\bin\Debug\Newtonsoft.Json.xml
E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\GeBoShi\bin\Debug\BouncyCastle.Crypto.xml
E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\GeBoShi\bin\Debug\MySql.Data.xml
E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\GeBoShi\bin\Debug\System.Memory.xml
E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\GeBoShi\bin\Debug\System.Buffers.xml
E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\GeBoShi\bin\Debug\System.Runtime.CompilerServices.Unsafe.xml
E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\GeBoShi\bin\Debug\Google.Protobuf.pdb
E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\GeBoShi\bin\Debug\Google.Protobuf.xml
E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\GeBoShi\bin\Debug\K4os.Compression.LZ4.Streams.xml
E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\GeBoShi\bin\Debug\System.Threading.Tasks.Extensions.xml
E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\GeBoShi\bin\Debug\System.Numerics.Vectors.xml
E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\GeBoShi\bin\Debug\K4os.Compression.LZ4.xml
E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\GeBoShi\bin\Debug\System.IO.Pipelines.xml
E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\GeBoShi\bin\Debug\K4os.Hash.xxHash.xml
E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\GeBoShi\obj\Debug\GeBoShi.csproj.AssemblyReference.cache
E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\GeBoShi\obj\Debug\GeBoShi.csproj.SuggestedBindingRedirects.cache
E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\GeBoShi\obj\Debug\GeBoShi.exe.config
E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\GeBoShi\obj\Debug\GeBoShi.Main.resources
E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\GeBoShi\obj\Debug\GeBoShi.Properties.Resources.resources
E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\GeBoShi\obj\Debug\GeBoShi.csproj.GenerateResource.cache
E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\GeBoShi\obj\Debug\GeBoShi.csproj.CoreCompileInputs.cache
E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\GeBoShi\obj\Debug\GeBoShi.csproj.CopyComplete
E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\GeBoShi\obj\Debug\GeBoShi.exe
E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\GeBoShi\obj\Debug\GeBoShi.pdb
E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\GeBoShi\bin\Debug\BarTenderPrint.dll
E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\GeBoShi\bin\Debug\HZH_Controls.dll
E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\GeBoShi\bin\Debug\Service.dll
E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\GeBoShi\bin\Debug\Seagull.BarTender.Print.dll
E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\GeBoShi\bin\Debug\Models.dll
E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\GeBoShi\bin\Debug\Seagull.Services.PrintScheduler.dll
E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\GeBoShi\bin\Debug\Seagull.Services.PrintScheduler.Contracts.dll
E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\GeBoShi\bin\Debug\BarTenderPrint.pdb
E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\GeBoShi\bin\Debug\Service.pdb
E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\GeBoShi\bin\Debug\Service.dll.config
E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\GeBoShi\bin\Debug\Models.pdb
E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\GeBoShi\obj\Debug\GeBoShi.UI.Load.InitFrm.resources
E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\GeBoShi\bin\Debug\System.Drawing.Common.dll
E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\GeBoShi\bin\Debug\System.ValueTuple.dll
E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\GeBoShi\bin\Debug\OpenCvSharp.Extensions.xml
E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\GeBoShi\bin\Debug\System.ValueTuple.xml
E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\GeBoShi\obj\Debug\GeBoShi.UI.SysSet.SysSetFrm.resources

View File

@ -0,0 +1,38 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8" />
</startup>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Memory" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.1.2" newVersion="4.0.1.2" />
</dependentAssembly>
</assemblyBinding>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
</dependentAssembly>
</assemblyBinding>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Data.SQLite" publicKeyToken="db937bc2d44ff139" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-1.0.102.0" newVersion="1.0.102.0" />
</dependentAssembly>
</assemblyBinding>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-13.0.0.0" newVersion="13.0.0.0" />
</dependentAssembly>
</assemblyBinding>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="MySql.Data" publicKeyToken="c5687fc88969c44d" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-8.1.0.0" newVersion="8.1.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>

View File

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="OpenCvSharp4" version="4.8.0.20230708" targetFramework="net48" />
<package id="OpenCvSharp4.Extensions" version="4.7.0.20230115" targetFramework="net48" />
<package id="System.Buffers" version="4.5.1" targetFramework="net48" />
<package id="System.Drawing.Common" version="5.0.3" targetFramework="net48" />
<package id="System.Memory" version="4.5.5" targetFramework="net48" />
<package id="System.Numerics.Vectors" version="4.5.0" targetFramework="net48" />
<package id="System.Runtime.CompilerServices.Unsafe" version="6.0.0" targetFramework="net48" />
<package id="System.ValueTuple" version="4.5.0" targetFramework="net48" />
</packages>

View File

@ -421,7 +421,7 @@ namespace LeatherApp.Device
for (int i = 0; i < cut_count; i++)
{
liStep = i * 100;
task.resultInfo += $"第 {i}/{cut_count} 张小图(大图索引{task.photoIndex}): 缺陷数 = {task.output_num[i]}\n";
//task.resultInfo += $"第 {i}/{cut_count} 张小图(大图索引{task.photoIndex}): 缺陷数 = {task.output_num[i]}\n";
//task.resultInfo +=$"大图({task.tag})[{task.bmp.Width}*{task.bmp.Height}],第 {i + 1}/{cut_count} 张小图[{task.bmps_cut[i].Width}*{task.bmps_cut[i].Height}]: 瑕疵output_num = {output_num[i]}\n";
#region
for (int j = 0; j < task.output_num[i]; j++)//缺陷数
@ -445,7 +445,7 @@ namespace LeatherApp.Device
var cmW = Math.Round(w * task.widthRatio / Config.cm2px_x, 2);
var cmH = Math.Round(h * task.widthRatio / Config.cm2px_y, 2);
// 打印输出信息
task.resultInfo += $"----{i}----col:{i % colNum}/{colNum} row:{i / colNum}/{colNum}-----------\n目标:{j + 1} 类别ID:{classId} 置信度:{confidence} 对比度:{contrast} 坐标:({x},{y})-({x + w},{y + h}) 宽高:w={w},h={h}; \n";
//task.resultInfo += $"----{i}----col:{i % colNum}/{colNum} row:{i / colNum}/{colNum}-----------\n目标:{j + 1} 类别ID:{classId} 置信度:{confidence} 对比度:{contrast} 坐标:({x},{y})-({x + w},{y + h}) 宽高:w={w},h={h}; \n";
DefectLabelInfoList.Add(new DefectLabelInfo()
{
@ -585,18 +585,21 @@ namespace LeatherApp.Device
#region
//降序排序,先得到是否有接头检出
List<DefectLabelInfo> DefectLabelInfoListByClassID = DefectLabelInfoList.OrderByDescending(t => t.classId).ToList();//降序
for (int q = 0; q < DefectLabelInfoList.Count; q++)
for (int q = 0; q < DefectLabelInfoListByClassID.Count; q++)
{
//是否满足此产品标准
if (task.qualifiedLimitList != null && task.qualifiedLimitList.Count > 0)
{
qualifiedLimit = task.qualifiedLimitList.FirstOrDefault(m => m.Code == Config.getDefectCode(DefectLabelInfoList[q].classId));
qualifiedLimit = task.qualifiedLimitList.FirstOrDefault(m => m.Code == Config.getDefectCode(DefectLabelInfoListByClassID[q].classId));
if (qualifiedLimit != null)
{
// 打印输出信息
task.resultInfo += $"----{DefectLabelInfoListByClassID[q].i}----col:{DefectLabelInfoListByClassID[q].i % colNum}/{colNum} row:{DefectLabelInfoListByClassID[q].i / colNum}/{colNum}-----------\n目标:{DefectLabelInfoListByClassID[q].j + 1} 类别ID:{DefectLabelInfoListByClassID[q].classId} 置信度:{DefectLabelInfoListByClassID[q].confidence} 对比度:{DefectLabelInfoListByClassID[q].contrast}\n";
//if ((qualifiedLimit.ZXD > 0 && qualifiedLimit.ZXD > confidence)
// || (qualifiedLimit.ContrastTop + qualifiedLimit.ContrastLower > 0 && x> qualifiedLimit.ContrastLower && x < qualifiedLimit.ContrastTop)
// || (qualifiedLimit.Area > 0 && qualifiedLimit.Area > cmW * cmH))
if (DefectLabelInfoList[q].confidence <= qualifiedLimit.ZXD)//confidence > qualifiedLimit.ZXD 是瑕疵 才继续判断下面的两个条件
if (DefectLabelInfoListByClassID[q].confidence <= qualifiedLimit.ZXD)//confidence > qualifiedLimit.ZXD 是瑕疵 才继续判断下面的两个条件
{
task.resultInfo += $" 置信度不满足此产品瑕疵标准,跳过! \n";
continue;
@ -607,8 +610,8 @@ namespace LeatherApp.Device
if (qualifiedLimit.IsOR)
{
if (!(
(qualifiedLimit.Area <= 0 || DefectLabelInfoList[q].cmW * DefectLabelInfoList[q].cmH >= qualifiedLimit.Area) ||
(ContrastTotal <= 0 || (DefectLabelInfoList[q].contrast < qualifiedLimit.ContrastLower || DefectLabelInfoList[q].contrast > qualifiedLimit.ContrastTop))))
(qualifiedLimit.Area <= 0 || DefectLabelInfoListByClassID[q].cmW * DefectLabelInfoListByClassID[q].cmH >= qualifiedLimit.Area) ||
(ContrastTotal <= 0 || (DefectLabelInfoListByClassID[q].contrast < qualifiedLimit.ContrastLower || DefectLabelInfoListByClassID[q].contrast > qualifiedLimit.ContrastTop))))
{
task.resultInfo += $" 不满足此产品瑕疵标准,跳过! \n";
//WarningEvent?.Invoke(DateTime.Now,WarningEnum.Low, $"判断不是瑕疵类别ID:{classId} 置信度({confidence},[{qualifiedLimit.ZXD}]); isOr({qualifiedLimit.IsOR}); 面积({cmW * cmH},[{ qualifiedLimit.Area}]); 对比度({contrast},[{qualifiedLimit.ContrastLower}-{qualifiedLimit.ContrastTop}])");
@ -618,17 +621,17 @@ namespace LeatherApp.Device
else
{
if (!(
(qualifiedLimit.Area <= 0 || DefectLabelInfoList[q].cmW * DefectLabelInfoList[q].cmH >= qualifiedLimit.Area) &&
(ContrastTotal <= 0 || (DefectLabelInfoList[q].contrast < qualifiedLimit.ContrastLower || DefectLabelInfoList[q].contrast > qualifiedLimit.ContrastTop))))
(qualifiedLimit.Area <= 0 || DefectLabelInfoListByClassID[q].cmW * DefectLabelInfoListByClassID[q].cmH >= qualifiedLimit.Area) &&
(ContrastTotal <= 0 || (DefectLabelInfoListByClassID[q].contrast < qualifiedLimit.ContrastLower || DefectLabelInfoListByClassID[q].contrast > qualifiedLimit.ContrastTop))))
{
task.resultInfo += $" 不满足此产品瑕疵标准,跳过! \n";
//WarningEvent?.Invoke(DateTime.Now,WarningEnum.Low, $"判断不是瑕疵类别ID:{classId} 置信度({confidence},[{qualifiedLimit.ZXD}]); isOr({qualifiedLimit.IsOR}); 面积({cmW * cmH},[{ qualifiedLimit.Area}]); 对比度({contrast},[{qualifiedLimit.ContrastLower}-{qualifiedLimit.ContrastTop}])");
continue;
}
}
if (Config.getDefectCode(DefectLabelInfoList[q].classId) == "jietou")
if (Config.getDefectCode(DefectLabelInfoListByClassID[q].classId) == "jietou")
haveJieTou = true;
if(haveJieTou && (Config.getDefectCode(DefectLabelInfoList[q].classId) == "hengdang"))
if(haveJieTou && (Config.getDefectCode(DefectLabelInfoListByClassID[q].classId) == "hengdang"))
{
task.resultInfo += $" 判断为接头处横档,跳过! \n";
continue;
@ -638,31 +641,31 @@ namespace LeatherApp.Device
}
liStep++;//1
//打标
var point1 = new OpenCvSharp.Point((DefectLabelInfoList[q].i % colNum) * image_width + DefectLabelInfoList[q].x, (DefectLabelInfoList[q].i / colNum) * image_hight + DefectLabelInfoList[q].y);
var point2 = new OpenCvSharp.Point(point1.X + DefectLabelInfoList[q].w, point1.Y + DefectLabelInfoList[q].h);
var point1 = new OpenCvSharp.Point((DefectLabelInfoListByClassID[q].i % colNum) * image_width + DefectLabelInfoListByClassID[q].x, (DefectLabelInfoListByClassID[q].i / colNum) * image_hight + DefectLabelInfoListByClassID[q].y);
var point2 = new OpenCvSharp.Point(point1.X + DefectLabelInfoListByClassID[q].w, point1.Y + DefectLabelInfoListByClassID[q].h);
liStep++;//2
task.resultInfo += $" 转换到大图坐标(px)p1={point1.X},{point1.Y}; p2={point2.X},{point2.Y}\n";
//task.resultInfo += $" 转换到大图坐标(px)p1={point1.X},{point1.Y}; p2={point2.X},{point2.Y}\n";
Cv2.Rectangle(task.bmpTag, point1, point2, new Scalar(0.0, 0.0, 255.0), 1);//画打标点
//WarningEvent?.Invoke(DateTime.Now,WarningEnum.Low, $"保存第 {count} 行缺陷信息;");
var cmX = Math.Round(point1.X * task.widthRatio / Config.cm2px_x, 2);
var cmY = Math.Round((task.bmp.Height - point1.Y - DefectLabelInfoList[q].h) * task.widthRatio / Config.cm2px_y, 2);//外面计Y从右下角为原点
var cmY = Math.Round((task.bmp.Height - point1.Y - DefectLabelInfoListByClassID[q].h) * task.widthRatio / Config.cm2px_y, 2);//外面计Y从右下角为原点
liStep++;//3
task.resultInfo += $" 转换到大图坐标(cm)[widthRatio={task.widthRatio}]x={cmX},y={cmY}; w={DefectLabelInfoList[q].cmW},h={DefectLabelInfoList[q].cmH}\n";
task.excelTable.Rows.Add($"{task.photoIndex}", cmX, cmY, DefectLabelInfoList[q].cmW, DefectLabelInfoList[q].cmH, DefectLabelInfoList[q].j + 1, DefectLabelInfoList[q].classId, DefectLabelInfoList[q].confidence, DefectLabelInfoList[q].contrast);
//task.resultInfo += $" 转换到大图坐标(cm)[widthRatio={task.widthRatio}]x={cmX},y={cmY}; w={DefectLabelInfoList[q].cmW},h={DefectLabelInfoList[q].cmH}\n";
task.excelTable.Rows.Add($"{task.photoIndex}", cmX, cmY, DefectLabelInfoListByClassID[q].cmW, DefectLabelInfoListByClassID[q].cmH, DefectLabelInfoListByClassID[q].j + 1, DefectLabelInfoListByClassID[q].classId, DefectLabelInfoListByClassID[q].confidence, DefectLabelInfoListByClassID[q].contrast);
liStep++;//4
//切缺陷小图
//WarningEvent?.Invoke(DateTime.Now,WarningEnum.Low, $"保存第 {count} 个缺陷小图;");
int left, top, decX, decY;
decX = (DefectLabelInfoList[q].w > 236 ? 20 : 256 - DefectLabelInfoList[q].w) / 2;
decY = (DefectLabelInfoList[q].h > 236 ? 20 : 256 - DefectLabelInfoList[q].h) / 2;
decX = (DefectLabelInfoListByClassID[q].w > 236 ? 20 : 256 - DefectLabelInfoListByClassID[q].w) / 2;
decY = (DefectLabelInfoListByClassID[q].h > 236 ? 20 : 256 - DefectLabelInfoListByClassID[q].h) / 2;
left = point1.X - decX;
top = point1.Y - decY;
if (left < 0) left = 0;
if (top < 0) top = 0;
int width = DefectLabelInfoList[q].w + decX * 2;
int height = DefectLabelInfoList[q].h + decY * 2;
int width = DefectLabelInfoListByClassID[q].w + decX * 2;
int height = DefectLabelInfoListByClassID[q].h + decY * 2;
if (left + width > task.bmp.Width - 1) width = task.bmp.Width - left - 1;
if (top + height > task.bmp.Height - 1) height = task.bmp.Height - top - 1;
liStep++;//5
@ -670,8 +673,8 @@ namespace LeatherApp.Device
liStep++;//6
if (height < 1 || width < 1)
{
task.resultInfo += $" 打标到大图坐标Rect(px)left={left},top={top}; width={width},height={height}\n";
task.resultInfo += $" test point1.Y={point1.Y},h={DefectLabelInfoList[q].h}; top={top},mat.Height={task.bmp.Height}\n================\n";
//task.resultInfo += $" 打标到大图坐标Rect(px)left={left},top={top}; width={width},height={height}\n";
//task.resultInfo += $" test point1.Y={point1.Y},h={DefectLabelInfoList[q].h}; top={top},mat.Height={task.bmp.Height}\n================\n";
WarningEvent?.Invoke(DateTime.Now, WarningEnum.Normal, task.resultInfo);
}

View File

@ -118,8 +118,9 @@
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="textBox1.Text" xml:space="preserve">
<value>v1.0.2.4 (2024-03-15)
<value>v1.0.2.4 (2024-03-1503-19)
1、更新车用革情况接头处过滤横档缺陷
2、更新无瑕疵时报错问题
v1.0.2.3 (2024-02-8)
1、更新报表导出高度单位cm
2、更新还在处理过程中按停止按钮崩溃问题

View File

@ -58,10 +58,36 @@
this.btnEnd = new Sunny.UI.UISymbolButton();
this.btnStart = new Sunny.UI.UISymbolButton();
this.uiTitlePanel2 = new Sunny.UI.UITitlePanel();
this.ucColorListDefect = new LeatherApp.UIExtend.UCColorList();
this.lineChartDefect = new Sunny.UI.UILineChart();
this.uiTitlePanel3 = new Sunny.UI.UITitlePanel();
this.uiDataGridView1 = new Sunny.UI.UIDataGridView();
this.uiMiniPagination1 = new Sunny.UI.UIMiniPagination();
this.uiTitlePanel4 = new Sunny.UI.UITitlePanel();
this.lineChartFaceWidth = new Sunny.UI.UILineChart();
this.uiTitlePanel5 = new Sunny.UI.UITitlePanel();
this.lstboxLog = new Sunny.UI.UIListBox();
this.uiTitlePanel6 = new Sunny.UI.UITitlePanel();
this.uiPanel3 = new Sunny.UI.UIPanel();
this.pnlScannerImg = new Sunny.UI.UITitlePanel();
this.picScanner2 = new System.Windows.Forms.PictureBox();
this.picScanner1 = new System.Windows.Forms.PictureBox();
this.tcbarLightValue = new Sunny.UI.UITrackBar();
this.uiTitlePanel7 = new Sunny.UI.UITitlePanel();
this.lblScanner2Cache = new Sunny.UI.UILabel();
this.uiLabel13 = new Sunny.UI.UILabel();
this.lblScanner1Cache = new Sunny.UI.UILabel();
this.uiLabel11 = new Sunny.UI.UILabel();
this.lblDefectQueue2 = new Sunny.UI.UILabel();
this.lblDefectQueue1 = new Sunny.UI.UILabel();
this.lblDefectQueue0 = new Sunny.UI.UILabel();
this.lblWaitImageCount = new Sunny.UI.UILabel();
this.swcDefectPauseForUser = new Sunny.UI.UISwitch();
this.uiLabel9 = new Sunny.UI.UILabel();
this.uiLabel8 = new Sunny.UI.UILabel();
this.uiLabel7 = new Sunny.UI.UILabel();
this.uiLabel6 = new Sunny.UI.UILabel();
this.picDefectImage = new LeatherApp.UIExtend.UCImageView();
this.ucColorListDefect = new LeatherApp.UIExtend.UCColorList();
this.colUid = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.colCode = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.colIndex = new System.Windows.Forms.DataGridViewTextBoxColumn();
@ -73,32 +99,6 @@
this.colArea = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.colZXD = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.colTarget = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.uiMiniPagination1 = new Sunny.UI.UIMiniPagination();
this.uiTitlePanel4 = new Sunny.UI.UITitlePanel();
this.lineChartFaceWidth = new Sunny.UI.UILineChart();
this.uiTitlePanel5 = new Sunny.UI.UITitlePanel();
this.lstboxLog = new Sunny.UI.UIListBox();
this.uiTitlePanel6 = new Sunny.UI.UITitlePanel();
this.uiPanel3 = new Sunny.UI.UIPanel();
this.picDefectImage = new LeatherApp.UIExtend.UCImageView();
this.pnlScannerImg = new Sunny.UI.UITitlePanel();
this.picScanner2 = new System.Windows.Forms.PictureBox();
this.picScanner1 = new System.Windows.Forms.PictureBox();
this.tcbarLightValue = new Sunny.UI.UITrackBar();
this.uiTitlePanel7 = new Sunny.UI.UITitlePanel();
this.lblDefectQueue2 = new Sunny.UI.UILabel();
this.lblDefectQueue1 = new Sunny.UI.UILabel();
this.lblDefectQueue0 = new Sunny.UI.UILabel();
this.lblWaitImageCount = new Sunny.UI.UILabel();
this.swcDefectPauseForUser = new Sunny.UI.UISwitch();
this.uiLabel9 = new Sunny.UI.UILabel();
this.uiLabel8 = new Sunny.UI.UILabel();
this.uiLabel7 = new Sunny.UI.UILabel();
this.uiLabel6 = new Sunny.UI.UILabel();
this.lblScanner1Cache = new Sunny.UI.UILabel();
this.uiLabel11 = new Sunny.UI.UILabel();
this.lblScanner2Cache = new Sunny.UI.UILabel();
this.uiLabel13 = new Sunny.UI.UILabel();
this.uiPanel1.SuspendLayout();
this.uiTitlePanel1.SuspendLayout();
this.uiPanel2.SuspendLayout();
@ -227,7 +227,7 @@
this.uiLabel5.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(29)))), ((int)(((byte)(138)))));
this.uiLabel5.Location = new System.Drawing.Point(8, 205);
this.uiLabel5.Name = "uiLabel5";
this.uiLabel5.Size = new System.Drawing.Size(110, 31);
this.uiLabel5.Size = new System.Drawing.Size(74, 21);
this.uiLabel5.Style = Sunny.UI.UIStyle.Custom;
this.uiLabel5.StyleCustomMode = true;
this.uiLabel5.TabIndex = 0;
@ -270,7 +270,7 @@
this.uiLabel4.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(29)))), ((int)(((byte)(138)))));
this.uiLabel4.Location = new System.Drawing.Point(8, 166);
this.uiLabel4.Name = "uiLabel4";
this.uiLabel4.Size = new System.Drawing.Size(110, 31);
this.uiLabel4.Size = new System.Drawing.Size(74, 21);
this.uiLabel4.Style = Sunny.UI.UIStyle.Custom;
this.uiLabel4.StyleCustomMode = true;
this.uiLabel4.TabIndex = 0;
@ -343,7 +343,7 @@
this.uiLabel3.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(29)))), ((int)(((byte)(138)))));
this.uiLabel3.Location = new System.Drawing.Point(8, 127);
this.uiLabel3.Name = "uiLabel3";
this.uiLabel3.Size = new System.Drawing.Size(110, 31);
this.uiLabel3.Size = new System.Drawing.Size(74, 21);
this.uiLabel3.Style = Sunny.UI.UIStyle.Custom;
this.uiLabel3.StyleCustomMode = true;
this.uiLabel3.TabIndex = 0;
@ -357,7 +357,7 @@
this.uiLabel2.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(29)))), ((int)(((byte)(138)))));
this.uiLabel2.Location = new System.Drawing.Point(8, 88);
this.uiLabel2.Name = "uiLabel2";
this.uiLabel2.Size = new System.Drawing.Size(110, 31);
this.uiLabel2.Size = new System.Drawing.Size(74, 21);
this.uiLabel2.Style = Sunny.UI.UIStyle.Custom;
this.uiLabel2.StyleCustomMode = true;
this.uiLabel2.TabIndex = 0;
@ -404,7 +404,7 @@
this.uiLabel1.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(29)))), ((int)(((byte)(138)))));
this.uiLabel1.Location = new System.Drawing.Point(8, 49);
this.uiLabel1.Name = "uiLabel1";
this.uiLabel1.Size = new System.Drawing.Size(110, 31);
this.uiLabel1.Size = new System.Drawing.Size(74, 21);
this.uiLabel1.Style = Sunny.UI.UIStyle.Custom;
this.uiLabel1.StyleCustomMode = true;
this.uiLabel1.TabIndex = 0;
@ -631,29 +631,6 @@
this.uiTitlePanel2.TitleColor = System.Drawing.Color.White;
this.uiTitlePanel2.TitleForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(29)))), ((int)(((byte)(138)))));
//
// ucColorListDefect
//
this.ucColorListDefect.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.ucColorListDefect.ColorChanged = null;
this.ucColorListDefect.FillColor = System.Drawing.Color.White;
this.ucColorListDefect.FillColor2 = System.Drawing.Color.White;
this.ucColorListDefect.FillDisableColor = System.Drawing.Color.White;
this.ucColorListDefect.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.ucColorListDefect.Location = new System.Drawing.Point(1, 38);
this.ucColorListDefect.MinimumSize = new System.Drawing.Size(1, 1);
this.ucColorListDefect.Name = "ucColorListDefect";
this.ucColorListDefect.RadiusSides = Sunny.UI.UICornerRadiusSides.None;
this.ucColorListDefect.RectColor = System.Drawing.Color.White;
this.ucColorListDefect.RectDisableColor = System.Drawing.Color.White;
this.ucColorListDefect.RectSides = System.Windows.Forms.ToolStripStatusLabelBorderSides.Bottom;
this.ucColorListDefect.Size = new System.Drawing.Size(121, 42);
this.ucColorListDefect.Style = Sunny.UI.UIStyle.Custom;
this.ucColorListDefect.StyleCustomMode = true;
this.ucColorListDefect.TabIndex = 1;
this.ucColorListDefect.Text = "ucColorList1";
this.ucColorListDefect.TextAlignment = System.Drawing.ContentAlignment.MiddleCenter;
//
// lineChartDefect
//
this.lineChartDefect.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
@ -735,7 +712,7 @@
dataGridViewCellStyle6.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;
dataGridViewCellStyle6.BackColor = System.Drawing.Color.White;
dataGridViewCellStyle6.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
dataGridViewCellStyle6.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(48)))), ((int)(((byte)(48)))));
dataGridViewCellStyle6.ForeColor = System.Drawing.Color.White;
dataGridViewCellStyle6.SelectionBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(204)))), ((int)(((byte)(242)))), ((int)(((byte)(238)))));
dataGridViewCellStyle6.SelectionForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(48)))), ((int)(((byte)(48)))), ((int)(((byte)(48)))));
dataGridViewCellStyle6.WrapMode = System.Windows.Forms.DataGridViewTriState.False;
@ -775,107 +752,6 @@
this.uiDataGridView1.StyleCustomMode = true;
this.uiDataGridView1.TabIndex = 1;
//
// colUid
//
this.colUid.HeaderText = "uid";
this.colUid.MinimumWidth = 8;
this.colUid.Name = "colUid";
this.colUid.ReadOnly = true;
this.colUid.Visible = false;
this.colUid.Width = 150;
//
// colCode
//
this.colCode.HeaderText = "Code";
this.colCode.MinimumWidth = 8;
this.colCode.Name = "colCode";
this.colCode.Visible = false;
this.colCode.Width = 150;
//
// colIndex
//
this.colIndex.DataPropertyName = "Index";
this.colIndex.HeaderText = "图号";
this.colIndex.MinimumWidth = 8;
this.colIndex.Name = "colIndex";
this.colIndex.Width = 50;
//
// colDefectName
//
this.colDefectName.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill;
this.colDefectName.DataPropertyName = "Name";
this.colDefectName.HeaderText = "名称";
this.colDefectName.MinimumWidth = 50;
this.colDefectName.Name = "colDefectName";
this.colDefectName.ReadOnly = true;
//
// colX
//
this.colX.DataPropertyName = "X";
dataGridViewCellStyle3.Format = "N1";
dataGridViewCellStyle3.NullValue = null;
this.colX.DefaultCellStyle = dataGridViewCellStyle3;
this.colX.HeaderText = "X(cm)";
this.colX.MinimumWidth = 8;
this.colX.Name = "colX";
this.colX.ReadOnly = true;
this.colX.Width = 80;
//
// colY
//
this.colY.DataPropertyName = "Y";
dataGridViewCellStyle4.Format = "N2";
dataGridViewCellStyle4.NullValue = null;
this.colY.DefaultCellStyle = dataGridViewCellStyle4;
this.colY.HeaderText = "Y(米)";
this.colY.MinimumWidth = 8;
this.colY.Name = "colY";
this.colY.ReadOnly = true;
this.colY.Width = 80;
//
// colW
//
this.colW.HeaderText = "宽(cm)";
this.colW.MinimumWidth = 8;
this.colW.Name = "colW";
this.colW.Width = 70;
//
// colH
//
this.colH.HeaderText = "高(cm)";
this.colH.MinimumWidth = 8;
this.colH.Name = "colH";
this.colH.Width = 70;
//
// colArea
//
dataGridViewCellStyle5.Format = "N2";
dataGridViewCellStyle5.NullValue = null;
this.colArea.DefaultCellStyle = dataGridViewCellStyle5;
this.colArea.HeaderText = "面积(cm)";
this.colArea.MinimumWidth = 8;
this.colArea.Name = "colArea";
this.colArea.ReadOnly = true;
this.colArea.Width = 80;
//
// colZXD
//
this.colZXD.DataPropertyName = "ZXD";
this.colZXD.HeaderText = "置信度";
this.colZXD.MinimumWidth = 8;
this.colZXD.Name = "colZXD";
this.colZXD.ReadOnly = true;
this.colZXD.Width = 67;
//
// colTarget
//
this.colTarget.DataPropertyName = "Contrast";
this.colTarget.HeaderText = "对比度";
this.colTarget.MinimumWidth = 8;
this.colTarget.Name = "colTarget";
this.colTarget.ReadOnly = true;
this.colTarget.Width = 67;
//
// uiMiniPagination1
//
this.uiMiniPagination1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
@ -1045,15 +921,6 @@
this.uiPanel3.Text = null;
this.uiPanel3.TextAlignment = System.Drawing.ContentAlignment.MiddleCenter;
//
// picDefectImage
//
this.picDefectImage.Dock = System.Windows.Forms.DockStyle.Fill;
this.picDefectImage.Location = new System.Drawing.Point(0, 0);
this.picDefectImage.Margin = new System.Windows.Forms.Padding(0);
this.picDefectImage.Name = "picDefectImage";
this.picDefectImage.Size = new System.Drawing.Size(350, 226);
this.picDefectImage.TabIndex = 1;
//
// pnlScannerImg
//
this.pnlScannerImg.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
@ -1162,6 +1029,62 @@
this.uiTitlePanel7.TitleColor = System.Drawing.Color.White;
this.uiTitlePanel7.TitleForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(29)))), ((int)(((byte)(138)))));
//
// lblScanner2Cache
//
this.lblScanner2Cache.AutoSize = true;
this.lblScanner2Cache.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.lblScanner2Cache.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(29)))), ((int)(((byte)(138)))));
this.lblScanner2Cache.Location = new System.Drawing.Point(323, 134);
this.lblScanner2Cache.Name = "lblScanner2Cache";
this.lblScanner2Cache.Size = new System.Drawing.Size(19, 21);
this.lblScanner2Cache.Style = Sunny.UI.UIStyle.Custom;
this.lblScanner2Cache.StyleCustomMode = true;
this.lblScanner2Cache.TabIndex = 18;
this.lblScanner2Cache.Text = "0";
this.lblScanner2Cache.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// uiLabel13
//
this.uiLabel13.AutoSize = true;
this.uiLabel13.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.uiLabel13.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(29)))), ((int)(((byte)(138)))));
this.uiLabel13.Location = new System.Drawing.Point(190, 134);
this.uiLabel13.Name = "uiLabel13";
this.uiLabel13.Size = new System.Drawing.Size(99, 21);
this.uiLabel13.Style = Sunny.UI.UIStyle.Custom;
this.uiLabel13.StyleCustomMode = true;
this.uiLabel13.TabIndex = 19;
this.uiLabel13.Text = "相机2缓存";
this.uiLabel13.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// lblScanner1Cache
//
this.lblScanner1Cache.AutoSize = true;
this.lblScanner1Cache.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.lblScanner1Cache.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(29)))), ((int)(((byte)(138)))));
this.lblScanner1Cache.Location = new System.Drawing.Point(141, 134);
this.lblScanner1Cache.Name = "lblScanner1Cache";
this.lblScanner1Cache.Size = new System.Drawing.Size(19, 21);
this.lblScanner1Cache.Style = Sunny.UI.UIStyle.Custom;
this.lblScanner1Cache.StyleCustomMode = true;
this.lblScanner1Cache.TabIndex = 16;
this.lblScanner1Cache.Text = "0";
this.lblScanner1Cache.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// uiLabel11
//
this.uiLabel11.AutoSize = true;
this.uiLabel11.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.uiLabel11.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(29)))), ((int)(((byte)(138)))));
this.uiLabel11.Location = new System.Drawing.Point(8, 134);
this.uiLabel11.Name = "uiLabel11";
this.uiLabel11.Size = new System.Drawing.Size(99, 21);
this.uiLabel11.Style = Sunny.UI.UIStyle.Custom;
this.uiLabel11.StyleCustomMode = true;
this.uiLabel11.TabIndex = 17;
this.uiLabel11.Text = "相机1缓存";
this.uiLabel11.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// lblDefectQueue2
//
this.lblDefectQueue2.AutoSize = true;
@ -1169,7 +1092,7 @@
this.lblDefectQueue2.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(29)))), ((int)(((byte)(138)))));
this.lblDefectQueue2.Location = new System.Drawing.Point(323, 169);
this.lblDefectQueue2.Name = "lblDefectQueue2";
this.lblDefectQueue2.Size = new System.Drawing.Size(28, 31);
this.lblDefectQueue2.Size = new System.Drawing.Size(19, 21);
this.lblDefectQueue2.Style = Sunny.UI.UIStyle.Custom;
this.lblDefectQueue2.StyleCustomMode = true;
this.lblDefectQueue2.TabIndex = 0;
@ -1183,7 +1106,7 @@
this.lblDefectQueue1.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(192)))), ((int)(((byte)(192)))));
this.lblDefectQueue1.Location = new System.Drawing.Point(292, 169);
this.lblDefectQueue1.Name = "lblDefectQueue1";
this.lblDefectQueue1.Size = new System.Drawing.Size(28, 31);
this.lblDefectQueue1.Size = new System.Drawing.Size(19, 21);
this.lblDefectQueue1.Style = Sunny.UI.UIStyle.Custom;
this.lblDefectQueue1.StyleCustomMode = true;
this.lblDefectQueue1.TabIndex = 0;
@ -1197,7 +1120,7 @@
this.lblDefectQueue0.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(29)))), ((int)(((byte)(138)))));
this.lblDefectQueue0.Location = new System.Drawing.Point(261, 169);
this.lblDefectQueue0.Name = "lblDefectQueue0";
this.lblDefectQueue0.Size = new System.Drawing.Size(28, 31);
this.lblDefectQueue0.Size = new System.Drawing.Size(19, 21);
this.lblDefectQueue0.Style = Sunny.UI.UIStyle.Custom;
this.lblDefectQueue0.StyleCustomMode = true;
this.lblDefectQueue0.TabIndex = 0;
@ -1211,7 +1134,7 @@
this.lblWaitImageCount.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(29)))), ((int)(((byte)(138)))));
this.lblWaitImageCount.Location = new System.Drawing.Point(117, 169);
this.lblWaitImageCount.Name = "lblWaitImageCount";
this.lblWaitImageCount.Size = new System.Drawing.Size(28, 31);
this.lblWaitImageCount.Size = new System.Drawing.Size(19, 21);
this.lblWaitImageCount.Style = Sunny.UI.UIStyle.Custom;
this.lblWaitImageCount.StyleCustomMode = true;
this.lblWaitImageCount.TabIndex = 0;
@ -1237,7 +1160,7 @@
this.uiLabel9.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(29)))), ((int)(((byte)(138)))));
this.uiLabel9.Location = new System.Drawing.Point(152, 169);
this.uiLabel9.Name = "uiLabel9";
this.uiLabel9.Size = new System.Drawing.Size(134, 31);
this.uiLabel9.Size = new System.Drawing.Size(90, 21);
this.uiLabel9.Style = Sunny.UI.UIStyle.Custom;
this.uiLabel9.StyleCustomMode = true;
this.uiLabel9.TabIndex = 0;
@ -1251,7 +1174,7 @@
this.uiLabel8.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(29)))), ((int)(((byte)(138)))));
this.uiLabel8.Location = new System.Drawing.Point(8, 169);
this.uiLabel8.Name = "uiLabel8";
this.uiLabel8.Size = new System.Drawing.Size(134, 31);
this.uiLabel8.Size = new System.Drawing.Size(90, 21);
this.uiLabel8.Style = Sunny.UI.UIStyle.Custom;
this.uiLabel8.StyleCustomMode = true;
this.uiLabel8.TabIndex = 0;
@ -1265,7 +1188,7 @@
this.uiLabel7.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(29)))), ((int)(((byte)(138)))));
this.uiLabel7.Location = new System.Drawing.Point(8, 82);
this.uiLabel7.Name = "uiLabel7";
this.uiLabel7.Size = new System.Drawing.Size(158, 31);
this.uiLabel7.Size = new System.Drawing.Size(106, 21);
this.uiLabel7.Style = Sunny.UI.UIStyle.Custom;
this.uiLabel7.StyleCustomMode = true;
this.uiLabel7.TabIndex = 0;
@ -1279,68 +1202,145 @@
this.uiLabel6.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(29)))), ((int)(((byte)(138)))));
this.uiLabel6.Location = new System.Drawing.Point(8, 41);
this.uiLabel6.Name = "uiLabel6";
this.uiLabel6.Size = new System.Drawing.Size(62, 31);
this.uiLabel6.Size = new System.Drawing.Size(42, 21);
this.uiLabel6.Style = Sunny.UI.UIStyle.Custom;
this.uiLabel6.StyleCustomMode = true;
this.uiLabel6.TabIndex = 0;
this.uiLabel6.Text = "光源";
this.uiLabel6.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// lblScanner1Cache
// picDefectImage
//
this.lblScanner1Cache.AutoSize = true;
this.lblScanner1Cache.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.lblScanner1Cache.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(29)))), ((int)(((byte)(138)))));
this.lblScanner1Cache.Location = new System.Drawing.Point(141, 134);
this.lblScanner1Cache.Name = "lblScanner1Cache";
this.lblScanner1Cache.Size = new System.Drawing.Size(28, 31);
this.lblScanner1Cache.Style = Sunny.UI.UIStyle.Custom;
this.lblScanner1Cache.StyleCustomMode = true;
this.lblScanner1Cache.TabIndex = 16;
this.lblScanner1Cache.Text = "0";
this.lblScanner1Cache.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
this.picDefectImage.Dock = System.Windows.Forms.DockStyle.Fill;
this.picDefectImage.Location = new System.Drawing.Point(0, 0);
this.picDefectImage.Margin = new System.Windows.Forms.Padding(0);
this.picDefectImage.Name = "picDefectImage";
this.picDefectImage.Size = new System.Drawing.Size(350, 226);
this.picDefectImage.TabIndex = 1;
//
// uiLabel11
// ucColorListDefect
//
this.uiLabel11.AutoSize = true;
this.uiLabel11.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.uiLabel11.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(29)))), ((int)(((byte)(138)))));
this.uiLabel11.Location = new System.Drawing.Point(8, 134);
this.uiLabel11.Name = "uiLabel11";
this.uiLabel11.Size = new System.Drawing.Size(148, 31);
this.uiLabel11.Style = Sunny.UI.UIStyle.Custom;
this.uiLabel11.StyleCustomMode = true;
this.uiLabel11.TabIndex = 17;
this.uiLabel11.Text = "相机1缓存";
this.uiLabel11.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
this.ucColorListDefect.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.ucColorListDefect.ColorChanged = null;
this.ucColorListDefect.FillColor = System.Drawing.Color.White;
this.ucColorListDefect.FillColor2 = System.Drawing.Color.White;
this.ucColorListDefect.FillDisableColor = System.Drawing.Color.White;
this.ucColorListDefect.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.ucColorListDefect.Location = new System.Drawing.Point(1, 38);
this.ucColorListDefect.MinimumSize = new System.Drawing.Size(1, 1);
this.ucColorListDefect.Name = "ucColorListDefect";
this.ucColorListDefect.RadiusSides = Sunny.UI.UICornerRadiusSides.None;
this.ucColorListDefect.RectColor = System.Drawing.Color.White;
this.ucColorListDefect.RectDisableColor = System.Drawing.Color.White;
this.ucColorListDefect.RectSides = System.Windows.Forms.ToolStripStatusLabelBorderSides.Bottom;
this.ucColorListDefect.Size = new System.Drawing.Size(121, 42);
this.ucColorListDefect.Style = Sunny.UI.UIStyle.Custom;
this.ucColorListDefect.StyleCustomMode = true;
this.ucColorListDefect.TabIndex = 1;
this.ucColorListDefect.Text = "ucColorList1";
this.ucColorListDefect.TextAlignment = System.Drawing.ContentAlignment.MiddleCenter;
//
// lblScanner2Cache
// colUid
//
this.lblScanner2Cache.AutoSize = true;
this.lblScanner2Cache.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.lblScanner2Cache.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(29)))), ((int)(((byte)(138)))));
this.lblScanner2Cache.Location = new System.Drawing.Point(323, 134);
this.lblScanner2Cache.Name = "lblScanner2Cache";
this.lblScanner2Cache.Size = new System.Drawing.Size(28, 31);
this.lblScanner2Cache.Style = Sunny.UI.UIStyle.Custom;
this.lblScanner2Cache.StyleCustomMode = true;
this.lblScanner2Cache.TabIndex = 18;
this.lblScanner2Cache.Text = "0";
this.lblScanner2Cache.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
this.colUid.HeaderText = "uid";
this.colUid.MinimumWidth = 8;
this.colUid.Name = "colUid";
this.colUid.ReadOnly = true;
this.colUid.Visible = false;
this.colUid.Width = 150;
//
// uiLabel13
// colCode
//
this.uiLabel13.AutoSize = true;
this.uiLabel13.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.uiLabel13.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(29)))), ((int)(((byte)(138)))));
this.uiLabel13.Location = new System.Drawing.Point(190, 134);
this.uiLabel13.Name = "uiLabel13";
this.uiLabel13.Size = new System.Drawing.Size(148, 31);
this.uiLabel13.Style = Sunny.UI.UIStyle.Custom;
this.uiLabel13.StyleCustomMode = true;
this.uiLabel13.TabIndex = 19;
this.uiLabel13.Text = "相机2缓存";
this.uiLabel13.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
this.colCode.HeaderText = "Code";
this.colCode.MinimumWidth = 8;
this.colCode.Name = "colCode";
this.colCode.Visible = false;
this.colCode.Width = 150;
//
// colIndex
//
this.colIndex.DataPropertyName = "Index";
this.colIndex.HeaderText = "图号";
this.colIndex.MinimumWidth = 8;
this.colIndex.Name = "colIndex";
this.colIndex.Width = 50;
//
// colDefectName
//
this.colDefectName.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill;
this.colDefectName.DataPropertyName = "Name";
this.colDefectName.HeaderText = "名称";
this.colDefectName.MinimumWidth = 50;
this.colDefectName.Name = "colDefectName";
this.colDefectName.ReadOnly = true;
//
// colX
//
this.colX.DataPropertyName = "X";
dataGridViewCellStyle3.Format = "N1";
dataGridViewCellStyle3.NullValue = null;
this.colX.DefaultCellStyle = dataGridViewCellStyle3;
this.colX.HeaderText = "X(cm)";
this.colX.MinimumWidth = 8;
this.colX.Name = "colX";
this.colX.ReadOnly = true;
this.colX.Width = 80;
//
// colY
//
this.colY.DataPropertyName = "Y";
dataGridViewCellStyle4.Format = "N2";
dataGridViewCellStyle4.NullValue = null;
this.colY.DefaultCellStyle = dataGridViewCellStyle4;
this.colY.HeaderText = "Y(米)";
this.colY.MinimumWidth = 8;
this.colY.Name = "colY";
this.colY.ReadOnly = true;
this.colY.Width = 80;
//
// colW
//
this.colW.HeaderText = "宽(cm)";
this.colW.MinimumWidth = 8;
this.colW.Name = "colW";
this.colW.Width = 70;
//
// colH
//
this.colH.HeaderText = "高(cm)";
this.colH.MinimumWidth = 8;
this.colH.Name = "colH";
this.colH.Width = 70;
//
// colArea
//
dataGridViewCellStyle5.Format = "N2";
dataGridViewCellStyle5.NullValue = null;
this.colArea.DefaultCellStyle = dataGridViewCellStyle5;
this.colArea.HeaderText = "面积(cm)";
this.colArea.MinimumWidth = 8;
this.colArea.Name = "colArea";
this.colArea.ReadOnly = true;
this.colArea.Width = 80;
//
// colZXD
//
this.colZXD.DataPropertyName = "ZXD";
this.colZXD.HeaderText = "置信度";
this.colZXD.MinimumWidth = 8;
this.colZXD.Name = "colZXD";
this.colZXD.ReadOnly = true;
this.colZXD.Width = 67;
//
// colTarget
//
this.colTarget.DataPropertyName = "Contrast";
this.colTarget.HeaderText = "对比度";
this.colTarget.MinimumWidth = 8;
this.colTarget.Name = "colTarget";
this.colTarget.ReadOnly = true;
this.colTarget.Width = 67;
//
// FHome
//
@ -1434,6 +1434,11 @@
private Sunny.UI.UILabel uiLabel9;
private System.Windows.Forms.Button button1;
private Sunny.UI.UITextBox txtBarCodeName;
private Sunny.UI.UINumPadTextBox numErpLen;
private Sunny.UI.UILabel lblScanner2Cache;
private Sunny.UI.UILabel uiLabel13;
private Sunny.UI.UILabel lblScanner1Cache;
private Sunny.UI.UILabel uiLabel11;
private System.Windows.Forms.DataGridViewTextBoxColumn colUid;
private System.Windows.Forms.DataGridViewTextBoxColumn colCode;
private System.Windows.Forms.DataGridViewTextBoxColumn colIndex;
@ -1445,10 +1450,5 @@
private System.Windows.Forms.DataGridViewTextBoxColumn colArea;
private System.Windows.Forms.DataGridViewTextBoxColumn colZXD;
private System.Windows.Forms.DataGridViewTextBoxColumn colTarget;
private Sunny.UI.UINumPadTextBox numErpLen;
private Sunny.UI.UILabel lblScanner2Cache;
private Sunny.UI.UILabel uiLabel13;
private Sunny.UI.UILabel lblScanner1Cache;
private Sunny.UI.UILabel uiLabel11;
}
}

View File

@ -881,6 +881,9 @@ namespace LeatherApp.Page
/// <param name="matone"></param>
/// <param name="devIndex"></param>
private void callBackScanMatEvent(int num, Mat matone, int devIndex) //ScanEvent
{
int errStep = 0;
try
{
if (Config.Camer_Name == CamerDevNameEnum.)
{
@ -903,12 +906,13 @@ namespace LeatherApp.Page
}
}));
}
errStep = 1;
if (!devContainer.state || (currentState != CurrentStateEnum. && currentState != CurrentStateEnum.))
{
matone.Dispose();
return;
}
errStep = 2;
lock (lockCurrKey)
{
if (currKey == 0 || !htTask.ContainsKey(currKey))
@ -923,6 +927,7 @@ namespace LeatherApp.Page
return;
}
}
errStep = 3;
Records curRecord = Hashtable.Synchronized(htTask)[currKey] as Records;
Device.PhotoLib.PhotoTask task;
Mat myMat = matone;//.Clone();
@ -942,7 +947,7 @@ namespace LeatherApp.Page
scanPhotos[2] = new ScanPhotoInfo(devIndex, num, myMat);
return;
}
errStep = 4;
//--
scanPhotos[devIndex] = new ScanPhotoInfo(devIndex, num, myMat);
if (scanPhotos[0] == null || scanPhotos[1] == null)
@ -988,10 +993,11 @@ namespace LeatherApp.Page
if (scanPhotos[2] != null)//容错图前移到正常位置
{
AddTextEvent(DateTime.Now, $"拍照{Thread.CurrentThread.ManagedThreadId}", $"(图像{scanPhotos[2].photoIndex})-采集卡({scanPhotos[2].devIndex}) 容错队列图前移。");
scanPhotos[scanPhotos[2].photoIndex] = scanPhotos[2];
scanPhotos[scanPhotos[2].devIndex] = scanPhotos[2];
scanPhotos[2] = null;
}
curRecord.ScannerPhotoCount++;
errStep = 5;
}
//长度剩余提醒
@ -999,7 +1005,7 @@ namespace LeatherApp.Page
{
AddTextEvent(DateTime.Now, $"告警{Thread.CurrentThread.ManagedThreadId}", $"已达剩余长度不足提醒!({curRecord.ErpLen - curRecord.Len}<={Config.residueWarnningLen})", WarningEnum.High);
}
errStep = 6;
//
AddTextEvent(DateTime.Now, $"拍照{Thread.CurrentThread.ManagedThreadId}", $"待处理图像队列:{curRecord.ScannerPhotoCount - curRecord.ScannerPhotoFinishCount}张");
if (task.scanPhotos0 != null && task.scanPhotos1 != null)
@ -1007,6 +1013,7 @@ namespace LeatherApp.Page
var scanPhoto = task.scanPhotos0 as ScanPhotoInfo;
curRecord.dicPhoto_Defect.TryAdd(scanPhoto.photoIndex, false);//加入索引,默认无瑕疵
AddTextEvent(DateTime.Now, $"拍照{Thread.CurrentThread.ManagedThreadId}", $"图像索引:{scanPhoto.photoIndex},标识数:{curRecord.dicPhoto_Defect.Count}");
errStep = 7;
//暂停:瑕疵二次判断
if (this.defectPauseForUser)
{
@ -1034,7 +1041,7 @@ namespace LeatherApp.Page
this.devContainer.devIOCard.writeBitState(0, 1, false);
});
}
errStep = 8;
//不能使用同步Invoke方式会使相机超时丢帧
this.BeginInvoke(new System.Action(() =>
{
@ -1090,7 +1097,7 @@ namespace LeatherApp.Page
//
//double len = Math.Round((res.photoIndex + 1) * bmpHeight * 1.0d / Config.cm2px_y + 0.005f, 2);
this.reDrawDefectPoints(curRecord.DefectInfoList);
errStep = 9;
//自动继续运行设备(这里临时暂停后不能再急停,否则无法继续)
if (!Config.StopPLC)
this.devContainer.devPlc.runDev();
@ -1112,12 +1119,18 @@ namespace LeatherApp.Page
}
}
}
errStep = 10;
task.record = curRecord;
task.finishEvent = callBackPhotoEvent;
devContainer.libPhoto.add(task);
AddTextEvent(DateTime.Now, $"拍照{Thread.CurrentThread.ManagedThreadId}", $"Dev={devIndex},图像{scanPhoto.photoIndex},已加入图像处理队列");
errStep = 11;
}
}
catch (Exception e)
{
AddTextEvent(DateTime.Now, $"拍照{Thread.CurrentThread.ManagedThreadId}", $"errStep:{errStep}-{e.Message}", WarningEnum.High);
}
}
private void callBackPhotoEvent(Device.PhotoLib.PhotoTask task)
{
@ -1281,7 +1294,7 @@ namespace LeatherApp.Page
{
step = 1;
AddTextEvent(DateTime.Now,$"检测完成{Thread.CurrentThread.ManagedThreadId}", $"(图像{res.photoIndex})-瑕疵检测完成,共{res.excelTable.Rows.Count}个瑕疵!各环节用时:{string.Join(",",res.stopwatch)}");
//AddTextEvent(DateTime.Now,$"打标完成", $"第 ({res.tag}) 张照片,计算过程:{res.resultInfo}");
//AddTextEvent(DateTime.Now,$"打标完成", $"第 ({res.photoIndex}) 张照片,计算过程:{res.resultInfo}");
if (!Config.IsSaveAllImage && Config.IsSaveDefectSourceImage)
OpenCvSharp.Extensions.BitmapConverter.ToBitmap(res.bmp).Save($"{dirSourcePath}{res.photoIndex}.bmp", ImageFormat.Bmp);
@ -1459,7 +1472,10 @@ namespace LeatherApp.Page
int count;
foreach(GradeLimit item in gradeLimitList)
{
if((model.DefectInfoList != null)&&(model.DefectInfoList.Count >0))
count = model.DefectInfoList.Where(m => m.Code == item.Code).Count();
else
count = 0;
if (count <= item.A && model.Grade <= 1) model.Grade = 1;
else if (count <= item.B && item.B > 0 && model.Grade <= 2) model.Grade = 2;
else if (count <= item.C && item.C > 0 && model.Grade <= 3) model.Grade = 3;
@ -1480,8 +1496,10 @@ namespace LeatherApp.Page
catch (Exception ex)
{
_isDefect = false;
if (model==null) AddTextEvent(DateTime.Now,"入库失败", $"记录({key})不存在{step}" + ex.Message, WarningEnum.High);
else AddTextEvent(DateTime.Now,"入库失败", $"({key}) 批号({model.BatchId})检测完成,但保存检测记录失败{step}:" + ex.Message, WarningEnum.High);
if (model==null)
AddTextEvent(DateTime.Now,"入库失败", $"记录({key})不存在{step}" + ex.Message, WarningEnum.High);
else
AddTextEvent(DateTime.Now,"入库失败", $"({key}) 批号({model.BatchId})检测完成,但保存检测记录失败{step}:" + ex.Message, WarningEnum.High);
warning(WarningEnum.High, true);//暂停
}
}
@ -1934,7 +1952,7 @@ namespace LeatherApp.Page
{
step = 1;
AddTextEvent(DateTime.Now, $"检测完成{Thread.CurrentThread.ManagedThreadId}", $"(图像{res.photoIndex})-瑕疵检测完成,共{res.excelTable.Rows.Count}个瑕疵!各环节用时:{string.Join(",", res.stopwatch)}");
//AddTextEvent(DateTime.Now,$"打标完成", $"第 ({res.tag}) 张照片,计算过程:{res.resultInfo}");
//AddTextEvent(DateTime.Now,$"打标完成", $"第 ({res.photoIndex}) 张照片,计算过程:{res.resultInfo}");
}

View File

@ -318,7 +318,7 @@ namespace LeatherApp.Utils
// 计算当前行的灰度直方图
Mat absolute_histo = new Mat();
Cv2.CalcHist(new Mat[] { smoothed_image }, new int[] { 0 }, new Mat(), absolute_histo, 1, new int[] { 256 }, new Rangef[] { new Rangef(0, 256) });
Cv2.GaussianBlur(current_segment, smoothed_image, new Size(9, 1), 0);
Cv2.GaussianBlur(current_segment, smoothed_image, new Size(19, 1), 0);
// 对图片进行分割i+1
//double otsu_threshold;
@ -326,7 +326,7 @@ namespace LeatherApp.Utils
Cv2.Threshold(smoothed_image, smoothed_image, 0, 255, ThresholdTypes.Binary | ThresholdTypes.Otsu);
// 使用形态学操作进行孔洞填充
Mat kernel = Cv2.GetStructuringElement(MorphShapes.Rect, new Size(5, 1));
Mat kernel = Cv2.GetStructuringElement(MorphShapes.Rect, new Size(25, 1));
Mat filled_image = new Mat();
Cv2.MorphologyEx(smoothed_image, filled_image, MorphTypes.Close, kernel);

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -213,14 +213,11 @@ E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\LeatherApp\b
E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\LeatherApp\bin\Debug\ClosedXML.xml
E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\LeatherApp\bin\Debug\DocumentFormat.OpenXml.xml
E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\LeatherApp\bin\Debug\ExcelNumberFormat.xml
E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\LeatherApp\bin\Debug\MvCodeReaderSDK.Net.xml
E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\LeatherApp\bin\Debug\MvFGCtrlC.Net.xml
E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\LeatherApp\bin\Debug\OpenCvSharp.Extensions.xml
E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\LeatherApp\bin\Debug\S7.Net.xml
E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\LeatherApp\bin\Debug\SixLabors.Fonts.xml
E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\LeatherApp\bin\Debug\System.Drawing.Common.xml
E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\LeatherApp\bin\Debug\System.IO.Packaging.xml
E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\LeatherApp\bin\Debug\MySql.Data.xml
E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\LeatherApp\bin\Debug\Interop.BDaqOcxLib.dll
E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\LeatherApp\bin\Debug\AxInterop.BDaqOcxLib.dll
E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\LeatherApp\obj\Debug\LeatherApp.csproj.AssemblyReference.cache

View File

@ -28,3 +28,11 @@ E:\CPL\迈沐智能项目\2023\革博士\交付资料\革博士项目交付资
E:\CPL\迈沐智能项目\2023\革博士\交付资料\革博士项目交付资料\LeatherProject\Models\obj\Debug\Models.csproj.CopyComplete
E:\CPL\迈沐智能项目\2023\革博士\交付资料\革博士项目交付资料\LeatherProject\Models\obj\Debug\Models.dll
E:\CPL\迈沐智能项目\2023\革博士\交付资料\革博士项目交付资料\LeatherProject\Models\obj\Debug\Models.pdb
E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\Models\bin\Debug\Models.dll
E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\Models\bin\Debug\Models.pdb
E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\Models\bin\Debug\SqlSugar.dll
E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\Models\obj\Debug\Models.csproj.AssemblyReference.cache
E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\Models\obj\Debug\Models.csproj.CoreCompileInputs.cache
E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\Models\obj\Debug\Models.csproj.CopyComplete
E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\Models\obj\Debug\Models.dll
E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\Models\obj\Debug\Models.pdb

View File

@ -95,3 +95,20 @@ E:\CPL\迈沐智能项目\2023\革博士\交付资料\革博士项目交付资
E:\CPL\迈沐智能项目\2023\革博士\交付资料\革博士项目交付资料\LeatherProject\Service\obj\Debug\Service.csproj.CopyComplete
E:\CPL\迈沐智能项目\2023\革博士\交付资料\革博士项目交付资料\LeatherProject\Service\obj\Debug\Service.dll
E:\CPL\迈沐智能项目\2023\革博士\交付资料\革博士项目交付资料\LeatherProject\Service\obj\Debug\Service.pdb
E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\Service\bin\Debug\Service.dll.config
E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\Service\bin\Debug\Service.dll
E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\Service\bin\Debug\Service.pdb
E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\Service\bin\Debug\Models.dll
E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\Service\bin\Debug\Newtonsoft.Json.dll
E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\Service\bin\Debug\SqlSugar.dll
E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\Service\bin\Debug\System.Buffers.dll
E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\Service\bin\Debug\System.Memory.dll
E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\Service\bin\Debug\System.Numerics.Vectors.dll
E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\Service\bin\Debug\System.Runtime.CompilerServices.Unsafe.dll
E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\Service\bin\Debug\System.Threading.Tasks.Extensions.dll
E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\Service\bin\Debug\Models.pdb
E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\Service\obj\Debug\Service.csproj.AssemblyReference.cache
E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\Service\obj\Debug\Service.csproj.CoreCompileInputs.cache
E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\Service\obj\Debug\Service.csproj.CopyComplete
E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\Service\obj\Debug\Service.dll
E:\CPL\迈沐智能项目\2023\革博士\源码\V1.0\LeatherProject\Service\obj\Debug\Service.pdb

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.8 KiB

View File

@ -0,0 +1,23 @@
The MIT License (MIT)
Copyright (c) .NET Foundation and Contributors
All rights reserved.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View File

@ -0,0 +1,884 @@
.NET Runtime uses third-party libraries or other resources that may be
distributed under licenses different than the .NET Runtime software.
In the event that we accidentally failed to list a required notice, please
bring it to our attention. Post an issue or email us:
dotnet@microsoft.com
The attached notices are provided for information only.
License notice for ASP.NET
-------------------------------
Copyright (c) .NET Foundation. All rights reserved.
Licensed under the Apache License, Version 2.0.
Available at
https://github.com/aspnet/AspNetCore/blob/master/LICENSE.txt
License notice for Slicing-by-8
-------------------------------
http://sourceforge.net/projects/slicing-by-8/
Copyright (c) 2004-2006 Intel Corporation - All Rights Reserved
This software program is licensed subject to the BSD License, available at
http://www.opensource.org/licenses/bsd-license.html.
License notice for Unicode data
-------------------------------
https://www.unicode.org/license.html
Copyright © 1991-2020 Unicode, Inc. All rights reserved.
Distributed under the Terms of Use in https://www.unicode.org/copyright.html.
Permission is hereby granted, free of charge, to any person obtaining
a copy of the Unicode data files and any associated documentation
(the "Data Files") or Unicode software and any associated documentation
(the "Software") to deal in the Data Files or Software
without restriction, including without limitation the rights to use,
copy, modify, merge, publish, distribute, and/or sell copies of
the Data Files or Software, and to permit persons to whom the Data Files
or Software are furnished to do so, provided that either
(a) this copyright and permission notice appear with all copies
of the Data Files or Software, or
(b) this copyright and permission notice appear in associated
Documentation.
THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF
ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT OF THIRD PARTY RIGHTS.
IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS
NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL
DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
PERFORMANCE OF THE DATA FILES OR SOFTWARE.
Except as contained in this notice, the name of a copyright holder
shall not be used in advertising or otherwise to promote the sale,
use or other dealings in these Data Files or Software without prior
written authorization of the copyright holder.
License notice for Zlib
-----------------------
https://github.com/madler/zlib
http://zlib.net/zlib_license.html
/* zlib.h -- interface of the 'zlib' general purpose compression library
version 1.2.11, January 15th, 2017
Copyright (C) 1995-2017 Jean-loup Gailly and Mark Adler
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
arising from the use of this software.
Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute it
freely, subject to the following restrictions:
1. The origin of this software must not be misrepresented; you must not
claim that you wrote the original software. If you use this software
in a product, an acknowledgment in the product documentation would be
appreciated but is not required.
2. Altered source versions must be plainly marked as such, and must not be
misrepresented as being the original software.
3. This notice may not be removed or altered from any source distribution.
Jean-loup Gailly Mark Adler
jloup@gzip.org madler@alumni.caltech.edu
*/
License notice for Mono
-------------------------------
http://www.mono-project.com/docs/about-mono/
Copyright (c) .NET Foundation Contributors
MIT License
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the Software), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
License notice for International Organization for Standardization
-----------------------------------------------------------------
Portions (C) International Organization for Standardization 1986:
Permission to copy in any form is granted for use with
conforming SGML systems and applications as defined in
ISO 8879, provided this notice is included in all copies.
License notice for Intel
------------------------
"Copyright (c) 2004-2006 Intel Corporation - All Rights Reserved
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
License notice for Xamarin and Novell
-------------------------------------
Copyright (c) 2015 Xamarin, Inc (http://www.xamarin.com)
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
Copyright (c) 2011 Novell, Inc (http://www.novell.com)
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
Third party notice for W3C
--------------------------
"W3C SOFTWARE AND DOCUMENT NOTICE AND LICENSE
Status: This license takes effect 13 May, 2015.
This work is being provided by the copyright holders under the following license.
License
By obtaining and/or copying this work, you (the licensee) agree that you have read, understood, and will comply with the following terms and conditions.
Permission to copy, modify, and distribute this work, with or without modification, for any purpose and without fee or royalty is hereby granted, provided that you include the following on ALL copies of the work or portions thereof, including modifications:
The full text of this NOTICE in a location viewable to users of the redistributed or derivative work.
Any pre-existing intellectual property disclaimers, notices, or terms and conditions. If none exist, the W3C Software and Document Short Notice should be included.
Notice of any changes or modifications, through a copyright statement on the new code or document such as "This software or document includes material copied from or derived from [title and URI of the W3C document]. Copyright © [YEAR] W3C® (MIT, ERCIM, Keio, Beihang)."
Disclaimers
THIS WORK IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF THE SOFTWARE OR DOCUMENT WILL NOT INFRINGE ANY THIRD PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS.
COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE SOFTWARE OR DOCUMENT.
The name and trademarks of copyright holders may NOT be used in advertising or publicity pertaining to the work without specific, written prior permission. Title to copyright in this work will at all times remain with copyright holders."
License notice for Bit Twiddling Hacks
--------------------------------------
Bit Twiddling Hacks
By Sean Eron Anderson
seander@cs.stanford.edu
Individually, the code snippets here are in the public domain (unless otherwise
noted) — feel free to use them however you please. The aggregate collection and
descriptions are © 1997-2005 Sean Eron Anderson. The code and descriptions are
distributed in the hope that they will be useful, but WITHOUT ANY WARRANTY and
without even the implied warranty of merchantability or fitness for a particular
purpose.
License notice for Brotli
--------------------------------------
Copyright (c) 2009, 2010, 2013-2016 by the Brotli Authors.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
compress_fragment.c:
Copyright (c) 2011, Google Inc.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above
copyright notice, this list of conditions and the following disclaimer
in the documentation and/or other materials provided with the
distribution.
* Neither the name of Google Inc. nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
""AS IS"" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
decode_fuzzer.c:
Copyright (c) 2015 The Chromium Authors. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above
copyright notice, this list of conditions and the following disclaimer
in the documentation and/or other materials provided with the
distribution.
* Neither the name of Google Inc. nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
""AS IS"" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
License notice for Json.NET
-------------------------------
https://github.com/JamesNK/Newtonsoft.Json/blob/master/LICENSE.md
The MIT License (MIT)
Copyright (c) 2007 James Newton-King
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
the Software, and to permit persons to whom the Software is furnished to do so,
subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
License notice for vectorized base64 encoding / decoding
--------------------------------------------------------
Copyright (c) 2005-2007, Nick Galbreath
Copyright (c) 2013-2017, Alfred Klomp
Copyright (c) 2015-2017, Wojciech Mula
Copyright (c) 2016-2017, Matthieu Darbois
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:
- Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
- Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
License notice for RFC 3492
---------------------------
The punycode implementation is based on the sample code in RFC 3492
Copyright (C) The Internet Society (2003). All Rights Reserved.
This document and translations of it may be copied and furnished to
others, and derivative works that comment on or otherwise explain it
or assist in its implementation may be prepared, copied, published
and distributed, in whole or in part, without restriction of any
kind, provided that the above copyright notice and this paragraph are
included on all such copies and derivative works. However, this
document itself may not be modified in any way, such as by removing
the copyright notice or references to the Internet Society or other
Internet organizations, except as needed for the purpose of
developing Internet standards in which case the procedures for
copyrights defined in the Internet Standards process must be
followed, or as required to translate it into languages other than
English.
The limited permissions granted above are perpetual and will not be
revoked by the Internet Society or its successors or assigns.
This document and the information contained herein is provided on an
"AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
License notice for Algorithm from Internet Draft document "UUIDs and GUIDs"
---------------------------------------------------------------------------
Copyright (c) 1990- 1993, 1996 Open Software Foundation, Inc.
Copyright (c) 1989 by Hewlett-Packard Company, Palo Alto, Ca. &
Digital Equipment Corporation, Maynard, Mass.
To anyone who acknowledges that this file is provided "AS IS"
without any express or implied warranty: permission to use, copy,
modify, and distribute this file for any purpose is hereby
granted without fee, provided that the above copyright notices and
this notice appears in all source code copies, and that none of
the names of Open Software Foundation, Inc., Hewlett-Packard
Company, or Digital Equipment Corporation be used in advertising
or publicity pertaining to distribution of the software without
specific, written prior permission. Neither Open Software
Foundation, Inc., Hewlett-Packard Company, Microsoft, nor Digital Equipment
Corporation makes any representations about the suitability of
this software for any purpose.
Copyright(C) The Internet Society 1997. All Rights Reserved.
This document and translations of it may be copied and furnished to others,
and derivative works that comment on or otherwise explain it or assist in
its implementation may be prepared, copied, published and distributed, in
whole or in part, without restriction of any kind, provided that the above
copyright notice and this paragraph are included on all such copies and
derivative works.However, this document itself may not be modified in any
way, such as by removing the copyright notice or references to the Internet
Society or other Internet organizations, except as needed for the purpose of
developing Internet standards in which case the procedures for copyrights
defined in the Internet Standards process must be followed, or as required
to translate it into languages other than English.
The limited permissions granted above are perpetual and will not be revoked
by the Internet Society or its successors or assigns.
This document and the information contained herein is provided on an "AS IS"
basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE
DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO
ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY
RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A
PARTICULAR PURPOSE.
License notice for Algorithm from RFC 4122 -
A Universally Unique IDentifier (UUID) URN Namespace
----------------------------------------------------
Copyright (c) 1990- 1993, 1996 Open Software Foundation, Inc.
Copyright (c) 1989 by Hewlett-Packard Company, Palo Alto, Ca. &
Digital Equipment Corporation, Maynard, Mass.
Copyright (c) 1998 Microsoft.
To anyone who acknowledges that this file is provided "AS IS"
without any express or implied warranty: permission to use, copy,
modify, and distribute this file for any purpose is hereby
granted without fee, provided that the above copyright notices and
this notice appears in all source code copies, and that none of
the names of Open Software Foundation, Inc., Hewlett-Packard
Company, Microsoft, or Digital Equipment Corporation be used in
advertising or publicity pertaining to distribution of the software
without specific, written prior permission. Neither Open Software
Foundation, Inc., Hewlett-Packard Company, Microsoft, nor Digital
Equipment Corporation makes any representations about the
suitability of this software for any purpose."
License notice for The LLVM Compiler Infrastructure
---------------------------------------------------
Developed by:
LLVM Team
University of Illinois at Urbana-Champaign
http://llvm.org
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal with
the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
of the Software, and to permit persons to whom the Software is furnished to do
so, subject to the following conditions:
* Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimers.
* Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimers in the
documentation and/or other materials provided with the distribution.
* Neither the names of the LLVM Team, University of Illinois at
Urbana-Champaign, nor the names of its contributors may be used to
endorse or promote products derived from this Software without specific
prior written permission.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE
SOFTWARE.
License notice for Bob Jenkins
------------------------------
By Bob Jenkins, 1996. bob_jenkins@burtleburtle.net. You may use this
code any way you wish, private, educational, or commercial. It's free.
License notice for Greg Parker
------------------------------
Greg Parker gparker@cs.stanford.edu December 2000
This code is in the public domain and may be copied or modified without
permission.
License notice for libunwind based code
----------------------------------------
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
License notice for Printing Floating-Point Numbers (Dragon4)
------------------------------------------------------------
/******************************************************************************
Copyright (c) 2014 Ryan Juckett
http://www.ryanjuckett.com/
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
arising from the use of this software.
Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute it
freely, subject to the following restrictions:
1. The origin of this software must not be misrepresented; you must not
claim that you wrote the original software. If you use this software
in a product, an acknowledgment in the product documentation would be
appreciated but is not required.
2. Altered source versions must be plainly marked as such, and must not be
misrepresented as being the original software.
3. This notice may not be removed or altered from any source
distribution.
******************************************************************************/
License notice for Printing Floating-point Numbers (Grisu3)
-----------------------------------------------------------
Copyright 2012 the V8 project authors. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above
copyright notice, this list of conditions and the following
disclaimer in the documentation and/or other materials provided
with the distribution.
* Neither the name of Google Inc. nor the names of its
contributors may be used to endorse or promote products derived
from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
License notice for xxHash
-------------------------
xxHash Library
Copyright (c) 2012-2014, Yann Collet
All rights reserved.
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice, this
list of conditions and the following disclaimer in the documentation and/or
other materials provided with the distribution.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
License notice for Berkeley SoftFloat Release 3e
------------------------------------------------
https://github.com/ucb-bar/berkeley-softfloat-3
https://github.com/ucb-bar/berkeley-softfloat-3/blob/master/COPYING.txt
License for Berkeley SoftFloat Release 3e
John R. Hauser
2018 January 20
The following applies to the whole of SoftFloat Release 3e as well as to
each source file individually.
Copyright 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018 The Regents of the
University of California. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice,
this list of conditions, and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions, and the following disclaimer in the
documentation and/or other materials provided with the distribution.
3. Neither the name of the University nor the names of its contributors
may be used to endorse or promote products derived from this software
without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS "AS IS", AND ANY
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE
DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
License notice for Xorshift RNGs
--------------------------------
George Marsaglia
2003-07-04
Journal of Statistical Software
License: http://creativecommons.org/licenses/by/3.0/
https://www.jstatsoft.org/article/view/v008i14
https://www.jstatsoft.org/index.php/jss/article/view/v008i14/xorshift.pdf
License notice for Xorshift (Wikipedia)
---------------------------------------
https://en.wikipedia.org/wiki/Xorshift
License: https://en.wikipedia.org/wiki/Wikipedia:Text_of_Creative_Commons_Attribution-ShareAlike_3.0_Unported_License
License for fastmod (https://github.com/lemire/fastmod)
--------------------------------------
Copyright 2018 Daniel Lemire
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
License notice for The C++ REST SDK
-----------------------------------
C++ REST SDK
The MIT License (MIT)
Copyright (c) Microsoft Corporation
All rights reserved.
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
the Software, and to permit persons to whom the Software is furnished to do so,
subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
License notice for MessagePack-CSharp
-------------------------------------
MessagePack for C#
MIT License
Copyright (c) 2017 Yoshifumi Kawai
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
License notice for lz4net
-------------------------------------
lz4net
Copyright (c) 2013-2017, Milosz Krajewski
All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
License notice for Nerdbank.Streams
-----------------------------------
The MIT License (MIT)
Copyright (c) Andrew Arnott
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
License notice for RapidJSON
----------------------------
Tencent is pleased to support the open source community by making RapidJSON available.
Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.
Licensed under the MIT License (the "License"); you may not use this file except
in compliance with the License. You may obtain a copy of the License at
http://opensource.org/licenses/MIT
Unless required by applicable law or agreed to in writing, software distributed
under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
CONDITIONS OF ANY KIND, either express or implied. See the License for the
specific language governing permissions and limitations under the License.
License notice for DirectX Math Library
---------------------------------------
https://github.com/microsoft/DirectXMath/blob/master/LICENSE
The MIT License (MIT)
Copyright (c) 2011-2020 Microsoft Corp
Permission is hereby granted, free of charge, to any person obtaining a copy of this
software and associated documentation files (the "Software"), to deal in the Software
without restriction, including without limitation the rights to use, copy, modify,
merge, publish, distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to the following
conditions:
The above copyright notice and this permission notice shall be included in all copies
or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE
OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
License notice for ldap4net
---------------------------
The MIT License (MIT)
Copyright (c) 2018 Alexander Chermyanin
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
License notice for vectorized sorting code
------------------------------------------
MIT License
Copyright (c) 2020 Dan Shechter
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1 @@
7211aa01b34bb55ca67bdddd6e80ce23ee201bd2