初始版本-v1.0.0
This commit is contained in:
commit
0774acbc17
362
halftoneproject-master/.gitignore
vendored
Normal file
362
halftoneproject-master/.gitignore
vendored
Normal file
@ -0,0 +1,362 @@
|
||||
## Ignore Visual Studio temporary files, build results, and
|
||||
## files generated by popular Visual Studio add-ons.
|
||||
##
|
||||
## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
|
||||
|
||||
# User-specific files
|
||||
*.rsuser
|
||||
*.suo
|
||||
*.user
|
||||
*.userosscache
|
||||
*.sln.docstates
|
||||
|
||||
# User-specific files (MonoDevelop/Xamarin Studio)
|
||||
*.userprefs
|
||||
|
||||
# Mono auto generated files
|
||||
mono_crash.*
|
||||
|
||||
# Build results
|
||||
[Dd]ebug/
|
||||
[Dd]ebugPublic/
|
||||
[Rr]elease/
|
||||
[Rr]eleases/
|
||||
x64/
|
||||
x86/
|
||||
[Ww][Ii][Nn]32/
|
||||
[Aa][Rr][Mm]/
|
||||
[Aa][Rr][Mm]64/
|
||||
bld/
|
||||
[Bb]in/
|
||||
[Oo]bj/
|
||||
[Ll]og/
|
||||
[Ll]ogs/
|
||||
|
||||
# Visual Studio 2015/2017 cache/options directory
|
||||
.vs/
|
||||
# Uncomment if you have tasks that create the project's static files in wwwroot
|
||||
#wwwroot/
|
||||
|
||||
# Visual Studio 2017 auto generated files
|
||||
Generated\ Files/
|
||||
|
||||
# MSTest test Results
|
||||
[Tt]est[Rr]esult*/
|
||||
[Bb]uild[Ll]og.*
|
||||
|
||||
# NUnit
|
||||
*.VisualState.xml
|
||||
TestResult.xml
|
||||
nunit-*.xml
|
||||
|
||||
# Build Results of an ATL Project
|
||||
[Dd]ebugPS/
|
||||
[Rr]eleasePS/
|
||||
dlldata.c
|
||||
|
||||
# Benchmark Results
|
||||
BenchmarkDotNet.Artifacts/
|
||||
|
||||
# .NET Core
|
||||
project.lock.json
|
||||
project.fragment.lock.json
|
||||
artifacts/
|
||||
|
||||
# ASP.NET Scaffolding
|
||||
ScaffoldingReadMe.txt
|
||||
|
||||
# StyleCop
|
||||
StyleCopReport.xml
|
||||
|
||||
# Files built by Visual Studio
|
||||
*_i.c
|
||||
*_p.c
|
||||
*_h.h
|
||||
*.ilk
|
||||
*.meta
|
||||
*.obj
|
||||
*.iobj
|
||||
*.pch
|
||||
*.pdb
|
||||
*.ipdb
|
||||
*.pgc
|
||||
*.pgd
|
||||
*.rsp
|
||||
*.sbr
|
||||
*.tlb
|
||||
*.tli
|
||||
*.tlh
|
||||
*.tmp
|
||||
*.tmp_proj
|
||||
*_wpftmp.csproj
|
||||
*.log
|
||||
*.vspscc
|
||||
*.vssscc
|
||||
.builds
|
||||
*.pidb
|
||||
*.svclog
|
||||
*.scc
|
||||
|
||||
# Chutzpah Test files
|
||||
_Chutzpah*
|
||||
|
||||
# Visual C++ cache files
|
||||
ipch/
|
||||
*.aps
|
||||
*.ncb
|
||||
*.opendb
|
||||
*.opensdf
|
||||
*.sdf
|
||||
*.cachefile
|
||||
*.VC.db
|
||||
*.VC.VC.opendb
|
||||
|
||||
# Visual Studio profiler
|
||||
*.psess
|
||||
*.vsp
|
||||
*.vspx
|
||||
*.sap
|
||||
|
||||
# Visual Studio Trace Files
|
||||
*.e2e
|
||||
|
||||
# TFS 2012 Local Workspace
|
||||
$tf/
|
||||
|
||||
# Guidance Automation Toolkit
|
||||
*.gpState
|
||||
|
||||
# ReSharper is a .NET coding add-in
|
||||
_ReSharper*/
|
||||
*.[Rr]e[Ss]harper
|
||||
*.DotSettings.user
|
||||
|
||||
# TeamCity is a build add-in
|
||||
_TeamCity*
|
||||
|
||||
# DotCover is a Code Coverage Tool
|
||||
*.dotCover
|
||||
|
||||
# AxoCover is a Code Coverage Tool
|
||||
.axoCover/*
|
||||
!.axoCover/settings.json
|
||||
|
||||
# Coverlet is a free, cross platform Code Coverage Tool
|
||||
coverage*.json
|
||||
coverage*.xml
|
||||
coverage*.info
|
||||
|
||||
# Visual Studio code coverage results
|
||||
*.coverage
|
||||
*.coveragexml
|
||||
|
||||
# NCrunch
|
||||
_NCrunch_*
|
||||
.*crunch*.local.xml
|
||||
nCrunchTemp_*
|
||||
|
||||
# MightyMoose
|
||||
*.mm.*
|
||||
AutoTest.Net/
|
||||
|
||||
# Web workbench (sass)
|
||||
.sass-cache/
|
||||
|
||||
# Installshield output folder
|
||||
[Ee]xpress/
|
||||
|
||||
# DocProject is a documentation generator add-in
|
||||
DocProject/buildhelp/
|
||||
DocProject/Help/*.HxT
|
||||
DocProject/Help/*.HxC
|
||||
DocProject/Help/*.hhc
|
||||
DocProject/Help/*.hhk
|
||||
DocProject/Help/*.hhp
|
||||
DocProject/Help/Html2
|
||||
DocProject/Help/html
|
||||
|
||||
# Click-Once directory
|
||||
publish/
|
||||
|
||||
# Publish Web Output
|
||||
*.[Pp]ublish.xml
|
||||
*.azurePubxml
|
||||
# Note: Comment the next line if you want to checkin your web deploy settings,
|
||||
# but database connection strings (with potential passwords) will be unencrypted
|
||||
*.pubxml
|
||||
*.publishproj
|
||||
|
||||
# Microsoft Azure Web App publish settings. Comment the next line if you want to
|
||||
# checkin your Azure Web App publish settings, but sensitive information contained
|
||||
# in these scripts will be unencrypted
|
||||
PublishScripts/
|
||||
|
||||
# NuGet Packages
|
||||
*.nupkg
|
||||
# NuGet Symbol Packages
|
||||
*.snupkg
|
||||
# The packages folder can be ignored because of Package Restore
|
||||
**/[Pp]ackages/*
|
||||
# except build/, which is used as an MSBuild target.
|
||||
!**/[Pp]ackages/build/
|
||||
# Uncomment if necessary however generally it will be regenerated when needed
|
||||
#!**/[Pp]ackages/repositories.config
|
||||
# NuGet v3's project.json files produces more ignorable files
|
||||
*.nuget.props
|
||||
*.nuget.targets
|
||||
|
||||
# Microsoft Azure Build Output
|
||||
csx/
|
||||
*.build.csdef
|
||||
|
||||
# Microsoft Azure Emulator
|
||||
ecf/
|
||||
rcf/
|
||||
|
||||
# Windows Store app package directories and files
|
||||
AppPackages/
|
||||
BundleArtifacts/
|
||||
Package.StoreAssociation.xml
|
||||
_pkginfo.txt
|
||||
*.appx
|
||||
*.appxbundle
|
||||
*.appxupload
|
||||
|
||||
# Visual Studio cache files
|
||||
# files ending in .cache can be ignored
|
||||
*.[Cc]ache
|
||||
# but keep track of directories ending in .cache
|
||||
!?*.[Cc]ache/
|
||||
|
||||
# Others
|
||||
ClientBin/
|
||||
~$*
|
||||
*~
|
||||
*.dbmdl
|
||||
*.dbproj.schemaview
|
||||
*.jfm
|
||||
*.pfx
|
||||
*.publishsettings
|
||||
orleans.codegen.cs
|
||||
|
||||
# Including strong name files can present a security risk
|
||||
# (https://github.com/github/gitignore/pull/2483#issue-259490424)
|
||||
#*.snk
|
||||
|
||||
# Since there are multiple workflows, uncomment next line to ignore bower_components
|
||||
# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
|
||||
#bower_components/
|
||||
|
||||
# RIA/Silverlight projects
|
||||
Generated_Code/
|
||||
|
||||
# Backup & report files from converting an old project file
|
||||
# to a newer Visual Studio version. Backup files are not needed,
|
||||
# because we have git ;-)
|
||||
_UpgradeReport_Files/
|
||||
Backup*/
|
||||
UpgradeLog*.XML
|
||||
UpgradeLog*.htm
|
||||
ServiceFabricBackup/
|
||||
*.rptproj.bak
|
||||
|
||||
# SQL Server files
|
||||
*.mdf
|
||||
*.ldf
|
||||
*.ndf
|
||||
|
||||
# Business Intelligence projects
|
||||
*.rdl.data
|
||||
*.bim.layout
|
||||
*.bim_*.settings
|
||||
*.rptproj.rsuser
|
||||
*- [Bb]ackup.rdl
|
||||
*- [Bb]ackup ([0-9]).rdl
|
||||
*- [Bb]ackup ([0-9][0-9]).rdl
|
||||
|
||||
# Microsoft Fakes
|
||||
FakesAssemblies/
|
||||
|
||||
# GhostDoc plugin setting file
|
||||
*.GhostDoc.xml
|
||||
|
||||
# Node.js Tools for Visual Studio
|
||||
.ntvs_analysis.dat
|
||||
node_modules/
|
||||
|
||||
# Visual Studio 6 build log
|
||||
*.plg
|
||||
|
||||
# Visual Studio 6 workspace options file
|
||||
*.opt
|
||||
|
||||
# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
|
||||
*.vbw
|
||||
|
||||
# Visual Studio LightSwitch build output
|
||||
**/*.HTMLClient/GeneratedArtifacts
|
||||
**/*.DesktopClient/GeneratedArtifacts
|
||||
**/*.DesktopClient/ModelManifest.xml
|
||||
**/*.Server/GeneratedArtifacts
|
||||
**/*.Server/ModelManifest.xml
|
||||
_Pvt_Extensions
|
||||
|
||||
# Paket dependency manager
|
||||
.paket/paket.exe
|
||||
paket-files/
|
||||
|
||||
# FAKE - F# Make
|
||||
.fake/
|
||||
|
||||
# CodeRush personal settings
|
||||
.cr/personal
|
||||
|
||||
# Python Tools for Visual Studio (PTVS)
|
||||
__pycache__/
|
||||
*.pyc
|
||||
|
||||
# Cake - Uncomment if you are using it
|
||||
# tools/**
|
||||
# !tools/packages.config
|
||||
|
||||
# Tabs Studio
|
||||
*.tss
|
||||
|
||||
# Telerik's JustMock configuration file
|
||||
*.jmconfig
|
||||
|
||||
# BizTalk build output
|
||||
*.btp.cs
|
||||
*.btm.cs
|
||||
*.odx.cs
|
||||
*.xsd.cs
|
||||
|
||||
# OpenCover UI analysis results
|
||||
OpenCover/
|
||||
|
||||
# Azure Stream Analytics local run output
|
||||
ASALocalRun/
|
||||
|
||||
# MSBuild Binary and Structured Log
|
||||
*.binlog
|
||||
|
||||
# NVidia Nsight GPU debugger configuration file
|
||||
*.nvuser
|
||||
|
||||
# MFractors (Xamarin productivity tool) working folder
|
||||
.mfractor/
|
||||
|
||||
# Local History for Visual Studio
|
||||
.localhistory/
|
||||
|
||||
# BeatPulse healthcheck temp database
|
||||
healthchecksdb
|
||||
|
||||
# Backup folder for Package Reference Convert tool in Visual Studio 2017
|
||||
MigrationBackup/
|
||||
|
||||
# Ionide (cross platform F# VS Code tools) working folder
|
||||
.ionide/
|
||||
|
||||
# Fody - auto-generated XML schema
|
||||
FodyWeavers.xsd
|
346
halftoneproject-master/AssistClient/API.cs
Normal file
346
halftoneproject-master/AssistClient/API.cs
Normal file
@ -0,0 +1,346 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using System.Drawing;
|
||||
using System.Runtime.InteropServices;
|
||||
namespace AssistClient
|
||||
{
|
||||
public class API
|
||||
{
|
||||
[StructLayout(LayoutKind.Sequential)]
|
||||
public struct COPYDATASTRUCT
|
||||
{
|
||||
public IntPtr dwData;
|
||||
public int cbData;//lpData大小
|
||||
public IntPtr lpData;
|
||||
}
|
||||
|
||||
|
||||
public const int WM_COPYDATA = 0x004A;
|
||||
public const int WM_CLOSE = 0x10;
|
||||
|
||||
//定义常数用作函数StretechBlt中正常色彩复制的光栅操作码
|
||||
public const int Srccopy = 0xCC0020;
|
||||
//'定义常数用作函数StretechBlt中反色复制的光栅操作码
|
||||
public const int NotSrccopy = 0x330008;
|
||||
//定义常数用作函数SetWindowPos中使窗口位于所有窗口最上面一层,避免被其它窗口遮挡
|
||||
public const int HWND_TOPMOST = -1;
|
||||
public const int SWP_NOMOVE = 2;
|
||||
public const int SWP_NOSIZE = 1;
|
||||
public const int SWP_NOACTIVATE = 0x10;
|
||||
public const int HWND_TOP = 0;
|
||||
public const int HWND_NOTOPMOST = -2;
|
||||
|
||||
//SetStretchBltMode模式
|
||||
public const int STRETCH_ANDSCANS = 1;
|
||||
public const int STRETCH_DELETESCANS = 3;
|
||||
public const int STRETCH_ORSCANS = 2;
|
||||
public const int STRETCH_HALFTONE = 4;
|
||||
|
||||
//
|
||||
[DllImport("User32.dll")]
|
||||
public static extern bool ShowWindowAsync(IntPtr hWnd, int cmdShow);
|
||||
public const int WS_SHOWNORMAL = 1;
|
||||
|
||||
[DllImport("shell32.dll")]
|
||||
public static extern int ShellExecute(IntPtr hwnd, string lpOperation, string lpFile, string lpParameters, string lpDirectory, int nShowCmd);
|
||||
[DllImport("user32.dll")]
|
||||
public static extern IntPtr GetActiveWindow();
|
||||
[DllImport("user32.dll")]
|
||||
public static extern IntPtr GetForegroundWindow();
|
||||
[DllImport("user32.dll")]
|
||||
public static extern bool IsWindow(IntPtr hwnd);
|
||||
[DllImport("user32.dll")]
|
||||
public static extern int GetClassName(IntPtr hwnd, StringBuilder lpClassName, int nMaxCount);
|
||||
[DllImport("user32.dll")]
|
||||
public static extern int DrawText(IntPtr hdc, string lpStr, int nCount, RECT lpRect, int wFormat);
|
||||
public const int DT_CENTER = 0x1;
|
||||
public const int DT_BOTTOM = 0x8;
|
||||
public const int DT_SINGLELINE = 0x20;
|
||||
|
||||
|
||||
public const int GWL_STYLE = -16;
|
||||
public const UInt32 WS_MINIMIZEBOX = 0x20000;
|
||||
public const UInt32 WS_MAXIMIZEBOX = 0x10000;
|
||||
public const UInt32 WS_SYSMENU = 0x80000;
|
||||
public const UInt32 WS_CAPTION = 0xC00000;
|
||||
|
||||
public const int GWL_EXSTYLE = -20;
|
||||
public const int LWA_COLORKEY = 1;
|
||||
public const int LWA_ALPHA = 2;
|
||||
public const int WS_EX_LAYERED = 0x80000;
|
||||
|
||||
[DllImport("user32.dll")]
|
||||
public static extern UInt32 GetWindowLong(IntPtr hwnd, int nIndex);
|
||||
[DllImport("user32.dll")]
|
||||
public static extern UInt32 SetWindowLong(IntPtr hwnd, int nIndex, UInt32 dwNewLong);
|
||||
[DllImport("user32.dll")]
|
||||
public static extern UInt32 SetLayeredWindowAttributes(IntPtr hwnd, int cKey, int bAlpha, int dwFlags);
|
||||
|
||||
[DllImport("kernel32.dll", SetLastError = true)]
|
||||
[return: MarshalAs(UnmanagedType.Bool)]
|
||||
public static extern bool DeleteFile(string lpFileName);
|
||||
|
||||
[DllImport("kernel32.dll", SetLastError = true)]
|
||||
[return: MarshalAs(UnmanagedType.Bool)]
|
||||
public static extern bool CopyFile(string lpExistingFileName, string lpNewFileName, bool bFailIfExists);
|
||||
|
||||
//窗体拖动
|
||||
public const UInt32 WM_SYSCOMMAND = 0x112;
|
||||
public const UInt32 SC_MOVE = 0xF010;
|
||||
public const UInt32 HTCAPTION = 0x2;
|
||||
[DllImport("user32.dll")]
|
||||
public static extern UInt32 ReleaseCapture();
|
||||
[DllImport("user32.dll")]
|
||||
public static extern UInt32 SendMessage(IntPtr hWnd, UInt32 wMsg, UInt32 wParam, IntPtr lParam);
|
||||
|
||||
[DllImport("user32.dll")]//函数声明,用于将窗口置于最上方
|
||||
public static extern int SetWindowPos(IntPtr hwnd, int hWndInsertAfter, int x, int y, int cx, int cy, int wFlags);
|
||||
[DllImport("user32.dll")]//函数声明,用于获得整个屏幕的窗口句柄,以作为绘制的源
|
||||
public static extern IntPtr GetDesktopWindow();
|
||||
[DllImport("user32.dll")]//函数声明,用于用于获得指定窗口一个设备环境。
|
||||
public static extern IntPtr GetDC(IntPtr hwnd);
|
||||
[DllImport("gdi32.dll")]//
|
||||
public static extern int SetStretchBltMode(IntPtr hdc, int nStretchMode);
|
||||
[DllImport("gdi32.dll")]//函数声明,用于将屏幕任意位置的一个矩形位置复制到另一个位置并实现镜像翻转
|
||||
public static extern int StretchBlt(IntPtr hdc, int x, int y, int nWidth, int nHeight, IntPtr hSrcDC, int xSrc, int ySrc, int nSrcWidth, int nSrcHeight, int dwRop);
|
||||
[DllImport("user32.dll")]//函数声明,释放窗口的设备环境
|
||||
public static extern int ReleaseDC(IntPtr hwnd, IntPtr hdc);
|
||||
|
||||
//最前显示4个
|
||||
[DllImport("user32.dll")]
|
||||
public static extern int SetActiveWindow(IntPtr hwnd);
|
||||
[DllImport("user32.dll")]
|
||||
public static extern int SetForegroundWindow(IntPtr hwnd);
|
||||
[DllImport("user32.dll")]
|
||||
public static extern int SetFocus(IntPtr hwnd);
|
||||
[DllImport("user32.dll")]
|
||||
public static extern int BringWindowToTop(IntPtr hwnd);
|
||||
|
||||
//
|
||||
[DllImport("user32.dll")]
|
||||
public static extern IntPtr LoadCursorFromFile(string lpFileName);
|
||||
[DllImport("user32.dll")]
|
||||
public static extern IntPtr SetCursor(IntPtr cursorHandle);
|
||||
[DllImport("user32.dll")]
|
||||
public static extern uint DestroyCursor(IntPtr cursorHandle);
|
||||
public struct POINTAPI
|
||||
{
|
||||
public int x;
|
||||
public int y;
|
||||
}
|
||||
[DllImport("user32.dll")]
|
||||
public static extern int SetCursorPos(int x, int y);
|
||||
[DllImport("user32.dll")]
|
||||
public static extern int GetCursorPos(ref POINTAPI lpPoint);
|
||||
[DllImport("user32.dll")]
|
||||
public static extern IntPtr GetCursor();
|
||||
|
||||
public struct ICONINFO
|
||||
{
|
||||
public bool fIcon; // Specifies whether this structure defines an icon or a cursor. A value of TRUE specifies
|
||||
public Int32 xHotspot; // Specifies the x-coordinate of a cursor's hot spot. If this structure defines an icon, the hot
|
||||
public Int32 yHotspot; // Specifies the y-coordinate of the cursor's hot spot. If this structure defines an icon, the hot
|
||||
public IntPtr hbmMask; // (HBITMAP) Specifies the icon bitmask bitmap. If this structure defines a black and white icon,
|
||||
public IntPtr hbmColor; // (HBITMAP) Handle to the icon color bitmap. This member can be optional if this
|
||||
}
|
||||
public struct CURSORINFO
|
||||
{
|
||||
public Int32 cbSize;
|
||||
public Int32 flags;
|
||||
public Int32 hCursor;
|
||||
public POINTAPI ptScreenPos;
|
||||
}
|
||||
|
||||
[DllImport("user32.dll", EntryPoint = "GetIconInfo")]
|
||||
public static extern bool GetIconInfo(IntPtr hIcon, out ICONINFO piconinfo);
|
||||
[DllImport("user32.dll")]
|
||||
public static extern bool GetCursorInfo(out CURSORINFO pci);
|
||||
[DllImport("user32.dll")]
|
||||
public static extern bool DrawIcon(IntPtr hDC, int X, int Y, IntPtr hIcon);
|
||||
|
||||
public const int DI_MASK = 0x0001;
|
||||
public const int DI_IMAGE = 0x0002;
|
||||
public const int DI_NORMAL = 0x0003;
|
||||
public const int DI_COMPAT = 0x0004;
|
||||
public const int DI_DEFAULTSIZE = 0x0008;
|
||||
[DllImport("user32.dll")]
|
||||
public static extern int DrawIconEx(IntPtr hdc, int xLeft, int yTop, IntPtr hIcon, int cxWidth, int cyWidth, int istepIfAniCur, int hbrFlickerFreeDraw, int diFlags);
|
||||
[DllImport("gdi32.dll")]
|
||||
public static extern int DeleteObject(IntPtr hObject);
|
||||
|
||||
[DllImport("user32.dll")]
|
||||
public static extern IntPtr WindowFromPoint(int xPoint, int yPoint);
|
||||
[DllImport("user32.dll")]
|
||||
public static extern IntPtr GetWindowThreadProcessId(IntPtr hWnd, IntPtr ProcessId);
|
||||
[DllImport("kernel32.dll")]
|
||||
public static extern IntPtr GetCurrentThreadId();
|
||||
[DllImport("user32.dll")]
|
||||
public static extern int AttachThreadInput(IntPtr idAttach, IntPtr idAttachTo, bool fAttach);
|
||||
[DllImport("user32.dll")]
|
||||
public static extern int MoveWindow(IntPtr hwnd, int x, int y, int nWidth, int nHeight, bool bRepaint);
|
||||
[DllImport("user32.dll")]
|
||||
public static extern bool IsZoomed(IntPtr hwnd);//判断窗口是否为最大化
|
||||
[DllImport("user32.dll")]
|
||||
public static extern bool IsIconic(IntPtr hwnd);//判断窗口是否为最小化
|
||||
|
||||
//控制播放器
|
||||
[DllImport("user32.dll")]
|
||||
public static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
|
||||
[DllImport("user32.dll")]
|
||||
public static extern int ShowWindow(IntPtr hwnd, int nCmdShow);
|
||||
[DllImport("kernel32.dll")]
|
||||
public static extern void Sleep(int i);
|
||||
[DllImport("User32.dll", EntryPoint = "PostMessage")]
|
||||
public static extern int PostMessage(
|
||||
IntPtr hWnd, // handle to destination window
|
||||
int Msg, // message
|
||||
int wParam, // first message parameter
|
||||
int lParam // second message parameter
|
||||
);
|
||||
|
||||
public const int WM_USER = 0x0400;
|
||||
public const int WMU_WLQ = WM_USER + 88;
|
||||
|
||||
public const int PARA_PLAY = 0x1;
|
||||
public const int PARA_STOP = 0x2;
|
||||
public const int PARA_FULL = 0x4;
|
||||
public const int PARA_MIN = 0x8;
|
||||
public const int PARA_MAX = 0x10;
|
||||
public const int PARA_MOVEL = 0x20;
|
||||
public const int PARA_MOVER = 0x40;
|
||||
|
||||
//
|
||||
//播放器消息命令:
|
||||
public const int PLAYER_PLAY = WM_USER + 0x0001;//播放
|
||||
public const int PLAYER_BREAK = WM_USER + 0x0002;//暂停
|
||||
public const int PLAYER_FULL = WM_USER + 0x0004;//全屏
|
||||
public const int PLAYER_NOFULL = WM_USER + 0x0008;//退出全屏
|
||||
public const int PLAYER_STOP = WM_USER + 0x0010;//停止
|
||||
public const int PLAYER_EXIT = WM_USER + 0x0020;//退出
|
||||
public const int PLAYER_SHOW = WM_USER + 0x0040;//显示窗体
|
||||
public const int PLAYER_HIDE = WM_USER + 0x0080;//隐藏窗体
|
||||
|
||||
public const int PLAYER_PLAY_FULL = WM_USER + 0x0021;//播放并全屏
|
||||
public const int PLAYER_BREAK_HIDE = WM_USER + 0x0022;//暂停并隐藏
|
||||
//
|
||||
public const int SW_HIDE = 0;
|
||||
public const int SW_SHOWNORMAL = 1;
|
||||
public const int SW_NORMAL = 1;
|
||||
public const int SW_SHOWMINIMIZED = 2;
|
||||
public const int SW_SHOWMAXIMIZED = 3;
|
||||
public const int SW_MAXIMIZE = 3;
|
||||
public const int SW_SHOWNOACTIVATE = 4;
|
||||
public const int SW_SHOW = 5;
|
||||
public const int SW_MINIMIZE = 6;
|
||||
public const int SW_SHOWMINNOACTIVE = 7;
|
||||
public const int SW_SHOWNA = 8;
|
||||
public const int SW_RESTORE = 9;
|
||||
public const int SW_SHOWDEFAULT = 10;
|
||||
public const int SW_FORCEMINIMIZE = 11;
|
||||
public const int SW_MAX = 11;
|
||||
|
||||
//自定义消息
|
||||
public const int WM_MOVENEXT = WM_USER + 5;//dsd纸用、电信最初屏幕上签名版本[to副屏]
|
||||
public const int WM_MOVEFIRST = WM_USER + 6;//dsd纸用、电信最初屏幕上签名版本[to主屏]
|
||||
public const int WM_MOVENEXT1 = WM_USER + 7;//电信最新[切屏]到副屏
|
||||
public const int WM_MOVEFIRST1 = WM_USER + 8;//电信最新[签名完成]到主屏
|
||||
public const int WM_ShowSignWin = WM_USER + 10;//电信最新[打印小票]弹出半透明窗口(扩展屏)
|
||||
public const int WM_HideSignWin = WM_USER + 11;//电信最新[半透明窗口左上角对号图片按钮](扩展屏)
|
||||
public const int WM_ShowSignWin2 = WM_USER + 12;//电信最新[打印小票]弹出半透明窗口(主屏)
|
||||
public const int WM_HideSignWin2 = WM_USER + 13;//电信最新[半透明窗口左上角对号图片按钮](主屏)
|
||||
public const int WM_LookPrimaryScreen = WM_USER + 20;//电信最新[副屏监视主屏]
|
||||
public const int WM_UnLookPrimaryScreen = WM_USER + 21;//电信最新[取消副屏监视主屏]
|
||||
|
||||
//声明读写INI文件的API函数
|
||||
[DllImport("kernel32")]
|
||||
public static extern long WritePrivateProfileString(string section, string key, string val, string filePath);
|
||||
[DllImport("kernel32")]
|
||||
public static extern int GetPrivateProfileString(string section, string key, string def, StringBuilder retVal, int size, string filePath);
|
||||
|
||||
|
||||
//
|
||||
public const UInt32 MF_BYPOSITION = 0x400;
|
||||
public const UInt32 MF_BYCOMMAND = 0x0;
|
||||
|
||||
public const UInt32 SC_CLOSE = 0xF060;
|
||||
public const UInt32 SC_MAXIMIZE = 0xF030;
|
||||
public const UInt32 SC_MINIMIZE = 0xF020;
|
||||
public const UInt32 WS_EX_APPWINDOW = 0x40000;
|
||||
|
||||
[DllImport("user32.dll")]
|
||||
public static extern IntPtr GetSystemMenu(IntPtr hwnd, bool bRevert);
|
||||
[DllImport("user32.dll")]
|
||||
public static extern int RemoveMenu(IntPtr hMenu, UInt32 nPosition, UInt32 wFlags);
|
||||
[DllImport("user32.dll")]
|
||||
public static extern int ModifyMenu(IntPtr hMenu, int nPosition, int wFlags, int wIDNewItem, int lpString);
|
||||
[DllImport("user32.dll")]
|
||||
public static extern UInt32 SetWindowText(IntPtr hwnd, string lpString);
|
||||
|
||||
public struct RECT
|
||||
{
|
||||
public RECT(int _left, int _top, int _right, int _bottom)
|
||||
{
|
||||
Left = _left;
|
||||
Top = _top;
|
||||
Right = _right;
|
||||
Bottom = _bottom;
|
||||
}
|
||||
public int Left;
|
||||
public int Top;
|
||||
public int Right;
|
||||
public int Bottom;
|
||||
}
|
||||
[DllImport("user32.dll")]
|
||||
public static extern int GetWindowRect(IntPtr hwnd, out API.RECT lpRect);
|
||||
[DllImport("user32.dll")]
|
||||
public static extern int ClipCursor(RECT lpRect);
|
||||
|
||||
public const int WM_KEYDOWN = 0x100;
|
||||
public const int WM_KEYUP = 0x101;
|
||||
|
||||
//HOT KEY
|
||||
[DllImport("kernel32.dll")]
|
||||
public static extern uint GlobalAddAtom(string lpHotKeyName);
|
||||
[DllImport("user32.dll", SetLastError = true)]
|
||||
public static extern bool RegisterHotKey(
|
||||
IntPtr hWnd, //要定义热键的窗口的句柄
|
||||
uint id, //定义热键ID(不能与其它ID重复)
|
||||
KeyModifiers fsModifiers, //标识热键是否在按Alt、Ctrl、Shift、Windows等键时才会生效
|
||||
System.Windows.Forms.Keys vk //定义热键的内容
|
||||
);
|
||||
[DllImport("user32.dll", SetLastError = true)]
|
||||
public static extern bool UnregisterHotKey(
|
||||
IntPtr hWnd, //要取消热键的窗口的句柄
|
||||
uint id //要取消热键的ID
|
||||
);
|
||||
//定义了辅助键的名称(将数字转变为字符以便于记忆,也可去除此枚举而直接使用数值)
|
||||
[Flags()]
|
||||
public enum KeyModifiers
|
||||
{
|
||||
None = 0,
|
||||
Alt = 1,
|
||||
Ctrl = 2,
|
||||
Shift = 4,
|
||||
WindowsKey = 8
|
||||
}
|
||||
|
||||
|
||||
//====================
|
||||
[DllImport("user32.dll", SetLastError = true)]
|
||||
public static extern IntPtr GetParent(IntPtr hWnd);
|
||||
[DllImport("user32.dll", SetLastError = true)]
|
||||
public static extern int SetParent(IntPtr hWndChild, IntPtr hWndNewParent);
|
||||
|
||||
//标题栏厚度
|
||||
public const int SM_CYCAPTION = 4;
|
||||
//边框宽度
|
||||
public const int SM_CYBORDER = 6;
|
||||
[DllImport("user32.dll", SetLastError = true)]
|
||||
public static extern int GetSystemMetrics(int nIndex);
|
||||
|
||||
|
||||
[DllImport("kernel32.dll")]
|
||||
public static extern void OutputDebugString(string lpOutputString);
|
||||
}
|
||||
}
|
26
halftoneproject-master/AssistClient/App.config
Normal file
26
halftoneproject-master/AssistClient/App.config
Normal file
@ -0,0 +1,26 @@
|
||||
<?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>
|
||||
<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>
|
||||
<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>
|
||||
<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>
|
||||
</configuration>
|
420
halftoneproject-master/AssistClient/AssistClient.csproj
Normal file
420
halftoneproject-master/AssistClient/AssistClient.csproj
Normal file
@ -0,0 +1,420 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProjectGuid>{3988AF04-DF89-4BBB-BEC9-92CDAF3BCC9D}</ProjectGuid>
|
||||
<OutputType>WinExe</OutputType>
|
||||
<RootNamespace>AssistClient</RootNamespace>
|
||||
<AssemblyName>AssistClient</AssemblyName>
|
||||
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
|
||||
<Deterministic>true</Deterministic>
|
||||
<PublishUrl>publish\</PublishUrl>
|
||||
<Install>true</Install>
|
||||
<InstallFrom>Disk</InstallFrom>
|
||||
<UpdateEnabled>false</UpdateEnabled>
|
||||
<UpdateMode>Foreground</UpdateMode>
|
||||
<UpdateInterval>7</UpdateInterval>
|
||||
<UpdateIntervalUnits>Days</UpdateIntervalUnits>
|
||||
<UpdatePeriodically>false</UpdatePeriodically>
|
||||
<UpdateRequired>false</UpdateRequired>
|
||||
<MapFileExtensions>true</MapFileExtensions>
|
||||
<ApplicationRevision>0</ApplicationRevision>
|
||||
<ApplicationVersion>1.0.0.%2a</ApplicationVersion>
|
||||
<IsWebBootstrapper>false</IsWebBootstrapper>
|
||||
<UseApplicationTrust>false</UseApplicationTrust>
|
||||
<BootstrapperEnabled>true</BootstrapperEnabled>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<PlatformTarget>x64</PlatformTarget>
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>bin\Debug\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\Release\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<ApplicationIcon>ComputerDisplayMode.ico</ApplicationIcon>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<SignManifests>false</SignManifests>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<TargetZone>LocalIntranet</TargetZone>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<GenerateManifests>false</GenerateManifests>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<ApplicationManifest>Properties\app.manifest</ApplicationManifest>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="AdvMotAPI, Version=2.0.8.5, Culture=neutral, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>bin\Debug\AdvMotAPI.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Automation.BDaq4, Version=4.0.0.0, Culture=neutral, PublicKeyToken=463f5928d60183a0, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>bin\Debug\Automation.BDaq4.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="ControllerDllCSharp, Version=3.0.0.1, Culture=neutral, processorArchitecture=AMD64">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>bin\Debug\ControllerDllCSharp.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="halcondotnet, Version=21.5.0.0, Culture=neutral, PublicKeyToken=4973bed59ddbf2b8, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>bin\Debug\halcondotnet.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="hdevenginedotnet, Version=21.5.0.0, Culture=neutral, PublicKeyToken=4973bed59ddbf2b8, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>bin\Debug\hdevenginedotnet.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.ML.OnnxRuntime, Version=0.0.0.0, Culture=neutral, PublicKeyToken=f27f157f0a5b7bb6, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>bin\Debug\Microsoft.ML.OnnxRuntime.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="MvCameraControl.Net, Version=3.4.0.1, Culture=neutral, PublicKeyToken=52fddfb3f94be800, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>bin\Debug\MvCameraControl.Net.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Newtonsoft.Json, Version=13.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
|
||||
<HintPath>..\Code\packages\Newtonsoft.Json.13.0.2\lib\net45\Newtonsoft.Json.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="OpenCvSharp, Version=1.0.0.0, Culture=neutral, PublicKeyToken=6adad1e807fea099, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>bin\Debug\OpenCvSharp.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="OpenCvSharp.Extensions, Version=1.0.0.0, Culture=neutral, PublicKeyToken=6adad1e807fea099, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>bin\Debug\OpenCvSharp.Extensions.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="SqlSugar, Version=5.1.4.73, Culture=neutral, processorArchitecture=MSIL">
|
||||
<HintPath>..\Code\packages\SqlSugar.5.1.4.73\lib\SqlSugar.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.Management" />
|
||||
<Reference Include="System.Xml.Linq" />
|
||||
<Reference Include="System.Data.DataSetExtensions" />
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Deployment" />
|
||||
<Reference Include="System.Drawing" />
|
||||
<Reference Include="System.Net.Http" />
|
||||
<Reference Include="System.Windows.Forms" />
|
||||
<Reference Include="System.Xml" />
|
||||
<Reference Include="Yolo5, Version=1.0.0.0, Culture=neutral, processorArchitecture=AMD64">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>bin\Debug\Yolo5.dll</HintPath>
|
||||
</Reference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="API.cs" />
|
||||
<Compile Include="Config.cs" />
|
||||
<Compile Include="DevContainer.cs" />
|
||||
<Compile Include="Device\AxisDev.cs" />
|
||||
<Compile Include="Device\CodeScannerDev.cs" />
|
||||
<Compile Include="Device\ForLib.cs" />
|
||||
<Compile Include="Device\IFLib.cs" />
|
||||
<Compile Include="Device\IOCardDev.cs" />
|
||||
<Compile Include="Device\LightDev.cs" />
|
||||
<Compile Include="Device\ScannerDev.cs" />
|
||||
<Compile Include="Device\SizeLib.cs" />
|
||||
<Compile Include="Enums.cs" />
|
||||
<Compile Include="Form1.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Form1.Designer.cs">
|
||||
<DependentUpon>Form1.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="FrmCMDProcess.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="FrmCMDProcess.Designer.cs">
|
||||
<DependentUpon>FrmCMDProcess.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="FrmDebug3.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="FrmDebug3.Designer.cs">
|
||||
<DependentUpon>FrmDebug3.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="FrmLoading.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="FrmLoading.designer.cs">
|
||||
<DependentUpon>FrmLoading.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="FrmLogin.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="FrmLogin.Designer.cs">
|
||||
<DependentUpon>FrmLogin.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="FrmMain.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="FrmMain.Designer.cs">
|
||||
<DependentUpon>FrmMain.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="FrmProductList.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="FrmProductList.Designer.cs">
|
||||
<DependentUpon>FrmProductList.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="FrmProductStep.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="FrmProductStep.Designer.cs">
|
||||
<DependentUpon>FrmProductStep.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="FrmPTSetting.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="FrmPTSetting.Designer.cs">
|
||||
<DependentUpon>FrmPTSetting.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="FrmSetParams.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="FrmSetParams.Designer.cs">
|
||||
<DependentUpon>FrmSetParams.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="FrmStepInfo.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="FrmStepInfo.Designer.cs">
|
||||
<DependentUpon>FrmStepInfo.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="FrmStepList.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="FrmStepList.Designer.cs">
|
||||
<DependentUpon>FrmStepList.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="FrmSysSetting.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="FrmSysSetting.Designer.cs">
|
||||
<DependentUpon>FrmSysSetting.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Program.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Compile Include="UI\AxisDevProp.cs" />
|
||||
<Compile Include="UI\ForProp.cs" />
|
||||
<Compile Include="UI\FrmScannerShow.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="UI\FrmScannerShow.Designer.cs">
|
||||
<DependentUpon>FrmScannerShow.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="UI\IFProp.cs" />
|
||||
<Compile Include="UI\IOCardDevProp.cs" />
|
||||
<Compile Include="UI\LightDevProp.cs" />
|
||||
<Compile Include="UI\PropExtend\PropertyOrderAttribute.cs" />
|
||||
<Compile Include="UI\PropExtend\PropertySorter.cs" />
|
||||
<Compile Include="UI\ScannerDevProp.cs" />
|
||||
<Compile Include="UI\SizeLibProp.cs" />
|
||||
<Compile Include="UI\UIAxisDev.cs">
|
||||
<SubType>UserControl</SubType>
|
||||
</Compile>
|
||||
<Compile Include="UI\UIAxisDev.Designer.cs">
|
||||
<DependentUpon>UIAxisDev.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="UI\UICodeScannerDev.cs">
|
||||
<SubType>UserControl</SubType>
|
||||
</Compile>
|
||||
<Compile Include="UI\UICodeScannerDev.Designer.cs">
|
||||
<DependentUpon>UICodeScannerDev.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="UI\UIForLib.cs">
|
||||
<SubType>UserControl</SubType>
|
||||
</Compile>
|
||||
<Compile Include="UI\UIForLib.Designer.cs">
|
||||
<DependentUpon>UIForLib.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="UI\UIIFLib.cs">
|
||||
<SubType>UserControl</SubType>
|
||||
</Compile>
|
||||
<Compile Include="UI\UIIFLib.Designer.cs">
|
||||
<DependentUpon>UIIFLib.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="UI\UIIOCardDev.cs">
|
||||
<SubType>UserControl</SubType>
|
||||
</Compile>
|
||||
<Compile Include="UI\UIIOCardDev.Designer.cs">
|
||||
<DependentUpon>UIIOCardDev.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="UI\UILightDev.cs">
|
||||
<SubType>UserControl</SubType>
|
||||
</Compile>
|
||||
<Compile Include="UI\UILightDev.Designer.cs">
|
||||
<DependentUpon>UILightDev.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="UI\UIScannerDev.cs">
|
||||
<SubType>UserControl</SubType>
|
||||
</Compile>
|
||||
<Compile Include="UI\UIScannerDev.Designer.cs">
|
||||
<DependentUpon>UIScannerDev.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="UI\UISizeLib.cs">
|
||||
<SubType>UserControl</SubType>
|
||||
</Compile>
|
||||
<Compile Include="UI\UISizeLib.Designer.cs">
|
||||
<DependentUpon>UISizeLib.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Utils\DBUtils.cs" />
|
||||
<Compile Include="Utils\EnumData.cs" />
|
||||
<Compile Include="Utils\EnumUtil.cs" />
|
||||
<Compile Include="Utils\FileUtil.cs" />
|
||||
<Compile Include="Utils\HttpUtil.CS" />
|
||||
<Compile Include="Utils\SSerialPort.cs" />
|
||||
<Compile Include="Utils\Util.cs" />
|
||||
<Compile Include="Utils\WINAPI.cs" />
|
||||
<Compile Include="WebApi.cs" />
|
||||
<EmbeddedResource Include="Form1.resx">
|
||||
<DependentUpon>Form1.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="FrmCMDProcess.resx">
|
||||
<DependentUpon>FrmCMDProcess.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="FrmDebug3.resx">
|
||||
<DependentUpon>FrmDebug3.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="FrmLoading.resx">
|
||||
<DependentUpon>FrmLoading.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="FrmLogin.resx">
|
||||
<DependentUpon>FrmLogin.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="FrmMain.resx">
|
||||
<DependentUpon>FrmMain.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="FrmProductList.resx">
|
||||
<DependentUpon>FrmProductList.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="FrmProductStep.resx">
|
||||
<DependentUpon>FrmProductStep.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="FrmPTSetting.resx">
|
||||
<DependentUpon>FrmPTSetting.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="FrmSetParams.resx">
|
||||
<DependentUpon>FrmSetParams.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="FrmStepInfo.resx">
|
||||
<DependentUpon>FrmStepInfo.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="FrmStepList.resx">
|
||||
<DependentUpon>FrmStepList.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="FrmSysSetting.resx">
|
||||
<DependentUpon>FrmSysSetting.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Properties\Resources.resx">
|
||||
<Generator>ResXFileCodeGenerator</Generator>
|
||||
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
|
||||
<SubType>Designer</SubType>
|
||||
</EmbeddedResource>
|
||||
<Compile Include="Properties\Resources.Designer.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DependentUpon>Resources.resx</DependentUpon>
|
||||
<DesignTime>True</DesignTime>
|
||||
</Compile>
|
||||
<EmbeddedResource Include="UI\FrmScannerShow.resx">
|
||||
<DependentUpon>FrmScannerShow.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="UI\UIAxisDev.resx">
|
||||
<DependentUpon>UIAxisDev.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="UI\UICodeScannerDev.resx">
|
||||
<DependentUpon>UICodeScannerDev.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="UI\UIForLib.resx">
|
||||
<DependentUpon>UIForLib.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="UI\UIIFLib.resx">
|
||||
<DependentUpon>UIIFLib.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="UI\UIIOCardDev.resx">
|
||||
<DependentUpon>UIIOCardDev.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="UI\UILightDev.resx">
|
||||
<DependentUpon>UILightDev.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="UI\UIScannerDev.resx">
|
||||
<DependentUpon>UIScannerDev.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="UI\UISizeLib.resx">
|
||||
<DependentUpon>UISizeLib.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<None Include="packages.config" />
|
||||
<None Include="Properties\app.manifest" />
|
||||
<None Include="Properties\Settings.settings">
|
||||
<Generator>SettingsSingleFileGenerator</Generator>
|
||||
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
|
||||
</None>
|
||||
<Compile Include="Properties\Settings.Designer.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DependentUpon>Settings.settings</DependentUpon>
|
||||
<DesignTimeSharedInput>True</DesignTimeSharedInput>
|
||||
</Compile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="App.config" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="Resources\down.png" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="Resources\left.png" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="Resources\right.png" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="Resources\up.png" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="ComputerDisplayMode.ico" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\Models\Models.csproj">
|
||||
<Project>{47694c39-2448-4be5-80a4-70d78b59272b}</Project>
|
||||
<Name>Models</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\Service\Service.csproj">
|
||||
<Project>{1cced98a-7af6-47f3-b9f9-a9e7dad461b4}</Project>
|
||||
<Name>Service</Name>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<BootstrapperPackage Include=".NETFramework,Version=v4.8">
|
||||
<Visible>False</Visible>
|
||||
<ProductName>Microsoft .NET Framework 4.8 %28x86 和 x64%29</ProductName>
|
||||
<Install>true</Install>
|
||||
</BootstrapperPackage>
|
||||
<BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
|
||||
<Visible>False</Visible>
|
||||
<ProductName>.NET Framework 3.5 SP1</ProductName>
|
||||
<Install>false</Install>
|
||||
</BootstrapperPackage>
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
</Project>
|
BIN
halftoneproject-master/AssistClient/ComputerDisplayMode.ico
Normal file
BIN
halftoneproject-master/AssistClient/ComputerDisplayMode.ico
Normal file
Binary file not shown.
After Width: | Height: | Size: 27 KiB |
248
halftoneproject-master/AssistClient/Config.cs
Normal file
248
halftoneproject-master/AssistClient/Config.cs
Normal file
@ -0,0 +1,248 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Drawing;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using AssistClient.Utils;
|
||||
using Newtonsoft.Json.Linq;
|
||||
|
||||
namespace AssistClient
|
||||
{
|
||||
public class Config
|
||||
{
|
||||
public static Models.User loginUser;
|
||||
public static Dictionary<string, string> dicDevType = new Dictionary<string, string>();
|
||||
//
|
||||
public static string appBasePath = "";
|
||||
|
||||
//跳过检测设备
|
||||
public static bool SkipAxis0, SkipAxis1, SkipAxis2,SkipAxis3;
|
||||
public static bool SkipLight, SkipScannerGL, SkipScannerCC, SkipSmallAxis;
|
||||
|
||||
//DEV
|
||||
public static int[] Axis_PulseOutMode=new int[4];
|
||||
public static int[] Axis_MM2PulseNum = new int[4] { 1000, 1000, 1000, 1000};//1mm对应脉冲数
|
||||
public static int[] Axis_HomeMode = new int[4];
|
||||
public static int[] Axis_HomeDir = new int[4];//回Home方向
|
||||
//回HOME速度
|
||||
public static JArray Axis_HomeVelLow = new JArray();
|
||||
public static JArray Axis_HomeVelHigh = new JArray();
|
||||
public static JArray Axis_HomeAcc = new JArray();
|
||||
public static JArray Axis_HomeDec = new JArray();
|
||||
//回JOG速度
|
||||
public static JArray Axis_JogVelLow = new JArray();
|
||||
public static JArray Axis_JogVelHigh = new JArray();
|
||||
public static JArray Axis_JogAcc = new JArray();
|
||||
public static JArray Axis_JogDec = new JArray();
|
||||
|
||||
public static string IOCard_DeviceNum = "PCI-1730,BID#0";
|
||||
public static int Light_PortNum = 1;//COM端口号
|
||||
|
||||
public static string SmallAxis_ComName = "COM2";//COM端口号
|
||||
|
||||
public static string Scanner_GENTL_CTI = "ScannerRuntime\\Win64_x64\\MvFGProducerCXP.cti";
|
||||
public static string SizeEnginePath;
|
||||
public static string SizeBmp_Path, Defect_SavePath;
|
||||
public static string SizeRepairTablePath;
|
||||
//尺寸配置
|
||||
//public static string Size_LoadPath, Size_FileName;
|
||||
|
||||
//
|
||||
public static Dictionary<CMDName, JObject> CMDProcess;
|
||||
//DB
|
||||
//有些服务器防火墙有问题需要加上 min pool size=1 避免认为是恶意请求
|
||||
//如果用到bulkCopy需要加: AllowLoadLocalInfile=true
|
||||
//public static string dbMysqlCon = "server=localhost;Database=ProductionDB;Uid=root;Pwd=123456;";
|
||||
public static string DBConStr = "server=localhost;Database=ProductionDB;Uid=root;Pwd=123456; AllowLoadLocalInfile=true";
|
||||
public static string ServerIP = "";
|
||||
public static int ServerPort = 18082;
|
||||
|
||||
//LOG
|
||||
public static string LogPath;
|
||||
|
||||
//WEBAPI
|
||||
public static string baseUrl="";
|
||||
|
||||
//==========位置 初始位 上料位 下料位(下料位不存在时使用上料位)
|
||||
public static JObject joPTSetting = new JObject()
|
||||
{
|
||||
{ "initPT", null },
|
||||
{ "upPT", null},
|
||||
{ "downPT", null}
|
||||
};
|
||||
|
||||
public static void LoadAllConfig()
|
||||
{
|
||||
InitDevDic();
|
||||
LoadSysConfig();
|
||||
LoadPTConfig();
|
||||
DeleteFiles(Config.SizeBmp_Path, -2);
|
||||
//
|
||||
string lsCmdPath = appBasePath + "\\CMDProcess\\";
|
||||
if(!Directory.Exists(lsCmdPath))
|
||||
Directory.CreateDirectory(lsCmdPath);
|
||||
|
||||
string fileName;
|
||||
CMDProcess = new Dictionary<CMDName, JObject>();
|
||||
foreach (int item in Enum.GetValues(typeof(CMDName)))//item为key值
|
||||
{
|
||||
//string name = Enum.GetName(typeof(CMDName), item);//获取名称
|
||||
fileName = lsCmdPath + item + ".json";
|
||||
if (File.Exists(fileName))
|
||||
CMDProcess.Add((CMDName)item, JObject.Parse(File.ReadAllText(fileName)));
|
||||
//else
|
||||
// CMDProcess.Add((CMDName)item, null);
|
||||
}
|
||||
}
|
||||
public static void LoadSysConfig()
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(appBasePath))
|
||||
appBasePath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
|
||||
string configPath = appBasePath + "\\SysConfig.ini";
|
||||
string lsTmp = "";
|
||||
|
||||
DBConStr = Util.ReadIniValue(configPath, "Server", "DBConStr");
|
||||
ServerIP = Util.ReadIniValue(configPath, "Server", "ServerIP");
|
||||
lsTmp = Util.ReadIniValue(configPath, "Server", "ServerPort");
|
||||
if (Util.IsNumber(lsTmp)) ServerPort = Convert.ToInt32(lsTmp);
|
||||
|
||||
//Skip
|
||||
SkipAxis0 = Util.ReadIniValue(configPath, "SKIP", "SkipAxis0") == "1";
|
||||
SkipAxis1 = Util.ReadIniValue(configPath, "SKIP", "SkipAxis1") == "1";
|
||||
SkipAxis2 = Util.ReadIniValue(configPath, "SKIP", "SkipAxis2") == "1";
|
||||
SkipAxis3 = Util.ReadIniValue(configPath, "SKIP", "SkipAxis3") == "1";
|
||||
SkipLight = Util.ReadIniValue(configPath, "SKIP", "SkipLight") == "1";
|
||||
SkipScannerGL = Util.ReadIniValue(configPath, "SKIP", "SkipScannerGL") == "1";
|
||||
SkipScannerCC = Util.ReadIniValue(configPath, "SKIP", "SkipScannerCC") == "1";
|
||||
SkipSmallAxis = Util.ReadIniValue(configPath, "SKIP", "SkipSmallAxis") == "1";
|
||||
|
||||
//DEV
|
||||
lsTmp = Util.ReadIniValue(configPath, "DEV", "Axis0_PulseOutMode");
|
||||
if (Util.IsNumber(lsTmp)) Config.Axis_PulseOutMode[0] = Convert.ToInt32(lsTmp);
|
||||
lsTmp = Util.ReadIniValue(configPath, "DEV", "Axis1_PulseOutMode");
|
||||
if (Util.IsNumber(lsTmp)) Config.Axis_PulseOutMode[1] = Convert.ToInt32(lsTmp);
|
||||
lsTmp = Util.ReadIniValue(configPath, "DEV", "Axis2_PulseOutMode");
|
||||
if (Util.IsNumber(lsTmp)) Config.Axis_PulseOutMode[2] = Convert.ToInt32(lsTmp);
|
||||
lsTmp = Util.ReadIniValue(configPath, "DEV", "Axis3_PulseOutMode");
|
||||
if (Util.IsNumber(lsTmp)) Config.Axis_PulseOutMode[3] = Convert.ToInt32(lsTmp);
|
||||
|
||||
lsTmp = Util.ReadIniValue(configPath, "DEV", "Axis0_HomeMode");
|
||||
if (Util.IsNumber(lsTmp)) Config.Axis_HomeMode[0] = Convert.ToInt32(lsTmp);
|
||||
lsTmp = Util.ReadIniValue(configPath, "DEV", "Axis1_HomeMode");
|
||||
if (Util.IsNumber(lsTmp)) Config.Axis_HomeMode[1] = Convert.ToInt32(lsTmp);
|
||||
lsTmp = Util.ReadIniValue(configPath, "DEV", "Axis2_HomeMode");
|
||||
if (Util.IsNumber(lsTmp)) Config.Axis_HomeMode[2] = Convert.ToInt32(lsTmp);
|
||||
lsTmp = Util.ReadIniValue(configPath, "DEV", "Axis3_HomeMode");
|
||||
if (Util.IsNumber(lsTmp)) Config.Axis_HomeMode[3] = Convert.ToInt32(lsTmp);
|
||||
|
||||
lsTmp = Util.ReadIniValue(configPath, "DEV", "Axis0_HomeDir");
|
||||
if (Util.IsNumber(lsTmp)) Config.Axis_HomeDir[0] = Convert.ToInt32(lsTmp);
|
||||
lsTmp = Util.ReadIniValue(configPath, "DEV", "Axis1_HomeDir");
|
||||
if (Util.IsNumber(lsTmp)) Config.Axis_HomeDir[1] = Convert.ToInt32(lsTmp);
|
||||
lsTmp = Util.ReadIniValue(configPath, "DEV", "Axis2_HomeDir");
|
||||
if (Util.IsNumber(lsTmp)) Config.Axis_HomeDir[2] = Convert.ToInt32(lsTmp);
|
||||
lsTmp = Util.ReadIniValue(configPath, "DEV", "Axis3_HomeDir");
|
||||
if (Util.IsNumber(lsTmp)) Config.Axis_HomeDir[3] = Convert.ToInt32(lsTmp);
|
||||
|
||||
//HOME速度
|
||||
lsTmp = Util.ReadIniValue(configPath, "DEV", "Axis_HomeVelLow");
|
||||
if (!string.IsNullOrWhiteSpace(lsTmp)) Axis_HomeVelLow = JArray.Parse(lsTmp);
|
||||
lsTmp = Util.ReadIniValue(configPath, "DEV", "Axis_HomeVelHigh");
|
||||
if (!string.IsNullOrWhiteSpace(lsTmp)) Axis_HomeVelHigh = JArray.Parse(lsTmp);
|
||||
lsTmp = Util.ReadIniValue(configPath, "DEV", "Axis_HomeAcc");
|
||||
if (!string.IsNullOrWhiteSpace(lsTmp)) Axis_HomeAcc = JArray.Parse(lsTmp);
|
||||
lsTmp = Util.ReadIniValue(configPath, "DEV", "Axis_HomeDec");
|
||||
if (!string.IsNullOrWhiteSpace(lsTmp)) Axis_HomeDec = JArray.Parse(lsTmp);
|
||||
//JOG速度
|
||||
lsTmp = Util.ReadIniValue(configPath, "DEV", "Axis_JogVelLow");
|
||||
if (!string.IsNullOrWhiteSpace(lsTmp)) Axis_JogVelLow = JArray.Parse(lsTmp);
|
||||
lsTmp = Util.ReadIniValue(configPath, "DEV", "Axis_JogVelHigh");
|
||||
if (!string.IsNullOrWhiteSpace(lsTmp)) Axis_JogVelHigh = JArray.Parse(lsTmp);
|
||||
lsTmp = Util.ReadIniValue(configPath, "DEV", "Axis_JogAcc");
|
||||
if (!string.IsNullOrWhiteSpace(lsTmp)) Axis_JogAcc = JArray.Parse(lsTmp);
|
||||
lsTmp = Util.ReadIniValue(configPath, "DEV", "Axis_JogDec");
|
||||
if (!string.IsNullOrWhiteSpace(lsTmp)) Axis_JogDec = JArray.Parse(lsTmp);
|
||||
//
|
||||
lsTmp = Util.ReadIniValue(configPath, "DEV", "Light_PortNum");
|
||||
if (Util.IsNumber(lsTmp)) Config.Light_PortNum = Convert.ToInt32(lsTmp);
|
||||
|
||||
IOCard_DeviceNum = Util.ReadIniValue(configPath, "DEV", "IOCard_DeviceNum");
|
||||
|
||||
SizeEnginePath = Util.ReadIniValue(configPath, "DEV", "SizeEnginePath");
|
||||
SizeBmp_Path = Util.ReadIniValue(configPath, "DEV", "SizeBmp_Path");
|
||||
SizeRepairTablePath = Util.ReadIniValue(configPath, "DEV", "SizeRepairTablePath");
|
||||
//LOG
|
||||
LogPath = Util.ReadIniValue(configPath, "LOG", "LogPath");
|
||||
}
|
||||
public static void LoadPTConfig()
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(appBasePath))
|
||||
appBasePath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
|
||||
string configPath = appBasePath + "\\PTConfig.json";
|
||||
string lsTmp = File.ReadAllText(configPath);
|
||||
joPTSetting = JObject.Parse(lsTmp);
|
||||
}
|
||||
|
||||
private static void InitDevDic()
|
||||
{
|
||||
//dicDevType.Add("CodeScanner", "扫码枪");//固定为必有开始
|
||||
if (!dicDevType.ContainsKey("IOCard")) dicDevType.Add("IOCard", "I/O控制");
|
||||
if (!dicDevType.ContainsKey("Axis")) dicDevType.Add("Axis", "滑台电机");
|
||||
if (!dicDevType.ContainsKey("Light")) dicDevType.Add("Light", "光源");
|
||||
if (!dicDevType.ContainsKey("Scanner_CC")) dicDevType.Add("Scanner_CC", "网口相机");
|
||||
if (!dicDevType.ContainsKey("Size")) dicDevType.Add("Size", "尺寸测量");
|
||||
if (!dicDevType.ContainsKey("For")) dicDevType.Add("For", "For循环");
|
||||
if (!dicDevType.ContainsKey("If")) dicDevType.Add("If", "If条件");
|
||||
}
|
||||
|
||||
private static void DeleteFiles(string dirPath, int days = -7)
|
||||
{
|
||||
if (!Directory.Exists(dirPath)) return;
|
||||
|
||||
string[] file_list = Directory.GetFiles(dirPath);
|
||||
var delFiles = file_list.Select(file => new FileInfo(file))
|
||||
.Where(f => f.CreationTime <= DateTime.Now.AddDays(days))
|
||||
.Select(x => x.FullName)
|
||||
.ToList();
|
||||
foreach (string file in delFiles)
|
||||
File.Delete(file);
|
||||
}
|
||||
public static string getDefectName(string defectCode)
|
||||
{
|
||||
defectCode= defectCode.ToLower();
|
||||
switch (defectCode)
|
||||
{
|
||||
case "dk":
|
||||
return "堵孔";
|
||||
case "zw":
|
||||
return "脏污";
|
||||
case "xws":
|
||||
return "纤维丝";
|
||||
case "gsyc":
|
||||
return "钢丝异常";
|
||||
case "qk":
|
||||
return "缺口";
|
||||
case "zk":
|
||||
return "针孔";
|
||||
case "pp":
|
||||
return "泡泡";
|
||||
case "hs":
|
||||
return "划伤";
|
||||
case "yx":
|
||||
return "压线";
|
||||
case "xb":
|
||||
return "斜边";
|
||||
case "sx":
|
||||
return "栅线";
|
||||
case "ds":
|
||||
return "断栅";
|
||||
default:
|
||||
return "未知";
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
164
halftoneproject-master/AssistClient/DevContainer.cs
Normal file
164
halftoneproject-master/AssistClient/DevContainer.cs
Normal file
@ -0,0 +1,164 @@
|
||||
using Newtonsoft.Json.Linq;
|
||||
using AssistClient.Device;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using static AssistClient.Device.AxisDev;
|
||||
|
||||
namespace AssistClient
|
||||
{
|
||||
public class DevContainer
|
||||
{
|
||||
public AxisDev devAxis;//=new AxisDev();
|
||||
public CodeScannerDev devCodeScanner;//= new CodeScannerDev();
|
||||
public IOCardDev devIOCard;//=new IOCardDev();
|
||||
public LightDev devLight;//=new LightDev();
|
||||
public ScannerDev devScannerCC;// = new ScannerDev(ScannerDev.ScannerType.CC);
|
||||
public SizeLib libSize;
|
||||
public ForLib libFor;
|
||||
public IFLib libIF;
|
||||
|
||||
public Action<WarningEnum, string> WarningEvent;
|
||||
|
||||
public Action<bool, string> StateChange;
|
||||
public Action<string, string> OutDebugEvent;
|
||||
public Action<int, AxisPosType, double> axisPosEvent;
|
||||
public bool state = false;
|
||||
|
||||
private Thread t;
|
||||
private IntPtr preView1, preView2;
|
||||
public void start(IntPtr view1, IntPtr view2)
|
||||
{
|
||||
this.preView1 = view1;
|
||||
this.preView2 = view2;
|
||||
|
||||
devCodeScanner = new CodeScannerDev();
|
||||
devCodeScanner.WarningEvent = WarningEvent;
|
||||
if (!devCodeScanner.start()) throw new Exception("扫码枪初始化失败!");
|
||||
|
||||
t = new System.Threading.Thread(run);
|
||||
t.IsBackground = true;
|
||||
t.Start();
|
||||
}
|
||||
public void stop()
|
||||
{
|
||||
try
|
||||
{
|
||||
state = false;
|
||||
try { devAxis.stop(); } catch { }
|
||||
try { devIOCard.stop(); } catch { }
|
||||
try { devLight.stop(); } catch { }
|
||||
try { devScannerCC.stop(); devScannerCC.close(); } catch { }
|
||||
try { libSize.stop(); } catch { }
|
||||
try { devCodeScanner.stop(); } catch { }
|
||||
}
|
||||
catch { }
|
||||
}
|
||||
private void run()
|
||||
{
|
||||
try
|
||||
{
|
||||
devAxis = new AxisDev();
|
||||
devAxis.WarningEvent = WarningEvent;
|
||||
devAxis.axisPosEvent = axisPosEvent;//位置POS
|
||||
devIOCard = new IOCardDev();
|
||||
devIOCard.WarningEvent = WarningEvent;
|
||||
//devIOCard.OUTEvent = (index, data) =>
|
||||
//{
|
||||
// if (Config.HeightDevIOState && devAxis.IsInit && (devAxis.isMoveing(0) || devAxis.isMoveing(2)))
|
||||
// {
|
||||
// WarningEvent?.Invoke(WarningEnum.High, "厚度IO已打开,急停,请检查设备,防止损坏!");
|
||||
// //devAxis.stopNow();
|
||||
// }
|
||||
//};
|
||||
devLight = new LightDev();
|
||||
devLight.WarningEvent = WarningEvent;
|
||||
devScannerCC = new ScannerDev(ScannerDev.ScannerType.CC);
|
||||
devScannerCC.WarningEvent = WarningEvent;
|
||||
libSize = new SizeLib();
|
||||
libSize.WarningEvent = WarningEvent;
|
||||
libFor = new ForLib();
|
||||
libIF = new IFLib();
|
||||
//启动
|
||||
if (!devAxis.start(Config.Axis_PulseOutMode)) throw new Exception("运动板卡初始化失败!");
|
||||
//if (!devCodeScanner.start()) throw new Exception("扫码枪初始化失败!");
|
||||
if (!devIOCard.start(Config.IOCard_DeviceNum)) throw new Exception("I/O板卡初始化失败!");
|
||||
if (!Config.SkipLight && !devLight.start(Config.Light_PortNum)) throw new Exception("光源设备初始化失败!");
|
||||
|
||||
if (!Config.SkipScannerCC && !devScannerCC.open()) throw new Exception("相机初始化失败!");
|
||||
if (!Config.SkipScannerCC && !devScannerCC.start(this.preView2, Config.SizeBmp_Path)) throw new Exception("相机打开失败!");
|
||||
|
||||
if (!libSize.start(Config.SizeEnginePath)) throw new Exception("尺寸库初始化失败!");
|
||||
|
||||
//
|
||||
state = true;
|
||||
StateChange?.Invoke(true, "成功");
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
stop();
|
||||
StateChange?.Invoke(false, ex.Message);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// I/O指令输出
|
||||
/// </summary>
|
||||
/// <param name="key">CMDName</param>
|
||||
/// <param name="isStrobe">频闪</param>
|
||||
/// <param name="recover">输出sleep下,后恢复原信号</param>
|
||||
/// <param name="recoverWaitTime">sleep多久后反转</param>
|
||||
/// <returns></returns>
|
||||
public bool io_output(CMDName key, bool isStrobe = false, bool recover = false, int recoverWaitTime = 100)
|
||||
{
|
||||
if (Config.CMDProcess.ContainsKey(key))
|
||||
return io_output(key.ToString(),Config.CMDProcess[key], isStrobe, recover, recoverWaitTime);
|
||||
return false;
|
||||
}
|
||||
/// <summary>
|
||||
/// I/O指令输出
|
||||
/// </summary>
|
||||
/// <param name="processParam"></param>
|
||||
/// <param name="isStrobe">频闪</param>
|
||||
/// <param name="recover">输出sleep(recoverWaitTime)下,后恢复原信号</param>
|
||||
/// <param name="recoverWaitTime">sleep 后反转</param>
|
||||
public bool io_output(string tagName,JObject processParam, bool isStrobe = false, bool recover = false, int recoverWaitTime = 100)
|
||||
{
|
||||
bool result = false;
|
||||
string[] OUT_OP_SHOW = processParam.Value<JArray>("OUT_OP_SHOW").ToObject<List<string>>().ToArray();
|
||||
OUT_OP_SHOW = Utils.Util.IODataFormatBinaryStr(OUT_OP_SHOW, true);
|
||||
for (int i = 0; i < OUT_OP_SHOW.Length; i++)
|
||||
{
|
||||
for (int j = 0; j < OUT_OP_SHOW[i].Length; j++)
|
||||
{
|
||||
int jj = OUT_OP_SHOW[i].Length - j - 1;
|
||||
if (OUT_OP_SHOW[i][jj] == 'L' || OUT_OP_SHOW[i][jj] == 'H')
|
||||
{
|
||||
if (recover)
|
||||
{
|
||||
if (recoverWaitTime > 0)
|
||||
{
|
||||
OutDebugEvent?.Invoke(tagName, $"向I/O输出引脚{i}-{j},信号{OUT_OP_SHOW[i][jj]},输出时长:{recoverWaitTime}ms");
|
||||
devIOCard.writeBitState(i, j, OUT_OP_SHOW[i][jj] == 'H', isStrobe);
|
||||
Thread.Sleep(recoverWaitTime);
|
||||
}
|
||||
OutDebugEvent?.Invoke(tagName, $"向I/O输出引脚{i}-{j},信号{OUT_OP_SHOW[i][jj]=='L'}");
|
||||
devIOCard.writeBitState(i, j, OUT_OP_SHOW[i][jj] == 'L');
|
||||
}
|
||||
else
|
||||
{
|
||||
OutDebugEvent?.Invoke(tagName, $"向I/O输出引脚{i}-{j},信号{OUT_OP_SHOW[i][jj]}");
|
||||
devIOCard.writeBitState(i, j, OUT_OP_SHOW[i][jj] == 'H', isStrobe);
|
||||
}
|
||||
result = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
}
|
||||
}
|
962
halftoneproject-master/AssistClient/Device/AxisDev.cs
Normal file
962
halftoneproject-master/AssistClient/Device/AxisDev.cs
Normal file
@ -0,0 +1,962 @@
|
||||
using Advantech.Motion;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using System.Security.Cryptography;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using System.Timers;
|
||||
namespace AssistClient.Device
|
||||
{
|
||||
public class AxisDev : IDisposable
|
||||
{
|
||||
public enum AxisStateType
|
||||
{
|
||||
[Description("轴状态")]
|
||||
AxisState = 0,
|
||||
[Description("轴运动状态")]
|
||||
AxisMotionState = 1,
|
||||
[Description("轴IO状态")]
|
||||
AxisIOState = 2,
|
||||
}
|
||||
|
||||
public Action<int, AxisStateType, uint> axisStateEvent;
|
||||
public enum AxisPosType
|
||||
{
|
||||
[Description("命令位置")]
|
||||
CmdPos = 0,
|
||||
[Description("反馈位置")]
|
||||
ActualPos = 1,
|
||||
}
|
||||
public Action<int, AxisPosType, double> axisPosEvent;
|
||||
/// <summary> 使用
|
||||
/// 轴状态(AxisState 0-14) 单一值,无需按位取
|
||||
/// STA_AxDisable -- 轴被禁用,用户可打开并激活
|
||||
/// STA_AxReady ---- 轴已准备就绪,等待新的命令 *
|
||||
/// STA_Stopping ---- 轴停止
|
||||
/// STA_AxErrorStop --- 出现错误,轴停止
|
||||
/// STA_AxHoming ---- 轴正在执行返回原点运动
|
||||
/// STA_AxPtpMotion ---- 轴正在执行PTP 运动
|
||||
/// STA_AxContiMotion ---- 轴正在执行连续运动
|
||||
/// STA_AxSyncMotion --- 轴在一个群组中,群组正在执行插补运动;或轴是一个从轴,正在执行Ecam/E-gear/Gantry 运动。
|
||||
/// STA_AX_EXT_JOG -- 轴由外部信号控制。当外部信号激活时,轴将执行JOG 模式运动。
|
||||
/// STA_AX_EXT_MPG --- 轴由外部信号控制。当外部信号激活时,轴将执行MPG 模式运动
|
||||
/// </summary>
|
||||
//public Action<int, int> axisStateEvent;
|
||||
|
||||
/// <summary>
|
||||
/// 轴运动状态 使用
|
||||
/// 位 说明
|
||||
/// Stop ---- 停止
|
||||
/// WaitERC---- 等待ERC 完成
|
||||
/// InFA ---- 处于特定速度中 = FA
|
||||
/// InFL ---- 处于低速中 = FL
|
||||
/// InACC ---- 加速中
|
||||
/// InFH ---- 处于最大速度中 = FH
|
||||
/// InDEC ---- 减速中
|
||||
/// WaitINP---- 到位等待
|
||||
/// </summary>
|
||||
//public Action<int, int> axisMotionStateEvent;
|
||||
/// <summary>
|
||||
/// 轴IO状态 (Ax_Motion_IO) 使用
|
||||
/// RDY---- RDY 针脚输入
|
||||
/// ALM ---- 报警信号输入 *
|
||||
/// LMT+ ---- 限位开关+ *
|
||||
/// LMT- ---- 限位开关- *
|
||||
/// ORG---- 原始开关 *
|
||||
/// DIR ---- DIR 输出
|
||||
/// EMG ---- 紧急信号输入
|
||||
/// EZ ---- 编码器 Z 信号
|
||||
/// INP ---- 到位信号输入
|
||||
/// SVON ---- 伺服开启(OUT6) *
|
||||
/// ALRM ---- 报警复位输出状态
|
||||
/// SLMT+ ---- 软件限位+
|
||||
/// SLMT- ---- 软件限位-
|
||||
/// CMP----- 比较信号(OUT5)
|
||||
/// </summary>
|
||||
//public Action<int, bool, bool, bool, bool> axisIOStateEvent;
|
||||
|
||||
public Action<WarningEnum, string> WarningEvent;
|
||||
|
||||
/// <summary>
|
||||
/// 设备列表(多张PCI板卡)
|
||||
/// </summary>
|
||||
public List<DEV_LIST> DevList { get; private set; }
|
||||
/// <summary>
|
||||
/// 设备数量
|
||||
/// </summary>
|
||||
//private uint deviceCount = 0;
|
||||
/// <summary>
|
||||
/// 设备号,用于打开设备(非索引)
|
||||
/// </summary>
|
||||
public uint DeviceNum { get; private set; } = 0;
|
||||
|
||||
/// <summary>
|
||||
/// 设备句柄
|
||||
/// </summary>
|
||||
private IntPtr m_DeviceHandle = IntPtr.Zero;
|
||||
/// <summary>
|
||||
/// 轴数量
|
||||
/// </summary>
|
||||
private uint m_ulAxisCount = 0;
|
||||
private IntPtr[] m_Axishand = new IntPtr[0];
|
||||
public double[] CmdPos { get; private set; } = new double[32];//轴命令位置
|
||||
public double[] ActualPos { get; private set; } = new double[32];//轴实际(反馈)位置
|
||||
|
||||
public UInt16[] AxState { get; private set; } = new UInt16[32];//轴状态
|
||||
public UInt32[] IOStatus { get; private set; } = new UInt32[32];//轴IO状态
|
||||
public uint[] AxMotionState { get; private set; } = new uint[32];//轴运动状态
|
||||
|
||||
private uint[] AxEnableEvtArray = new uint[32];
|
||||
private uint[] GpEnableEvt = new uint[32];
|
||||
/// <summary>
|
||||
/// 组
|
||||
/// </summary>
|
||||
//private IntPtr m_GpHand = IntPtr.Zero;
|
||||
|
||||
/// <summary>
|
||||
/// 断电后设备必需复位
|
||||
/// </summary>
|
||||
public bool IsReset { private set; get; }=false;
|
||||
public bool IsDebug = false;
|
||||
/// <summary>
|
||||
/// 是否打开设备成功
|
||||
/// </summary>
|
||||
public bool IsInit { get; private set; } = false;
|
||||
Thread checkEventThread;
|
||||
private System.Timers.Timer timer = new System.Timers.Timer();
|
||||
|
||||
/// <summary>
|
||||
/// 获取设备列表
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
/// <exception cref="Exception"></exception>
|
||||
//public static List<DEV_LIST> getDevList()
|
||||
//{
|
||||
// DEV_LIST[] curAvailableDevs = new DEV_LIST[Motion.MAX_DEVICES];
|
||||
// uint deviceCount = 0;
|
||||
// int Result = Motion.mAcm_GetAvailableDevs(curAvailableDevs, Motion.MAX_DEVICES, ref deviceCount);
|
||||
// if (Result != (int)ErrorCode.SUCCESS || curAvailableDevs.Length < 1)
|
||||
// throw new Exception("Get Device Numbers Failed With Error Code: [0x" + Convert.ToString(Result, 16) + "] DevCount=" + curAvailableDevs.Length);
|
||||
|
||||
// return curAvailableDevs.ToList().Take((int)deviceCount).ToList();
|
||||
//}
|
||||
public AxisDev()
|
||||
{
|
||||
//初始化
|
||||
DEV_LIST[] curAvailableDevs = new DEV_LIST[Motion.MAX_DEVICES];
|
||||
uint deviceCount = 0;
|
||||
int Result = Motion.mAcm_GetAvailableDevs(curAvailableDevs, Motion.MAX_DEVICES, ref deviceCount);
|
||||
if (Result != (int)ErrorCode.SUCCESS || curAvailableDevs.Length < 1)
|
||||
throw new Exception("Get Device Numbers Failed With Error Code: [0x" + Convert.ToString(Result, 16) + "] DevCount=" + curAvailableDevs.Length);
|
||||
DevList = curAvailableDevs.ToList().Take((int)deviceCount).ToList();
|
||||
}
|
||||
public void Dispose()
|
||||
{
|
||||
stop();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 打开设备
|
||||
/// </summary>
|
||||
/// <exception cref="Exception"></exception>
|
||||
public bool start(int[] AxisPulseOutMode,bool debug=false)
|
||||
{
|
||||
if (DevList == null || DevList.Count < 1)
|
||||
{
|
||||
WarningEvent?.Invoke(WarningEnum.High, "Axis设备为空!");
|
||||
return false;
|
||||
}
|
||||
|
||||
DeviceNum = DevList[0].DeviceNum;
|
||||
return start(DevList[0].DeviceNum, AxisPulseOutMode, debug);
|
||||
}
|
||||
int[] AxisPulseOutMode=new int[4];
|
||||
public bool start(uint DeviceNum,int[] AxisPulseOutMode, bool debug = false)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (IsInit) return true;
|
||||
bALM = bEMG = bLMTP = bLMTN = false;
|
||||
|
||||
//打开设备
|
||||
uint uResult = Motion.mAcm_DevOpen(DeviceNum, ref m_DeviceHandle);
|
||||
if (uResult != (int)ErrorCode.SUCCESS)
|
||||
throw new Exception("Open Device Failed With Error Code: [0x" + Convert.ToString(uResult, 16) + "]");
|
||||
|
||||
IsDebug = debug;
|
||||
IsReset = false;
|
||||
//读取轴数量
|
||||
uResult = Motion.mAcm_GetU32Property(m_DeviceHandle, (uint)PropertyID.FT_DevAxesCount, ref m_ulAxisCount);
|
||||
if (uResult != (uint)ErrorCode.SUCCESS)
|
||||
throw new Exception("Get Axis Number Failed With Error Code: [0x" + Convert.ToString(uResult, 16) + "]");
|
||||
m_Axishand = new IntPtr[m_ulAxisCount];
|
||||
|
||||
//打开轴
|
||||
for (int i = 0; i < m_ulAxisCount; i++)
|
||||
{
|
||||
//打开每个轴并获得每个轴句柄
|
||||
uResult = Motion.mAcm_AxOpen(m_DeviceHandle, (UInt16)i, ref m_Axishand[i]);
|
||||
if (uResult != (uint)ErrorCode.SUCCESS)
|
||||
throw new Exception("Open Axis Failed With Error Code: [0x" + Convert.ToString(uResult, 16) + "]");
|
||||
|
||||
//先读取每个轴状态
|
||||
this.refreshAxisState(i);
|
||||
|
||||
//判断与打开电源使能,1: On
|
||||
if ((IOStatus[i] & (uint)Ax_Motion_IO.AX_MOTION_IO_SVON) == 0)
|
||||
{
|
||||
uResult = Motion.mAcm_AxSetSvOn(m_Axishand[i], 1);
|
||||
if (uResult != (uint)ErrorCode.SUCCESS)
|
||||
throw new Exception("Servo On Failed With Error Code: [0x" + Convert.ToString(uResult, 16) + "]");
|
||||
}
|
||||
}
|
||||
//根据加载的文件设置设备的所有配置(需在打开每个轴 mAcm_AxSetSvOn 后设置)
|
||||
string cfgPath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + "\\DevCfg\\Axis_" + DeviceNum + ".cfg";
|
||||
if (File.Exists(cfgPath))
|
||||
{
|
||||
uResult = Motion.mAcm_DevLoadConfig(m_DeviceHandle, cfgPath);
|
||||
if (uResult != (uint)ErrorCode.SUCCESS)
|
||||
throw new Exception("Load Config Failed With Error Code: [0x" + Convert.ToString(uResult, 16) + "]");
|
||||
}
|
||||
|
||||
Thread.Sleep(500);
|
||||
for (int i = 0; i < m_ulAxisCount; i++)
|
||||
{
|
||||
//先读取每个轴状态(进行报警)
|
||||
this.refreshAxisState(i);
|
||||
//每个轴的初始属性(reset 命令位置和实际(反馈)位置)
|
||||
//double cmdPosition = new double();
|
||||
//cmdPosition = 0;
|
||||
//为指定的轴设置命令位置
|
||||
//Motion.mAcm_AxSetCmdPosition(m_Axishand[i], cmdPosition);
|
||||
//为指定的轴设置实际(反馈)位置
|
||||
//Motion.mAcm_AxSetActualPosition(m_Axishand[i], cmdPosition);
|
||||
|
||||
//set Axis PulseOutMode
|
||||
if (!setPulseOutMode(i, (AxisPulseOutMode)AxisPulseOutMode[i]))
|
||||
throw new Exception($"Axis{i} 设置脉冲模式失败!");
|
||||
|
||||
this.AxisPulseOutMode = AxisPulseOutMode;
|
||||
//Event
|
||||
AxEnableEvtArray[i] |= (uint)EventType.EVT_AX_MOTION_DONE; //运动完成(减速直至停止)
|
||||
//AxEnableEvtArray[i] |= (uint)EventType.EVT_AX_VH_START; //轴加速到运行速度时
|
||||
//AxEnableEvtArray[i] |= (uint)EventType.EVT_AX_VH_END;//轴运行速度结束时,开始减速
|
||||
AxEnableEvtArray[i] |= (uint)EventType.EVT_AX_HOME_DONE;
|
||||
AxEnableEvtArray[i] |= (uint)EventType.EVT_AX_ERROR;
|
||||
|
||||
//初次获取轴的运动I/O状态。
|
||||
this.refreshAxisState(i);
|
||||
}
|
||||
|
||||
|
||||
|
||||
uResult = Motion.mAcm_EnableMotionEvent(m_DeviceHandle, AxEnableEvtArray, GpEnableEvt, m_ulAxisCount, 3);
|
||||
if (uResult != (uint)ErrorCode.SUCCESS)
|
||||
throw new Exception("EnableMotionEvent Filed With Error Code[0x" + Convert.ToString(uResult, 16) + "]");
|
||||
|
||||
IsInit = true;
|
||||
timer.Elapsed += Timer_Elapsed;
|
||||
timer.Interval = 100;
|
||||
timer.Start();
|
||||
|
||||
//用户应该创建一个新的线程来检查事件状态,例如:CheckEvtThread()函数
|
||||
checkEventThread = new Thread(new ThreadStart(checkEvtThread));
|
||||
checkEventThread.Start();
|
||||
return true;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
WarningEvent?.Invoke(WarningEnum.High, ex.Message);
|
||||
stop();
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 关闭设备
|
||||
/// </summary>
|
||||
/// <exception cref="Exception"></exception>
|
||||
public bool stop()
|
||||
{
|
||||
try
|
||||
{
|
||||
if (!IsInit) return false;
|
||||
|
||||
uint i;
|
||||
for (i = 0; i < m_ulAxisCount; i++)
|
||||
{
|
||||
if (AxState[i] == (uint)AxisState.STA_AX_ERROR_STOP)
|
||||
{
|
||||
WarningEvent?.Invoke(WarningEnum.Low, i + "轴处于ErrorStop状态,已重置!");
|
||||
//重置轴的状态。如果轴处于ErrorStop状态,则调用此函数后状态将更改为Ready
|
||||
Motion.mAcm_AxResetError(m_Axishand[i]);
|
||||
}
|
||||
// 命令轴减速停止(缓停)
|
||||
Motion.mAcm_AxStopDec(m_Axishand[i]);
|
||||
|
||||
//sleep? 关闭电源使能,1: On
|
||||
uint uResult = Motion.mAcm_AxSetSvOn(m_Axishand[i], 0);
|
||||
if (uResult != (uint)ErrorCode.SUCCESS)
|
||||
throw new Exception("Servo On Failed With Error Code: [0x" + Convert.ToString(uResult, 16) + "]");
|
||||
}
|
||||
//删除组中的所有轴并关闭组句柄
|
||||
//Motion.mAcm_GpClose(ref m_GpHand);
|
||||
//m_GpHand = IntPtr.Zero;
|
||||
|
||||
for (i = 0; i < m_ulAxisCount; i++)
|
||||
{
|
||||
//Close Axes
|
||||
Motion.mAcm_AxClose(ref m_Axishand[i]);
|
||||
}
|
||||
|
||||
timer.Elapsed -= Timer_Elapsed;
|
||||
m_ulAxisCount = 0;
|
||||
//Close Device
|
||||
Motion.mAcm_DevClose(ref m_DeviceHandle);
|
||||
m_DeviceHandle = IntPtr.Zero;
|
||||
IsInit = false;
|
||||
timer.Stop();
|
||||
return true;
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
/// 轴事件
|
||||
/// </summary>
|
||||
private void checkEvtThread()
|
||||
{
|
||||
uint Result;
|
||||
UInt32[] AxEvtStatusArray = new UInt32[32];
|
||||
UInt32[] GpEvtStatusArray = new UInt32[32];
|
||||
UInt32 i;
|
||||
while (IsInit)
|
||||
{
|
||||
//如果你想获得轴或组的事件状态,你应该通过调用 Motion.mAcm_EnableMotionEvent 来启用这些事件
|
||||
//AxEvtStatusArray[n],返回每个轴的中断事件状态,n 表示运动设备的轴个数
|
||||
//GpEnableEvtArrayy[n]:返回每个群组的中断事件状态
|
||||
//AxArrayElements U32 IN AxEvtStatusArray 中元素个数
|
||||
//GpArrayElements U32 IN GpEvtStatusArray 中元素个数
|
||||
//Millisecond U32 IN 设定每次Check 事件时的等待时间
|
||||
Result = Motion.mAcm_CheckMotionEvent(m_DeviceHandle, AxEvtStatusArray, GpEvtStatusArray, m_ulAxisCount, 0, 1000);//3,10
|
||||
if (Result == (uint)ErrorCode.SUCCESS)
|
||||
{
|
||||
for (i = 0; i < m_ulAxisCount; i++)
|
||||
{
|
||||
if ((AxEvtStatusArray[i] & (uint)EventType.EVT_AX_MOTION_DONE) > 0)
|
||||
{
|
||||
this.refreshAxisState((int)i);//更新AXIS状态
|
||||
}
|
||||
if ((AxEvtStatusArray[i] & (uint)EventType.EVT_AX_VH_START) > 0)
|
||||
{
|
||||
this.refreshAxisState((int)i);//更新AXIS状态
|
||||
}
|
||||
if ((AxEvtStatusArray[i] & (uint)EventType.EVT_AX_VH_END) > 0)
|
||||
{
|
||||
this.refreshAxisState((int)i);//更新AXIS状态
|
||||
}
|
||||
if ((AxEvtStatusArray[i] & (uint)EventType.EVT_AX_HOME_DONE) > 0)
|
||||
{
|
||||
this.refreshAxisState((int)i);//更新AXIS状态
|
||||
WarningEvent?.Invoke(WarningEnum.Normal, $"轴{i}回原点完成;当前命令位置:{CmdPos[i]},反馈位置:{ActualPos[i]}.");
|
||||
//回原点后反馈位置未归0则置0 //重置后会自动重新更新状态
|
||||
if (CmdPos[i] != 0) this.resetCmdPosition((int)i);
|
||||
if (ActualPos[i] != 0) this.resetActualPosition((int)i);
|
||||
}
|
||||
if ((AxEvtStatusArray[i] & (uint)EventType.EVT_AX_ERROR) > 0)
|
||||
{
|
||||
this.refreshAxisState((int)i);//更新AXIS状态
|
||||
}
|
||||
|
||||
}
|
||||
//if (m_GpHand != IntPtr.Zero)
|
||||
//{
|
||||
// if (textBoxGpID.Text != "")
|
||||
// {
|
||||
// if ((GpEvtStatusArray[0] & ((uint)EventType.EVT_GP1_MOTION_DONE << Convert.ToByte(textBoxGpID.Text))) > 0)
|
||||
// {
|
||||
// m_GpDoneEvtCnt++;
|
||||
// }
|
||||
// if ((GpEvtStatusArray[1] & ((uint)EventType.EVT_GP1_VH_START << Convert.ToByte(textBoxGpID.Text))) > 0)
|
||||
// {
|
||||
// m_GpVHStartCnt++;
|
||||
// }
|
||||
// if ((GpEvtStatusArray[2] & ((uint)EventType.EVT_GP1_VH_END << Convert.ToByte(textBoxGpID.Text))) > 0)
|
||||
// {
|
||||
// m_GpVHEndCnt++;
|
||||
// }
|
||||
// }
|
||||
//}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public bool isReady(int axisIndex = -1)
|
||||
{
|
||||
for (int i = 0; i < m_ulAxisCount; i++)
|
||||
{
|
||||
if (isSkip(axisIndex)) continue;
|
||||
if (i == axisIndex || axisIndex == -1)
|
||||
{
|
||||
Motion.mAcm_AxGetState(m_Axishand[i], ref AxState[i]);
|
||||
if (AxState[i] != (uint)AxisState.STA_AX_READY)
|
||||
{
|
||||
if (AxState[i] == (uint)AxisState.STA_AX_ERROR_STOP)
|
||||
{
|
||||
var errCode = Motion.mAcm_GetLastError(m_Axishand[i]);
|
||||
if (errCode != 0)
|
||||
{
|
||||
StringBuilder sb = new StringBuilder(512);
|
||||
if (!Motion.mAcm_GetErrorMessage(errCode, sb, 511))
|
||||
sb = new StringBuilder("未知错误!");
|
||||
string errStr = $"轴{i}运行错误,错误码({errCode},错误信息:{sb.ToString().Trim()})";
|
||||
WarningEvent?.Invoke(WarningEnum.High, errStr);
|
||||
throw new Exception(errStr);
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new Exception($"轴{i}运行错误,当前状态:{((AxisState)AxState[i]).ToString()}");
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
public bool isError(int axisIndex = -1)
|
||||
{
|
||||
for (int i = 0; i < m_ulAxisCount; i++)
|
||||
{
|
||||
if (isSkip(axisIndex)) continue;
|
||||
if (i == axisIndex || axisIndex == -1)
|
||||
{
|
||||
Motion.mAcm_AxGetState(m_Axishand[i], ref AxState[i]);
|
||||
if (AxState[i] == (uint)AxisState.STA_AX_ERROR_STOP)
|
||||
return true;
|
||||
|
||||
//
|
||||
if ((IOStatus[i] & (uint)Ax_Motion_IO.AX_MOTION_IO_ALM) > 0
|
||||
|| (IOStatus[i] & (uint)Ax_Motion_IO.AX_MOTION_IO_EMG) > 0
|
||||
|| (IOStatus[i] & (uint)Ax_Motion_IO.AX_MOTION_IO_LMTP) > 0
|
||||
|| (IOStatus[i] & (uint)Ax_Motion_IO.AX_MOTION_IO_LMTN) > 0)
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
/// <summary>
|
||||
/// 缓停,jog时也可用
|
||||
/// </summary>
|
||||
public void stopDec(int axisIndex = -1)
|
||||
{
|
||||
for (int i = 0; i < m_ulAxisCount; i++)
|
||||
{
|
||||
if (i == axisIndex || axisIndex == -1)
|
||||
{
|
||||
Motion.mAcm_AxStopDec(m_Axishand[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
/// 急停
|
||||
/// </summary>
|
||||
public void stopNow(int axisIndex = -1)
|
||||
{
|
||||
if (!IsInit) return;
|
||||
for (int i = 0; i < m_ulAxisCount; i++)
|
||||
{
|
||||
if (i == axisIndex || axisIndex == -1)
|
||||
{
|
||||
Motion.mAcm_AxStopEmg(m_Axishand[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void resetAxisState(int axisIndex=-1)
|
||||
{
|
||||
if (!IsInit) return;
|
||||
|
||||
for (int i = 0; i < m_ulAxisCount; i++)
|
||||
{
|
||||
if (isSkip(axisIndex)) continue;
|
||||
if (i == axisIndex || axisIndex == -1)
|
||||
{
|
||||
if (AxState[i] == (uint)AxisState.STA_AX_ERROR_STOP)
|
||||
{
|
||||
//重置轴的状态。如果轴处于ErrorStop状态,则调用此函数后状态将更改为Ready
|
||||
bALM = bEMG = bLMTP = bLMTN = false;
|
||||
Motion.mAcm_AxResetError(m_Axishand[i]);
|
||||
refreshAxisState(i);
|
||||
}
|
||||
// 命令轴减速停止(缓停)
|
||||
Motion.mAcm_AxStopDec(m_Axishand[i]);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
/// <summary>
|
||||
/// 指定的轴设置命令位置
|
||||
/// </summary>
|
||||
public void resetCmdPosition(int axisIndex = -1, double position = 0)
|
||||
{
|
||||
if (!IsInit) return;
|
||||
for (int i = 0; i < m_ulAxisCount; i++)
|
||||
{
|
||||
if (isSkip(axisIndex)) continue;
|
||||
if (i == axisIndex || axisIndex == -1)
|
||||
{
|
||||
Motion.mAcm_AxSetCmdPosition(m_Axishand[i], position);
|
||||
this.refreshAxisState(i);
|
||||
}
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
/// 指定的轴设置实际(反馈)位置
|
||||
/// </summary>
|
||||
public void resetActualPosition(int axisIndex=-1, double position = 0)
|
||||
{
|
||||
if (!IsInit) return;
|
||||
for (int i = 0; i < m_ulAxisCount; i++)
|
||||
{
|
||||
if (isSkip(axisIndex)) continue;
|
||||
if (i == axisIndex || axisIndex == -1)
|
||||
{
|
||||
Motion.mAcm_AxSetActualPosition(m_Axishand[i], position);
|
||||
this.refreshAxisState(i);
|
||||
}
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
/// 获取速度 [vellow,velhigh,acc,dec,Jerk]
|
||||
/// </summary>
|
||||
/// <param name="axisIndex"></param>
|
||||
/// <returns></returns>
|
||||
public double[] getAxisVelParam(int axisIndex)
|
||||
{
|
||||
double[] value=new double[5];
|
||||
Motion.mAcm_GetF64Property(m_Axishand[axisIndex], (uint)PropertyID.PAR_AxVelLow, ref value[0]);
|
||||
Motion.mAcm_GetF64Property(m_Axishand[axisIndex], (uint)PropertyID.PAR_AxVelHigh, ref value[1]);
|
||||
Motion.mAcm_GetF64Property(m_Axishand[axisIndex], (uint)PropertyID.PAR_AxAcc, ref value[2]);
|
||||
Motion.mAcm_GetF64Property(m_Axishand[axisIndex], (uint)PropertyID.PAR_AxDec, ref value[3]);
|
||||
Motion.mAcm_GetF64Property(m_Axishand[axisIndex], (uint)PropertyID.PAR_AxJerk, ref value[4]);//0-T/S 型曲线
|
||||
return value;
|
||||
}
|
||||
/// <summary>
|
||||
/// 速度设置 注:运动的过程中可变速度,加速度和减速度需使用AxChangeVelEx方法
|
||||
/// </summary>
|
||||
/// <param name="velLow">起始速度</param>
|
||||
/// <param name="high">运行速度</param>
|
||||
/// <param name="acc">加速度</param>
|
||||
/// <param name="dec">减速度</param>
|
||||
/// <param name="axisIndex"></param>
|
||||
/// <param name="isJogOrHome">true 不行,回HOME也是false</param>
|
||||
public void setAxisVelParam(double velLow, double high = 0, double acc = 0, double dec = 0, int axisIndex = -1,bool isJogOrHome=false)
|
||||
{
|
||||
uint result;
|
||||
for (int i = 0; i < m_ulAxisCount; i++)
|
||||
{
|
||||
if (i == axisIndex || axisIndex == -1)
|
||||
{
|
||||
if (!isJogOrHome)
|
||||
{
|
||||
if ((AxisState)AxState[i] != AxisState.STA_AX_READY)
|
||||
continue;
|
||||
if (velLow > 0) result = Motion.mAcm_SetF64Property(m_Axishand[i], (uint)PropertyID.PAR_AxVelLow, toPulse(velLow, Config.Axis_MM2PulseNum[i]));
|
||||
if (high > 0) result = Motion.mAcm_SetF64Property(m_Axishand[i], (uint)PropertyID.PAR_AxVelHigh, toPulse(high, Config.Axis_MM2PulseNum[i]));
|
||||
if (acc > 0) result = Motion.mAcm_SetF64Property(m_Axishand[i], (uint)PropertyID.PAR_AxAcc, toPulse(acc, Config.Axis_MM2PulseNum[i]));
|
||||
if (dec > 0) result = Motion.mAcm_SetF64Property(m_Axishand[i], (uint)PropertyID.PAR_AxDec, toPulse(dec, Config.Axis_MM2PulseNum[i]));
|
||||
result = Motion.mAcm_SetF64Property(m_Axishand[i], (uint)PropertyID.PAR_AxJerk, 0);//0-T/S 型曲线
|
||||
}
|
||||
else
|
||||
{
|
||||
if ((AxisState)AxState[i] != AxisState.STA_AX_EXT_JOG)
|
||||
continue;
|
||||
if (velLow > 0) result = Motion.mAcm_SetF64Property(m_Axishand[i], (uint)PropertyID.CFG_AxJogVelLow, toPulse(velLow, Config.Axis_MM2PulseNum[i]));
|
||||
if (high > 0) result = Motion.mAcm_SetF64Property(m_Axishand[i], (uint)PropertyID.CFG_AxJogVelHigh, toPulse(high, Config.Axis_MM2PulseNum[i]));
|
||||
if (acc > 0) result = Motion.mAcm_SetF64Property(m_Axishand[i], (uint)PropertyID.CFG_AxJogAcc, toPulse(acc, Config.Axis_MM2PulseNum[i]));
|
||||
if (dec > 0) result = Motion.mAcm_SetF64Property(m_Axishand[i], (uint)PropertyID.CFG_AxJogDec, toPulse(dec, Config.Axis_MM2PulseNum[i]));
|
||||
result = Motion.mAcm_SetF64Property(m_Axishand[i], (uint)PropertyID.CFG_AxJogJerk, 0);//0-T/S 型曲线
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 回HOME
|
||||
/// </summary>
|
||||
/// <param name="axisIndex"></param>
|
||||
/// <param name="homeMode">16种回HOME模式(0-15)</param>
|
||||
/// <param name="dir">0-正向 1-负向</param>
|
||||
/// <exception cref="Exception"></exception>
|
||||
public void home(int axisIndex = -1, uint homeMode = 11, uint dir = 1)
|
||||
{
|
||||
if (!IsInit) return;
|
||||
|
||||
//研华运动控制卡共提供两个函数执行回Home: Acm_AxHome 和Acm_AxMoveHome
|
||||
//调用Acm_AxHome 执行回Home 时,通过PAR_AxVelLow、PAR_AxVelHigh、PAR_AxAcc、 PAR_AxDec、PAR_AxJerk 设置初速度,运行速度、加速度、减速度、速度曲线类型。
|
||||
//调用Acm_AxMoveHome 执行回Home 时,通过PAR_AxHomeVelLow、PAR_AxHomeVelHigh、 PAR_AxHomeAcc、PAR_AxHomeDec、PAR_AxHomeJerk 设置初速度,运行速度、加速度、 减速度、速度曲线类型。
|
||||
uint result;
|
||||
for (int i = 0; i < m_ulAxisCount; i++)
|
||||
{
|
||||
if (isSkip(axisIndex)) continue;
|
||||
if (i == axisIndex || axisIndex == -1)
|
||||
{
|
||||
if ((AxisState)AxState[i] != AxisState.STA_AX_READY)
|
||||
continue;
|
||||
|
||||
if (!setPulseOutMode(i, (AxisPulseOutMode)AxisPulseOutMode[i]))
|
||||
throw new Exception($"Axis{i} 设置脉冲模式失败!");
|
||||
|
||||
//单独设置GO HOME 速度参数??
|
||||
|
||||
//
|
||||
result = Motion.mAcm_AxHome(m_Axishand[i], homeMode, dir);
|
||||
if (result != (uint)ErrorCode.SUCCESS)
|
||||
throw new Exception("AxHome Failed With Error Code: [0x" + Convert.ToString(result, 16) + "]");
|
||||
}
|
||||
}
|
||||
|
||||
//复位
|
||||
//if (axisIndex == -1 && !IsDebug && !IsReset)
|
||||
// IsReset = true;
|
||||
if (!IsDebug && !IsReset)
|
||||
IsReset = true;
|
||||
}
|
||||
/// <summary>
|
||||
/// 点到点运动
|
||||
/// </summary>
|
||||
/// <param name="axisIndex"></param>
|
||||
/// <param name="pos">PPU位置,方向为正负值</param>
|
||||
/// <param name="moveMode"></param>
|
||||
public bool move_ptp(int axisIndex, double pos, AxMoveMode moveMode)
|
||||
{
|
||||
if (isSkip(axisIndex)) return true;
|
||||
if (!IsInit) return false;
|
||||
if (isError(axisIndex)) return false;
|
||||
|
||||
pos = toPulse(pos, Config.Axis_MM2PulseNum[axisIndex]);
|
||||
|
||||
uint result;
|
||||
if ((AxisState)AxState[axisIndex] != AxisState.STA_AX_READY)
|
||||
return false;
|
||||
|
||||
if (!setPulseOutMode(axisIndex, (AxisPulseOutMode)AxisPulseOutMode[axisIndex]))
|
||||
{
|
||||
WarningEvent?.Invoke(WarningEnum.High, $"Axis{axisIndex} 设置脉冲模式失败!");
|
||||
return false;
|
||||
}
|
||||
|
||||
//--
|
||||
if (moveMode==AxMoveMode.MODE1_Abs) //Start single axis's absolute position motion.
|
||||
result = Motion.mAcm_AxMoveAbs(m_Axishand[axisIndex], pos);
|
||||
else //Start single axis's relative position motion
|
||||
result = Motion.mAcm_AxMoveRel(m_Axishand[axisIndex], pos);
|
||||
if (result != (uint)ErrorCode.SUCCESS)
|
||||
{
|
||||
WarningEvent?.Invoke(WarningEnum.High, "PTP Move Failed With Error Code[0x" + Convert.ToString(result, 16) + "]");
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
/// <summary>
|
||||
/// 判断是否正在动动
|
||||
/// </summary>
|
||||
/// <param name="axisIndex"></param>
|
||||
/// <returns></returns>
|
||||
public bool isMoveing(int axisIndex = -1)
|
||||
{
|
||||
if (!IsInit) return false;
|
||||
for (int i = 0; i < m_ulAxisCount; i++)
|
||||
{
|
||||
if (i == axisIndex || axisIndex == -1)
|
||||
{
|
||||
AxisState state = (AxisState)AxState[i];
|
||||
if (state == AxisState.STA_AX_PTP_MOT || state == AxisState.STA_AX_HOMING || state == AxisState.STA_AX_CONTI_MOT)
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
/// <summary>
|
||||
/// 设置脉冲模式
|
||||
/// </summary>
|
||||
/// <param name="axisIndex"></param>
|
||||
/// <param name="outMode"></param>
|
||||
/// <returns></returns>
|
||||
private bool setPulseOutMode(int axisIndex, AxisPulseOutMode outMode)
|
||||
{
|
||||
uint refOutMode = 0;
|
||||
//先获取再判断
|
||||
uint result = Motion.mAcm_GetU32Property(m_Axishand[axisIndex], (uint)PropertyID.CFG_AxPulseOutMode, ref refOutMode);// 获取输出模式
|
||||
if (result != (uint)ErrorCode.SUCCESS)
|
||||
{
|
||||
WarningEvent?.Invoke(WarningEnum.High, $"Get Axis{axisIndex} Failed With Error Code: [0x" + Convert.ToString(result, 16) + "]");
|
||||
return false;
|
||||
}
|
||||
if ((uint)outMode != refOutMode)
|
||||
{
|
||||
//设置脉冲模式
|
||||
result = Motion.mAcm_SetU32Property(m_Axishand[axisIndex], (uint)PropertyID.CFG_AxPulseOutMode, (uint)outMode);
|
||||
if (result != (uint)ErrorCode.SUCCESS && result != (uint)ErrorCode.PropertyIDNotSupport)//Added for Supporting PCI1245 and PCI1265
|
||||
{
|
||||
WarningEvent?.Invoke(WarningEnum.High, "Set Property-CFG_AxExtPulseNum Failed With Error Code[0x" + Convert.ToString(result, 16) + "]");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
#region JOG
|
||||
public void openJogMode(int axisIndex)
|
||||
{
|
||||
if (!IsInit) return;
|
||||
if ((AxisState)AxState[axisIndex] != AxisState.STA_AX_READY)
|
||||
return;
|
||||
|
||||
if (!setPulseOutMode(axisIndex, (AxisPulseOutMode)AxisPulseOutMode[axisIndex]))
|
||||
throw new Exception($"Axis{axisIndex} 设置脉冲模式失败!");
|
||||
|
||||
uint result;
|
||||
//启用/禁用外置硬盘模式.0: Disabled (stop command) 1: JOG Mode 2: MPG Mode
|
||||
result = Motion.mAcm_AxSetExtDrive(m_Axishand[axisIndex], 0);
|
||||
result = Motion.mAcm_AxSetExtDrive(m_Axishand[axisIndex], 1);
|
||||
if (result != (uint)ErrorCode.SUCCESS)
|
||||
throw new Exception("Start external driver Failed With Error Code[0x" + Convert.ToString(result, 16) + "]");
|
||||
|
||||
//设置外部驱动器的输入引脚
|
||||
//0 轴 0(默认值) 仅支持 0
|
||||
//1 轴 1(不支持)
|
||||
//2 轴 2(不支持)
|
||||
//3 轴 3(不支持)
|
||||
result = Motion.mAcm_SetU32Property(m_Axishand[axisIndex], (uint)PropertyID.CFG_AxExtMasterSrc, 0);
|
||||
if (result != (uint)ErrorCode.SUCCESS)
|
||||
throw new Exception("Set Property-AxExtMasterSrc Failed With Error Code[0x" + Convert.ToString(result, 16) + "]");
|
||||
|
||||
//当启用外部驱动时。此属性允许通过数字输入通道选择驱动轴
|
||||
result = Motion.mAcm_SetU32Property(m_Axishand[axisIndex], (uint)PropertyID.CFG_AxExtSelEnable, 1);
|
||||
if (result != (uint)ErrorCode.SUCCESS && result != (uint)ErrorCode.PropertyIDNotSupport)//Added for Supporting PCI1245 and PCI1265
|
||||
throw new Exception("Set Property-AxExtSelEnable Failed With Error Code[0x" + Convert.ToString(result, 16) + "]");
|
||||
|
||||
//理论脉冲数
|
||||
result = Motion.mAcm_SetU32Property(m_Axishand[axisIndex], (uint)PropertyID.CFG_AxExtPulseNum, 1000);
|
||||
if (result != (uint)ErrorCode.SUCCESS && result != (uint)ErrorCode.PropertyIDNotSupport)//Added for Supporting PCI1245 and PCI1265
|
||||
throw new Exception("Set Property-CFG_AxExtPulseNum Failed With Error Code[0x" + Convert.ToString(result, 16) + "]");
|
||||
|
||||
//外部设置
|
||||
//setAxisVelParam(velLow, high, acc, dec, axisIndex, true);
|
||||
this.refreshAxisState(axisIndex);
|
||||
}
|
||||
public void closeJogMode(int axisIndex = -1)
|
||||
{
|
||||
if (!IsInit) return;
|
||||
|
||||
uint result;
|
||||
for (int i = 0; i < m_ulAxisCount; i++)
|
||||
{
|
||||
if (i == axisIndex || axisIndex == -1)
|
||||
{
|
||||
if ((AxisState)AxState[i] == AxisState.STA_AX_EXT_JOG)
|
||||
{
|
||||
//启用/禁用外置硬盘模式.0: Disabled (stop command) 1: JOG Mode 2: MPG Mode
|
||||
result = Motion.mAcm_AxSetExtDrive(m_Axishand[i], 0);
|
||||
//命令轴减速停止
|
||||
result = Motion.mAcm_AxStopDec(m_Axishand[i]);
|
||||
this.refreshAxisState(i);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
/// jog运行 0:正向,1:负向
|
||||
/// </summary>
|
||||
/// <param name="axisIndex"></param>
|
||||
/// <param name="dic">0:正向,1:负向</param>
|
||||
public void jog(int axisIndex, ushort dic)
|
||||
{
|
||||
if (isSkip(axisIndex)) return;
|
||||
if (isError(axisIndex)) return;
|
||||
if ((AxisState)AxState[axisIndex] != AxisState.STA_AX_EXT_JOG) return;
|
||||
//Jog 运动的方向,0:正向,1:负向
|
||||
Motion.mAcm_AxJog(m_Axishand[axisIndex], dic);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Private
|
||||
private bool isSkip(int axisIndex)
|
||||
{
|
||||
if (axisIndex == 0 && Config.SkipAxis0) return true;
|
||||
if (axisIndex == 1 && Config.SkipAxis1) return true;
|
||||
if (axisIndex == 2 && Config.SkipAxis2) return true;
|
||||
if (axisIndex == 3 && Config.SkipAxis3) return true;
|
||||
return false;
|
||||
}
|
||||
private void Timer_Elapsed(object sender, ElapsedEventArgs e)
|
||||
{
|
||||
if (!IsInit) return;
|
||||
|
||||
for (int i = 0; i < m_ulAxisCount; i++)
|
||||
refreshAxisState(i);
|
||||
}
|
||||
private bool bALM, bEMG, bLMTP, bLMTN;
|
||||
private void refreshAxisState(int axisIndex)
|
||||
{
|
||||
//uint result;
|
||||
//获取指定轴的当前命令位置
|
||||
if ((uint)ErrorCode.SUCCESS == Motion.mAcm_AxGetCmdPosition(m_Axishand[axisIndex], ref CmdPos[axisIndex]))
|
||||
axisPosEvent?.Invoke(axisIndex, AxisPosType.CmdPos, tomm(CmdPos[axisIndex], Config.Axis_MM2PulseNum[axisIndex]));
|
||||
//获取指定轴的当前实际(反馈)位置
|
||||
if ((uint)ErrorCode.SUCCESS == Motion.mAcm_AxGetActualPosition(m_Axishand[axisIndex], ref ActualPos[axisIndex]))
|
||||
axisPosEvent?.Invoke(axisIndex, AxisPosType.ActualPos, tomm(ActualPos[axisIndex], Config.Axis_MM2PulseNum[axisIndex]) );
|
||||
|
||||
//获取Axis的当前状态
|
||||
if ((uint)ErrorCode.SUCCESS == Motion.mAcm_AxGetState(m_Axishand[axisIndex], ref AxState[axisIndex]))
|
||||
axisStateEvent?.Invoke(axisIndex, AxisStateType.AxisState, AxState[axisIndex]);
|
||||
//log?.Invoke(WarningEnum.Normal, $"({AxisIndex}轴)AxisState = {((AxisState)AxState[AxisIndex]).ToString()}");
|
||||
|
||||
//获取轴的运动I/O状态。
|
||||
if ((uint)ErrorCode.SUCCESS == Motion.mAcm_AxGetMotionIO(m_Axishand[axisIndex], ref IOStatus[axisIndex]))
|
||||
{
|
||||
bool isStopNow = false;
|
||||
if ((IOStatus[axisIndex] & (uint)Ax_Motion_IO.AX_MOTION_IO_ALM) > 0) //ALM报警状态 需IO close (流程上必需在报警清除后先复位)
|
||||
{
|
||||
if (!isStopNow)
|
||||
{
|
||||
isStopNow = true;
|
||||
stopNow();//ALM报警需急停
|
||||
}
|
||||
if (!bALM)
|
||||
{
|
||||
bALM = true;
|
||||
WarningEvent?.Invoke(WarningEnum.High, $"Axis{axisIndex} ALM报警!!!");
|
||||
}
|
||||
}
|
||||
if ((IOStatus[axisIndex] & (uint)Ax_Motion_IO.AX_MOTION_IO_EMG) > 0) //EMG急停状态 需重置 state (流程上必需在报警清除后先复位)
|
||||
{
|
||||
if (!isStopNow)
|
||||
{
|
||||
isStopNow = true;
|
||||
stopNow();//EMG状态需急停
|
||||
}
|
||||
if (!bEMG)
|
||||
{
|
||||
bEMG = true;
|
||||
WarningEvent?.Invoke(WarningEnum.High, $"Axis{axisIndex} 触发EMG急停!!!");
|
||||
}
|
||||
}
|
||||
//右极限 true->false (流程上必需在报警清除后先复位)
|
||||
if ((IOStatus[axisIndex] & (uint)Ax_Motion_IO.AX_MOTION_IO_LMTP) > 0 && ((AxisState)AxState[axisIndex]) != AxisState.STA_AX_HOMING)
|
||||
{
|
||||
if (!isStopNow)
|
||||
{
|
||||
isStopNow = true;
|
||||
stopNow();//右极限状态需急停
|
||||
}
|
||||
if (!bLMTP)
|
||||
{
|
||||
bLMTP = true;
|
||||
WarningEvent?.Invoke(WarningEnum.High, $"Axis{axisIndex} 触发右极限LMTP!!!");
|
||||
}
|
||||
}
|
||||
//左极限 true->false (流程上必需在报警清除后先复位)
|
||||
if ((IOStatus[axisIndex] & (uint)Ax_Motion_IO.AX_MOTION_IO_LMTN) > 0 && ((AxisState)AxState[axisIndex]) != AxisState.STA_AX_HOMING)
|
||||
{
|
||||
if (!isStopNow)
|
||||
{
|
||||
isStopNow = true;
|
||||
stopNow();//左极限状态需急停
|
||||
}
|
||||
if (!bLMTN)
|
||||
{
|
||||
bLMTN = true;
|
||||
WarningEvent?.Invoke(WarningEnum.High, $"Axis{axisIndex} 触发左极限LMTN!!!");
|
||||
}
|
||||
}
|
||||
////ORG 回原点
|
||||
//if ((IOStatus[axisIndex] & (uint)Ax_Motion_IO.AX_MOTION_IO_ORG) > 0)
|
||||
//{
|
||||
// WarningEvent?.Invoke(WarningEnum.Normal, $"Axis{axisIndex} 触发ORG信号!");
|
||||
//}
|
||||
////EZ 回原点
|
||||
//if ((IOStatus[axisIndex] & (uint)Ax_Motion_IO.AX_MOTION_IO_EZ) > 0)
|
||||
//{
|
||||
// WarningEvent?.Invoke(WarningEnum.Normal, $"Axis{axisIndex} 触发EZ信号!");
|
||||
//}
|
||||
|
||||
axisStateEvent?.Invoke(axisIndex, AxisStateType.AxisIOState, IOStatus[axisIndex]);
|
||||
//log?.Invoke(WarningEnum.Normal, $"({AxisIndex}轴)AxisMotionIO = {((Ax_Motion_IO)IOStatus[AxisIndex]).ToString()}");
|
||||
//checkMotionIOStatus(AxisIndex, IOStatus[AxisIndex]);
|
||||
}
|
||||
|
||||
//获取Axis的当前运动状态
|
||||
if ((uint)ErrorCode.SUCCESS == Motion.mAcm_AxGetMotionStatus(m_Axishand[axisIndex], ref AxMotionState[axisIndex]))
|
||||
axisStateEvent?.Invoke(axisIndex, AxisStateType.AxisMotionState, AxMotionState[axisIndex]);
|
||||
//log?.Invoke(WarningEnum.Normal, $"({AxisIndex}轴)AxisMotionStatus = {AxMotionState[AxisIndex].ToString()}");
|
||||
}
|
||||
|
||||
//private void checkMotionIOStatus(int axisIndex, uint IOStatus)
|
||||
//{
|
||||
// if ((IOStatus & (uint)Ax_Motion_IO.AX_MOTION_IO_ALM) > 0)//报警信号输出
|
||||
// log?.Invoke(2, $"轴{axisIndex} 发出告警!!");
|
||||
|
||||
// bool ALM = (IOStatus & (uint)Ax_Motion_IO.AX_MOTION_IO_ALM) > 0;
|
||||
// bool ORG = (IOStatus & (uint)Ax_Motion_IO.AX_MOTION_IO_ORG) > 0;//ORG
|
||||
// bool EL_R = (IOStatus & (uint)Ax_Motion_IO.AX_MOTION_IO_LMTP) > 0;//右极限
|
||||
// bool EL_L = (IOStatus & (uint)Ax_Motion_IO.AX_MOTION_IO_LMTN) > 0;//-EL 左
|
||||
// bool SVON = (IOStatus & (uint)Ax_Motion_IO.AX_MOTION_IO_SVON) > 0;
|
||||
//}
|
||||
|
||||
private string getErrInfo(uint errorCode)
|
||||
{
|
||||
StringBuilder ErrorMsg = new StringBuilder("", 100);
|
||||
//Get the error message according to error code returned from API
|
||||
Boolean res = Motion.mAcm_GetErrorMessage(errorCode, ErrorMsg, 100);
|
||||
if (res) return ErrorMsg.ToString();
|
||||
return "获取错误信息失败!";
|
||||
}
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="pulseVal"></param>
|
||||
/// <param name="mmPulse"></param>
|
||||
/// <returns></returns>
|
||||
public double tomm(double pulseVal, double pulse)
|
||||
{
|
||||
return (pulseVal / pulse);
|
||||
}
|
||||
/// <summary>
|
||||
/// mm转脉冲
|
||||
/// </summary>
|
||||
/// <param name="mm"></param>
|
||||
/// <param name="mmPulse">1mm 对应 脉冲数</param>
|
||||
/// <returns></returns>
|
||||
private double toPulse(double mm, double mmPulse)
|
||||
{
|
||||
return (mm * mmPulse);
|
||||
}
|
||||
public double getCmdPos_mm(int axisIndex)
|
||||
{
|
||||
return tomm(CmdPos[axisIndex], Config.Axis_MM2PulseNum[axisIndex]);
|
||||
}
|
||||
public double getActualPos_mm(int axisIndex)
|
||||
{
|
||||
return tomm(ActualPos[axisIndex], Config.Axis_MM2PulseNum[axisIndex]);
|
||||
}
|
||||
#endregion
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
321
halftoneproject-master/AssistClient/Device/CodeScannerDev.cs
Normal file
321
halftoneproject-master/AssistClient/Device/CodeScannerDev.cs
Normal file
@ -0,0 +1,321 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Text;
|
||||
|
||||
namespace AssistClient.Device
|
||||
{
|
||||
public class CodeScannerDev:IDisposable
|
||||
{
|
||||
#region WIN32API
|
||||
//private const int WM_KEYDOWN = 0x100;//KEYDOWN
|
||||
//private const int WM_KEYUP = 0x101;//KEYUP
|
||||
//private const int WM_SYSKEYDOWN = 0x104;//SYSKEYDOWN
|
||||
//private const int WM_SYSKEYUP = 0x105;//SYSKEYUP
|
||||
//private static int HookProc(int nCode, Int32 wParam, IntPtr lParam);
|
||||
private int hKeyboardHook = 0;//声明键盘钩子处理的初始值
|
||||
private ScanerCodes codes = new ScanerCodes();//13为键盘钩子
|
||||
//定义成静态,这样不会抛出回收异常
|
||||
private static HookProc hookproc;
|
||||
delegate int HookProc(int nCode, Int32 wParam, IntPtr lParam);
|
||||
[DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)] //设置钩子
|
||||
private static extern int SetWindowsHookEx(int idHook, HookProc lpfn, IntPtr hInstance, int threadId);
|
||||
[DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)] //卸载钩子
|
||||
private static extern bool UnhookWindowsHookEx(int idHook);
|
||||
[DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)] //继续下个钩子
|
||||
private static extern int CallNextHookEx(int idHook, int nCode, Int32 wParam, IntPtr lParam);
|
||||
|
||||
[DllImport("user32", EntryPoint = "GetKeyNameText")]
|
||||
private static extern int GetKeyNameText(int IParam, StringBuilder lpBuffer, int nSize);
|
||||
[DllImport("user32", EntryPoint = "GetKeyboardState")] //获取按键的状态
|
||||
private static extern int GetKeyboardState(byte[] pbKeyState);
|
||||
[DllImport("user32", EntryPoint = "ToAscii")] //ToAscii职能的转换指定的虚拟键码和键盘状态的相应字符或字符
|
||||
private static extern bool ToAscii(int VirtualKey, int ScanCode, byte[] lpKeySate, ref uint lpChar, int uFlags);
|
||||
//int VirtualKey //[in] 指定虚拟关键代码进行翻译。
|
||||
//int uScanCode, // [in] 指定的硬件扫描码的关键须翻译成英文。高阶位的这个值设定的关键,如果是(不压)
|
||||
//byte[] lpbKeyState, // [in] 指针,以256字节数组,包含当前键盘的状态。每个元素(字节)的数组包含状态的一个关键。如果高阶位的字节是一套,关键是下跌(按下)。在低比特,如/果设置表明,关键是对切换。在此功能,只有肘位的CAPS LOCK键是相关的。在切换状态的NUM个锁和滚动锁定键被忽略。 //byte[] lpwTransKey, // [out] 指针的缓冲区收到翻译字符或字符。 //uint fuState); // [in] Specifies whether a menu is active. This parameter must be 1 if a menu is active, or 0 otherwise.
|
||||
|
||||
[DllImport("kernel32.dll")] //使用WINDOWS API函数代替获取当前实例的函数,防止钩子失效
|
||||
private static extern IntPtr GetModuleHandle(string name);
|
||||
#endregion
|
||||
|
||||
public Action<WarningEnum, string> WarningEvent;
|
||||
//public Action<ScanerCodes> ScanerEvent;
|
||||
public Action<string> ScanerEvent;
|
||||
public CodeScannerDev()
|
||||
{
|
||||
}
|
||||
/// <summary>
|
||||
/// 处理回调时需锁定
|
||||
/// </summary>
|
||||
public bool isLock { get; set; }
|
||||
public bool start()
|
||||
{
|
||||
try
|
||||
{
|
||||
if (hKeyboardHook == 0)
|
||||
{
|
||||
hookproc = new HookProc(KeyboardHookProc);
|
||||
//GetModuleHandle 函数 替代 Marshal.GetHINSTANCE
|
||||
//防止在 framework4.0中 注册钩子不成功
|
||||
IntPtr modulePtr = GetModuleHandle(Process.GetCurrentProcess().MainModule.ModuleName);
|
||||
//WH_KEYBOARD_LL=13
|
||||
//全局钩子 WH_KEYBOARD_LL
|
||||
// hKeyboardHook = SetWindowsHookEx(13, hookproc, Marshal.GetHINSTANCE(Assembly.GetExecutingAssembly().GetModules()[0]), 0);
|
||||
hKeyboardHook = SetWindowsHookEx(13, hookproc, modulePtr, 0);
|
||||
}
|
||||
return (hKeyboardHook != 0);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
WarningEvent?.Invoke(WarningEnum.Normal,ex.Message);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
public bool stop()
|
||||
{
|
||||
try
|
||||
{
|
||||
if (hKeyboardHook != 0)
|
||||
{
|
||||
bool retKeyboard = UnhookWindowsHookEx(hKeyboardHook);
|
||||
hookproc = null;
|
||||
hKeyboardHook = 0;
|
||||
return retKeyboard;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
catch
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private int KeyboardHookProc(int nCode, Int32 wParam, IntPtr lParam)
|
||||
{
|
||||
try
|
||||
{
|
||||
EventMsg msg = (EventMsg)Marshal.PtrToStructure(lParam, typeof(EventMsg));
|
||||
codes.Add(msg);
|
||||
if (msg.message == 13 && msg.paramH > 0 && !string.IsNullOrWhiteSpace(codes.Result))
|
||||
{
|
||||
ScanerEvent?.Invoke(codes.Result);
|
||||
}
|
||||
return CallNextHookEx(hKeyboardHook, nCode, wParam, lParam);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
stop();
|
||||
}
|
||||
|
||||
public class ScanerCodes
|
||||
{
|
||||
private int ts = 100; // 指定输入间隔为300毫秒以内时为连续输入
|
||||
private List<List<EventMsg>> _keys = new List<List<EventMsg>>();
|
||||
private List<int> _keydown = new List<int>(); // 保存组合键状态
|
||||
private List<string> _result = new List<string>(); // 返回结果集
|
||||
private DateTime _last = DateTime.Now;
|
||||
private byte[] _state = new byte[256];
|
||||
private string _key = string.Empty;
|
||||
private string _cur = string.Empty;
|
||||
public EventMsg Event
|
||||
{
|
||||
get
|
||||
{
|
||||
if (_keys.Count == 0)
|
||||
{
|
||||
return new EventMsg();
|
||||
}
|
||||
else
|
||||
{
|
||||
return _keys[_keys.Count - 1][_keys[_keys.Count - 1].Count - 1];
|
||||
}
|
||||
}
|
||||
}
|
||||
public List<int> KeyDowns
|
||||
{
|
||||
get
|
||||
{
|
||||
return _keydown;
|
||||
}
|
||||
}
|
||||
public DateTime LastInput
|
||||
{
|
||||
get
|
||||
{
|
||||
return _last;
|
||||
}
|
||||
}
|
||||
public byte[] KeyboardState
|
||||
{
|
||||
get
|
||||
{
|
||||
return _state;
|
||||
}
|
||||
}
|
||||
public int KeyDownCount
|
||||
{
|
||||
get
|
||||
{
|
||||
return _keydown.Count;
|
||||
}
|
||||
}
|
||||
public string Result
|
||||
{
|
||||
get
|
||||
{
|
||||
if (_result.Count > 0)
|
||||
{
|
||||
return _result[_result.Count - 1].Trim();
|
||||
}
|
||||
else
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
public string CurrentKey
|
||||
{
|
||||
get
|
||||
{
|
||||
return _key;
|
||||
}
|
||||
}
|
||||
public string CurrentChar
|
||||
{
|
||||
get
|
||||
{
|
||||
return _cur;
|
||||
}
|
||||
}
|
||||
public bool isShift
|
||||
{
|
||||
get
|
||||
{
|
||||
return _keydown.Contains(160);
|
||||
}
|
||||
}
|
||||
public void Add(EventMsg msg)
|
||||
{
|
||||
#region 记录按键信息
|
||||
|
||||
// 首次按下按键
|
||||
if (_keys.Count == 0)
|
||||
{
|
||||
_keys.Add(new List<EventMsg>());
|
||||
_keys[0].Add(msg);
|
||||
_result.Add(string.Empty);
|
||||
}
|
||||
// 未释放其他按键时按下按键
|
||||
else if (_keydown.Count > 0)
|
||||
{
|
||||
_keys[_keys.Count - 1].Add(msg);
|
||||
}
|
||||
// 单位时间内按下按键
|
||||
else if (((TimeSpan)(DateTime.Now - _last)).TotalMilliseconds < ts)
|
||||
{
|
||||
_keys[_keys.Count - 1].Add(msg);
|
||||
}
|
||||
// 从新记录输入内容
|
||||
else
|
||||
{
|
||||
_keys.Add(new List<EventMsg>());
|
||||
_keys[_keys.Count - 1].Add(msg);
|
||||
_result.Add(string.Empty);
|
||||
}
|
||||
#endregion
|
||||
_last = DateTime.Now;
|
||||
#region 获取键盘状态
|
||||
// 记录正在按下的按键
|
||||
if (msg.paramH == 0 && !_keydown.Contains(msg.message))
|
||||
{
|
||||
_keydown.Add(msg.message);
|
||||
}
|
||||
// 清除已松开的按键
|
||||
if (msg.paramH > 0 && _keydown.Contains(msg.message))
|
||||
{
|
||||
_keydown.Remove(msg.message);
|
||||
}
|
||||
#endregion
|
||||
#region 计算按键信息
|
||||
|
||||
int v = msg.message & 0xff;
|
||||
int c = msg.paramL & 0xff;
|
||||
StringBuilder strKeyName = new StringBuilder(500);
|
||||
if (GetKeyNameText(c * 65536, strKeyName, 255) > 0)
|
||||
{
|
||||
_key = strKeyName.ToString().Trim(new char[] { ' ', '\0' });
|
||||
GetKeyboardState(_state);
|
||||
if (_key.Length == 1 && msg.paramH == 0)// && msg.paramH == 0
|
||||
{
|
||||
// 根据键盘状态和shift缓存判断输出字符
|
||||
_cur = ShiftChar(_key, isShift, _state).ToString();
|
||||
_result[_result.Count - 1] += _cur;
|
||||
}
|
||||
//判断是+ 强制添加+
|
||||
else if (_key.Length == 5 && msg.paramH == 0 && msg.paramL == 78 && msg.message == 107)
|
||||
{
|
||||
// 根据键盘状态和shift缓存判断输出字符
|
||||
_cur = Convert.ToChar('+').ToString();
|
||||
_result[_result.Count - 1] += _cur;
|
||||
}
|
||||
// 备选
|
||||
else
|
||||
{
|
||||
_cur = string.Empty;
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
private char ShiftChar(string k, bool isShiftDown, byte[] state)
|
||||
{
|
||||
bool capslock = state[0x14] == 1;
|
||||
bool numlock = state[0x90] == 1;
|
||||
bool scrolllock = state[0x91] == 1;
|
||||
bool shiftdown = state[0xa0] == 1;
|
||||
char chr = (capslock ? k.ToUpper() : k.ToLower()).ToCharArray()[0];
|
||||
if (isShiftDown)
|
||||
{
|
||||
if (chr >= 'a' && chr <= 'z')
|
||||
{
|
||||
chr = (char)((int)chr - 32);
|
||||
}
|
||||
else if (chr >= 'A' && chr <= 'Z')
|
||||
{
|
||||
if (chr == 'Z')
|
||||
{
|
||||
string s = "";
|
||||
}
|
||||
chr = (char)((int)chr + 32);
|
||||
}
|
||||
else
|
||||
{
|
||||
string s = "`1234567890-=[];',./";
|
||||
string u = "~!@#$%^&*()_+{}:\"<>?";
|
||||
if (s.IndexOf(chr) >= 0)
|
||||
{
|
||||
return (u.ToCharArray())[s.IndexOf(chr)];
|
||||
}
|
||||
}
|
||||
}
|
||||
return chr;
|
||||
}
|
||||
}
|
||||
public struct EventMsg
|
||||
{
|
||||
public int message;
|
||||
public int paramL;
|
||||
public int paramH;
|
||||
public int Time;
|
||||
public int hwnd;
|
||||
}
|
||||
}
|
||||
}
|
21
halftoneproject-master/AssistClient/Device/ForLib.cs
Normal file
21
halftoneproject-master/AssistClient/Device/ForLib.cs
Normal file
@ -0,0 +1,21 @@
|
||||
using AssistClient.Utils;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Timers;
|
||||
|
||||
namespace AssistClient.Device
|
||||
{
|
||||
public class ForLib
|
||||
{
|
||||
//uuid, Num(1-n)
|
||||
public Dictionary<long, int> dicData=new Dictionary<long, int>();
|
||||
public void clear()
|
||||
{
|
||||
dicData.Clear();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
21
halftoneproject-master/AssistClient/Device/IFLib.cs
Normal file
21
halftoneproject-master/AssistClient/Device/IFLib.cs
Normal file
@ -0,0 +1,21 @@
|
||||
using AssistClient.Utils;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Timers;
|
||||
|
||||
namespace AssistClient.Device
|
||||
{
|
||||
public class IFLib
|
||||
{
|
||||
//uuid, Num(1-n)
|
||||
public Dictionary<long, int> dicData=new Dictionary<long, int>();
|
||||
public void clear()
|
||||
{
|
||||
dicData.Clear();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
272
halftoneproject-master/AssistClient/Device/IOCardDev.cs
Normal file
272
halftoneproject-master/AssistClient/Device/IOCardDev.cs
Normal file
@ -0,0 +1,272 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.Drawing.Drawing2D;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using System.Security.Policy;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using System.Timers;
|
||||
using Advantech.Motion;
|
||||
using Automation.BDaq;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using OpenCvSharp;
|
||||
|
||||
namespace AssistClient.Device
|
||||
{
|
||||
public class IOCardDev : IDisposable
|
||||
{
|
||||
private Automation.BDaq.InstantDiCtrl instantDiCtrl1;
|
||||
private Automation.BDaq.InstantDoCtrl instantDoCtrl;
|
||||
public string DeviceNum { get; private set; }
|
||||
/// <summary>
|
||||
/// 读取输入端口数量
|
||||
/// </summary>
|
||||
public int DIPortCount { get; private set; }
|
||||
/// <summary>
|
||||
/// 写入输出端口数量
|
||||
/// </summary>
|
||||
public int DOPortCount { get; private set; }
|
||||
/// <summary>
|
||||
/// 读取到的输入值
|
||||
/// </summary>
|
||||
public byte[] DIData { get; private set; }
|
||||
public byte[] DOData { get; private set; }
|
||||
/// <summary>
|
||||
/// Log输出
|
||||
/// </summary>
|
||||
public Action<WarningEnum, string> WarningEvent;
|
||||
public Action<int, byte> INEvent;
|
||||
public Action<int, byte> OUTEvent;
|
||||
/// <summary>
|
||||
/// 是否打开设备成功
|
||||
/// </summary>
|
||||
public bool IsInit { get; private set; } = false;
|
||||
private System.Timers.Timer timer = new System.Timers.Timer();
|
||||
//频闪使用
|
||||
private System.Timers.Timer timerStrobe = new System.Timers.Timer();
|
||||
private List<string> strobeList = new List<string>();
|
||||
public IOCardDev()
|
||||
{
|
||||
}
|
||||
public bool start(string deviceNum="")
|
||||
{
|
||||
try
|
||||
{
|
||||
instantDiCtrl1 = new Automation.BDaq.InstantDiCtrl();
|
||||
instantDoCtrl = new Automation.BDaq.InstantDoCtrl();
|
||||
strobeList=new List<string>();
|
||||
|
||||
if (deviceNum != "")
|
||||
{
|
||||
instantDiCtrl1.SelectedDevice = new Automation.BDaq.DeviceInformation(deviceNum);
|
||||
instantDoCtrl.SelectedDevice = new DeviceInformation(deviceNum);
|
||||
}
|
||||
|
||||
//根据加载的文件设置设备的所有配置
|
||||
string cfgPath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + "\\DevCfg\\IOCard_1703.xml";
|
||||
if (File.Exists(cfgPath))
|
||||
{
|
||||
var result = instantDiCtrl1.LoadProfile(cfgPath);//Loads a profile to initialize the device.
|
||||
var result2 = instantDoCtrl.LoadProfile(cfgPath);//Loads a profile to initialize the device.
|
||||
if (BioFailed(result) && BioFailed(result2))
|
||||
throw new Exception("CardIO Load Config Failed With Error Code: [" + result.ToString() + "]");
|
||||
}
|
||||
|
||||
DeviceNum = instantDiCtrl1.SelectedDevice.Description;
|
||||
DIPortCount = instantDiCtrl1.Features.PortCount;
|
||||
DIData = new byte[DIPortCount];
|
||||
DOPortCount = instantDoCtrl.Features.PortCount;
|
||||
DOData = new byte[DOPortCount];
|
||||
|
||||
loadDOData();
|
||||
IsInit = true;
|
||||
timer.Elapsed += Timer_Elapsed;
|
||||
timer.Interval = 100;
|
||||
timer.Start();
|
||||
|
||||
timerStrobe.Elapsed += timerStrobe_Elapsed;
|
||||
timerStrobe.Interval = 500;
|
||||
timerStrobe.Start();
|
||||
return true;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
WarningEvent?.Invoke(WarningEnum.High, ex.Message);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
public void stop()
|
||||
{
|
||||
if (!IsInit) return;
|
||||
|
||||
IsInit = false;
|
||||
strobeList.Clear();//闪烁状态清空
|
||||
|
||||
timer.Stop();
|
||||
timerStrobe.Stop();
|
||||
//instantDiCtrl1.Cleanup();
|
||||
instantDiCtrl1.Dispose();
|
||||
//instantDoCtrl.Cleanup();
|
||||
instantDoCtrl.Dispose();
|
||||
}
|
||||
private void loadDOData(int portIndex=-1)
|
||||
{
|
||||
for (int i = 0; i < DOPortCount; ++i)
|
||||
{
|
||||
if (i == portIndex || portIndex < 0)
|
||||
{
|
||||
byte data;
|
||||
var reuslt = instantDoCtrl.Read(i, out data);
|
||||
if (reuslt != Automation.BDaq.ErrorCode.Success)
|
||||
throw new Exception("加载CardIO输出状态失败!");
|
||||
|
||||
if (DOData[i] != data)
|
||||
{
|
||||
DOData[i] = data;
|
||||
//Config.HeightDevIOState = compareIOHeightDev();
|
||||
//WarningEvent(WarningEnum.Normal, "厚度气缸状态:" + Config.HeightDevIOState.ToString());
|
||||
OUTEvent?.Invoke(i, DOData[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
/// 复位,全置0
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public bool reset()
|
||||
{
|
||||
strobeList.Clear();//闪烁状态清空
|
||||
|
||||
byte[] data=new byte[DOPortCount];
|
||||
for(int i = 0;i < data.Length; ++i)
|
||||
data[i]=0;
|
||||
var reuslt = instantDoCtrl.Write(0, data.Length, data);
|
||||
if (BioFailed(reuslt))
|
||||
return false;
|
||||
|
||||
loadDOData();
|
||||
return true;
|
||||
}
|
||||
/// <summary>
|
||||
/// 闪烁状态会清空
|
||||
/// </summary>
|
||||
/// <param name="startPort"></param>
|
||||
/// <param name="data"></param>
|
||||
/// <returns></returns>
|
||||
public bool writeData(int startPort, byte[] data)
|
||||
{
|
||||
strobeList.Clear();//闪烁状态清空
|
||||
|
||||
var reuslt = instantDoCtrl.Write(startPort, data.Length, data);
|
||||
if (BioFailed(reuslt))
|
||||
return false;
|
||||
|
||||
loadDOData(data.Length == 1 ? startPort : -1);
|
||||
return true;
|
||||
}
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="portIndex"></param>
|
||||
/// <param name="bitIndex"></param>
|
||||
/// <param name="state"></param>
|
||||
/// <param name="isStrobe">频闪</param>
|
||||
/// <returns></returns>
|
||||
public bool writeBitState(int portIndex, int bitIndex, bool state, bool isStrobe = false)
|
||||
{
|
||||
//byte bit = (byte)(DOData[portIndex] & (byte)(0x01<<bitIndex));
|
||||
//if (bit > 0 && state) return true;
|
||||
//if (bit == 0 && !state) return true;
|
||||
|
||||
//byte data = DOData[portIndex];
|
||||
//data &= (byte)(~(0x1 << bitIndex));
|
||||
//data |= (byte)((state ? 1 : 0) << bitIndex);
|
||||
//var reuslt = instantDoCtrl.Write(startPort, len, data);
|
||||
|
||||
var reuslt = instantDoCtrl.WriteBit(portIndex, bitIndex, (byte)(state ? 1 : 0));// (byte)((state ? 1 : 0) << bitIndex));
|
||||
if (BioFailed(reuslt))
|
||||
return false;
|
||||
|
||||
loadDOData(portIndex);
|
||||
|
||||
string key = portIndex + "|" + bitIndex;
|
||||
if (state && isStrobe)
|
||||
strobeList.Add(key);
|
||||
else if(strobeList.Contains(key))
|
||||
strobeList.Remove(key);
|
||||
|
||||
return true;
|
||||
}
|
||||
public bool getDIBitState(int portIndex, int bitIndex)
|
||||
{
|
||||
byte data = 0x01;
|
||||
data=(byte)(data << bitIndex);
|
||||
return (DIData[portIndex] & data) > 0;
|
||||
}
|
||||
public bool getDOBitState(int portIndex, int bitIndex)
|
||||
{
|
||||
byte data = 0x01;
|
||||
data = (byte)(data << bitIndex);
|
||||
return (DOData[portIndex] & data) > 0;
|
||||
}
|
||||
private bool strobeState = true;
|
||||
private void timerStrobe_Elapsed(object sender, ElapsedEventArgs e)
|
||||
{
|
||||
if (!IsInit) return;
|
||||
|
||||
string[] key;
|
||||
for(int i = 0;i< strobeList.Count; i++)
|
||||
{
|
||||
key=strobeList[i].Split('|');
|
||||
instantDoCtrl.WriteBit(Convert.ToInt16(key[0]), Convert.ToInt16(key[1]), (byte)(strobeState ? 1 : 0));
|
||||
}
|
||||
|
||||
strobeState =!strobeState;
|
||||
}
|
||||
private void Timer_Elapsed(object sender, ElapsedEventArgs e)
|
||||
{
|
||||
if (!IsInit) return;
|
||||
timer.Stop();
|
||||
|
||||
//byte data = 0;//data is used to the API ReadBit.
|
||||
//int bit = 0;//bit is used to the API ReadBit.
|
||||
Automation.BDaq.ErrorCode result;
|
||||
int startPort = 0;
|
||||
byte[] datas = new byte[DIPortCount];
|
||||
do
|
||||
{
|
||||
result = instantDiCtrl1.Read(startPort, DIPortCount, datas);
|
||||
//errorCode = instantDiCtrl.ReadBit(startPort, bit, out data);
|
||||
if (BioFailed(result))
|
||||
{
|
||||
//throw new Exception();
|
||||
continue;
|
||||
}
|
||||
for (int i = 0; i < datas.Length; i++)
|
||||
{
|
||||
if (DIData[i] != datas[i])
|
||||
{
|
||||
DIData[i]= datas[i];
|
||||
INEvent?.Invoke(i, DIData[i]);
|
||||
}
|
||||
}
|
||||
Thread.Sleep(10);
|
||||
} while (IsInit);
|
||||
}
|
||||
|
||||
private static bool BioFailed(Automation.BDaq.ErrorCode err)
|
||||
{
|
||||
return err < Automation.BDaq.ErrorCode.Success && err >= Automation.BDaq.ErrorCode.ErrorHandleNotValid;
|
||||
}
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
stop();
|
||||
}
|
||||
}
|
||||
}
|
111
halftoneproject-master/AssistClient/Device/LightDev.cs
Normal file
111
halftoneproject-master/AssistClient/Device/LightDev.cs
Normal file
@ -0,0 +1,111 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using System.Timers;
|
||||
using System.Windows.Forms;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using static ControllerDllCSharp.ClassLibControllerDll;
|
||||
namespace AssistClient.Device
|
||||
{
|
||||
public class LightDev : IDisposable
|
||||
{
|
||||
private long portHandle;
|
||||
/// <summary>
|
||||
/// 光源亮度值
|
||||
/// </summary>
|
||||
public int DigitalValue { get; private set; }
|
||||
|
||||
public Action<WarningEnum, string> WarningEvent;
|
||||
/// <summary>
|
||||
/// 光源亮度值<通道号,亮度值0-255>
|
||||
/// </summary>
|
||||
public Action<int, int> DigitalEvent;
|
||||
/// <summary>
|
||||
/// 是否打开设备成功
|
||||
/// </summary>
|
||||
public bool IsInit { get; private set; } = false;
|
||||
//private System.Timers.Timer timer = new System.Timers.Timer();
|
||||
public LightDev()
|
||||
{
|
||||
}
|
||||
public bool start(int comNum)
|
||||
{
|
||||
try
|
||||
{
|
||||
int result = CreateSerialPort(comNum, ref portHandle); //创建串口
|
||||
if (result != SUCCESS)
|
||||
throw new Exception($"打开光源设备(COM{comNum})失败: {result}");
|
||||
|
||||
IsInit = true;
|
||||
//timer.Elapsed += Timer_Elapsed;
|
||||
//timer.Interval = 100;
|
||||
//timer.Enabled = true;
|
||||
|
||||
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;
|
||||
//timer.Stop();
|
||||
int result = ReleaseSerialPort(portHandle); //断开串口
|
||||
}
|
||||
catch { }
|
||||
}
|
||||
public int getDigitalValue(int channelIndex)
|
||||
{
|
||||
if (!IsInit) return -1;
|
||||
|
||||
int value = 0;
|
||||
if (GetDigitalValue(ref value, channelIndex, portHandle) != SUCCESS)
|
||||
return -1;
|
||||
|
||||
DigitalEvent?.Invoke(channelIndex, value);
|
||||
return value;
|
||||
}
|
||||
/// <summary>
|
||||
/// 设置亮度值
|
||||
/// </summary>
|
||||
/// <param name="channelIndex">通道</param>
|
||||
/// <param name="value">0-255</param>
|
||||
/// <returns></returns>
|
||||
public bool setDigitalValue(int channelIndex, int value)
|
||||
{
|
||||
if (!IsInit) return false;
|
||||
Task.Factory.StartNew(() => {
|
||||
if (SetDigitalValue(channelIndex, value, portHandle) != SUCCESS)
|
||||
return;// false;
|
||||
});
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
private void Timer_Elapsed(object sender, ElapsedEventArgs e)
|
||||
{
|
||||
if (!IsInit) return;
|
||||
|
||||
}
|
||||
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
stop();
|
||||
}
|
||||
}
|
||||
}
|
951
halftoneproject-master/AssistClient/Device/ScannerDev.cs
Normal file
951
halftoneproject-master/AssistClient/Device/ScannerDev.cs
Normal file
@ -0,0 +1,951 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Drawing;
|
||||
using System.Drawing.Imaging;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using System.Timers;
|
||||
using System.Windows.Forms;
|
||||
using MvCamCtrl.NET;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using OpenCvSharp.Dnn;
|
||||
namespace AssistClient.Device
|
||||
{
|
||||
public class ScannerDev : IDisposable
|
||||
{
|
||||
private uint m_nRowStep = 0;
|
||||
[DllImport("user32.dll")]
|
||||
[return: MarshalAs(UnmanagedType.Bool)]
|
||||
private static extern bool IsWindow(IntPtr hWnd);
|
||||
|
||||
public enum ScannerType
|
||||
{
|
||||
[Description("板卡相机")]
|
||||
GENTL = 0,
|
||||
[Description("网口相机")]
|
||||
CC = 1,
|
||||
}
|
||||
private ScannerType scannerType;
|
||||
private string bmpSavePath;
|
||||
|
||||
public Action<WarningEnum, string> WarningEvent;
|
||||
/// <summary>
|
||||
/// 拍照回传 (1-num,文件名.bmp)
|
||||
/// </summary>
|
||||
public Action<int, string> ScanEventPath;
|
||||
//public Action<int, byte[]> ScanEvent;
|
||||
public Action<int, Bitmap> ScanEvent;
|
||||
|
||||
/// <summary>
|
||||
/// 曝光
|
||||
/// </summary>
|
||||
public float ExposureTime { get; private set; }
|
||||
/// <summary>
|
||||
/// 增益
|
||||
/// </summary>
|
||||
public float Gain { get; private set; }
|
||||
/// <summary>
|
||||
/// 帧率
|
||||
/// </summary>
|
||||
public float ResultingFrameRate { get; private set; }
|
||||
/// <summary>
|
||||
/// 图片大小
|
||||
/// </summary>
|
||||
public Size size { get; private set; }
|
||||
/// <summary>
|
||||
/// 是否连续模式
|
||||
/// </summary>
|
||||
public bool isContinuousMode { get; private set; }
|
||||
/// <summary>
|
||||
/// 是否打开设备成功
|
||||
/// </summary>
|
||||
public bool IsInit { get; private set; } = false;
|
||||
//public string ErrInfo { get; private set; }
|
||||
//private System.Timers.Timer timer = new System.Timers.Timer();
|
||||
|
||||
#region
|
||||
private static MyCamera.cbOutputExdelegate ImageCallback;
|
||||
private static MyCamera.MV_CHUNK_DATA_CONTENT stChunkInfo;// Chunk结构体信息
|
||||
private MyCamera.MV_GENTL_DEV_INFO_LIST m_stGentDeviceList = new MyCamera.MV_GENTL_DEV_INFO_LIST();
|
||||
private MyCamera.MV_GENTL_IF_INFO_LIST m_stIFInfoList = new MyCamera.MV_GENTL_IF_INFO_LIST();
|
||||
|
||||
private MyCamera.MV_CC_DEVICE_INFO_LIST m_stCCDeviceList = new MyCamera.MV_CC_DEVICE_INFO_LIST();
|
||||
|
||||
private MyCamera device = new MyCamera();
|
||||
private bool m_bGrabbing = false;//开始采集TAG
|
||||
private Thread m_hReceiveThread = null;
|
||||
|
||||
//显示图像控件句柄
|
||||
private IntPtr previewHwnd = IntPtr.Zero;
|
||||
//拍照数量
|
||||
private int scanNum = 0;
|
||||
#endregion
|
||||
public ScannerDev(ScannerType type)
|
||||
{
|
||||
this.scannerType = type;
|
||||
}
|
||||
public bool open()
|
||||
{
|
||||
if (IsInit) return true;
|
||||
|
||||
System.GC.Collect();
|
||||
int nRet;
|
||||
try
|
||||
{
|
||||
if (this.scannerType == ScannerType.GENTL)
|
||||
{
|
||||
nRet = MyCamera.MV_CC_EnumInterfacesByGenTL_NET(ref m_stIFInfoList, Config.Scanner_GENTL_CTI);
|
||||
if (File.Exists(Config.Scanner_GENTL_CTI))
|
||||
{
|
||||
if (0 != nRet || m_stIFInfoList.nInterfaceNum < 1)
|
||||
{
|
||||
WarningEvent?.Invoke(WarningEnum.High, $"Enumerate interfaces fail! ({nRet})");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
MyCamera.MV_GENTL_IF_INFO stIFInfo = (MyCamera.MV_GENTL_IF_INFO)Marshal.PtrToStructure(m_stIFInfoList.pIFInfo[0], typeof(MyCamera.MV_GENTL_IF_INFO));
|
||||
nRet = MyCamera.MV_CC_EnumDevicesByGenTL_NET(ref stIFInfo, ref m_stGentDeviceList);
|
||||
if (0 != nRet || m_stGentDeviceList.nDeviceNum < 1)
|
||||
{
|
||||
WarningEvent?.Invoke(WarningEnum.High, $"Enumerate devices fail! ({nRet})");
|
||||
return false;
|
||||
}
|
||||
|
||||
// ch:获取选择的设备信息 | en:Get selected device information
|
||||
MyCamera.MV_GENTL_DEV_INFO device = (MyCamera.MV_GENTL_DEV_INFO)Marshal.PtrToStructure(m_stGentDeviceList.pDeviceInfo[0], typeof(MyCamera.MV_GENTL_DEV_INFO));
|
||||
// ch:打开设备 | en:Open device
|
||||
if (null == this.device)
|
||||
{
|
||||
this.device = new MyCamera();
|
||||
if (null == this.device)
|
||||
{
|
||||
WarningEvent?.Invoke(WarningEnum.High, $"Open device fail!");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
nRet = this.device.MV_CC_CreateDeviceByGenTL_NET(ref device);
|
||||
if (MyCamera.MV_OK != nRet)
|
||||
{
|
||||
WarningEvent?.Invoke(WarningEnum.High, $"Open device fail! ({nRet})");
|
||||
return false;
|
||||
}
|
||||
|
||||
nRet = this.device.MV_CC_OpenDevice_NET();
|
||||
if (MyCamera.MV_OK != nRet)
|
||||
{
|
||||
this.device.MV_CC_DestroyDevice_NET();
|
||||
WarningEvent?.Invoke(WarningEnum.High, $"Device open fail! ({nRet})");
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
else //CC
|
||||
{
|
||||
nRet = MyCamera.MV_CC_EnumDevices_NET(MyCamera.MV_GIGE_DEVICE | MyCamera.MV_USB_DEVICE, ref m_stCCDeviceList);
|
||||
if (0 != nRet || m_stCCDeviceList.nDeviceNum < 1)
|
||||
{
|
||||
WarningEvent?.Invoke(WarningEnum.High, $"Enumerate devices fail! ({nRet})");
|
||||
return false;
|
||||
}
|
||||
// ch:获取选择的设备信息
|
||||
MyCamera.MV_CC_DEVICE_INFO device = (MyCamera.MV_CC_DEVICE_INFO)Marshal.PtrToStructure(m_stCCDeviceList.pDeviceInfo[0], typeof(MyCamera.MV_CC_DEVICE_INFO));
|
||||
// ch:打开设备 | en:Open device
|
||||
if (null == this.device)
|
||||
{
|
||||
this.device = new MyCamera();
|
||||
if (null == this.device)
|
||||
{
|
||||
WarningEvent?.Invoke(WarningEnum.High, $"Open device fail!");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
nRet = this.device.MV_CC_CreateDevice_NET(ref device);
|
||||
if (MyCamera.MV_OK != nRet)
|
||||
{
|
||||
WarningEvent?.Invoke(WarningEnum.High, $"Open device fail! ({nRet})");
|
||||
return false;
|
||||
}
|
||||
|
||||
nRet = this.device.MV_CC_OpenDevice_NET();
|
||||
if (MyCamera.MV_OK != nRet)
|
||||
{
|
||||
this.device.MV_CC_DestroyDevice_NET();
|
||||
WarningEvent?.Invoke(WarningEnum.High, $"Open device fail! ({nRet})");
|
||||
return false;
|
||||
}
|
||||
|
||||
// ch:探测网络最佳包大小(只对GigE相机有效) | en:Detection network optimal package size(It only works for the GigE camera)
|
||||
if (device.nTLayerType == MyCamera.MV_GIGE_DEVICE)
|
||||
{
|
||||
int nPacketSize = this.device.MV_CC_GetOptimalPacketSize_NET();
|
||||
if (nPacketSize > 0)
|
||||
{
|
||||
nRet = this.device.MV_CC_SetIntValue_NET("GevSCPSPacketSize", (uint)nPacketSize);
|
||||
//if (nRet != MyCamera.MV_OK)
|
||||
//{
|
||||
// ShowErrorMsg("Set Packet Size failed!", nRet);
|
||||
//}
|
||||
}
|
||||
else
|
||||
{
|
||||
//ShowErrorMsg("Get Packet Size failed!", nPacketSize);
|
||||
}
|
||||
}
|
||||
}
|
||||
// ch:注册回调函数 | en:Register image callback //本类不使用回调,使用线程主动循环读取
|
||||
//ImageCallback = new MyCamera.cbOutputExdelegate(ImageCallbackFunc);
|
||||
//nRet = device.MV_CC_RegisterImageCallBackEx_NET(ImageCallback, IntPtr.Zero);
|
||||
//if (MyCamera.MV_OK != nRet)
|
||||
//{
|
||||
// WarningEvent?.Invoke(WarningEnum.High, $"Register image callback failed! ({nRet})");
|
||||
// return false;
|
||||
//}
|
||||
|
||||
init2();
|
||||
// ch:设置采集[软触发/连续]模式 | en:Set Continues Aquisition Mode
|
||||
device.MV_CC_SetEnumValue_NET("AcquisitionMode", (uint)MyCamera.MV_CAM_ACQUISITION_MODE.MV_ACQ_MODE_CONTINUOUS);
|
||||
setMode(false); //软触发
|
||||
|
||||
//
|
||||
getParam();
|
||||
|
||||
IsInit = true;
|
||||
//timer.Elapsed += Timer_Elapsed;
|
||||
//timer.Interval = 100;
|
||||
//timer.Enabled = true;
|
||||
return true;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
WarningEvent?.Invoke(WarningEnum.High, ex.Message);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
public void close()
|
||||
{
|
||||
if (!IsInit) return;
|
||||
|
||||
try
|
||||
{
|
||||
IsInit = false;
|
||||
// ch:取流标志位清零 | en:Reset flow flag bit
|
||||
if (m_bGrabbing == true)
|
||||
{
|
||||
m_bGrabbing = false;
|
||||
m_hReceiveThread.Join();
|
||||
}
|
||||
// ch:关闭设备 | en:Close Device
|
||||
device.MV_CC_CloseDevice_NET();
|
||||
device.MV_CC_DestroyDevice_NET();
|
||||
}
|
||||
catch { }
|
||||
}
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="hwnd">显示图像控件句柄</param>
|
||||
/// <returns></returns>
|
||||
public bool start(IntPtr preview_Hwnd,string bmp_save_path)
|
||||
{
|
||||
if (!IsInit) return false;
|
||||
if (m_bGrabbing) return true;
|
||||
|
||||
this.previewHwnd= preview_Hwnd;
|
||||
this.bmpSavePath = bmp_save_path;
|
||||
// ch:标志位置位true | en:Set position bit true
|
||||
m_bGrabbing = true;
|
||||
m_hReceiveThread = new Thread(ReceiveThreadProcess);
|
||||
m_hReceiveThread.Start();
|
||||
|
||||
// ch:开始采集 | en:Start Grabbing
|
||||
int nRet = device.MV_CC_StartGrabbing_NET();
|
||||
if (MyCamera.MV_OK != nRet)
|
||||
{
|
||||
m_bGrabbing = false;
|
||||
m_hReceiveThread.Join();
|
||||
WarningEvent?.Invoke(WarningEnum.High, $"Start Grabbing Fail! ({nRet})");
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
public bool stop()
|
||||
{
|
||||
if (!IsInit) return false;
|
||||
if (!m_bGrabbing) return true;
|
||||
|
||||
try
|
||||
{
|
||||
// ch:标志位设为false | en:Set flag bit false
|
||||
m_bGrabbing = false;
|
||||
m_hReceiveThread.Join();
|
||||
|
||||
// ch:停止采集 | en:Stop Grabbing
|
||||
int nRet = device.MV_CC_StopGrabbing_NET();
|
||||
if (nRet != MyCamera.MV_OK)
|
||||
{
|
||||
WarningEvent?.Invoke(WarningEnum.High, $"Stop Grabbing Fail! ({nRet})");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
catch
|
||||
{
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
#region private
|
||||
private bool init2()
|
||||
{
|
||||
// ch:获取包大小 || en: Get Payload Size
|
||||
MyCamera.MVCC_INTVALUE stParam = new MyCamera.MVCC_INTVALUE();
|
||||
//int nRet = device.MV_CC_GetIntValue_NET("PayloadSize", ref stParam);//strKey [IN] 属性键值,如获取宽度信息则为"Width" pstValue[IN][OUT] 返回给调用者有关相机属性结构体指针
|
||||
//if (MyCamera.MV_OK != nRet)
|
||||
//{
|
||||
// System.Windows.Forms.MessageBox.Show("Get PayloadSize Fail");
|
||||
// return false;
|
||||
//}
|
||||
//g_nPayloadSize = stParam.nCurValue;
|
||||
|
||||
// ch:获取高 || en: Get Height
|
||||
int nRet = device.MV_CC_GetIntValue_NET("Height", ref stParam);
|
||||
if (MyCamera.MV_OK != nRet)
|
||||
{
|
||||
System.Windows.Forms.MessageBox.Show("Get Height Fail");
|
||||
return false;
|
||||
}
|
||||
uint nHeight = stParam.nCurValue;
|
||||
|
||||
// ch:获取宽 || en: Get Width
|
||||
nRet = device.MV_CC_GetIntValue_NET("Width", ref stParam);
|
||||
if (MyCamera.MV_OK != nRet)
|
||||
{
|
||||
System.Windows.Forms.MessageBox.Show("Get Width Fail");
|
||||
return false;
|
||||
}
|
||||
uint nWidth = stParam.nCurValue;
|
||||
this.size = new Size((int)nWidth, (int)nHeight);
|
||||
// ch:获取步长 || en: Get nRowStep
|
||||
m_nRowStep = nWidth * nHeight;
|
||||
return true;
|
||||
}
|
||||
/// <summary>
|
||||
/// false-软触发 true-连续
|
||||
/// </summary>
|
||||
/// <param name="type"></param>
|
||||
public void setMode(bool isContinuous)
|
||||
{
|
||||
if (isContinuous)
|
||||
{
|
||||
device.MV_CC_SetEnumValue_NET("TriggerMode", (uint)MyCamera.MV_CAM_TRIGGER_MODE.MV_TRIGGER_MODE_OFF);
|
||||
}
|
||||
else
|
||||
{
|
||||
device.MV_CC_SetEnumValue_NET("TriggerMode", (uint)MyCamera.MV_CAM_TRIGGER_MODE.MV_TRIGGER_MODE_ON);
|
||||
|
||||
// ch:触发源选择:0 - Line0;
|
||||
// 1 - Line1;
|
||||
// 2 - Line2;
|
||||
// 3 - Line3;
|
||||
// 4 - Counter;
|
||||
// 7 - Software;
|
||||
//if (cbSoftTrigger.Checked)
|
||||
device.MV_CC_SetEnumValue_NET("TriggerSource", (uint)MyCamera.MV_CAM_TRIGGER_SOURCE.MV_TRIGGER_SOURCE_SOFTWARE);
|
||||
//else
|
||||
// m_MyCamera.MV_CC_SetEnumValue_NET("TriggerSource", (uint)MyCamera.MV_CAM_TRIGGER_SOURCE.MV_TRIGGER_SOURCE_LINE0);
|
||||
}
|
||||
|
||||
isContinuousMode = isContinuous;
|
||||
}
|
||||
public void setPreviewWin(IntPtr preview_Hwnd)
|
||||
{
|
||||
this.previewHwnd = preview_Hwnd;
|
||||
}
|
||||
public void ReceiveThreadProcess()
|
||||
{
|
||||
MyCamera.MV_FRAME_OUT stFrameInfo = new MyCamera.MV_FRAME_OUT();
|
||||
MyCamera.MV_DISPLAY_FRAME_INFO stDisplayInfo = new MyCamera.MV_DISPLAY_FRAME_INFO();
|
||||
int nRet = MyCamera.MV_OK;
|
||||
|
||||
while (m_bGrabbing)
|
||||
{
|
||||
bool isOpenWin = IsWindow(this.previewHwnd);
|
||||
if ((!isContinuousMode && this.scanNum < 1) ||
|
||||
(isContinuousMode && (this.previewHwnd == IntPtr.Zero || !isOpenWin)))
|
||||
{
|
||||
Thread.Sleep(500);
|
||||
continue;
|
||||
}
|
||||
|
||||
//
|
||||
nRet = device.MV_CC_GetImageBuffer_NET(ref stFrameInfo, 1000);
|
||||
if (nRet == MyCamera.MV_OK)
|
||||
{
|
||||
if (RemoveCustomPixelFormats(stFrameInfo.stFrameInfo.enPixelType)
|
||||
|| stFrameInfo.stFrameInfo.nFrameLen == 0)
|
||||
{
|
||||
device.MV_CC_FreeImageBuffer_NET(ref stFrameInfo);
|
||||
continue;
|
||||
}
|
||||
//pictureBox1显示
|
||||
if (this.previewHwnd != IntPtr.Zero && isOpenWin)
|
||||
{
|
||||
stDisplayInfo.hWnd = this.previewHwnd;// pictureBox1.Handle;
|
||||
stDisplayInfo.pData = stFrameInfo.pBufAddr;
|
||||
stDisplayInfo.nDataLen = stFrameInfo.stFrameInfo.nFrameLen;
|
||||
stDisplayInfo.nWidth = stFrameInfo.stFrameInfo.nWidth;
|
||||
stDisplayInfo.nHeight = stFrameInfo.stFrameInfo.nHeight;
|
||||
stDisplayInfo.enPixelType = stFrameInfo.stFrameInfo.enPixelType;
|
||||
device.MV_CC_DisplayOneFrame_NET(ref stDisplayInfo);
|
||||
}
|
||||
|
||||
//保存
|
||||
if (this.scanNum>0)//save tag
|
||||
{
|
||||
MyCamera.MV_SAVE_IMG_TO_FILE_PARAM stSaveFileParam = new MyCamera.MV_SAVE_IMG_TO_FILE_PARAM();
|
||||
//lock (BufForDriverLock)
|
||||
{
|
||||
if (scannerType == ScannerType.CC)
|
||||
{
|
||||
stSaveFileParam.enImageType = MyCamera.MV_SAVE_IAMGE_TYPE.MV_Image_Bmp;
|
||||
stSaveFileParam.enPixelType = stFrameInfo.stFrameInfo.enPixelType;
|
||||
stSaveFileParam.pData = stFrameInfo.pBufAddr;//m_BufForDriver;
|
||||
stSaveFileParam.nDataLen = stFrameInfo.stFrameInfo.nFrameLen;
|
||||
stSaveFileParam.nHeight = stFrameInfo.stFrameInfo.nHeight;
|
||||
stSaveFileParam.nWidth = stFrameInfo.stFrameInfo.nWidth;
|
||||
stSaveFileParam.iMethodValue = 2;
|
||||
//Save path
|
||||
//stSaveFileParam.pImagePath = this.bmpSavePath + "\\" + scannerType.ToString() + "_w" + stSaveFileParam.nWidth.ToString() + "_h" + stSaveFileParam.nHeight.ToString() + "_fn" + stFrameInfo.stFrameInfo.nFrameNum.ToString() + ".bmp";
|
||||
stSaveFileParam.pImagePath = this.bmpSavePath + "\\" + scannerType.ToString() + "_"+DateTime.Now.Ticks + ".bmp";
|
||||
|
||||
//m_MyCamera.MV_CC_RegisterImageCallBackEx_NET(new MyCamera.cbOutputExdelegate(ImageCallBack), IntPtr.Zero);
|
||||
nRet = device.MV_CC_SaveImageToFile_NET(ref stSaveFileParam);
|
||||
if (MyCamera.MV_OK == nRet)
|
||||
{
|
||||
if (ScanEventPath != null)
|
||||
ScanEventPath?.Invoke(this.scanNum--, stSaveFileParam.pImagePath);
|
||||
else
|
||||
ScanEvent?.Invoke(this.scanNum--, read2Bmp(stSaveFileParam.pImagePath));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
//=== raw byte[]
|
||||
//byte[] rawFileBuff = toRawImage(stFrameInfo);
|
||||
//if (rawFileBuff != null)
|
||||
// ScanEvent?.Invoke(this.scanNum--, rawFileBuff);
|
||||
//=== bmp
|
||||
Bitmap bmp = toBitmap(stFrameInfo.pBufAddr, stFrameInfo.stFrameInfo);
|
||||
//bmp = bytes2bmp(bmp2bytes(bmp));
|
||||
//string bmpPath = "d:\\" + DateTime.Now.Ticks + ".bmp";
|
||||
//bmp.Save(bmpPath, ImageFormat.Bmp);
|
||||
////bmp = (Bitmap)Bitmap.FromFile(bmpPath);
|
||||
//bmp = read2Bmp(bmpPath);
|
||||
if (bmp != null)
|
||||
ScanEvent?.Invoke(this.scanNum--, bmp);
|
||||
}
|
||||
}
|
||||
}
|
||||
//free
|
||||
device.MV_CC_FreeImageBuffer_NET(ref stFrameInfo);
|
||||
}
|
||||
else
|
||||
{
|
||||
Thread.Sleep(5);
|
||||
}
|
||||
}
|
||||
}
|
||||
public void AfterGigeUsbImageAcquired_Station1(MyCamera.MV_FRAME_OUT_INFO_EX pFrameInfo, IntPtr pTemp )
|
||||
{
|
||||
|
||||
Bitmap Station1Image1 = new System.Drawing.Bitmap(pFrameInfo.nWidth, pFrameInfo.nHeight, pFrameInfo.nWidth * 1, System.Drawing.Imaging.PixelFormat.Format8bppIndexed, pTemp);
|
||||
ColorPalette cp = Station1Image1.Palette;
|
||||
for (int i = 0; i < 256; i++)
|
||||
{
|
||||
cp.Entries[i] = Color.FromArgb(i, i, i);
|
||||
}
|
||||
Station1Image1.Palette = cp;
|
||||
}
|
||||
private byte[] toRawImage(MyCamera.MV_FRAME_OUT stFrameOut)
|
||||
{
|
||||
MyCamera.MvGvspPixelType enType = MyCamera.MvGvspPixelType.PixelType_Gvsp_Undefined;
|
||||
uint nChannelNum = 0;
|
||||
if (IsColorPixelFormat(stFrameOut.stFrameInfo.enPixelType))
|
||||
{
|
||||
enType = MyCamera.MvGvspPixelType.PixelType_Gvsp_RGB8_Packed;
|
||||
nChannelNum = 3;
|
||||
}
|
||||
else if (IsMonoPixelFormat(stFrameOut.stFrameInfo.enPixelType))
|
||||
{
|
||||
enType = MyCamera.MvGvspPixelType.PixelType_Gvsp_Mono8;
|
||||
nChannelNum = 1;
|
||||
}
|
||||
else
|
||||
return null;
|
||||
|
||||
//
|
||||
if (enType != MyCamera.MvGvspPixelType.PixelType_Gvsp_Undefined)
|
||||
{
|
||||
IntPtr pBufForConvert = Marshal.AllocHGlobal((int)(stFrameOut.stFrameInfo.nWidth * stFrameOut.stFrameInfo.nHeight * nChannelNum));
|
||||
|
||||
MyCamera.MV_PIXEL_CONVERT_PARAM stConvertPixelParam = new MyCamera.MV_PIXEL_CONVERT_PARAM();
|
||||
stConvertPixelParam.nWidth = stFrameOut.stFrameInfo.nWidth;
|
||||
stConvertPixelParam.nHeight = stFrameOut.stFrameInfo.nHeight;
|
||||
stConvertPixelParam.pSrcData = stFrameOut.pBufAddr;
|
||||
stConvertPixelParam.nSrcDataLen = stFrameOut.stFrameInfo.nFrameLen;
|
||||
stConvertPixelParam.enSrcPixelType = stFrameOut.stFrameInfo.enPixelType;
|
||||
stConvertPixelParam.enDstPixelType = enType;
|
||||
stConvertPixelParam.pDstBuffer = pBufForConvert;
|
||||
stConvertPixelParam.nDstBufferSize = (uint)(stFrameOut.stFrameInfo.nWidth * stFrameOut.stFrameInfo.nHeight * nChannelNum);
|
||||
|
||||
int nRet = device.MV_CC_ConvertPixelType_NET(ref stConvertPixelParam);
|
||||
if (MyCamera.MV_OK != nRet)
|
||||
return null;
|
||||
|
||||
// ch:将图像数据保存到本地文件 | en:Save image data to local file
|
||||
byte[] rawImage = new byte[stConvertPixelParam.nDstLen];
|
||||
Marshal.Copy(stConvertPixelParam.pDstBuffer, rawImage, 0, (int)stConvertPixelParam.nDstLen);
|
||||
if (pBufForConvert != IntPtr.Zero)
|
||||
Marshal.FreeHGlobal(pBufForConvert);
|
||||
|
||||
//
|
||||
return rawImage;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
private Bitmap toBitmap(IntPtr pData, MyCamera.MV_FRAME_OUT_INFO_EX pFrameInfo)
|
||||
{
|
||||
int nRet = MyCamera.MV_OK;
|
||||
//MyCamera device = m_pMyCamera;
|
||||
//MyCamera.MV_FRAME_OUT_INFO_EX pFrameInfo = new MyCamera.MV_FRAME_OUT_INFO_EX();
|
||||
//IntPtr pData = System.Runtime.InteropServices.Marshal.AllocHGlobal((int)g_nPayloadSize);
|
||||
if (pData == IntPtr.Zero)
|
||||
return null;
|
||||
|
||||
IntPtr pTemp = IntPtr.Zero;
|
||||
IntPtr pImageBuffer = IntPtr.Zero;
|
||||
if (IsColorPixelFormat(pFrameInfo.enPixelType)) // 彩色图像处理
|
||||
{
|
||||
if (pFrameInfo.enPixelType == MyCamera.MvGvspPixelType.PixelType_Gvsp_RGB8_Packed)
|
||||
{
|
||||
pTemp = pData;
|
||||
}
|
||||
else
|
||||
{
|
||||
// 其他格式彩色图像转为RGB
|
||||
nRet = getBmpPtr(device, pData, pFrameInfo.nHeight, pFrameInfo.nWidth, pFrameInfo.enPixelType, pImageBuffer, MyCamera.MvGvspPixelType.PixelType_Gvsp_RGB8_Packed);
|
||||
if (MyCamera.MV_OK != nRet)
|
||||
return null;
|
||||
pTemp = pImageBuffer;
|
||||
}
|
||||
|
||||
// Packed转Plane
|
||||
Byte[] byteArrImageData = new Byte[m_nRowStep * 3];
|
||||
unsafe
|
||||
{
|
||||
byte* pBufForSaveImage = (byte*)pTemp;
|
||||
|
||||
UInt32 nSupWidth = (pFrameInfo.nWidth + (UInt32)3) & 0xfffffffc;
|
||||
|
||||
for (int nRow = 0; nRow < pFrameInfo.nHeight; nRow++)
|
||||
{
|
||||
for (int col = 0; col < pFrameInfo.nWidth; col++)
|
||||
{
|
||||
byteArrImageData[nRow * nSupWidth + col] = pBufForSaveImage[nRow * pFrameInfo.nWidth * 3 + (3 * col)];
|
||||
byteArrImageData[pFrameInfo.nWidth * pFrameInfo.nHeight + nRow * nSupWidth + col] = pBufForSaveImage[nRow * pFrameInfo.nWidth * 3 + (3 * col + 1)];
|
||||
byteArrImageData[pFrameInfo.nWidth * pFrameInfo.nHeight * 2 + nRow * nSupWidth + col] = pBufForSaveImage[nRow * pFrameInfo.nWidth * 3 + (3 * col + 2)];
|
||||
}
|
||||
}
|
||||
pTemp = System.Runtime.InteropServices.Marshal.UnsafeAddrOfPinnedArrayElement(byteArrImageData, 0);
|
||||
}
|
||||
|
||||
//
|
||||
Bitmap Station1Image1 = new System.Drawing.Bitmap(pFrameInfo.nWidth, pFrameInfo.nHeight, pFrameInfo.nWidth * 3, System.Drawing.Imaging.PixelFormat.Format24bppRgb, pTemp);
|
||||
//ColorPalette cp = Station1Image1.Palette;
|
||||
//for (int i = 0; i < 256; i++)
|
||||
//{
|
||||
// cp.Entries[i] = Color.FromArgb(i, i, i);
|
||||
//}
|
||||
//Station1Image1.Palette = cp;
|
||||
return Station1Image1;
|
||||
}
|
||||
else if (IsMonoPixelFormat(pFrameInfo.enPixelType)) // Mono图像处理
|
||||
{
|
||||
if (pFrameInfo.enPixelType == MyCamera.MvGvspPixelType.PixelType_Gvsp_Mono8)
|
||||
{
|
||||
pTemp = pData;
|
||||
}
|
||||
else
|
||||
{
|
||||
// 其他格式Mono转为Mono8
|
||||
//nRet = ConvertToMono8(device, pData, pImageBuffer, pFrameInfo.nHeight, pFrameInfo.nWidth, pFrameInfo.enPixelType);
|
||||
nRet = getBmpPtr(device, pData, pFrameInfo.nHeight, pFrameInfo.nWidth, pFrameInfo.enPixelType, pImageBuffer, MyCamera.MvGvspPixelType.PixelType_Gvsp_RGB8_Packed);
|
||||
if (MyCamera.MV_OK != nRet)
|
||||
return null;
|
||||
|
||||
pTemp = pImageBuffer;
|
||||
}
|
||||
|
||||
//
|
||||
Bitmap Station1Image1 = new System.Drawing.Bitmap(pFrameInfo.nWidth, pFrameInfo.nHeight, pFrameInfo.nWidth * 1, System.Drawing.Imaging.PixelFormat.Format8bppIndexed, pTemp);
|
||||
ColorPalette cp = Station1Image1.Palette;
|
||||
for (int i = 0; i < 256; i++)
|
||||
{
|
||||
cp.Entries[i] = Color.FromArgb(i, i, i);
|
||||
}
|
||||
Station1Image1.Palette = cp;
|
||||
return Station1Image1;
|
||||
}
|
||||
else
|
||||
return null;
|
||||
|
||||
}
|
||||
public Int32 getBmpPtr(MyCamera device, IntPtr pSrc, ushort nHeight, ushort nWidth, MyCamera.MvGvspPixelType nPixelType, IntPtr pDst, MyCamera.MvGvspPixelType type)
|
||||
{
|
||||
if (IntPtr.Zero == pSrc || IntPtr.Zero == pDst)
|
||||
{
|
||||
return MyCamera.MV_E_PARAMETER;
|
||||
}
|
||||
|
||||
int nRet = MyCamera.MV_OK;
|
||||
//MyCamera device = obj as MyCamera;
|
||||
MyCamera.MV_PIXEL_CONVERT_PARAM stPixelConvertParam = new MyCamera.MV_PIXEL_CONVERT_PARAM();
|
||||
|
||||
stPixelConvertParam.pSrcData = pSrc;//源数据
|
||||
if (IntPtr.Zero == stPixelConvertParam.pSrcData)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
|
||||
stPixelConvertParam.nWidth = nWidth;//图像宽度
|
||||
stPixelConvertParam.nHeight = nHeight;//图像厚度
|
||||
stPixelConvertParam.enSrcPixelType = nPixelType;//源数据的格式
|
||||
stPixelConvertParam.nSrcDataLen = (uint)(nWidth * nHeight * ((((uint)nPixelType) >> 16) & 0x00ff) >> 3);
|
||||
|
||||
stPixelConvertParam.nDstBufferSize = (uint)(nWidth * nHeight * ((((uint)type) >> 16) & 0x00ff) >> 3);
|
||||
stPixelConvertParam.pDstBuffer = pDst;//转换后的数据
|
||||
stPixelConvertParam.enDstPixelType = type;
|
||||
stPixelConvertParam.nDstBufferSize = (uint)nWidth * nHeight * 3;
|
||||
|
||||
nRet = device.MV_CC_ConvertPixelType_NET(ref stPixelConvertParam);//格式转换
|
||||
if (MyCamera.MV_OK != nRet)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
|
||||
return MyCamera.MV_OK;
|
||||
}
|
||||
/// <summary>
|
||||
/// 其他黑白格式转为Mono8
|
||||
/// </summary>
|
||||
/// <param name="obj"></param>
|
||||
/// <param name="pInData">输出图片数据</param>
|
||||
/// <param name="pOutData">输出图片数据</param>
|
||||
/// <param name="nHeight">高</param>
|
||||
/// <param name="nWidth">宽</param>
|
||||
/// <param name="nPixelType">像素格式</param>
|
||||
/// <returns></returns>
|
||||
public Int32 ConvertToMono8(MyCamera device, IntPtr pInData, IntPtr pOutData, ushort nHeight, ushort nWidth, MyCamera.MvGvspPixelType nPixelType)
|
||||
{
|
||||
if (IntPtr.Zero == pInData || IntPtr.Zero == pOutData)
|
||||
{
|
||||
return MyCamera.MV_E_PARAMETER;
|
||||
}
|
||||
|
||||
int nRet = MyCamera.MV_OK;
|
||||
//MyCamera device = obj as MyCamera;
|
||||
MyCamera.MV_PIXEL_CONVERT_PARAM stPixelConvertParam = new MyCamera.MV_PIXEL_CONVERT_PARAM();
|
||||
|
||||
stPixelConvertParam.pSrcData = pInData;//源数据
|
||||
if (IntPtr.Zero == stPixelConvertParam.pSrcData)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
|
||||
stPixelConvertParam.nWidth = nWidth;//图像宽度
|
||||
stPixelConvertParam.nHeight = nHeight;//图像厚度
|
||||
stPixelConvertParam.enSrcPixelType = nPixelType;//源数据的格式
|
||||
stPixelConvertParam.nSrcDataLen = (uint)(nWidth * nHeight * ((((uint)nPixelType) >> 16) & 0x00ff) >> 3);
|
||||
|
||||
stPixelConvertParam.nDstBufferSize = (uint)(nWidth * nHeight * ((((uint)MyCamera.MvGvspPixelType.PixelType_Gvsp_RGB8_Packed) >> 16) & 0x00ff) >> 3);
|
||||
stPixelConvertParam.pDstBuffer = pOutData;//转换后的数据
|
||||
stPixelConvertParam.enDstPixelType = MyCamera.MvGvspPixelType.PixelType_Gvsp_Mono8;
|
||||
stPixelConvertParam.nDstBufferSize = (uint)(nWidth * nHeight * 3);
|
||||
|
||||
nRet = device.MV_CC_ConvertPixelType_NET(ref stPixelConvertParam);//格式转换
|
||||
if (MyCamera.MV_OK != nRet)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
|
||||
return nRet;
|
||||
}
|
||||
/// <summary>
|
||||
/// 其他彩色格式转为RGB8
|
||||
/// </summary>
|
||||
/// <param name="obj"></param>
|
||||
/// <param name="pSrc"></param>
|
||||
/// <param name="nHeight"></param>
|
||||
/// <param name="nWidth"></param>
|
||||
/// <param name="nPixelType"></param>
|
||||
/// <param name="pDst"></param>
|
||||
/// <returns></returns>
|
||||
public Int32 ConvertToRGB(MyCamera device, IntPtr pSrc, ushort nHeight, ushort nWidth, MyCamera.MvGvspPixelType nPixelType, IntPtr pDst)
|
||||
{
|
||||
if (IntPtr.Zero == pSrc || IntPtr.Zero == pDst)
|
||||
{
|
||||
return MyCamera.MV_E_PARAMETER;
|
||||
}
|
||||
|
||||
int nRet = MyCamera.MV_OK;
|
||||
//MyCamera device = obj as MyCamera;
|
||||
MyCamera.MV_PIXEL_CONVERT_PARAM stPixelConvertParam = new MyCamera.MV_PIXEL_CONVERT_PARAM();
|
||||
|
||||
stPixelConvertParam.pSrcData = pSrc;//源数据
|
||||
if (IntPtr.Zero == stPixelConvertParam.pSrcData)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
|
||||
stPixelConvertParam.nWidth = nWidth;//图像宽度
|
||||
stPixelConvertParam.nHeight = nHeight;//图像厚度
|
||||
stPixelConvertParam.enSrcPixelType = nPixelType;//源数据的格式
|
||||
stPixelConvertParam.nSrcDataLen = (uint)(nWidth * nHeight * ((((uint)nPixelType) >> 16) & 0x00ff) >> 3);
|
||||
|
||||
stPixelConvertParam.nDstBufferSize = (uint)(nWidth * nHeight * ((((uint)MyCamera.MvGvspPixelType.PixelType_Gvsp_RGB8_Packed) >> 16) & 0x00ff) >> 3);
|
||||
stPixelConvertParam.pDstBuffer = pDst;//转换后的数据
|
||||
stPixelConvertParam.enDstPixelType = MyCamera.MvGvspPixelType.PixelType_Gvsp_RGB8_Packed;
|
||||
stPixelConvertParam.nDstBufferSize = (uint)nWidth * nHeight * 3;
|
||||
|
||||
nRet = device.MV_CC_ConvertPixelType_NET(ref stPixelConvertParam);//格式转换
|
||||
if (MyCamera.MV_OK != nRet)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
|
||||
return MyCamera.MV_OK;
|
||||
}
|
||||
|
||||
private static void ImageCallbackFunc(IntPtr pData, ref MyCamera.MV_FRAME_OUT_INFO_EX pFrameInfo, IntPtr pUser)
|
||||
{
|
||||
//Print parse the timestamp information in the frame
|
||||
Console.WriteLine("ImageCallBack: ExposureTime[" + Convert.ToString(pFrameInfo.fExposureTime)
|
||||
+ "], SecondCount[" + Convert.ToString(pFrameInfo.nSecondCount)
|
||||
+ "], CycleCount[" + Convert.ToString(pFrameInfo.nCycleCount)
|
||||
+ "], CycleOffset[" + Convert.ToString(pFrameInfo.nCycleOffset)
|
||||
+ "], FrameNum[" + Convert.ToString(pFrameInfo.nFrameNum) + "]");
|
||||
|
||||
int nStrSize = Marshal.SizeOf(stChunkInfo);
|
||||
int nUnparsedChunkContent = (int)pFrameInfo.UnparsedChunkList.pUnparsedChunkContent;
|
||||
for (int i = 0; i < pFrameInfo.nUnparsedChunkNum; i++)
|
||||
{
|
||||
stChunkInfo = (MyCamera.MV_CHUNK_DATA_CONTENT)Marshal.PtrToStructure((IntPtr)(nUnparsedChunkContent + i * nStrSize), typeof(MyCamera.MV_CHUNK_DATA_CONTENT));
|
||||
|
||||
Console.WriteLine("ChunkInfo:" + "ChunkID[0x{0:x8}],ChunkLen[" + Convert.ToString(stChunkInfo.nChunkLen) + "]", stChunkInfo.nChunkID);
|
||||
}
|
||||
Console.WriteLine("************************************");
|
||||
}
|
||||
|
||||
static bool IsMonoPixelFormat(MyCamera.MvGvspPixelType enType)
|
||||
{
|
||||
switch (enType)
|
||||
{
|
||||
case MyCamera.MvGvspPixelType.PixelType_Gvsp_Mono8:
|
||||
case MyCamera.MvGvspPixelType.PixelType_Gvsp_Mono10:
|
||||
case MyCamera.MvGvspPixelType.PixelType_Gvsp_Mono10_Packed:
|
||||
case MyCamera.MvGvspPixelType.PixelType_Gvsp_Mono12:
|
||||
case MyCamera.MvGvspPixelType.PixelType_Gvsp_Mono12_Packed:
|
||||
return true;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
}
|
||||
static bool IsColorPixelFormat(MyCamera.MvGvspPixelType enType)
|
||||
{
|
||||
switch (enType)
|
||||
{
|
||||
case MyCamera.MvGvspPixelType.PixelType_Gvsp_RGB8_Packed:
|
||||
case MyCamera.MvGvspPixelType.PixelType_Gvsp_BGR8_Packed:
|
||||
case MyCamera.MvGvspPixelType.PixelType_Gvsp_YUV422_Packed:
|
||||
case MyCamera.MvGvspPixelType.PixelType_Gvsp_YUV422_YUYV_Packed:
|
||||
case MyCamera.MvGvspPixelType.PixelType_Gvsp_BayerGR8:
|
||||
case MyCamera.MvGvspPixelType.PixelType_Gvsp_BayerRG8:
|
||||
case MyCamera.MvGvspPixelType.PixelType_Gvsp_BayerGB8:
|
||||
case MyCamera.MvGvspPixelType.PixelType_Gvsp_BayerBG8:
|
||||
case MyCamera.MvGvspPixelType.PixelType_Gvsp_BayerGB10:
|
||||
case MyCamera.MvGvspPixelType.PixelType_Gvsp_BayerGB10_Packed:
|
||||
case MyCamera.MvGvspPixelType.PixelType_Gvsp_BayerBG10:
|
||||
case MyCamera.MvGvspPixelType.PixelType_Gvsp_BayerBG10_Packed:
|
||||
case MyCamera.MvGvspPixelType.PixelType_Gvsp_BayerRG10:
|
||||
case MyCamera.MvGvspPixelType.PixelType_Gvsp_BayerRG10_Packed:
|
||||
case MyCamera.MvGvspPixelType.PixelType_Gvsp_BayerGR10:
|
||||
case MyCamera.MvGvspPixelType.PixelType_Gvsp_BayerGR10_Packed:
|
||||
case MyCamera.MvGvspPixelType.PixelType_Gvsp_BayerGB12:
|
||||
case MyCamera.MvGvspPixelType.PixelType_Gvsp_BayerGB12_Packed:
|
||||
case MyCamera.MvGvspPixelType.PixelType_Gvsp_BayerBG12:
|
||||
case MyCamera.MvGvspPixelType.PixelType_Gvsp_BayerBG12_Packed:
|
||||
case MyCamera.MvGvspPixelType.PixelType_Gvsp_BayerRG12:
|
||||
case MyCamera.MvGvspPixelType.PixelType_Gvsp_BayerRG12_Packed:
|
||||
case MyCamera.MvGvspPixelType.PixelType_Gvsp_BayerGR12:
|
||||
case MyCamera.MvGvspPixelType.PixelType_Gvsp_BayerGR12_Packed:
|
||||
return true;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
}
|
||||
// ch:去除自定义的像素格式 | en:Remove custom pixel formats
|
||||
private bool RemoveCustomPixelFormats(MyCamera.MvGvspPixelType enPixelFormat)
|
||||
{
|
||||
Int32 nResult = ((int)enPixelFormat) & (unchecked((Int32)0x80000000));
|
||||
if (0x80000000 == nResult)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
public void getParam()
|
||||
{
|
||||
if (!IsInit) return;
|
||||
|
||||
MyCamera.MVCC_FLOATVALUE stParam = new MyCamera.MVCC_FLOATVALUE();
|
||||
int nRet = device.MV_CC_GetFloatValue_NET("ExposureTime", ref stParam);
|
||||
if (MyCamera.MV_OK == nRet)
|
||||
{
|
||||
ExposureTime = stParam.fCurValue;//.ToString("F1");
|
||||
}
|
||||
|
||||
nRet = device.MV_CC_GetFloatValue_NET("Gain", ref stParam);
|
||||
if (MyCamera.MV_OK == nRet)
|
||||
{
|
||||
Gain = stParam.fCurValue;//.ToString("F1");
|
||||
}
|
||||
|
||||
nRet = device.MV_CC_GetFloatValue_NET("ResultingFrameRate", ref stParam);
|
||||
if (MyCamera.MV_OK == nRet)
|
||||
{
|
||||
ResultingFrameRate = stParam.fCurValue;//.ToString("F1");
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="exposureTime">曝光</param>
|
||||
/// <param name="gain">增益</param>
|
||||
/// <param name="resultingFrameRate">帧率</param>
|
||||
public void setParam(float exposureTime, float gain, float resultingFrameRate)
|
||||
{
|
||||
if (!IsInit) return;
|
||||
|
||||
bool change = false;
|
||||
int nRet;
|
||||
if (exposureTime != ExposureTime)
|
||||
{
|
||||
device.MV_CC_SetEnumValue_NET("ExposureAuto", 0);
|
||||
nRet = device.MV_CC_SetFloatValue_NET("ExposureTime", exposureTime);
|
||||
if (nRet != MyCamera.MV_OK)
|
||||
{
|
||||
WarningEvent?.Invoke(WarningEnum.Normal, $"Scanner Set Exposure Time Fail! ({nRet})");
|
||||
}
|
||||
change = true;
|
||||
}
|
||||
|
||||
if (gain != Gain)
|
||||
{
|
||||
device.MV_CC_SetEnumValue_NET("GainAuto", 0);
|
||||
nRet = device.MV_CC_SetFloatValue_NET("Gain", gain);
|
||||
if (nRet != MyCamera.MV_OK)
|
||||
{
|
||||
WarningEvent?.Invoke(WarningEnum.Normal, $"Scanner Set Gain Time Fail! ({nRet})");
|
||||
}
|
||||
change = true;
|
||||
}
|
||||
|
||||
if (resultingFrameRate != ResultingFrameRate)
|
||||
{
|
||||
nRet = device.MV_CC_SetFloatValue_NET("AcquisitionFrameRate", resultingFrameRate);
|
||||
if (nRet != MyCamera.MV_OK)
|
||||
{
|
||||
WarningEvent?.Invoke(WarningEnum.Normal, $"Scanner Set AcquisitionFrameRate Time Fail! ({nRet})");
|
||||
}
|
||||
change = true;
|
||||
}
|
||||
|
||||
//
|
||||
if(change)
|
||||
getParam();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 软触发拍照
|
||||
/// </summary>
|
||||
/// <param name="num">拍照数量</param>
|
||||
/// <returns></returns>
|
||||
public bool scan(int num=1)
|
||||
{
|
||||
if (!IsInit) return false;
|
||||
|
||||
if (!isContinuousMode)
|
||||
{
|
||||
// ch:触发命令 | en:Trigger command
|
||||
int nRet = device.MV_CC_SetCommandValue_NET("TriggerSoftware");
|
||||
if (MyCamera.MV_OK != nRet)
|
||||
{
|
||||
WarningEvent?.Invoke(WarningEnum.Normal, $"Trigger Software Fail! ({nRet})");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
this.scanNum= num;
|
||||
return true;
|
||||
}
|
||||
public void Dispose()
|
||||
{
|
||||
stop();
|
||||
}
|
||||
private byte[] bmp2bytes(Bitmap bmp)
|
||||
{
|
||||
MemoryStream ms = new MemoryStream();
|
||||
bmp.Save(ms, System.Drawing.Imaging.ImageFormat.Bmp);
|
||||
byte[] bytes = ms.GetBuffer(); //byte[] bytes= ms.ToArray(); 这两句都可以,至于区别么,下面有解释
|
||||
ms.Close();
|
||||
bmp.Dispose();
|
||||
return bytes;
|
||||
}
|
||||
private Bitmap bytes2bmp(byte[] bytes)
|
||||
{
|
||||
MemoryStream ms1 = new MemoryStream(bytes);
|
||||
Bitmap bm = (Bitmap)Image.FromStream(ms1);
|
||||
ms1.Close();
|
||||
return bm;
|
||||
}
|
||||
public Bitmap read2Bmp(string path)
|
||||
{
|
||||
MemoryStream ms = new System.IO.MemoryStream(File.ReadAllBytes(path));
|
||||
Bitmap bmp = new Bitmap(ms);
|
||||
ms.Close();
|
||||
ms.Dispose();
|
||||
//FileStream fs = new FileStream(path, FileMode.Open);
|
||||
//byte[] bmpdata = new byte[fs.Length];
|
||||
//fs.Read(bmpdata, 0, bmpdata.Length);
|
||||
//Bitmap bmp = new Bitmap(fs);
|
||||
//fs.Close();
|
||||
|
||||
return bmp;
|
||||
|
||||
}
|
||||
}
|
||||
}
|
263
halftoneproject-master/AssistClient/Device/SizeLib.cs
Normal file
263
halftoneproject-master/AssistClient/Device/SizeLib.cs
Normal file
@ -0,0 +1,263 @@
|
||||
using HalconDotNet;
|
||||
using Microsoft.ML.OnnxRuntime;
|
||||
using Microsoft.ML.OnnxRuntime.Tensors;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Drawing;
|
||||
using System.Drawing.Imaging;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using Yolo5;
|
||||
|
||||
namespace AssistClient.Device
|
||||
{
|
||||
public class SizeLib : IDisposable
|
||||
{
|
||||
public Action<WarningEnum, string> WarningEvent;
|
||||
/// <summary>
|
||||
/// 检测结果JSON(原图,结果)
|
||||
/// </summary>
|
||||
public Action<SizeTask> finishEvent;
|
||||
/// <summary>
|
||||
/// 是否打开设备成功
|
||||
/// </summary>
|
||||
public bool IsInit { get; private set; } = false;
|
||||
//private System.Timers.Timer timer = new System.Timers.Timer();
|
||||
|
||||
//配置
|
||||
HDevEngine MyEngine = new HDevEngine();
|
||||
|
||||
private Thread t_task;
|
||||
public SizeLib()
|
||||
{
|
||||
}
|
||||
public bool start(string enginePath)
|
||||
{
|
||||
try
|
||||
{
|
||||
IsInit = true;
|
||||
taskList.Clear();
|
||||
MyEngine.SetProcedurePath(enginePath);
|
||||
|
||||
t_task = new System.Threading.Thread(run);
|
||||
t_task.IsBackground = true;
|
||||
t_task.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;
|
||||
|
||||
MyEngine.Dispose();
|
||||
}
|
||||
catch { }
|
||||
|
||||
}
|
||||
|
||||
private bool _debug = false;
|
||||
public bool setDebug
|
||||
{
|
||||
get { return _debug; }
|
||||
set
|
||||
{
|
||||
if (!IsInit) return;
|
||||
|
||||
_debug = value;
|
||||
if (_debug)
|
||||
MyEngine.StartDebugServer();
|
||||
else
|
||||
MyEngine.StopDebugServer();
|
||||
}
|
||||
}
|
||||
|
||||
private void run()
|
||||
{
|
||||
int taskCount;
|
||||
while (IsInit)
|
||||
{
|
||||
lock (taskList)
|
||||
{
|
||||
taskCount = taskList.Count;
|
||||
}
|
||||
if (taskCount < 1)
|
||||
{
|
||||
Thread.Sleep(10);
|
||||
continue;
|
||||
}
|
||||
|
||||
////
|
||||
int step = 0;
|
||||
var task = pop();
|
||||
try
|
||||
{
|
||||
if (task != null)
|
||||
{
|
||||
var Program1 = new HDevProcedure(task.engineName);
|
||||
HDevProcedureCall ProcCall1_PI_PT = new HDevProcedureCall(Program1);
|
||||
step = 1;
|
||||
//
|
||||
HObject image;
|
||||
if (task.bmp != null)
|
||||
Bitmap2HObjectBpp24(out image, task.bmp);
|
||||
else
|
||||
HOperatorSet.ReadImage(out image, task.file_path);
|
||||
step = 2;
|
||||
//设置外部函数输入
|
||||
ProcCall1_PI_PT.SetInputIconicParamObject("Image_Repair", image);
|
||||
ProcCall1_PI_PT.SetInputCtrlParamTuple("Index", task.index);//参数0-9
|
||||
ProcCall1_PI_PT.SetInputCtrlParamTuple("PoseX", task.posX);
|
||||
ProcCall1_PI_PT.SetInputCtrlParamTuple("PoseY", task.posY);
|
||||
|
||||
ProcCall1_PI_PT.SetInputCtrlParamTuple("PoseMarkX_Detect_1", task.MarkPointList[0]);
|
||||
ProcCall1_PI_PT.SetInputCtrlParamTuple("PoseMarkY_Detect_1", task.MarkPointList[1]);
|
||||
ProcCall1_PI_PT.SetInputCtrlParamTuple("PoseMarkX_Detect_2", task.MarkPointList[2]);
|
||||
ProcCall1_PI_PT.SetInputCtrlParamTuple("PoseMarkY_Detect_2", task.MarkPointList[3]);
|
||||
ProcCall1_PI_PT.SetInputCtrlParamTuple("PoseMarkX_Detect_3", task.MarkPointList[4]);
|
||||
ProcCall1_PI_PT.SetInputCtrlParamTuple("PoseMarkY_Detect_3", task.MarkPointList[5]);
|
||||
ProcCall1_PI_PT.SetInputCtrlParamTuple("PoseMarkX_Detect_4", task.MarkPointList[6]);
|
||||
ProcCall1_PI_PT.SetInputCtrlParamTuple("PoseMarkY_Detect_4", task.MarkPointList[7]);
|
||||
step = 3;
|
||||
ProcCall1_PI_PT.Execute();//执行外部函数
|
||||
step = 4;
|
||||
//获取外部函数输出
|
||||
|
||||
step = 5;
|
||||
task.isSucceed = true;
|
||||
task.resultInfo = "成功";
|
||||
callback(task);
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
WarningEvent?.Invoke(WarningEnum.Low, "SizeLib task err(" + step + "):" + ex.Message);
|
||||
task.isSucceed = false;
|
||||
task.resultInfo = $"(errcode:{step}):{ex.Message}";
|
||||
callback(task);
|
||||
}
|
||||
}
|
||||
}
|
||||
private void callback(SizeTask 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 = (SizeTask)o;
|
||||
task.finishEvent(task);
|
||||
});
|
||||
//=======task list
|
||||
private List<SizeTask> taskList = new List<SizeTask>();
|
||||
public class SizeTask
|
||||
{
|
||||
public int stepIndex;//库内部不用,回调时引用
|
||||
public string engineName;
|
||||
/// <summary>
|
||||
/// 源文件
|
||||
/// </summary>
|
||||
public string file_path;
|
||||
public double posX, posY;
|
||||
public Bitmap bmp;
|
||||
/// <summary>
|
||||
/// 比对(index=777); 计算Mark(111/222/333/444); 尺寸(0-9); 轴偏移调整(10,20,30...)
|
||||
/// </summary>
|
||||
public int index; //index=8 PT1=PT2
|
||||
//MARK点
|
||||
public double[] MarkPointList = { 0, 0, 0, 0, 0, 0, 0, 0 };
|
||||
/// <summary>
|
||||
/// 完成后回调
|
||||
/// </summary>
|
||||
public Action<SizeTask> finishEvent;
|
||||
public long createTime = DateTime.Now.Ticks;
|
||||
|
||||
//==结果返回
|
||||
/// <summary>
|
||||
/// 比对结果(index=777)
|
||||
/// </summary>
|
||||
public bool CompResult;
|
||||
public double PT1, PT2, Shanxian, Circle_Ymm, Circle_Xmm, offsetX, offsetY;
|
||||
public bool isSucceed;//转换是否成功
|
||||
public string resultInfo = "";//成功或失败信息
|
||||
}
|
||||
|
||||
public void add(SizeTask task)
|
||||
{
|
||||
lock (taskList)
|
||||
taskList.Add(task);
|
||||
}
|
||||
private SizeTask 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);
|
||||
return task;
|
||||
}
|
||||
}
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
stop();
|
||||
}
|
||||
/// <summary>
|
||||
/// Bitmap转HObject灰度图
|
||||
/// </summary>
|
||||
/// <param name="bmp">Bitmap图像</param>
|
||||
/// <param name="image">HObject图像</param>
|
||||
private void Bitmap2HObjectBpp8(out HObject image, Bitmap bmp)
|
||||
{
|
||||
try
|
||||
{
|
||||
Rectangle rect = new Rectangle(0, 0, bmp.Width, bmp.Height);
|
||||
|
||||
BitmapData srcBmpData = bmp.LockBits(rect, ImageLockMode.ReadOnly, PixelFormat.Format8bppIndexed);
|
||||
|
||||
HOperatorSet.GenImage1(out image, "byte", bmp.Width, bmp.Height, srcBmpData.Scan0);
|
||||
bmp.UnlockBits(srcBmpData);
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
image = null;
|
||||
}
|
||||
}
|
||||
public void Bitmap2HObjectBpp24(out HObject image, Bitmap bmp)
|
||||
{
|
||||
try
|
||||
{
|
||||
Rectangle rect = new Rectangle(0, 0, bmp.Width, bmp.Height);
|
||||
|
||||
BitmapData srcBmpData = bmp.LockBits(rect, ImageLockMode.ReadOnly, PixelFormat.Format24bppRgb);
|
||||
HOperatorSet.GenImageInterleaved(out image, srcBmpData.Scan0, "bgr", bmp.Width, bmp.Height, 0, "byte", 0, 0, 0, 0, -1, 0);
|
||||
bmp.UnlockBits(srcBmpData);
|
||||
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
image = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
154
halftoneproject-master/AssistClient/Enums.cs
Normal file
154
halftoneproject-master/AssistClient/Enums.cs
Normal file
@ -0,0 +1,154 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace AssistClient
|
||||
{
|
||||
public enum CurrentPTEnum
|
||||
{
|
||||
[Description("初始位")]
|
||||
InitPT = 1,
|
||||
[Description("上料位")]
|
||||
UpPT = 2,
|
||||
[Description("下料位")]
|
||||
DownPT = 3,
|
||||
[Description("运行中")]
|
||||
Moving = 4,
|
||||
[Description("打标中")] //手动中
|
||||
MakeTag = 5
|
||||
}
|
||||
public enum CurrentStateEnum
|
||||
{
|
||||
等待复位 = 0,
|
||||
等待启动 = 1,//可复位
|
||||
等待扫码 = 2,//可复位
|
||||
暂停 = 3,//解除告警->等待启动 (可复位、下料中)
|
||||
急停 = 4, //解除告警->等待复位
|
||||
运行中 = 5,
|
||||
下料中 = 6, //没有暂停,完成后->等待启动
|
||||
打标中 = 7,//可复位、急停、下料; [暂停:位置在CurrentPTEnum.MakeTag时->打标中]
|
||||
自动流程结束 = 8,//可复位、暂停、急停、下料
|
||||
}
|
||||
public enum WarningEnum
|
||||
{
|
||||
[Description("正常")]
|
||||
Normal = 0,
|
||||
[Description("低(可继续)")]
|
||||
Low = 1,
|
||||
[Description("严重")]
|
||||
High = 2
|
||||
}
|
||||
|
||||
public enum IODirectionEnum
|
||||
{
|
||||
[Description("仅输入")]
|
||||
输入 = 0,
|
||||
[Description("仅输出")]
|
||||
输出 = 1,
|
||||
[Description("输入与输出")]
|
||||
输入输出 = 2,
|
||||
}
|
||||
|
||||
//public enum PowerLevelEnum
|
||||
//{
|
||||
// [Description("低电平")]
|
||||
// 高 = 0,
|
||||
// [Description("高电平")]
|
||||
// 低 = 1,
|
||||
//}
|
||||
|
||||
public enum AxisName
|
||||
{
|
||||
[Description("0-Axis")]
|
||||
Axis0 = 0,
|
||||
[Description("1-Axis")]
|
||||
Axis1 = 1,
|
||||
[Description("2-Axis")]
|
||||
Axis2 = 2,
|
||||
[Description("3-Axis")]
|
||||
Axis3 = 3,
|
||||
}
|
||||
/// <summary>
|
||||
/// 轴脉冲模式
|
||||
/// </summary>
|
||||
public enum AxisPulseOutMode
|
||||
{
|
||||
OUT_DIR = 0x1,
|
||||
OUT_DIR_OUT_NEG = 0x02,
|
||||
OUT_DIR_DIR_NEG = 0x04,
|
||||
OUT_DIR_ALL_NEG = 0x08,
|
||||
O_CW_CCW = 0x10,
|
||||
CW_CCW_ALL_NEG = 0x20,
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 回原点方式
|
||||
/// </summary>
|
||||
public enum AxitHomeMode
|
||||
{
|
||||
MODE1_Abs = 0,
|
||||
MODE2_Lmt = 1,
|
||||
MODE3_Ref = 2,
|
||||
MODE4_Abs_Ref = 3,
|
||||
MODE5_Abs_NegRef = 4,
|
||||
MODE6_Lmt_Ref = 5,
|
||||
MODE7_AbsSearch = 6,
|
||||
MODE8_LmtSearch = 7,
|
||||
MODE9_AbsSearch_Ref = 8,
|
||||
MODE10_AbsSearch_NegRef = 9,
|
||||
MODE11_LmtSearch_Ref = 10,
|
||||
MODE12_AbsSearchReFind = 11,
|
||||
MODE13_LmtSearchReFind = 12,
|
||||
MODE14_AbsSearchReFind_Ref = 13,
|
||||
MODE15_AbsSearchReFind_NegRef = 14,
|
||||
MODE16_LmtSearchReFind_Ref = 15,
|
||||
}
|
||||
public enum AxHomeDirection
|
||||
{
|
||||
正向 = 0,
|
||||
负向 = 1,
|
||||
}
|
||||
public enum AxMoveMode
|
||||
{
|
||||
MODE1_Abs = 0,
|
||||
MODE2_Rel = 1,
|
||||
}
|
||||
public enum SmallAxCmdPos
|
||||
{
|
||||
倍率0_679X = 0,
|
||||
倍率0_7X = 550,
|
||||
倍率1_0X = 4780,
|
||||
倍率1_5X = 7850,
|
||||
倍率2_0X = 10500,
|
||||
倍率2_5X = 13300,
|
||||
倍率3_0X = 15360,
|
||||
倍率3_5X = 16890,
|
||||
倍率4_0X = 18230,
|
||||
倍率4_5X = 19350,
|
||||
}
|
||||
public enum CMDName
|
||||
{
|
||||
IO默认输出 = 0,
|
||||
|
||||
启动按钮 = 10,//输入+输出
|
||||
暂停按钮 = 11,
|
||||
复位按钮 = 12,//输入+输出
|
||||
完成下料 = 15,
|
||||
|
||||
下光源按钮 = 16,
|
||||
激光灯输出 = 17,
|
||||
|
||||
手柄前移 = 20,
|
||||
手柄后移 = 21,
|
||||
手柄左移 = 22,
|
||||
手柄右移 = 23,
|
||||
|
||||
上一张图 = 30,
|
||||
下一张图 = 31,
|
||||
上一缺陷 = 35,
|
||||
下一缺陷 = 36,
|
||||
}
|
||||
}
|
46
halftoneproject-master/AssistClient/Form1.Designer.cs
generated
Normal file
46
halftoneproject-master/AssistClient/Form1.Designer.cs
generated
Normal file
@ -0,0 +1,46 @@
|
||||
namespace AssistClient
|
||||
{
|
||||
partial class Form1
|
||||
{
|
||||
/// <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.SuspendLayout();
|
||||
//
|
||||
// Form1
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(9F, 18F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(800, 450);
|
||||
this.Name = "Form1";
|
||||
this.Text = "Form1";
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
20
halftoneproject-master/AssistClient/Form1.cs
Normal file
20
halftoneproject-master/AssistClient/Form1.cs
Normal file
@ -0,0 +1,20 @@
|
||||
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 AssistClient
|
||||
{
|
||||
public partial class Form1 : Form
|
||||
{
|
||||
public Form1()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
}
|
||||
}
|
120
halftoneproject-master/AssistClient/Form1.resx
Normal file
120
halftoneproject-master/AssistClient/Form1.resx
Normal file
@ -0,0 +1,120 @@
|
||||
<?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>
|
||||
</root>
|
97
halftoneproject-master/AssistClient/FrmCMDProcess.Designer.cs
generated
Normal file
97
halftoneproject-master/AssistClient/FrmCMDProcess.Designer.cs
generated
Normal file
@ -0,0 +1,97 @@
|
||||
namespace AssistClient
|
||||
{
|
||||
partial class FrmCMDProcess
|
||||
{
|
||||
/// <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.panel1 = new System.Windows.Forms.Panel();
|
||||
this.cobCMDProcess = new System.Windows.Forms.ComboBox();
|
||||
this.uiIOCardDev0 = new AssistClient.UI.UIIOCardDev();
|
||||
this.panel1.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// panel1
|
||||
//
|
||||
this.panel1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.panel1.BackColor = System.Drawing.Color.White;
|
||||
this.panel1.Controls.Add(this.cobCMDProcess);
|
||||
this.panel1.Location = new System.Drawing.Point(0, 0);
|
||||
this.panel1.Name = "panel1";
|
||||
this.panel1.Size = new System.Drawing.Size(932, 53);
|
||||
this.panel1.TabIndex = 19;
|
||||
//
|
||||
// cobCMDProcess
|
||||
//
|
||||
this.cobCMDProcess.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||
this.cobCMDProcess.FlatStyle = System.Windows.Forms.FlatStyle.Popup;
|
||||
this.cobCMDProcess.FormattingEnabled = true;
|
||||
this.cobCMDProcess.Location = new System.Drawing.Point(12, 14);
|
||||
this.cobCMDProcess.Name = "cobCMDProcess";
|
||||
this.cobCMDProcess.Size = new System.Drawing.Size(318, 26);
|
||||
this.cobCMDProcess.TabIndex = 8;
|
||||
this.cobCMDProcess.SelectedIndexChanged += new System.EventHandler(this.cobCMDProcess_SelectedIndexChanged);
|
||||
//
|
||||
// uiIOCardDev0
|
||||
//
|
||||
this.uiIOCardDev0.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||
| System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.uiIOCardDev0.Location = new System.Drawing.Point(0, 59);
|
||||
this.uiIOCardDev0.Name = "uiIOCardDev0";
|
||||
this.uiIOCardDev0.Size = new System.Drawing.Size(932, 800);
|
||||
this.uiIOCardDev0.TabIndex = 18;
|
||||
//
|
||||
// FrmCMDProcess
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(9F, 18F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.BackColor = System.Drawing.SystemColors.ActiveCaption;
|
||||
this.ClientSize = new System.Drawing.Size(932, 862);
|
||||
this.Controls.Add(this.panel1);
|
||||
this.Controls.Add(this.uiIOCardDev0);
|
||||
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
|
||||
this.MaximizeBox = false;
|
||||
this.MinimizeBox = false;
|
||||
this.Name = "FrmCMDProcess";
|
||||
this.ShowIcon = false;
|
||||
this.ShowInTaskbar = false;
|
||||
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
|
||||
this.Text = "系统指令设置";
|
||||
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.FrmCMDProcess_FormClosing);
|
||||
this.Load += new System.EventHandler(this.FrmSetParams_Load);
|
||||
this.panel1.ResumeLayout(false);
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
private UI.UIIOCardDev uiIOCardDev0;
|
||||
private System.Windows.Forms.Panel panel1;
|
||||
private System.Windows.Forms.ComboBox cobCMDProcess;
|
||||
}
|
||||
}
|
80
halftoneproject-master/AssistClient/FrmCMDProcess.cs
Normal file
80
halftoneproject-master/AssistClient/FrmCMDProcess.cs
Normal file
@ -0,0 +1,80 @@
|
||||
using Newtonsoft.Json.Linq;
|
||||
using AssistClient.Utils;
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace AssistClient
|
||||
{
|
||||
public partial class FrmCMDProcess : Form
|
||||
{
|
||||
ArrayList cmdList=new ArrayList();
|
||||
private int currKey;
|
||||
public FrmCMDProcess()
|
||||
{
|
||||
InitializeComponent();
|
||||
this.uiIOCardDev0.GetParamsEvent = save;
|
||||
}
|
||||
|
||||
private void initData()
|
||||
{
|
||||
cmdList = Utils.EnumUtil.GetArrayList<CMDName>();
|
||||
cobCMDProcess.DisplayMember = "Value";
|
||||
cobCMDProcess.ValueMember = "Key";
|
||||
cobCMDProcess.DataSource = cmdList;
|
||||
cobCMDProcess.SelectedIndex = 0;
|
||||
}
|
||||
private void FrmSetParams_Load(object sender, EventArgs e)
|
||||
{
|
||||
try
|
||||
{
|
||||
uiIOCardDev0.init();
|
||||
initData();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MessageBox.Show(ex.Message, "失败", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
this.Close();
|
||||
}
|
||||
}
|
||||
private void cobCMDProcess_SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
currKey = (int)cobCMDProcess.SelectedValue;
|
||||
if (Config.CMDProcess.ContainsKey((CMDName)currKey))
|
||||
this.uiIOCardDev0.setParamsData(Config.CMDProcess[(CMDName)currKey].ToString());
|
||||
}
|
||||
private void save(string json)
|
||||
{
|
||||
Config.CMDProcess[(CMDName)currKey] = JObject.Parse(json);
|
||||
File.WriteAllText(Application.StartupPath + "\\CMDProcess\\" + currKey + ".json", json);
|
||||
MessageBox.Show("保存成功", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||||
}
|
||||
|
||||
private void tsbtnClose_Click(object sender, EventArgs e)
|
||||
{
|
||||
this.Close();
|
||||
}
|
||||
|
||||
private void FrmCMDProcess_FormClosing(object sender, FormClosingEventArgs e)
|
||||
{
|
||||
string lsBasePath = Application.StartupPath + "\\CMDProcess\\";
|
||||
foreach (DictionaryEntry item in cmdList)
|
||||
{
|
||||
if(!File.Exists(lsBasePath+item.Key+".json"))
|
||||
{
|
||||
MessageBox.Show($"[{item.Value}] 指令未设置,请先把系统指令集全部设置完成!", "失败", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
e.Cancel = true;
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
120
halftoneproject-master/AssistClient/FrmCMDProcess.resx
Normal file
120
halftoneproject-master/AssistClient/FrmCMDProcess.resx
Normal file
@ -0,0 +1,120 @@
|
||||
<?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>
|
||||
</root>
|
196
halftoneproject-master/AssistClient/FrmDebug3.Designer.cs
generated
Normal file
196
halftoneproject-master/AssistClient/FrmDebug3.Designer.cs
generated
Normal file
@ -0,0 +1,196 @@
|
||||
namespace AssistClient
|
||||
{
|
||||
partial class FrmDebug3
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FrmDebug3));
|
||||
this.tabControl1 = new System.Windows.Forms.TabControl();
|
||||
this.tabPage7 = new System.Windows.Forms.TabPage();
|
||||
this.tabPage4 = new System.Windows.Forms.TabPage();
|
||||
this.tabPage9 = new System.Windows.Forms.TabPage();
|
||||
this.tabPage5 = new System.Windows.Forms.TabPage();
|
||||
this.tabPage11 = new System.Windows.Forms.TabPage();
|
||||
this.uiAxis1 = new AssistClient.UI.UIAxisDev();
|
||||
this.uiIOCard1 = new AssistClient.UI.UIIOCardDev();
|
||||
this.uiScanner1 = new AssistClient.UI.UIScannerDev();
|
||||
this.uiLight1 = new AssistClient.UI.UILightDev();
|
||||
this.uiSizeLib1 = new AssistClient.UI.UISizeLib();
|
||||
this.tabControl1.SuspendLayout();
|
||||
this.tabPage7.SuspendLayout();
|
||||
this.tabPage4.SuspendLayout();
|
||||
this.tabPage9.SuspendLayout();
|
||||
this.tabPage5.SuspendLayout();
|
||||
this.tabPage11.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// tabControl1
|
||||
//
|
||||
this.tabControl1.Controls.Add(this.tabPage7);
|
||||
this.tabControl1.Controls.Add(this.tabPage4);
|
||||
this.tabControl1.Controls.Add(this.tabPage9);
|
||||
this.tabControl1.Controls.Add(this.tabPage5);
|
||||
this.tabControl1.Controls.Add(this.tabPage11);
|
||||
this.tabControl1.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.tabControl1.Location = new System.Drawing.Point(0, 0);
|
||||
this.tabControl1.Name = "tabControl1";
|
||||
this.tabControl1.SelectedIndex = 0;
|
||||
this.tabControl1.Size = new System.Drawing.Size(1292, 1053);
|
||||
this.tabControl1.TabIndex = 38;
|
||||
this.tabControl1.SelectedIndexChanged += new System.EventHandler(this.tabControl1_SelectedIndexChanged);
|
||||
//
|
||||
// tabPage7
|
||||
//
|
||||
this.tabPage7.Controls.Add(this.uiAxis1);
|
||||
this.tabPage7.Location = new System.Drawing.Point(4, 28);
|
||||
this.tabPage7.Name = "tabPage7";
|
||||
this.tabPage7.Size = new System.Drawing.Size(1284, 1021);
|
||||
this.tabPage7.TabIndex = 6;
|
||||
this.tabPage7.Text = "滑台调试";
|
||||
this.tabPage7.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// tabPage4
|
||||
//
|
||||
this.tabPage4.Controls.Add(this.uiIOCard1);
|
||||
this.tabPage4.Location = new System.Drawing.Point(4, 28);
|
||||
this.tabPage4.Name = "tabPage4";
|
||||
this.tabPage4.Size = new System.Drawing.Size(1284, 1021);
|
||||
this.tabPage4.TabIndex = 3;
|
||||
this.tabPage4.Text = "IO板卡";
|
||||
this.tabPage4.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// tabPage9
|
||||
//
|
||||
this.tabPage9.Controls.Add(this.uiScanner1);
|
||||
this.tabPage9.Location = new System.Drawing.Point(4, 28);
|
||||
this.tabPage9.Name = "tabPage9";
|
||||
this.tabPage9.Size = new System.Drawing.Size(1284, 1021);
|
||||
this.tabPage9.TabIndex = 8;
|
||||
this.tabPage9.Text = "网口相机";
|
||||
this.tabPage9.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// tabPage5
|
||||
//
|
||||
this.tabPage5.Controls.Add(this.uiLight1);
|
||||
this.tabPage5.Location = new System.Drawing.Point(4, 28);
|
||||
this.tabPage5.Name = "tabPage5";
|
||||
this.tabPage5.Padding = new System.Windows.Forms.Padding(3);
|
||||
this.tabPage5.Size = new System.Drawing.Size(1284, 1021);
|
||||
this.tabPage5.TabIndex = 4;
|
||||
this.tabPage5.Text = "光源调试";
|
||||
this.tabPage5.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// tabPage11
|
||||
//
|
||||
this.tabPage11.Controls.Add(this.uiSizeLib1);
|
||||
this.tabPage11.Location = new System.Drawing.Point(4, 28);
|
||||
this.tabPage11.Name = "tabPage11";
|
||||
this.tabPage11.Size = new System.Drawing.Size(1284, 1021);
|
||||
this.tabPage11.TabIndex = 10;
|
||||
this.tabPage11.Text = "尺寸检测";
|
||||
this.tabPage11.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// uiAxis1
|
||||
//
|
||||
this.uiAxis1.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.uiAxis1.Location = new System.Drawing.Point(0, 0);
|
||||
this.uiAxis1.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.uiAxis1.Name = "uiAxis1";
|
||||
this.uiAxis1.Size = new System.Drawing.Size(1284, 1021);
|
||||
this.uiAxis1.TabIndex = 1;
|
||||
//
|
||||
// uiIOCard1
|
||||
//
|
||||
this.uiIOCard1.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.uiIOCard1.Location = new System.Drawing.Point(0, 0);
|
||||
this.uiIOCard1.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.uiIOCard1.Name = "uiIOCard1";
|
||||
this.uiIOCard1.Size = new System.Drawing.Size(1284, 1021);
|
||||
this.uiIOCard1.TabIndex = 1;
|
||||
//
|
||||
// uiScanner1
|
||||
//
|
||||
this.uiScanner1.devType = AssistClient.Device.ScannerDev.ScannerType.CC;
|
||||
this.uiScanner1.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.uiScanner1.Location = new System.Drawing.Point(0, 0);
|
||||
this.uiScanner1.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.uiScanner1.Name = "uiScanner1";
|
||||
this.uiScanner1.Size = new System.Drawing.Size(1284, 1021);
|
||||
this.uiScanner1.TabIndex = 1;
|
||||
//
|
||||
// uiLight1
|
||||
//
|
||||
this.uiLight1.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.uiLight1.Location = new System.Drawing.Point(3, 3);
|
||||
this.uiLight1.Margin = new System.Windows.Forms.Padding(2);
|
||||
this.uiLight1.Name = "uiLight1";
|
||||
this.uiLight1.Size = new System.Drawing.Size(1278, 1015);
|
||||
this.uiLight1.TabIndex = 1;
|
||||
//
|
||||
// uiSizeLib1
|
||||
//
|
||||
this.uiSizeLib1.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.uiSizeLib1.Location = new System.Drawing.Point(0, 0);
|
||||
this.uiSizeLib1.Name = "uiSizeLib1";
|
||||
this.uiSizeLib1.Size = new System.Drawing.Size(1284, 1021);
|
||||
this.uiSizeLib1.TabIndex = 0;
|
||||
//
|
||||
// FrmDebug3
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(9F, 18F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(1292, 1053);
|
||||
this.Controls.Add(this.tabControl1);
|
||||
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
|
||||
this.Name = "FrmDebug3";
|
||||
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
|
||||
this.Text = "设备调试";
|
||||
this.Load += new System.EventHandler(this.FrmDebug3_Load);
|
||||
this.tabControl1.ResumeLayout(false);
|
||||
this.tabPage7.ResumeLayout(false);
|
||||
this.tabPage4.ResumeLayout(false);
|
||||
this.tabPage9.ResumeLayout(false);
|
||||
this.tabPage5.ResumeLayout(false);
|
||||
this.tabPage11.ResumeLayout(false);
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
private System.Windows.Forms.TabControl tabControl1;
|
||||
private System.Windows.Forms.TabPage tabPage7;
|
||||
private UI.UIAxisDev uiAxis1;
|
||||
private System.Windows.Forms.TabPage tabPage4;
|
||||
private UI.UIIOCardDev uiIOCard1;
|
||||
private System.Windows.Forms.TabPage tabPage9;
|
||||
private UI.UIScannerDev uiScanner1;
|
||||
private System.Windows.Forms.TabPage tabPage5;
|
||||
private UI.UILightDev uiLight1;
|
||||
private System.Windows.Forms.TabPage tabPage11;
|
||||
private UI.UISizeLib uiSizeLib1;
|
||||
}
|
||||
}
|
66
halftoneproject-master/AssistClient/FrmDebug3.cs
Normal file
66
halftoneproject-master/AssistClient/FrmDebug3.cs
Normal file
@ -0,0 +1,66 @@
|
||||
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;
|
||||
using static System.Windows.Forms.VisualStyles.VisualStyleElement.Button;
|
||||
|
||||
namespace AssistClient
|
||||
{
|
||||
public partial class FrmDebug3 : Form
|
||||
{
|
||||
SynchronizationContext SyncContext = null;
|
||||
public FrmDebug3( )
|
||||
{
|
||||
InitializeComponent();
|
||||
//获取UI线程同步上下文
|
||||
SyncContext = SynchronizationContext.Current;
|
||||
//init();
|
||||
|
||||
}
|
||||
private void FrmDebug3_Load(object sender, EventArgs e)
|
||||
{
|
||||
}
|
||||
|
||||
private void propertyGrid2_PropertyValueChanged(object s, PropertyValueChangedEventArgs e)
|
||||
{
|
||||
//其中包含了两个重要的属性:OldValue和ChangeItem。而ChangeItem则是“PropertyDescriptorGridEntry”类型。
|
||||
//一般可以通过ChangeItem的PropertyDescriptor的ComponentType查找到属性的实际类型。
|
||||
//而通过ChangeItem的Label,则可以查看到当前在属性编辑输入框中显示的值。
|
||||
//通过ChangeItem,基本可以处理所有的属性变化的处理
|
||||
}
|
||||
|
||||
|
||||
private void tabControl1_SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
switch (tabControl1.SelectedTab.Text)
|
||||
{
|
||||
case "":
|
||||
break;
|
||||
}
|
||||
}
|
||||
private void tsbtnOpenDev_Click(object sender, EventArgs e)
|
||||
{
|
||||
try
|
||||
{
|
||||
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
private void tsbtnClose_Click(object sender, EventArgs e)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
408
halftoneproject-master/AssistClient/FrmDebug3.resx
Normal file
408
halftoneproject-master/AssistClient/FrmDebug3.resx
Normal file
@ -0,0 +1,408 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
AAABAAEAQEAAAAEAIAAoQgAAFgAAACgAAABAAAAAgAAAAAEAIAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGHdcMBh7YOAUd1hwEHtgCAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHHdsABR3YHAYd1zIHHdgGAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGHdgkBh3Y1QYe2P8FHtj7BR7YhwUe
|
||||
2AIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGHtgEBR7YgQYd
|
||||
2PcGHtj/BR3YywUd2BYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABh3YmQYe
|
||||
2P8GHtj/Bh7Y/wUe1/0GHdh4BhzbAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAGHtgEBh7YiwYe1/0GHtj/Bh7Y/wYe2P8GHdiVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAUe2K8GHtj/Bh7Y/wYe2P8GHtj/Bh3Y+QYd114AAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAFHtgEBh7YiwYe2P0GHtj/Bh7Y/wYe2P8GHtj/BR3YuQAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGHtdwBh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtjzBR3XRgAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUe1wQGHdciBR3XRgUe
|
||||
114FHdgwAAAAAAAAAAAAAAAAAAAAAAUe2DAGHdhaBh7XQgUe1x4HHNICAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGHtgEBh7YiwYe1/0GHtj/Bh7Y/wYe2P8GHtj/BR7X/QYd
|
||||
2GIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABR3YCgUe2LkGHtj/Bh7Y/wYe
|
||||
2P8GHtj/Bh7Y/wYe1+kGHtcyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEHNUGBR3XTAYe
|
||||
2J0FHtfdBh7X9QYe2P8GHtj/BR7YcAAAAAAAAAAAAAAAAAAAAAAFHthwBh7Y/wUd1/8FHtfzBh7Y0wYe
|
||||
14kFHtg6BB3YBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGHtgEBh7YiwYe2P0GHtj/Bh7Y/wYe
|
||||
2P8GHtj/BR7Y/wUe15UFH9cEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAGHdcSBh3XywYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y4QUe2BwAAAAAAAAAAAAAAAAAAAAAAAAAAAgf
|
||||
2AQGHtdYBh7X0wUd1/0GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wUe2HAAAAAAAAAAAAAAAAAAAAAABR7YcAYe
|
||||
2P8GHtj/Bh7Y/wYe2P8GHtj/BR7Y+wUe180FHtdOBR/WAgAAAAAAAAAAAAAAAAAAAAAGHtgCBh7YjQYe
|
||||
1/0GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2JUGHtgEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYe2BgGHtfdBh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHdfNBh3YEAAA
|
||||
AAAAAAAAAAAAAAUe1yoFHti5Bh7Y/QYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8FHthwAAAAAAAA
|
||||
AAAAAAAAAAAAAAUe2HAGHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/BR7X/QYe17kFHdcsAAAAAAAA
|
||||
AAAAAAAABh3XjQYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wUe15cFHtgCAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABh3XLAUd2O0GHtj/Bh7Y/wYe
|
||||
2P8GHtj/Bh7Y/wUe2MEFHdcIBB3XBAUe12gGHdj3Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe
|
||||
2P8GHtj/BR7YcAAAAAAAAAAAAAAAAAAAAAAFHthwBh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe
|
||||
2P8GHtj/Bh7Y9QYd12oGHdgGBh3XjQYe2P8GHtj/Bh7Y/wYe2P8GHtj/BR7Y/wUe15kGH9gCAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAGHddABh3X8QYe2P8GHtj/Bh7Y/wYe2P8GHtj/BR7YowUd2JsGHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe
|
||||
2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wUe2HAAAAAAAAAAAAAAAAAAAAAABR7YcAYe2P8GHtj/Bh7Y/wYe
|
||||
2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh3YzQYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYd
|
||||
2JsFHtgEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUe11AFHtf3Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe
|
||||
2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8FHthwAAAAAAAAAAAAAAAAAAAAAAUe
|
||||
2HAGHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe
|
||||
2P8GHtj/Bh7X/wYe158FHdgGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHtIABh7YagYe2PsGHtj/Bh7Y/wYe
|
||||
2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/BR7YcAAA
|
||||
AAAAAAAAAAAAAAAAAAAFHthwBh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe
|
||||
2P8GHtj/Bh7Y/wYe2P8GHtj/BR7Y/wUe16MGHtcGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYe
|
||||
2AIFHtiBBh7Y/QYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe
|
||||
2P8GHtj/Bh7Y/wUe2HAAAAAAAAAAAAAAAAAAAAAABR7YcAYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe
|
||||
2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wUe2KcEHtgIAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAABh/ZBAYe2JcGHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe
|
||||
2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8FHthwAAAAAAAAAAAAAAAAAAAAAAUe2HAGHtj/Bh7Y/wYe
|
||||
2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2OcGHtgKAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGHtdKBh7X/QYe2P8GHtj/Bh7Y/wYe
|
||||
2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/BR7YcAAAAAAAAAAAAAAAAAAA
|
||||
AAAFHthwBh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe
|
||||
2P8GHtj7Bh7XPgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABR3YswYe
|
||||
2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wUe
|
||||
2HAAAAAAAAAAAAAAAAAAAAAABR7YcAYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe
|
||||
2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2K0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAABR3YJgYe2PUGHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe
|
||||
2P8GHtj/Bh7Y/wYe2P8FHthwAAAAAAAAAAAAAAAAAAAAAAUe2HAGHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe
|
||||
2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8FHtfzBR7XHgAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUe12YGHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe
|
||||
2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/BR7YcAAAAAAAAAAAAAAAAAAAAAAFHthwBh7Y/wYe
|
||||
2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wUe
|
||||
2GIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGHtivBh7Y/wYe2P8GHtj/Bh7Y/wYe
|
||||
2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wUe2HAAAAAAAAAAAAAA
|
||||
AAAAAAAABR7YcAYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe
|
||||
2P8GHtj/Bh7Y/wYe2P8FHdivAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGHdgIBh3Y3wYe
|
||||
2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe
|
||||
2P8FHthwAAAAAAAAAAAAAAAAAAAAAAUe2HAGHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe
|
||||
2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/BR3X2wMd1wYAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAABR7YGgUe2PEGHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe
|
||||
2P8GHtj/Bh7Y/wYe2P8GHtj/BR7YcAAAAAAAAAAAAAAAAAAAAAAFHthwBh7Y/wYe2P8GHtj/Bh7Y/wYe
|
||||
2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wUe1/EFHtcaAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUd2DAGHdj9Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe
|
||||
2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wUe2HAAAAAAAAAAAAAAAAAAAAAABR7YcAYe
|
||||
2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe
|
||||
2P8GHtj/BR3YNAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFHdhGBh7Y/wYe2P8GHtj/Bh7Y/wYe
|
||||
2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8FHthwAAAAAAAA
|
||||
AAAAAAAAAAAAAAUe2HAGHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe
|
||||
2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2EYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABR7YUgYe
|
||||
2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe
|
||||
2P8GHtj/BR7YcAAAAAAAAAAAAAAAAAAAAAAFHthwBh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe
|
||||
2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8FHtdSAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABR3WAgUe1wgGHtgKBh7YCgYe2AoGHtgKBh7YCgYe
|
||||
2AoGHtgKBh7YCgYd2GYGHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe
|
||||
2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wUe2HAAAAAAAAAAAAAAAAAAAAAABR7YcAYe2P8GHtj/Bh7Y/wYe
|
||||
2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh3YZAYe
|
||||
2AoGHtgKBh7YCgYe2AoGHtgKBh7YCgYe2AoGHtgKBh7YCAYe2QIAAAAABR7XEAYd16MFHtfzBh7Y/wYe
|
||||
2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe
|
||||
2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8FHthwAAAAAAAAAAAAAAAAAAAAAAUe
|
||||
2HAGHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe
|
||||
2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe1/MFHtilBR7XEAYe
|
||||
15UGHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe
|
||||
2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/BR7YcAAA
|
||||
AAAAAAAAAAAAAAAAAAAFHthwBh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe
|
||||
2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe
|
||||
2P8GHtj/Bh7Y/wUd15MFHdfLBh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe
|
||||
2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe
|
||||
2P8GHtj/Bh7Y/wUe2HAAAAAAAAAAAAAAAAAAAAAABR7YcAYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe
|
||||
2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe
|
||||
2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtfLBh3YnQYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe
|
||||
2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe
|
||||
2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8FHthwAAAAAAAAAAAAAAAAAAAAAAUe2HAGHtj/Bh7Y/wYe
|
||||
2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe
|
||||
2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh3XmwYe2BoFHde9Bh7Y+QYe
|
||||
2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe
|
||||
2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/BR7YcAAAAAAAAAAAAAAAAAAA
|
||||
AAAFHthwBh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe
|
||||
2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHdj3Bh3YwQUe
|
||||
1xoAAAAABR3XBgYe2BIGHtgUBh7YFAYe2BQGHtgUBh7YFAYe2BQGHtgUBh7YFAUd2HIGHtj/Bh7Y/wYe
|
||||
2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wUe
|
||||
2HAAAAAAAAAAAAAAAAAAAAAABR7YcAYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe
|
||||
2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/BR3YcgYe2BQGHtgUBh7YFAYe2BQGHtgUBh7YFAYe
|
||||
2BQGHtgUBh3YEgYd2AYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAFHdhmBh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe
|
||||
2P8GHtj/Bh7Y/wYe2P8FHthwAAAAAAAAAAAAAAAAAAAAAAUe2HAGHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe
|
||||
2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wUd2GYAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAABR3YZgYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe
|
||||
2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/BR7YcAAAAAAAAAAAAAAAAAAAAAAFHthwBh7Y/wYe
|
||||
2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe
|
||||
2P8FHdhmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUd2GYGHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe
|
||||
2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wUe2HAAAAAAAAAAAAAA
|
||||
AAAAAAAABR7YcAYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe
|
||||
2P8GHtj/Bh7Y/wYe2P8GHtj/BR3YZgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFHdhmBh7Y/wYe
|
||||
2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe
|
||||
2P8FHthwAAAAAAAAAAAAAAAAAAAAAAUe2HAGHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe
|
||||
2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wUd2GYAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAABR3YZgYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe
|
||||
2P8GHtj/Bh7Y/wYe2P8GHtj/BR7YcAAAAAAAAAAAAAAAAAAAAAAFHthwBh7Y/wYe2P8GHtj/Bh7Y/wYe
|
||||
2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8FHdhmAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUd2GYGHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe
|
||||
2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wUe2HAAAAAAAAAAAAAAAAAAAAAABR7YcAYe
|
||||
2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe
|
||||
2P8GHtj/BR3YZgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFHdhmBh7Y/wYe2P8GHtj/Bh7Y/wYe
|
||||
2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8FHthwAAAAAAAA
|
||||
AAAAAAAAAAAAAAUe2HAGHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe
|
||||
2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wUd2GYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABR3YZgYe
|
||||
2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe
|
||||
2P8GHtj/BR7YcAAAAAAAAAAAAAAAAAAAAAAFHthwBh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe
|
||||
2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8FHdhmAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAUd2GYGHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe
|
||||
2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wUe2HAAAAAAAAAAAAAAAAAAAAAABR7YcAYe2P8GHtj/Bh7Y/wYe
|
||||
2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/BR3YZgAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFHdhmBh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe
|
||||
2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtjRBh7XrQYe160GHtetBh7XrQYe
|
||||
2NEGHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe
|
||||
2P8GHtj/Bh7Y/wUd2GYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABR3XagYe2P8GHtj/Bh7Y/wYe
|
||||
2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe
|
||||
2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe
|
||||
2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8FHddqAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABh7YLgUd
|
||||
1+EGHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe
|
||||
2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe
|
||||
2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/BR3X4QYe2C4AAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAABh7XLgUd1+EGHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe
|
||||
2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe
|
||||
2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe
|
||||
2P8GHtjhBh3YLgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAABh7XLAYe1+EGHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe
|
||||
2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe
|
||||
2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe
|
||||
2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2OEGHdcsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABR7XKgUe2OMGHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wUd
|
||||
1+EFHddeBR3YXAUd2FwFHdhcBR3YXAUd2FwFHdhcBR3YXAUd2FwFHdhcBR3YXAUd2FwFHdhcBR3YXAUd
|
||||
2FwFHdhcBR3YXAUd2FwFHdhcBR3YXAUd2FwFHdhcBR3YXAUd2FwFHdhcBR3YXAUd2FwFHdhcBR3YXAUd
|
||||
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
|
||||
AAAAAAAAAAAAAAYd2IcGHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe
|
||||
2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8FHteJAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUe1zIFHtfHBh3Y6wUd2McFHdcqAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABR3WBgYe1xIFHtgGAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFHthYBh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe
|
||||
2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe
|
||||
2P8GHtj/Bh7YWgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABR7XBgYd
|
||||
2BIHHdgGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABR3XHgUd1/MGHtj/Bh7Y/wYe
|
||||
2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe
|
||||
2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7X8wYe1yAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUc
|
||||
1wIFHdi9Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe
|
||||
2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wUd170FH9UEAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAABh7XPAUe1/cGHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe
|
||||
2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wUe1/cGHtc8AAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAe0gAFHdedBR3X/wYe2P8GHtj/Bh7Y/wYe
|
||||
2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe
|
||||
2P8GHtebAB7SAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABR3XDgYd
|
||||
188GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe
|
||||
2P8GHtj/Bh7Y/wYe2P8FHtjJBh3YDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAGHtgmBR3X2QYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe
|
||||
2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHdjbBR3XJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUe2BYFHte1Bh7Y/wYe2P8GHtj/Bh7Y/wYe
|
||||
2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHti5Bh7XGgAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABR7XCAYd
|
||||
12oFHtjjBh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wYe2P8GHtj/Bh7Y/wUe1+MGHddqBh7XCAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAHtIABh7YFgYd2G4FHdi9BR3Y9wYe2P8GHtj/Bh7Y/wYe2P8FHtj3BR7YuwUd
|
||||
124GHtcWAB7SAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBzYAgUc1w4FHtckBh3YOgYd
|
||||
2DoFHtckBRzXDgUf2AIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAA///////////8P//////8P/g///////gf+B//////8B/8D//////gP/wH/wfg/8A//gP8B+A/
|
||||
gH//AfAH4A8A//+A4AfgBgH//8AAB+AAA///4AAH4AAH///wAAfgAA////AAB+AAH///+AAH4AA////8
|
||||
AAfgAD////gAB+AAH///+AAH4AAf///4AAfgAB////AAB+AAD///8AAH4AAP///wAAfgAA////AAB+AA
|
||||
D///8AAH4AAP///wAAfgAA////AAB+AAD/+AAAAH4AAAAQAAAAfgAAAAAAAAB+AAAAAAAAAH4AAAAIAA
|
||||
AAfgAAAB//AAB+AAD///8AAH4AAP///wAAfgAA////AAB+AAD///8AAH4AAP///wAAfgAA////AAB+AA
|
||||
D///8AAH4AAP///wAAfgAA////AAB+AAD///8AAAAAAP///wAAAAAA///+AAAAAAB///wAAAAAAD//+A
|
||||
AAAAAAH//wH/////gP/+A//////Af/wH/////+A/+A//////8B/wH//////4D/A/8AAAD/wP8H/gAAAH
|
||||
/g/4/+AAAAf/H///8AAAD//////wAAAP//////AAAA//////+AAAH//////4AAAf//////wAAD//////
|
||||
/gAAf///////AAD////////AA/////////AP//////////////8=
|
||||
</value>
|
||||
</data>
|
||||
</root>
|
36
halftoneproject-master/AssistClient/FrmLoading.cs
Normal file
36
halftoneproject-master/AssistClient/FrmLoading.cs
Normal file
@ -0,0 +1,36 @@
|
||||
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 AssistClient
|
||||
{
|
||||
public partial class FrmLoading2 : Form
|
||||
{
|
||||
public string data { get; set; }
|
||||
public FrmLoading2()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
public FrmLoading2(string _data)
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
this.data = _data;
|
||||
}
|
||||
|
||||
private void FrmLoading2_Load(object sender, EventArgs e)
|
||||
{
|
||||
if (this.Owner != null)
|
||||
{
|
||||
this.Size = this.Owner.Size;
|
||||
this.Location = this.Owner.Location;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
69
halftoneproject-master/AssistClient/FrmLoading.designer.cs
generated
Normal file
69
halftoneproject-master/AssistClient/FrmLoading.designer.cs
generated
Normal file
@ -0,0 +1,69 @@
|
||||
namespace AssistClient
|
||||
{
|
||||
partial class FrmLoading2
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FrmLoading2));
|
||||
this.label1 = new System.Windows.Forms.Label();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// label1
|
||||
//
|
||||
this.label1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(41)))), ((int)(((byte)(41)))), ((int)(((byte)(41)))));
|
||||
this.label1.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.label1.Image = ((System.Drawing.Image)(resources.GetObject("label1.Image")));
|
||||
this.label1.Location = new System.Drawing.Point(0, 0);
|
||||
this.label1.Name = "label1";
|
||||
this.label1.Size = new System.Drawing.Size(858, 574);
|
||||
this.label1.TabIndex = 0;
|
||||
//
|
||||
// FrmLoading2
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(9F, 18F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(858, 574);
|
||||
this.Controls.Add(this.label1);
|
||||
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
|
||||
this.MaximizeBox = false;
|
||||
this.MinimizeBox = false;
|
||||
this.Name = "FrmLoading2";
|
||||
this.Opacity = 0.4D;
|
||||
this.ShowIcon = false;
|
||||
this.ShowInTaskbar = false;
|
||||
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
|
||||
this.Text = "FrmLoading2";
|
||||
this.Load += new System.EventHandler(this.FrmLoading2_Load);
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.Label label1;
|
||||
}
|
||||
}
|
14542
halftoneproject-master/AssistClient/FrmLoading.resx
Normal file
14542
halftoneproject-master/AssistClient/FrmLoading.resx
Normal file
File diff suppressed because it is too large
Load Diff
187
halftoneproject-master/AssistClient/FrmLogin.Designer.cs
generated
Normal file
187
halftoneproject-master/AssistClient/FrmLogin.Designer.cs
generated
Normal file
@ -0,0 +1,187 @@
|
||||
namespace AssistClient
|
||||
{
|
||||
partial class FrmLogin
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FrmLogin));
|
||||
this.btnLogin = new System.Windows.Forms.Button();
|
||||
this.chkRememberPw = new System.Windows.Forms.CheckBox();
|
||||
this.chkRememberUserCode = new System.Windows.Forms.CheckBox();
|
||||
this.pictureBox1 = new System.Windows.Forms.PictureBox();
|
||||
this.txtUserPw = new System.Windows.Forms.TextBox();
|
||||
this.label2 = new System.Windows.Forms.Label();
|
||||
this.txtUserCode = new System.Windows.Forms.TextBox();
|
||||
this.label1 = new System.Windows.Forms.Label();
|
||||
this.button2 = new System.Windows.Forms.Button();
|
||||
this.label3 = new System.Windows.Forms.Label();
|
||||
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// btnLogin
|
||||
//
|
||||
this.btnLogin.Location = new System.Drawing.Point(495, 707);
|
||||
this.btnLogin.Name = "btnLogin";
|
||||
this.btnLogin.Size = new System.Drawing.Size(112, 35);
|
||||
this.btnLogin.TabIndex = 5;
|
||||
this.btnLogin.Text = "登录";
|
||||
this.btnLogin.UseVisualStyleBackColor = true;
|
||||
this.btnLogin.Click += new System.EventHandler(this.btnLogin_Click);
|
||||
//
|
||||
// chkRememberPw
|
||||
//
|
||||
this.chkRememberPw.AutoSize = true;
|
||||
this.chkRememberPw.Location = new System.Drawing.Point(602, 668);
|
||||
this.chkRememberPw.Name = "chkRememberPw";
|
||||
this.chkRememberPw.Size = new System.Drawing.Size(106, 22);
|
||||
this.chkRememberPw.TabIndex = 3;
|
||||
this.chkRememberPw.Text = "记住密码";
|
||||
this.chkRememberPw.UseVisualStyleBackColor = true;
|
||||
this.chkRememberPw.CheckedChanged += new System.EventHandler(this.chkRememberPw_CheckedChanged);
|
||||
//
|
||||
// chkRememberUserCode
|
||||
//
|
||||
this.chkRememberUserCode.AutoSize = true;
|
||||
this.chkRememberUserCode.Location = new System.Drawing.Point(433, 668);
|
||||
this.chkRememberUserCode.Name = "chkRememberUserCode";
|
||||
this.chkRememberUserCode.Size = new System.Drawing.Size(124, 22);
|
||||
this.chkRememberUserCode.TabIndex = 4;
|
||||
this.chkRememberUserCode.Text = "记住用户名";
|
||||
this.chkRememberUserCode.UseVisualStyleBackColor = true;
|
||||
this.chkRememberUserCode.CheckedChanged += new System.EventHandler(this.chkRememberUserCode_CheckedChanged);
|
||||
//
|
||||
// pictureBox1
|
||||
//
|
||||
this.pictureBox1.Image = ((System.Drawing.Image)(resources.GetObject("pictureBox1.Image")));
|
||||
this.pictureBox1.Location = new System.Drawing.Point(298, 437);
|
||||
this.pictureBox1.Name = "pictureBox1";
|
||||
this.pictureBox1.Size = new System.Drawing.Size(539, 142);
|
||||
this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
|
||||
this.pictureBox1.TabIndex = 24;
|
||||
this.pictureBox1.TabStop = false;
|
||||
//
|
||||
// txtUserPw
|
||||
//
|
||||
this.txtUserPw.Location = new System.Drawing.Point(433, 634);
|
||||
this.txtUserPw.MaxLength = 16;
|
||||
this.txtUserPw.Name = "txtUserPw";
|
||||
this.txtUserPw.PasswordChar = '*';
|
||||
this.txtUserPw.Size = new System.Drawing.Size(275, 28);
|
||||
this.txtUserPw.TabIndex = 2;
|
||||
//
|
||||
// label2
|
||||
//
|
||||
this.label2.AutoSize = true;
|
||||
this.label2.Location = new System.Drawing.Point(366, 644);
|
||||
this.label2.Name = "label2";
|
||||
this.label2.Size = new System.Drawing.Size(44, 18);
|
||||
this.label2.TabIndex = 27;
|
||||
this.label2.Text = "密码";
|
||||
//
|
||||
// txtUserCode
|
||||
//
|
||||
this.txtUserCode.Location = new System.Drawing.Point(433, 593);
|
||||
this.txtUserCode.Name = "txtUserCode";
|
||||
this.txtUserCode.Size = new System.Drawing.Size(275, 28);
|
||||
this.txtUserCode.TabIndex = 1;
|
||||
//
|
||||
// label1
|
||||
//
|
||||
this.label1.AutoSize = true;
|
||||
this.label1.Location = new System.Drawing.Point(366, 603);
|
||||
this.label1.Name = "label1";
|
||||
this.label1.Size = new System.Drawing.Size(44, 18);
|
||||
this.label1.TabIndex = 25;
|
||||
this.label1.Text = "帐号";
|
||||
//
|
||||
// button2
|
||||
//
|
||||
this.button2.Location = new System.Drawing.Point(720, 707);
|
||||
this.button2.Name = "button2";
|
||||
this.button2.Size = new System.Drawing.Size(84, 35);
|
||||
this.button2.TabIndex = 9;
|
||||
this.button2.Text = "初始DB";
|
||||
this.button2.UseVisualStyleBackColor = true;
|
||||
this.button2.Click += new System.EventHandler(this.button2_Click);
|
||||
//
|
||||
// label3
|
||||
//
|
||||
this.label3.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(41)))), ((int)(((byte)(41)))), ((int)(((byte)(41)))));
|
||||
this.label3.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.label3.Image = ((System.Drawing.Image)(resources.GetObject("label3.Image")));
|
||||
this.label3.Location = new System.Drawing.Point(0, 0);
|
||||
this.label3.Name = "label3";
|
||||
this.label3.Size = new System.Drawing.Size(510, 275);
|
||||
this.label3.TabIndex = 28;
|
||||
//
|
||||
// FrmLogin
|
||||
//
|
||||
this.AcceptButton = this.btnLogin;
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(9F, 18F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.BackColor = System.Drawing.SystemColors.GradientInactiveCaption;
|
||||
this.ClientSize = new System.Drawing.Size(510, 275);
|
||||
this.Controls.Add(this.label3);
|
||||
this.Controls.Add(this.txtUserPw);
|
||||
this.Controls.Add(this.label2);
|
||||
this.Controls.Add(this.txtUserCode);
|
||||
this.Controls.Add(this.label1);
|
||||
this.Controls.Add(this.pictureBox1);
|
||||
this.Controls.Add(this.chkRememberUserCode);
|
||||
this.Controls.Add(this.chkRememberPw);
|
||||
this.Controls.Add(this.button2);
|
||||
this.Controls.Add(this.btnLogin);
|
||||
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow;
|
||||
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
|
||||
this.MaximizeBox = false;
|
||||
this.MinimizeBox = false;
|
||||
this.Name = "FrmLogin";
|
||||
this.ShowIcon = false;
|
||||
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
|
||||
this.Text = "修复控制台 - v1.0";
|
||||
this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.FrmLogin_FormClosed);
|
||||
this.Load += new System.EventHandler(this.FrmLogin_Load);
|
||||
this.Shown += new System.EventHandler(this.FrmLogin_Shown);
|
||||
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
private System.Windows.Forms.Button btnLogin;
|
||||
private System.Windows.Forms.CheckBox chkRememberPw;
|
||||
private System.Windows.Forms.CheckBox chkRememberUserCode;
|
||||
private System.Windows.Forms.PictureBox pictureBox1;
|
||||
private System.Windows.Forms.TextBox txtUserPw;
|
||||
private System.Windows.Forms.Label label2;
|
||||
private System.Windows.Forms.TextBox txtUserCode;
|
||||
private System.Windows.Forms.Label label1;
|
||||
private System.Windows.Forms.Button button2;
|
||||
private System.Windows.Forms.Label label3;
|
||||
}
|
||||
}
|
215
halftoneproject-master/AssistClient/FrmLogin.cs
Normal file
215
halftoneproject-master/AssistClient/FrmLogin.cs
Normal file
@ -0,0 +1,215 @@
|
||||
using OpenCvSharp;
|
||||
using OpenCvSharp.Extensions;
|
||||
using AssistClient.Utils;
|
||||
using Service;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Drawing.Imaging;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
using System.Threading;
|
||||
|
||||
namespace AssistClient
|
||||
{
|
||||
public partial class FrmLogin : Form
|
||||
{
|
||||
public FrmLogin()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
private void FrmLogin_Load(object sender, EventArgs e)
|
||||
{
|
||||
//this.txtUserCode.SelectAll();
|
||||
//string configPath = Application.StartupPath + "\\Login.ini";
|
||||
|
||||
////DEV
|
||||
//if (Util.ReadIniValue(configPath, "LOGIN", "RememberUserCode") == "1")
|
||||
//{
|
||||
// this.txtUserCode.Text = Util.ReadIniValue(configPath, "LOGIN", "UserCode");
|
||||
// this.chkRememberUserCode.Checked = true;
|
||||
// this.txtUserPw.SelectAll();
|
||||
// if (Util.ReadIniValue(configPath, "LOGIN", "RememberPw") == "1")
|
||||
// {
|
||||
// this.txtUserPw.Text = Util.ReadIniValue(configPath, "LOGIN", "PassWord");
|
||||
// this.chkRememberPw.Checked = true;
|
||||
// this.btnLogin.Focus();
|
||||
// }
|
||||
//}
|
||||
|
||||
|
||||
//FrmLoading2 loading = new FrmLoading2();
|
||||
//loading.ShowDialog(this);
|
||||
//Thread workThread = new Thread(waiting);
|
||||
//workThread.IsBackground = true;
|
||||
//workThread.Start(loading);
|
||||
}
|
||||
private void FrmLogin_Shown(object sender, EventArgs e)
|
||||
{
|
||||
this.txtUserCode.Text = "admin";
|
||||
this.txtUserPw.Text = "";
|
||||
btnLogin_Click(null, null);
|
||||
}
|
||||
private void waiting(Object form)
|
||||
{
|
||||
FrmLoading2 frmLoading = form as FrmLoading2;
|
||||
btnLogin_Click(null,null);
|
||||
frmLoading.Close();
|
||||
}
|
||||
private void FrmLogin_FormClosed(object sender, FormClosedEventArgs e)
|
||||
{
|
||||
Application.Exit();
|
||||
System.GC.Collect();
|
||||
System.Environment.Exit(0);
|
||||
}
|
||||
private void btnLogin_Click(object sender, EventArgs e)
|
||||
{
|
||||
try
|
||||
{
|
||||
string szUserCode=this.txtUserCode.Text.Trim();
|
||||
string szUserPw=this.txtUserPw.Text.Trim();
|
||||
if (szUserCode == "")
|
||||
throw new Exception("请填写用户帐号!");
|
||||
if (szUserPw.Length != 32)
|
||||
szUserPw = Utils.Util.GetMD5(szUserPw);
|
||||
|
||||
UserService service = new UserService();
|
||||
var model = service.GetModel(szUserCode, szUserPw);
|
||||
if (model == null)
|
||||
throw new Exception("帐号或密码错误!");
|
||||
if (szUserCode!="admin" && !model.State)
|
||||
throw new Exception("帐号已停用!");
|
||||
if (string.IsNullOrWhiteSpace(model.Password))
|
||||
model.Password = "";
|
||||
//
|
||||
string configPath = Application.StartupPath + "\\Login.ini";
|
||||
if (this.chkRememberUserCode.Checked)
|
||||
{
|
||||
|
||||
Util.WriteIniValue(configPath, "LOGIN", "UserCode", szUserCode);
|
||||
Util.WriteIniValue(configPath, "LOGIN", "RememberUserCode", "1");
|
||||
Util.WriteIniValue(configPath, "LOGIN", "PassWord", this.chkRememberPw.Checked ? szUserPw : "");
|
||||
Util.WriteIniValue(configPath, "LOGIN", "RememberPw", this.chkRememberPw.Checked ? "1" : "0");
|
||||
}
|
||||
else
|
||||
{
|
||||
Util.WriteIniValue(configPath, "LOGIN", "RememberUserCode", "");
|
||||
Util.WriteIniValue(configPath, "LOGIN", "RememberPw", "0");
|
||||
Util.WriteIniValue(configPath, "LOGIN", "PassWord", this.chkRememberPw.Checked ? szUserPw : "");
|
||||
Util.WriteIniValue(configPath, "LOGIN", "RememberPw", this.chkRememberPw.Checked ? "1" : "0");
|
||||
}
|
||||
//
|
||||
this.Hide();
|
||||
Config.loginUser=model;
|
||||
FrmMain frmMain = new FrmMain();
|
||||
frmMain.Show();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MessageBox.Show(ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
}
|
||||
}
|
||||
private void chkRememberUserCode_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
if(!chkRememberUserCode.Checked)
|
||||
chkRememberPw.Checked = false;
|
||||
}
|
||||
private void chkRememberPw_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (chkRememberPw.Checked)
|
||||
chkRememberUserCode.Checked = true;
|
||||
}
|
||||
private void button2_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (MessageBox.Show($"确定初始化数据库?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) != DialogResult.Yes)
|
||||
return;
|
||||
|
||||
try
|
||||
{
|
||||
Service.InitDB.initDB(this.txtUserPw.Text=="reset");
|
||||
MessageBox.Show("数据库初始化成功,请使用admin进行登录!", "成功", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MessageBox.Show(ex.Message,"失败",MessageBoxButtons.OK,MessageBoxIcon.Error);
|
||||
}
|
||||
}
|
||||
|
||||
private void button3_Click(object sender, EventArgs e)
|
||||
{
|
||||
DateTime now = DateTime.Now;
|
||||
byte[] buff = File.ReadAllBytes(Application.StartupPath + @"\bigbmp\bigbmp.bmp");
|
||||
this.Text = (DateTime.Now - now).TotalMilliseconds.ToString() + " ";
|
||||
now = DateTime.Now;
|
||||
MemoryStream stream = new MemoryStream(buff);
|
||||
|
||||
List<Bitmap> listBmp = new List<Bitmap>();
|
||||
using (Mat mat = BitmapConverter.ToMat(new System.Drawing.Bitmap(stream)))
|
||||
{
|
||||
//
|
||||
int smallW = mat.Width / 23;
|
||||
int smallH = mat.Height / 23;
|
||||
|
||||
{
|
||||
for (int i = 0; i < 23; i++)
|
||||
{
|
||||
for (int j = 0; j < 23; j++)
|
||||
{
|
||||
Rect rect1 = new Rect(i * smallW, j * smallH, smallW, smallH);
|
||||
using (Mat mat8U = mat[rect1])
|
||||
{
|
||||
listBmp.Add(BitmapConverter.ToBitmap(mat8U));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
this.Text += (DateTime.Now - now).TotalMilliseconds.ToString();
|
||||
int index = 0;
|
||||
listBmp.ForEach(b => b.Save(Application.StartupPath + @"\bigbmp\" + (index++) + ".bmp", ImageFormat.Bmp));
|
||||
}
|
||||
|
||||
public static Mat bmpToMat(Bitmap srcbit)
|
||||
{
|
||||
int iwidth = srcbit.Width;
|
||||
int iheight = srcbit.Height;
|
||||
int iByte = iwidth * iheight * 3;
|
||||
byte[] result = new byte[iByte];
|
||||
int step;
|
||||
Rectangle rect = new Rectangle(0, 0, iwidth, iheight);
|
||||
BitmapData bmpData = srcbit.LockBits(rect, ImageLockMode.ReadWrite, srcbit.PixelFormat);
|
||||
IntPtr iPtr = bmpData.Scan0;
|
||||
Marshal.Copy(iPtr, result, 0, iByte);
|
||||
step = bmpData.Stride;
|
||||
srcbit.UnlockBits(bmpData);
|
||||
return new Mat(srcbit.Height, srcbit.Width, new MatType(MatType.CV_8UC3), result, step);
|
||||
}
|
||||
|
||||
public static Mat bmpBuffToBat(byte[] buff,int height,int width)
|
||||
{
|
||||
var src = new Mat(height, width, MatType.CV_8UC3);
|
||||
int length = height * width * 3; // or src.Height * src.Step;
|
||||
Marshal.Copy(buff, 0, src.Data, length);
|
||||
|
||||
return src;
|
||||
}
|
||||
public static byte[] matToBmpBuff(string fullpath, int height, int width)
|
||||
{
|
||||
Mat mat = Cv2.ImRead(fullpath);//Mat默认通道顺序是Bgr,和Bitmap一致
|
||||
var bytes = new byte[mat.Total() * 3];//这里必须乘以通道数,不然数组越界,也可以用w*h*c,差不多
|
||||
Marshal.Copy(mat.Data, bytes, 0, bytes.Length);
|
||||
|
||||
|
||||
return bytes;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
40782
halftoneproject-master/AssistClient/FrmLogin.resx
Normal file
40782
halftoneproject-master/AssistClient/FrmLogin.resx
Normal file
File diff suppressed because it is too large
Load Diff
1089
halftoneproject-master/AssistClient/FrmMain.Designer.cs
generated
Normal file
1089
halftoneproject-master/AssistClient/FrmMain.Designer.cs
generated
Normal file
File diff suppressed because it is too large
Load Diff
2173
halftoneproject-master/AssistClient/FrmMain.cs
Normal file
2173
halftoneproject-master/AssistClient/FrmMain.cs
Normal file
File diff suppressed because it is too large
Load Diff
610
halftoneproject-master/AssistClient/FrmMain.resx
Normal file
610
halftoneproject-master/AssistClient/FrmMain.resx
Normal file
@ -0,0 +1,610 @@
|
||||
<?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="menuStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>498, 17</value>
|
||||
</metadata>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="产品管理ToolStripMenuItem.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAL
|
||||
DAAACwwBP0AiyAAAAB90RVh0U29mdHdhcmUATWFjcm9tZWRpYSBGaXJld29ya3MgOLVo0ngAAAQ7SURB
|
||||
VFhH1ddrbBRVFMBxWlKMEEq7bU1IJGqCxlfoi4pRPxBNMCQmiom1QGqQYpVQtLNb5CndXYmGbxqJ0Q9q
|
||||
iMagW61VICEaArZbbRdol2Dw0QQ1AhbBR5QYlTL+z8zc6Z3hbndp/OKHHztz7jnnHmZ2Z9Iptm1ftpq+
|
||||
VClewFmMYoMprxDGYC5sVIKVOIILsD1/4mPcb6qbiDEYRuOpaMHXUJuKEZwKxWS4pTD2CjMGFWmCR/AF
|
||||
9E0+xeKadFcRn9OxGt9AzzmKZhSZeivGoKCwCVnoTdO4z5Rf3Zuaxtpj+NLLVY5hRW1vaqqp7pIAyUuQ
|
||||
8YqVQTwQzjWZ596uRyEb6z2OozmcHzghIakVXIQM8pCeU6iadKqYWrl9/fgbqm/gCgaL+lIntcRd+tpk
|
||||
0ecu6F/UZ/T1YHK6a4eWOAa59I16TqGoW4AeqH42/Y/XDXRfrecFikRt/3tr6wc/GKpNd40X9qUO4+Fw
|
||||
rgl5dejy6tTGJxqG9zS32HZxON8/qEhEF1bEreGyTW0HKrd1bK4+uMuqz/QMUqwPIr/xJr2BQnwe3vby
|
||||
1ManG4Z2r7557xtlM2OtjZG4lWGfLBapOuefSCJaRPAr2I64ZTNIpvLZjsdrP3u/lSsSHmQIy1GFauyE
|
||||
fGnV+rn5hz6MNQztmTWjveXeSKc17Pd2jcB5PrgDxKPTCIziAn6EPsh+BmmsH+hurhtgkPFNxPnQ+R9c
|
||||
tc6Fo5lZ09tW3B7pbO/1e7n8PWTP8ACy8VhF0rqRz1acwPggG9f0VG1bt2j+4Y+W1n3efSi8MV+u7ff8
|
||||
mo1c0br8lsjW9t1+res7PEHvm/gcQ84BbJKukxjHV6Id3ztx4QzS9lbVc0/fseDYvno2lkfwssVjI6XF
|
||||
y5bMiWx96k0/13USHZjh9Exa13rxCQe4XmKKFCOGH5x1EbcuckXWq5zyLU+uIS7/M7Wx9NqAmYFe9Fbr
|
||||
BQ+gSDOsh9xHtdGdkFumzn9BJ8qNPfIMcNpZzDGAQs5V+NbJTUSfh1wdOZbBrjHVKLkHSDgDnHIW8wwg
|
||||
yPvEa/QSEt7xEVOu7r8c4IDX6EXIJZfjrClXl2+Agm6BIO+g10gf4KgpV/e/GWCuXmRC3mQHmOvlXjJA
|
||||
CUH355W0ZutFJuRNdoDZXu4ZBiiRmLMQicekqbylZPFllOmFYaxf9gCsR/CKl5uVPSWuJzR5i0IeSpth
|
||||
HIR4wQMQL8cWnPHyhP9KDyevwk9aogyyCYFBOM87QEXCKiW2Ee4T1nUWq/Q8/0AhoRLyhPsdqjAwCJ/7
|
||||
vbg+wLC3Ju+OdXCfK67z2I4qfS8RONGRPAfypPsLqpH8UqLo984DVwBrMf72dF9QryLnI9oY1FF8A3ZC
|
||||
NdXtQDIUU97BraaeOmPQRJrhdfwG2eAfPIi7oa6SXOp3cZuph4kxOBGar8Q5+H83cPwafkZMz83PnvIv
|
||||
dCSkSnb4fUMAAAAASUVORK5CYII=
|
||||
</value>
|
||||
</data>
|
||||
<data name="流程管理ToolStripMenuItem.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAL
|
||||
DAAACwwBP0AiyAAAAB90RVh0U29mdHdhcmUATWFjcm9tZWRpYSBGaXJld29ya3MgOLVo0ngAAALhSURB
|
||||
VFhHxdZPbExRFMfxUiqItCT1t7FigU2FzFTYSZVUhIVEJBLKSkJjEhtLkViISBrKwp+FTSWdLmyIhmAh
|
||||
NCL1J6R9wxJh4W+FKON72vvGebfnzgxtWXyavHN/59w3rzPvvYp8Pv9fmcVS0tmoARfQ65yTmpUtxSwW
|
||||
w0b7kQ9otXqKMYshbLDB29Cy3uoNMYshDL/lbWa5bfWGmMUQhr/zNrO8R7XVbzGLPgYuxBn8hLWp9gWz
|
||||
rTkWs6gxrAUf3PByRKlsf6U1y2IWYww7pgafxwl1HHIoOSM3RR/7zKJgUJsbKJe9RdW7Xd1yrSGbm6Sy
|
||||
8/AQZ+OazyzSsBMy8DuakmvPK6kdwVuXEW9cbXIyG61x62K3XouNKHDJ5hAecE17/PVYQzaayfrqYbka
|
||||
KyNY3+5myZezzl9PHAhCx13DFX/tbzHrspt52l9LHPBJqgl9gvzf6/XaaDBrEQYxkMpGs/SaH9wKOdNH
|
||||
uj4WmHnDzd6m635oAXahWdfHAjMPQE6gXdcTofHExvKFlRO4ruuJ0Hhi48XuBJ7oeiIkVmSjCYTqkPiy
|
||||
jAaz5Ke9EXICvXrtd6grV8XiYfThK+TJJ3e9dbrhT9C7GXfwGT8gJ9DPr21GnBn6w02lhoW7LmDZFzeU
|
||||
i56D3gyN23P/0BWOw/J+ZwW15XqDYsiu9HotFyUr4bn4phZCgg8UH1l5clozNHnOzJdwoyoW02NtZiF7
|
||||
3+sNaZLwWq8Ycs/azEK2x+sNaZRwLeRJZQW0k9ZmFrKnvF6L7FkbN7SrBctguita5m8UQn4JSr0/tkk2
|
||||
bpiGq2rRchNlv/OT3aF6fd2prtxUyRUapvdF0pTBA8ir9Ut0QB5OzxA3y/pRbEE9lmIV9mJTPE+4eide
|
||||
4SOkN5PuiCbGmUJYIyRvO0Nn6I7lCsmN5QX0J/G9RuGdMNHfOXzj8Y0oFMMguV03Q96O5Tb9GE8ht9tL
|
||||
yKQ7oyqrN8Qs/jv5il/FGDMc7zmuYQAAAABJRU5ErkJggg==
|
||||
</value>
|
||||
</data>
|
||||
<data name="设备调试ToolStripMenuItem.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAL
|
||||
DAAACwwBP0AiyAAAAB90RVh0U29mdHdhcmUATWFjcm9tZWRpYSBGaXJld29ya3MgOLVo0ngAAAOPSURB
|
||||
VFhHrZfbbw1RFMY/IsQ1QfokRCQeCK2IJ14kpMKjoBqNVG/aulUl/AUkwl8hggce+AtcE2nRlgcPEkEo
|
||||
qu1pe9xK2+P7JrPHPjNreuY0PcnvzJ611/rW2mvO7JmDQqEwI06gvrIa1TWC482WTxZM43S041hVK5ru
|
||||
HEdzfyMa80Jj2Ti3xYqZDtOYRhsaaplsogUtBQvOTbah8bAVm4ZptGhHfVULms3EPiqCvpWWhoVptGCL
|
||||
71sJLeRraVhEg1YAd4FtncB830G0ob6CwpPxRNMwdQZ1q+I61F5wjzluM5ezRYOfwJXfPP0FdD0Gljm7
|
||||
2IPqDc1omGple4+jqSTsQKEdR7f7GtKU9jhzKJezRw55GXVKWEh3D7DUze3E1vmnsX/tOdSs7cShknSQ
|
||||
IzgYdVJa0nT6zHXVzQVf4iQw9wdwcyp0YqVd3cASNz9TpCEtaUqbOW7VMZebTwSoiMBM/gA9bNtlVj8j
|
||||
FCsNpxdoe7lE0YnD78RsEK48kVwkDKIBmDcBDMWFYoyTryEaWz4B0pKmlSthEE95KzJIwjxL5QlZGKKx
|
||||
5RMgLWlauRIG0UtRBg3EhWI8iGI0tn0CpCVNP4cjYRAZC3gUxWhs+wSUXQA/c9Q2X8SgnAK+StPP4Qi+
|
||||
BoGVHK4hqwV/sesZNBhMp1NOAYPS5DjQJ2sGgBVBAd+Ai5NAjsOJkL/hcYokxDwyF0Ck5WtPsKjcCHdE
|
||||
FfCQBiuoFOUUYMItuRfcqRbz4VBLw9mQjr/AeVY45hxTKOcSjEmT4w4S5FHOz8AieoQiMbh/v3MCKWQu
|
||||
gFrvfW0f0yhY8fO4UIzMBVDrha/tYxoFHybX40IxMhdArWu+to9pFKPAwRIPpEwFSIO/9v2+to9pFPqU
|
||||
2AsyFcD2v/F145hGwY3jEqd13/LMJGsH+nlM/b9gGvkicdq1n10YT7kU0xagGBfHY463XZWfw5Ew8Nof
|
||||
5s4YTLF9Ix+BjdwwzrEQ7WCBPeRhFBfbzOQ7xnudcWe8hQwPAYm/cEUndNjlEumYA3a4uS9AJTtzm0Xl
|
||||
w9W9dHMaq2jODXOlN7jBRIl4Kc97CxpijqI/LdFAL4/cFfVMCFrHFRzwHR2vgYphoJrsczaK7iW7+4Dl
|
||||
vq+DRVxwnWCOAb4lRy+7kRPfWBZxx+rjyvPfwX8XoX22YBGnqD3KAp69Yi5nL3J6C2zq13PBs80mn7i3
|
||||
fADW/bcV8A/Oeg45gZ9N8QAAAABJRU5ErkJggg==
|
||||
</value>
|
||||
</data>
|
||||
<data name="tsMenuPTSetting.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAABl0RVh0U29m
|
||||
dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAMhSURBVFhHxc5NSBRhGMDx91CEEARG0CG6egq6FEFd
|
||||
CoIi8OKh6BCEsChtRlFhhDVoLJHQBltofm7Luk6uH5l9qFFU9GUJRaeuQRAI3tMWnv7vTjPO7LzObgp2
|
||||
+PHuzDzv/h8lIv+V8eVaCjxcHZ5dqVrk8QPiY5oNNAMPpuEytmMG/qhWQCtMdwLNwINpOEIN5lAa1yyY
|
||||
7hT5m4GHK/lPldqIbxADC6Y7Hn8z8NAy9LFSzRADC6b5AH8z8HD5/kylvkNKWDDN+ukZUssscMn+UIka
|
||||
yDIsmO5o+ltxzt8MLNA8+L4SByERLJTe0e+8GX/T+ZHhrNDFgXdHIGVY0LOa/u3/9nxVC5zPvt0JqYD1
|
||||
V+n7/tUssPVLZn/VucybecgKHQ8vkOYsL4aFX+kq6Uy3y5n065WYx6bwAr2c0WIQV6F3vXT2XZfT/a/+
|
||||
VRxefGmBLs7lxSClFrs2yM2elJzqfVmpDJQWXqCD02Vjao+Srwn9HIN4po+KTNV5z4sdG+R2V0Iaul9E
|
||||
KeAalCu8QIrT5cZTxFN8dk0Sf0r8ca3IxCHv/e/UOrnT0Saxu8/9FvAOt1AD5RdeIMnp0vEk8SSfXE+I
|
||||
PyY+QXyc+NgBkZG93vdfySp9boGq73i2CfpcVniBds4lMYjnEfEJ4uPEx4iPEM8Tt3ctzbSrAraj+B8n
|
||||
70xHCi+Q4HTEIJ6HxB8QHyU+QnyIuE08R9w/l1BxeP9zIjUZKbxAK2erqod4HhAfJT5MPE/cJp4jniXu
|
||||
n2tVZ+D+R9Gx5KNI4QVa1D4UIEUjxIeJDxG3ieeIZ4nfI+7OOOLQ9wPqboxHCi9wSQ1AivLEh4jbxHPE
|
||||
s8QzxPuJuzOOOPTdkNrEaKTwAhfUZ0iRTTxHPEs8QzxNvJe4+90Rl7Eafc/ocFs+UniBs2oaUpQlniGe
|
||||
Jt5HvJu4+83hxIe36XtGB637kcILNKlmiKePeA/xLuL+902q0Yvbm/U9o/0tg5HCC5xS1ZiDRGiEni3P
|
||||
FyjH+dHA2aB24yekxAIa4c6VVxKJ4vyIcTqqcRmjmEU/dsA/U15JJIrx5Voyvlw7ov4AX/KIjpayQK0A
|
||||
AAAASUVORK5CYII=
|
||||
</value>
|
||||
</data>
|
||||
<data name="tsMenuCmdSetting.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAABl0RVh0U29m
|
||||
dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAMhSURBVFhHxc5NSBRhGMDx91CEEARG0CG6egq6FEFd
|
||||
CoIi8OKh6BCEsChtRlFhhDVoLJHQBltofm7Luk6uH5l9qFFU9GUJRaeuQRAI3tMWnv7vTjPO7LzObgp2
|
||||
+PHuzDzv/h8lIv+V8eVaCjxcHZ5dqVrk8QPiY5oNNAMPpuEytmMG/qhWQCtMdwLNwINpOEIN5lAa1yyY
|
||||
7hT5m4GHK/lPldqIbxADC6Y7Hn8z8NAy9LFSzRADC6b5AH8z8HD5/kylvkNKWDDN+ukZUssscMn+UIka
|
||||
yDIsmO5o+ltxzt8MLNA8+L4SByERLJTe0e+8GX/T+ZHhrNDFgXdHIGVY0LOa/u3/9nxVC5zPvt0JqYD1
|
||||
V+n7/tUssPVLZn/VucybecgKHQ8vkOYsL4aFX+kq6Uy3y5n065WYx6bwAr2c0WIQV6F3vXT2XZfT/a/+
|
||||
VRxefGmBLs7lxSClFrs2yM2elJzqfVmpDJQWXqCD02Vjao+Srwn9HIN4po+KTNV5z4sdG+R2V0Iaul9E
|
||||
KeAalCu8QIrT5cZTxFN8dk0Sf0r8ca3IxCHv/e/UOrnT0Saxu8/9FvAOt1AD5RdeIMnp0vEk8SSfXE+I
|
||||
PyY+QXyc+NgBkZG93vdfySp9boGq73i2CfpcVniBds4lMYjnEfEJ4uPEx4iPEM8Tt3ctzbSrAraj+B8n
|
||||
70xHCi+Q4HTEIJ6HxB8QHyU+QnyIuE08R9w/l1BxeP9zIjUZKbxAK2erqod4HhAfJT5MPE/cJp4jniXu
|
||||
n2tVZ+D+R9Gx5KNI4QVa1D4UIEUjxIeJDxG3ieeIZ4nfI+7OOOLQ9wPqboxHCi9wSQ1AivLEh4jbxHPE
|
||||
s8QzxPuJuzOOOPTdkNrEaKTwAhfUZ0iRTTxHPEs8QzxNvJe4+90Rl7Eafc/ocFs+UniBs2oaUpQlniGe
|
||||
Jt5HvJu4+83hxIe36XtGB637kcILNKlmiKePeA/xLuL+902q0Yvbm/U9o/0tg5HCC5xS1ZiDRGiEni3P
|
||||
FyjH+dHA2aB24yekxAIa4c6VVxKJ4vyIcTqqcRmjmEU/dsA/U15JJIrx5Voyvlw7ov4AX/KIjpayQK0A
|
||||
AAAASUVORK5CYII=
|
||||
</value>
|
||||
</data>
|
||||
<data name="tsMenuSysSetting.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAABl0RVh0U29m
|
||||
dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAMhSURBVFhHxc5NSBRhGMDx91CEEARG0CG6egq6FEFd
|
||||
CoIi8OKh6BCEsChtRlFhhDVoLJHQBltofm7Luk6uH5l9qFFU9GUJRaeuQRAI3tMWnv7vTjPO7LzObgp2
|
||||
+PHuzDzv/h8lIv+V8eVaCjxcHZ5dqVrk8QPiY5oNNAMPpuEytmMG/qhWQCtMdwLNwINpOEIN5lAa1yyY
|
||||
7hT5m4GHK/lPldqIbxADC6Y7Hn8z8NAy9LFSzRADC6b5AH8z8HD5/kylvkNKWDDN+ukZUssscMn+UIka
|
||||
yDIsmO5o+ltxzt8MLNA8+L4SByERLJTe0e+8GX/T+ZHhrNDFgXdHIGVY0LOa/u3/9nxVC5zPvt0JqYD1
|
||||
V+n7/tUssPVLZn/VucybecgKHQ8vkOYsL4aFX+kq6Uy3y5n065WYx6bwAr2c0WIQV6F3vXT2XZfT/a/+
|
||||
VRxefGmBLs7lxSClFrs2yM2elJzqfVmpDJQWXqCD02Vjao+Srwn9HIN4po+KTNV5z4sdG+R2V0Iaul9E
|
||||
KeAalCu8QIrT5cZTxFN8dk0Sf0r8ca3IxCHv/e/UOrnT0Saxu8/9FvAOt1AD5RdeIMnp0vEk8SSfXE+I
|
||||
PyY+QXyc+NgBkZG93vdfySp9boGq73i2CfpcVniBds4lMYjnEfEJ4uPEx4iPEM8Tt3ctzbSrAraj+B8n
|
||||
70xHCi+Q4HTEIJ6HxB8QHyU+QnyIuE08R9w/l1BxeP9zIjUZKbxAK2erqod4HhAfJT5MPE/cJp4jniXu
|
||||
n2tVZ+D+R9Gx5KNI4QVa1D4UIEUjxIeJDxG3ieeIZ4nfI+7OOOLQ9wPqboxHCi9wSQ1AivLEh4jbxHPE
|
||||
s8QzxPuJuzOOOPTdkNrEaKTwAhfUZ0iRTTxHPEs8QzxNvJe4+90Rl7Eafc/ocFs+UniBs2oaUpQlniGe
|
||||
Jt5HvJu4+83hxIe36XtGB637kcILNKlmiKePeA/xLuL+902q0Yvbm/U9o/0tg5HCC5xS1ZiDRGiEni3P
|
||||
FyjH+dHA2aB24yekxAIa4c6VVxKJ4vyIcTqqcRmjmEU/dsA/U15JJIrx5Voyvlw7ov4AX/KIjpayQK0A
|
||||
AAAASUVORK5CYII=
|
||||
</value>
|
||||
</data>
|
||||
<data name="帮助ToolStripMenuItem.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
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
|
||||
RU5ErkJggg==
|
||||
</value>
|
||||
</data>
|
||||
<data name="关于ToolStripMenuItem.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAABl0RVh0U29m
|
||||
dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAJkSURBVFhHxdXdb0txHAbw/msiEi5E4oIbESEiRJAF
|
||||
EaxLdkEiQRCLIt6p6ULU4nWGqbeZuwUTSSP2Zqxb161d33z9nsbzzTlnv/YXtHXxSZ6cfM/zpOdiC4nI
|
||||
f2V92EzWh8204EFb10DEiBtSJ+iKJJPJEAT3NJgjjttK6gHdvnHQ8Pugcvx4cES+pXNSKv/8J+hAF3ux
|
||||
4R0HDeHY27ghPYPDUiyX6wqd6MaGdxw0tN7oFxibnpNCqVxTYmhcfxWy7cYLneznHmnY19kvkC+WnDyf
|
||||
tMJ2E8R+7pGGvdffCOQKJadwl/mcHrabIPZzjzTsib4WyOaLTs8+jMp+8zkB2XYTxH7ukYbd114JzM4X
|
||||
GoL93CMNO6+8EMjkCg3Bfu6RhpbLCYF0Nl/Vrqsva7K9Q+znHmnYcfG5wNTcfFUtl0xJDbZ3iP3cIw3b
|
||||
zvcJpGZzTtsv9PnYboLYzz3SsPXcU4EfmZwTb//mHe6Rhi1nnwhMzGSdNp/p9bHdBLGfe6Rh0+leAfzZ
|
||||
dNl4qsfHdhPEfu6RBpYNpzJO6zse+thugtjPPdKwoeORwJfJGae1J+772G6C2M890rDu5AOB5Pe006rD
|
||||
d3xsN0Hs5x5pWHP8nsDniWmnFQdv+dhugtjPPdKw+ki3wKfxqaqWtsdqsr1D7OceaVh56LZAYmhEPo6l
|
||||
rBaHozXZ3gF0sp97pGH5gZtxQ47dfSfvRyfrCp3oxoZ3HDQsa49FDIGj3QPm//xXa9mfQAe62IsN7zho
|
||||
WNLWCRFDGgTdvnHQsKg1ShEjbkidoAudlX7vOCx40GzWh81kfdg8EvoF4WXl698aVB0AAAAASUVORK5C
|
||||
YII=
|
||||
</value>
|
||||
</data>
|
||||
<metadata name="toolStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>663, 17</value>
|
||||
</metadata>
|
||||
<data name="tsbtnOpenDev.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
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
|
||||
R/CAgH8BL2edNgDxz3QAAAAASUVORK5CYII=
|
||||
</value>
|
||||
</data>
|
||||
<data name="tsbtnCloseDev.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
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
|
||||
</value>
|
||||
</data>
|
||||
<data name="tsbtnWarning.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
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
|
||||
</value>
|
||||
</data>
|
||||
<data name="tsbtnStopNow.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
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
|
||||
</value>
|
||||
</data>
|
||||
<data name="tsbtnStart.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
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
|
||||
</value>
|
||||
</data>
|
||||
<data name="tsbtnPause1.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
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
|
||||
AElFTkSuQmCC
|
||||
</value>
|
||||
</data>
|
||||
<data name="tsbtnReset.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
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
|
||||
</value>
|
||||
</data>
|
||||
<data name="tsbtnLog.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAANJSURBVFhHxVdLaxNRGM1STaeC2kBJBUG7FMGVuhB/QJcF
|
||||
lUAzUXAhCC60Kxe2RailitharG2TsQuhgujGjdYnKoq2SS1VqhWftY/Qh6ZpHm38vOfmtkmTm8nNJNAD
|
||||
B4aZ7ztn5t7vfveOTRUVJ2+X2fWbhzWP77rd7XutebqnNJcR5WTXyXvsGYtBrEgrHuXHe3cx4S67p2Nh
|
||||
y6l75DjbT5XnXpLz/FuqahzkxDXu4RliEIsc5AoZC3D7NjCRZs3THqs484CcjQNU1eRXImKRg1xNNy5C
|
||||
S6iqobzO2Kl5DP+20/fJ2fBOaqJCZ8MAQQNayqOxWffu1eqMSXyBTNQK+WgwTWgLGzn4fLuMaUf9I6lQ
|
||||
MYQmtHOPRG3fRvaWgVJ+eSaTddEzBC/hmgKKBfMlSywleU2gMNPBi67GiKNoZEmlJDzgtWYqsGZVhv5Q
|
||||
x0e68nyCXnwN0VQoTpGlBCeucQ/PECPLTSefCt3o5uZbj3VraBxm63xf2wg9HvtDqkAscmRaILzgCW8b
|
||||
Wie6lywQrOkZpfnIspBWB3KQK9MEecdk3mz4jRuO+n5p0O7WYQouLAnJwoFcaMi04QlvGzYR9HFZUMuT
|
||||
30LKOqAh04YnvG2a2xfkG4skaHQ6ImSs41MwItWGJ7zZFLTH+K4mCYov/xMy1gENmTY84W36AnOLhRdf
|
||||
JhbjCal26gVMpmDwV1jIWEdgPCzVXp0CsyJsejguZKwDGjLtVBGaLMPq5iH6MhMVUoUDudCQaaeWYZ5G
|
||||
tJ91tO+zMSGpjh9zMTrQnrsbrjYipVZ8dUTI5keCLZy7w7O055K8AYHwKjtqhHkrBrAxmG1GrltjQj4J
|
||||
DO3k3zhF2UYE4vrVtxC1Pp2gg9c+SDXSuWYzAvhJKMd2vJ3Rzyp5BX2BGdpxIZAVp8qV7VjTvdXCPolc
|
||||
B5LLzybo53yM7ryfpdrez1nPCyU87LrRImzTgCMZOy6pnAuskg8986g80blJuK7F+h5KBdb1WL4CPhJs
|
||||
qDBfxZwTkcsPoUwr75dnAb9mrDBRsfgCsz6RScTyr+bVbuHXLB1YLji0onGge6n8nGqerkWs86ylVgz4
|
||||
77nbd4SJdtp17xsUFP9CkF3ze3jGYtR/z222/zJk9iRuSyapAAAAAElFTkSuQmCC
|
||||
</value>
|
||||
</data>
|
||||
<metadata name="colMainIndex.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<data name="btnRight.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAABl0RVh0U29m
|
||||
dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAH8SURBVFhHxddJSxxBGMbxjgYVCYggCIIHwUMOAQ8e
|
||||
PAQ8BDwIQhD8Bq7RuC9Ro7b7/j08uiSaaNzXuG8HkSCIIIggGhfcfawSZ1DfF7uqZdqRB4aB4fdva2hm
|
||||
DACvOvZFJ+d+0rqaYLSsxhstK5/N5pU4NC3HonE5Bo1Ln9CwGI36xY+oW4hC7XwkauYjUD33AVWz71E5
|
||||
Gw5zJgwV06Eonw5B2d9gfJ8KQulUIEomA1A88Q7F4/74Nu6HojFfs3DUxygYeUsD7nF4EIfAIXDkD3sz
|
||||
AZ698oc48oa8TBLgII5cMRLgJJ4z+IYGqOBzu23yjXePl+A5A1yAwpXfPPmzi2f3S/JJgMq//QZXZHbw
|
||||
rD9MgOqZX+OCTBfP7GMCdD5wVzgj08G/9jIBqrjrzC9xQqaKZ/xmAnRw15lf4IhMBU//xQTo4q4zP8cB
|
||||
mRX+pYcJsIO7zvwMe2TP4WndTIBdXJ75KXbJnsPTfjIBdvET7JBZ4ak/mAA7+DG2yVTwFC5AFz/CFpkq
|
||||
ntLFBOjgh9gk08GTO5kAVfw/Nsh08SQuQAU/wD8yO3hSBxNghcs73D7WH80untjOBFjh8vbav10l4LW7
|
||||
vQTnAyxwldurKs4GOImzAQKXPxocwcXo13KBy18sTuBybtf9ROCGwA2Bm568cjFDjgS81tgXnRuMWzLt
|
||||
L6pAGawbAAAAAElFTkSuQmCC
|
||||
</value>
|
||||
</data>
|
||||
<data name="btnLeft.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAL
|
||||
DAAACwwBP0AiyAAAAB90RVh0U29mdHdhcmUATWFjcm9tZWRpYSBGaXJld29ya3MgOLVo0ngAAAITSURB
|
||||
VFhHxdfPSxRhHMfxRw0LCSQQhMBD4KGD4KFDh6CD4CEIQug/0LT8UZpaauWoaa2t/4dH0/JHtbVl6ra6
|
||||
mz/2IBFBBIIIkj8Ss9KP3wmeZZ3v7M4zj+7o8oZlEV6f4RkHVwA41mw/9LL4m/IBITMoJFbxnBoUuEFV
|
||||
DlEvBKqomy+pYYFbIwLVowI1YwK1rwTqXgvcfiNwJyBQ/zYD9e8y0BDMxN1gptH4Pks0fTiRdMAB2OwI
|
||||
cRAOwtE8nm07IJ1Xnojj3seTht0Ar3DcnzhFZIoB6cZbJnKSD9DFf2Lxf4GlTke8ZfK0/QB9/MuBnPDW
|
||||
qVw+QBdfw1eWE94WOmMzQANfxzeWCv4glMcHuMU38J2lij/8lM8HuME38YPlBn8UPmszQBH/hSWWW7w9
|
||||
XMAHqOBbWGbp4Mb0OT7ACd/GCksX75gptBmQAjefcL+xytLFO2fO8wGpcPl43aG/cms6eFekiA9wwuXj
|
||||
9Q/d89bc4o+jxXyACi7P/C/dftbc4N3RC3yAKi7P/B/dBdZU8Z7PF/kAN7g88106AGsq+JPZS3yAW1ye
|
||||
+R5duzUn/OnsZT5AB5dnvmd5OeG+uRI+QBeXZy5/Iiv9jrhvvtT8VcuAQ+AqZ56I985f4QO8xJ8tXOUD
|
||||
CDe/NHiC+xeu8X/LCTe/sXiBwx8ri7vxN4QLwgXhRjqv3MT7Ytf5gOPK9kPvgtgHDysvqg6h7IMAAAAA
|
||||
SUVORK5CYII=
|
||||
</value>
|
||||
</data>
|
||||
<data name="btnBack.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAABl0RVh0U29m
|
||||
dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHmSURBVFhHxdfHSgNBHAbwtaAiggiCIHgQPHgQPHjw
|
||||
IHgQPAiCCL6BLfbey9pbfAGfwKO9d43G2MvFg+BFQQSxIBGR+DkrJujOP8nsIZOFD5bNLL9vsrvDrgLA
|
||||
ryEPyoxrZ/QyTzFf5irmixx15CIbw+dZGDrPxNBZBgZP0zFwmob+k1T0Haeg9zgZPUdJ6D5MRNdhAtSD
|
||||
eHTa4tBhi0X7fgzarNFotUahZS8SzbsRaLaEo8kShsadULVhO0Sp3wrmC/zi8CEOhoPhqNsMIgr4duZ/
|
||||
cdRuBKpcAYk4ali4AjLx6vUAvoBMvHqNKiARr1rVSF0BmXjlClFAJl6xTBSg8KOHcW3gz2YUd257d2Mc
|
||||
Xr5EFKBm/gXHv4ji+vP0eNkiUYD62x344OINp87R46ULRAF31/wTdi7ucGoshZfMEwU83XAfeOGix6kx
|
||||
7nDTHFHA293+jkcuTpz6zRNumiUKiDxqdtwLxRtePEMUEH3O33DrMSJ4EVVABHde81fckBHFi6aJAqK4
|
||||
ds21Fe4Z1/9iBC+cIgoYwZ3L6xOufmIUL6AKGMWp5VUUL5gkCsjE8yeIAjJxuoBEnCwgEycLMFz7aJCC
|
||||
s/Cv5QzXvlhk4FpcrmuH4QrDFYarvpw5i6KFK+CvkAflBco3dZcxI5gi9PAAAAAASUVORK5CYII=
|
||||
</value>
|
||||
</data>
|
||||
<data name="btnZDown.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAABl0RVh0U29m
|
||||
dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHmSURBVFhHxdfHSgNBHAbwtaAiggiCIHgQPHgQPHjw
|
||||
IHgQPAiCCL6BLfbey9pbfAGfwKO9d43G2MvFg+BFQQSxIBGR+DkrJujOP8nsIZOFD5bNLL9vsrvDrgLA
|
||||
ryEPyoxrZ/QyTzFf5irmixx15CIbw+dZGDrPxNBZBgZP0zFwmob+k1T0Haeg9zgZPUdJ6D5MRNdhAtSD
|
||||
eHTa4tBhi0X7fgzarNFotUahZS8SzbsRaLaEo8kShsadULVhO0Sp3wrmC/zi8CEOhoPhqNsMIgr4duZ/
|
||||
cdRuBKpcAYk4ali4AjLx6vUAvoBMvHqNKiARr1rVSF0BmXjlClFAJl6xTBSg8KOHcW3gz2YUd257d2Mc
|
||||
Xr5EFKBm/gXHv4ji+vP0eNkiUYD62x344OINp87R46ULRAF31/wTdi7ucGoshZfMEwU83XAfeOGix6kx
|
||||
7nDTHFHA293+jkcuTpz6zRNumiUKiDxqdtwLxRtePEMUEH3O33DrMSJ4EVVABHde81fckBHFi6aJAqK4
|
||||
ds21Fe4Z1/9iBC+cIgoYwZ3L6xOufmIUL6AKGMWp5VUUL5gkCsjE8yeIAjJxuoBEnCwgEycLMFz7aJCC
|
||||
s/Cv5QzXvlhk4FpcrmuH4QrDFYarvpw5i6KFK+CvkAflBco3dZcxI5gi9PAAAAAASUVORK5CYII=
|
||||
</value>
|
||||
</data>
|
||||
<metadata name="statusStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>332, 17</value>
|
||||
</metadata>
|
||||
</root>
|
630
halftoneproject-master/AssistClient/FrmPTSetting.Designer.cs
generated
Normal file
630
halftoneproject-master/AssistClient/FrmPTSetting.Designer.cs
generated
Normal file
@ -0,0 +1,630 @@
|
||||
namespace AssistClient
|
||||
{
|
||||
partial class FrmPTSetting
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FrmPTSetting));
|
||||
this.toolStrip1 = new System.Windows.Forms.ToolStrip();
|
||||
this.tsbtnSave = new System.Windows.Forms.ToolStripButton();
|
||||
this.toolStripSeparator4 = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.tsbtnClose = new System.Windows.Forms.ToolStripButton();
|
||||
this.groupBox8 = new System.Windows.Forms.GroupBox();
|
||||
this.panel8 = new System.Windows.Forms.Panel();
|
||||
this.numAxis3_InitPT = new System.Windows.Forms.NumericUpDown();
|
||||
this.numAxis1_InitPT = new System.Windows.Forms.NumericUpDown();
|
||||
this.numAxis2_InitPT = new System.Windows.Forms.NumericUpDown();
|
||||
this.numAxis0_InitPT = new System.Windows.Forms.NumericUpDown();
|
||||
this.label15 = new System.Windows.Forms.Label();
|
||||
this.label16 = new System.Windows.Forms.Label();
|
||||
this.label13 = new System.Windows.Forms.Label();
|
||||
this.label14 = new System.Windows.Forms.Label();
|
||||
this.groupBox1 = new System.Windows.Forms.GroupBox();
|
||||
this.panel1 = new System.Windows.Forms.Panel();
|
||||
this.numAxis3_UpPT = new System.Windows.Forms.NumericUpDown();
|
||||
this.numAxis1_UpPT = new System.Windows.Forms.NumericUpDown();
|
||||
this.numAxis2_UpPT = new System.Windows.Forms.NumericUpDown();
|
||||
this.numAxis0_UpPT = new System.Windows.Forms.NumericUpDown();
|
||||
this.label1 = new System.Windows.Forms.Label();
|
||||
this.label2 = new System.Windows.Forms.Label();
|
||||
this.label3 = new System.Windows.Forms.Label();
|
||||
this.label4 = new System.Windows.Forms.Label();
|
||||
this.groupBox2 = new System.Windows.Forms.GroupBox();
|
||||
this.panel2 = new System.Windows.Forms.Panel();
|
||||
this.numAxis3_DownPT = new System.Windows.Forms.NumericUpDown();
|
||||
this.numAxis1_DownPT = new System.Windows.Forms.NumericUpDown();
|
||||
this.numAxis2_DownPT = new System.Windows.Forms.NumericUpDown();
|
||||
this.numAxis0_DownPT = new System.Windows.Forms.NumericUpDown();
|
||||
this.label5 = new System.Windows.Forms.Label();
|
||||
this.label6 = new System.Windows.Forms.Label();
|
||||
this.label7 = new System.Windows.Forms.Label();
|
||||
this.label8 = new System.Windows.Forms.Label();
|
||||
this.toolStrip1.SuspendLayout();
|
||||
this.groupBox8.SuspendLayout();
|
||||
this.panel8.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.numAxis3_InitPT)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.numAxis1_InitPT)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.numAxis2_InitPT)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.numAxis0_InitPT)).BeginInit();
|
||||
this.groupBox1.SuspendLayout();
|
||||
this.panel1.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.numAxis3_UpPT)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.numAxis1_UpPT)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.numAxis2_UpPT)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.numAxis0_UpPT)).BeginInit();
|
||||
this.groupBox2.SuspendLayout();
|
||||
this.panel2.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.numAxis3_DownPT)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.numAxis1_DownPT)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.numAxis2_DownPT)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.numAxis0_DownPT)).BeginInit();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// toolStrip1
|
||||
//
|
||||
this.toolStrip1.BackColor = System.Drawing.SystemColors.GradientInactiveCaption;
|
||||
this.toolStrip1.ImageScalingSize = new System.Drawing.Size(32, 32);
|
||||
this.toolStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.tsbtnSave,
|
||||
this.toolStripSeparator4,
|
||||
this.tsbtnClose});
|
||||
this.toolStrip1.LayoutStyle = System.Windows.Forms.ToolStripLayoutStyle.HorizontalStackWithOverflow;
|
||||
this.toolStrip1.Location = new System.Drawing.Point(0, 0);
|
||||
this.toolStrip1.Name = "toolStrip1";
|
||||
this.toolStrip1.Padding = new System.Windows.Forms.Padding(0, 0, 3, 0);
|
||||
this.toolStrip1.Size = new System.Drawing.Size(632, 65);
|
||||
this.toolStrip1.TabIndex = 17;
|
||||
this.toolStrip1.Text = "toolStrip1";
|
||||
//
|
||||
// tsbtnSave
|
||||
//
|
||||
this.tsbtnSave.Image = ((System.Drawing.Image)(resources.GetObject("tsbtnSave.Image")));
|
||||
this.tsbtnSave.ImageScaling = System.Windows.Forms.ToolStripItemImageScaling.None;
|
||||
this.tsbtnSave.ImageTransparentColor = System.Drawing.Color.Magenta;
|
||||
this.tsbtnSave.Name = "tsbtnSave";
|
||||
this.tsbtnSave.Size = new System.Drawing.Size(70, 60);
|
||||
this.tsbtnSave.Text = " 保存 ";
|
||||
this.tsbtnSave.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageAboveText;
|
||||
this.tsbtnSave.Click += new System.EventHandler(this.tsbtnSave_Click);
|
||||
//
|
||||
// toolStripSeparator4
|
||||
//
|
||||
this.toolStripSeparator4.Name = "toolStripSeparator4";
|
||||
this.toolStripSeparator4.Size = new System.Drawing.Size(6, 65);
|
||||
//
|
||||
// tsbtnClose
|
||||
//
|
||||
this.tsbtnClose.Image = ((System.Drawing.Image)(resources.GetObject("tsbtnClose.Image")));
|
||||
this.tsbtnClose.ImageScaling = System.Windows.Forms.ToolStripItemImageScaling.None;
|
||||
this.tsbtnClose.ImageTransparentColor = System.Drawing.Color.Magenta;
|
||||
this.tsbtnClose.Name = "tsbtnClose";
|
||||
this.tsbtnClose.Size = new System.Drawing.Size(70, 60);
|
||||
this.tsbtnClose.Text = " 关闭 ";
|
||||
this.tsbtnClose.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageAboveText;
|
||||
this.tsbtnClose.Click += new System.EventHandler(this.tsbtnClose_Click);
|
||||
//
|
||||
// groupBox8
|
||||
//
|
||||
this.groupBox8.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.groupBox8.BackColor = System.Drawing.SystemColors.ActiveCaption;
|
||||
this.groupBox8.Controls.Add(this.panel8);
|
||||
this.groupBox8.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||
this.groupBox8.Location = new System.Drawing.Point(4, 98);
|
||||
this.groupBox8.Name = "groupBox8";
|
||||
this.groupBox8.Size = new System.Drawing.Size(626, 112);
|
||||
this.groupBox8.TabIndex = 30;
|
||||
this.groupBox8.TabStop = false;
|
||||
this.groupBox8.Text = "初始绝对位置(mm)";
|
||||
//
|
||||
// panel8
|
||||
//
|
||||
this.panel8.BackColor = System.Drawing.Color.White;
|
||||
this.panel8.Controls.Add(this.numAxis3_InitPT);
|
||||
this.panel8.Controls.Add(this.numAxis1_InitPT);
|
||||
this.panel8.Controls.Add(this.numAxis2_InitPT);
|
||||
this.panel8.Controls.Add(this.numAxis0_InitPT);
|
||||
this.panel8.Controls.Add(this.label15);
|
||||
this.panel8.Controls.Add(this.label16);
|
||||
this.panel8.Controls.Add(this.label13);
|
||||
this.panel8.Controls.Add(this.label14);
|
||||
this.panel8.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.panel8.Location = new System.Drawing.Point(3, 24);
|
||||
this.panel8.Name = "panel8";
|
||||
this.panel8.Size = new System.Drawing.Size(620, 85);
|
||||
this.panel8.TabIndex = 0;
|
||||
//
|
||||
// numAxis3_InitPT
|
||||
//
|
||||
this.numAxis3_InitPT.DecimalPlaces = 2;
|
||||
this.numAxis3_InitPT.Location = new System.Drawing.Point(430, 46);
|
||||
this.numAxis3_InitPT.Maximum = new decimal(new int[] {
|
||||
9999,
|
||||
0,
|
||||
0,
|
||||
0});
|
||||
this.numAxis3_InitPT.Minimum = new decimal(new int[] {
|
||||
9999,
|
||||
0,
|
||||
0,
|
||||
-2147483648});
|
||||
this.numAxis3_InitPT.Name = "numAxis3_InitPT";
|
||||
this.numAxis3_InitPT.Size = new System.Drawing.Size(178, 28);
|
||||
this.numAxis3_InitPT.TabIndex = 16;
|
||||
//
|
||||
// numAxis1_InitPT
|
||||
//
|
||||
this.numAxis1_InitPT.DecimalPlaces = 2;
|
||||
this.numAxis1_InitPT.Location = new System.Drawing.Point(430, 10);
|
||||
this.numAxis1_InitPT.Maximum = new decimal(new int[] {
|
||||
9999,
|
||||
0,
|
||||
0,
|
||||
0});
|
||||
this.numAxis1_InitPT.Minimum = new decimal(new int[] {
|
||||
9999,
|
||||
0,
|
||||
0,
|
||||
-2147483648});
|
||||
this.numAxis1_InitPT.Name = "numAxis1_InitPT";
|
||||
this.numAxis1_InitPT.Size = new System.Drawing.Size(178, 28);
|
||||
this.numAxis1_InitPT.TabIndex = 15;
|
||||
//
|
||||
// numAxis2_InitPT
|
||||
//
|
||||
this.numAxis2_InitPT.DecimalPlaces = 2;
|
||||
this.numAxis2_InitPT.Location = new System.Drawing.Point(92, 46);
|
||||
this.numAxis2_InitPT.Maximum = new decimal(new int[] {
|
||||
9999,
|
||||
0,
|
||||
0,
|
||||
0});
|
||||
this.numAxis2_InitPT.Minimum = new decimal(new int[] {
|
||||
9999,
|
||||
0,
|
||||
0,
|
||||
-2147483648});
|
||||
this.numAxis2_InitPT.Name = "numAxis2_InitPT";
|
||||
this.numAxis2_InitPT.Size = new System.Drawing.Size(178, 28);
|
||||
this.numAxis2_InitPT.TabIndex = 14;
|
||||
//
|
||||
// numAxis0_InitPT
|
||||
//
|
||||
this.numAxis0_InitPT.DecimalPlaces = 2;
|
||||
this.numAxis0_InitPT.Location = new System.Drawing.Point(92, 10);
|
||||
this.numAxis0_InitPT.Maximum = new decimal(new int[] {
|
||||
9999,
|
||||
0,
|
||||
0,
|
||||
0});
|
||||
this.numAxis0_InitPT.Minimum = new decimal(new int[] {
|
||||
9999,
|
||||
0,
|
||||
0,
|
||||
-2147483648});
|
||||
this.numAxis0_InitPT.Name = "numAxis0_InitPT";
|
||||
this.numAxis0_InitPT.Size = new System.Drawing.Size(178, 28);
|
||||
this.numAxis0_InitPT.TabIndex = 13;
|
||||
//
|
||||
// label15
|
||||
//
|
||||
this.label15.AutoSize = true;
|
||||
this.label15.Location = new System.Drawing.Point(356, 52);
|
||||
this.label15.Name = "label15";
|
||||
this.label15.Size = new System.Drawing.Size(80, 18);
|
||||
this.label15.TabIndex = 12;
|
||||
this.label15.Text = "Axis-3:";
|
||||
//
|
||||
// label16
|
||||
//
|
||||
this.label16.AutoSize = true;
|
||||
this.label16.Location = new System.Drawing.Point(15, 52);
|
||||
this.label16.Name = "label16";
|
||||
this.label16.Size = new System.Drawing.Size(80, 18);
|
||||
this.label16.TabIndex = 10;
|
||||
this.label16.Text = "Axis-2:";
|
||||
//
|
||||
// label13
|
||||
//
|
||||
this.label13.AutoSize = true;
|
||||
this.label13.Location = new System.Drawing.Point(356, 14);
|
||||
this.label13.Name = "label13";
|
||||
this.label13.Size = new System.Drawing.Size(80, 18);
|
||||
this.label13.TabIndex = 8;
|
||||
this.label13.Text = "Axis-1:";
|
||||
//
|
||||
// label14
|
||||
//
|
||||
this.label14.AutoSize = true;
|
||||
this.label14.Location = new System.Drawing.Point(15, 14);
|
||||
this.label14.Name = "label14";
|
||||
this.label14.Size = new System.Drawing.Size(80, 18);
|
||||
this.label14.TabIndex = 6;
|
||||
this.label14.Text = "Axis-0:";
|
||||
//
|
||||
// groupBox1
|
||||
//
|
||||
this.groupBox1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.groupBox1.BackColor = System.Drawing.SystemColors.ActiveCaption;
|
||||
this.groupBox1.Controls.Add(this.panel1);
|
||||
this.groupBox1.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||
this.groupBox1.Location = new System.Drawing.Point(2, 216);
|
||||
this.groupBox1.Name = "groupBox1";
|
||||
this.groupBox1.Size = new System.Drawing.Size(626, 112);
|
||||
this.groupBox1.TabIndex = 31;
|
||||
this.groupBox1.TabStop = false;
|
||||
this.groupBox1.Text = "上料绝对位置(mm)";
|
||||
//
|
||||
// panel1
|
||||
//
|
||||
this.panel1.BackColor = System.Drawing.Color.White;
|
||||
this.panel1.Controls.Add(this.numAxis3_UpPT);
|
||||
this.panel1.Controls.Add(this.numAxis1_UpPT);
|
||||
this.panel1.Controls.Add(this.numAxis2_UpPT);
|
||||
this.panel1.Controls.Add(this.numAxis0_UpPT);
|
||||
this.panel1.Controls.Add(this.label1);
|
||||
this.panel1.Controls.Add(this.label2);
|
||||
this.panel1.Controls.Add(this.label3);
|
||||
this.panel1.Controls.Add(this.label4);
|
||||
this.panel1.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.panel1.Location = new System.Drawing.Point(3, 24);
|
||||
this.panel1.Name = "panel1";
|
||||
this.panel1.Size = new System.Drawing.Size(620, 85);
|
||||
this.panel1.TabIndex = 0;
|
||||
//
|
||||
// numAxis3_UpPT
|
||||
//
|
||||
this.numAxis3_UpPT.DecimalPlaces = 2;
|
||||
this.numAxis3_UpPT.Location = new System.Drawing.Point(430, 46);
|
||||
this.numAxis3_UpPT.Maximum = new decimal(new int[] {
|
||||
9999,
|
||||
0,
|
||||
0,
|
||||
0});
|
||||
this.numAxis3_UpPT.Minimum = new decimal(new int[] {
|
||||
9999,
|
||||
0,
|
||||
0,
|
||||
-2147483648});
|
||||
this.numAxis3_UpPT.Name = "numAxis3_UpPT";
|
||||
this.numAxis3_UpPT.Size = new System.Drawing.Size(178, 28);
|
||||
this.numAxis3_UpPT.TabIndex = 16;
|
||||
//
|
||||
// numAxis1_UpPT
|
||||
//
|
||||
this.numAxis1_UpPT.DecimalPlaces = 2;
|
||||
this.numAxis1_UpPT.Location = new System.Drawing.Point(430, 10);
|
||||
this.numAxis1_UpPT.Maximum = new decimal(new int[] {
|
||||
9999,
|
||||
0,
|
||||
0,
|
||||
0});
|
||||
this.numAxis1_UpPT.Minimum = new decimal(new int[] {
|
||||
9999,
|
||||
0,
|
||||
0,
|
||||
-2147483648});
|
||||
this.numAxis1_UpPT.Name = "numAxis1_UpPT";
|
||||
this.numAxis1_UpPT.Size = new System.Drawing.Size(178, 28);
|
||||
this.numAxis1_UpPT.TabIndex = 15;
|
||||
//
|
||||
// numAxis2_UpPT
|
||||
//
|
||||
this.numAxis2_UpPT.DecimalPlaces = 2;
|
||||
this.numAxis2_UpPT.Location = new System.Drawing.Point(92, 46);
|
||||
this.numAxis2_UpPT.Maximum = new decimal(new int[] {
|
||||
9999,
|
||||
0,
|
||||
0,
|
||||
0});
|
||||
this.numAxis2_UpPT.Minimum = new decimal(new int[] {
|
||||
9999,
|
||||
0,
|
||||
0,
|
||||
-2147483648});
|
||||
this.numAxis2_UpPT.Name = "numAxis2_UpPT";
|
||||
this.numAxis2_UpPT.Size = new System.Drawing.Size(178, 28);
|
||||
this.numAxis2_UpPT.TabIndex = 14;
|
||||
//
|
||||
// numAxis0_UpPT
|
||||
//
|
||||
this.numAxis0_UpPT.DecimalPlaces = 2;
|
||||
this.numAxis0_UpPT.Location = new System.Drawing.Point(92, 10);
|
||||
this.numAxis0_UpPT.Maximum = new decimal(new int[] {
|
||||
9999,
|
||||
0,
|
||||
0,
|
||||
0});
|
||||
this.numAxis0_UpPT.Minimum = new decimal(new int[] {
|
||||
9999,
|
||||
0,
|
||||
0,
|
||||
-2147483648});
|
||||
this.numAxis0_UpPT.Name = "numAxis0_UpPT";
|
||||
this.numAxis0_UpPT.Size = new System.Drawing.Size(178, 28);
|
||||
this.numAxis0_UpPT.TabIndex = 13;
|
||||
//
|
||||
// label1
|
||||
//
|
||||
this.label1.AutoSize = true;
|
||||
this.label1.Location = new System.Drawing.Point(356, 52);
|
||||
this.label1.Name = "label1";
|
||||
this.label1.Size = new System.Drawing.Size(80, 18);
|
||||
this.label1.TabIndex = 12;
|
||||
this.label1.Text = "Axis-3:";
|
||||
//
|
||||
// label2
|
||||
//
|
||||
this.label2.AutoSize = true;
|
||||
this.label2.Location = new System.Drawing.Point(15, 52);
|
||||
this.label2.Name = "label2";
|
||||
this.label2.Size = new System.Drawing.Size(80, 18);
|
||||
this.label2.TabIndex = 10;
|
||||
this.label2.Text = "Axis-2:";
|
||||
//
|
||||
// label3
|
||||
//
|
||||
this.label3.AutoSize = true;
|
||||
this.label3.Location = new System.Drawing.Point(356, 14);
|
||||
this.label3.Name = "label3";
|
||||
this.label3.Size = new System.Drawing.Size(80, 18);
|
||||
this.label3.TabIndex = 8;
|
||||
this.label3.Text = "Axis-1:";
|
||||
//
|
||||
// label4
|
||||
//
|
||||
this.label4.AutoSize = true;
|
||||
this.label4.Location = new System.Drawing.Point(15, 14);
|
||||
this.label4.Name = "label4";
|
||||
this.label4.Size = new System.Drawing.Size(80, 18);
|
||||
this.label4.TabIndex = 6;
|
||||
this.label4.Text = "Axis-0:";
|
||||
//
|
||||
// groupBox2
|
||||
//
|
||||
this.groupBox2.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.groupBox2.BackColor = System.Drawing.SystemColors.ActiveCaption;
|
||||
this.groupBox2.Controls.Add(this.panel2);
|
||||
this.groupBox2.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||
this.groupBox2.Location = new System.Drawing.Point(4, 334);
|
||||
this.groupBox2.Name = "groupBox2";
|
||||
this.groupBox2.Size = new System.Drawing.Size(626, 112);
|
||||
this.groupBox2.TabIndex = 31;
|
||||
this.groupBox2.TabStop = false;
|
||||
this.groupBox2.Text = "下料绝对位置(mm)";
|
||||
//
|
||||
// panel2
|
||||
//
|
||||
this.panel2.BackColor = System.Drawing.Color.White;
|
||||
this.panel2.Controls.Add(this.numAxis3_DownPT);
|
||||
this.panel2.Controls.Add(this.numAxis1_DownPT);
|
||||
this.panel2.Controls.Add(this.numAxis2_DownPT);
|
||||
this.panel2.Controls.Add(this.numAxis0_DownPT);
|
||||
this.panel2.Controls.Add(this.label5);
|
||||
this.panel2.Controls.Add(this.label6);
|
||||
this.panel2.Controls.Add(this.label7);
|
||||
this.panel2.Controls.Add(this.label8);
|
||||
this.panel2.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.panel2.Location = new System.Drawing.Point(3, 24);
|
||||
this.panel2.Name = "panel2";
|
||||
this.panel2.Size = new System.Drawing.Size(620, 85);
|
||||
this.panel2.TabIndex = 0;
|
||||
//
|
||||
// numAxis3_DownPT
|
||||
//
|
||||
this.numAxis3_DownPT.DecimalPlaces = 2;
|
||||
this.numAxis3_DownPT.Location = new System.Drawing.Point(430, 46);
|
||||
this.numAxis3_DownPT.Maximum = new decimal(new int[] {
|
||||
9999,
|
||||
0,
|
||||
0,
|
||||
0});
|
||||
this.numAxis3_DownPT.Minimum = new decimal(new int[] {
|
||||
9999,
|
||||
0,
|
||||
0,
|
||||
-2147483648});
|
||||
this.numAxis3_DownPT.Name = "numAxis3_DownPT";
|
||||
this.numAxis3_DownPT.Size = new System.Drawing.Size(178, 28);
|
||||
this.numAxis3_DownPT.TabIndex = 16;
|
||||
//
|
||||
// numAxis1_DownPT
|
||||
//
|
||||
this.numAxis1_DownPT.DecimalPlaces = 2;
|
||||
this.numAxis1_DownPT.Location = new System.Drawing.Point(430, 10);
|
||||
this.numAxis1_DownPT.Maximum = new decimal(new int[] {
|
||||
9999,
|
||||
0,
|
||||
0,
|
||||
0});
|
||||
this.numAxis1_DownPT.Minimum = new decimal(new int[] {
|
||||
9999,
|
||||
0,
|
||||
0,
|
||||
-2147483648});
|
||||
this.numAxis1_DownPT.Name = "numAxis1_DownPT";
|
||||
this.numAxis1_DownPT.Size = new System.Drawing.Size(178, 28);
|
||||
this.numAxis1_DownPT.TabIndex = 15;
|
||||
//
|
||||
// numAxis2_DownPT
|
||||
//
|
||||
this.numAxis2_DownPT.DecimalPlaces = 2;
|
||||
this.numAxis2_DownPT.Location = new System.Drawing.Point(92, 46);
|
||||
this.numAxis2_DownPT.Maximum = new decimal(new int[] {
|
||||
9999,
|
||||
0,
|
||||
0,
|
||||
0});
|
||||
this.numAxis2_DownPT.Minimum = new decimal(new int[] {
|
||||
9999,
|
||||
0,
|
||||
0,
|
||||
-2147483648});
|
||||
this.numAxis2_DownPT.Name = "numAxis2_DownPT";
|
||||
this.numAxis2_DownPT.Size = new System.Drawing.Size(178, 28);
|
||||
this.numAxis2_DownPT.TabIndex = 14;
|
||||
//
|
||||
// numAxis0_DownPT
|
||||
//
|
||||
this.numAxis0_DownPT.DecimalPlaces = 2;
|
||||
this.numAxis0_DownPT.Location = new System.Drawing.Point(92, 10);
|
||||
this.numAxis0_DownPT.Maximum = new decimal(new int[] {
|
||||
9999,
|
||||
0,
|
||||
0,
|
||||
0});
|
||||
this.numAxis0_DownPT.Minimum = new decimal(new int[] {
|
||||
9999,
|
||||
0,
|
||||
0,
|
||||
-2147483648});
|
||||
this.numAxis0_DownPT.Name = "numAxis0_DownPT";
|
||||
this.numAxis0_DownPT.Size = new System.Drawing.Size(178, 28);
|
||||
this.numAxis0_DownPT.TabIndex = 13;
|
||||
//
|
||||
// label5
|
||||
//
|
||||
this.label5.AutoSize = true;
|
||||
this.label5.Location = new System.Drawing.Point(356, 52);
|
||||
this.label5.Name = "label5";
|
||||
this.label5.Size = new System.Drawing.Size(80, 18);
|
||||
this.label5.TabIndex = 12;
|
||||
this.label5.Text = "Axis-3:";
|
||||
//
|
||||
// label6
|
||||
//
|
||||
this.label6.AutoSize = true;
|
||||
this.label6.Location = new System.Drawing.Point(15, 52);
|
||||
this.label6.Name = "label6";
|
||||
this.label6.Size = new System.Drawing.Size(80, 18);
|
||||
this.label6.TabIndex = 10;
|
||||
this.label6.Text = "Axis-2:";
|
||||
//
|
||||
// label7
|
||||
//
|
||||
this.label7.AutoSize = true;
|
||||
this.label7.Location = new System.Drawing.Point(356, 14);
|
||||
this.label7.Name = "label7";
|
||||
this.label7.Size = new System.Drawing.Size(80, 18);
|
||||
this.label7.TabIndex = 8;
|
||||
this.label7.Text = "Axis-1:";
|
||||
//
|
||||
// label8
|
||||
//
|
||||
this.label8.AutoSize = true;
|
||||
this.label8.Location = new System.Drawing.Point(15, 14);
|
||||
this.label8.Name = "label8";
|
||||
this.label8.Size = new System.Drawing.Size(80, 18);
|
||||
this.label8.TabIndex = 6;
|
||||
this.label8.Text = "Axis-0:";
|
||||
//
|
||||
// FrmPTSetting
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(9F, 18F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.BackColor = System.Drawing.SystemColors.ActiveCaption;
|
||||
this.ClientSize = new System.Drawing.Size(632, 453);
|
||||
this.Controls.Add(this.groupBox2);
|
||||
this.Controls.Add(this.groupBox1);
|
||||
this.Controls.Add(this.groupBox8);
|
||||
this.Controls.Add(this.toolStrip1);
|
||||
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
|
||||
this.MaximizeBox = false;
|
||||
this.MinimizeBox = false;
|
||||
this.Name = "FrmPTSetting";
|
||||
this.ShowIcon = false;
|
||||
this.ShowInTaskbar = false;
|
||||
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
|
||||
this.Text = "点位设置";
|
||||
this.Load += new System.EventHandler(this.FrmSetParams_Load);
|
||||
this.toolStrip1.ResumeLayout(false);
|
||||
this.toolStrip1.PerformLayout();
|
||||
this.groupBox8.ResumeLayout(false);
|
||||
this.panel8.ResumeLayout(false);
|
||||
this.panel8.PerformLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.numAxis3_InitPT)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.numAxis1_InitPT)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.numAxis2_InitPT)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.numAxis0_InitPT)).EndInit();
|
||||
this.groupBox1.ResumeLayout(false);
|
||||
this.panel1.ResumeLayout(false);
|
||||
this.panel1.PerformLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.numAxis3_UpPT)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.numAxis1_UpPT)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.numAxis2_UpPT)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.numAxis0_UpPT)).EndInit();
|
||||
this.groupBox2.ResumeLayout(false);
|
||||
this.panel2.ResumeLayout(false);
|
||||
this.panel2.PerformLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.numAxis3_DownPT)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.numAxis1_DownPT)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.numAxis2_DownPT)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.numAxis0_DownPT)).EndInit();
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
private System.Windows.Forms.ToolStrip toolStrip1;
|
||||
private System.Windows.Forms.ToolStripSeparator toolStripSeparator4;
|
||||
private System.Windows.Forms.ToolStripButton tsbtnClose;
|
||||
private System.Windows.Forms.ToolStripButton tsbtnSave;
|
||||
private System.Windows.Forms.GroupBox groupBox8;
|
||||
private System.Windows.Forms.Panel panel8;
|
||||
private System.Windows.Forms.NumericUpDown numAxis3_InitPT;
|
||||
private System.Windows.Forms.NumericUpDown numAxis1_InitPT;
|
||||
private System.Windows.Forms.NumericUpDown numAxis2_InitPT;
|
||||
private System.Windows.Forms.NumericUpDown numAxis0_InitPT;
|
||||
private System.Windows.Forms.Label label15;
|
||||
private System.Windows.Forms.Label label16;
|
||||
private System.Windows.Forms.Label label13;
|
||||
private System.Windows.Forms.Label label14;
|
||||
private System.Windows.Forms.GroupBox groupBox1;
|
||||
private System.Windows.Forms.Panel panel1;
|
||||
private System.Windows.Forms.NumericUpDown numAxis3_UpPT;
|
||||
private System.Windows.Forms.NumericUpDown numAxis1_UpPT;
|
||||
private System.Windows.Forms.NumericUpDown numAxis2_UpPT;
|
||||
private System.Windows.Forms.NumericUpDown numAxis0_UpPT;
|
||||
private System.Windows.Forms.Label label1;
|
||||
private System.Windows.Forms.Label label2;
|
||||
private System.Windows.Forms.Label label3;
|
||||
private System.Windows.Forms.Label label4;
|
||||
private System.Windows.Forms.GroupBox groupBox2;
|
||||
private System.Windows.Forms.Panel panel2;
|
||||
private System.Windows.Forms.NumericUpDown numAxis3_DownPT;
|
||||
private System.Windows.Forms.NumericUpDown numAxis1_DownPT;
|
||||
private System.Windows.Forms.NumericUpDown numAxis2_DownPT;
|
||||
private System.Windows.Forms.NumericUpDown numAxis0_DownPT;
|
||||
private System.Windows.Forms.Label label5;
|
||||
private System.Windows.Forms.Label label6;
|
||||
private System.Windows.Forms.Label label7;
|
||||
private System.Windows.Forms.Label label8;
|
||||
}
|
||||
}
|
112
halftoneproject-master/AssistClient/FrmPTSetting.cs
Normal file
112
halftoneproject-master/AssistClient/FrmPTSetting.cs
Normal file
@ -0,0 +1,112 @@
|
||||
using Newtonsoft.Json.Linq;
|
||||
using AssistClient.Utils;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace AssistClient
|
||||
{
|
||||
public partial class FrmPTSetting : Form
|
||||
{
|
||||
public FrmPTSetting()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
private void initData()
|
||||
{
|
||||
string configPath = Application.StartupPath + "\\PTConfig.json";
|
||||
string lsTmp = File.ReadAllText(configPath);
|
||||
JObject joJson = JObject.Parse(lsTmp);
|
||||
JArray arrItem;
|
||||
if (joJson.ContainsKey("initPT"))
|
||||
{
|
||||
arrItem = joJson.Value<JArray>("initPT");
|
||||
this.numAxis0_InitPT.Value= (decimal)arrItem[0];
|
||||
this.numAxis1_InitPT.Value = (decimal)arrItem[1];
|
||||
this.numAxis2_InitPT.Value = (decimal)arrItem[2];
|
||||
this.numAxis3_InitPT.Value = (decimal)arrItem[3];
|
||||
}
|
||||
if (joJson.ContainsKey("upPT"))
|
||||
{
|
||||
arrItem = joJson.Value<JArray>("upPT");
|
||||
this.numAxis0_UpPT.Value = (decimal)arrItem[0];
|
||||
this.numAxis1_UpPT.Value = (decimal)arrItem[1];
|
||||
this.numAxis2_UpPT.Value = (decimal)arrItem[2];
|
||||
this.numAxis3_UpPT.Value = (decimal)arrItem[3];
|
||||
}
|
||||
if (joJson.ContainsKey("downPT"))
|
||||
{
|
||||
arrItem = joJson.Value<JArray>("downPT");
|
||||
this.numAxis0_DownPT.Value = (decimal)arrItem[0];
|
||||
this.numAxis1_DownPT.Value = (decimal)arrItem[1];
|
||||
this.numAxis2_DownPT.Value = (decimal)arrItem[2];
|
||||
this.numAxis3_DownPT.Value = (decimal)arrItem[3];
|
||||
}
|
||||
}
|
||||
private void FrmSetParams_Load(object sender, EventArgs e)
|
||||
{
|
||||
try
|
||||
{
|
||||
initData();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MessageBox.Show(ex.Message, "失败", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
this.Close();
|
||||
}
|
||||
}
|
||||
|
||||
private void tsbtnSave_Click(object sender, EventArgs e)
|
||||
{
|
||||
try
|
||||
{
|
||||
string configPath = Application.StartupPath + "\\PTConfig.json";
|
||||
|
||||
JObject joJson = new JObject();
|
||||
decimal axis0Value, axis1Value, axis2Value, axis3Value;
|
||||
axis0Value = (decimal)this.numAxis0_InitPT.Value;
|
||||
axis1Value = (decimal)this.numAxis1_InitPT.Value;
|
||||
axis2Value = (decimal)this.numAxis2_InitPT.Value;
|
||||
axis3Value = (decimal)this.numAxis3_InitPT.Value;
|
||||
joJson.Add("initPT", new JArray(axis0Value, axis1Value, axis2Value, axis3Value));
|
||||
|
||||
axis0Value = (decimal)this.numAxis0_UpPT.Value;
|
||||
axis1Value = (decimal)this.numAxis1_UpPT.Value;
|
||||
axis2Value = (decimal)this.numAxis2_UpPT.Value;
|
||||
axis3Value = (decimal)this.numAxis3_UpPT.Value;
|
||||
joJson.Add("upPT", new JArray(axis0Value, axis1Value, axis2Value, axis3Value));
|
||||
|
||||
axis0Value = (decimal)this.numAxis0_DownPT.Value;
|
||||
axis1Value = (decimal)this.numAxis1_DownPT.Value;
|
||||
axis2Value = (decimal)this.numAxis2_DownPT.Value;
|
||||
axis3Value = (decimal)this.numAxis3_DownPT.Value;
|
||||
joJson.Add("downPT", new JArray(axis0Value, axis1Value, axis2Value, axis3Value));
|
||||
|
||||
File.WriteAllText(configPath, joJson.ToString());
|
||||
|
||||
//
|
||||
this.Hide();
|
||||
MessageBox.Show("保存成功,生效需重启程序!");
|
||||
this.Close();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MessageBox.Show(ex.Message, "失败", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
}
|
||||
}
|
||||
|
||||
private void tsbtnClose_Click(object sender, EventArgs e)
|
||||
{
|
||||
this.Close();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
155
halftoneproject-master/AssistClient/FrmPTSetting.resx
Normal file
155
halftoneproject-master/AssistClient/FrmPTSetting.resx
Normal file
@ -0,0 +1,155 @@
|
||||
<?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="toolStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>17, 17</value>
|
||||
</metadata>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="tsbtnSave.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAIdSURBVFhH7ZdPaxNBGMbfIJQKlkK/QFHRi+BNS4t/LmLS
|
||||
D5Bj3O7OzO68qx6C38Cb6MXSD9CqWKHQL+BN2mOr4MFjb8WzUlqR/nlnmGx2zCTZ2SxCIA/82GRm3mef
|
||||
zL67SWAih2oQpw+IRmm4rANPbxk/DzWbU8CSzyDwvBI4vjTOBSXwTo/J6Dwy7gXE5f2skOEBfYJ3IJL3
|
||||
/sgNiPCH9lnBQ4jjWXOGIYrTe1kAjutmtJy4fJV5CbllRocoH0DIj2a0nIRc7Xppv8DMDFA+AMNNM1pc
|
||||
DEPauVi/5vjWCtDCI4jSeT3XV6MEaLcvU92ZrlXi+Cbz6hAluzRT0/NOjRIgimao7hdxrN9z+TrzspAv
|
||||
9LxTVg/gBzNaTGl6BVrhqa5VsprQYlvPO2UHGLCwj/Rta5pX4FrOq8vAnbUDqO1cMjN+Yniban/mvLp4
|
||||
BFCopvpO7NMD5utwaB3HbxCEf019L54Bqmc8AwTh71J07oo8XgGUiZDLwNhcKZLkBvnsWJ5+O0CNNaoE
|
||||
ppan5yX4Q139HES64A1L7pJfI/ta7jCeTVglngGO6RI8Af70pm4odSyKWh/Hi8DknuX5/5tQouXpvQNC
|
||||
tkCI6xDiNX38FzXugj+7SvX0I1c/ogsGyP8otVHfCX64HkIa+cmczSF16ziLqmRQgCCYpkVfeosqohWe
|
||||
0C7Xzdn6qNm8RIsfUj+4/3aVReBj3RcTWQK4AF41Zkfj/gngAAAAAElFTkSuQmCC
|
||||
</value>
|
||||
</data>
|
||||
<data name="tsbtnClose.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAJQSURBVFhHxZfNctNAEIQFb0UuYEu8DFwoiOwrVPGbFPAE
|
||||
vKhjV9huzSiz69aubA501XfwuGdms7ORtV3S8/9M/qHQs0T8/l9ArVKIzwbqMA4vj2P/5rDb3FgIcs+1
|
||||
UIfb/sVx//rtw4f+lYUoGLi609j/ftwPj85p139B3FQWXQuFWnnt4Y99NZmwqmiYjfvhK12TyuItKNRQ
|
||||
tR/G7Qbf03jcbd8pE7hyJ6jyL4+gJzw0Yz7K5JxuL9oJCjmqloOe8CFhOgOV1YLTuP0Gn6ls6lDwqhpO
|
||||
3NU8cWFeTkr8blYoNn6qkTwq1ynOlSxQ3wm9CKrZ/Pw8zQXyQq2dGIcfZp2FmPI6C/9RWfM5CDXnOPb3
|
||||
ZsUz5F55nMr5yT5EqPY8+49AfecsjGzuUwYiVGsRNRrN2UMFI1RrvorinKjaQAZLqLTV1TlH4LU0SNV0
|
||||
ZFBBteYN4DE7pGpFZFBBpZl+Uk0j8JgdUrUiMlhCpZ/QX6qhAl5Lg1RNRwYj1CXNnZWLkEGHSjPNXlQu
|
||||
AblWBpI9VBBQreaYd+tcNBZxFmAQSv/HP1VBJ25xa0SoZVYo6xU/MAClVdef7fl8qeYi9LNBNN8Nd6qA
|
||||
s7ClVHtkw51ZIeYVBVo/qfV5Qs1FpB5mpZA4vZLt+88qwUmJS3OMUPCqGg56mXVKOrzf3CijkxLWPtsB
|
||||
hRxVy0FP+JhQfy0/m9saqNp5yl7LKxeTNT+pS1BL58qvaE/GdF2KhvSaNc8pqSy+Fgq1strF1Ww24rqE
|
||||
C6TPxxQLXgOFmryc2pWs67ruL9BDjecFstIGAAAAAElFTkSuQmCC
|
||||
</value>
|
||||
</data>
|
||||
</root>
|
334
halftoneproject-master/AssistClient/FrmProductList.Designer.cs
generated
Normal file
334
halftoneproject-master/AssistClient/FrmProductList.Designer.cs
generated
Normal file
@ -0,0 +1,334 @@
|
||||
namespace AssistClient
|
||||
{
|
||||
partial class FrmProductList
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle();
|
||||
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle7 = new System.Windows.Forms.DataGridViewCellStyle();
|
||||
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle8 = new System.Windows.Forms.DataGridViewCellStyle();
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FrmProductList));
|
||||
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle2 = new System.Windows.Forms.DataGridViewCellStyle();
|
||||
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle3 = new System.Windows.Forms.DataGridViewCellStyle();
|
||||
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle4 = new System.Windows.Forms.DataGridViewCellStyle();
|
||||
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle5 = new System.Windows.Forms.DataGridViewCellStyle();
|
||||
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle6 = new System.Windows.Forms.DataGridViewCellStyle();
|
||||
this.toolStrip1 = new System.Windows.Forms.ToolStrip();
|
||||
this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.toolStripSeparator3 = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.statusStrip1 = new System.Windows.Forms.StatusStrip();
|
||||
this.tsslCount = new System.Windows.Forms.ToolStripStatusLabel();
|
||||
this.dataGridView1 = new System.Windows.Forms.DataGridView();
|
||||
this.tsbtnSetting = new System.Windows.Forms.ToolStripButton();
|
||||
this.tsbtnClose = new System.Windows.Forms.ToolStripButton();
|
||||
this.colId = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.colCode = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.colName = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.colSpec = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.colTag = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.colStepName = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.colAssistStepName = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.colTargetCount = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.colCompleteCount = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.colModifyCode = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.colModifyTime = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.toolStrip1.SuspendLayout();
|
||||
this.statusStrip1.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).BeginInit();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// toolStrip1
|
||||
//
|
||||
this.toolStrip1.BackColor = System.Drawing.SystemColors.GradientInactiveCaption;
|
||||
this.toolStrip1.ImageScalingSize = new System.Drawing.Size(32, 32);
|
||||
this.toolStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.toolStripSeparator1,
|
||||
this.tsbtnSetting,
|
||||
this.toolStripSeparator3,
|
||||
this.tsbtnClose});
|
||||
this.toolStrip1.LayoutStyle = System.Windows.Forms.ToolStripLayoutStyle.HorizontalStackWithOverflow;
|
||||
this.toolStrip1.Location = new System.Drawing.Point(0, 0);
|
||||
this.toolStrip1.Name = "toolStrip1";
|
||||
this.toolStrip1.Size = new System.Drawing.Size(1311, 65);
|
||||
this.toolStrip1.TabIndex = 12;
|
||||
this.toolStrip1.Text = "toolStrip1";
|
||||
//
|
||||
// toolStripSeparator1
|
||||
//
|
||||
this.toolStripSeparator1.Name = "toolStripSeparator1";
|
||||
this.toolStripSeparator1.Size = new System.Drawing.Size(6, 65);
|
||||
//
|
||||
// toolStripSeparator3
|
||||
//
|
||||
this.toolStripSeparator3.Name = "toolStripSeparator3";
|
||||
this.toolStripSeparator3.Size = new System.Drawing.Size(6, 65);
|
||||
//
|
||||
// statusStrip1
|
||||
//
|
||||
this.statusStrip1.ImageScalingSize = new System.Drawing.Size(24, 24);
|
||||
this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.tsslCount});
|
||||
this.statusStrip1.Location = new System.Drawing.Point(0, 766);
|
||||
this.statusStrip1.Name = "statusStrip1";
|
||||
this.statusStrip1.Size = new System.Drawing.Size(1311, 31);
|
||||
this.statusStrip1.TabIndex = 21;
|
||||
this.statusStrip1.Text = "statusStrip1";
|
||||
//
|
||||
// tsslCount
|
||||
//
|
||||
this.tsslCount.Name = "tsslCount";
|
||||
this.tsslCount.Size = new System.Drawing.Size(33, 24);
|
||||
this.tsslCount.Text = "共 ";
|
||||
//
|
||||
// dataGridView1
|
||||
//
|
||||
this.dataGridView1.AllowUserToAddRows = false;
|
||||
this.dataGridView1.AllowUserToDeleteRows = false;
|
||||
dataGridViewCellStyle1.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;
|
||||
dataGridViewCellStyle1.BackColor = System.Drawing.SystemColors.Control;
|
||||
dataGridViewCellStyle1.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||
dataGridViewCellStyle1.ForeColor = System.Drawing.SystemColors.WindowText;
|
||||
dataGridViewCellStyle1.SelectionBackColor = System.Drawing.SystemColors.Highlight;
|
||||
dataGridViewCellStyle1.SelectionForeColor = System.Drawing.SystemColors.HighlightText;
|
||||
dataGridViewCellStyle1.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
|
||||
this.dataGridView1.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle1;
|
||||
this.dataGridView1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
|
||||
this.dataGridView1.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
|
||||
this.colId,
|
||||
this.colCode,
|
||||
this.colName,
|
||||
this.colSpec,
|
||||
this.colTag,
|
||||
this.colStepName,
|
||||
this.colAssistStepName,
|
||||
this.colTargetCount,
|
||||
this.colCompleteCount,
|
||||
this.colModifyCode,
|
||||
this.colModifyTime});
|
||||
dataGridViewCellStyle7.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;
|
||||
dataGridViewCellStyle7.BackColor = System.Drawing.SystemColors.Window;
|
||||
dataGridViewCellStyle7.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||
dataGridViewCellStyle7.ForeColor = System.Drawing.SystemColors.ControlText;
|
||||
dataGridViewCellStyle7.SelectionBackColor = System.Drawing.SystemColors.Highlight;
|
||||
dataGridViewCellStyle7.SelectionForeColor = System.Drawing.SystemColors.HighlightText;
|
||||
dataGridViewCellStyle7.WrapMode = System.Windows.Forms.DataGridViewTriState.False;
|
||||
this.dataGridView1.DefaultCellStyle = dataGridViewCellStyle7;
|
||||
this.dataGridView1.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.dataGridView1.Location = new System.Drawing.Point(0, 65);
|
||||
this.dataGridView1.MultiSelect = false;
|
||||
this.dataGridView1.Name = "dataGridView1";
|
||||
this.dataGridView1.ReadOnly = true;
|
||||
this.dataGridView1.RowHeadersVisible = false;
|
||||
this.dataGridView1.RowHeadersWidth = 62;
|
||||
dataGridViewCellStyle8.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||
this.dataGridView1.RowsDefaultCellStyle = dataGridViewCellStyle8;
|
||||
this.dataGridView1.RowTemplate.Height = 30;
|
||||
this.dataGridView1.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect;
|
||||
this.dataGridView1.Size = new System.Drawing.Size(1311, 701);
|
||||
this.dataGridView1.TabIndex = 22;
|
||||
this.dataGridView1.CellDoubleClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.dataGridView1_CellDoubleClick);
|
||||
this.dataGridView1.DataBindingComplete += new System.Windows.Forms.DataGridViewBindingCompleteEventHandler(this.dataGridView1_DataBindingComplete);
|
||||
//
|
||||
// tsbtnSetting
|
||||
//
|
||||
this.tsbtnSetting.Image = ((System.Drawing.Image)(resources.GetObject("tsbtnSetting.Image")));
|
||||
this.tsbtnSetting.ImageScaling = System.Windows.Forms.ToolStripItemImageScaling.None;
|
||||
this.tsbtnSetting.ImageTransparentColor = System.Drawing.Color.Magenta;
|
||||
this.tsbtnSetting.Name = "tsbtnSetting";
|
||||
this.tsbtnSetting.Size = new System.Drawing.Size(140, 60);
|
||||
this.tsbtnSetting.Text = "流程与配方设置";
|
||||
this.tsbtnSetting.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageAboveText;
|
||||
this.tsbtnSetting.Click += new System.EventHandler(this.tsbtnSetting_Click);
|
||||
//
|
||||
// tsbtnClose
|
||||
//
|
||||
this.tsbtnClose.Image = ((System.Drawing.Image)(resources.GetObject("tsbtnClose.Image")));
|
||||
this.tsbtnClose.ImageScaling = System.Windows.Forms.ToolStripItemImageScaling.None;
|
||||
this.tsbtnClose.ImageTransparentColor = System.Drawing.Color.Magenta;
|
||||
this.tsbtnClose.Name = "tsbtnClose";
|
||||
this.tsbtnClose.Size = new System.Drawing.Size(70, 60);
|
||||
this.tsbtnClose.Text = " 关闭 ";
|
||||
this.tsbtnClose.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageAboveText;
|
||||
this.tsbtnClose.Click += new System.EventHandler(this.tsbtnClose_Click);
|
||||
//
|
||||
// colId
|
||||
//
|
||||
this.colId.DataPropertyName = "Id";
|
||||
this.colId.HeaderText = "Id";
|
||||
this.colId.MinimumWidth = 8;
|
||||
this.colId.Name = "colId";
|
||||
this.colId.ReadOnly = true;
|
||||
this.colId.Visible = false;
|
||||
this.colId.Width = 150;
|
||||
//
|
||||
// colCode
|
||||
//
|
||||
this.colCode.DataPropertyName = "Code";
|
||||
dataGridViewCellStyle2.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Bold);
|
||||
this.colCode.DefaultCellStyle = dataGridViewCellStyle2;
|
||||
this.colCode.HeaderText = "编号";
|
||||
this.colCode.MinimumWidth = 8;
|
||||
this.colCode.Name = "colCode";
|
||||
this.colCode.ReadOnly = true;
|
||||
this.colCode.Width = 150;
|
||||
//
|
||||
// colName
|
||||
//
|
||||
this.colName.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill;
|
||||
this.colName.DataPropertyName = "Name";
|
||||
dataGridViewCellStyle3.BackColor = System.Drawing.Color.White;
|
||||
dataGridViewCellStyle3.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||
this.colName.DefaultCellStyle = dataGridViewCellStyle3;
|
||||
this.colName.HeaderText = "名称";
|
||||
this.colName.MinimumWidth = 135;
|
||||
this.colName.Name = "colName";
|
||||
this.colName.ReadOnly = true;
|
||||
//
|
||||
// colSpec
|
||||
//
|
||||
this.colSpec.DataPropertyName = "Spec";
|
||||
this.colSpec.HeaderText = "规格";
|
||||
this.colSpec.MinimumWidth = 8;
|
||||
this.colSpec.Name = "colSpec";
|
||||
this.colSpec.ReadOnly = true;
|
||||
this.colSpec.Width = 130;
|
||||
//
|
||||
// colTag
|
||||
//
|
||||
this.colTag.DataPropertyName = "BatchId";
|
||||
this.colTag.HeaderText = "批次";
|
||||
this.colTag.MinimumWidth = 8;
|
||||
this.colTag.Name = "colTag";
|
||||
this.colTag.ReadOnly = true;
|
||||
this.colTag.Width = 80;
|
||||
//
|
||||
// colStepName
|
||||
//
|
||||
this.colStepName.HeaderText = "生产流程";
|
||||
this.colStepName.MinimumWidth = 8;
|
||||
this.colStepName.Name = "colStepName";
|
||||
this.colStepName.ReadOnly = true;
|
||||
this.colStepName.Width = 150;
|
||||
//
|
||||
// colAssistStepName
|
||||
//
|
||||
this.colAssistStepName.HeaderText = "修复流程";
|
||||
this.colAssistStepName.MinimumWidth = 8;
|
||||
this.colAssistStepName.Name = "colAssistStepName";
|
||||
this.colAssistStepName.ReadOnly = true;
|
||||
this.colAssistStepName.Width = 200;
|
||||
//
|
||||
// colTargetCount
|
||||
//
|
||||
this.colTargetCount.DataPropertyName = "TargetCount";
|
||||
dataGridViewCellStyle4.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleRight;
|
||||
this.colTargetCount.DefaultCellStyle = dataGridViewCellStyle4;
|
||||
this.colTargetCount.HeaderText = "目标数";
|
||||
this.colTargetCount.MinimumWidth = 8;
|
||||
this.colTargetCount.Name = "colTargetCount";
|
||||
this.colTargetCount.ReadOnly = true;
|
||||
this.colTargetCount.Width = 150;
|
||||
//
|
||||
// colCompleteCount
|
||||
//
|
||||
this.colCompleteCount.DataPropertyName = "CompleteCount";
|
||||
dataGridViewCellStyle5.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleRight;
|
||||
this.colCompleteCount.DefaultCellStyle = dataGridViewCellStyle5;
|
||||
this.colCompleteCount.HeaderText = "完成数";
|
||||
this.colCompleteCount.MinimumWidth = 8;
|
||||
this.colCompleteCount.Name = "colCompleteCount";
|
||||
this.colCompleteCount.ReadOnly = true;
|
||||
this.colCompleteCount.Width = 150;
|
||||
//
|
||||
// colModifyCode
|
||||
//
|
||||
this.colModifyCode.DataPropertyName = "ModifyUserCode";
|
||||
this.colModifyCode.HeaderText = "修订人";
|
||||
this.colModifyCode.MinimumWidth = 8;
|
||||
this.colModifyCode.Name = "colModifyCode";
|
||||
this.colModifyCode.ReadOnly = true;
|
||||
this.colModifyCode.Width = 150;
|
||||
//
|
||||
// colModifyTime
|
||||
//
|
||||
this.colModifyTime.DataPropertyName = "ModifyTime";
|
||||
dataGridViewCellStyle6.Format = "g";
|
||||
dataGridViewCellStyle6.NullValue = null;
|
||||
this.colModifyTime.DefaultCellStyle = dataGridViewCellStyle6;
|
||||
this.colModifyTime.HeaderText = "修订日期";
|
||||
this.colModifyTime.MinimumWidth = 8;
|
||||
this.colModifyTime.Name = "colModifyTime";
|
||||
this.colModifyTime.ReadOnly = true;
|
||||
this.colModifyTime.Width = 150;
|
||||
//
|
||||
// FrmProductList
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(9F, 18F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(1311, 797);
|
||||
this.Controls.Add(this.dataGridView1);
|
||||
this.Controls.Add(this.statusStrip1);
|
||||
this.Controls.Add(this.toolStrip1);
|
||||
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
|
||||
this.Name = "FrmProductList";
|
||||
this.ShowInTaskbar = false;
|
||||
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
|
||||
this.Text = "产品管理";
|
||||
this.Load += new System.EventHandler(this.FrmProductList_Load);
|
||||
this.toolStrip1.ResumeLayout(false);
|
||||
this.toolStrip1.PerformLayout();
|
||||
this.statusStrip1.ResumeLayout(false);
|
||||
this.statusStrip1.PerformLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).EndInit();
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.ToolStrip toolStrip1;
|
||||
private System.Windows.Forms.ToolStripButton tsbtnSetting;
|
||||
private System.Windows.Forms.ToolStripSeparator toolStripSeparator1;
|
||||
private System.Windows.Forms.StatusStrip statusStrip1;
|
||||
private System.Windows.Forms.DataGridView dataGridView1;
|
||||
private System.Windows.Forms.ToolStripStatusLabel tsslCount;
|
||||
private System.Windows.Forms.ToolStripButton tsbtnClose;
|
||||
private System.Windows.Forms.ToolStripSeparator toolStripSeparator3;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn colId;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn colCode;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn colName;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn colSpec;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn colTag;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn colStepName;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn colAssistStepName;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn colTargetCount;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn colCompleteCount;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn colModifyCode;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn colModifyTime;
|
||||
}
|
||||
}
|
130
halftoneproject-master/AssistClient/FrmProductList.cs
Normal file
130
halftoneproject-master/AssistClient/FrmProductList.cs
Normal file
@ -0,0 +1,130 @@
|
||||
using Models;
|
||||
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 AssistClient
|
||||
{
|
||||
public partial class FrmProductList : Form
|
||||
{
|
||||
Service.ProductService service = new Service.ProductService();
|
||||
public Models.Product Product { get; private set; }
|
||||
public FrmProductList()
|
||||
{
|
||||
InitializeComponent();
|
||||
dataGridView1.AutoGenerateColumns = false;
|
||||
}
|
||||
private void initDataView()
|
||||
{
|
||||
Product = null;
|
||||
var list = service.GetListNav();
|
||||
tsslCount.Text = $"共 {list.Count} 条记录";
|
||||
dataGridView1.DataSource = new BindingSource(list, null);
|
||||
}
|
||||
private void FrmProductList_Load(object sender, EventArgs e)
|
||||
{
|
||||
initDataView();
|
||||
}
|
||||
private void tsbtnAdd_Click(object sender, EventArgs e)
|
||||
{
|
||||
//FrmProductInfo frm = new FrmProductInfo();
|
||||
//frm.ShowDialog();
|
||||
//initDataView();
|
||||
}
|
||||
|
||||
private void tsbtnDel_Click(object sender, EventArgs e)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (this.dataGridView1.CurrentRow == null)
|
||||
return;
|
||||
|
||||
if (MessageBox.Show($"确认删除?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
|
||||
{
|
||||
var list = ((BindingSource)dataGridView1.DataSource).DataSource as List<Product>;
|
||||
int liIndex = this.dataGridView1.CurrentRow.Index;//获取当前选中行的索引
|
||||
if (!service.DelNav(list[liIndex]))
|
||||
throw new Exception("删除失败!");
|
||||
MessageBox.Show("删除成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||||
initDataView();
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MessageBox.Show(ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
}
|
||||
}
|
||||
|
||||
private void tsbtnSetting_Click(object sender, EventArgs e)
|
||||
{
|
||||
if(this.dataGridView1.CurrentRow == null) return;
|
||||
|
||||
var list = ((BindingSource)dataGridView1.DataSource).DataSource as List<Product>;
|
||||
int liIndex = this.dataGridView1.CurrentRow.Index;//获取当前选中行的索引
|
||||
FrmProductStep frm = new FrmProductStep(list[liIndex]);
|
||||
frm.ShowDialog();
|
||||
initDataView();
|
||||
}
|
||||
private void tsbtnRevise_Click(object sender, EventArgs e)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (this.dataGridView1.CurrentRow == null)
|
||||
throw new Exception("请选择要校正的产品!");
|
||||
|
||||
var list = ((BindingSource)dataGridView1.DataSource).DataSource as List<Product>;
|
||||
int liIndex = this.dataGridView1.CurrentRow.Index;//获取当前选中行的索引
|
||||
if (list[liIndex].ReviseStepId==null || list[liIndex].ReviseStepId<1)
|
||||
throw new Exception("此产品未设置校正流程!");
|
||||
|
||||
if (MessageBox.Show($"确认执行校正产品流程?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
|
||||
{
|
||||
Product=list[liIndex];
|
||||
this.DialogResult = DialogResult.Yes;
|
||||
this.Close();
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MessageBox.Show(ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
}
|
||||
}
|
||||
private void tsbtnClose_Click(object sender, EventArgs e)
|
||||
{
|
||||
this.Close();
|
||||
}
|
||||
|
||||
private void dataGridView1_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
|
||||
{
|
||||
//if (!this.tsbtnAdd.Enabled) return;
|
||||
//var list = ((BindingSource)dataGridView1.DataSource).DataSource as List<Product>;
|
||||
//int liIndex = this.dataGridView1.CurrentRow.Index;//获取当前选中行的索引
|
||||
//FrmProductInfo frm = new FrmProductInfo(list[liIndex]);
|
||||
//frm.ShowDialog(this);
|
||||
//initDataView();
|
||||
}
|
||||
|
||||
private void dataGridView1_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
|
||||
{
|
||||
var list = ((BindingSource)dataGridView1.DataSource).DataSource as List<Product>;
|
||||
for (int i = 0; i < dataGridView1.Rows.Count; i++)
|
||||
{
|
||||
if (list[i].StepInfo != null)
|
||||
dataGridView1.Rows[i].Cells["colStepName"].Value = list[i].StepInfo.Name;
|
||||
//if (list[i].ReviseStepInfo != null)
|
||||
// dataGridView1.Rows[i].Cells["colReviseStepName"].Value = list[i].ReviseStepInfo.Name;
|
||||
if (list[i].AssistStepInfo != null)
|
||||
dataGridView1.Rows[i].Cells["colAssistStepName"].Value = list[i].AssistStepInfo.Name;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
465
halftoneproject-master/AssistClient/FrmProductList.resx
Normal file
465
halftoneproject-master/AssistClient/FrmProductList.resx
Normal file
@ -0,0 +1,465 @@
|
||||
<?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="toolStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>17, 17</value>
|
||||
</metadata>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="tsbtnSetting.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAO2SURBVFhH1ZVfSFNRHMcHQRAIPQW9BkJPPvValFQWDQ2p
|
||||
QMgwNFcZpTNbq21eTFNJSpOlM/Hf1Tt3751GZi3nbOlkfzVfCoIgCPY6EAZCT6fzu/tNt7uzOWJFfeHL
|
||||
vef3+5zf75z7V/NfipM+F1mk9SNJm8TgIUz9HbXK4S7OuUaSNjkDP+ii9mL6z4qTQgcNzlA8dQHgVmek
|
||||
DpHCCC4rNxOuUO/MIkf6aDNoqPb3S5K0BzFFMH4gfjqAw/wFzWmjKDWxyL5NsxzhW8VInUkOuRMxtiFv
|
||||
FsMVFjGipeMxoxyJ0WOUE9eLsfTuguZmIRw1S2FSMNN6eS/C5AgNmcQQKbSN9sBXbJFbD+1B7QNHkBTa
|
||||
RkdAwBa5BQ+dkQ/GjNN0Esujwa37036ZnuuSVsY0vs0wbKAbwxa7yzAVcBmEAGF4toW+hoilCeKQV/EJ
|
||||
84FY3t8JTvIWtYz54/em/CTVLZP+IURyCjj13DsTvs370tp+RLLr3uTqYT3vk+9OrpJUN/PLG6wd6Kf8
|
||||
JXi6LeCAV9e4y/s6EMmUfvRjSeP4iqCf8BGWm8ZXLiKqqGnc13hj2L0FOTjCGFOKgFfXADdN+Naaed9p
|
||||
xHYEzakJyw2D3p960b8PUaU4i0tdJPC64YUtFqd4bKUP0YRujywLt0eXCcsNo94viCmirJvFQRwRRTCP
|
||||
yYFpP8QSahjxCrdGPpIs/oaYopsjH/wMhkAcEUU09k3NJA39EEvoxrC37+awlzBtpbfg6c4toKyRxUEc
|
||||
EQ3wMI/FKX6pWgCo3vZBe33Qs3H95RLJtKcSMfjD7a0fWnKn5mEMcUQ0wKfm0+0R6m3ujLdnW9cGPV31
|
||||
Ng9JM12Y+lerG1o8es22qIMjhhQBB3xGDZtbrh1YOoxYdtGC+2sG5uN1A4sk1bVWd14fIuDUc6Feg9Vb
|
||||
hEhuwaWsti7Err5YIJl+P1tjnWd+iiEOefa8BRdiu+tyv0t7pd9FsvrJfLy63yVXP3+n2zYdQ5zJU1f3
|
||||
v45d4naekZyq6n0jVPW+JQX3s/n8/oaVPXNfL/bMkUL7Qs/cALbIrfLO18Xnu2ej57tfkcJ5Ngp1scXu
|
||||
Ku8Ui8s4Z1Tb4YxpO2Re+2imQtsxU0nPl2iMZHW77D7X7qxT5nDOTYhBHaiHpfPX2cfiAfW7D+MznP37
|
||||
mTaJqF3W5kj7wcBDd7ZNrCzjfqN5Lp3kpnWnOAdJs2EsfpyTmK9nwQU7O2YRoqUWO0n6hNnehem/o2Mm
|
||||
/lCpRTiSNN19fl+5f08azS+K0ESo4Q9F+gAAAABJRU5ErkJggg==
|
||||
</value>
|
||||
</data>
|
||||
<data name="tsbtnClose.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAJQSURBVFhHxZfNctNAEIQFb0UuYEu8DFwoiOwrVPGbFPAE
|
||||
vKhjV9huzSiz69aubA501XfwuGdms7ORtV3S8/9M/qHQs0T8/l9ArVKIzwbqMA4vj2P/5rDb3FgIcs+1
|
||||
UIfb/sVx//rtw4f+lYUoGLi609j/ftwPj85p139B3FQWXQuFWnnt4Y99NZmwqmiYjfvhK12TyuItKNRQ
|
||||
tR/G7Qbf03jcbd8pE7hyJ6jyL4+gJzw0Yz7K5JxuL9oJCjmqloOe8CFhOgOV1YLTuP0Gn6ls6lDwqhpO
|
||||
3NU8cWFeTkr8blYoNn6qkTwq1ynOlSxQ3wm9CKrZ/Pw8zQXyQq2dGIcfZp2FmPI6C/9RWfM5CDXnOPb3
|
||||
ZsUz5F55nMr5yT5EqPY8+49AfecsjGzuUwYiVGsRNRrN2UMFI1RrvorinKjaQAZLqLTV1TlH4LU0SNV0
|
||||
ZFBBteYN4DE7pGpFZFBBpZl+Uk0j8JgdUrUiMlhCpZ/QX6qhAl5Lg1RNRwYj1CXNnZWLkEGHSjPNXlQu
|
||||
AblWBpI9VBBQreaYd+tcNBZxFmAQSv/HP1VBJ25xa0SoZVYo6xU/MAClVdef7fl8qeYi9LNBNN8Nd6qA
|
||||
s7ClVHtkw51ZIeYVBVo/qfV5Qs1FpB5mpZA4vZLt+88qwUmJS3OMUPCqGg56mXVKOrzf3CijkxLWPtsB
|
||||
hRxVy0FP+JhQfy0/m9saqNp5yl7LKxeTNT+pS1BL58qvaE/GdF2KhvSaNc8pqSy+Fgq1strF1Ww24rqE
|
||||
C6TPxxQLXgOFmryc2pWs67ruL9BDjecFstIGAAAAAElFTkSuQmCC
|
||||
</value>
|
||||
</data>
|
||||
<metadata name="statusStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>498, 17</value>
|
||||
</metadata>
|
||||
<metadata name="colId.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="colCode.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="colName.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="colSpec.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="colTag.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="colStepName.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="colAssistStepName.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="colTargetCount.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="colCompleteCount.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="colModifyCode.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="colModifyTime.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
AAABAAQAEBAAAAEACABoBQAARgAAACAgAAABAAgAqAgAAK4FAAAwMAAAAQAIAKgOAABWDgAAAAAAAAEA
|
||||
IACHIAAA/hwAACgAAAAQAAAAIAAAAAEACAAAAAAAAAEAABELAAARCwAAAAEAAAABAABaUD0AWlE9AF5V
|
||||
QABiWEIAYlhEAGtgSQB9cFYAjIJuAI2DbwAZp10AGaldABy6aAAevGoAL755AC/AdwAxwHkANdSFADfW
|
||||
hwA11ooAN9aKADrZigCCdVoAiHteAIR4YQCHjGcAnY1tAJ6ObgCSiXYAkol6AJWMeQCVjHoAlox6AJCS
|
||||
bgCfkHAAoI1tAKCObgCjkHAAopByAKKScgCmnIYAqZ+JAKqcigCqn4oA++OxAPvjsgD747MA++S1AP3l
|
||||
sQD95bMA/+WzAP3ltgD/5bYA++a6AP/oswD/6LYA/+u2AP/swgD+8dIA/vTZAP723gD+9t8A//XhAP75
|
||||
4QD/+OAA//nhAP/45ABIPy4AUUIxAEs/MQBNRDQAS0UxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARwQEBAQE
|
||||
BAQEBAQEBAQER0cFHx4cHigpJygeBx4eB0dHR0dHRwECBQUCAUdHR0dHR0dHRkRGAQQEAUZERERHR0dH
|
||||
FxglISIZGhoaISUGR0dHRyAxCTYxMjEyMjE1GUdHR0cgPQsJNjEsLC4uMRlHRwoKCQkLCwo1MS4uLC8h
|
||||
R0cJDAsLCwsLCi8sLC41GkdHDxQSEhMTEQ45LCwsNRpHRw0ODg4QEA1AQTouLDUaR0dHRyBAEA5BPT1B
|
||||
OzQxGkdHR0cgQA5AOzs7O0BAOBlHR0dHFiAlIhkZGRkZIiUVR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dH
|
||||
R0dHR0dHR0dHR4ABAACAAQAA+B8AAOADAADAAwAAwAMAAMADAAAAAwAAAAMAAAADAAAAAwAAwAMAAMAD
|
||||
AADAAwAA//8AAP//AAAoAAAAIAAAAEAAAAABAAgAAAAAAAAEAAAAAAAAAAAAAAABAAAAAQAAWVA/AFlT
|
||||
PwBaUT4AY1lDAGRaRABkXEQAZFxEAHdrUwBhV0EAYVpEAGRaRABkWkQAZlxGAHZqUQB3a1EAd2tSAHdr
|
||||
VAB3blQAemtRAHpqUwB6a1QAeW1UAHpuVAB6blYAc2hQAHltUwBhV0EAZFpEAGRXRABmV0YAZFpEABa6
|
||||
ZQAZumgAGbxoABy6aAAcvGgAHLxqAB68aAAevGoAIL9qACm9bgAtvm8AML9wADW/cgA11IcANdSFADXW
|
||||
hwAkwnEAOcF2AD7EfABRjVwARL98ACnUggAv1oUAMNSFADHUhgAy1IYAM9SHADLWhQA11IUANdWHADXW
|
||||
hQA11ocAN9aFADfWhwA31YgAVNCMAGHcmwCbqnwAp52IAKqgiwCf3JsAnd6uAKDergCv6rsAtezBALzt
|
||||
xADGs4sAybaLAMm2jgDMto4AybqXAN3gqADi4aoA5uKsAOrjrQDu464A++OvAPLmtgD747EA++S0AP3j
|
||||
sQD947MA/uOyAP3lsQD95bMA/+WxAP/msgD75roA++a7AP3nuQD/6LMA/+m1AP/otgD/67YA/+u5AMLu
|
||||
xwDH78kAze/MANXwzgD268IA++nEAPvqxQD/8M0A/vLVAP7z1QD/89kA/vPdAP/02gD+9d4A/vbeAP/1
|
||||
4QD+9uAA//bgAP734gD+9+MA//XkAP/15wD/+eMA//jkAP/45wD/+uYA//vnAGZaRABpXkgAZ11HAGRc
|
||||
RAAcumgAHLpoABy/agCyqJQArqSQALuxnQC7sZ0Abl9FALqwnAC6sJ8ArqSQAHBkSgB1alMAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJaW
|
||||
lpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpYYCggICAgLCwsLCwsMDAgKCgkLCwsLCwsKCwoD
|
||||
lpaWlhcVFxcVFQ8PDw8PDw8VFxcXFw8PFxYPDw8VDxeWlpaWlkZGRkZGRUVFRUVFRUVGRkZGRUaWRkVF
|
||||
RUVGlpaWlpaWjZSTk42TjI6Ojo6OjZWWkJSUlpaNk5OTk42WlpaWlpaWlpaWlpaWBAUGBgYFBgYMBQYA
|
||||
lpaWlpaWlpaWlpaWlpaWlpaWlpaIhwcXDw8NFxcEiIiWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlQICAggJ
|
||||
DZaWlpaWlpaWlpaWlpaWlpaWiAaFGhoaGhocAgECAQEBHBwcHBwcHIWFlpaWlpaWlpZETU1FT01NTU1N
|
||||
TU1NTU1NTU1NTU1NUQ2WlpaWlpaWlhN+cSdSZl9fX19ZZmFZX1lZYVlmYWFoCpaWlpaWlpaWDX19HyhT
|
||||
X19hWWFZWWVhWWVZYVlhV2gIlpaWlpaWlpYPhH8iIilUZllhWWFhV2FXWWFXYVllaAiWlpaWlpaWlg+C
|
||||
giMiIjBUZmFhWVdlWWVlV2VZYVdoCJaWlpaJiYmLMkhIIyckIjBWZVdlYVlhV1dhWWVXZWgIlpaWlick
|
||||
JCQkIiAkJCQjHzBYYVdZYVlhZVdhV2FXaAiWlpaWIiIiIiIiIiIiIiIiIjFuXWFhWWFhV2VXZVloCJaW
|
||||
lpYvLy8vLy8vLy8vLy8vL0J0WVlhWVllV2FXYWgIlpaWlkBAQEBAQEBAPz9AQEBAbXt3Y11hYVdhV2Fh
|
||||
aAiWlpaWQEBAQEA7Ozs/Pz9AQGyCe3t9b1lXYVllWWFoCJaWlpYsLS0uM0NDOztAQDlre357d359c1pZ
|
||||
YVdXYWgIlpaWlpaWlpYShIA6QDo5an17fnt+d3t9e2NZYWFZaAiWlpaWlpaWlg6EezpANUx9e3t3fnd+
|
||||
fn19e29XWWFoCJaWlpaWlpaWDoSANTpLfXt+fn53fnd+e3t7gHNdXWgIlpaWlpaWlpYRgHs0Sn50d3d3
|
||||
d3d3d3R3d3d3d3ZkaQiWlpaWlpaWlhNhXUddV1dXV1dXV1lXV1dXV1dXWVdmCJaWlpaWlpaWGRcQFA8P
|
||||
EBAQEBQNEBAQEBAQEA8QEBcYlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaW
|
||||
lpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaW
|
||||
lpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaW
|
||||
lpb/////wAAAA8AAAAPgAAIH4ABGB//AA///wAP///Af//AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADwAA
|
||||
AA8AAAAPAAAADwAAAA8AAAAPAAAADwAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA//////////////
|
||||
/////////////ygAAAAwAAAAYAAAAAEACAAAAAAAAAkAAAAAAAAAAAAAAAEAAAABAABORjYAZlxGAGNZ
|
||||
QwBkXEQAYVdDAGRaRABmWkQAZFxEAGZcRQBmXEYAaF5HAGZcRgBmXEYAa2BJAHltUwB6blQAe29VAHxu
|
||||
VAB8cFYAf3NZAE5GNgBkXEQAa2FKAB66agBmXEYAd2tSAHltUwBmXEYAZlxGAGZcRwCupJAArqSQALGk
|
||||
kACdknwAnZV8ABO6aAAXumgAGbppABq6aQAbu2oAGbxqABy6aAAeumgAHrtqABy8aAAcvGoAHrxqACC8
|
||||
awAivG0AJb5wACm/cgA6o2MAKcBxAEyzdgBSuHoAQMN7AB68agAcvGoANdSFADfWhwA11ocALdSFADHU
|
||||
hgAy1IYAMtaFADXUhQA01IcANdSHADXWhQA11ocAN9aFADfWhwA11YgAN9WJADrVigA81osAP9aMAELX
|
||||
jQBG2Y8AVtmUAGLNiwBnzpAAeuClAIZ5XACNgWkAkYNlAJaHaACSk28AqJh1AKqadwCtnXoAoqB7AK+g
|
||||
fACxoHwAs6F9ALWjfwCupJAArqSUAK6kkACvpZEArqSUALKokQCyqJQApJmEAKechwC4o4IAvKqEAL2x
|
||||
mAC9sJsAvbKbAL21ngCJ0I4Ai9GVAJXdnQCd05MAjtilAJjksQCb5bQApdeYAKvZmgCz2p0AudufAK7e
|
||||
oAC/3KEAteq8ALvtxADAsJsAyN2jANLepQDX4q8A3ee9APvjsQD747IA++OzAPvltwD947EA/eOyAP3l
|
||||
sQD95bMA/+WzAP3mtgD75bgA/+W5AP/oswD96LYA/+i2AP/puQDB7scAx+/JAM3vzADV8M4A3fHQAOLs
|
||||
zwDh7NQA4fLSAOby1ADq89YA6PTVAPvowAD76MEA/evEAP7x0AD+8dEA/vHSAP7y0gD/8tUA//PVAP7z
|
||||
2wD+9NsA/vXbAP713AD/9d4A/vbeAP/23gD/9eEA/vfhAP734wD/9eQA//jkAHpuVACup5AAd2hOAHVp
|
||||
TwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAt7e3t7e3
|
||||
t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3
|
||||
t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3GAwMDAMMDAwMBAQMDAMDAwMDAwMDBAwMDAMK
|
||||
AwMEAwMDAwMDAwMDDAwAt7e3t7e3Dg0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0ODQ0NDQ0NDQ0N
|
||||
DQ0Kt7e3t7e3U1NTDw8PDw8PHlNTUw8PDx9THxMTEx4PD1NTEh9TVw8PDw8PDw8PDxITt7e3t7e3tyB/
|
||||
Z2dnZ2dnZ2d/aGdnaGhsaGhoZ2doZ25oaGhotyFoZ2dnZ2hnaCC1t7e3t7e3t7UeVGIeHmIeACIfZyFT
|
||||
Zx4eZ2JiZxRnU7RiYlQCt7RiYiBiYiBiYrS3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3
|
||||
t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3GwAZGBgYGBgYGBgYGBgYGQAbt7e3t7e3t7e3
|
||||
t7e3t7e3t7e3t7e3t7e3t7e3t7e3DB0NCggKCAoKCAgICAgKCQAMt7e3t7e3t7e3t7e3t7e3t7e3t7e3
|
||||
t7e3t7e3t7e3t7e3tFMTEhISEhISExKzt7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3
|
||||
txsEBAQEBAQEBBu3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3txQAAAAAAAAAABS3
|
||||
t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3FQUFBQUFBQUJCQgJCAgJCAkJBQUFBQUFCg0FBQUFBQUFBQUV
|
||||
t7e3t7e3t7e3t7e3ElRZWVdaWVhYWFhYWFhYWFhYWFhYWFhZWFhYWFhYWVlYWVMHt7e3t7e3t7e3t7e3
|
||||
E26mkm9ykYmJioqKioqKioqKioqKioqKioqKioqKioqKil4Ft7e3t7e3t7e3t7e3Em2vrXAjdpGKiYmJ
|
||||
iYmJiYmJiYmJiYmJiYmJiYmJiYmJklwFt7e3t7e3t7e3t7e3DmyxsnMoJHeRiomJiYmJiYmJiYmJiYmJ
|
||||
iYmJiYmJiYmJilwFt7e3t7e3t7e3t7e3Em2xsXMoLiR4kYWKiYmJiYmJiYmJiYmJiYmJiYmJiYmKkl0F
|
||||
t7e3t7e3t7e3t7e3D2yxsXMoLiwkeZCKioqJiYmJiYmJiYmJiYmJiYmJiYmKkFoFt7e3t7e3t7e3t7e3
|
||||
EmyxsXMoLi4kLn+KiomJiYmJiYmJiYmJiYmJiYmJiYmJkF0Ft7e3t7e3t7e3t7e3Dn6ysnMuLi4uKSl/
|
||||
kYqJiYmJiYmJiYmJiYmJiYmJiYmJkF0Ft7e3t7e3OBcXFxc5MzZRUTcuLi4uLiwwgJGJiYmJiYmJiYmJ
|
||||
iYmJiYmJiYmJkF0Kt7e3t7e3KS8uLi4uLi4oKSkuLi4uLi4sMIGJiYmJiYmJiYmJiYmJiYmJiYmJkGgK
|
||||
t7e3t7e3Ly4uLi4uLi4uLi4uLi4uLi4uKTGCioiJiYmJiYmJiYmJiYmJiYmJkFwFt7e3t7e3KS4uLi4u
|
||||
Li4uLi4uLi4uLi4uLik0mYqIiYmJiYmJiYmJiYmJiYmJkFwFt7e3t7e3KSkpKSkpKSkpKSkpKSkuLCkp
|
||||
KSkpNJmghImJiYmJiYmJiYmJiYmJkFwFt7e3t7e3RkZKREZKRERGRkZKRkpEREpGRkpETpyypISIiYmJ
|
||||
iYmJiYmJiYmJkFwFt7e3t7e3QkZGRkZGRkZGRkZGRkZGREZGRkJNnLKusq2NiYmJiYmJiYmJiYmJkFwF
|
||||
t7e3t7e3RERGRkZGRkZGRkZGRkZGRkZGREubsq6urq+vn4iJiYmJiYmJiYmJkFwFt7e3t7e3SUZGRkZE
|
||||
SURBQkJGRkZGRkRES5qyrq6urq6ysaSEiImJiYmJiYmJkFwJt7e3t7e3Ojs7Ozs8NVBSUk9ERkZGRkRK
|
||||
l7Gurq6urq6urrKojYmJiYmJiYmJkFwJt7e3t7e3t7e3t7e3EWyysnVERkZGREmWsq6urq6urq6urq6y
|
||||
r5+DiYmJiYmJkVwFt7e3t7e3t7e3t7e3D2yxsXVERkZESZWyrq6urq6urq6urq6usrGhhIOJiYmJkVwF
|
||||
t7e3t7e3t7e3t7e3EmyxsXVERERClLGurq6urq6urq6urq6urq6vqIWJiYmKkFwFt7e3t7e3t7e3t7e3
|
||||
Dm2xsXVERECTsa6urq6urq6urq6urq6urq6usq6fiYmKkFwFt7e3t7e3t7e3t7e3Dm2ysnVAQH2yrq6u
|
||||
rq6urq6urq6urq6urq6urq6yoYSIilwFt7e3t7e3t7e3t7e3EmutrXQ9fK2nqKenp6enp62np6enp6en
|
||||
p6etp6etraaKklwFt7e3t7e3t7e3t7e3EmqRkXF6ioqKioqKioqKiomJioqKioqKioqKioqKioqFkV4F
|
||||
t7e3t7e3t7e3t7e3DlZfX1tpX15eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eaVUFt7e3t7e3t7e3t7e3
|
||||
Gg4SDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8ODhIODhIOEhIZt7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3
|
||||
t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3
|
||||
t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3
|
||||
t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3
|
||||
t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3
|
||||
t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3
|
||||
t7e3t7e3t7e3t7e3t7e3t7e3////////AAD///////8AAOAAAAAABwAA4AAAAAAHAADgAAAAAAcAAPAA
|
||||
AABABwAA8AAAAEAPAAD///////8AAP/+AAB//wAA//4AAH//AAD//8AD//8AAP//4Af//wAA///gB///
|
||||
AAD8AAAAAD8AAPwAAAAAPwAA/AAAAAA/AAD8AAAAAD8AAPwAAAAAPwAA/AAAAAA/AAD8AAAAAD8AAPwA
|
||||
AAAAPwAA/AAAAAA/AAAAAAAAAD8AAAAAAAAAPwAAAAAAAAA/AAAAAAAAAD8AAAAAAAAAPwAAAAAAAAA/
|
||||
AAAAAAAAAD8AAAAAAAAAPwAAAAAAAAA/AAAAAAAAAD8AAPwAAAAAPwAA/AAAAAA/AAD8AAAAAD8AAPwA
|
||||
AAAAPwAA/AAAAAA/AAD8AAAAAD8AAPwAAAAAPwAA/AAAAAA/AAD8AAAAAD8AAP///////wAA////////
|
||||
AAD///////8AAP///////wAA////////AAD///////8AAP///////wAAiVBORw0KGgoAAAANSUhEUgAA
|
||||
AQAAAAEACAYAAABccqhmAAAgTklEQVR42u2de3Qc1Z3nv7e7ql/qVkvWA8s2NrZxgkkgNgaCzMMvbLAZ
|
||||
A5mJYR5hZ3czszs7hzx2MsmZncyyezaHsznJJJshzuYByTyS2YwhhIfBxjZCtjE2OBiTByQBjCFYlpGl
|
||||
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
|
||||
wsOQABCEh/n/kzJOKq1u/QcAAAAASUVORK5CYII=
|
||||
</value>
|
||||
</data>
|
||||
</root>
|
356
halftoneproject-master/AssistClient/FrmProductStep.Designer.cs
generated
Normal file
356
halftoneproject-master/AssistClient/FrmProductStep.Designer.cs
generated
Normal file
@ -0,0 +1,356 @@
|
||||
namespace AssistClient
|
||||
{
|
||||
partial class FrmProductStep
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FrmProductStep));
|
||||
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle();
|
||||
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle3 = new System.Windows.Forms.DataGridViewCellStyle();
|
||||
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle4 = new System.Windows.Forms.DataGridViewCellStyle();
|
||||
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle2 = new System.Windows.Forms.DataGridViewCellStyle();
|
||||
this.toolStrip1 = new System.Windows.Forms.ToolStrip();
|
||||
this.tsbtnSave = new System.Windows.Forms.ToolStripButton();
|
||||
this.toolStripSeparator4 = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.tsbtnCls = new System.Windows.Forms.ToolStripButton();
|
||||
this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.tsbtnClose = new System.Windows.Forms.ToolStripButton();
|
||||
this.statusStrip1 = new System.Windows.Forms.StatusStrip();
|
||||
this.tsslCount = new System.Windows.Forms.ToolStripStatusLabel();
|
||||
this.splitContainer1 = new System.Windows.Forms.SplitContainer();
|
||||
this.cobStepList = new System.Windows.Forms.ComboBox();
|
||||
this.label1 = new System.Windows.Forms.Label();
|
||||
this.groupBox1 = new System.Windows.Forms.GroupBox();
|
||||
this.dataGridView1 = new System.Windows.Forms.DataGridView();
|
||||
this.colProcessCode = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.colName = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.colProdctPrivate = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.colSetParams = new System.Windows.Forms.DataGridViewButtonColumn();
|
||||
this.colStepProcessParams = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.colPrivateProcessParams = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.toolStrip1.SuspendLayout();
|
||||
this.statusStrip1.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit();
|
||||
this.splitContainer1.Panel1.SuspendLayout();
|
||||
this.splitContainer1.Panel2.SuspendLayout();
|
||||
this.splitContainer1.SuspendLayout();
|
||||
this.groupBox1.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).BeginInit();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// toolStrip1
|
||||
//
|
||||
this.toolStrip1.BackColor = System.Drawing.SystemColors.GradientInactiveCaption;
|
||||
this.toolStrip1.ImageScalingSize = new System.Drawing.Size(32, 32);
|
||||
this.toolStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.tsbtnSave,
|
||||
this.toolStripSeparator4,
|
||||
this.tsbtnCls,
|
||||
this.toolStripSeparator1,
|
||||
this.tsbtnClose});
|
||||
this.toolStrip1.LayoutStyle = System.Windows.Forms.ToolStripLayoutStyle.HorizontalStackWithOverflow;
|
||||
this.toolStrip1.Location = new System.Drawing.Point(0, 0);
|
||||
this.toolStrip1.Name = "toolStrip1";
|
||||
this.toolStrip1.Padding = new System.Windows.Forms.Padding(0, 0, 3, 0);
|
||||
this.toolStrip1.Size = new System.Drawing.Size(562, 65);
|
||||
this.toolStrip1.TabIndex = 17;
|
||||
this.toolStrip1.Text = "toolStrip1";
|
||||
//
|
||||
// tsbtnSave
|
||||
//
|
||||
this.tsbtnSave.Image = ((System.Drawing.Image)(resources.GetObject("tsbtnSave.Image")));
|
||||
this.tsbtnSave.ImageScaling = System.Windows.Forms.ToolStripItemImageScaling.None;
|
||||
this.tsbtnSave.ImageTransparentColor = System.Drawing.Color.Magenta;
|
||||
this.tsbtnSave.Name = "tsbtnSave";
|
||||
this.tsbtnSave.Size = new System.Drawing.Size(70, 60);
|
||||
this.tsbtnSave.Text = " 保存 ";
|
||||
this.tsbtnSave.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageAboveText;
|
||||
this.tsbtnSave.Click += new System.EventHandler(this.tsbtnSave_Click);
|
||||
//
|
||||
// toolStripSeparator4
|
||||
//
|
||||
this.toolStripSeparator4.Name = "toolStripSeparator4";
|
||||
this.toolStripSeparator4.Size = new System.Drawing.Size(6, 65);
|
||||
//
|
||||
// tsbtnCls
|
||||
//
|
||||
this.tsbtnCls.Image = ((System.Drawing.Image)(resources.GetObject("tsbtnCls.Image")));
|
||||
this.tsbtnCls.ImageScaling = System.Windows.Forms.ToolStripItemImageScaling.None;
|
||||
this.tsbtnCls.ImageTransparentColor = System.Drawing.Color.Magenta;
|
||||
this.tsbtnCls.Name = "tsbtnCls";
|
||||
this.tsbtnCls.Size = new System.Drawing.Size(70, 60);
|
||||
this.tsbtnCls.Text = " 清除 ";
|
||||
this.tsbtnCls.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageAboveText;
|
||||
this.tsbtnCls.ToolTipText = "清除产品私有配方";
|
||||
this.tsbtnCls.Click += new System.EventHandler(this.tsbtnCls_Click);
|
||||
//
|
||||
// toolStripSeparator1
|
||||
//
|
||||
this.toolStripSeparator1.Name = "toolStripSeparator1";
|
||||
this.toolStripSeparator1.Size = new System.Drawing.Size(6, 65);
|
||||
//
|
||||
// tsbtnClose
|
||||
//
|
||||
this.tsbtnClose.Image = ((System.Drawing.Image)(resources.GetObject("tsbtnClose.Image")));
|
||||
this.tsbtnClose.ImageScaling = System.Windows.Forms.ToolStripItemImageScaling.None;
|
||||
this.tsbtnClose.ImageTransparentColor = System.Drawing.Color.Magenta;
|
||||
this.tsbtnClose.Name = "tsbtnClose";
|
||||
this.tsbtnClose.Size = new System.Drawing.Size(70, 60);
|
||||
this.tsbtnClose.Text = " 关闭 ";
|
||||
this.tsbtnClose.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageAboveText;
|
||||
this.tsbtnClose.Click += new System.EventHandler(this.tsbtnClose_Click);
|
||||
//
|
||||
// statusStrip1
|
||||
//
|
||||
this.statusStrip1.ImageScalingSize = new System.Drawing.Size(24, 24);
|
||||
this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.tsslCount});
|
||||
this.statusStrip1.Location = new System.Drawing.Point(0, 761);
|
||||
this.statusStrip1.Name = "statusStrip1";
|
||||
this.statusStrip1.Padding = new System.Windows.Forms.Padding(2, 0, 14, 0);
|
||||
this.statusStrip1.Size = new System.Drawing.Size(562, 31);
|
||||
this.statusStrip1.TabIndex = 24;
|
||||
this.statusStrip1.Text = "statusStrip1";
|
||||
//
|
||||
// tsslCount
|
||||
//
|
||||
this.tsslCount.Name = "tsslCount";
|
||||
this.tsslCount.Size = new System.Drawing.Size(33, 24);
|
||||
this.tsslCount.Text = "共 ";
|
||||
//
|
||||
// splitContainer1
|
||||
//
|
||||
this.splitContainer1.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.splitContainer1.Location = new System.Drawing.Point(0, 65);
|
||||
this.splitContainer1.Name = "splitContainer1";
|
||||
this.splitContainer1.Orientation = System.Windows.Forms.Orientation.Horizontal;
|
||||
//
|
||||
// splitContainer1.Panel1
|
||||
//
|
||||
this.splitContainer1.Panel1.BackColor = System.Drawing.SystemColors.ActiveCaption;
|
||||
this.splitContainer1.Panel1.Controls.Add(this.cobStepList);
|
||||
this.splitContainer1.Panel1.Controls.Add(this.label1);
|
||||
//
|
||||
// splitContainer1.Panel2
|
||||
//
|
||||
this.splitContainer1.Panel2.Controls.Add(this.groupBox1);
|
||||
this.splitContainer1.Size = new System.Drawing.Size(562, 696);
|
||||
this.splitContainer1.SplitterDistance = 57;
|
||||
this.splitContainer1.TabIndex = 25;
|
||||
//
|
||||
// cobStepList
|
||||
//
|
||||
this.cobStepList.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||
this.cobStepList.FlatStyle = System.Windows.Forms.FlatStyle.Popup;
|
||||
this.cobStepList.FormattingEnabled = true;
|
||||
this.cobStepList.Location = new System.Drawing.Point(128, 15);
|
||||
this.cobStepList.Name = "cobStepList";
|
||||
this.cobStepList.Size = new System.Drawing.Size(336, 26);
|
||||
this.cobStepList.TabIndex = 1;
|
||||
this.cobStepList.SelectedIndexChanged += new System.EventHandler(this.cobStepList_SelectedIndexChanged);
|
||||
//
|
||||
// label1
|
||||
//
|
||||
this.label1.AutoSize = true;
|
||||
this.label1.Location = new System.Drawing.Point(43, 21);
|
||||
this.label1.Name = "label1";
|
||||
this.label1.Size = new System.Drawing.Size(80, 18);
|
||||
this.label1.TabIndex = 0;
|
||||
this.label1.Text = "选择流程";
|
||||
//
|
||||
// groupBox1
|
||||
//
|
||||
this.groupBox1.BackColor = System.Drawing.SystemColors.ActiveCaption;
|
||||
this.groupBox1.Controls.Add(this.dataGridView1);
|
||||
this.groupBox1.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.groupBox1.Location = new System.Drawing.Point(0, 0);
|
||||
this.groupBox1.Name = "groupBox1";
|
||||
this.groupBox1.Size = new System.Drawing.Size(562, 635);
|
||||
this.groupBox1.TabIndex = 15;
|
||||
this.groupBox1.TabStop = false;
|
||||
this.groupBox1.Text = "配方设置";
|
||||
//
|
||||
// dataGridView1
|
||||
//
|
||||
this.dataGridView1.AllowUserToAddRows = false;
|
||||
this.dataGridView1.AllowUserToDeleteRows = false;
|
||||
dataGridViewCellStyle1.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;
|
||||
dataGridViewCellStyle1.BackColor = System.Drawing.SystemColors.Control;
|
||||
dataGridViewCellStyle1.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||
dataGridViewCellStyle1.ForeColor = System.Drawing.SystemColors.WindowText;
|
||||
dataGridViewCellStyle1.SelectionBackColor = System.Drawing.SystemColors.Highlight;
|
||||
dataGridViewCellStyle1.SelectionForeColor = System.Drawing.SystemColors.HighlightText;
|
||||
dataGridViewCellStyle1.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
|
||||
this.dataGridView1.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle1;
|
||||
this.dataGridView1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
|
||||
this.dataGridView1.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
|
||||
this.colProcessCode,
|
||||
this.colName,
|
||||
this.colProdctPrivate,
|
||||
this.colSetParams,
|
||||
this.colStepProcessParams,
|
||||
this.colPrivateProcessParams});
|
||||
dataGridViewCellStyle3.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;
|
||||
dataGridViewCellStyle3.BackColor = System.Drawing.SystemColors.Window;
|
||||
dataGridViewCellStyle3.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||
dataGridViewCellStyle3.ForeColor = System.Drawing.SystemColors.ControlText;
|
||||
dataGridViewCellStyle3.SelectionBackColor = System.Drawing.SystemColors.Highlight;
|
||||
dataGridViewCellStyle3.SelectionForeColor = System.Drawing.SystemColors.HighlightText;
|
||||
dataGridViewCellStyle3.WrapMode = System.Windows.Forms.DataGridViewTriState.False;
|
||||
this.dataGridView1.DefaultCellStyle = dataGridViewCellStyle3;
|
||||
this.dataGridView1.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.dataGridView1.Location = new System.Drawing.Point(3, 24);
|
||||
this.dataGridView1.MultiSelect = false;
|
||||
this.dataGridView1.Name = "dataGridView1";
|
||||
this.dataGridView1.ReadOnly = true;
|
||||
this.dataGridView1.RowHeadersVisible = false;
|
||||
this.dataGridView1.RowHeadersWidth = 62;
|
||||
dataGridViewCellStyle4.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||
this.dataGridView1.RowsDefaultCellStyle = dataGridViewCellStyle4;
|
||||
this.dataGridView1.RowTemplate.Height = 30;
|
||||
this.dataGridView1.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect;
|
||||
this.dataGridView1.Size = new System.Drawing.Size(556, 608);
|
||||
this.dataGridView1.TabIndex = 4;
|
||||
this.dataGridView1.CellContentClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.dataGridView1_CellContentClick);
|
||||
this.dataGridView1.DataBindingComplete += new System.Windows.Forms.DataGridViewBindingCompleteEventHandler(this.dataGridView1_DataBindingComplete);
|
||||
//
|
||||
// colProcessCode
|
||||
//
|
||||
this.colProcessCode.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.None;
|
||||
this.colProcessCode.DataPropertyName = "ProcessCode";
|
||||
dataGridViewCellStyle2.BackColor = System.Drawing.Color.White;
|
||||
dataGridViewCellStyle2.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||
this.colProcessCode.DefaultCellStyle = dataGridViewCellStyle2;
|
||||
this.colProcessCode.HeaderText = "code";
|
||||
this.colProcessCode.MinimumWidth = 8;
|
||||
this.colProcessCode.Name = "colProcessCode";
|
||||
this.colProcessCode.ReadOnly = true;
|
||||
this.colProcessCode.Visible = false;
|
||||
this.colProcessCode.Width = 286;
|
||||
//
|
||||
// colName
|
||||
//
|
||||
this.colName.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill;
|
||||
this.colName.DataPropertyName = "ProcessName";
|
||||
this.colName.HeaderText = "工序名称";
|
||||
this.colName.MinimumWidth = 8;
|
||||
this.colName.Name = "colName";
|
||||
this.colName.ReadOnly = true;
|
||||
//
|
||||
// colProdctPrivate
|
||||
//
|
||||
this.colProdctPrivate.HeaderText = "私有";
|
||||
this.colProdctPrivate.MinimumWidth = 20;
|
||||
this.colProdctPrivate.Name = "colProdctPrivate";
|
||||
this.colProdctPrivate.ReadOnly = true;
|
||||
this.colProdctPrivate.Width = 70;
|
||||
//
|
||||
// colSetParams
|
||||
//
|
||||
this.colSetParams.HeaderText = "配方";
|
||||
this.colSetParams.MinimumWidth = 8;
|
||||
this.colSetParams.Name = "colSetParams";
|
||||
this.colSetParams.ReadOnly = true;
|
||||
this.colSetParams.Text = "设置";
|
||||
this.colSetParams.UseColumnTextForButtonValue = true;
|
||||
this.colSetParams.Width = 150;
|
||||
//
|
||||
// colStepProcessParams
|
||||
//
|
||||
this.colStepProcessParams.DataPropertyName = "ProcessParams";
|
||||
this.colStepProcessParams.HeaderText = "ProcessP";
|
||||
this.colStepProcessParams.MinimumWidth = 8;
|
||||
this.colStepProcessParams.Name = "colStepProcessParams";
|
||||
this.colStepProcessParams.ReadOnly = true;
|
||||
this.colStepProcessParams.Visible = false;
|
||||
this.colStepProcessParams.Width = 150;
|
||||
//
|
||||
// colPrivateProcessParams
|
||||
//
|
||||
this.colPrivateProcessParams.HeaderText = "ProductP";
|
||||
this.colPrivateProcessParams.MinimumWidth = 8;
|
||||
this.colPrivateProcessParams.Name = "colPrivateProcessParams";
|
||||
this.colPrivateProcessParams.ReadOnly = true;
|
||||
this.colPrivateProcessParams.Visible = false;
|
||||
this.colPrivateProcessParams.Width = 150;
|
||||
//
|
||||
// FrmProductStep
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(9F, 18F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(562, 792);
|
||||
this.Controls.Add(this.splitContainer1);
|
||||
this.Controls.Add(this.statusStrip1);
|
||||
this.Controls.Add(this.toolStrip1);
|
||||
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
|
||||
this.MaximizeBox = false;
|
||||
this.MinimizeBox = false;
|
||||
this.Name = "FrmProductStep";
|
||||
this.ShowIcon = false;
|
||||
this.ShowInTaskbar = false;
|
||||
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
|
||||
this.Text = "修复流程与配方设置";
|
||||
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.FrmProductStep_FormClosing);
|
||||
this.Load += new System.EventHandler(this.FrmProductInfo_Load);
|
||||
this.toolStrip1.ResumeLayout(false);
|
||||
this.toolStrip1.PerformLayout();
|
||||
this.statusStrip1.ResumeLayout(false);
|
||||
this.statusStrip1.PerformLayout();
|
||||
this.splitContainer1.Panel1.ResumeLayout(false);
|
||||
this.splitContainer1.Panel1.PerformLayout();
|
||||
this.splitContainer1.Panel2.ResumeLayout(false);
|
||||
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).EndInit();
|
||||
this.splitContainer1.ResumeLayout(false);
|
||||
this.groupBox1.ResumeLayout(false);
|
||||
((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).EndInit();
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
private System.Windows.Forms.ToolStrip toolStrip1;
|
||||
private System.Windows.Forms.ToolStripSeparator toolStripSeparator4;
|
||||
private System.Windows.Forms.ToolStripButton tsbtnClose;
|
||||
private System.Windows.Forms.ToolStripButton tsbtnSave;
|
||||
private System.Windows.Forms.StatusStrip statusStrip1;
|
||||
private System.Windows.Forms.ToolStripStatusLabel tsslCount;
|
||||
private System.Windows.Forms.SplitContainer splitContainer1;
|
||||
private System.Windows.Forms.ComboBox cobStepList;
|
||||
private System.Windows.Forms.Label label1;
|
||||
private System.Windows.Forms.GroupBox groupBox1;
|
||||
private System.Windows.Forms.DataGridView dataGridView1;
|
||||
private System.Windows.Forms.ToolStripButton tsbtnCls;
|
||||
private System.Windows.Forms.ToolStripSeparator toolStripSeparator1;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn colProcessCode;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn colName;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn colProdctPrivate;
|
||||
private System.Windows.Forms.DataGridViewButtonColumn colSetParams;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn colStepProcessParams;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn colPrivateProcessParams;
|
||||
}
|
||||
}
|
221
halftoneproject-master/AssistClient/FrmProductStep.cs
Normal file
221
halftoneproject-master/AssistClient/FrmProductStep.cs
Normal file
@ -0,0 +1,221 @@
|
||||
using Models;
|
||||
using Newtonsoft.Json;
|
||||
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 AssistClient
|
||||
{
|
||||
public partial class FrmProductStep : Form
|
||||
{
|
||||
Service.ProductService service = new Service.ProductService();
|
||||
Models.Product model = new Models.Product();
|
||||
private int? assistStepId;// stepId, reviseStepId;
|
||||
/// <summary>
|
||||
/// 产品配方 <StepId,List<Models.ProductProcess>>
|
||||
/// </summary>
|
||||
Dictionary<int, List<Models.ProductProcess>> dicProductProcess = new Dictionary<int, List<Models.ProductProcess>>();
|
||||
|
||||
public FrmProductStep(Models.Product m)
|
||||
{
|
||||
InitializeComponent();
|
||||
dataGridView1.AutoGenerateColumns = false;
|
||||
//显示行号与列宽度自动调整
|
||||
dataGridView1.RowHeadersVisible = true;
|
||||
dataGridView1.RowHeadersWidthSizeMode = DataGridViewRowHeadersWidthSizeMode.AutoSizeToAllHeaders;
|
||||
dataGridView1.RowPostPaint += (sender, e) =>
|
||||
{
|
||||
Utils.Util.showRowNum_onDataGrid_RowPostPaint(this.dataGridView1, sender, e);
|
||||
};
|
||||
|
||||
model = m;
|
||||
initDataView();
|
||||
}
|
||||
private void initDataView()
|
||||
{
|
||||
//显示的数据
|
||||
this.cobStepList.DisplayMember = "Name";
|
||||
this.cobStepList.ValueMember = "Id";
|
||||
|
||||
var list = service.GetStepList(1);
|
||||
foreach (var item in list)
|
||||
dicProductProcess.Add(item.Id, new List<Models.ProductProcess>());
|
||||
|
||||
if (model.AssistStepId != null)
|
||||
{
|
||||
this.assistStepId = (int)model.AssistStepId;
|
||||
dicProductProcess[(int)model.AssistStepId] = cv2ProductProcess(model.ProductAssistProcessList);
|
||||
}
|
||||
this.cobStepList.DataSource = list;
|
||||
|
||||
if (model.StepId != null)
|
||||
this.cobStepList.SelectedValue = (int)model.StepId;
|
||||
}
|
||||
|
||||
private List<ProductProcess> cv2ProductProcess(List<ProductAssistProcess> list)
|
||||
{
|
||||
List<ProductProcess> result=new List<ProductProcess>();
|
||||
foreach (var item in list)
|
||||
result.Add(item);
|
||||
|
||||
return result;
|
||||
}
|
||||
private List<ProductAssistProcess> cv2ProductAssistProcess(List<ProductProcess> list)
|
||||
{
|
||||
string json;
|
||||
List<ProductAssistProcess> result = new List<ProductAssistProcess>();
|
||||
foreach (var item in list)
|
||||
{
|
||||
json=JsonConvert.SerializeObject(item);
|
||||
result.Add(JsonConvert.DeserializeObject<ProductAssistProcess>(json));
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
private void FrmProductInfo_Load(object sender, EventArgs e)
|
||||
{
|
||||
|
||||
}
|
||||
private void cobStepList_SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
var list = this.cobStepList.DataSource as List<Models.Step>;
|
||||
int liIndex=this.cobStepList.SelectedIndex;
|
||||
if (liIndex < 0)
|
||||
return;
|
||||
dataGridView1.DataSource = new BindingSource(list[liIndex].ProcessList, null);
|
||||
tsslCount.Text = $"共{list[liIndex].ProcessList.Count}条工序";
|
||||
|
||||
this.assistStepId = (int)this.cobStepList.SelectedValue;
|
||||
}
|
||||
private void tsbtnSave_Click(object sender, EventArgs e)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (assistStepId == null)
|
||||
throw new Exception("请设置产品流程!");
|
||||
model.AssistStepId = assistStepId;
|
||||
model.ProductAssistProcessList = cv2ProductAssistProcess(dicProductProcess[(int)assistStepId]);
|
||||
//model.ModifyUserCode = Config.loginUser.Code;
|
||||
//model.ModifyTime = DateTime.Now;
|
||||
bool result = service.UpdateNav(model);
|
||||
if (!result)
|
||||
throw new Exception("保存失败!");
|
||||
|
||||
MessageBox.Show("保存成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||||
this.Close();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MessageBox.Show(ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
}
|
||||
}
|
||||
private void tsbtnCls_Click(object sender, EventArgs e)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (this.dataGridView1.CurrentRow == null)
|
||||
throw new Exception("请选择要清除私有产品配方的工序!");
|
||||
if(this.dataGridView1.CurrentRow.Cells["colPrivateProcessParams"].Value.ToString() == "")
|
||||
throw new Exception("此工序未配置私有配方,无需清除!");
|
||||
|
||||
//
|
||||
int liNewStepId = (int)this.cobStepList.SelectedValue;
|
||||
string processCode= this.dataGridView1.CurrentRow.Cells[0].Value.ToString();
|
||||
var m = dicProductProcess[liNewStepId].Find(x => x.ProcessCode == processCode);
|
||||
if (m != null)
|
||||
{
|
||||
dicProductProcess[liNewStepId].Remove(m);
|
||||
this.dataGridView1.CurrentRow.Cells["colProdctPrivate"].Value = "";
|
||||
this.dataGridView1.CurrentRow.Cells["colPrivateProcessParams"].Value = "";
|
||||
MessageBox.Show("清除成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MessageBox.Show(ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
}
|
||||
}
|
||||
private void tsbtnClose_Click(object sender, EventArgs e)
|
||||
{
|
||||
this.Close();
|
||||
}
|
||||
|
||||
private void dataGridView1_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
|
||||
{
|
||||
if (this.cobStepList.SelectedValue == null)
|
||||
return;
|
||||
int liNewStepId = (int)this.cobStepList.SelectedValue;
|
||||
string processCode;
|
||||
for (int i = 0; i < dataGridView1.Rows.Count; i++)
|
||||
{
|
||||
processCode = dataGridView1.Rows[i].Cells[0].Value.ToString();
|
||||
//dataGridView1.Rows[i].Cells[1].Value = Config.dicDevType[processCode];
|
||||
|
||||
var m= dicProductProcess[liNewStepId].Find(x=>x.ProcessCode==processCode);
|
||||
if (m != null)
|
||||
{
|
||||
dataGridView1.Rows[i].Cells["colProdctPrivate"].Value = "是";
|
||||
dataGridView1.Rows[i].Cells["colPrivateProcessParams"].Value = m.ProcessParams;
|
||||
}
|
||||
else
|
||||
{
|
||||
dataGridView1.Rows[i].Cells["colProdctPrivate"].Value = "";
|
||||
dataGridView1.Rows[i].Cells["colPrivateProcessParams"].Value = "";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
|
||||
{
|
||||
int liNewStepId = (int)this.cobStepList.SelectedValue;
|
||||
int Index = this.dataGridView1.CurrentRow.Index;//获取当前选中行的索引
|
||||
if (Index < this.dataGridView1.Rows.Count && this.dataGridView1.CurrentCell.Value.ToString() == "设置")
|
||||
{
|
||||
string processCode = this.dataGridView1.Rows[Index].Cells["colProcessCode"].Value.ToString();
|
||||
string processParams = "";
|
||||
if (this.dataGridView1.Rows[Index].Cells["colPrivateProcessParams"].Value != null && this.dataGridView1.Rows[Index].Cells["colPrivateProcessParams"].Value.ToString()!="")
|
||||
processParams = this.dataGridView1.Rows[Index].Cells["colPrivateProcessParams"].Value.ToString();
|
||||
else if (this.dataGridView1.Rows[Index].Cells["colStepProcessParams"].Value != null && this.dataGridView1.Rows[Index].Cells["colStepProcessParams"].Value.ToString()!="")
|
||||
processParams = this.dataGridView1.Rows[Index].Cells["colStepProcessParams"].Value.ToString();
|
||||
FrmSetParams frm = new FrmSetParams(processCode, processParams);
|
||||
if (frm.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
this.dataGridView1.Rows[Index].Cells["colProdctPrivate"].Value = "是";
|
||||
this.dataGridView1.Rows[Index].Cells["colPrivateProcessParams"].Value = frm.ParamsData;
|
||||
var m = dicProductProcess[liNewStepId].Find(x => x.ProcessCode == processCode);
|
||||
if (m == null)
|
||||
dicProductProcess[liNewStepId].Add(new Models.ProductProcess()
|
||||
{
|
||||
Pid = model.Id,
|
||||
ProcessCode = processCode,
|
||||
ProcessParams = frm.ParamsData,
|
||||
ModifyUserCode=Config.loginUser.Code,
|
||||
CreateUserCode = Config.loginUser.Code,
|
||||
});
|
||||
else
|
||||
{
|
||||
m.ProcessParams = frm.ParamsData;
|
||||
m.ModifyUserCode = Config.loginUser.Code;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void FrmProductStep_FormClosing(object sender, FormClosingEventArgs e)
|
||||
{
|
||||
if (MessageBox.Show($"确认修改已保存,是否退出?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) != DialogResult.Yes)
|
||||
{
|
||||
e.Cancel = true;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
189
halftoneproject-master/AssistClient/FrmProductStep.resx
Normal file
189
halftoneproject-master/AssistClient/FrmProductStep.resx
Normal file
@ -0,0 +1,189 @@
|
||||
<?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="toolStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>17, 17</value>
|
||||
</metadata>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="tsbtnSave.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAIcSURBVFhH7ZdNaxNBGMefIpQKlkK/QLFiL4I3Wyx9uYhJ
|
||||
P0COZtt52Z1ntYfiN+hN9KL4AXzDFgS/gDepR2uhB4+9Fc+W0oqofWaYbHaaSbKzWYRA/vBjk5l5/vvP
|
||||
7LObBEbyaAzidIWol0aoGoj0lvULUKMxDjz5BBL/VYLAbetcUBLvdJgMzj3rXkBCLWeFHI/oE7wBmbwN
|
||||
R70Ght+NzzoeQxxP2TP0UZwuZQEEvrKj5STUk8xLqg92tI/yAaR6b0fLSaoXbS/jF9mZHsoH4LhjR4uL
|
||||
4wbtXGxeC3zuBGjiKbB0xsx11SABtrauUt1fU6sl8Fnm1YIlX2hmzMx7NUgAxiap7idxZt4L9TTzclCP
|
||||
zbxXTg/gOztaTGl6DZrsj6nVcprQ4aOZ98oN0GNhF5nb1javxJc5rzY9d9YNoLdz0c6EieNtqv2R82oT
|
||||
EECjm+qQ2KcHzLf+0DqBBxCx37a+k8AA1TOcASJ2UorWXZEnKIA2kWoNOJ8uRZLcJJ89xzNsB6ixBpXE
|
||||
1PEMvAS/qKs3QaYLwfBknvzq2ddyi+FswioJDHBGl6AJ4uGcaSh9LIpeH8d3gauvjuf/b0KFjmfwDkj1
|
||||
AKS8ARs4a46X0eM+xKPrVE8/cs0jumCA/I9SF/2dEIbvIWRQu/ZsHulbx1tUJb0CRNEELfrcWVQRTXZO
|
||||
u1yzZ+uiRuMKLV6lfvD/7SqLxPumL0ZyBHABC1BmYPLlTLYAAAAASUVORK5CYII=
|
||||
</value>
|
||||
</data>
|
||||
<data name="tsbtnCls.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAGSSURBVFhH7dTdK4NhGMfx/QUM81pS8vIfiCQtL1lpJQcc
|
||||
SKFma9uzNRpLSikHThxISCLGrGlZHMgi5LX2R3gNEaWUkn62XBxM9563ew7kW59Wz3Pf17V2MM1/vIJQ
|
||||
HIFQitgnPfq93q0liEevkt9bdxFY6Ejyeu0shBg6yr+XtgJIRVf49dySD7noqvqemvKgFI1Q3qMxF2rR
|
||||
KPk9NOaAFxopvQH/KdY9TtwbsvloyJL+Z+VZOcGXUJ8Dd/WZXND4xPX7jhFvzS3gtlanTo1O/BdwLx2B
|
||||
Jdhjx40+QzFawa7Xewgxqy4brqvTZaMV7FwLB5Aq4LTiqipNMlrBzjG/D7n8ggWXlVpRtIKdfW4PSvls
|
||||
FlxUaJloBTvr7G4kCmosW804L0/9gVYkzjyzAx68FhPOylK+0XjxTFPhiGl6Gzwsmj+/BI2WXtdkGLzQ
|
||||
SPl1TGxBLRqlvPbxTShFI9TXOrYBuegqv5pHQ5CKrvDPOBKEGDqavAzDAbDQkeRXN+RHPHr1e+kHfZEo
|
||||
xD7p0V9Io/kAi8laAb3BwlUAAAAASUVORK5CYII=
|
||||
</value>
|
||||
</data>
|
||||
<data name="tsbtnClose.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAJQSURBVFhHxZfNctNAEIQFb0UuYEu8DFwoiOwrVPGbFPAE
|
||||
vKhjV9huzSiz69aubA501XfwuGdms7ORtV3S8/9M/qHQs0T8/l9ArVKIzwbqMA4vj2P/5rDb3FgIcs+1
|
||||
UIfb/sVx//rtw4f+lYUoGLi609j/ftwPj85p139B3FQWXQuFWnnt4Y99NZmwqmiYjfvhK12TyuItKNRQ
|
||||
tR/G7Qbf03jcbd8pE7hyJ6jyL4+gJzw0Yz7K5JxuL9oJCjmqloOe8CFhOgOV1YLTuP0Gn6ls6lDwqhpO
|
||||
3NU8cWFeTkr8blYoNn6qkTwq1ynOlSxQ3wm9CKrZ/Pw8zQXyQq2dGIcfZp2FmPI6C/9RWfM5CDXnOPb3
|
||||
ZsUz5F55nMr5yT5EqPY8+49AfecsjGzuUwYiVGsRNRrN2UMFI1RrvorinKjaQAZLqLTV1TlH4LU0SNV0
|
||||
ZFBBteYN4DE7pGpFZFBBpZl+Uk0j8JgdUrUiMlhCpZ/QX6qhAl5Lg1RNRwYj1CXNnZWLkEGHSjPNXlQu
|
||||
AblWBpI9VBBQreaYd+tcNBZxFmAQSv/HP1VBJ25xa0SoZVYo6xU/MAClVdef7fl8qeYi9LNBNN8Nd6qA
|
||||
s7ClVHtkw51ZIeYVBVo/qfV5Qs1FpB5mpZA4vZLt+88qwUmJS3OMUPCqGg56mXVKOrzf3CijkxLWPtsB
|
||||
hRxVy0FP+JhQfy0/m9saqNp5yl7LKxeTNT+pS1BL58qvaE/GdF2KhvSaNc8pqSy+Fgq1strF1Ww24rqE
|
||||
C6TPxxQLXgOFmryc2pWs67ruL9BDjecFstIGAAAAAElFTkSuQmCC
|
||||
</value>
|
||||
</data>
|
||||
<metadata name="statusStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>996, 17</value>
|
||||
</metadata>
|
||||
<metadata name="colProcessCode.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="colName.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="colProdctPrivate.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="colSetParams.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="colStepProcessParams.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="colPrivateProcessParams.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
</root>
|
54
halftoneproject-master/AssistClient/FrmSetParams.Designer.cs
generated
Normal file
54
halftoneproject-master/AssistClient/FrmSetParams.Designer.cs
generated
Normal file
@ -0,0 +1,54 @@
|
||||
namespace AssistClient
|
||||
{
|
||||
partial class FrmSetParams
|
||||
{
|
||||
/// <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.SuspendLayout();
|
||||
//
|
||||
// FrmSetParams
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(9F, 18F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.BackColor = System.Drawing.SystemColors.ActiveCaption;
|
||||
this.ClientSize = new System.Drawing.Size(778, 744);
|
||||
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
|
||||
this.MaximizeBox = false;
|
||||
this.MinimizeBox = false;
|
||||
this.Name = "FrmSetParams";
|
||||
this.ShowIcon = false;
|
||||
this.ShowInTaskbar = false;
|
||||
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
|
||||
this.Text = "设置工序参数";
|
||||
this.Load += new System.EventHandler(this.FrmSetParams_Load);
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
132
halftoneproject-master/AssistClient/FrmSetParams.cs
Normal file
132
halftoneproject-master/AssistClient/FrmSetParams.cs
Normal file
@ -0,0 +1,132 @@
|
||||
using Newtonsoft.Json.Linq;
|
||||
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 AssistClient
|
||||
{
|
||||
public partial class FrmSetParams : Form
|
||||
{
|
||||
public string ParamsData;
|
||||
private string ProcessCode;
|
||||
private string ProcessParams;
|
||||
|
||||
private UI.UICodeScannerDev uiCodeScanner1;
|
||||
private UI.UIAxisDev uiAxis1;
|
||||
private UI.UIIOCardDev uiIOCard1;
|
||||
private UI.UILightDev uiLight1;
|
||||
private UI.UIScannerDev uiScanner1;
|
||||
private UI.UISizeLib uiSizeLib1;
|
||||
private UI.UIForLib uiForLib1;
|
||||
private UI.UIIFLib uiIFLib1;
|
||||
public FrmSetParams(string processCode,string processParams)
|
||||
{
|
||||
InitializeComponent();
|
||||
ProcessCode= processCode;
|
||||
ProcessParams= processParams;
|
||||
}
|
||||
private void initData()
|
||||
{
|
||||
switch (ProcessCode)
|
||||
{
|
||||
case "CodeScanner":
|
||||
uiCodeScanner1= new UI.UICodeScannerDev();
|
||||
this.Controls.Add(uiCodeScanner1);
|
||||
uiCodeScanner1.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
uiCodeScanner1.Location = new System.Drawing.Point(0, 0);
|
||||
uiCodeScanner1.init();
|
||||
break;
|
||||
case "IOCard":
|
||||
uiIOCard1 = new UI.UIIOCardDev();
|
||||
this.Controls.Add(uiIOCard1);
|
||||
uiIOCard1.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
uiIOCard1.Location = new System.Drawing.Point(0, 0);
|
||||
uiIOCard1.GetParamsEvent = save;
|
||||
uiIOCard1.init();
|
||||
uiIOCard1.setParamsData(ProcessParams);
|
||||
break;
|
||||
case "Axis":
|
||||
uiAxis1 = new UI.UIAxisDev();
|
||||
this.Controls.Add(uiAxis1);
|
||||
uiAxis1.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
uiAxis1.Location = new System.Drawing.Point(0, 0);
|
||||
uiAxis1.GetParamsEvent = save;
|
||||
uiAxis1.init();
|
||||
uiAxis1.setParamsData(ProcessParams);
|
||||
break;
|
||||
case "Light":
|
||||
uiLight1 = new UI.UILightDev();
|
||||
this.Controls.Add(uiLight1);
|
||||
uiLight1.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
uiLight1.Location = new System.Drawing.Point(0, 0);
|
||||
uiLight1.GetParamsEvent = save;
|
||||
uiLight1.init();
|
||||
uiLight1.setParamsData(ProcessParams);
|
||||
break;
|
||||
case "Scanner_CC":
|
||||
uiScanner1 = new UI.UIScannerDev();
|
||||
this.Controls.Add(uiScanner1);
|
||||
uiScanner1.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
uiScanner1.Location = new System.Drawing.Point(0, 0);
|
||||
uiScanner1.GetParamsEvent = save;
|
||||
uiScanner1.init(Device.ScannerDev.ScannerType.CC);
|
||||
uiScanner1.setParamsData(ProcessParams);
|
||||
break;
|
||||
case "Size":
|
||||
uiSizeLib1 = new UI.UISizeLib();
|
||||
this.Controls.Add(uiSizeLib1);
|
||||
uiSizeLib1.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
uiSizeLib1.Location = new System.Drawing.Point(0, 0);
|
||||
uiSizeLib1.GetParamsEvent = save;
|
||||
uiSizeLib1.init();
|
||||
uiSizeLib1.setParamsData(ProcessParams);
|
||||
break;
|
||||
case "For":
|
||||
uiForLib1 = new UI.UIForLib();
|
||||
this.Controls.Add(uiForLib1);
|
||||
uiForLib1.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
uiForLib1.Location = new System.Drawing.Point(0, 0);
|
||||
uiForLib1.GetParamsEvent = save;
|
||||
uiForLib1.init();
|
||||
uiForLib1.setParamsData(ProcessParams);
|
||||
break;
|
||||
case "If":
|
||||
uiIFLib1 = new UI.UIIFLib();
|
||||
this.Controls.Add(uiIFLib1);
|
||||
uiIFLib1.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
uiIFLib1.Location = new System.Drawing.Point(0, 0);
|
||||
uiIFLib1.GetParamsEvent = save;
|
||||
uiIFLib1.init();
|
||||
uiIFLib1.setParamsData(ProcessParams);
|
||||
break;
|
||||
default:
|
||||
throw new Exception("不支持的工序类型!");
|
||||
}
|
||||
}
|
||||
|
||||
private void FrmSetParams_Load(object sender, EventArgs e)
|
||||
{
|
||||
try
|
||||
{
|
||||
initData();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MessageBox.Show(ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
this.Close();
|
||||
}
|
||||
}
|
||||
private void save(string json)
|
||||
{
|
||||
this.ParamsData = json;
|
||||
this.DialogResult = DialogResult.OK;
|
||||
this.Close();
|
||||
}
|
||||
}
|
||||
}
|
120
halftoneproject-master/AssistClient/FrmSetParams.resx
Normal file
120
halftoneproject-master/AssistClient/FrmSetParams.resx
Normal file
@ -0,0 +1,120 @@
|
||||
<?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>
|
||||
</root>
|
532
halftoneproject-master/AssistClient/FrmStepInfo.Designer.cs
generated
Normal file
532
halftoneproject-master/AssistClient/FrmStepInfo.Designer.cs
generated
Normal file
@ -0,0 +1,532 @@
|
||||
namespace AssistClient
|
||||
{
|
||||
partial class FrmStepInfo
|
||||
{
|
||||
/// <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();
|
||||
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle29 = new System.Windows.Forms.DataGridViewCellStyle();
|
||||
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle30 = new System.Windows.Forms.DataGridViewCellStyle();
|
||||
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle31 = new System.Windows.Forms.DataGridViewCellStyle();
|
||||
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle32 = new System.Windows.Forms.DataGridViewCellStyle();
|
||||
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle34 = new System.Windows.Forms.DataGridViewCellStyle();
|
||||
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle35 = new System.Windows.Forms.DataGridViewCellStyle();
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FrmStepInfo));
|
||||
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle33 = new System.Windows.Forms.DataGridViewCellStyle();
|
||||
this.groupBox2 = new System.Windows.Forms.GroupBox();
|
||||
this.dataGridView1 = new System.Windows.Forms.DataGridView();
|
||||
this.groupBox1 = new System.Windows.Forms.GroupBox();
|
||||
this.dataGridView2 = new System.Windows.Forms.DataGridView();
|
||||
this.btnInsert = new System.Windows.Forms.Button();
|
||||
this.btnDel = new System.Windows.Forms.Button();
|
||||
this.toolStrip1 = new System.Windows.Forms.ToolStrip();
|
||||
this.tsbtnSave = new System.Windows.Forms.ToolStripButton();
|
||||
this.toolStripSeparator4 = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.tsbtnDebug = new System.Windows.Forms.ToolStripButton();
|
||||
this.tsbtnClose = new System.Windows.Forms.ToolStripButton();
|
||||
this.splitContainer1 = new System.Windows.Forms.SplitContainer();
|
||||
this.txtName = new System.Windows.Forms.TextBox();
|
||||
this.label2 = new System.Windows.Forms.Label();
|
||||
this.txtCode = new System.Windows.Forms.TextBox();
|
||||
this.label1 = new System.Windows.Forms.Label();
|
||||
this.btnAdd = new System.Windows.Forms.Button();
|
||||
this.btnDown = new System.Windows.Forms.Button();
|
||||
this.btnUp = new System.Windows.Forms.Button();
|
||||
this.statusStrip1 = new System.Windows.Forms.StatusStrip();
|
||||
this.toolStripStatusLabel1 = new System.Windows.Forms.ToolStripStatusLabel();
|
||||
this.colProcessCode = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.colProcessName = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.colTypeName = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.colSetParams = new System.Windows.Forms.DataGridViewButtonColumn();
|
||||
this.colProcessParams = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.label3 = new System.Windows.Forms.Label();
|
||||
this.numStartTimeIndex = new System.Windows.Forms.NumericUpDown();
|
||||
this.toolTip1 = new System.Windows.Forms.ToolTip(this.components);
|
||||
this.groupBox2.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).BeginInit();
|
||||
this.groupBox1.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.dataGridView2)).BeginInit();
|
||||
this.toolStrip1.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit();
|
||||
this.splitContainer1.Panel1.SuspendLayout();
|
||||
this.splitContainer1.Panel2.SuspendLayout();
|
||||
this.splitContainer1.SuspendLayout();
|
||||
this.statusStrip1.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.numStartTimeIndex)).BeginInit();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// groupBox2
|
||||
//
|
||||
this.groupBox2.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||
| System.Windows.Forms.AnchorStyles.Left)));
|
||||
this.groupBox2.BackColor = System.Drawing.SystemColors.ActiveCaption;
|
||||
this.groupBox2.Controls.Add(this.dataGridView1);
|
||||
this.groupBox2.Location = new System.Drawing.Point(3, 3);
|
||||
this.groupBox2.Name = "groupBox2";
|
||||
this.groupBox2.Size = new System.Drawing.Size(446, 716);
|
||||
this.groupBox2.TabIndex = 13;
|
||||
this.groupBox2.TabStop = false;
|
||||
this.groupBox2.Text = "工序库";
|
||||
//
|
||||
// dataGridView1
|
||||
//
|
||||
this.dataGridView1.AllowUserToAddRows = false;
|
||||
this.dataGridView1.AllowUserToDeleteRows = false;
|
||||
this.dataGridView1.AllowUserToResizeRows = false;
|
||||
dataGridViewCellStyle29.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;
|
||||
dataGridViewCellStyle29.BackColor = System.Drawing.SystemColors.Control;
|
||||
dataGridViewCellStyle29.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||
dataGridViewCellStyle29.ForeColor = System.Drawing.SystemColors.WindowText;
|
||||
dataGridViewCellStyle29.SelectionBackColor = System.Drawing.SystemColors.Highlight;
|
||||
dataGridViewCellStyle29.SelectionForeColor = System.Drawing.SystemColors.HighlightText;
|
||||
dataGridViewCellStyle29.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
|
||||
this.dataGridView1.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle29;
|
||||
this.dataGridView1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
|
||||
dataGridViewCellStyle30.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;
|
||||
dataGridViewCellStyle30.BackColor = System.Drawing.SystemColors.Window;
|
||||
dataGridViewCellStyle30.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||
dataGridViewCellStyle30.ForeColor = System.Drawing.SystemColors.ControlText;
|
||||
dataGridViewCellStyle30.SelectionBackColor = System.Drawing.SystemColors.Highlight;
|
||||
dataGridViewCellStyle30.SelectionForeColor = System.Drawing.SystemColors.HighlightText;
|
||||
dataGridViewCellStyle30.WrapMode = System.Windows.Forms.DataGridViewTriState.False;
|
||||
this.dataGridView1.DefaultCellStyle = dataGridViewCellStyle30;
|
||||
this.dataGridView1.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.dataGridView1.Location = new System.Drawing.Point(3, 24);
|
||||
this.dataGridView1.MultiSelect = false;
|
||||
this.dataGridView1.Name = "dataGridView1";
|
||||
this.dataGridView1.ReadOnly = true;
|
||||
this.dataGridView1.RowHeadersVisible = false;
|
||||
this.dataGridView1.RowHeadersWidth = 62;
|
||||
dataGridViewCellStyle31.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||
this.dataGridView1.RowsDefaultCellStyle = dataGridViewCellStyle31;
|
||||
this.dataGridView1.RowTemplate.Height = 30;
|
||||
this.dataGridView1.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect;
|
||||
this.dataGridView1.Size = new System.Drawing.Size(440, 689);
|
||||
this.dataGridView1.TabIndex = 4;
|
||||
//
|
||||
// groupBox1
|
||||
//
|
||||
this.groupBox1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||
| System.Windows.Forms.AnchorStyles.Left)));
|
||||
this.groupBox1.BackColor = System.Drawing.SystemColors.ActiveCaption;
|
||||
this.groupBox1.Controls.Add(this.dataGridView2);
|
||||
this.groupBox1.Location = new System.Drawing.Point(558, 3);
|
||||
this.groupBox1.Name = "groupBox1";
|
||||
this.groupBox1.Size = new System.Drawing.Size(608, 716);
|
||||
this.groupBox1.TabIndex = 14;
|
||||
this.groupBox1.TabStop = false;
|
||||
this.groupBox1.Text = "流程配置";
|
||||
//
|
||||
// dataGridView2
|
||||
//
|
||||
this.dataGridView2.AllowUserToAddRows = false;
|
||||
this.dataGridView2.AllowUserToDeleteRows = false;
|
||||
dataGridViewCellStyle32.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;
|
||||
dataGridViewCellStyle32.BackColor = System.Drawing.SystemColors.Control;
|
||||
dataGridViewCellStyle32.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||
dataGridViewCellStyle32.ForeColor = System.Drawing.SystemColors.WindowText;
|
||||
dataGridViewCellStyle32.SelectionBackColor = System.Drawing.SystemColors.Highlight;
|
||||
dataGridViewCellStyle32.SelectionForeColor = System.Drawing.SystemColors.HighlightText;
|
||||
dataGridViewCellStyle32.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
|
||||
this.dataGridView2.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle32;
|
||||
this.dataGridView2.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
|
||||
this.dataGridView2.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
|
||||
this.colProcessCode,
|
||||
this.colProcessName,
|
||||
this.colTypeName,
|
||||
this.colSetParams,
|
||||
this.colProcessParams});
|
||||
dataGridViewCellStyle34.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;
|
||||
dataGridViewCellStyle34.BackColor = System.Drawing.SystemColors.Window;
|
||||
dataGridViewCellStyle34.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||
dataGridViewCellStyle34.ForeColor = System.Drawing.SystemColors.ControlText;
|
||||
dataGridViewCellStyle34.SelectionBackColor = System.Drawing.SystemColors.Highlight;
|
||||
dataGridViewCellStyle34.SelectionForeColor = System.Drawing.SystemColors.HighlightText;
|
||||
dataGridViewCellStyle34.WrapMode = System.Windows.Forms.DataGridViewTriState.False;
|
||||
this.dataGridView2.DefaultCellStyle = dataGridViewCellStyle34;
|
||||
this.dataGridView2.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.dataGridView2.EditMode = System.Windows.Forms.DataGridViewEditMode.EditOnEnter;
|
||||
this.dataGridView2.Location = new System.Drawing.Point(3, 24);
|
||||
this.dataGridView2.MultiSelect = false;
|
||||
this.dataGridView2.Name = "dataGridView2";
|
||||
this.dataGridView2.RowHeadersVisible = false;
|
||||
this.dataGridView2.RowHeadersWidth = 62;
|
||||
dataGridViewCellStyle35.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||
this.dataGridView2.RowsDefaultCellStyle = dataGridViewCellStyle35;
|
||||
this.dataGridView2.RowTemplate.Height = 30;
|
||||
this.dataGridView2.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect;
|
||||
this.dataGridView2.Size = new System.Drawing.Size(602, 689);
|
||||
this.dataGridView2.TabIndex = 3;
|
||||
this.dataGridView2.CellContentClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.dataGridView2_CellContentClick);
|
||||
this.dataGridView2.CellEndEdit += new System.Windows.Forms.DataGridViewCellEventHandler(this.dataGridView2_CellEndEdit);
|
||||
this.dataGridView2.DataBindingComplete += new System.Windows.Forms.DataGridViewBindingCompleteEventHandler(this.dataGridView2_DataBindingComplete);
|
||||
//
|
||||
// btnInsert
|
||||
//
|
||||
this.btnInsert.BackColor = System.Drawing.SystemColors.ButtonFace;
|
||||
this.btnInsert.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("btnInsert.BackgroundImage")));
|
||||
this.btnInsert.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Center;
|
||||
this.btnInsert.ImageAlign = System.Drawing.ContentAlignment.TopCenter;
|
||||
this.btnInsert.Location = new System.Drawing.Point(454, 186);
|
||||
this.btnInsert.Name = "btnInsert";
|
||||
this.btnInsert.Size = new System.Drawing.Size(88, 92);
|
||||
this.btnInsert.TabIndex = 15;
|
||||
this.btnInsert.Text = "插入->>";
|
||||
this.btnInsert.TextAlign = System.Drawing.ContentAlignment.BottomCenter;
|
||||
this.btnInsert.UseVisualStyleBackColor = false;
|
||||
this.btnInsert.Click += new System.EventHandler(this.btnInsert_Click);
|
||||
//
|
||||
// btnDel
|
||||
//
|
||||
this.btnDel.BackColor = System.Drawing.SystemColors.ButtonFace;
|
||||
this.btnDel.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("btnDel.BackgroundImage")));
|
||||
this.btnDel.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Center;
|
||||
this.btnDel.Location = new System.Drawing.Point(454, 285);
|
||||
this.btnDel.Name = "btnDel";
|
||||
this.btnDel.Size = new System.Drawing.Size(88, 93);
|
||||
this.btnDel.TabIndex = 16;
|
||||
this.btnDel.Text = "<<-移除";
|
||||
this.btnDel.TextAlign = System.Drawing.ContentAlignment.BottomCenter;
|
||||
this.btnDel.UseVisualStyleBackColor = false;
|
||||
this.btnDel.Click += new System.EventHandler(this.btnDel_Click);
|
||||
//
|
||||
// toolStrip1
|
||||
//
|
||||
this.toolStrip1.BackColor = System.Drawing.SystemColors.GradientInactiveCaption;
|
||||
this.toolStrip1.ImageScalingSize = new System.Drawing.Size(32, 32);
|
||||
this.toolStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.tsbtnSave,
|
||||
this.toolStripSeparator4,
|
||||
this.tsbtnDebug,
|
||||
this.tsbtnClose});
|
||||
this.toolStrip1.LayoutStyle = System.Windows.Forms.ToolStripLayoutStyle.HorizontalStackWithOverflow;
|
||||
this.toolStrip1.Location = new System.Drawing.Point(0, 0);
|
||||
this.toolStrip1.Name = "toolStrip1";
|
||||
this.toolStrip1.Padding = new System.Windows.Forms.Padding(0, 0, 3, 0);
|
||||
this.toolStrip1.Size = new System.Drawing.Size(1168, 65);
|
||||
this.toolStrip1.TabIndex = 17;
|
||||
this.toolStrip1.Text = "toolStrip1";
|
||||
//
|
||||
// tsbtnSave
|
||||
//
|
||||
this.tsbtnSave.Image = ((System.Drawing.Image)(resources.GetObject("tsbtnSave.Image")));
|
||||
this.tsbtnSave.ImageScaling = System.Windows.Forms.ToolStripItemImageScaling.None;
|
||||
this.tsbtnSave.ImageTransparentColor = System.Drawing.Color.Magenta;
|
||||
this.tsbtnSave.Name = "tsbtnSave";
|
||||
this.tsbtnSave.Size = new System.Drawing.Size(70, 60);
|
||||
this.tsbtnSave.Text = " 保存 ";
|
||||
this.tsbtnSave.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageAboveText;
|
||||
this.tsbtnSave.Click += new System.EventHandler(this.tsbtnSave_Click);
|
||||
//
|
||||
// toolStripSeparator4
|
||||
//
|
||||
this.toolStripSeparator4.Name = "toolStripSeparator4";
|
||||
this.toolStripSeparator4.Size = new System.Drawing.Size(6, 65);
|
||||
//
|
||||
// tsbtnDebug
|
||||
//
|
||||
this.tsbtnDebug.Image = ((System.Drawing.Image)(resources.GetObject("tsbtnDebug.Image")));
|
||||
this.tsbtnDebug.ImageScaling = System.Windows.Forms.ToolStripItemImageScaling.None;
|
||||
this.tsbtnDebug.ImageTransparentColor = System.Drawing.Color.Magenta;
|
||||
this.tsbtnDebug.Name = "tsbtnDebug";
|
||||
this.tsbtnDebug.Size = new System.Drawing.Size(86, 60);
|
||||
this.tsbtnDebug.Text = "单步调试";
|
||||
this.tsbtnDebug.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageAboveText;
|
||||
this.tsbtnDebug.Visible = false;
|
||||
this.tsbtnDebug.Click += new System.EventHandler(this.tsbtnDebug_Click);
|
||||
//
|
||||
// tsbtnClose
|
||||
//
|
||||
this.tsbtnClose.Image = ((System.Drawing.Image)(resources.GetObject("tsbtnClose.Image")));
|
||||
this.tsbtnClose.ImageScaling = System.Windows.Forms.ToolStripItemImageScaling.None;
|
||||
this.tsbtnClose.ImageTransparentColor = System.Drawing.Color.Magenta;
|
||||
this.tsbtnClose.Name = "tsbtnClose";
|
||||
this.tsbtnClose.Size = new System.Drawing.Size(70, 60);
|
||||
this.tsbtnClose.Text = " 关闭 ";
|
||||
this.tsbtnClose.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageAboveText;
|
||||
this.tsbtnClose.Click += new System.EventHandler(this.tsbtnClose_Click);
|
||||
//
|
||||
// splitContainer1
|
||||
//
|
||||
this.splitContainer1.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.splitContainer1.Location = new System.Drawing.Point(0, 65);
|
||||
this.splitContainer1.Name = "splitContainer1";
|
||||
this.splitContainer1.Orientation = System.Windows.Forms.Orientation.Horizontal;
|
||||
//
|
||||
// splitContainer1.Panel1
|
||||
//
|
||||
this.splitContainer1.Panel1.BackColor = System.Drawing.SystemColors.ActiveCaption;
|
||||
this.splitContainer1.Panel1.Controls.Add(this.numStartTimeIndex);
|
||||
this.splitContainer1.Panel1.Controls.Add(this.label3);
|
||||
this.splitContainer1.Panel1.Controls.Add(this.txtName);
|
||||
this.splitContainer1.Panel1.Controls.Add(this.label2);
|
||||
this.splitContainer1.Panel1.Controls.Add(this.txtCode);
|
||||
this.splitContainer1.Panel1.Controls.Add(this.label1);
|
||||
//
|
||||
// splitContainer1.Panel2
|
||||
//
|
||||
this.splitContainer1.Panel2.Controls.Add(this.btnAdd);
|
||||
this.splitContainer1.Panel2.Controls.Add(this.btnDown);
|
||||
this.splitContainer1.Panel2.Controls.Add(this.btnUp);
|
||||
this.splitContainer1.Panel2.Controls.Add(this.groupBox2);
|
||||
this.splitContainer1.Panel2.Controls.Add(this.groupBox1);
|
||||
this.splitContainer1.Panel2.Controls.Add(this.btnDel);
|
||||
this.splitContainer1.Panel2.Controls.Add(this.btnInsert);
|
||||
this.splitContainer1.Size = new System.Drawing.Size(1168, 843);
|
||||
this.splitContainer1.SplitterDistance = 89;
|
||||
this.splitContainer1.TabIndex = 18;
|
||||
//
|
||||
// txtName
|
||||
//
|
||||
this.txtName.Location = new System.Drawing.Point(558, 25);
|
||||
this.txtName.Name = "txtName";
|
||||
this.txtName.Size = new System.Drawing.Size(328, 28);
|
||||
this.txtName.TabIndex = 3;
|
||||
//
|
||||
// label2
|
||||
//
|
||||
this.label2.AutoSize = true;
|
||||
this.label2.Location = new System.Drawing.Point(506, 31);
|
||||
this.label2.Name = "label2";
|
||||
this.label2.Size = new System.Drawing.Size(44, 18);
|
||||
this.label2.TabIndex = 2;
|
||||
this.label2.Text = "名称";
|
||||
//
|
||||
// txtCode
|
||||
//
|
||||
this.txtCode.Location = new System.Drawing.Point(78, 24);
|
||||
this.txtCode.Name = "txtCode";
|
||||
this.txtCode.Size = new System.Drawing.Size(328, 28);
|
||||
this.txtCode.TabIndex = 1;
|
||||
//
|
||||
// label1
|
||||
//
|
||||
this.label1.AutoSize = true;
|
||||
this.label1.Location = new System.Drawing.Point(28, 28);
|
||||
this.label1.Name = "label1";
|
||||
this.label1.Size = new System.Drawing.Size(44, 18);
|
||||
this.label1.TabIndex = 0;
|
||||
this.label1.Text = "编号";
|
||||
//
|
||||
// btnAdd
|
||||
//
|
||||
this.btnAdd.BackColor = System.Drawing.SystemColors.ButtonFace;
|
||||
this.btnAdd.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("btnAdd.BackgroundImage")));
|
||||
this.btnAdd.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Center;
|
||||
this.btnAdd.ImageAlign = System.Drawing.ContentAlignment.TopCenter;
|
||||
this.btnAdd.Location = new System.Drawing.Point(454, 88);
|
||||
this.btnAdd.Name = "btnAdd";
|
||||
this.btnAdd.Size = new System.Drawing.Size(88, 92);
|
||||
this.btnAdd.TabIndex = 19;
|
||||
this.btnAdd.Text = "追加->>";
|
||||
this.btnAdd.TextAlign = System.Drawing.ContentAlignment.BottomCenter;
|
||||
this.btnAdd.UseVisualStyleBackColor = false;
|
||||
this.btnAdd.Click += new System.EventHandler(this.btnAdd_Click);
|
||||
//
|
||||
// btnDown
|
||||
//
|
||||
this.btnDown.BackColor = System.Drawing.SystemColors.ButtonFace;
|
||||
this.btnDown.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("btnDown.BackgroundImage")));
|
||||
this.btnDown.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Center;
|
||||
this.btnDown.Location = new System.Drawing.Point(454, 484);
|
||||
this.btnDown.Name = "btnDown";
|
||||
this.btnDown.Size = new System.Drawing.Size(88, 96);
|
||||
this.btnDown.TabIndex = 18;
|
||||
this.btnDown.Text = "下移";
|
||||
this.btnDown.TextAlign = System.Drawing.ContentAlignment.BottomCenter;
|
||||
this.btnDown.UseVisualStyleBackColor = false;
|
||||
this.btnDown.Click += new System.EventHandler(this.btnDown_Click);
|
||||
//
|
||||
// btnUp
|
||||
//
|
||||
this.btnUp.BackColor = System.Drawing.SystemColors.ButtonFace;
|
||||
this.btnUp.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("btnUp.BackgroundImage")));
|
||||
this.btnUp.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Center;
|
||||
this.btnUp.ImageAlign = System.Drawing.ContentAlignment.TopCenter;
|
||||
this.btnUp.Location = new System.Drawing.Point(454, 384);
|
||||
this.btnUp.Name = "btnUp";
|
||||
this.btnUp.Size = new System.Drawing.Size(88, 94);
|
||||
this.btnUp.TabIndex = 17;
|
||||
this.btnUp.Text = "上移";
|
||||
this.btnUp.TextAlign = System.Drawing.ContentAlignment.BottomCenter;
|
||||
this.btnUp.UseVisualStyleBackColor = false;
|
||||
this.btnUp.Click += new System.EventHandler(this.btnUp_Click);
|
||||
//
|
||||
// statusStrip1
|
||||
//
|
||||
this.statusStrip1.ImageScalingSize = new System.Drawing.Size(24, 24);
|
||||
this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.toolStripStatusLabel1});
|
||||
this.statusStrip1.Location = new System.Drawing.Point(0, 886);
|
||||
this.statusStrip1.Name = "statusStrip1";
|
||||
this.statusStrip1.Padding = new System.Windows.Forms.Padding(2, 0, 14, 0);
|
||||
this.statusStrip1.Size = new System.Drawing.Size(1168, 22);
|
||||
this.statusStrip1.TabIndex = 20;
|
||||
this.statusStrip1.Text = "statusStrip1";
|
||||
//
|
||||
// toolStripStatusLabel1
|
||||
//
|
||||
this.toolStripStatusLabel1.Name = "toolStripStatusLabel1";
|
||||
this.toolStripStatusLabel1.Size = new System.Drawing.Size(0, 15);
|
||||
//
|
||||
// colProcessCode
|
||||
//
|
||||
this.colProcessCode.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.None;
|
||||
this.colProcessCode.DataPropertyName = "ProcessCode";
|
||||
dataGridViewCellStyle33.BackColor = System.Drawing.Color.White;
|
||||
dataGridViewCellStyle33.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||
this.colProcessCode.DefaultCellStyle = dataGridViewCellStyle33;
|
||||
this.colProcessCode.HeaderText = "code";
|
||||
this.colProcessCode.MinimumWidth = 8;
|
||||
this.colProcessCode.Name = "colProcessCode";
|
||||
this.colProcessCode.Visible = false;
|
||||
//
|
||||
// colProcessName
|
||||
//
|
||||
this.colProcessName.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill;
|
||||
this.colProcessName.DataPropertyName = "ProcessName";
|
||||
this.colProcessName.HeaderText = "工序名称";
|
||||
this.colProcessName.MinimumWidth = 8;
|
||||
this.colProcessName.Name = "colProcessName";
|
||||
//
|
||||
// colTypeName
|
||||
//
|
||||
this.colTypeName.HeaderText = "类型";
|
||||
this.colTypeName.MinimumWidth = 8;
|
||||
this.colTypeName.Name = "colTypeName";
|
||||
this.colTypeName.ReadOnly = true;
|
||||
this.colTypeName.Width = 80;
|
||||
//
|
||||
// colSetParams
|
||||
//
|
||||
this.colSetParams.HeaderText = "默认配方";
|
||||
this.colSetParams.MinimumWidth = 8;
|
||||
this.colSetParams.Name = "colSetParams";
|
||||
this.colSetParams.Text = "设置";
|
||||
this.colSetParams.UseColumnTextForButtonValue = true;
|
||||
//
|
||||
// colProcessParams
|
||||
//
|
||||
this.colProcessParams.DataPropertyName = "ProcessParams";
|
||||
this.colProcessParams.HeaderText = "ProcessParams";
|
||||
this.colProcessParams.MinimumWidth = 8;
|
||||
this.colProcessParams.Name = "colProcessParams";
|
||||
this.colProcessParams.Visible = false;
|
||||
this.colProcessParams.Width = 160;
|
||||
//
|
||||
// label3
|
||||
//
|
||||
this.label3.AutoSize = true;
|
||||
this.label3.Location = new System.Drawing.Point(928, 31);
|
||||
this.label3.Name = "label3";
|
||||
this.label3.Size = new System.Drawing.Size(116, 18);
|
||||
this.label3.TabIndex = 4;
|
||||
this.label3.Text = "起始计时工序";
|
||||
//
|
||||
// numStartTimeIndex
|
||||
//
|
||||
this.numStartTimeIndex.Location = new System.Drawing.Point(1050, 24);
|
||||
this.numStartTimeIndex.Maximum = new decimal(new int[] {
|
||||
9999,
|
||||
0,
|
||||
0,
|
||||
0});
|
||||
this.numStartTimeIndex.Name = "numStartTimeIndex";
|
||||
this.numStartTimeIndex.Size = new System.Drawing.Size(81, 28);
|
||||
this.numStartTimeIndex.TabIndex = 5;
|
||||
this.toolTip1.SetToolTip(this.numStartTimeIndex, "有效索引大于1,0则不计时");
|
||||
//
|
||||
// FrmStepInfo
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(9F, 18F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(1168, 908);
|
||||
this.Controls.Add(this.statusStrip1);
|
||||
this.Controls.Add(this.splitContainer1);
|
||||
this.Controls.Add(this.toolStrip1);
|
||||
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
|
||||
this.MaximizeBox = false;
|
||||
this.MinimizeBox = false;
|
||||
this.Name = "FrmStepInfo";
|
||||
this.ShowIcon = false;
|
||||
this.ShowInTaskbar = false;
|
||||
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
|
||||
this.Text = "流程信息";
|
||||
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.FrmStepInfo_FormClosing);
|
||||
this.Load += new System.EventHandler(this.FrmStepInfo_Load);
|
||||
this.groupBox2.ResumeLayout(false);
|
||||
((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).EndInit();
|
||||
this.groupBox1.ResumeLayout(false);
|
||||
((System.ComponentModel.ISupportInitialize)(this.dataGridView2)).EndInit();
|
||||
this.toolStrip1.ResumeLayout(false);
|
||||
this.toolStrip1.PerformLayout();
|
||||
this.splitContainer1.Panel1.ResumeLayout(false);
|
||||
this.splitContainer1.Panel1.PerformLayout();
|
||||
this.splitContainer1.Panel2.ResumeLayout(false);
|
||||
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).EndInit();
|
||||
this.splitContainer1.ResumeLayout(false);
|
||||
this.statusStrip1.ResumeLayout(false);
|
||||
this.statusStrip1.PerformLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.numStartTimeIndex)).EndInit();
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.GroupBox groupBox2;
|
||||
private System.Windows.Forms.GroupBox groupBox1;
|
||||
private System.Windows.Forms.DataGridView dataGridView2;
|
||||
private System.Windows.Forms.Button btnInsert;
|
||||
private System.Windows.Forms.Button btnDel;
|
||||
private System.Windows.Forms.ToolStrip toolStrip1;
|
||||
private System.Windows.Forms.ToolStripSeparator toolStripSeparator4;
|
||||
private System.Windows.Forms.ToolStripButton tsbtnClose;
|
||||
private System.Windows.Forms.SplitContainer splitContainer1;
|
||||
private System.Windows.Forms.TextBox txtName;
|
||||
private System.Windows.Forms.Label label2;
|
||||
private System.Windows.Forms.TextBox txtCode;
|
||||
private System.Windows.Forms.Label label1;
|
||||
private System.Windows.Forms.ToolStripButton tsbtnDebug;
|
||||
private System.Windows.Forms.StatusStrip statusStrip1;
|
||||
private System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabel1;
|
||||
private System.Windows.Forms.ToolStripButton tsbtnSave;
|
||||
private System.Windows.Forms.Button btnDown;
|
||||
private System.Windows.Forms.Button btnUp;
|
||||
private System.Windows.Forms.DataGridView dataGridView1;
|
||||
private System.Windows.Forms.Button btnAdd;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn colProcessCode;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn colProcessName;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn colTypeName;
|
||||
private System.Windows.Forms.DataGridViewButtonColumn colSetParams;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn colProcessParams;
|
||||
private System.Windows.Forms.NumericUpDown numStartTimeIndex;
|
||||
private System.Windows.Forms.Label label3;
|
||||
private System.Windows.Forms.ToolTip toolTip1;
|
||||
}
|
||||
}
|
300
halftoneproject-master/AssistClient/FrmStepInfo.cs
Normal file
300
halftoneproject-master/AssistClient/FrmStepInfo.cs
Normal file
@ -0,0 +1,300 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace AssistClient
|
||||
{
|
||||
public partial class FrmStepInfo : Form
|
||||
{
|
||||
Service.StepService service = new Service.StepService();
|
||||
Models.Step model=new Models.Step();
|
||||
public FrmStepInfo(Models.Step m=null)
|
||||
{
|
||||
InitializeComponent();
|
||||
dataGridView1.AutoGenerateColumns = false;
|
||||
dataGridView2.AutoGenerateColumns = false;
|
||||
//显示行号与列宽度自动调整
|
||||
dataGridView2.RowHeadersVisible = true;
|
||||
dataGridView2.RowHeadersWidthSizeMode = DataGridViewRowHeadersWidthSizeMode.AutoSizeToAllHeaders;
|
||||
dataGridView2.RowPostPaint += (sender, e) =>
|
||||
{
|
||||
Utils.Util.showRowNum_onDataGrid_RowPostPaint(this.dataGridView2, sender, e);
|
||||
};
|
||||
|
||||
if (m == null)
|
||||
model.ProcessList = new List<Models.StepProcess>();
|
||||
else
|
||||
model = m;
|
||||
model.Tag = 1;//*
|
||||
}
|
||||
private void initDataView()
|
||||
{
|
||||
dataGridView1.Columns.Add("colCode", "code");
|
||||
dataGridView1.Columns.Add("colName", "工序");
|
||||
dataGridView1.Columns[0].Visible = false;
|
||||
dataGridView1.Columns[1].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
|
||||
foreach (var item in Config.dicDevType)
|
||||
dataGridView1.Rows.Add(item.Key, item.Value);
|
||||
|
||||
//
|
||||
this.txtCode.Text = model.Code;
|
||||
this.txtName.Text = model.Name;
|
||||
this.numStartTimeIndex.Value = model.StartTimeIndex;
|
||||
if (model.ProcessList!=null)
|
||||
dataGridView2.DataSource = new BindingSource(model.ProcessList, null);
|
||||
}
|
||||
private class Process
|
||||
{
|
||||
public Process(string code, string name)
|
||||
{
|
||||
Code = code;
|
||||
Name = name;
|
||||
}
|
||||
public string Code { get; set; }
|
||||
public string Name { get; set; }
|
||||
}
|
||||
private void FrmStepInfo_Load(object sender, EventArgs e)
|
||||
{
|
||||
initDataView();
|
||||
}
|
||||
#region private
|
||||
private void reOrderProcess()
|
||||
{
|
||||
for (int i = 0; i < model.ProcessList.Count; i++)
|
||||
model.ProcessList[i].Order = i;
|
||||
}
|
||||
private void refreshDataGridView()
|
||||
{
|
||||
dataGridView2.DataSource = null;
|
||||
dataGridView2.DataSource = new BindingSource(model.ProcessList, null);
|
||||
}
|
||||
#endregion
|
||||
private bool saveExit=false;
|
||||
private void tsbtnSave_Click(object sender, EventArgs e)
|
||||
{
|
||||
try
|
||||
{
|
||||
string szCode = this.txtCode.Text.Trim();
|
||||
string szName = this.txtName.Text.Trim();
|
||||
if (szCode == "" || szName == "")
|
||||
throw new Exception("请填写编号和名称!");
|
||||
if (model.ProcessList == null || model.ProcessList.Count == 0)
|
||||
throw new Exception("请添加流程工序!");
|
||||
foreach(var item in model.ProcessList)
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(item.ProcessParams))
|
||||
throw new Exception($"{Config.dicDevType[item.ProcessCode]} 配方未设置!");
|
||||
}
|
||||
|
||||
model.Code = szCode;
|
||||
model.Name = szName;
|
||||
model.StartTimeIndex = (int)numStartTimeIndex.Value;
|
||||
model.ModifyUserCode = Config.loginUser.Code;
|
||||
bool result;
|
||||
if (model.Id == 0)
|
||||
{
|
||||
model.CreateUserCode=Config.loginUser.Code;
|
||||
result = service.InsertNav(model);
|
||||
}
|
||||
else
|
||||
result = service.UpdateNav(model);
|
||||
if (!result)
|
||||
throw new Exception("保存失败!");
|
||||
|
||||
MessageBox.Show("保存成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||||
saveExit=true;
|
||||
this.Close();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MessageBox.Show(ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
}
|
||||
}
|
||||
private void btnAdd_Click(object sender, EventArgs e)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (this.dataGridView1.SelectedRows.Count != 1)
|
||||
throw new Exception("请选择要插入的工序!");
|
||||
|
||||
string processCode = this.dataGridView1.SelectedRows[0].Cells[0].Value.ToString();
|
||||
model.ProcessList.Add(new Models.StepProcess()
|
||||
{
|
||||
ProcessCode = processCode,
|
||||
ProcessName= Config.dicDevType[processCode],
|
||||
ModifyUserCode = Config.loginUser.Code,
|
||||
CreateUserCode = Config.loginUser.Code
|
||||
});
|
||||
reOrderProcess();
|
||||
this.refreshDataGridView();
|
||||
this.dataGridView2.Rows[this.dataGridView2.Rows.Count-1].Selected = true;
|
||||
dataGridView2.CurrentCell = dataGridView2.Rows[this.dataGridView2.Rows.Count - 1].Cells[1];
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MessageBox.Show(ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
}
|
||||
}
|
||||
private void btnInsert_Click(object sender, EventArgs e)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (this.dataGridView1.SelectedRows.Count != 1)
|
||||
throw new Exception("请选择要插入的工序!");
|
||||
|
||||
string processCode= this.dataGridView1.SelectedRows[0].Cells[0].Value.ToString();
|
||||
int liInsertIndex = this.dataGridView2.Rows.Count;
|
||||
if (this.dataGridView2.SelectedRows.Count > 0)
|
||||
liInsertIndex = this.dataGridView2.SelectedRows[0].Index;
|
||||
model.ProcessList.Insert(liInsertIndex, new Models.StepProcess()
|
||||
{
|
||||
ProcessCode = processCode,
|
||||
ProcessName = Config.dicDevType[processCode],
|
||||
Order = liInsertIndex,
|
||||
ModifyUserCode=Config.loginUser.Code,
|
||||
CreateUserCode=Config.loginUser.Code
|
||||
});
|
||||
reOrderProcess();
|
||||
this.refreshDataGridView();
|
||||
this.dataGridView2.Rows[liInsertIndex].Selected = true;
|
||||
dataGridView2.CurrentCell = dataGridView2.Rows[liInsertIndex].Cells[1];
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MessageBox.Show(ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
}
|
||||
}
|
||||
|
||||
private void btnDel_Click(object sender, EventArgs e)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (this.dataGridView2.SelectedRows.Count != 1)
|
||||
throw new Exception("请选择要删除的工序!");
|
||||
|
||||
int liRowIndex = this.dataGridView2.SelectedRows[0].Index;
|
||||
model.ProcessList.RemoveAt(liRowIndex);
|
||||
if(liRowIndex>= dataGridView2.Rows.Count-1)
|
||||
liRowIndex= dataGridView2.Rows.Count-1;
|
||||
dataGridView2.CurrentCell = dataGridView2.Rows[liRowIndex].Cells[1];
|
||||
//reOrderProcess();
|
||||
this.refreshDataGridView();
|
||||
|
||||
if (dataGridView2.Rows.Count < 1)
|
||||
return;
|
||||
if (liRowIndex >= dataGridView2.Rows.Count)
|
||||
liRowIndex = dataGridView2.Rows.Count - 1;
|
||||
dataGridView2.CurrentCell = dataGridView2.Rows[liRowIndex].Cells[1];
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MessageBox.Show(ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
}
|
||||
}
|
||||
|
||||
private void btnUp_Click(object sender, EventArgs e)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (this.dataGridView2.SelectedRows.Count != 1)
|
||||
throw new Exception("请选择要调整顺序的工序!");
|
||||
int liSelIndex = this.dataGridView2.SelectedRows[0].Index;
|
||||
if (liSelIndex == 0)
|
||||
return;
|
||||
|
||||
model.ProcessList.Insert(liSelIndex - 1, model.ProcessList[liSelIndex]);
|
||||
model.ProcessList.RemoveAt(liSelIndex + 1);
|
||||
reOrderProcess();
|
||||
this.refreshDataGridView();
|
||||
this.dataGridView2.Rows[liSelIndex-1].Selected = true;
|
||||
dataGridView2.CurrentCell = dataGridView2.Rows[liSelIndex - 1].Cells[1];
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MessageBox.Show(ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
}
|
||||
}
|
||||
|
||||
private void btnDown_Click(object sender, EventArgs e)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (this.dataGridView2.SelectedRows.Count != 1)
|
||||
throw new Exception("请选择要调整顺序的工序!");
|
||||
int liSelIndex = this.dataGridView2.SelectedRows[0].Index;
|
||||
if (liSelIndex == this.dataGridView2.Rows.Count-1)
|
||||
return;
|
||||
|
||||
model.ProcessList.Insert(liSelIndex +2, model.ProcessList[liSelIndex]);
|
||||
model.ProcessList.RemoveAt(liSelIndex);
|
||||
reOrderProcess();
|
||||
this.refreshDataGridView();
|
||||
this.dataGridView2.Rows[liSelIndex+1].Selected = true;
|
||||
dataGridView2.CurrentCell = dataGridView2.Rows[liSelIndex + 1].Cells[1];
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MessageBox.Show(ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
}
|
||||
}
|
||||
|
||||
private void tsbtnDebug_Click(object sender, EventArgs e)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
private void dataGridView2_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
|
||||
{
|
||||
for(int i=0;i< dataGridView2.Rows.Count;i++)
|
||||
{
|
||||
dataGridView2.Rows[i].Cells["colTypeName"].Value = Config.dicDevType[dataGridView2.Rows[i].Cells[0].Value.ToString()];
|
||||
}
|
||||
}
|
||||
|
||||
private void dataGridView2_CellContentClick(object sender, DataGridViewCellEventArgs e)
|
||||
{
|
||||
int Index = this.dataGridView2.CurrentRow.Index;//获取当前选中行的索引
|
||||
if (Index < this.dataGridView2.Rows.Count && this.dataGridView2.CurrentCell.Value.ToString() == "设置")
|
||||
{
|
||||
string processCode = this.dataGridView2.Rows[Index].Cells["colProcessCode"].Value.ToString();
|
||||
string processParams="";
|
||||
if(this.dataGridView2.Rows[Index].Cells["colProcessParams"].Value!=null)
|
||||
processParams=this.dataGridView2.Rows[Index].Cells["colProcessParams"].Value.ToString();
|
||||
FrmSetParams frm=new FrmSetParams(processCode, processParams);
|
||||
if (frm.ShowDialog() == DialogResult.OK)
|
||||
this.dataGridView2.Rows[Index].Cells["colProcessParams"].Value = frm.ParamsData;
|
||||
}
|
||||
}
|
||||
|
||||
private void tsbtnClose_Click(object sender, EventArgs e)
|
||||
{
|
||||
this.Close();
|
||||
}
|
||||
|
||||
//单元格编译完成
|
||||
private void dataGridView2_CellEndEdit(object sender, DataGridViewCellEventArgs e)
|
||||
{
|
||||
var value = dataGridView2.Rows[e.RowIndex].Cells["colProcessName"].Value;
|
||||
if (value==null || value.ToString().Trim() == "")
|
||||
{
|
||||
dataGridView2.Rows[e.RowIndex].Cells["colProcessName"].Value = dataGridView2.Rows[e.RowIndex].Cells["colTypeName"].Value;
|
||||
}
|
||||
}
|
||||
|
||||
private void FrmStepInfo_FormClosing(object sender, FormClosingEventArgs e)
|
||||
{
|
||||
if (!saveExit && MessageBox.Show($"确认修改已保存,是否退出?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) != DialogResult.Yes)
|
||||
{
|
||||
e.Cancel = true;
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
265
halftoneproject-master/AssistClient/FrmStepInfo.resx
Normal file
265
halftoneproject-master/AssistClient/FrmStepInfo.resx
Normal file
@ -0,0 +1,265 @@
|
||||
<?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="colProcessCode.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="colProcessName.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="colTypeName.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="colSetParams.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="colProcessParams.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="btnInsert.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAABl0RVh0U29m
|
||||
dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHjSURBVFhHxdZJSxxBGMbxR+NCRAIiCIIgCDkIHgQP
|
||||
QsCDIAiCIH4F9z0u0VET233/Lq5x3+OeGZfxA72+NUJIVwv1nMrDO4e+/P7d011VEJEPnXcv+pzUz+pL
|
||||
I1aSDVhO1mP5uQ5Lz7VYfKrBwlM15h+rdL5h7qESs4mKYCZRLtPxMpmKl8rk368S3JfIxH2xTNwVya/b
|
||||
wuDnbQHGb/Ixdp2H0esviF3lInaZg5HLzxj+k40fF1kYOs8MB5A4HLgoLgw+dJ4RDiBxELgw+ODZJyuA
|
||||
w0HgwuADp+nhABIHgQuD95+khQNIHAQuDP792AogcRC4MHjf0Zv7L4DEQeDC4L2HkQAKB4ELg0cCSBwE
|
||||
Lgzec2AFKO5a4Zg7N7hOhiguioviorgoLgqnRnHp3kcQCvCMS9eeYf8L8I137loBvvGOHSvAN97x2wrw
|
||||
jbfbAb7xtm07wDPetmUFKG5OMt7w1k1rHVCcOkaROBSH4lAcikNxKA7FoThadEIBJG6WV+bOnXjLhhVA
|
||||
4mZtZx67E29etwJI3GwszH/uxCMBJG52NeaFc+JNa3YAh5st1YWbt92JRwJI3OzlLtx8ak48EkDiqQAH
|
||||
br5zJx4JIHFzknHhZpFx4pEAEofigQMPGNxMKODjRvAK8oH7bE+ulgsAAAAASUVORK5CYII=
|
||||
</value>
|
||||
</data>
|
||||
<data name="btnDel.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAABl0RVh0U29m
|
||||
dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAACeSURBVFhHxdQhCgJhFEXhWYGICGKxGFyCYDBZTHYX
|
||||
YHQL/1oVBEEwTTNcByY9OPlM+OBx0k2vSzIpjCaMJowmjCaMJowmjCaMJowmjCaMpvG479ogolYG/G7b
|
||||
2MqA/rqJrQz4XtaxlQGf8yq2MuB9WsZWBryOi9jKgOdhHlsZ8NjP2iCi+gemhNGE0YTRhNGE0YTRhNGE
|
||||
0YTRhNGT7g8KckRsbOBsnAAAAABJRU5ErkJggg==
|
||||
</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
|
||||
YQUAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAIcSURBVFhH7ZdNaxNBGMefIpQKlkK/QLFiL4I3Wyx9uYhJ
|
||||
P0COZtt52Z1ntYfiN+hN9KL4AXzDFgS/gDepR2uhB4+9Fc+W0oqofWaYbHaaSbKzWYRA/vBjk5l5/vvP
|
||||
7LObBEbyaAzidIWol0aoGoj0lvULUKMxDjz5BBL/VYLAbetcUBLvdJgMzj3rXkBCLWeFHI/oE7wBmbwN
|
||||
R70Ght+NzzoeQxxP2TP0UZwuZQEEvrKj5STUk8xLqg92tI/yAaR6b0fLSaoXbS/jF9mZHsoH4LhjR4uL
|
||||
4wbtXGxeC3zuBGjiKbB0xsx11SABtrauUt1fU6sl8Fnm1YIlX2hmzMx7NUgAxiap7idxZt4L9TTzclCP
|
||||
zbxXTg/gOztaTGl6DZrsj6nVcprQ4aOZ98oN0GNhF5nb1javxJc5rzY9d9YNoLdz0c6EieNtqv2R82oT
|
||||
EECjm+qQ2KcHzLf+0DqBBxCx37a+k8AA1TOcASJ2UorWXZEnKIA2kWoNOJ8uRZLcJJ89xzNsB6ixBpXE
|
||||
1PEMvAS/qKs3QaYLwfBknvzq2ddyi+FswioJDHBGl6AJ4uGcaSh9LIpeH8d3gauvjuf/b0KFjmfwDkj1
|
||||
AKS8ARs4a46X0eM+xKPrVE8/cs0jumCA/I9SF/2dEIbvIWRQu/ZsHulbx1tUJb0CRNEELfrcWVQRTXZO
|
||||
u1yzZ+uiRuMKLV6lfvD/7SqLxPumL0ZyBHABC1BmYPLlTLYAAAAASUVORK5CYII=
|
||||
</value>
|
||||
</data>
|
||||
<data name="tsbtnDebug.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAAFiUAABYlAUlSJPAAAANQSURBVFhHtVdbS1RRGF1GGF2hwqdIIughKe2hp3pMhHoJ
|
||||
okGF0hnL8VJmEthjTwWRvyKieijoJ5RShNlNgqB6KCgpU0edbuo401r27XFGt845Ni5YnHP2/r71rX05
|
||||
e85gpWhDQ2UNamrFc4jut+bVx3nEqlpx9n4LokONaEyKuldbOxoPWNjqoB2x+hY0p+KIZ3yMomG2FU11
|
||||
Fl5caORxNHsL51ImtDyWVjy04MxDX0EfFWtp4fAAOHgFKLXHLDoQK+Naz/qKLcF0Fxp2WHoWHcA61bDH
|
||||
fPwEbvwBMr+B/qfAFmueQzWq9zajKR3j9EZxuiC5ITNtOHXI0ucgTWlPsYZqWfM8JtmYYafIwGdvgc3W
|
||||
hQgqSjtxfFcnagMzgkh2JqUlTafPWj3WNQ9O/ZofwJ30vIn+N8Am614xpCEtaUqbNe6qlnUvhkw4p9PA
|
||||
SyZf/x9Kw+lJ28osj9yZKAZt5MGKC5yitXQ/6hNz5Iad4ob6JureF+MoLWmafGFw3Uol7BNzTAGPObL1
|
||||
ou59MY7SkqbJF8YTinJUwz4xRxZ9ZOHQvS/GUVrStPDCCGigz8JloM8X4xjaAFESYAkCG5AWw0r+RXsw
|
||||
AWxnYDnXc6dIx3vIkYVCuQw5AyPSdPpsKx8Hts0lfweucpcmGJAyztg1vVAolyENpBdop1STJnpkoNeX
|
||||
VIhhDCxFzvwrcEo2/gLqee0yXuTp1c0fjElfkmMYA9KSprRdHdX8AmwwicXgxvnoE3MMY4Banyw0OGaA
|
||||
5z4xxzAGqPXCQoODm+SWT8wxjAFuupsWGhzcoRGulVdQDGpAGgnghIWGA50veRYENcDpf29h4cCde03v
|
||||
rU9UDGqAG3CI13D/F1j4gpt+GpnyLUUhA8pxeTp0+D1QZeHLg2tfN2uJfFfHh4CKJHCJRlK5BVi011Jk
|
||||
IO8wUywPmS7mdeaYGBsFlv8Lx1PxiCukKxMOWxe+ApUUuceRJCXKooPWJQODMq0i7L/N2GwhPne7AbF/
|
||||
dIw61pUP+3hMKFAF+OV60rry8A4oGwFqaO6YNYH3R9lWTUdbrSkPNHHZzQSXd9j7sTvAY5FT/pojT5Jx
|
||||
ay4aqNlBTvBIHlAta87HB2Afz+d6eyw6PvNs4Zm82x4J4C/gpfb3NNnmBQAAAABJRU5ErkJggg==
|
||||
</value>
|
||||
</data>
|
||||
<data name="tsbtnClose.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAJQSURBVFhHxZfNctNAEIQFb0UuYEu8DFwoiOwrVPGbFPAE
|
||||
vKhjV9huzSiz69aubA501XfwuGdms7ORtV3S8/9M/qHQs0T8/l9ArVKIzwbqMA4vj2P/5rDb3FgIcs+1
|
||||
UIfb/sVx//rtw4f+lYUoGLi609j/ftwPj85p139B3FQWXQuFWnnt4Y99NZmwqmiYjfvhK12TyuItKNRQ
|
||||
tR/G7Qbf03jcbd8pE7hyJ6jyL4+gJzw0Yz7K5JxuL9oJCjmqloOe8CFhOgOV1YLTuP0Gn6ls6lDwqhpO
|
||||
3NU8cWFeTkr8blYoNn6qkTwq1ynOlSxQ3wm9CKrZ/Pw8zQXyQq2dGIcfZp2FmPI6C/9RWfM5CDXnOPb3
|
||||
ZsUz5F55nMr5yT5EqPY8+49AfecsjGzuUwYiVGsRNRrN2UMFI1RrvorinKjaQAZLqLTV1TlH4LU0SNV0
|
||||
ZFBBteYN4DE7pGpFZFBBpZl+Uk0j8JgdUrUiMlhCpZ/QX6qhAl5Lg1RNRwYj1CXNnZWLkEGHSjPNXlQu
|
||||
AblWBpI9VBBQreaYd+tcNBZxFmAQSv/HP1VBJ25xa0SoZVYo6xU/MAClVdef7fl8qeYi9LNBNN8Nd6qA
|
||||
s7ClVHtkw51ZIeYVBVo/qfV5Qs1FpB5mpZA4vZLt+88qwUmJS3OMUPCqGg56mXVKOrzf3CijkxLWPtsB
|
||||
hRxVy0FP+JhQfy0/m9saqNp5yl7LKxeTNT+pS1BL58qvaE/GdF2KhvSaNc8pqSy+Fgq1strF1Ww24rqE
|
||||
C6TPxxQLXgOFmryc2pWs67ruL9BDjecFstIGAAAAAElFTkSuQmCC
|
||||
</value>
|
||||
</data>
|
||||
<metadata name="toolTip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>498, 17</value>
|
||||
</metadata>
|
||||
<data name="btnAdd.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAABl0RVh0U29m
|
||||
dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHjSURBVFhHxdZJSxxBGMbxR+NCRAIiCIIgCDkIHgQP
|
||||
QsCDIAiCIH4F9z0u0VET233/Lq5x3+OeGZfxA72+NUJIVwv1nMrDO4e+/P7d011VEJEPnXcv+pzUz+pL
|
||||
I1aSDVhO1mP5uQ5Lz7VYfKrBwlM15h+rdL5h7qESs4mKYCZRLtPxMpmKl8rk368S3JfIxH2xTNwVya/b
|
||||
wuDnbQHGb/Ixdp2H0esviF3lInaZg5HLzxj+k40fF1kYOs8MB5A4HLgoLgw+dJ4RDiBxELgw+ODZJyuA
|
||||
w0HgwuADp+nhABIHgQuD95+khQNIHAQuDP792AogcRC4MHjf0Zv7L4DEQeDC4L2HkQAKB4ELg0cCSBwE
|
||||
Lgzec2AFKO5a4Zg7N7hOhiguioviorgoLgqnRnHp3kcQCvCMS9eeYf8L8I137loBvvGOHSvAN97x2wrw
|
||||
jbfbAb7xtm07wDPetmUFKG5OMt7w1k1rHVCcOkaROBSH4lAcikNxKA7FoThadEIBJG6WV+bOnXjLhhVA
|
||||
4mZtZx67E29etwJI3GwszH/uxCMBJG52NeaFc+JNa3YAh5st1YWbt92JRwJI3OzlLtx8ak48EkDiqQAH
|
||||
br5zJx4JIHFzknHhZpFx4pEAEofigQMPGNxMKODjRvAK8oH7bE+ulgsAAAAASUVORK5CYII=
|
||||
</value>
|
||||
</data>
|
||||
<data name="btnDown.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAABl0RVh0U29m
|
||||
dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAF2SURBVFhHxc7LK4RhGAXw+deUsrCwsbBRSpIkSUSM
|
||||
SVkoC6XIJSK3MabUlCTkGsP4n46ZaUzPmTmP+b7XXBa/xfm+9z3nTQDoKAqp7Ldnpwgxle6oLtqkoA5X
|
||||
qIEoVBdtUlCHK1R5FKqLNiksZQseBFJdtEkheVnwIJDqok0Ki5kvDwKpLtqksHDx6UEg1UWbFObTeQ8C
|
||||
qS7apDB3nvcgkOqiTQqzpx8eBFJdtElh5uTdg0CqizYpTB+/eRBIddEmhamjVw8CqS7apDB5+OJBINVF
|
||||
mxQmDp49CKS6aJPC+P5TrggtlrOb9ICxvUe0g92kB4zuPpSgxWiTwsj2/S+0SLnfblIY3rqz0GTVbrtJ
|
||||
YWjzthaahHrtJoXBjRsF/1TXaTcpDKxfexBIddEmhf613F8Qk+oos5sU+lavGkFE6m6V3aTQu5KNAg2o
|
||||
O8RuUuhZzkQFhzpbx25S6E6l40ANdUaymxS6kmdxoUL9c9lNCp0gP7YPEj/UlPRWdUd2IAAAAABJRU5E
|
||||
rkJggg==
|
||||
</value>
|
||||
</data>
|
||||
<data name="btnUp.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAABl0RVh0U29m
|
||||
dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAF7SURBVFhHxc7fK0NxGAbw/WdSyoULNy7cKCVJkiSi
|
||||
maVcKBdKkR8RMWZW6pQkNL9izP/0OFttvc/2vtvOa2e7+Fw853y/z/NNAOgpCn3JTCTp/C/KtH/NyE0K
|
||||
YVkUlXFBO6OSmxS0w4b68SrtbAO5SWEtX2oHWtDuELlJIXVTagVt0u7WyE0Kq7mfZhCR1lEhNykkr78t
|
||||
cNK6aJPCSraowT81dMpNCstXxXroEOqVmxSWMl8SOqzWLTcpLF58ViEmlX65SWHh/KMMMaNNCvNn7+gG
|
||||
uUkPmDt9C0KIWSA36QGzJ68WOGldtElh5vjFAietizYpTB8VLHDSumiTwtThswVOWhdtUpjcf7LASeui
|
||||
TQoTe48WOGldtElhfPfBAietizYpjO3cW+CkddEmhdHtOwuctC7apDCyFVjgpHXRJoXhzVsLnLQu2qQw
|
||||
tJG3wEnrok0Kg+s5C5y0LtqkMJDOWuCkddEmhf7UpeUghIjKd7Qu2qTQC+rH7kHiD+1q5ha1YbleAAAA
|
||||
AElFTkSuQmCC
|
||||
</value>
|
||||
</data>
|
||||
<metadata name="statusStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>332, 17</value>
|
||||
</metadata>
|
||||
<metadata name="toolTip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>498, 17</value>
|
||||
</metadata>
|
||||
<metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>74</value>
|
||||
</metadata>
|
||||
</root>
|
286
halftoneproject-master/AssistClient/FrmStepList.Designer.cs
generated
Normal file
286
halftoneproject-master/AssistClient/FrmStepList.Designer.cs
generated
Normal file
@ -0,0 +1,286 @@
|
||||
namespace AssistClient
|
||||
{
|
||||
partial class FrmStepList
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FrmStepList));
|
||||
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle();
|
||||
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle5 = new System.Windows.Forms.DataGridViewCellStyle();
|
||||
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle6 = new System.Windows.Forms.DataGridViewCellStyle();
|
||||
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle2 = new System.Windows.Forms.DataGridViewCellStyle();
|
||||
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle3 = new System.Windows.Forms.DataGridViewCellStyle();
|
||||
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle4 = new System.Windows.Forms.DataGridViewCellStyle();
|
||||
this.toolStrip1 = new System.Windows.Forms.ToolStrip();
|
||||
this.tsbtnAdd = new System.Windows.Forms.ToolStripButton();
|
||||
this.tsbtnDel = new System.Windows.Forms.ToolStripButton();
|
||||
this.toolStripSeparator4 = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.tsbtnClone = new System.Windows.Forms.ToolStripButton();
|
||||
this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.tsbtnClose = new System.Windows.Forms.ToolStripButton();
|
||||
this.statusStrip1 = new System.Windows.Forms.StatusStrip();
|
||||
this.tsslCount = new System.Windows.Forms.ToolStripStatusLabel();
|
||||
this.dataGridView1 = new System.Windows.Forms.DataGridView();
|
||||
this.colId = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.检测值 = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.工序 = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.Column2 = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.Column1 = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.toolStrip1.SuspendLayout();
|
||||
this.statusStrip1.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).BeginInit();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// toolStrip1
|
||||
//
|
||||
this.toolStrip1.BackColor = System.Drawing.SystemColors.GradientInactiveCaption;
|
||||
this.toolStrip1.ImageScalingSize = new System.Drawing.Size(32, 32);
|
||||
this.toolStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.tsbtnAdd,
|
||||
this.tsbtnDel,
|
||||
this.toolStripSeparator4,
|
||||
this.tsbtnClone,
|
||||
this.toolStripSeparator1,
|
||||
this.tsbtnClose});
|
||||
this.toolStrip1.LayoutStyle = System.Windows.Forms.ToolStripLayoutStyle.HorizontalStackWithOverflow;
|
||||
this.toolStrip1.Location = new System.Drawing.Point(0, 0);
|
||||
this.toolStrip1.Name = "toolStrip1";
|
||||
this.toolStrip1.Size = new System.Drawing.Size(1002, 65);
|
||||
this.toolStrip1.TabIndex = 12;
|
||||
this.toolStrip1.Text = "toolStrip1";
|
||||
//
|
||||
// tsbtnAdd
|
||||
//
|
||||
this.tsbtnAdd.Image = ((System.Drawing.Image)(resources.GetObject("tsbtnAdd.Image")));
|
||||
this.tsbtnAdd.ImageScaling = System.Windows.Forms.ToolStripItemImageScaling.None;
|
||||
this.tsbtnAdd.ImageTransparentColor = System.Drawing.Color.Magenta;
|
||||
this.tsbtnAdd.Name = "tsbtnAdd";
|
||||
this.tsbtnAdd.Size = new System.Drawing.Size(70, 60);
|
||||
this.tsbtnAdd.Text = " 添加 ";
|
||||
this.tsbtnAdd.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageAboveText;
|
||||
this.tsbtnAdd.Click += new System.EventHandler(this.tsbtnAdd_Click);
|
||||
//
|
||||
// tsbtnDel
|
||||
//
|
||||
this.tsbtnDel.Image = ((System.Drawing.Image)(resources.GetObject("tsbtnDel.Image")));
|
||||
this.tsbtnDel.ImageScaling = System.Windows.Forms.ToolStripItemImageScaling.None;
|
||||
this.tsbtnDel.ImageTransparentColor = System.Drawing.Color.Magenta;
|
||||
this.tsbtnDel.Name = "tsbtnDel";
|
||||
this.tsbtnDel.Size = new System.Drawing.Size(70, 60);
|
||||
this.tsbtnDel.Text = " 删除 ";
|
||||
this.tsbtnDel.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageAboveText;
|
||||
this.tsbtnDel.Click += new System.EventHandler(this.tsbtnDel_Click);
|
||||
//
|
||||
// toolStripSeparator4
|
||||
//
|
||||
this.toolStripSeparator4.Name = "toolStripSeparator4";
|
||||
this.toolStripSeparator4.Size = new System.Drawing.Size(6, 65);
|
||||
//
|
||||
// tsbtnClone
|
||||
//
|
||||
this.tsbtnClone.Image = ((System.Drawing.Image)(resources.GetObject("tsbtnClone.Image")));
|
||||
this.tsbtnClone.ImageScaling = System.Windows.Forms.ToolStripItemImageScaling.None;
|
||||
this.tsbtnClone.ImageTransparentColor = System.Drawing.Color.Magenta;
|
||||
this.tsbtnClone.Name = "tsbtnClone";
|
||||
this.tsbtnClone.Size = new System.Drawing.Size(70, 60);
|
||||
this.tsbtnClone.Text = " 克隆 ";
|
||||
this.tsbtnClone.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageAboveText;
|
||||
this.tsbtnClone.ToolTipText = "克隆当前流程";
|
||||
this.tsbtnClone.Click += new System.EventHandler(this.tsbtnClone_Click);
|
||||
//
|
||||
// toolStripSeparator1
|
||||
//
|
||||
this.toolStripSeparator1.Name = "toolStripSeparator1";
|
||||
this.toolStripSeparator1.Size = new System.Drawing.Size(6, 65);
|
||||
//
|
||||
// tsbtnClose
|
||||
//
|
||||
this.tsbtnClose.Image = ((System.Drawing.Image)(resources.GetObject("tsbtnClose.Image")));
|
||||
this.tsbtnClose.ImageScaling = System.Windows.Forms.ToolStripItemImageScaling.None;
|
||||
this.tsbtnClose.ImageTransparentColor = System.Drawing.Color.Magenta;
|
||||
this.tsbtnClose.Name = "tsbtnClose";
|
||||
this.tsbtnClose.Size = new System.Drawing.Size(70, 60);
|
||||
this.tsbtnClose.Text = " 关闭 ";
|
||||
this.tsbtnClose.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageAboveText;
|
||||
this.tsbtnClose.Click += new System.EventHandler(this.tsbtnClose_Click);
|
||||
//
|
||||
// statusStrip1
|
||||
//
|
||||
this.statusStrip1.ImageScalingSize = new System.Drawing.Size(24, 24);
|
||||
this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.tsslCount});
|
||||
this.statusStrip1.Location = new System.Drawing.Point(0, 681);
|
||||
this.statusStrip1.Name = "statusStrip1";
|
||||
this.statusStrip1.Size = new System.Drawing.Size(1002, 31);
|
||||
this.statusStrip1.TabIndex = 22;
|
||||
this.statusStrip1.Text = "statusStrip1";
|
||||
//
|
||||
// tsslCount
|
||||
//
|
||||
this.tsslCount.Name = "tsslCount";
|
||||
this.tsslCount.Size = new System.Drawing.Size(33, 24);
|
||||
this.tsslCount.Text = "共 ";
|
||||
//
|
||||
// dataGridView1
|
||||
//
|
||||
this.dataGridView1.AllowUserToAddRows = false;
|
||||
this.dataGridView1.AllowUserToDeleteRows = false;
|
||||
dataGridViewCellStyle1.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;
|
||||
dataGridViewCellStyle1.BackColor = System.Drawing.SystemColors.Control;
|
||||
dataGridViewCellStyle1.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||
dataGridViewCellStyle1.ForeColor = System.Drawing.SystemColors.WindowText;
|
||||
dataGridViewCellStyle1.SelectionBackColor = System.Drawing.SystemColors.Highlight;
|
||||
dataGridViewCellStyle1.SelectionForeColor = System.Drawing.SystemColors.HighlightText;
|
||||
dataGridViewCellStyle1.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
|
||||
this.dataGridView1.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle1;
|
||||
this.dataGridView1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
|
||||
this.dataGridView1.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
|
||||
this.colId,
|
||||
this.检测值,
|
||||
this.工序,
|
||||
this.Column2,
|
||||
this.Column1});
|
||||
dataGridViewCellStyle5.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;
|
||||
dataGridViewCellStyle5.BackColor = System.Drawing.SystemColors.Window;
|
||||
dataGridViewCellStyle5.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||
dataGridViewCellStyle5.ForeColor = System.Drawing.SystemColors.ControlText;
|
||||
dataGridViewCellStyle5.SelectionBackColor = System.Drawing.SystemColors.Highlight;
|
||||
dataGridViewCellStyle5.SelectionForeColor = System.Drawing.SystemColors.HighlightText;
|
||||
dataGridViewCellStyle5.WrapMode = System.Windows.Forms.DataGridViewTriState.False;
|
||||
this.dataGridView1.DefaultCellStyle = dataGridViewCellStyle5;
|
||||
this.dataGridView1.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.dataGridView1.Location = new System.Drawing.Point(0, 65);
|
||||
this.dataGridView1.MultiSelect = false;
|
||||
this.dataGridView1.Name = "dataGridView1";
|
||||
this.dataGridView1.ReadOnly = true;
|
||||
this.dataGridView1.RowHeadersVisible = false;
|
||||
this.dataGridView1.RowHeadersWidth = 62;
|
||||
dataGridViewCellStyle6.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||
this.dataGridView1.RowsDefaultCellStyle = dataGridViewCellStyle6;
|
||||
this.dataGridView1.RowTemplate.Height = 30;
|
||||
this.dataGridView1.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect;
|
||||
this.dataGridView1.Size = new System.Drawing.Size(1002, 616);
|
||||
this.dataGridView1.TabIndex = 23;
|
||||
this.dataGridView1.CellDoubleClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.dataGridView1_CellDoubleClick);
|
||||
//
|
||||
// colId
|
||||
//
|
||||
this.colId.DataPropertyName = "Id";
|
||||
this.colId.HeaderText = "ID";
|
||||
this.colId.MinimumWidth = 8;
|
||||
this.colId.Name = "colId";
|
||||
this.colId.ReadOnly = true;
|
||||
this.colId.Visible = false;
|
||||
this.colId.Width = 150;
|
||||
//
|
||||
// 检测值
|
||||
//
|
||||
this.检测值.DataPropertyName = "Code";
|
||||
dataGridViewCellStyle2.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Bold);
|
||||
this.检测值.DefaultCellStyle = dataGridViewCellStyle2;
|
||||
this.检测值.HeaderText = "编号";
|
||||
this.检测值.MinimumWidth = 8;
|
||||
this.检测值.Name = "检测值";
|
||||
this.检测值.ReadOnly = true;
|
||||
this.检测值.Width = 200;
|
||||
//
|
||||
// 工序
|
||||
//
|
||||
this.工序.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill;
|
||||
this.工序.DataPropertyName = "Name";
|
||||
dataGridViewCellStyle3.BackColor = System.Drawing.Color.White;
|
||||
dataGridViewCellStyle3.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||
this.工序.DefaultCellStyle = dataGridViewCellStyle3;
|
||||
this.工序.HeaderText = "名称";
|
||||
this.工序.MinimumWidth = 8;
|
||||
this.工序.Name = "工序";
|
||||
this.工序.ReadOnly = true;
|
||||
//
|
||||
// Column2
|
||||
//
|
||||
this.Column2.DataPropertyName = "ModifyUserCode";
|
||||
this.Column2.HeaderText = "修订人";
|
||||
this.Column2.MinimumWidth = 8;
|
||||
this.Column2.Name = "Column2";
|
||||
this.Column2.ReadOnly = true;
|
||||
this.Column2.Width = 150;
|
||||
//
|
||||
// Column1
|
||||
//
|
||||
this.Column1.DataPropertyName = "ModifyTime";
|
||||
dataGridViewCellStyle4.Format = "g";
|
||||
dataGridViewCellStyle4.NullValue = null;
|
||||
this.Column1.DefaultCellStyle = dataGridViewCellStyle4;
|
||||
this.Column1.HeaderText = "修订日期";
|
||||
this.Column1.MinimumWidth = 8;
|
||||
this.Column1.Name = "Column1";
|
||||
this.Column1.ReadOnly = true;
|
||||
this.Column1.Width = 150;
|
||||
//
|
||||
// FrmStepList
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(9F, 18F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(1002, 712);
|
||||
this.Controls.Add(this.dataGridView1);
|
||||
this.Controls.Add(this.statusStrip1);
|
||||
this.Controls.Add(this.toolStrip1);
|
||||
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
|
||||
this.Name = "FrmStepList";
|
||||
this.ShowInTaskbar = false;
|
||||
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
|
||||
this.Text = "流程管理";
|
||||
this.Load += new System.EventHandler(this.FrmStepList_Load);
|
||||
this.toolStrip1.ResumeLayout(false);
|
||||
this.toolStrip1.PerformLayout();
|
||||
this.statusStrip1.ResumeLayout(false);
|
||||
this.statusStrip1.PerformLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).EndInit();
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.ToolStrip toolStrip1;
|
||||
private System.Windows.Forms.ToolStripButton tsbtnDel;
|
||||
private System.Windows.Forms.ToolStripSeparator toolStripSeparator4;
|
||||
private System.Windows.Forms.ToolStripButton tsbtnClose;
|
||||
private System.Windows.Forms.StatusStrip statusStrip1;
|
||||
private System.Windows.Forms.ToolStripStatusLabel tsslCount;
|
||||
private System.Windows.Forms.DataGridView dataGridView1;
|
||||
private System.Windows.Forms.ToolStripButton tsbtnAdd;
|
||||
private System.Windows.Forms.ToolStripButton tsbtnClone;
|
||||
private System.Windows.Forms.ToolStripSeparator toolStripSeparator1;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn colId;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn 检测值;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn 工序;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn Column2;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn Column1;
|
||||
}
|
||||
}
|
131
halftoneproject-master/AssistClient/FrmStepList.cs
Normal file
131
halftoneproject-master/AssistClient/FrmStepList.cs
Normal file
@ -0,0 +1,131 @@
|
||||
using Models;
|
||||
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 AssistClient
|
||||
{
|
||||
public partial class FrmStepList : Form
|
||||
{
|
||||
Service.StepService service=new Service.StepService();
|
||||
public FrmStepList()
|
||||
{
|
||||
InitializeComponent();
|
||||
dataGridView1.AutoGenerateColumns = false;
|
||||
}
|
||||
private void initDataView()
|
||||
{
|
||||
var list = service.GetListNav(1);
|
||||
tsslCount.Text = $"共 {list.Count} 条记录";
|
||||
dataGridView1.DataSource = new BindingSource(list, null);
|
||||
}
|
||||
|
||||
private void FrmStepList_Load(object sender, EventArgs e)
|
||||
{
|
||||
initDataView();
|
||||
}
|
||||
|
||||
private void tsbtnAdd_Click(object sender, EventArgs e)
|
||||
{
|
||||
FrmStepInfo frm = new FrmStepInfo();
|
||||
frm.ShowDialog();
|
||||
initDataView();
|
||||
}
|
||||
|
||||
private void tsbtnDel_Click(object sender, EventArgs e)
|
||||
{
|
||||
try
|
||||
{
|
||||
if(this.dataGridView1.CurrentRow==null)
|
||||
return;
|
||||
|
||||
var list = ((BindingSource)dataGridView1.DataSource).DataSource as List<Step>;
|
||||
int liIndex = this.dataGridView1.CurrentRow.Index;//获取当前选中行的索引
|
||||
if (service.InUse(list[liIndex].Id))
|
||||
throw new Exception("此流程已有产品在使用中,不可删除!");
|
||||
if (MessageBox.Show($"确认删除?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
|
||||
{
|
||||
if (!service.DelNav(list[liIndex]))
|
||||
throw new Exception("删除失败!");
|
||||
MessageBox.Show("删除成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||||
initDataView();
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MessageBox.Show(ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
}
|
||||
}
|
||||
private void tsbtnClone_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (this.dataGridView1.CurrentRow == null)
|
||||
{
|
||||
MessageBox.Show("请选择要克隆的流程!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
|
||||
return;
|
||||
}
|
||||
|
||||
var list = ((BindingSource)dataGridView1.DataSource).DataSource as List<Step>;
|
||||
int liIndex = this.dataGridView1.CurrentRow.Index;//获取当前选中行的索引
|
||||
|
||||
Step newStep = new Step()
|
||||
{
|
||||
Tag = 1,
|
||||
Code = list[liIndex].Code + "_clone",
|
||||
Name = $"{list[liIndex].Name} (克隆)",
|
||||
StartTimeIndex = list[liIndex].StartTimeIndex,
|
||||
ModifyUserCode = Config.loginUser.Code,
|
||||
CreateUserCode = Config.loginUser.Code,
|
||||
ProcessList = new List<StepProcess>()
|
||||
};
|
||||
foreach(var item in list[liIndex].ProcessList)
|
||||
{
|
||||
newStep.ProcessList.Add(new StepProcess()
|
||||
{
|
||||
Order = item.Order,
|
||||
ProcessCode=item.ProcessCode,
|
||||
ProcessName = item.ProcessName,
|
||||
ProcessParams=item.ProcessParams,
|
||||
ModifyUserCode = Config.loginUser.Code,
|
||||
CreateUserCode = Config.loginUser.Code
|
||||
});
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
bool result = service.InsertNav(newStep);
|
||||
if (result)
|
||||
{
|
||||
MessageBox.Show("克隆成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||||
initDataView();
|
||||
}
|
||||
else
|
||||
throw new Exception("克隆失败!");
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MessageBox.Show(ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
}
|
||||
}
|
||||
private void tsbtnClose_Click(object sender, EventArgs e)
|
||||
{
|
||||
this.Close();
|
||||
}
|
||||
|
||||
private void dataGridView1_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
|
||||
{
|
||||
var list = ((BindingSource)dataGridView1.DataSource).DataSource as List<Step>;
|
||||
int liIndex = this.dataGridView1.CurrentRow.Index;//获取当前选中行的索引
|
||||
FrmStepInfo frm = new FrmStepInfo(list[liIndex]);
|
||||
frm.ShowDialog(this);
|
||||
initDataView();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
473
halftoneproject-master/AssistClient/FrmStepList.resx
Normal file
473
halftoneproject-master/AssistClient/FrmStepList.resx
Normal file
@ -0,0 +1,473 @@
|
||||
<?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="toolStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>17, 17</value>
|
||||
</metadata>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="tsbtnAdd.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAHoSURBVFhH3ZfNSwJBGMaFIIgM3R2/gu5B/0OXDp26eutk
|
||||
uTv2QfQvddf+gCCKTkKn8BituDNqdI6+IJtH39RUGHcakfrBA77jvM/7oLvLTmyUuCdTjIsK48En47Jj
|
||||
R/ASFXjTmMlkeSujGqrjBtZUxQwaN45KWcZG15dH6vO6TfU8EUKUadwI+dqiW5Cvjhfe0op14I0ZmEVL
|
||||
A7K7rWWV8M31xRUtWQfemIFZtDQAi0jHeHhDS3rynYWupgTemGEtAPPlBUSlFusBEvuiBVGpxf4vwMMA
|
||||
olLL/wvgcnkPUanFOEDuuJl2PHHm+OH5sFZ48AyNrmMveqi9j3EA129u9J5i0ws91N7HOABInATJVLG+
|
||||
mj54zH2LFWUDGl7DHuylth/8KsAk1N4HiEotswgw59vQa9QhKrVYD5DkYRuiUov9X4CHWxCVWqwHiIpR
|
||||
gLXTxpK6veL4PorQg16y6RI5gFsS+QSXL6wQfKiHy3skqR70woPsogdIcbnp+PLS5eLaROiFB9n90WvA
|
||||
JpEDuCW5rf7PO+aLmpFULzzIzuQaEDt45VInmycToRceZKcPoBLP77UchwXcNrM+mGDGxIMJwLFJJZzT
|
||||
0UyR2Wtn1aaZHk4xg8ZNZuVQMLzXqYvI6vEcnvCmMUQs9gWGsZeiWY4KFwAAAABJRU5ErkJggg==
|
||||
</value>
|
||||
</data>
|
||||
<data name="tsbtnDel.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAMMSURBVFhH7VfbS5NhGH86SArdqG3TOV2QF9WFXlSEF/0D
|
||||
naDuRehEFILG0rkJowIlA7voKjEpCwWhoJKyyLJ5gIIwSsTKY+kOmpuJZnbw1/Ns7zQ3NLcmdLEf/Hi/
|
||||
932e5/f8vm8f+96XVgozGUwWMjzlsZ3HtqWo4pJnUqX/jhJKu8KiCJdSpyQih410WhabKyGD20z6HCul
|
||||
b+G7y1yK/rg+R/KlTuqV1MpQSIaEP2mmjB3qblpVyoog+VIn9cGaKiUUXFBbTDqv0EJpLgvpncWUPMZz
|
||||
nCHNLI881zlNpHMtxUCOyofUi47o8VxpG2pVy8XgwHUz6cZVEqxrM3AhaTvOJ25T3BoGF2qsa9N974To
|
||||
ir70US1DkU+ZG0xkTCkk7USZLgsf7zzCSOMzDN9rDpuBuvKUbIie6Iq+arU0bKTZWERab5k2C6OP24Ah
|
||||
N9DvCJ+DLszxeDFjJ86Sxiu6qsXy4Bcn0fcE2IDroZ2FnEDvMNA3AjjG/Yb6eO5bU5RryZO4NJc5j784
|
||||
JgYKSDMhuqrF8ggxMKAM8OhuasP0q26/GVkLkJt97+qF84EdP3sG/XExwLHoGHB4MHy/GfmUgLp9edys
|
||||
b+HJCMen0HisCKcpDp2V1X4D/BNEz8DoF/TUNOAkrUF1zkHMdPYsNuCZwq0DeRwntJVe8q8NRdOAewLv
|
||||
b9zGKVqPmj2HMfP6XYiB+kNHOb4OHbbKmIGYgZiBmIGYgVUwIN+Caw04zv/1Vbv342vwt8A7jZt7c3GC
|
||||
463WilUwMPwZo086ULppM+7mFuBHd79/PWBgbBItReWwJBrQXVWvvobOKBr48IkFXZh92485uQ7eDwgH
|
||||
HPj2pnfxhoTH6BgINGET8w2CKab4sc+bi9SAjQxJvCecLNNlw9PyEnB6fT9B2ORNDJweVBh3iYFJ0VUt
|
||||
loeNjPElpHdb4tLRce4yXPYXcDW3h0+u67pah9J4Ix9QUt2iq1r8HXzMMrEJ2c3yfj41YpoomU9Velgj
|
||||
OazyAeIIn/OaiklvZ5Hn4VLqpF50lOT/BqLf422j357aoPMAAAAASUVORK5CYII=
|
||||
</value>
|
||||
</data>
|
||||
<data name="tsbtnClone.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAIUSURBVFhH7ZNrS9tgGIb7///LQMb2QSbTTTJXMm3XQ9Ic
|
||||
WpK0OfVoutZqrN7LK4/wkrwGfepHb7igFO7nbkKvxkeeo9kp3HTNRvTpFC9OmiF/eGQj+nSKFzvJcLd/
|
||||
ZCP6dIoXO85we//ARvTpFC+D6Bo3+Z6N6NMpXsxwhc3tPRvRp1O8GJMl/u1yNqKvskOm1pTeeIlse8dG
|
||||
9FV2yNSa0g3mWG12bERfZYdMrSl/vRkW6xs2oq+yQ6bWlHZxYJZt2Yi+yg6ZWlOuRlOkqw0b0VfZIVNr
|
||||
yuUwQbxYs9HtUGmHjDCF5qrR3QSTecbCT5fQjEBph4wwheaqadoRgunqzYyiGdxJgrO2o7RDRphCc9X8
|
||||
tkJ4yfJNuJMpLD9GfzjGN91Q2iEjTKG5an4NQozixatxxilML0LPDdAaDPFFayvtkBGm0Fw1mjmBG85f
|
||||
heUn2OR44nq3x3S9g5eulHbICFNorprz4k9kF6+0Doueulu88sU2R7TcFD9ohv4oVJpRRphCc9X87AWw
|
||||
gvRFBsVTG8VQxwlwabjFd0nx2UezYynNKPNsCs1V86PnwyxGVBhe/PTULcuD3ndw0TahXfVwoulKM8rI
|
||||
ptBcNUdNF2ddv8Jpx8NJa4jjPxa+XvTx+byNT991HB2fKs0oUzaF5nh5D1PoFC/vYQqd4uVQU+gMP4eY
|
||||
QicOC9cUqh8ejilU/cgLaTT+A+NY6S8KKsPSAAAAAElFTkSuQmCC
|
||||
</value>
|
||||
</data>
|
||||
<data name="tsbtnClose.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAJQSURBVFhHxZfNctNAEIQFb0UuYEu8DFwoiOwrVPGbFPAE
|
||||
vKhjV9huzSiz69aubA501XfwuGdms7ORtV3S8/9M/qHQs0T8/l9ArVKIzwbqMA4vj2P/5rDb3FgIcs+1
|
||||
UIfb/sVx//rtw4f+lYUoGLi609j/ftwPj85p139B3FQWXQuFWnnt4Y99NZmwqmiYjfvhK12TyuItKNRQ
|
||||
tR/G7Qbf03jcbd8pE7hyJ6jyL4+gJzw0Yz7K5JxuL9oJCjmqloOe8CFhOgOV1YLTuP0Gn6ls6lDwqhpO
|
||||
3NU8cWFeTkr8blYoNn6qkTwq1ynOlSxQ3wm9CKrZ/Pw8zQXyQq2dGIcfZp2FmPI6C/9RWfM5CDXnOPb3
|
||||
ZsUz5F55nMr5yT5EqPY8+49AfecsjGzuUwYiVGsRNRrN2UMFI1RrvorinKjaQAZLqLTV1TlH4LU0SNV0
|
||||
ZFBBteYN4DE7pGpFZFBBpZl+Uk0j8JgdUrUiMlhCpZ/QX6qhAl5Lg1RNRwYj1CXNnZWLkEGHSjPNXlQu
|
||||
AblWBpI9VBBQreaYd+tcNBZxFmAQSv/HP1VBJ25xa0SoZVYo6xU/MAClVdef7fl8qeYi9LNBNN8Nd6qA
|
||||
s7ClVHtkw51ZIeYVBVo/qfV5Qs1FpB5mpZA4vZLt+88qwUmJS3OMUPCqGg56mXVKOrzf3CijkxLWPtsB
|
||||
hRxVy0FP+JhQfy0/m9saqNp5yl7LKxeTNT+pS1BL58qvaE/GdF2KhvSaNc8pqSy+Fgq1strF1Ww24rqE
|
||||
C6TPxxQLXgOFmryc2pWs67ruL9BDjecFstIGAAAAAElFTkSuQmCC
|
||||
</value>
|
||||
</data>
|
||||
<metadata name="statusStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>664, 17</value>
|
||||
</metadata>
|
||||
<metadata name="colId.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="检测值.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="工序.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="Column1.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
AAABAAQAEBAAAAEACABoBQAARgAAACAgAAABAAgAqAgAAK4FAAAwMAAAAQAIAKgOAABWDgAAAAAAAAEA
|
||||
IACHIAAA/hwAACgAAAAQAAAAIAAAAAEACAAAAAAAAAEAABELAAARCwAAAAEAAAABAABaUD0AWlE9AF5V
|
||||
QABiWEIAYlhEAGtgSQB9cFYAjIJuAI2DbwAZp10AGaldABy6aAAevGoAL755AC/AdwAxwHkANdSFADfW
|
||||
hwA11ooAN9aKADrZigCCdVoAiHteAIR4YQCHjGcAnY1tAJ6ObgCSiXYAkol6AJWMeQCVjHoAlox6AJCS
|
||||
bgCfkHAAoI1tAKCObgCjkHAAopByAKKScgCmnIYAqZ+JAKqcigCqn4oA++OxAPvjsgD747MA++S1AP3l
|
||||
sQD95bMA/+WzAP3ltgD/5bYA++a6AP/oswD/6LYA/+u2AP/swgD+8dIA/vTZAP723gD+9t8A//XhAP75
|
||||
4QD/+OAA//nhAP/45ABIPy4AUUIxAEs/MQBNRDQAS0UxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARwQEBAQE
|
||||
BAQEBAQEBAQER0cFHx4cHigpJygeBx4eB0dHR0dHRwECBQUCAUdHR0dHR0dHRkRGAQQEAUZERERHR0dH
|
||||
FxglISIZGhoaISUGR0dHRyAxCTYxMjEyMjE1GUdHR0cgPQsJNjEsLC4uMRlHRwoKCQkLCwo1MS4uLC8h
|
||||
R0cJDAsLCwsLCi8sLC41GkdHDxQSEhMTEQ45LCwsNRpHRw0ODg4QEA1AQTouLDUaR0dHRyBAEA5BPT1B
|
||||
OzQxGkdHR0cgQA5AOzs7O0BAOBlHR0dHFiAlIhkZGRkZIiUVR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dH
|
||||
R0dHR0dHR0dHR4ABAACAAQAA+B8AAOADAADAAwAAwAMAAMADAAAAAwAAAAMAAAADAAAAAwAAwAMAAMAD
|
||||
AADAAwAA//8AAP//AAAoAAAAIAAAAEAAAAABAAgAAAAAAAAEAAAAAAAAAAAAAAABAAAAAQAAWVA/AFlT
|
||||
PwBaUT4AY1lDAGRaRABkXEQAZFxEAHdrUwBhV0EAYVpEAGRaRABkWkQAZlxGAHZqUQB3a1EAd2tSAHdr
|
||||
VAB3blQAemtRAHpqUwB6a1QAeW1UAHpuVAB6blYAc2hQAHltUwBhV0EAZFpEAGRXRABmV0YAZFpEABa6
|
||||
ZQAZumgAGbxoABy6aAAcvGgAHLxqAB68aAAevGoAIL9qACm9bgAtvm8AML9wADW/cgA11IcANdSFADXW
|
||||
hwAkwnEAOcF2AD7EfABRjVwARL98ACnUggAv1oUAMNSFADHUhgAy1IYAM9SHADLWhQA11IUANdWHADXW
|
||||
hQA11ocAN9aFADfWhwA31YgAVNCMAGHcmwCbqnwAp52IAKqgiwCf3JsAnd6uAKDergCv6rsAtezBALzt
|
||||
xADGs4sAybaLAMm2jgDMto4AybqXAN3gqADi4aoA5uKsAOrjrQDu464A++OvAPLmtgD747EA++S0AP3j
|
||||
sQD947MA/uOyAP3lsQD95bMA/+WxAP/msgD75roA++a7AP3nuQD/6LMA/+m1AP/otgD/67YA/+u5AMLu
|
||||
xwDH78kAze/MANXwzgD268IA++nEAPvqxQD/8M0A/vLVAP7z1QD/89kA/vPdAP/02gD+9d4A/vbeAP/1
|
||||
4QD+9uAA//bgAP734gD+9+MA//XkAP/15wD/+eMA//jkAP/45wD/+uYA//vnAGZaRABpXkgAZ11HAGRc
|
||||
RAAcumgAHLpoABy/agCyqJQArqSQALuxnQC7sZ0Abl9FALqwnAC6sJ8ArqSQAHBkSgB1alMAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJaW
|
||||
lpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpYYCggICAgLCwsLCwsMDAgKCgkLCwsLCwsKCwoD
|
||||
lpaWlhcVFxcVFQ8PDw8PDw8VFxcXFw8PFxYPDw8VDxeWlpaWlkZGRkZGRUVFRUVFRUVGRkZGRUaWRkVF
|
||||
RUVGlpaWlpaWjZSTk42TjI6Ojo6OjZWWkJSUlpaNk5OTk42WlpaWlpaWlpaWlpaWBAUGBgYFBgYMBQYA
|
||||
lpaWlpaWlpaWlpaWlpaWlpaWlpaIhwcXDw8NFxcEiIiWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlQICAggJ
|
||||
DZaWlpaWlpaWlpaWlpaWlpaWiAaFGhoaGhocAgECAQEBHBwcHBwcHIWFlpaWlpaWlpZETU1FT01NTU1N
|
||||
TU1NTU1NTU1NTU1NUQ2WlpaWlpaWlhN+cSdSZl9fX19ZZmFZX1lZYVlmYWFoCpaWlpaWlpaWDX19HyhT
|
||||
X19hWWFZWWVhWWVZYVlhV2gIlpaWlpaWlpYPhH8iIilUZllhWWFhV2FXWWFXYVllaAiWlpaWlpaWlg+C
|
||||
giMiIjBUZmFhWVdlWWVlV2VZYVdoCJaWlpaJiYmLMkhIIyckIjBWZVdlYVlhV1dhWWVXZWgIlpaWlick
|
||||
JCQkIiAkJCQjHzBYYVdZYVlhZVdhV2FXaAiWlpaWIiIiIiIiIiIiIiIiIjFuXWFhWWFhV2VXZVloCJaW
|
||||
lpYvLy8vLy8vLy8vLy8vL0J0WVlhWVllV2FXYWgIlpaWlkBAQEBAQEBAPz9AQEBAbXt3Y11hYVdhV2Fh
|
||||
aAiWlpaWQEBAQEA7Ozs/Pz9AQGyCe3t9b1lXYVllWWFoCJaWlpYsLS0uM0NDOztAQDlre357d359c1pZ
|
||||
YVdXYWgIlpaWlpaWlpYShIA6QDo5an17fnt+d3t9e2NZYWFZaAiWlpaWlpaWlg6EezpANUx9e3t3fnd+
|
||||
fn19e29XWWFoCJaWlpaWlpaWDoSANTpLfXt+fn53fnd+e3t7gHNdXWgIlpaWlpaWlpYRgHs0Sn50d3d3
|
||||
d3d3d3R3d3d3d3ZkaQiWlpaWlpaWlhNhXUddV1dXV1dXV1lXV1dXV1dXWVdmCJaWlpaWlpaWGRcQFA8P
|
||||
EBAQEBQNEBAQEBAQEA8QEBcYlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaW
|
||||
lpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaW
|
||||
lpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaWlpaW
|
||||
lpb/////wAAAA8AAAAPgAAIH4ABGB//AA///wAP///Af//AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADwAA
|
||||
AA8AAAAPAAAADwAAAA8AAAAPAAAADwAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA//////////////
|
||||
/////////////ygAAAAwAAAAYAAAAAEACAAAAAAAAAkAAAAAAAAAAAAAAAEAAAABAABORjYAZlxGAGNZ
|
||||
QwBkXEQAYVdDAGRaRABmWkQAZFxEAGZcRQBmXEYAaF5HAGZcRgBmXEYAa2BJAHltUwB6blQAe29VAHxu
|
||||
VAB8cFYAf3NZAE5GNgBkXEQAa2FKAB66agBmXEYAd2tSAHltUwBmXEYAZlxGAGZcRwCupJAArqSQALGk
|
||||
kACdknwAnZV8ABO6aAAXumgAGbppABq6aQAbu2oAGbxqABy6aAAeumgAHrtqABy8aAAcvGoAHrxqACC8
|
||||
awAivG0AJb5wACm/cgA6o2MAKcBxAEyzdgBSuHoAQMN7AB68agAcvGoANdSFADfWhwA11ocALdSFADHU
|
||||
hgAy1IYAMtaFADXUhQA01IcANdSHADXWhQA11ocAN9aFADfWhwA11YgAN9WJADrVigA81osAP9aMAELX
|
||||
jQBG2Y8AVtmUAGLNiwBnzpAAeuClAIZ5XACNgWkAkYNlAJaHaACSk28AqJh1AKqadwCtnXoAoqB7AK+g
|
||||
fACxoHwAs6F9ALWjfwCupJAArqSUAK6kkACvpZEArqSUALKokQCyqJQApJmEAKechwC4o4IAvKqEAL2x
|
||||
mAC9sJsAvbKbAL21ngCJ0I4Ai9GVAJXdnQCd05MAjtilAJjksQCb5bQApdeYAKvZmgCz2p0AudufAK7e
|
||||
oAC/3KEAteq8ALvtxADAsJsAyN2jANLepQDX4q8A3ee9APvjsQD747IA++OzAPvltwD947EA/eOyAP3l
|
||||
sQD95bMA/+WzAP3mtgD75bgA/+W5AP/oswD96LYA/+i2AP/puQDB7scAx+/JAM3vzADV8M4A3fHQAOLs
|
||||
zwDh7NQA4fLSAOby1ADq89YA6PTVAPvowAD76MEA/evEAP7x0AD+8dEA/vHSAP7y0gD/8tUA//PVAP7z
|
||||
2wD+9NsA/vXbAP713AD/9d4A/vbeAP/23gD/9eEA/vfhAP734wD/9eQA//jkAHpuVACup5AAd2hOAHVp
|
||||
TwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAt7e3t7e3
|
||||
t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3
|
||||
t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3GAwMDAMMDAwMBAQMDAMDAwMDAwMDBAwMDAMK
|
||||
AwMEAwMDAwMDAwMDDAwAt7e3t7e3Dg0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0ODQ0NDQ0NDQ0N
|
||||
DQ0Kt7e3t7e3U1NTDw8PDw8PHlNTUw8PDx9THxMTEx4PD1NTEh9TVw8PDw8PDw8PDxITt7e3t7e3tyB/
|
||||
Z2dnZ2dnZ2d/aGdnaGhsaGhoZ2doZ25oaGhotyFoZ2dnZ2hnaCC1t7e3t7e3t7UeVGIeHmIeACIfZyFT
|
||||
Zx4eZ2JiZxRnU7RiYlQCt7RiYiBiYiBiYrS3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3
|
||||
t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3GwAZGBgYGBgYGBgYGBgYGQAbt7e3t7e3t7e3
|
||||
t7e3t7e3t7e3t7e3t7e3t7e3t7e3DB0NCggKCAoKCAgICAgKCQAMt7e3t7e3t7e3t7e3t7e3t7e3t7e3
|
||||
t7e3t7e3t7e3t7e3tFMTEhISEhISExKzt7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3
|
||||
txsEBAQEBAQEBBu3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3txQAAAAAAAAAABS3
|
||||
t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3FQUFBQUFBQUJCQgJCAgJCAkJBQUFBQUFCg0FBQUFBQUFBQUV
|
||||
t7e3t7e3t7e3t7e3ElRZWVdaWVhYWFhYWFhYWFhYWFhYWFhZWFhYWFhYWVlYWVMHt7e3t7e3t7e3t7e3
|
||||
E26mkm9ykYmJioqKioqKioqKioqKioqKioqKioqKioqKil4Ft7e3t7e3t7e3t7e3Em2vrXAjdpGKiYmJ
|
||||
iYmJiYmJiYmJiYmJiYmJiYmJiYmJklwFt7e3t7e3t7e3t7e3DmyxsnMoJHeRiomJiYmJiYmJiYmJiYmJ
|
||||
iYmJiYmJiYmJilwFt7e3t7e3t7e3t7e3Em2xsXMoLiR4kYWKiYmJiYmJiYmJiYmJiYmJiYmJiYmKkl0F
|
||||
t7e3t7e3t7e3t7e3D2yxsXMoLiwkeZCKioqJiYmJiYmJiYmJiYmJiYmJiYmKkFoFt7e3t7e3t7e3t7e3
|
||||
EmyxsXMoLi4kLn+KiomJiYmJiYmJiYmJiYmJiYmJiYmJkF0Ft7e3t7e3t7e3t7e3Dn6ysnMuLi4uKSl/
|
||||
kYqJiYmJiYmJiYmJiYmJiYmJiYmJkF0Ft7e3t7e3OBcXFxc5MzZRUTcuLi4uLiwwgJGJiYmJiYmJiYmJ
|
||||
iYmJiYmJiYmJkF0Kt7e3t7e3KS8uLi4uLi4oKSkuLi4uLi4sMIGJiYmJiYmJiYmJiYmJiYmJiYmJkGgK
|
||||
t7e3t7e3Ly4uLi4uLi4uLi4uLi4uLi4uKTGCioiJiYmJiYmJiYmJiYmJiYmJkFwFt7e3t7e3KS4uLi4u
|
||||
Li4uLi4uLi4uLi4uLik0mYqIiYmJiYmJiYmJiYmJiYmJkFwFt7e3t7e3KSkpKSkpKSkpKSkpKSkuLCkp
|
||||
KSkpNJmghImJiYmJiYmJiYmJiYmJkFwFt7e3t7e3RkZKREZKRERGRkZKRkpEREpGRkpETpyypISIiYmJ
|
||||
iYmJiYmJiYmJkFwFt7e3t7e3QkZGRkZGRkZGRkZGRkZGREZGRkJNnLKusq2NiYmJiYmJiYmJiYmJkFwF
|
||||
t7e3t7e3RERGRkZGRkZGRkZGRkZGRkZGREubsq6urq+vn4iJiYmJiYmJiYmJkFwFt7e3t7e3SUZGRkZE
|
||||
SURBQkJGRkZGRkRES5qyrq6urq6ysaSEiImJiYmJiYmJkFwJt7e3t7e3Ojs7Ozs8NVBSUk9ERkZGRkRK
|
||||
l7Gurq6urq6urrKojYmJiYmJiYmJkFwJt7e3t7e3t7e3t7e3EWyysnVERkZGREmWsq6urq6urq6urq6y
|
||||
r5+DiYmJiYmJkVwFt7e3t7e3t7e3t7e3D2yxsXVERkZESZWyrq6urq6urq6urq6usrGhhIOJiYmJkVwF
|
||||
t7e3t7e3t7e3t7e3EmyxsXVERERClLGurq6urq6urq6urq6urq6vqIWJiYmKkFwFt7e3t7e3t7e3t7e3
|
||||
Dm2xsXVERECTsa6urq6urq6urq6urq6urq6usq6fiYmKkFwFt7e3t7e3t7e3t7e3Dm2ysnVAQH2yrq6u
|
||||
rq6urq6urq6urq6urq6urq6yoYSIilwFt7e3t7e3t7e3t7e3EmutrXQ9fK2nqKenp6enp62np6enp6en
|
||||
p6etp6etraaKklwFt7e3t7e3t7e3t7e3EmqRkXF6ioqKioqKioqKiomJioqKioqKioqKioqKioqFkV4F
|
||||
t7e3t7e3t7e3t7e3DlZfX1tpX15eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eaVUFt7e3t7e3t7e3t7e3
|
||||
Gg4SDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8ODhIODhIOEhIZt7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3
|
||||
t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3
|
||||
t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3
|
||||
t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3
|
||||
t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3
|
||||
t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3t7e3
|
||||
t7e3t7e3t7e3t7e3t7e3t7e3////////AAD///////8AAOAAAAAABwAA4AAAAAAHAADgAAAAAAcAAPAA
|
||||
AABABwAA8AAAAEAPAAD///////8AAP/+AAB//wAA//4AAH//AAD//8AD//8AAP//4Af//wAA///gB///
|
||||
AAD8AAAAAD8AAPwAAAAAPwAA/AAAAAA/AAD8AAAAAD8AAPwAAAAAPwAA/AAAAAA/AAD8AAAAAD8AAPwA
|
||||
AAAAPwAA/AAAAAA/AAAAAAAAAD8AAAAAAAAAPwAAAAAAAAA/AAAAAAAAAD8AAAAAAAAAPwAAAAAAAAA/
|
||||
AAAAAAAAAD8AAAAAAAAAPwAAAAAAAAA/AAAAAAAAAD8AAPwAAAAAPwAA/AAAAAA/AAD8AAAAAD8AAPwA
|
||||
AAAAPwAA/AAAAAA/AAD8AAAAAD8AAPwAAAAAPwAA/AAAAAA/AAD8AAAAAD8AAP///////wAA////////
|
||||
AAD///////8AAP///////wAA////////AAD///////8AAP///////wAAiVBORw0KGgoAAAANSUhEUgAA
|
||||
AQAAAAEACAYAAABccqhmAAAgTklEQVR42u2de3Qc1Z3nv7e7ql/qVkvWA8s2NrZxgkkgNgaCzMMvbLAZ
|
||||
A5mJYR5hZ3czszs7hzx2MsmZncyyezaHsznJJJshzuYByTyS2YwhhIfBxjZCtjE2OBiTByQBjCFYlpGl
|
||||
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
|
||||
wsOQABCEh/n/kzJOKq1u/QcAAAAASUVORK5CYII=
|
||||
</value>
|
||||
</data>
|
||||
</root>
|
2480
halftoneproject-master/AssistClient/FrmSysSetting.Designer.cs
generated
Normal file
2480
halftoneproject-master/AssistClient/FrmSysSetting.Designer.cs
generated
Normal file
File diff suppressed because it is too large
Load Diff
329
halftoneproject-master/AssistClient/FrmSysSetting.cs
Normal file
329
halftoneproject-master/AssistClient/FrmSysSetting.cs
Normal file
@ -0,0 +1,329 @@
|
||||
using Newtonsoft.Json.Linq;
|
||||
using AssistClient.Utils;
|
||||
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;
|
||||
using System.Windows.Forms.VisualStyles;
|
||||
|
||||
namespace AssistClient
|
||||
{
|
||||
public partial class FrmSysSetting : Form
|
||||
{
|
||||
public FrmSysSetting()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
private void initData()
|
||||
{
|
||||
string configPath = Application.StartupPath + "\\SysConfig.ini";
|
||||
string lsTmp = "";
|
||||
|
||||
var comNameList = Utils.SSerialPort.getPortNames().ToList();
|
||||
comNameList.ForEach(comName =>
|
||||
{
|
||||
this.cobLight_PortNum.Items.Add(comName);
|
||||
});
|
||||
|
||||
//Server
|
||||
this.txtDBConStr.Text = Util.ReadIniValue(configPath, "Server", "DBConStr");
|
||||
this.txtServerIp.Text = Util.ReadIniValue(configPath, "Server", "ServerIP");
|
||||
lsTmp = Util.ReadIniValue(configPath, "Server", "ServerPort");
|
||||
if (Util.IsNumber(lsTmp))
|
||||
this.numServerPort.Value = Convert.ToInt32(lsTmp);
|
||||
|
||||
//Skip
|
||||
this.chkSkipAxis0.Checked = Util.ReadIniValue(configPath, "SKIP", "SkipAxis0") == "1";
|
||||
this.chkSkipAxis1.Checked = Util.ReadIniValue(configPath, "SKIP", "SkipAxis1") == "1";
|
||||
this.chkSkipAxis2.Checked = Util.ReadIniValue(configPath, "SKIP", "SkipAxis2") == "1";
|
||||
this.chkSkipAxis3.Checked = Util.ReadIniValue(configPath, "SKIP", "SkipAxis3") == "1";
|
||||
|
||||
this.chkSkipLight.Checked = Util.ReadIniValue(configPath, "SKIP", "SkipLight") == "1";
|
||||
this.chkSkipScannerCC.Checked = Util.ReadIniValue(configPath, "SKIP", "SkipScannerCC") == "1";
|
||||
|
||||
//DEV
|
||||
lsTmp = Util.ReadIniValue(configPath, "DEV", "Axis0_PulseOutMode");
|
||||
EnumUtil.BindToEnumName<AxisPulseOutMode>(this.cobAxis0PulseOutMode, typeof(AxisPulseOutMode), lsTmp == "" ? AxisPulseOutMode.O_CW_CCW : (AxisPulseOutMode)Convert.ToInt32(lsTmp));
|
||||
lsTmp = Util.ReadIniValue(configPath, "DEV", "Axis1_PulseOutMode");
|
||||
EnumUtil.BindToEnumName<AxisPulseOutMode>(this.cobAxis1PulseOutMode, typeof(AxisPulseOutMode), lsTmp == "" ? AxisPulseOutMode.O_CW_CCW : (AxisPulseOutMode)Convert.ToInt32(lsTmp));
|
||||
lsTmp = Util.ReadIniValue(configPath, "DEV", "Axis2_PulseOutMode");
|
||||
EnumUtil.BindToEnumName<AxisPulseOutMode>(this.cobAxis2PulseOutMode, typeof(AxisPulseOutMode), lsTmp == "" ? AxisPulseOutMode.O_CW_CCW : (AxisPulseOutMode)Convert.ToInt32(lsTmp));
|
||||
lsTmp = Util.ReadIniValue(configPath, "DEV", "Axis3_PulseOutMode");
|
||||
EnumUtil.BindToEnumName<AxisPulseOutMode>(this.cobAxis3PulseOutMode, typeof(AxisPulseOutMode), lsTmp == "" ? AxisPulseOutMode.O_CW_CCW : (AxisPulseOutMode)Convert.ToInt32(lsTmp));
|
||||
|
||||
lsTmp = Util.ReadIniValue(configPath, "DEV", "Axis0_HomeMode");
|
||||
EnumUtil.BindToEnumName<AxitHomeMode>(this.cobAxis0HomeMode, typeof(AxitHomeMode), lsTmp == "" ? AxitHomeMode.MODE11_LmtSearch_Ref : (AxitHomeMode)Convert.ToInt32(lsTmp));
|
||||
lsTmp = Util.ReadIniValue(configPath, "DEV", "Axis1_HomeMode");
|
||||
EnumUtil.BindToEnumName<AxitHomeMode>(this.cobAxis1HomeMode, typeof(AxitHomeMode), lsTmp == "" ? AxitHomeMode.MODE11_LmtSearch_Ref : (AxitHomeMode)Convert.ToInt32(lsTmp));
|
||||
lsTmp = Util.ReadIniValue(configPath, "DEV", "Axis2_HomeMode");
|
||||
EnumUtil.BindToEnumName<AxitHomeMode>(this.cobAxis2HomeMode, typeof(AxitHomeMode), lsTmp == "" ? AxitHomeMode.MODE11_LmtSearch_Ref : (AxitHomeMode)Convert.ToInt32(lsTmp));
|
||||
lsTmp = Util.ReadIniValue(configPath, "DEV", "Axis3_HomeMode");
|
||||
EnumUtil.BindToEnumName<AxitHomeMode>(this.cobAxis3HomeMode, typeof(AxitHomeMode), lsTmp == "" ? AxitHomeMode.MODE11_LmtSearch_Ref : (AxitHomeMode)Convert.ToInt32(lsTmp));
|
||||
|
||||
|
||||
this.cobLight_PortNum.Text = "COM" + Util.ReadIniValue(configPath, "DEV", "Light_PortNum");
|
||||
|
||||
this.cobAxis0HomeDir.SelectedIndex = Convert.ToInt32(Util.ReadIniValue(configPath, "DEV", "Axis0_HomeDir"));
|
||||
this.cobAxis1HomeDir.SelectedIndex = Convert.ToInt32(Util.ReadIniValue(configPath, "DEV", "Axis1_HomeDir"));
|
||||
this.cobAxis2HomeDir.SelectedIndex = Convert.ToInt32(Util.ReadIniValue(configPath, "DEV", "Axis2_HomeDir"));
|
||||
this.cobAxis3HomeDir.SelectedIndex = Convert.ToInt32(Util.ReadIniValue(configPath, "DEV", "Axis3_HomeDir"));
|
||||
|
||||
#region 回HOME速度
|
||||
lsTmp = Util.ReadIniValue(configPath, "DEV", "Axis_HomeVelLow");
|
||||
if (!string.IsNullOrWhiteSpace(lsTmp))
|
||||
{
|
||||
JArray Axis_HomeVelLow = JArray.Parse(lsTmp);
|
||||
this.numAxis0HomeVelLow.Value = Axis_HomeVelLow.Count > 0 ? (decimal)Axis_HomeVelLow[0] : 0;
|
||||
this.numAxis1HomeVelLow.Value = Axis_HomeVelLow.Count > 1 ? (decimal)Axis_HomeVelLow[1] : 0;
|
||||
this.numAxis2HomeVelLow.Value = Axis_HomeVelLow.Count > 2 ? (decimal)Axis_HomeVelLow[2] : 0;
|
||||
this.numAxis3HomeVelLow.Value = Axis_HomeVelLow.Count > 3 ? (decimal)Axis_HomeVelLow[3] : 0;
|
||||
}
|
||||
lsTmp = Util.ReadIniValue(configPath, "DEV", "Axis_HomeVelHigh");
|
||||
if (!string.IsNullOrWhiteSpace(lsTmp))
|
||||
{
|
||||
JArray Axis_HomeVelHigh = JArray.Parse(lsTmp);
|
||||
this.numAxis0HomeVelHigh.Value = Axis_HomeVelHigh.Count > 0 ? (decimal)Axis_HomeVelHigh[0] : 0;
|
||||
this.numAxis1HomeVelHigh.Value = Axis_HomeVelHigh.Count > 1 ? (decimal)Axis_HomeVelHigh[1] : 0;
|
||||
this.numAxis2HomeVelHigh.Value = Axis_HomeVelHigh.Count > 2 ? (decimal)Axis_HomeVelHigh[2] : 0;
|
||||
this.numAxis3HomeVelHigh.Value = Axis_HomeVelHigh.Count > 3 ? (decimal)Axis_HomeVelHigh[3] : 0;
|
||||
}
|
||||
lsTmp = Util.ReadIniValue(configPath, "DEV", "Axis_HomeAcc");
|
||||
if (!string.IsNullOrWhiteSpace(lsTmp))
|
||||
{
|
||||
JArray Axis_HomeAcc = JArray.Parse(lsTmp);
|
||||
this.numAxis0HomeAcc.Value = Axis_HomeAcc.Count > 0 ? (decimal)Axis_HomeAcc[0] : 0;
|
||||
this.numAxis1HomeAcc.Value = Axis_HomeAcc.Count > 1 ? (decimal)Axis_HomeAcc[1] : 0;
|
||||
this.numAxis2HomeAcc.Value = Axis_HomeAcc.Count > 2 ? (decimal)Axis_HomeAcc[2] : 0;
|
||||
this.numAxis3HomeAcc.Value = Axis_HomeAcc.Count > 3 ? (decimal)Axis_HomeAcc[3] : 0;
|
||||
}
|
||||
lsTmp = Util.ReadIniValue(configPath, "DEV", "Axis_HomeDec");
|
||||
if (!string.IsNullOrWhiteSpace(lsTmp))
|
||||
{
|
||||
JArray Axis_HomeDec = JArray.Parse(lsTmp);
|
||||
this.numAxis0HomeDec.Value = Axis_HomeDec.Count > 0 ? (decimal)Axis_HomeDec[0] : 0;
|
||||
this.numAxis1HomeDec.Value = Axis_HomeDec.Count > 1 ? (decimal)Axis_HomeDec[1] : 0;
|
||||
this.numAxis2HomeDec.Value = Axis_HomeDec.Count > 2 ? (decimal)Axis_HomeDec[2] : 0;
|
||||
this.numAxis3HomeDec.Value = Axis_HomeDec.Count > 3 ? (decimal)Axis_HomeDec[3] : 0;
|
||||
}
|
||||
#endregion
|
||||
#region JOG速度
|
||||
lsTmp = Util.ReadIniValue(configPath, "DEV", "Axis_JogVelLow");
|
||||
if (!string.IsNullOrWhiteSpace(lsTmp))
|
||||
{
|
||||
JArray Axis_JogVelLow = JArray.Parse(lsTmp);
|
||||
this.numAxis0JogVelLow.Value = Axis_JogVelLow.Count > 0 ? (decimal)Axis_JogVelLow[0] : 0;
|
||||
this.numAxis1JogVelLow.Value = Axis_JogVelLow.Count > 1 ? (decimal)Axis_JogVelLow[1] : 0;
|
||||
this.numAxis2JogVelLow.Value = Axis_JogVelLow.Count > 2 ? (decimal)Axis_JogVelLow[2] : 0;
|
||||
this.numAxis3JogVelLow.Value = Axis_JogVelLow.Count > 3 ? (decimal)Axis_JogVelLow[3] : 0;
|
||||
}
|
||||
lsTmp = Util.ReadIniValue(configPath, "DEV", "Axis_JogVelHigh");
|
||||
if (!string.IsNullOrWhiteSpace(lsTmp))
|
||||
{
|
||||
JArray Axis_JogVelHigh = JArray.Parse(lsTmp);
|
||||
this.numAxis0JogVelHigh.Value = Axis_JogVelHigh.Count > 0 ? (decimal)Axis_JogVelHigh[0] : 0;
|
||||
this.numAxis1JogVelHigh.Value = Axis_JogVelHigh.Count > 1 ? (decimal)Axis_JogVelHigh[1] : 0;
|
||||
this.numAxis2JogVelHigh.Value = Axis_JogVelHigh.Count > 2 ? (decimal)Axis_JogVelHigh[2] : 0;
|
||||
this.numAxis3JogVelHigh.Value = Axis_JogVelHigh.Count > 3 ? (decimal)Axis_JogVelHigh[3] : 0;
|
||||
}
|
||||
lsTmp = Util.ReadIniValue(configPath, "DEV", "Axis_JogAcc");
|
||||
if (!string.IsNullOrWhiteSpace(lsTmp))
|
||||
{
|
||||
JArray Axis_JogAcc = JArray.Parse(lsTmp);
|
||||
this.numAxis0JogAcc.Value = Axis_JogAcc.Count > 0 ? (decimal)Axis_JogAcc[0] : 0;
|
||||
this.numAxis1JogAcc.Value = Axis_JogAcc.Count > 1 ? (decimal)Axis_JogAcc[1] : 0;
|
||||
this.numAxis2JogAcc.Value = Axis_JogAcc.Count > 2 ? (decimal)Axis_JogAcc[2] : 0;
|
||||
this.numAxis3JogAcc.Value = Axis_JogAcc.Count > 3 ? (decimal)Axis_JogAcc[3] : 0;
|
||||
}
|
||||
lsTmp = Util.ReadIniValue(configPath, "DEV", "Axis_JogDec");
|
||||
if (!string.IsNullOrWhiteSpace(lsTmp))
|
||||
{
|
||||
JArray Axis_JogDec = JArray.Parse(lsTmp);
|
||||
this.numAxis0JogDec.Value = Axis_JogDec.Count > 0 ? (decimal)Axis_JogDec[0] : 0;
|
||||
this.numAxis1JogDec.Value = Axis_JogDec.Count > 1 ? (decimal)Axis_JogDec[1] : 0;
|
||||
this.numAxis2JogDec.Value = Axis_JogDec.Count > 2 ? (decimal)Axis_JogDec[2] : 0;
|
||||
this.numAxis3JogDec.Value = Axis_JogDec.Count > 3 ? (decimal)Axis_JogDec[3] : 0;
|
||||
}
|
||||
#endregion
|
||||
|
||||
this.txtIO_DevNum.Text = Util.ReadIniValue(configPath, "DEV", "IOCard_DeviceNum");
|
||||
this.txtSizeEnginePath.Text= Util.ReadIniValue(configPath, "DEV", "SizeEnginePath");
|
||||
this.txtSizeBmp_Path.Text= Util.ReadIniValue(configPath, "DEV", "SizeBmp_Path");
|
||||
this.ckbSizeBmp_IsSave.Checked = (Util.ReadIniValue(configPath, "DEV", "SizeBmp_IsSave") == "1");
|
||||
this.txtSizeRepairTable.Text = Util.ReadIniValue(configPath, "DEV", "SizeRepairTablePath");
|
||||
//LOG
|
||||
this.txtLogPath.Text = Util.ReadIniValue(configPath, "LOG", "LogPath");
|
||||
}
|
||||
private void FrmSetParams_Load(object sender, EventArgs e)
|
||||
{
|
||||
initData();
|
||||
}
|
||||
|
||||
private void tsbtnSave_Click(object sender, EventArgs e)
|
||||
{
|
||||
try
|
||||
{
|
||||
string configPath = Application.StartupPath + "\\SysConfig.ini";
|
||||
|
||||
//DEV
|
||||
string Light_PortNum = this.cobLight_PortNum.Text.Trim();
|
||||
if (Light_PortNum == "" )
|
||||
throw new Exception("请设置设备COM端口!");
|
||||
|
||||
string IOCard_DeviceNum = this.txtIO_DevNum.Text.Trim();
|
||||
if (IOCard_DeviceNum == "")
|
||||
throw new Exception("请设置I/O设备编号 !");
|
||||
|
||||
//LOG
|
||||
string LogPath = this.txtLogPath.Text.Trim();
|
||||
if (LogPath == "")
|
||||
throw new Exception("请设置日志保存路径 !");
|
||||
|
||||
//最后统一保存
|
||||
//Skip
|
||||
Util.WriteIniValue(configPath, "SKIP", "SkipAxis0", this.chkSkipAxis0.Checked ? "1" : "0");
|
||||
Util.WriteIniValue(configPath, "SKIP", "SkipAxis1", this.chkSkipAxis1.Checked ? "1" : "0");
|
||||
Util.WriteIniValue(configPath, "SKIP", "SkipAxis2", this.chkSkipAxis2.Checked ? "1" : "0");
|
||||
Util.WriteIniValue(configPath, "SKIP", "SkipAxis3", this.chkSkipAxis3.Checked ? "1" : "0");
|
||||
|
||||
Util.WriteIniValue(configPath, "SKIP", "SkipLight", this.chkSkipLight.Checked ? "1" : "0");
|
||||
//Util.WriteIniValue(configPath, "SKIP", "SkipScannerGL", this.chkSkipScannerGL.Checked ? "1" : "0");
|
||||
Util.WriteIniValue(configPath, "SKIP", "SkipScannerCC", this.chkSkipScannerCC.Checked ? "1" : "0");
|
||||
|
||||
Utils.Util.WriteIniValue(configPath, "DEV", "Light_PortNum", Light_PortNum.Substring(3));
|
||||
|
||||
//DEV
|
||||
Utils.Util.WriteIniValue(configPath, "DEV", "Axis0_PulseOutMode", ((int)EnumUtil.GetSelectedItemToEnum<AxisPulseOutMode>(this.cobAxis0PulseOutMode)).ToString());
|
||||
Utils.Util.WriteIniValue(configPath, "DEV", "Axis1_PulseOutMode", ((int)EnumUtil.GetSelectedItemToEnum<AxisPulseOutMode>(this.cobAxis1PulseOutMode)).ToString());
|
||||
Utils.Util.WriteIniValue(configPath, "DEV", "Axis2_PulseOutMode", ((int)EnumUtil.GetSelectedItemToEnum<AxisPulseOutMode>(this.cobAxis2PulseOutMode)).ToString());
|
||||
Utils.Util.WriteIniValue(configPath, "DEV", "Axis3_PulseOutMode", ((int)EnumUtil.GetSelectedItemToEnum<AxisPulseOutMode>(this.cobAxis3PulseOutMode)).ToString());
|
||||
|
||||
Utils.Util.WriteIniValue(configPath, "DEV", "Axis0_HomeMode", ((int)EnumUtil.GetSelectedItemToEnum<AxitHomeMode>(this.cobAxis0HomeMode)).ToString());
|
||||
Utils.Util.WriteIniValue(configPath, "DEV", "Axis1_HomeMode", ((int)EnumUtil.GetSelectedItemToEnum<AxitHomeMode>(this.cobAxis1HomeMode)).ToString());
|
||||
Utils.Util.WriteIniValue(configPath, "DEV", "Axis2_HomeMode", ((int)EnumUtil.GetSelectedItemToEnum<AxitHomeMode>(this.cobAxis2HomeMode)).ToString());
|
||||
Utils.Util.WriteIniValue(configPath, "DEV", "Axis3_HomeMode", ((int)EnumUtil.GetSelectedItemToEnum<AxitHomeMode>(this.cobAxis3HomeMode)).ToString());
|
||||
|
||||
Utils.Util.WriteIniValue(configPath, "DEV", "Axis0_HomeDir", this.cobAxis0HomeDir.SelectedIndex.ToString());
|
||||
Utils.Util.WriteIniValue(configPath, "DEV", "Axis1_HomeDir", this.cobAxis1HomeDir.SelectedIndex.ToString());
|
||||
Utils.Util.WriteIniValue(configPath, "DEV", "Axis2_HomeDir", this.cobAxis2HomeDir.SelectedIndex.ToString());
|
||||
Utils.Util.WriteIniValue(configPath, "DEV", "Axis3_HomeDir", this.cobAxis3HomeDir.SelectedIndex.ToString());
|
||||
|
||||
#region 回HOME速度
|
||||
JArray Axis_HomeVelLow = new JArray()
|
||||
{
|
||||
numAxis0HomeVelLow.Value,numAxis1HomeVelLow.Value,numAxis2HomeVelLow.Value,numAxis3HomeVelLow.Value
|
||||
};
|
||||
Utils.Util.WriteIniValue(configPath, "DEV", "Axis_HomeVelLow", Axis_HomeVelLow.ToString().Replace("\r\n",""));
|
||||
|
||||
JArray Axis_HomeVelHigh = new JArray()
|
||||
{
|
||||
numAxis0HomeVelHigh.Value,numAxis1HomeVelHigh.Value,numAxis2HomeVelHigh.Value,numAxis3HomeVelHigh.Value
|
||||
};
|
||||
Utils.Util.WriteIniValue(configPath, "DEV", "Axis_HomeVelHigh", Axis_HomeVelHigh.ToString().Replace("\r\n", ""));
|
||||
|
||||
JArray Axis_HomeAcc = new JArray()
|
||||
{
|
||||
numAxis0HomeAcc.Value,numAxis1HomeAcc.Value,numAxis2HomeAcc.Value,numAxis3HomeAcc.Value
|
||||
};
|
||||
Utils.Util.WriteIniValue(configPath, "DEV", "Axis_HomeAcc", Axis_HomeAcc.ToString().Replace("\r\n", ""));
|
||||
|
||||
JArray Axis_HomeDec = new JArray()
|
||||
{
|
||||
numAxis0HomeDec.Value,numAxis1HomeDec.Value,numAxis2HomeDec.Value,numAxis3HomeDec.Value
|
||||
};
|
||||
Utils.Util.WriteIniValue(configPath, "DEV", "Axis_HomeDec", Axis_HomeDec.ToString().Replace("\r\n", ""));
|
||||
#endregion
|
||||
#region 回Jog速度
|
||||
JArray Axis_JogVelLow = new JArray()
|
||||
{
|
||||
numAxis0JogVelLow.Value,numAxis1JogVelLow.Value,numAxis2JogVelLow.Value,numAxis3JogVelLow.Value
|
||||
};
|
||||
Utils.Util.WriteIniValue(configPath, "DEV", "Axis_JogVelLow", Axis_JogVelLow.ToString().Replace("\r\n", ""));
|
||||
|
||||
JArray Axis_JogVelHigh = new JArray()
|
||||
{
|
||||
numAxis0JogVelHigh.Value,numAxis1JogVelHigh.Value,numAxis2JogVelHigh.Value,numAxis3JogVelHigh.Value
|
||||
};
|
||||
Utils.Util.WriteIniValue(configPath, "DEV", "Axis_JogVelHigh", Axis_JogVelHigh.ToString().Replace("\r\n", ""));
|
||||
|
||||
JArray Axis_JogAcc = new JArray()
|
||||
{
|
||||
numAxis0JogAcc.Value,numAxis1JogAcc.Value,numAxis2JogAcc.Value,numAxis3JogAcc.Value
|
||||
};
|
||||
Utils.Util.WriteIniValue(configPath, "DEV", "Axis_JogAcc", Axis_JogAcc.ToString().Replace("\r\n", ""));
|
||||
|
||||
JArray Axis_JogDec = new JArray()
|
||||
{
|
||||
numAxis0JogDec.Value,numAxis1JogDec.Value,numAxis2JogDec.Value,numAxis3JogDec.Value
|
||||
};
|
||||
Utils.Util.WriteIniValue(configPath, "DEV", "Axis_JogDec", Axis_JogDec.ToString().Replace("\r\n", ""));
|
||||
#endregion
|
||||
|
||||
Utils.Util.WriteIniValue(configPath, "DEV", "IOCard_DeviceNum", IOCard_DeviceNum);
|
||||
Utils.Util.WriteIniValue(configPath, "DEV", "SizeEnginePath", this.txtSizeEnginePath.Text.Trim());
|
||||
Utils.Util.WriteIniValue(configPath, "DEV", "SizeBmp_Path", this.txtSizeBmp_Path.Text.Trim());
|
||||
Utils.Util.WriteIniValue(configPath, "DEV", "SizeBmp_IsSave", this.ckbSizeBmp_IsSave.Checked?"1":"0");
|
||||
Utils.Util.WriteIniValue(configPath, "DEV", "SizeRepairTablePath", this.txtSizeRepairTable.Text.Trim());
|
||||
|
||||
//
|
||||
Utils.Util.WriteIniValue(configPath, "Server", "DBConStr", this.txtDBConStr.Text.Trim());
|
||||
Utils.Util.WriteIniValue(configPath, "Server", "ServerIP", this.txtServerIp.Text.Trim());
|
||||
Utils.Util.WriteIniValue(configPath, "Server", "ServerPort", ((int)this.numServerPort.Value).ToString());
|
||||
//LOG
|
||||
Utils.Util.WriteIniValue(configPath, "LOG", "LogPath", LogPath);
|
||||
|
||||
//
|
||||
this.Hide();
|
||||
MessageBox.Show("保存成功,生效需重启程序!");
|
||||
this.Close();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MessageBox.Show(ex.Message, "失败", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
}
|
||||
}
|
||||
|
||||
private void tsbtnClose_Click(object sender, EventArgs e)
|
||||
{
|
||||
this.Close();
|
||||
}
|
||||
|
||||
|
||||
|
||||
private void txtLogPath_Click(object sender, EventArgs e)
|
||||
{
|
||||
this.txtLogPath.Text = FileUtil.selectFolder(Application.StartupPath);
|
||||
}
|
||||
private void txtSizeEnginePath_Click(object sender, EventArgs e)
|
||||
{
|
||||
this.txtSizeEnginePath.Text = FileUtil.selectFolder(Application.StartupPath);
|
||||
}
|
||||
private void txtSizeRepairTable_Click(object sender, EventArgs e)
|
||||
{
|
||||
this.txtSizeRepairTable.Text = FileUtil.openFile();
|
||||
}
|
||||
private void txtSizeBmp_Path_Click(object sender, EventArgs e)
|
||||
{
|
||||
this.txtSizeBmp_Path.Text = FileUtil.selectFolder(Application.StartupPath);
|
||||
}
|
||||
|
||||
private void btnInitDB_Click(object sender, EventArgs e)
|
||||
{
|
||||
try
|
||||
{
|
||||
Service.InitDB.initDB( false);
|
||||
MessageBox.Show("成功!");
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MessageBox.Show(ex.Message, "失败", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
161
halftoneproject-master/AssistClient/FrmSysSetting.resx
Normal file
161
halftoneproject-master/AssistClient/FrmSysSetting.resx
Normal file
@ -0,0 +1,161 @@
|
||||
<?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="toolStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>17, 17</value>
|
||||
</metadata>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="tsbtnSave.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAIfSURBVFhH7ZdPS9xAGMZfKUiFiuAXKFXqRfBmi8U/F1Hr
|
||||
wdseRGxqZiaZN60H8Rt4K+2l0g/QVrEFwS/gTfRoFTz02Jt4rhQrpdV3htlspju7m8kGQfCBH9mdmffJ
|
||||
s5M32V24k0MdECXjxExhuJwGngwaPw9VKp3A4l0QeFUKHNeMc04JHK4zaZ9J455DXI6lhQx/0Cf4DCLe
|
||||
8Ed+ghC/a5+XeApR1GPO0EJRMpoG4PjRjBYTl29SLyG3zWgLZQMIuWVGi0nI9ZqX9gvMTBNlAzD8Ykbz
|
||||
i+ES7VykX3N8bwWYx18QJg/1XEO1E2BlpYvq/ulaJY7vUq8qYXxAMx163ql2AoRhN9X9JC70ey7fpl4W
|
||||
clXPO2X1AG6a0XxKkgcwO/dX1ypZTWixo+edsgM0WdhA+rY1zSvwQ8arRtOdtQOo7XxmZvzEcIhqzzJe
|
||||
NTwCKFRTnRDf6AFz1Bpax/EYguCPqa/HM0D53M4AQXBeiOpdkcUrgDIR8jkw1luIOH5MPvuWp98OUGO1
|
||||
K4GJ5el5CS6pq5dBJE+9YfET8ptJv5ar3M4mLBPPABd0CV4AfzWgG0od86LWR9EIMHloed58E0q0PL13
|
||||
QMhFEKIflrBPH/9Hjbvgrx9RPf3I1Y/onAGyP0pt1HeCH66HkEZ+NWdzSN06zqIyaRYgCO7Tor36opJY
|
||||
WPhNuzxtztZAlco9WjxB/eD+21UUgVO6L+5kCeAaOZxlqQnAQFgAAAAASUVORK5CYII=
|
||||
</value>
|
||||
</data>
|
||||
<data name="tsbtnClose.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAJQSURBVFhHxZfNctNAEIQFb0UuYEu8DFwoiOwrVPGbFPAE
|
||||
vKhjV9huzSiz69aubA501XfwuGdms7ORtV3S8/9M/qHQs0T8/l9ArVKIzwbqMA4vj2P/5rDb3FgIcs+1
|
||||
UIfb/sVx//rtw4f+lYUoGLi609j/ftwPj85p139B3FQWXQuFWnnt4Y99NZmwqmiYjfvhK12TyuItKNRQ
|
||||
tR/G7Qbf03jcbd8pE7hyJ6jyL4+gJzw0Yz7K5JxuL9oJCjmqloOe8CFhOgOV1YLTuP0Gn6ls6lDwqhpO
|
||||
3NU8cWFeTkr8blYoNn6qkTwq1ynOlSxQ3wm9CKrZ/Pw8zQXyQq2dGIcfZp2FmPI6C/9RWfM5CDXnOPb3
|
||||
ZsUz5F55nMr5yT5EqPY8+49AfecsjGzuUwYiVGsRNRrN2UMFI1RrvorinKjaQAZLqLTV1TlH4LU0SNV0
|
||||
ZFBBteYN4DE7pGpFZFBBpZl+Uk0j8JgdUrUiMlhCpZ/QX6qhAl5Lg1RNRwYj1CXNnZWLkEGHSjPNXlQu
|
||||
AblWBpI9VBBQreaYd+tcNBZxFmAQSv/HP1VBJ25xa0SoZVYo6xU/MAClVdef7fl8qeYi9LNBNN8Nd6qA
|
||||
s7ClVHtkw51ZIeYVBVo/qfV5Qs1FpB5mpZA4vZLt+88qwUmJS3OMUPCqGg56mXVKOrzf3CijkxLWPtsB
|
||||
hRxVy0FP+JhQfy0/m9saqNp5yl7LKxeTNT+pS1BL58qvaE/GdF2KhvSaNc8pqSy+Fgq1strF1Ww24rqE
|
||||
C6TPxxQLXgOFmryc2pWs67ruL9BDjecFstIGAAAAAElFTkSuQmCC
|
||||
</value>
|
||||
</data>
|
||||
<metadata name="toolTip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>166, 17</value>
|
||||
</metadata>
|
||||
<metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>56</value>
|
||||
</metadata>
|
||||
</root>
|
70
halftoneproject-master/AssistClient/Program.cs
Normal file
70
halftoneproject-master/AssistClient/Program.cs
Normal file
@ -0,0 +1,70 @@
|
||||
using Newtonsoft.Json.Linq;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace AssistClient
|
||||
{
|
||||
internal static class Program
|
||||
{
|
||||
/// <summary>
|
||||
/// 应用程序的主入口点。
|
||||
/// </summary>
|
||||
[STAThread]
|
||||
static void Main()
|
||||
{
|
||||
Thread.Sleep(500);
|
||||
Process instance = RunningInstance();
|
||||
if (instance == null)
|
||||
{
|
||||
Application.EnableVisualStyles();
|
||||
Application.SetCompatibleTextRenderingDefault(false);
|
||||
|
||||
Config.LoadAllConfig();
|
||||
while (string.IsNullOrWhiteSpace(Config.DBConStr))
|
||||
{
|
||||
Application.Run(new FrmSysSetting());
|
||||
Config.LoadAllConfig();
|
||||
}
|
||||
Service.InitDB.ConnectionString = Config.DBConStr;
|
||||
//Application.Run(new Form1());
|
||||
Application.Run(new FrmLogin());
|
||||
}
|
||||
else
|
||||
{
|
||||
MessageBox.Show("当前程序已经运行!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1, 0);
|
||||
}
|
||||
}
|
||||
|
||||
//不允许有两个程序同时启动
|
||||
public static Process RunningInstance()
|
||||
{
|
||||
Process current = Process.GetCurrentProcess();
|
||||
Process[] processes = Process.GetProcessesByName(current.ProcessName);
|
||||
//遍历正在有相同名字运行的例程
|
||||
foreach (Process process in processes)
|
||||
{
|
||||
//忽略现有的例程
|
||||
if (process.Id != current.Id)
|
||||
{
|
||||
//确保例程从EXE文件运行
|
||||
if (Assembly.GetExecutingAssembly().Location.Replace("/", "\\") ==
|
||||
current.MainModule.FileName)
|
||||
{
|
||||
//返回另一个例程实例
|
||||
return process;
|
||||
}
|
||||
}
|
||||
}
|
||||
//没有其它的例程,返回Null
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,36 @@
|
||||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
// 有关程序集的一般信息由以下
|
||||
// 控制。更改这些特性值可修改
|
||||
// 与程序集关联的信息。
|
||||
[assembly: AssemblyTitle("AssistClient")]
|
||||
[assembly: AssemblyDescription("")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("")]
|
||||
[assembly: AssemblyProduct("AssistClient")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2023")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
// 将 ComVisible 设置为 false 会使此程序集中的类型
|
||||
//对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型
|
||||
//请将此类型的 ComVisible 特性设置为 true。
|
||||
[assembly: ComVisible(false)]
|
||||
|
||||
// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID
|
||||
[assembly: Guid("3988af04-df89-4bbb-bec9-92cdaf3bcc9d")]
|
||||
|
||||
// 程序集的版本信息由下列四个值组成:
|
||||
//
|
||||
// 主版本
|
||||
// 次版本
|
||||
// 生成号
|
||||
// 修订号
|
||||
//
|
||||
//可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值
|
||||
//通过使用 "*",如下所示:
|
||||
// [assembly: AssemblyVersion("1.0.*")]
|
||||
[assembly: AssemblyVersion("1.0.0.0")]
|
||||
[assembly: AssemblyFileVersion("1.0.0.0")]
|
103
halftoneproject-master/AssistClient/Properties/Resources.Designer.cs
generated
Normal file
103
halftoneproject-master/AssistClient/Properties/Resources.Designer.cs
generated
Normal file
@ -0,0 +1,103 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// 此代码由工具生成。
|
||||
// 运行时版本:4.0.30319.42000
|
||||
//
|
||||
// 对此文件的更改可能会导致不正确的行为,并且如果
|
||||
// 重新生成代码,这些更改将会丢失。
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace AssistClient.Properties {
|
||||
using System;
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 一个强类型的资源类,用于查找本地化的字符串等。
|
||||
/// </summary>
|
||||
// 此类是由 StronglyTypedResourceBuilder
|
||||
// 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。
|
||||
// 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen
|
||||
// (以 /str 作为命令选项),或重新生成 VS 项目。
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
internal class Resources {
|
||||
|
||||
private static global::System.Resources.ResourceManager resourceMan;
|
||||
|
||||
private static global::System.Globalization.CultureInfo resourceCulture;
|
||||
|
||||
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
||||
internal Resources() {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 返回此类使用的缓存的 ResourceManager 实例。
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Resources.ResourceManager ResourceManager {
|
||||
get {
|
||||
if (object.ReferenceEquals(resourceMan, null)) {
|
||||
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("AssistClient.Properties.Resources", typeof(Resources).Assembly);
|
||||
resourceMan = temp;
|
||||
}
|
||||
return resourceMan;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 重写当前线程的 CurrentUICulture 属性,对
|
||||
/// 使用此强类型资源类的所有资源查找执行重写。
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Globalization.CultureInfo Culture {
|
||||
get {
|
||||
return resourceCulture;
|
||||
}
|
||||
set {
|
||||
resourceCulture = value;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
|
||||
/// </summary>
|
||||
internal static System.Drawing.Bitmap down {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("down", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
|
||||
/// </summary>
|
||||
internal static System.Drawing.Bitmap left {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("left", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
|
||||
/// </summary>
|
||||
internal static System.Drawing.Bitmap right {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("right", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查找 System.Drawing.Bitmap 类型的本地化资源。
|
||||
/// </summary>
|
||||
internal static System.Drawing.Bitmap up {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("up", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
133
halftoneproject-master/AssistClient/Properties/Resources.resx
Normal file
133
halftoneproject-master/AssistClient/Properties/Resources.resx
Normal file
@ -0,0 +1,133 @@
|
||||
<?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.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<data name="down" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\down.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="left" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\left.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="right" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\right.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="up" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\up.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
</root>
|
30
halftoneproject-master/AssistClient/Properties/Settings.Designer.cs
generated
Normal file
30
halftoneproject-master/AssistClient/Properties/Settings.Designer.cs
generated
Normal file
@ -0,0 +1,30 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:4.0.30319.42000
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace AssistClient.Properties
|
||||
{
|
||||
|
||||
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
|
||||
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
|
||||
{
|
||||
|
||||
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
|
||||
|
||||
public static Settings Default
|
||||
{
|
||||
get
|
||||
{
|
||||
return defaultInstance;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,7 @@
|
||||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)">
|
||||
<Profiles>
|
||||
<Profile Name="(Default)" />
|
||||
</Profiles>
|
||||
<Settings />
|
||||
</SettingsFile>
|
72
halftoneproject-master/AssistClient/Properties/app.manifest
Normal file
72
halftoneproject-master/AssistClient/Properties/app.manifest
Normal file
@ -0,0 +1,72 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1">
|
||||
<assemblyIdentity version="1.0.0.0" name="MyApplication.app" />
|
||||
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
|
||||
<security>
|
||||
<requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
|
||||
<!-- UAC 清单选项
|
||||
如果想要更改 Windows 用户帐户控制级别,请使用
|
||||
以下节点之一替换 requestedExecutionLevel 节点。n
|
||||
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
|
||||
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
|
||||
<requestedExecutionLevel level="highestAvailable" uiAccess="false" />
|
||||
|
||||
指定 requestedExecutionLevel 元素将禁用文件和注册表虚拟化。
|
||||
如果你的应用程序需要此虚拟化来实现向后兼容性,则删除此
|
||||
元素。
|
||||
-->
|
||||
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
|
||||
</requestedPrivileges>
|
||||
<applicationRequestMinimum>
|
||||
<defaultAssemblyRequest permissionSetReference="Custom" />
|
||||
<PermissionSet class="System.Security.PermissionSet" version="1" Unrestricted="true" ID="Custom" SameSite="site" />
|
||||
</applicationRequestMinimum>
|
||||
</security>
|
||||
</trustInfo>
|
||||
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
|
||||
<application>
|
||||
<!-- 设计此应用程序与其一起工作且已针对此应用程序进行测试的
|
||||
Windows 版本的列表。取消评论适当的元素,
|
||||
Windows 将自动选择最兼容的环境。 -->
|
||||
<!-- Windows Vista -->
|
||||
<!--<supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}" />-->
|
||||
<!-- Windows 7 -->
|
||||
<!--<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}" />-->
|
||||
<!-- Windows 8 -->
|
||||
<!--<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}" />-->
|
||||
<!-- Windows 8.1 -->
|
||||
<!--<supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}" />-->
|
||||
<!-- Windows 10 -->
|
||||
<!--<supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}" />-->
|
||||
</application>
|
||||
</compatibility>
|
||||
<!-- 指示该应用程序可感知 DPI 且 Windows 在 DPI 较高时将不会对其进行
|
||||
自动缩放。Windows Presentation Foundation (WPF)应用程序自动感知 DPI,无需
|
||||
选择加入。选择加入此设置的 Windows 窗体应用程序(面向 .NET Framework 4.6)还应
|
||||
在其 app.config 中将 "EnableWindowsFormsHighDpiAutoResizing" 设置设置为 "true"。
|
||||
|
||||
将应用程序设为感知长路径。请参阅 https://docs.microsoft.com/windows/win32/fileio/maximum-file-path-limitation -->
|
||||
<!--
|
||||
<application xmlns="urn:schemas-microsoft-com:asm.v3">
|
||||
<windowsSettings>
|
||||
<dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true</dpiAware>
|
||||
<longPathAware xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">true</longPathAware>
|
||||
</windowsSettings>
|
||||
</application>
|
||||
-->
|
||||
<!-- 启用 Windows 公共控件和对话框的主题(Windows XP 和更高版本) -->
|
||||
<!--
|
||||
<dependency>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity
|
||||
type="win32"
|
||||
name="Microsoft.Windows.Common-Controls"
|
||||
version="6.0.0.0"
|
||||
processorArchitecture="*"
|
||||
publicKeyToken="6595b64144ccf1df"
|
||||
language="*"
|
||||
/>
|
||||
</dependentAssembly>
|
||||
</dependency>
|
||||
-->
|
||||
</assembly>
|
BIN
halftoneproject-master/AssistClient/Resources/down.png
Normal file
BIN
halftoneproject-master/AssistClient/Resources/down.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.5 KiB |
BIN
halftoneproject-master/AssistClient/Resources/left.png
Normal file
BIN
halftoneproject-master/AssistClient/Resources/left.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 22 KiB |
BIN
halftoneproject-master/AssistClient/Resources/right.png
Normal file
BIN
halftoneproject-master/AssistClient/Resources/right.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.5 KiB |
BIN
halftoneproject-master/AssistClient/Resources/up.png
Normal file
BIN
halftoneproject-master/AssistClient/Resources/up.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 22 KiB |
116
halftoneproject-master/AssistClient/UI/AxisDevProp.cs
Normal file
116
halftoneproject-master/AssistClient/UI/AxisDevProp.cs
Normal file
@ -0,0 +1,116 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Xml.Linq;
|
||||
using Advantech.Motion;
|
||||
using Newtonsoft.Json;
|
||||
using Newtonsoft.Json.Serialization;
|
||||
using AssistClient.UI.PropExtend;
|
||||
using static AssistClient.UI.UIAxisDev;
|
||||
|
||||
namespace AssistClient.UI
|
||||
{
|
||||
//[TypeConverter(typeof(PropertySorter))] //此属性使类无法序列化和反序列化
|
||||
public class AxisDevProp
|
||||
{
|
||||
[PropertyOrder(1), Browsable(true), Category("1 设备"), DisplayName("1.1 设置编号"), Description("设置编号"), ReadOnly(true), JsonIgnore]
|
||||
public string DeviceNum { get; set; }
|
||||
[PropertyOrder(1), Browsable(true), Category("1 设备"), DisplayName("1.2 轴索引"), Description("轴索引")]
|
||||
public AxisName AxisIndex { get; set; }
|
||||
//[PropertyOrder(2), Browsable(true), Category("设备"), DisplayName("类型"), Description("类型")]
|
||||
//public AxisType DeviceType { get; set; }
|
||||
//[PropertyOrder(2), Browsable(true), Category("设备"), DisplayName("回原点模式"), Description("回原点模式"), ReadOnly(true), JsonIgnore]
|
||||
//public AxitHomeMode HomeMode { get; set; }
|
||||
//
|
||||
[PropertyOrder(11), Browsable(true), Category("2 速度"), DisplayName("2.1 起始速度(mm/s)"), Description("起始速度")]
|
||||
public double VelLow { get; set; }
|
||||
[PropertyOrder(12), Browsable(true), Category("2 速度"), DisplayName("2.2 运行速度(mm/s)"), Description("运行速度")]
|
||||
public double VelHigh { get; set; }
|
||||
[PropertyOrder(13), Browsable(true), Category("2 速度"), DisplayName("2.3 加速度(mm/s)"), Description("加速度")]
|
||||
public double Acc { get; set; }
|
||||
[PropertyOrder(14), Browsable(true), Category("2 速度"), DisplayName("2.4 减速度(mm/s)"), Description("减速度")]
|
||||
public double Dec { get; set; }
|
||||
|
||||
//
|
||||
[PropertyOrder(21), Browsable(true), Category("3 位置"), DisplayName("3.1 运动模式"), Description("运动模式")]
|
||||
public AxMoveMode MoveMode { get; set; } = AxMoveMode.MODE2_Rel;
|
||||
[PropertyOrder(22), Browsable(true), Category("3 位置"), DisplayName("3.2 运动距离(mm)"), Description("移动量")]
|
||||
public double Value { get; set; }
|
||||
|
||||
[PropertyOrder(23), Browsable(true), Category("3 位置"), DisplayName("3.3 命令位置(mm)"), Description("命令位置"), ReadOnly(true), JsonIgnore]
|
||||
public double CmdPos { get; set; }
|
||||
[PropertyOrder(24), Browsable(true), Category("3 位置"), DisplayName("3.4 反馈位置(mm)"), Description("实际/反馈位置"), ReadOnly(true), JsonIgnore]
|
||||
public double ActualPos { get; set; }
|
||||
|
||||
[PropertyOrder(25), Browsable(true), Category("4 控制"), DisplayName("4.1 运行前Sleep(ms)"), Description("休息时间")]
|
||||
public uint SleepPre { get; set; }
|
||||
[PropertyOrder(26), Browsable(true), Category("4 控制"), DisplayName("4.2 运行后Sleep(ms)"), Description("休息时间")]
|
||||
public uint SleepLater { get; set; }
|
||||
[PropertyOrder(27), Browsable(true), Category("4 控制"), DisplayName("4.3 异步运行"), Description("非阻塞后续流程运行")]
|
||||
public bool AsynRun { get; set; }
|
||||
[PropertyOrder(28), Browsable(true), Category("4 控制"), DisplayName("4.4 禁用工序"), Description("禁用本工序")]
|
||||
public bool Disable { get; set; }
|
||||
|
||||
//[PropertyOrder(27), Browsable(true), Category("模式"), DisplayName("脉冲输出模式"), Description("脉冲输出模式")]
|
||||
//public AxisPulseOutMode PulseOutMode { get; set; } = AxisPulseOutMode.O_CW_CCW;
|
||||
//
|
||||
[PropertyOrder(31), Browsable(true), Category("5 状态"), DisplayName("5.1 轴状态"), Description("轴状态"), ReadOnly(true), JsonIgnore]
|
||||
public AxisState AxState { get; set; }
|
||||
[PropertyOrder(32), Browsable(false), Category("5 状态"), DisplayName("5.2 轴IO状态"), Description("轴IO状态"), ReadOnly(true), JsonIgnore]
|
||||
public uint AxIOStatus { get; set; }
|
||||
[PropertyOrder(33), Browsable(true), Category("5 状态"), DisplayName("5.2 轴运动状态"), Description("轴运动状态"), ReadOnly(true), JsonIgnore]
|
||||
public uint AxMotionState { get; set; }
|
||||
|
||||
[PropertyOrder(35), Browsable(true), Category("5 状态"), DisplayName("5.3 ALM"), Description("轴IO状态"), ReadOnly(true), JsonIgnore]
|
||||
public bool ALM { get; set; }
|
||||
[PropertyOrder(35), Browsable(true), Category("5 状态"), DisplayName("5.4 EMG"), Description("轴IO状态"), ReadOnly(true), JsonIgnore]
|
||||
public bool EMG { get; set; }
|
||||
[PropertyOrder(36), Browsable(true), Category("5 状态"), DisplayName("5.5 LMT+"), Description("轴IO状态"), ReadOnly(true), JsonIgnore]
|
||||
public bool LMTP { get; set; }
|
||||
[PropertyOrder(37), Browsable(true), Category("5 状态"), DisplayName("5.6 LMT-"), Description("轴IO状态"), ReadOnly(true), JsonIgnore]
|
||||
public bool LMTN { get; set; }
|
||||
[PropertyOrder(38), Browsable(true), Category("5 状态"), DisplayName("5.7 ORG"), Description("轴IO状态"), ReadOnly(true), JsonIgnore]
|
||||
public bool ORG { get; set; }
|
||||
[PropertyOrder(38), Browsable(true), Category("5 状态"), DisplayName("5.8 EZ"), Description("轴EZ状态"), ReadOnly(true), JsonIgnore]
|
||||
public bool EZ { get; set; }
|
||||
[PropertyOrder(39), Browsable(true), Category("5 状态"), DisplayName("5.9 SVON"), Description("轴IO状态"), ReadOnly(true), JsonIgnore]
|
||||
public bool SVON { get; set; }
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 序列化
|
||||
/// </summary>
|
||||
/// <param name="obj"></param>
|
||||
/// <returns></returns>
|
||||
public string serialize()
|
||||
{
|
||||
return JsonConvert.SerializeObject(this);
|
||||
}
|
||||
/// <summary>
|
||||
/// 反序列化
|
||||
/// </summary>
|
||||
/// <param name="json"></param>
|
||||
/// <returns></returns>
|
||||
public void deserialize(string json)
|
||||
{
|
||||
var o = JsonConvert.DeserializeObject<AxisDevProp>(json);
|
||||
Type type = o.GetType();
|
||||
System.Reflection.PropertyInfo[] properties = type.GetProperties();
|
||||
foreach (System.Reflection.PropertyInfo property in properties)
|
||||
{
|
||||
string name = property.Name;
|
||||
if (!type.GetProperty(name).IsDefined(typeof(JsonIgnoreAttribute), true))
|
||||
{
|
||||
var value = property.GetValue(o);
|
||||
this.GetType().GetProperty(name).SetValue(this, value);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
87
halftoneproject-master/AssistClient/UI/DefectLibProp.cs
Normal file
87
halftoneproject-master/AssistClient/UI/DefectLibProp.cs
Normal file
@ -0,0 +1,87 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Xml.Linq;
|
||||
using Advantech.Motion;
|
||||
using Newtonsoft.Json;
|
||||
using Newtonsoft.Json.Serialization;
|
||||
using AssistClient.UI.PropExtend;
|
||||
using static AssistClient.UI.UIAxisDev;
|
||||
|
||||
namespace AssistClient.UI
|
||||
{
|
||||
//[TypeConverter(typeof(PropertySorter))] //此属性使类无法序列化和反序列化
|
||||
public class DefectLibProp
|
||||
{
|
||||
public DefectLibProp(Size cut_size, Size resize,float thresholds) {
|
||||
CutSize = cut_size;
|
||||
Resize=resize;
|
||||
Thresholds = thresholds;
|
||||
}
|
||||
|
||||
[PropertyOrder(1), Browsable(true), Category("1 数据"), DisplayName("源图"), JsonIgnore, Description("源图")]
|
||||
public string BmpPath { get; set; }
|
||||
[PropertyOrder(11), Browsable(true), Category("2 参数"), DisplayName("2.1 切割大小"), Description("切割大小")]
|
||||
public Size CutSize { get;set; }
|
||||
[PropertyOrder(12), Browsable(true), Category("2 参数"), DisplayName("2.2 重置大小"), Description("重置大小")]
|
||||
public Size Resize { get; set; }
|
||||
[PropertyOrder(13), Browsable(true), Category("2 参数"), DisplayName("2.3 阀值"), Description("阀值")]
|
||||
public float Thresholds { get; set; }
|
||||
[PropertyOrder(13), Browsable(true), Category("2 参数"), DisplayName("2.4 种类阀值"), Description("多个用半号逗号(,)或分号(;)分隔")]
|
||||
public string ThresholdsClass { get; set; }
|
||||
[PropertyOrder(13), Browsable(true), Category("2 参数"), DisplayName("2.5 种类个数"), Description("种类阀值的数量")]
|
||||
public int ThresholdsClassCount { get; set; }
|
||||
|
||||
[PropertyOrder(15), Browsable(true), Category("3 结果"), DisplayName("结果"), JsonIgnore, Description("结果"), ReadOnly(true)]
|
||||
public string InformationList { get; set; }
|
||||
//public List<Dictionary<int, List<string>[]>> InformationList { get; set; }
|
||||
[PropertyOrder(15), Browsable(true), Category("3 结果"), DisplayName("信息"), JsonIgnore, Description("信息"), ReadOnly(true)]
|
||||
public string resultInfo { get; set; }
|
||||
[PropertyOrder(91), Browsable(true), Category("4 阀值"), DisplayName("阀值上限"), Description("阀值上限")]
|
||||
public double LimitThresholdVal { get; set; }
|
||||
[PropertyOrder(92), Browsable(true), Category("4 阀值"), DisplayName("阀值下限"), Description("阀值下限")]
|
||||
public double LowerThresholdVal { get; set; }
|
||||
[PropertyOrder(25), Browsable(true), Category("5 控制"), DisplayName("5.1 运行前Sleep(ms)"), Description("休息时间")]
|
||||
public uint SleepPre { get; set; }
|
||||
[PropertyOrder(26), Browsable(true), Category("5 控制"), DisplayName("5.2 运行后Sleep(ms)"), Description("休息时间")]
|
||||
public uint SleepLater { get; set; }
|
||||
[PropertyOrder(27), Browsable(true), Category("5 控制"), DisplayName("5.4 禁用工序"), Description("禁用本工序")]
|
||||
public bool Disable { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 序列化
|
||||
/// </summary>
|
||||
/// <param name="obj"></param>
|
||||
/// <returns></returns>
|
||||
public string serialize()
|
||||
{
|
||||
return JsonConvert.SerializeObject(this);
|
||||
}
|
||||
/// <summary>
|
||||
/// 反序列化
|
||||
/// </summary>
|
||||
/// <param name="json"></param>
|
||||
/// <returns></returns>
|
||||
public void deserialize(string json)
|
||||
{
|
||||
var o= JsonConvert.DeserializeObject<DefectLibProp>(json);
|
||||
Type type = o.GetType();
|
||||
System.Reflection.PropertyInfo[] properties = type.GetProperties();
|
||||
foreach (System.Reflection.PropertyInfo property in properties)
|
||||
{
|
||||
string name = property.Name;
|
||||
if (!type.GetProperty(name).IsDefined(typeof(JsonIgnoreAttribute), true))
|
||||
{
|
||||
var value = property.GetValue(o);
|
||||
this.GetType().GetProperty(name).SetValue(this, value);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
63
halftoneproject-master/AssistClient/UI/ForProp.cs
Normal file
63
halftoneproject-master/AssistClient/UI/ForProp.cs
Normal file
@ -0,0 +1,63 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Xml.Linq;
|
||||
using Advantech.Motion;
|
||||
using Newtonsoft.Json;
|
||||
using Newtonsoft.Json.Serialization;
|
||||
using AssistClient.UI.PropExtend;
|
||||
using static AssistClient.UI.UIAxisDev;
|
||||
|
||||
namespace AssistClient.UI
|
||||
{
|
||||
//[TypeConverter(typeof(PropertySorter))] //此属性使类无法序列化和反序列化
|
||||
public class ForProp
|
||||
{
|
||||
[PropertyOrder(11), Browsable(false), Category("1 标识"), DisplayName("1.1 标识"), Description("标识"), ReadOnly(true)]
|
||||
public long UniqueId { get; set; } = DateTime.Now.Ticks;
|
||||
[PropertyOrder(11), Browsable(true), Category("1 控制"), DisplayName("1.1 跳转步骤"), Description("跳转步骤 1-n")]
|
||||
public int GotoStepIndex { get; set; } = 1;
|
||||
|
||||
[PropertyOrder(12), Browsable(true), Category("1 控制"), DisplayName("1.2 循环次数"), Description("循环次数 1-n")]
|
||||
public int LimitNum { get; set; } = 1;
|
||||
|
||||
[PropertyOrder(25), Browsable(true), Category("1 控制"), DisplayName("1.3 是否重置"), Description("达到循环次数后是否置0")]
|
||||
public bool Reset { get; set; }
|
||||
[PropertyOrder(27), Browsable(true), Category("1 控制"), DisplayName("1.4 禁用工序"), Description("禁用本工序")]
|
||||
public bool Disable { get; set; }
|
||||
/// <summary>
|
||||
/// 序列化
|
||||
/// </summary>
|
||||
/// <param name="obj"></param>
|
||||
/// <returns></returns>
|
||||
public string serialize()
|
||||
{
|
||||
return JsonConvert.SerializeObject(this);
|
||||
}
|
||||
/// <summary>
|
||||
/// 反序列化
|
||||
/// </summary>
|
||||
/// <param name="json"></param>
|
||||
/// <returns></returns>
|
||||
public void deserialize(string json)
|
||||
{
|
||||
var o= JsonConvert.DeserializeObject<ForProp>(json);
|
||||
Type type = o.GetType();
|
||||
System.Reflection.PropertyInfo[] properties = type.GetProperties();
|
||||
foreach (System.Reflection.PropertyInfo property in properties)
|
||||
{
|
||||
string name = property.Name;
|
||||
if (!type.GetProperty(name).IsDefined(typeof(JsonIgnoreAttribute), true))
|
||||
{
|
||||
var value = property.GetValue(o);
|
||||
this.GetType().GetProperty(name).SetValue(this, value);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
67
halftoneproject-master/AssistClient/UI/FrmScannerShow.Designer.cs
generated
Normal file
67
halftoneproject-master/AssistClient/UI/FrmScannerShow.Designer.cs
generated
Normal file
@ -0,0 +1,67 @@
|
||||
namespace AssistClient.UI
|
||||
{
|
||||
partial class FrmScannerShow
|
||||
{
|
||||
/// <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.pictureBox1 = new System.Windows.Forms.PictureBox();
|
||||
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// pictureBox1
|
||||
//
|
||||
this.pictureBox1.Cursor = System.Windows.Forms.Cursors.Hand;
|
||||
this.pictureBox1.Location = new System.Drawing.Point(12, 12);
|
||||
this.pictureBox1.Name = "pictureBox1";
|
||||
this.pictureBox1.Size = new System.Drawing.Size(987, 662);
|
||||
this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;
|
||||
this.pictureBox1.TabIndex = 0;
|
||||
this.pictureBox1.TabStop = false;
|
||||
//
|
||||
// FrmScannerShow
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(9F, 18F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(1011, 686);
|
||||
this.Controls.Add(this.pictureBox1);
|
||||
this.Cursor = System.Windows.Forms.Cursors.Default;
|
||||
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow;
|
||||
this.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
|
||||
this.Name = "FrmScannerShow";
|
||||
this.Text = "图像预览";
|
||||
this.TopMost = true;
|
||||
this.Load += new System.EventHandler(this.FrmScannerShow_Load);
|
||||
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.PictureBox pictureBox1;
|
||||
}
|
||||
}
|
139
halftoneproject-master/AssistClient/UI/FrmScannerShow.cs
Normal file
139
halftoneproject-master/AssistClient/UI/FrmScannerShow.cs
Normal file
@ -0,0 +1,139 @@
|
||||
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 AssistClient.UI
|
||||
{
|
||||
public partial class FrmScannerShow : Form
|
||||
{
|
||||
public Action reDraw;
|
||||
|
||||
private Size size;
|
||||
|
||||
private double ratio = 1; // 图片的起始显示比例
|
||||
private double ratioStep = 0.1;
|
||||
private Size pic_size;
|
||||
private int xPos;
|
||||
private int yPos;
|
||||
public IntPtr picHwnd
|
||||
{
|
||||
get { return this.pictureBox1.Handle; }
|
||||
}
|
||||
public FrmScannerShow(Size _size)
|
||||
{
|
||||
InitializeComponent();
|
||||
this.Width = Screen.PrimaryScreen.WorkingArea.Width/3;
|
||||
this.Location=new Point(0,0);
|
||||
|
||||
size = _size;
|
||||
this.ClientSize = new Size(this.ClientSize.Width,
|
||||
(int)(this.ClientSize.Width * (size.Height * 1.0f / size.Width)));
|
||||
this.pictureBox1.Size = this.ClientSize;
|
||||
this.pictureBox1.Location=new Point(0,0);
|
||||
}
|
||||
|
||||
private void FrmScannerShow_Load(object sender, EventArgs e)
|
||||
{
|
||||
pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;
|
||||
pictureBox1.MouseWheel += new MouseEventHandler(pictureBox1_MouseWheel);
|
||||
pictureBox1.MouseMove += pictureBox1_MouseMove;
|
||||
pictureBox1.MouseDown += pictureBox1_MouseDown;
|
||||
this.ActiveControl = this.pictureBox1; // 设置焦点
|
||||
|
||||
|
||||
pic_size = this.pictureBox1.Size;
|
||||
}
|
||||
public void updateBmp(Bitmap bmp)
|
||||
{
|
||||
this.pictureBox1.Image = bmp;
|
||||
}
|
||||
private void pictureBox1_MouseWheel(object sender, MouseEventArgs e)
|
||||
{
|
||||
//Point pictureBoxPoint = this.PointToClient(Cursor.Position);
|
||||
//this.Text = $"{e.X}:{e.Y}; {pictureBoxPoint.X}:{pictureBoxPoint.Y}; {pictureBox1.Left}:{pictureBox1.Top}; " +
|
||||
// $"{this.pictureBox1.Width}:{this.pictureBox1.Height}; {this.Width}:{this.Height}; " +
|
||||
// $"Cursor:{Cursor.Position.X}:{Cursor.Position.Y}";
|
||||
if (e.Delta > 0)
|
||||
{
|
||||
ratio += ratioStep;
|
||||
if (ratio > 100) // 放大上限
|
||||
ratio = 100;
|
||||
else
|
||||
{
|
||||
int x = (int)(pictureBox1.Left - e.X * (e.X * 1.0d / pictureBox1.Width * ratioStep) + 0.5);
|
||||
int y = (int)(pictureBox1.Top - e.Y * (e.Y * 1.0d / pictureBox1.Height * ratioStep) + 0.5);
|
||||
|
||||
this.changePictureBoxSize(new Point(x, y), ratio);
|
||||
}
|
||||
|
||||
}
|
||||
else if (ratio - ratioStep >= 1)
|
||||
{
|
||||
ratio -= ratioStep;
|
||||
//if (ratio < 0.1) // 放大下限
|
||||
// ratio = 0.1;
|
||||
//else
|
||||
int x = (int)(pictureBox1.Left + e.X * (e.X * 1.0d / pictureBox1.Width * ratioStep) + 0.5);
|
||||
int y = (int)(pictureBox1.Top + e.Y * (e.Y * 1.0d / pictureBox1.Height * ratioStep) + 0.5);
|
||||
this.changePictureBoxSize(new Point(x, y), ratio);
|
||||
}
|
||||
}
|
||||
private void changePictureBoxSize(Point location, double ratio)
|
||||
{
|
||||
var picSize = pictureBox1.Size;
|
||||
picSize.Width = Convert.ToInt32(pic_size.Width * ratio);
|
||||
picSize.Height = Convert.ToInt32(pic_size.Height * ratio);
|
||||
pictureBox1.Size = picSize;
|
||||
|
||||
if (location.X > 0) location.X = 0;
|
||||
if (location.Y > 0) location.Y = 0;
|
||||
if (picSize.Width + location.X < this.ClientSize.Width) location.X = -(picSize.Width - this.ClientSize.Width);
|
||||
if (picSize.Height + location.Y < this.ClientSize.Height) location.Y = -(picSize.Height - this.ClientSize.Height);
|
||||
|
||||
//Point location = new Point();
|
||||
//location.X = (this.ClientSize.Width - this.pictureBox1.Width) / 2;
|
||||
//location.Y = (this.ClientSize.Height - this.pictureBox1.Height) / 2;
|
||||
this.pictureBox1.Location = location;
|
||||
}
|
||||
|
||||
private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
|
||||
{
|
||||
try
|
||||
{
|
||||
// 鼠标按下拖拽图片
|
||||
if (e.Button == MouseButtons.Left)
|
||||
{
|
||||
// 限制拖拽出框
|
||||
if (pictureBox1.Width > this.ClientSize.Width || pictureBox1.Height > this.ClientSize.Height)
|
||||
{
|
||||
int moveX = e.X - xPos;
|
||||
int moveY = e.Y - yPos;
|
||||
if ((pictureBox1.Left + moveX) <= 0
|
||||
&& (pictureBox1.Top + moveY) <= 0
|
||||
&& (pictureBox1.Right + moveX) >= this.ClientSize.Width
|
||||
&& (pictureBox1.Bottom + moveY) >= this.ClientSize.Height)
|
||||
{
|
||||
pictureBox1.Left += moveX;//设置x坐标.
|
||||
pictureBox1.Top += moveY;//设置y坐标.
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception dd)
|
||||
{
|
||||
MessageBox.Show(dd.Message);
|
||||
}
|
||||
}
|
||||
private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
|
||||
{
|
||||
xPos = e.X;//当前x坐标.
|
||||
yPos = e.Y;//当前y坐标.
|
||||
}
|
||||
}
|
||||
}
|
120
halftoneproject-master/AssistClient/UI/FrmScannerShow.resx
Normal file
120
halftoneproject-master/AssistClient/UI/FrmScannerShow.resx
Normal file
@ -0,0 +1,120 @@
|
||||
<?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>
|
||||
</root>
|
80
halftoneproject-master/AssistClient/UI/HeightDevProp.cs
Normal file
80
halftoneproject-master/AssistClient/UI/HeightDevProp.cs
Normal file
@ -0,0 +1,80 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Xml.Linq;
|
||||
using Advantech.Motion;
|
||||
using Newtonsoft.Json;
|
||||
using Newtonsoft.Json.Serialization;
|
||||
using AssistClient.UI.PropExtend;
|
||||
using static AssistClient.UI.UIAxisDev;
|
||||
|
||||
namespace AssistClient.UI
|
||||
{
|
||||
//[TypeConverter(typeof(PropertySorter))] //此属性使类无法序列化和反序列化
|
||||
public class HeightDevProp
|
||||
{
|
||||
public HeightDevProp(string ip,int port) {
|
||||
IP = ip;
|
||||
Port = port;
|
||||
}
|
||||
|
||||
[PropertyOrder(1), Browsable(true), Category("1 设备连接"), DisplayName("IP地址"), Description("IP地址"), ReadOnly(true), JsonIgnore]
|
||||
public string IP { get;private set; }
|
||||
[PropertyOrder(1), Browsable(true), Category("1 设备连接"), DisplayName("端品号"), Description("端品号"), ReadOnly(true), JsonIgnore]
|
||||
public int Port { get; private set; }
|
||||
//
|
||||
[PropertyOrder(12), Browsable(true), Category("2 数据"), DisplayName("厚度值(um)"), Description("厚度值(um)"), ReadOnly(true), JsonIgnore]
|
||||
public double HeightValue { get; set; }
|
||||
|
||||
[PropertyOrder(91), Browsable(true), Category("3 阀值"), DisplayName("阀值上限"), Description("阀值上限")]
|
||||
public double LimitThresholdVal { get; set; }
|
||||
[PropertyOrder(92), Browsable(true), Category("3 阀值"), DisplayName("阀值下限"), Description("阀值下限")]
|
||||
public double LowerThresholdVal { get; set; }
|
||||
|
||||
[PropertyOrder(25), Browsable(true), Category("4 控制"), DisplayName("4.1 运行前Sleep(ms)"), Description("休息时间")]
|
||||
public uint SleepPre { get; set; }
|
||||
[PropertyOrder(26), Browsable(true), Category("4 控制"), DisplayName("4.2 运行后Sleep(ms)"), Description("休息时间")]
|
||||
public uint SleepLater { get; set; }
|
||||
[PropertyOrder(26), Browsable(true), Category("4 控制"), DisplayName("4.3 用于基准校正"), Description("用于基准校正,后续测量按索引顺序减扣校正值。")]
|
||||
public bool IsRevise { get; set; }
|
||||
[PropertyOrder(26), Browsable(true), Category("4 控制"), DisplayName("4.4 相对偏移值(um)"), Description("在现有值基础上相对相加此偏移值。")]
|
||||
public double RelBaseValue { get; set; }
|
||||
[PropertyOrder(27), Browsable(true), Category("4 控制"), DisplayName("4.5 禁用工序"), Description("禁用本工序")]
|
||||
public bool Disable { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 序列化
|
||||
/// </summary>
|
||||
/// <param name="obj"></param>
|
||||
/// <returns></returns>
|
||||
public string serialize()
|
||||
{
|
||||
return JsonConvert.SerializeObject(this);
|
||||
}
|
||||
/// <summary>
|
||||
/// 反序列化
|
||||
/// </summary>
|
||||
/// <param name="json"></param>
|
||||
/// <returns></returns>
|
||||
public void deserialize(string json)
|
||||
{
|
||||
var o= JsonConvert.DeserializeObject<HeightDevProp>(json);
|
||||
Type type = o.GetType();
|
||||
System.Reflection.PropertyInfo[] properties = type.GetProperties();
|
||||
foreach (System.Reflection.PropertyInfo property in properties)
|
||||
{
|
||||
string name = property.Name;
|
||||
if (!type.GetProperty(name).IsDefined(typeof(JsonIgnoreAttribute), true))
|
||||
{
|
||||
var value = property.GetValue(o);
|
||||
this.GetType().GetProperty(name).SetValue(this, value);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
63
halftoneproject-master/AssistClient/UI/IFProp.cs
Normal file
63
halftoneproject-master/AssistClient/UI/IFProp.cs
Normal file
@ -0,0 +1,63 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Xml.Linq;
|
||||
using Advantech.Motion;
|
||||
using Newtonsoft.Json;
|
||||
using Newtonsoft.Json.Serialization;
|
||||
using AssistClient.UI.PropExtend;
|
||||
using static AssistClient.UI.UIAxisDev;
|
||||
|
||||
namespace AssistClient.UI
|
||||
{
|
||||
//[TypeConverter(typeof(PropertySorter))] //此属性使类无法序列化和反序列化
|
||||
public class IFProp
|
||||
{
|
||||
[PropertyOrder(11), Browsable(false), Category("1 标识"), DisplayName("1.1 标识"), Description("标识"), ReadOnly(true)]
|
||||
public long UniqueId { get; set; } = DateTime.Now.Ticks;
|
||||
[PropertyOrder(11), Browsable(true), Category("1 控制"), DisplayName("1.1 跳转步骤"), Description("跳转步骤 1-n")]
|
||||
public int GotoStepIndex { get; set; } = 1;
|
||||
|
||||
[PropertyOrder(12), Browsable(true), Category("1 控制"), DisplayName("1.2 计数次数"), Description("达到计数次数后触发 1-n")]
|
||||
public int LimitNum { get; set; } = 1;
|
||||
|
||||
[PropertyOrder(25), Browsable(true), Category("1 控制"), DisplayName("1.3 是否重置"), Description("达到计数要求触发后是否置0")]
|
||||
public bool Reset { get; set; }
|
||||
[PropertyOrder(27), Browsable(true), Category("1 控制"), DisplayName("1.4 禁用工序"), Description("禁用本工序")]
|
||||
public bool Disable { get; set; }
|
||||
/// <summary>
|
||||
/// 序列化
|
||||
/// </summary>
|
||||
/// <param name="obj"></param>
|
||||
/// <returns></returns>
|
||||
public string serialize()
|
||||
{
|
||||
return JsonConvert.SerializeObject(this);
|
||||
}
|
||||
/// <summary>
|
||||
/// 反序列化
|
||||
/// </summary>
|
||||
/// <param name="json"></param>
|
||||
/// <returns></returns>
|
||||
public void deserialize(string json)
|
||||
{
|
||||
var o= JsonConvert.DeserializeObject<IFProp>(json);
|
||||
Type type = o.GetType();
|
||||
System.Reflection.PropertyInfo[] properties = type.GetProperties();
|
||||
foreach (System.Reflection.PropertyInfo property in properties)
|
||||
{
|
||||
string name = property.Name;
|
||||
if (!type.GetProperty(name).IsDefined(typeof(JsonIgnoreAttribute), true))
|
||||
{
|
||||
var value = property.GetValue(o);
|
||||
this.GetType().GetProperty(name).SetValue(this, value);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
163
halftoneproject-master/AssistClient/UI/IOCardDevProp.cs
Normal file
163
halftoneproject-master/AssistClient/UI/IOCardDevProp.cs
Normal file
@ -0,0 +1,163 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Xml.Linq;
|
||||
using Advantech.Motion;
|
||||
using Newtonsoft.Json;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using Newtonsoft.Json.Serialization;
|
||||
using AssistClient.UI.PropExtend;
|
||||
using static AssistClient.UI.UIAxisDev;
|
||||
|
||||
namespace AssistClient.UI
|
||||
{
|
||||
//[TypeConverter(typeof(PropertySorter))] //此属性使类无法序列化和反序列化
|
||||
public class IOCardDevProp
|
||||
{
|
||||
private byte[] _in, _out;
|
||||
public IOCardDevProp(string deviceNum) {
|
||||
DeviceNum = deviceNum;
|
||||
}
|
||||
|
||||
[PropertyOrder(1), Browsable(true), Category("1 设备"), DisplayName("设备号"), Description("设备号"), ReadOnly(true), JsonIgnore]
|
||||
public string DeviceNum { get;private set; }
|
||||
|
||||
//
|
||||
[PropertyOrder(11), Browsable(false), Category("2 时时数据"), DisplayName("输入"), Description("输入"), ReadOnly(true), JsonIgnore]
|
||||
public byte[] IN
|
||||
{
|
||||
get
|
||||
{
|
||||
return _in;
|
||||
}
|
||||
set
|
||||
{
|
||||
_in = value;
|
||||
if (value == null)
|
||||
IN_SHOW = null;
|
||||
else
|
||||
{
|
||||
IN_SHOW = new string[value.Length];
|
||||
IN_OP_SHOW= new string[value.Length];
|
||||
for (int i = 0; i < IN_OP_SHOW.Length; i++)
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(IN_OP_SHOW[i]))
|
||||
IN_OP_SHOW[i] = "XXXX XXXX";
|
||||
}
|
||||
|
||||
string s;
|
||||
for (int i = 0; i < value.Length; i++)
|
||||
{
|
||||
s = Convert.ToString(value[i], 2).PadLeft(8, '0').Replace('0', 'L').Replace('1', 'H');
|
||||
//IN_SHOW[i] = String.Join(" ", s.Reverse());
|
||||
IN_SHOW[i] = s.Substring(0, 4) + " " + s.Substring(4);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
[PropertyOrder(12), Browsable(false), Category("2 时时数据"), DisplayName("输出"), Description("输出"), ReadOnly(true), JsonIgnore]
|
||||
public byte[] OUT
|
||||
{
|
||||
get
|
||||
{
|
||||
return _out;
|
||||
}
|
||||
set
|
||||
{
|
||||
_out = value;
|
||||
if (value == null)
|
||||
OUT_SHOW = null;
|
||||
else
|
||||
{
|
||||
OUT_SHOW = new string[value.Length];
|
||||
OUT_OP_SHOW = new string[value.Length];
|
||||
string s;
|
||||
for (int i = 0; i < value.Length; i++)
|
||||
{
|
||||
s = Convert.ToString(value[i], 2).PadLeft(8, '0').Replace('0', 'L').Replace('1', 'H');
|
||||
OUT_SHOW[i] = s.Substring(0, 4) + " " + s.Substring(4); //String.Join(" ", s.Reverse());
|
||||
OUT_OP_SHOW[i] = "XXXX XXXX";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
[PropertyOrder(11), Browsable(true), Category("2 时时数据"), DisplayName("2.1 输入"), Description("输入"), ReadOnly(true), JsonIgnore]
|
||||
public string[] IN_SHOW { get; set; }
|
||||
[PropertyOrder(12), Browsable(true), Category("2 时时数据"), DisplayName("2.2 输出"), Description("输出"), ReadOnly(true), JsonIgnore]
|
||||
public string[] OUT_SHOW { get; set; }
|
||||
|
||||
//IN_OP OUT_OP_INDEX OUT_OP_BIT_INDEX OUT_OP_VALUE
|
||||
[PropertyOrder(1), Browsable(true), Category("3 指令"), DisplayName("3.1 作业方向"), Description("作业方向")]
|
||||
public IODirectionEnum Direction { get; set; }
|
||||
/// <summary>
|
||||
/// 输入值, XXXX XXHL
|
||||
/// </summary>
|
||||
[PropertyOrder(11), Browsable(true), Category("3 指令"), DisplayName("3.2 输入指令值"), Description("输入指令值")]
|
||||
public string[] IN_OP_SHOW { get; set; }//单改数组属性不触发SET
|
||||
[PropertyOrder(11), Browsable(true), Category("3 指令"), DisplayName("3.3 输入超时告警(ms)"), Description("自动流程中等待输入指令超时则告警,0则无限期等待")]
|
||||
public uint IN_Waiting_Timeout { get; set; } = 0;
|
||||
|
||||
/// <summary>
|
||||
/// 输出值, XXXX XXHL
|
||||
/// </summary>
|
||||
[PropertyOrder(11), Browsable(true), Category("3 指令"), DisplayName("3.4 输出指令值"), Description("输出指令值")]
|
||||
public string[] OUT_OP_SHOW { get; set; }
|
||||
|
||||
//
|
||||
[PropertyOrder(25), Browsable(true), Category("4 控制"), DisplayName("4.1 运行前Sleep(ms)"), Description("休息时间")]
|
||||
public uint SleepPre { get; set; }
|
||||
[PropertyOrder(26), Browsable(true), Category("4 控制"), DisplayName("4.2 运行后Sleep(ms)"), Description("休息时间")]
|
||||
public uint SleepLater { get; set; }
|
||||
[PropertyOrder(27), Browsable(true), Category("4 控制"), DisplayName("4.4 禁用工序"), Description("禁用本工序")]
|
||||
public bool Disable { get; set; }
|
||||
/// <summary>
|
||||
/// 序列化
|
||||
/// </summary>
|
||||
/// <param name="obj"></param>
|
||||
/// <returns></returns>
|
||||
public string serialize()
|
||||
{
|
||||
return JsonConvert.SerializeObject(this);
|
||||
}
|
||||
/// <summary>
|
||||
/// 反序列化
|
||||
/// </summary>
|
||||
/// <param name="json"></param>
|
||||
/// <returns></returns>
|
||||
public void deserialize(string json)
|
||||
{
|
||||
var o= JsonConvert.DeserializeObject<IOCardDevProp>(json);
|
||||
Type type = o.GetType();
|
||||
System.Reflection.PropertyInfo[] properties = type.GetProperties();
|
||||
foreach (System.Reflection.PropertyInfo property in properties)
|
||||
{
|
||||
string name = property.Name;
|
||||
if (!type.GetProperty(name).IsDefined(typeof(JsonIgnoreAttribute), true))
|
||||
{
|
||||
var value = property.GetValue(o);
|
||||
this.GetType().GetProperty(name).SetValue(this, value);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private byte[] inputValue2byte(string[] strList)
|
||||
{
|
||||
byte[] result=new byte[strList.Length];
|
||||
|
||||
string[] strArr = Utils.Util.IODataFormatBinaryStr(strList,false, 'L');
|
||||
for (int i=0; i< strArr.Length; i++)
|
||||
{
|
||||
strArr[i] = strArr[i].Replace("L", "0").Replace("H", "1").Replace("X", "0");
|
||||
result[i] = Convert.ToByte(strArr[i], 2);
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
70
halftoneproject-master/AssistClient/UI/LightDevProp.cs
Normal file
70
halftoneproject-master/AssistClient/UI/LightDevProp.cs
Normal file
@ -0,0 +1,70 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Xml.Linq;
|
||||
using Advantech.Motion;
|
||||
using Newtonsoft.Json;
|
||||
using Newtonsoft.Json.Serialization;
|
||||
using AssistClient.UI.PropExtend;
|
||||
using static AssistClient.UI.UIAxisDev;
|
||||
|
||||
namespace AssistClient.UI
|
||||
{
|
||||
//[TypeConverter(typeof(PropertySorter))] //此属性使类无法序列化和反序列化
|
||||
public class LightDevProp
|
||||
{
|
||||
public LightDevProp(int portNum) {
|
||||
PortNum = portNum;
|
||||
}
|
||||
|
||||
[PropertyOrder(1), Browsable(true), Category("1 设备"), DisplayName("端口号"), Description("端口号"), ReadOnly(true), JsonIgnore]
|
||||
public int PortNum { get;private set; }
|
||||
|
||||
//
|
||||
[PropertyOrder(11), Browsable(true), Category("2 通道"), DisplayName("通道号"), Description("通道号")]
|
||||
public int ChannelIndex { get; set; } = 1;
|
||||
[PropertyOrder(12), Browsable(true), Category("3 数据"), DisplayName("亮度"), Description("亮度")]
|
||||
public int DigitalValue { get; set; }
|
||||
|
||||
[PropertyOrder(25), Browsable(true), Category("4 控制"), DisplayName("4.1 运行前Sleep(ms)"), Description("休息时间")]
|
||||
public uint SleepPre { get; set; }
|
||||
[PropertyOrder(26), Browsable(true), Category("4 控制"), DisplayName("4.2 运行后Sleep(ms)"), Description("休息时间")]
|
||||
public uint SleepLater { get; set; }
|
||||
[PropertyOrder(27), Browsable(true), Category("4 控制"), DisplayName("4.4 禁用工序"), Description("禁用本工序")]
|
||||
public bool Disable { get; set; }
|
||||
/// <summary>
|
||||
/// 序列化
|
||||
/// </summary>
|
||||
/// <param name="obj"></param>
|
||||
/// <returns></returns>
|
||||
public string serialize()
|
||||
{
|
||||
return JsonConvert.SerializeObject(this);
|
||||
}
|
||||
/// <summary>
|
||||
/// 反序列化
|
||||
/// </summary>
|
||||
/// <param name="json"></param>
|
||||
/// <returns></returns>
|
||||
public void deserialize(string json)
|
||||
{
|
||||
var o= JsonConvert.DeserializeObject<LightDevProp>(json);
|
||||
Type type = o.GetType();
|
||||
System.Reflection.PropertyInfo[] properties = type.GetProperties();
|
||||
foreach (System.Reflection.PropertyInfo property in properties)
|
||||
{
|
||||
string name = property.Name;
|
||||
if (!type.GetProperty(name).IsDefined(typeof(JsonIgnoreAttribute), true))
|
||||
{
|
||||
var value = property.GetValue(o);
|
||||
this.GetType().GetProperty(name).SetValue(this, value);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
@ -0,0 +1,253 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.ComponentModel;
|
||||
using System.Collections;
|
||||
|
||||
namespace AssistClient.UI.PropExtend
|
||||
{
|
||||
[AttributeUsage(AttributeTargets.Property)]
|
||||
public class PropertyOrderAttribute : Attribute//自定义Attribute类,向property提供
|
||||
{
|
||||
private int order;
|
||||
|
||||
public PropertyOrderAttribute(int order)
|
||||
{
|
||||
this.order = order;
|
||||
}
|
||||
public int Order
|
||||
{
|
||||
get
|
||||
{
|
||||
return order;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#region Helper Class - PropertyOrderPair
|
||||
public class PropertyOrderPair : IComparable
|
||||
{
|
||||
private int _order;
|
||||
private string _name;
|
||||
public string Name
|
||||
{
|
||||
get
|
||||
{
|
||||
return _name;
|
||||
}
|
||||
}
|
||||
|
||||
public PropertyOrderPair(string name, int order)
|
||||
{
|
||||
_order = order;
|
||||
_name = name;
|
||||
}
|
||||
|
||||
public int CompareTo(object obj)
|
||||
{
|
||||
//
|
||||
// Sort the pair objects by ordering by order value
|
||||
// Equal values get the same rank
|
||||
//
|
||||
int otherOrder = ((PropertyOrderPair)obj)._order;
|
||||
if (otherOrder == _order)
|
||||
{
|
||||
//
|
||||
// If order not specified, sort by name
|
||||
//
|
||||
string otherName = ((PropertyOrderPair)obj)._name;
|
||||
return string.Compare(_name, otherName);
|
||||
}
|
||||
else if (otherOrder > _order)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
|
||||
|
||||
class TestPropertyDescriptor : PropertyDescriptor, IComparable//继承PropertyDescriptor类并实现IComparable接口
|
||||
{
|
||||
private PropertyDescriptor basePropertyDescriptor;
|
||||
private int order;
|
||||
|
||||
//构造函数
|
||||
|
||||
public TestPropertyDescriptor(PropertyDescriptor basePropertyDescriptor) : base(basePropertyDescriptor)
|
||||
{
|
||||
this.basePropertyDescriptor = basePropertyDescriptor;
|
||||
order = GetOrder(basePropertyDescriptor.Attributes);
|
||||
}
|
||||
//获得property的order属性
|
||||
private int GetOrder(AttributeCollection ac)
|
||||
{
|
||||
foreach (Attribute a in ac)
|
||||
{
|
||||
if (a is PropertyOrderAttribute)
|
||||
return ((PropertyOrderAttribute)a).Order;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
#region "IComparable"
|
||||
public int CompareTo(object tpd)//实现接口,使此类的对象可以依据order进行比较、排序
|
||||
{
|
||||
TestPropertyDescriptor other = (TestPropertyDescriptor)tpd;
|
||||
if (order == other.order) return string.Compare(Name, other.Name);
|
||||
else return (order > other.order) ? 1 : -1;
|
||||
}
|
||||
|
||||
public override bool CanResetValue(object component)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
public override Type ComponentType
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.GetType();
|
||||
}
|
||||
}
|
||||
|
||||
public override object GetValue(object component)
|
||||
{
|
||||
return component;
|
||||
}
|
||||
|
||||
public override bool IsReadOnly
|
||||
{
|
||||
get
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public override Type PropertyType
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.GetType();
|
||||
}
|
||||
}
|
||||
|
||||
public override void ResetValue(object component)
|
||||
{
|
||||
//不重置,无动作
|
||||
}
|
||||
|
||||
public override void SetValue(object component, object value)
|
||||
{
|
||||
;
|
||||
}
|
||||
/// <summary>
|
||||
/// 是否应该持久化保存
|
||||
/// </summary>
|
||||
/// <param name="component"></param>
|
||||
/// <returns></returns>
|
||||
public override bool ShouldSerializeValue(object component)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
/// <summary>
|
||||
/// 属性说明
|
||||
/// </summary>
|
||||
public override string Description
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.Description;
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
|
||||
|
||||
class ICustomTDClass1 : ICustomTypeDescriptor//Class1为需要对其属性进行排序的自定义类。
|
||||
{
|
||||
public PropertyDescriptorCollection GetProperties(Attribute[] attributes)
|
||||
{
|
||||
|
||||
PropertyDescriptorCollection tmpPDC = TypeDescriptor.GetProperties(typeof(ICustomTDClass1), attributes);
|
||||
PropertyDescriptorCollection result = new PropertyDescriptorCollection(null);
|
||||
ArrayList orderPdList = new ArrayList();
|
||||
|
||||
foreach (PropertyDescriptor pd in tmpPDC)
|
||||
{
|
||||
TestPropertyDescriptor tpd = new TestPropertyDescriptor(pd);
|
||||
result.Add(tpd);
|
||||
orderPdList.Add(tpd);
|
||||
|
||||
}
|
||||
orderPdList.Sort();//根据order排序
|
||||
ArrayList propertyNames = new ArrayList();
|
||||
foreach (TestPropertyDescriptor propertyAttributes in orderPdList)//获得排序后的DisplayName数组
|
||||
{
|
||||
propertyNames.Add(propertyAttributes.DisplayName);
|
||||
}
|
||||
|
||||
return result.Sort((string[])propertyNames.ToArray(typeof(string)));//根据数组对结果排序,注意这里不能直接return
|
||||
}
|
||||
|
||||
public AttributeCollection GetAttributes()
|
||||
{
|
||||
return TypeDescriptor.GetAttributes(this, true);
|
||||
}
|
||||
|
||||
public string GetClassName()
|
||||
{
|
||||
return TypeDescriptor.GetClassName(this, true);
|
||||
}
|
||||
|
||||
public string GetComponentName()
|
||||
{
|
||||
return TypeDescriptor.GetClassName(this, true);
|
||||
}
|
||||
|
||||
public TypeConverter GetConverter()
|
||||
{
|
||||
return TypeDescriptor.GetConverter(this, true);
|
||||
}
|
||||
|
||||
public EventDescriptor GetDefaultEvent()
|
||||
{
|
||||
return TypeDescriptor.GetDefaultEvent(this, true);
|
||||
}
|
||||
|
||||
public PropertyDescriptor GetDefaultProperty()
|
||||
{
|
||||
return TypeDescriptor.GetDefaultProperty(this, true);
|
||||
}
|
||||
|
||||
public object GetEditor(Type editorBaseType)
|
||||
{
|
||||
return TypeDescriptor.GetEditor(this, editorBaseType, true);
|
||||
}
|
||||
|
||||
public EventDescriptorCollection GetEvents(Attribute[] attributes)
|
||||
{
|
||||
return TypeDescriptor.GetEvents(this, attributes, true);
|
||||
}
|
||||
|
||||
public EventDescriptorCollection GetEvents()
|
||||
{
|
||||
return TypeDescriptor.GetEvents(this, true);
|
||||
}
|
||||
|
||||
public PropertyDescriptorCollection GetProperties()
|
||||
{
|
||||
return TypeDescriptor.GetProperties(this, true);
|
||||
}
|
||||
|
||||
public object GetPropertyOwner(PropertyDescriptor pd)
|
||||
{
|
||||
return this;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
@ -0,0 +1,66 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using AssistClient.UI;
|
||||
|
||||
namespace AssistClient.UI.PropExtend
|
||||
{
|
||||
public class PropertySorter : ExpandableObjectConverter
|
||||
{
|
||||
#region Methods
|
||||
public override bool GetPropertiesSupported(ITypeDescriptorContext context)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
public override PropertyDescriptorCollection GetProperties(ITypeDescriptorContext context, object value, Attribute[] attributes)
|
||||
{
|
||||
//
|
||||
// This override returns a list of properties in order
|
||||
//
|
||||
PropertyDescriptorCollection pdc = TypeDescriptor.GetProperties(value, attributes);
|
||||
ArrayList orderedProperties = new ArrayList();
|
||||
foreach (PropertyDescriptor pd in pdc)
|
||||
{
|
||||
Attribute attribute = pd.Attributes[typeof(PropertyOrderAttribute)];
|
||||
if (attribute != null)
|
||||
{
|
||||
//
|
||||
// If the attribute is found, then create an pair object to hold it
|
||||
//
|
||||
PropertyOrderAttribute poa = (PropertyOrderAttribute)attribute;
|
||||
orderedProperties.Add(new PropertyOrderPair(pd.Name, poa.Order));
|
||||
}
|
||||
else
|
||||
{
|
||||
//
|
||||
// If no order attribute is specifed then given it an order of 0
|
||||
//
|
||||
orderedProperties.Add(new PropertyOrderPair(pd.Name, 0));
|
||||
}
|
||||
}
|
||||
//
|
||||
// Perform the actual order using the value PropertyOrderPair classes
|
||||
// implementation of IComparable to sort
|
||||
//
|
||||
orderedProperties.Sort();
|
||||
//
|
||||
// Build a string list of the ordered names
|
||||
//
|
||||
ArrayList propertyNames = new ArrayList();
|
||||
foreach (PropertyOrderPair pop in orderedProperties)
|
||||
{
|
||||
propertyNames.Add(pop.Name);
|
||||
}
|
||||
//
|
||||
// Pass in the ordered list for the PropertyDescriptorCollection to sort by
|
||||
//
|
||||
return pdc.Sort((string[])propertyNames.ToArray(typeof(string)));
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
}
|
75
halftoneproject-master/AssistClient/UI/ScannerDevProp.cs
Normal file
75
halftoneproject-master/AssistClient/UI/ScannerDevProp.cs
Normal file
@ -0,0 +1,75 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Xml.Linq;
|
||||
using Advantech.Motion;
|
||||
using Newtonsoft.Json;
|
||||
using Newtonsoft.Json.Serialization;
|
||||
using AssistClient.UI.PropExtend;
|
||||
using static AssistClient.Device.ScannerDev;
|
||||
using static AssistClient.UI.UIAxisDev;
|
||||
|
||||
namespace AssistClient.UI
|
||||
{
|
||||
//[TypeConverter(typeof(PropertySorter))] //此属性使类无法序列化和反序列化
|
||||
public class ScannerDevProp
|
||||
{
|
||||
public ScannerDevProp(ScannerType devType) {
|
||||
DeviceType=devType;
|
||||
}
|
||||
|
||||
[PropertyOrder(1), Browsable(true), Category("1 设备"), DisplayName("设备类型"), Description("设备类型"), ReadOnly(true)]
|
||||
public ScannerType DeviceType { get;set; }
|
||||
[PropertyOrder(1), Browsable(true), Category("2 图像"), DisplayName("图像名称"), Description("图像名称"), ReadOnly(true), JsonIgnore]
|
||||
public string[] ImageList { get; set; }
|
||||
//
|
||||
[PropertyOrder(11), Browsable(true), Category("3 参数"), DisplayName("曝光"), Description("曝光")]
|
||||
public float ExposureTime { get; set; }
|
||||
[PropertyOrder(12), Browsable(true), Category("3 参数"), DisplayName("增益"), Description("增益")]
|
||||
public float Gain { get; set; }
|
||||
[PropertyOrder(13), Browsable(true), Category("3 参数"), DisplayName("帧率"), Description("帧率")]
|
||||
public float ResultingFrameRate { get; set; }
|
||||
|
||||
[PropertyOrder(25), Browsable(true), Category("4 控制"), DisplayName("4.1 运行前Sleep(ms)"), Description("休息时间")]
|
||||
public uint SleepPre { get; set; }
|
||||
[PropertyOrder(26), Browsable(true), Category("4 控制"), DisplayName("4.2 运行后Sleep(ms)"), Description("休息时间")]
|
||||
public uint SleepLater { get; set; }
|
||||
[PropertyOrder(27), Browsable(true), Category("4 控制"), DisplayName("4.4 禁用工序"), Description("禁用本工序")]
|
||||
public bool Disable { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 序列化
|
||||
/// </summary>
|
||||
/// <param name="obj"></param>
|
||||
/// <returns></returns>
|
||||
public string serialize()
|
||||
{
|
||||
return JsonConvert.SerializeObject(this);
|
||||
}
|
||||
/// <summary>
|
||||
/// 反序列化
|
||||
/// </summary>
|
||||
/// <param name="json"></param>
|
||||
/// <returns></returns>
|
||||
public void deserialize(string json)
|
||||
{
|
||||
var o= JsonConvert.DeserializeObject<ScannerDevProp>(json);
|
||||
Type type = o.GetType();
|
||||
System.Reflection.PropertyInfo[] properties = type.GetProperties();
|
||||
foreach (System.Reflection.PropertyInfo property in properties)
|
||||
{
|
||||
string name = property.Name;
|
||||
if (!type.GetProperty(name).IsDefined(typeof(JsonIgnoreAttribute), true))
|
||||
{
|
||||
var value = property.GetValue(o);
|
||||
this.GetType().GetProperty(name).SetValue(this, value);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
96
halftoneproject-master/AssistClient/UI/SizeLibProp.cs
Normal file
96
halftoneproject-master/AssistClient/UI/SizeLibProp.cs
Normal file
@ -0,0 +1,96 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Xml.Linq;
|
||||
using Advantech.Motion;
|
||||
using Newtonsoft.Json;
|
||||
using Newtonsoft.Json.Serialization;
|
||||
using AssistClient.UI.PropExtend;
|
||||
using static AssistClient.UI.UIAxisDev;
|
||||
|
||||
namespace AssistClient.UI
|
||||
{
|
||||
//[TypeConverter(typeof(PropertySorter))] //此属性使类无法序列化和反序列化
|
||||
public class SizeLibProp
|
||||
{
|
||||
//[PropertyOrder(1), Browsable(true), Category("1 数据"), DisplayName("1.1 引擎路径"), Description("引擎路径")]
|
||||
//public string EnginePath { get; set; }
|
||||
[PropertyOrder(1), Browsable(true), Category("1 数据"), DisplayName("1.2 引擎文件名"), Description("引擎文件名")]
|
||||
public string EngineName { get; set; }
|
||||
|
||||
[PropertyOrder(1), Browsable(true), Category("1 数据"), DisplayName("1.3 源图"), Description("源图"), JsonIgnore]
|
||||
public string BmpPath { get; set; }
|
||||
[PropertyOrder(1), Browsable(true), Category("1 数据"), DisplayName("1.4 索引"), Description("索引 0-9")]
|
||||
public int Index { get; set; }
|
||||
[PropertyOrder(24), Browsable(true), Category("1 数据"), DisplayName("1.5 X轴反馈位置(mm)"), Description("实际/反馈位置"), JsonIgnore]
|
||||
public double PosX { get; set; }
|
||||
[PropertyOrder(24), Browsable(true), Category("1 数据"), DisplayName("1.5 Y轴反馈位置(mm)"), Description("实际/反馈位置"), JsonIgnore]
|
||||
public double PosY { get; set; }
|
||||
|
||||
[PropertyOrder(15), Browsable(true), Category("2 结果"), DisplayName("PT1"), Description("结果"), ReadOnly(true), JsonIgnore]
|
||||
public double PT1 { get; set; }
|
||||
[PropertyOrder(15), Browsable(true), Category("2 结果"), DisplayName("PT2"), Description("结果"), ReadOnly(true), JsonIgnore]
|
||||
public double PT2 { get; set; }
|
||||
[PropertyOrder(15), Browsable(true), Category("2 结果"), DisplayName("Shanxian"), Description("结果"), ReadOnly(true), JsonIgnore]
|
||||
public double Shanxian { get; set; }
|
||||
//[PropertyOrder(15), Browsable(true), Category("2 结果"), DisplayName("RowP"), Description("结果"), ReadOnly(true), JsonIgnore]
|
||||
//public double RowP { get; set; }
|
||||
[PropertyOrder(15), Browsable(true), Category("2 结果"), DisplayName("Circle_Ymm"), Description("结果"), ReadOnly(true), JsonIgnore]
|
||||
public double Circle_Ymm { get; set; }
|
||||
[PropertyOrder(15), Browsable(true), Category("2 结果"), DisplayName("Circle_Xmm"), Description("结果"), ReadOnly(true), JsonIgnore]
|
||||
public double Circle_Xmm { get; set; }
|
||||
[PropertyOrder(15), Browsable(true), Category("2 结果"), DisplayName("offsetX"), Description("结果"), ReadOnly(true), JsonIgnore]
|
||||
public double offsetX { get; set; }
|
||||
[PropertyOrder(15), Browsable(true), Category("2 结果"), DisplayName("offsetY"), Description("结果"), ReadOnly(true), JsonIgnore]
|
||||
public double offsetY { get; set; }
|
||||
[PropertyOrder(15), Browsable(true), Category("2 结果"), DisplayName("Mark点"), Description("Mark点"), ReadOnly(true), JsonIgnore]
|
||||
public double[] MarkPointList { get; set; }
|
||||
[PropertyOrder(15), Browsable(true), Category("2 结果"), DisplayName("信息"), Description("信息"), ReadOnly(true), JsonIgnore]
|
||||
public string resultInfo { get; set; }
|
||||
|
||||
//====
|
||||
[PropertyOrder(25), Browsable(true), Category("3 控制"), DisplayName("3.1 运行前Sleep(ms)"), Description("休息时间")]
|
||||
public uint SleepPre { get; set; }
|
||||
[PropertyOrder(26), Browsable(true), Category("3 控制"), DisplayName("3.2 运行后Sleep(ms)"), Description("休息时间")]
|
||||
public uint SleepLater { get; set; }
|
||||
[PropertyOrder(27), Browsable(true), Category("3 控制"), DisplayName("3.4 禁用工序"), Description("禁用本工序")]
|
||||
public bool Disable { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 序列化
|
||||
/// </summary>
|
||||
/// <param name="obj"></param>
|
||||
/// <returns></returns>
|
||||
public string serialize()
|
||||
{
|
||||
return JsonConvert.SerializeObject(this);
|
||||
}
|
||||
/// <summary>
|
||||
/// 反序列化
|
||||
/// </summary>
|
||||
/// <param name="json"></param>
|
||||
/// <returns></returns>
|
||||
public void deserialize(string json)
|
||||
{
|
||||
var o= JsonConvert.DeserializeObject<SizeLibProp>(json);
|
||||
Type type = o.GetType();
|
||||
System.Reflection.PropertyInfo[] properties = type.GetProperties();
|
||||
foreach (System.Reflection.PropertyInfo property in properties)
|
||||
{
|
||||
string name = property.Name;
|
||||
if (!type.GetProperty(name).IsDefined(typeof(JsonIgnoreAttribute), true))
|
||||
{
|
||||
var value = property.GetValue(o);
|
||||
this.GetType().GetProperty(name).SetValue(this, value);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
78
halftoneproject-master/AssistClient/UI/SmallAxisDevProp.cs
Normal file
78
halftoneproject-master/AssistClient/UI/SmallAxisDevProp.cs
Normal file
@ -0,0 +1,78 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Xml.Linq;
|
||||
using Advantech.Motion;
|
||||
using Newtonsoft.Json;
|
||||
using Newtonsoft.Json.Serialization;
|
||||
using AssistClient.UI.PropExtend;
|
||||
using static AssistClient.UI.UIAxisDev;
|
||||
|
||||
namespace AssistClient.UI
|
||||
{
|
||||
//[TypeConverter(typeof(PropertySorter))] //此属性使类无法序列化和反序列化
|
||||
public class SmallAxisDevProp
|
||||
{
|
||||
public SmallAxisDevProp( string comName) {
|
||||
ComName = comName;
|
||||
}
|
||||
|
||||
[PropertyOrder(1), Browsable(true), Category("1 设备"), DisplayName("端口号"), Description("端口号"), ReadOnly(true), JsonIgnore]
|
||||
public string ComName { get;set; }
|
||||
|
||||
//
|
||||
[PropertyOrder(23), Browsable(true), Category("2 位置"), DisplayName("命令脉冲"), Description("命令脉冲") ]
|
||||
//public SmallAxCmdPos CmdPos { get; set; }
|
||||
public int CmdPos { get; set; }
|
||||
|
||||
[PropertyOrder(11), Browsable(true), Category("3 状态"), DisplayName("3.1 运动中"), Description("运动中"), ReadOnly(true), JsonIgnore]
|
||||
public bool Moving { get; set; }
|
||||
[PropertyOrder(23), Browsable(true), Category("3 状态"), DisplayName("3.2 最大脉冲"), Description("最大脉冲"), ReadOnly(true), JsonIgnore]
|
||||
public int MaxPPU { get; set; }
|
||||
|
||||
[PropertyOrder(24), Browsable(true), Category("3 状态"), DisplayName("3.3 反馈脉冲"), Description("实际/反馈脉冲"), ReadOnly(true), JsonIgnore]
|
||||
public int ActualPPU { get; set; }
|
||||
|
||||
[PropertyOrder(25), Browsable(true), Category("4 控制"), DisplayName("4.1 运行前Sleep(ms)"), Description("休息时间")]
|
||||
public uint SleepPre { get; set; }
|
||||
[PropertyOrder(26), Browsable(true), Category("4 控制"), DisplayName("4.2 运行后Sleep(ms)"), Description("休息时间")]
|
||||
public uint SleepLater { get; set; }
|
||||
[PropertyOrder(27), Browsable(true), Category("4 控制"), DisplayName("4.4 禁用工序"), Description("禁用本工序")]
|
||||
public bool Disable { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 序列化
|
||||
/// </summary>
|
||||
/// <param name="obj"></param>
|
||||
/// <returns></returns>
|
||||
public string serialize()
|
||||
{
|
||||
return JsonConvert.SerializeObject(this);
|
||||
}
|
||||
/// <summary>
|
||||
/// 反序列化
|
||||
/// </summary>
|
||||
/// <param name="json"></param>
|
||||
/// <returns></returns>
|
||||
public void deserialize(string json)
|
||||
{
|
||||
var o= JsonConvert.DeserializeObject<SmallAxisDevProp>(json);
|
||||
Type type = o.GetType();
|
||||
System.Reflection.PropertyInfo[] properties = type.GetProperties();
|
||||
foreach (System.Reflection.PropertyInfo property in properties)
|
||||
{
|
||||
string name = property.Name;
|
||||
if (!type.GetProperty(name).IsDefined(typeof(JsonIgnoreAttribute), true))
|
||||
{
|
||||
var value = property.GetValue(o);
|
||||
this.GetType().GetProperty(name).SetValue(this, value);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
77
halftoneproject-master/AssistClient/UI/TensionDevProp.cs
Normal file
77
halftoneproject-master/AssistClient/UI/TensionDevProp.cs
Normal file
@ -0,0 +1,77 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Xml.Linq;
|
||||
using Advantech.Motion;
|
||||
using Newtonsoft.Json;
|
||||
using Newtonsoft.Json.Serialization;
|
||||
using AssistClient.UI.PropExtend;
|
||||
using static AssistClient.UI.UIAxisDev;
|
||||
|
||||
namespace AssistClient.UI
|
||||
{
|
||||
//[TypeConverter(typeof(PropertySorter))] //此属性使类无法序列化和反序列化
|
||||
public class TensionDevProp
|
||||
{
|
||||
public TensionDevProp(int portNum) {
|
||||
PortNum = portNum;
|
||||
}
|
||||
|
||||
[PropertyOrder(1), Browsable(true), Category("1 设备"), DisplayName("端口号"), Description("端口号"), ReadOnly(true), JsonIgnore]
|
||||
public int PortNum { get;private set; }
|
||||
|
||||
//
|
||||
[PropertyOrder(11), Browsable(true), Category("2 数据"), DisplayName("单位"), Description("单位"), ReadOnly(true), JsonIgnore]
|
||||
public string Unit { get; set; }
|
||||
[PropertyOrder(12), Browsable(true), Category("2 数据"), DisplayName("张力值"), Description("张力值"), ReadOnly(true), JsonIgnore]
|
||||
public double TensionValue { get; set; }
|
||||
[PropertyOrder(91), Browsable(true), Category("3 阀值"), DisplayName("阀值上限"), Description("阀值上限")]
|
||||
public double LimitThresholdVal { get; set; }
|
||||
[PropertyOrder(92), Browsable(true), Category("3 阀值"), DisplayName("阀值下限"), Description("阀值下限")]
|
||||
public double LowerThresholdVal { get; set; }
|
||||
|
||||
|
||||
[PropertyOrder(25), Browsable(true), Category("4 控制"), DisplayName("4.1 运行前Sleep(ms)"), Description("休息时间")]
|
||||
public uint SleepPre { get; set; }
|
||||
[PropertyOrder(26), Browsable(true), Category("4 控制"), DisplayName("4.2 运行后Sleep(ms)"), Description("休息时间")]
|
||||
public uint SleepLater { get; set; }
|
||||
[PropertyOrder(27), Browsable(true), Category("4 控制"), DisplayName("4.4 禁用工序"), Description("禁用本工序")]
|
||||
public bool Disable { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 序列化
|
||||
/// </summary>
|
||||
/// <param name="obj"></param>
|
||||
/// <returns></returns>
|
||||
public string serialize()
|
||||
{
|
||||
return JsonConvert.SerializeObject(this);
|
||||
}
|
||||
/// <summary>
|
||||
/// 反序列化
|
||||
/// </summary>
|
||||
/// <param name="json"></param>
|
||||
/// <returns></returns>
|
||||
public void deserialize(string json)
|
||||
{
|
||||
var o= JsonConvert.DeserializeObject<TensionDevProp>(json);
|
||||
Type type = o.GetType();
|
||||
System.Reflection.PropertyInfo[] properties = type.GetProperties();
|
||||
foreach (System.Reflection.PropertyInfo property in properties)
|
||||
{
|
||||
string name = property.Name;
|
||||
if (!type.GetProperty(name).IsDefined(typeof(JsonIgnoreAttribute), true))
|
||||
{
|
||||
var value = property.GetValue(o);
|
||||
this.GetType().GetProperty(name).SetValue(this, value);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
284
halftoneproject-master/AssistClient/UI/UIAxisDev.Designer.cs
generated
Normal file
284
halftoneproject-master/AssistClient/UI/UIAxisDev.Designer.cs
generated
Normal file
@ -0,0 +1,284 @@
|
||||
namespace AssistClient.UI
|
||||
{
|
||||
partial class UIAxisDev
|
||||
{
|
||||
/// <summary>
|
||||
/// 必需的设计器变量。
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// 清理所有正在使用的资源。
|
||||
/// </summary>
|
||||
/// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region 组件设计器生成的代码
|
||||
|
||||
/// <summary>
|
||||
/// 设计器支持所需的方法 - 不要修改
|
||||
/// 使用代码编辑器修改此方法的内容。
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(UIAxisDev));
|
||||
this.toolStrip1 = new System.Windows.Forms.ToolStrip();
|
||||
this.tsbtnOpenDev = new System.Windows.Forms.ToolStripButton();
|
||||
this.tbtnSave = new System.Windows.Forms.ToolStripButton();
|
||||
this.tssSave = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.tbtnRun = new System.Windows.Forms.ToolStripButton();
|
||||
this.tbtnStop = new System.Windows.Forms.ToolStripButton();
|
||||
this.tbtnRestState = new System.Windows.Forms.ToolStripButton();
|
||||
this.tbtnResetPos = new System.Windows.Forms.ToolStripButton();
|
||||
this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.tbtnHome = new System.Windows.Forms.ToolStripButton();
|
||||
this.toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.tbtnJogOnOff = new System.Windows.Forms.ToolStripButton();
|
||||
this.tbtnLeft = new System.Windows.Forms.ToolStripButton();
|
||||
this.tbtnRight = new System.Windows.Forms.ToolStripButton();
|
||||
this.toolStripSeparator3 = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.tbtnExport = new System.Windows.Forms.ToolStripButton();
|
||||
this.tbtnImport = new System.Windows.Forms.ToolStripButton();
|
||||
this.propertyGrid1 = new System.Windows.Forms.PropertyGrid();
|
||||
this.statusStrip1 = new System.Windows.Forms.StatusStrip();
|
||||
this.txtLog = new System.Windows.Forms.ToolStripStatusLabel();
|
||||
this.toolStrip1.SuspendLayout();
|
||||
this.statusStrip1.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// toolStrip1
|
||||
//
|
||||
this.toolStrip1.ImageScalingSize = new System.Drawing.Size(24, 24);
|
||||
this.toolStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.tsbtnOpenDev,
|
||||
this.tbtnSave,
|
||||
this.tssSave,
|
||||
this.tbtnRun,
|
||||
this.tbtnStop,
|
||||
this.tbtnRestState,
|
||||
this.tbtnResetPos,
|
||||
this.toolStripSeparator1,
|
||||
this.tbtnHome,
|
||||
this.toolStripSeparator2,
|
||||
this.tbtnJogOnOff,
|
||||
this.tbtnLeft,
|
||||
this.tbtnRight,
|
||||
this.toolStripSeparator3,
|
||||
this.tbtnExport,
|
||||
this.tbtnImport});
|
||||
this.toolStrip1.Location = new System.Drawing.Point(0, 0);
|
||||
this.toolStrip1.Name = "toolStrip1";
|
||||
this.toolStrip1.Padding = new System.Windows.Forms.Padding(0, 0, 3, 0);
|
||||
this.toolStrip1.Size = new System.Drawing.Size(1178, 38);
|
||||
this.toolStrip1.TabIndex = 26;
|
||||
this.toolStrip1.Text = "toolStrip7";
|
||||
//
|
||||
// tsbtnOpenDev
|
||||
//
|
||||
this.tsbtnOpenDev.Image = ((System.Drawing.Image)(resources.GetObject("tsbtnOpenDev.Image")));
|
||||
this.tsbtnOpenDev.ImageTransparentColor = System.Drawing.Color.Magenta;
|
||||
this.tsbtnOpenDev.Name = "tsbtnOpenDev";
|
||||
this.tsbtnOpenDev.Size = new System.Drawing.Size(110, 33);
|
||||
this.tsbtnOpenDev.Text = "打开设备";
|
||||
this.tsbtnOpenDev.Click += new System.EventHandler(this.tsbtnOpenDev_Click);
|
||||
//
|
||||
// tbtnSave
|
||||
//
|
||||
this.tbtnSave.Image = ((System.Drawing.Image)(resources.GetObject("tbtnSave.Image")));
|
||||
this.tbtnSave.ImageTransparentColor = System.Drawing.Color.Magenta;
|
||||
this.tbtnSave.Name = "tbtnSave";
|
||||
this.tbtnSave.Size = new System.Drawing.Size(74, 33);
|
||||
this.tbtnSave.Text = "保存";
|
||||
this.tbtnSave.Click += new System.EventHandler(this.tbtnSave_Click);
|
||||
//
|
||||
// tssSave
|
||||
//
|
||||
this.tssSave.Name = "tssSave";
|
||||
this.tssSave.Size = new System.Drawing.Size(6, 38);
|
||||
//
|
||||
// tbtnRun
|
||||
//
|
||||
this.tbtnRun.Image = ((System.Drawing.Image)(resources.GetObject("tbtnRun.Image")));
|
||||
this.tbtnRun.ImageTransparentColor = System.Drawing.Color.Magenta;
|
||||
this.tbtnRun.Name = "tbtnRun";
|
||||
this.tbtnRun.Size = new System.Drawing.Size(74, 33);
|
||||
this.tbtnRun.Text = "执行";
|
||||
this.tbtnRun.Click += new System.EventHandler(this.tbtnRun_Click);
|
||||
//
|
||||
// tbtnStop
|
||||
//
|
||||
this.tbtnStop.Image = ((System.Drawing.Image)(resources.GetObject("tbtnStop.Image")));
|
||||
this.tbtnStop.ImageTransparentColor = System.Drawing.Color.Magenta;
|
||||
this.tbtnStop.Name = "tbtnStop";
|
||||
this.tbtnStop.Size = new System.Drawing.Size(74, 33);
|
||||
this.tbtnStop.Text = "停止";
|
||||
this.tbtnStop.ToolTipText = "停止";
|
||||
this.tbtnStop.Click += new System.EventHandler(this.tbtnStop_Click);
|
||||
//
|
||||
// tbtnRestState
|
||||
//
|
||||
this.tbtnRestState.Image = ((System.Drawing.Image)(resources.GetObject("tbtnRestState.Image")));
|
||||
this.tbtnRestState.ImageTransparentColor = System.Drawing.Color.Magenta;
|
||||
this.tbtnRestState.Name = "tbtnRestState";
|
||||
this.tbtnRestState.Size = new System.Drawing.Size(110, 33);
|
||||
this.tbtnRestState.Text = "状态重置";
|
||||
this.tbtnRestState.ToolTipText = "重置轴状态";
|
||||
this.tbtnRestState.Click += new System.EventHandler(this.tbtnRestState_Click);
|
||||
//
|
||||
// tbtnResetPos
|
||||
//
|
||||
this.tbtnResetPos.Image = ((System.Drawing.Image)(resources.GetObject("tbtnResetPos.Image")));
|
||||
this.tbtnResetPos.ImageTransparentColor = System.Drawing.Color.Magenta;
|
||||
this.tbtnResetPos.Name = "tbtnResetPos";
|
||||
this.tbtnResetPos.Size = new System.Drawing.Size(128, 33);
|
||||
this.tbtnResetPos.Text = "计数器重置";
|
||||
this.tbtnResetPos.ToolTipText = "重置轴状态";
|
||||
this.tbtnResetPos.Click += new System.EventHandler(this.tbtnResetPos_Click);
|
||||
//
|
||||
// toolStripSeparator1
|
||||
//
|
||||
this.toolStripSeparator1.Name = "toolStripSeparator1";
|
||||
this.toolStripSeparator1.Size = new System.Drawing.Size(6, 38);
|
||||
//
|
||||
// tbtnHome
|
||||
//
|
||||
this.tbtnHome.Image = ((System.Drawing.Image)(resources.GetObject("tbtnHome.Image")));
|
||||
this.tbtnHome.ImageTransparentColor = System.Drawing.Color.Magenta;
|
||||
this.tbtnHome.Name = "tbtnHome";
|
||||
this.tbtnHome.Size = new System.Drawing.Size(92, 33);
|
||||
this.tbtnHome.Text = "回原点";
|
||||
this.tbtnHome.Click += new System.EventHandler(this.tbtnHome_Click);
|
||||
//
|
||||
// toolStripSeparator2
|
||||
//
|
||||
this.toolStripSeparator2.Name = "toolStripSeparator2";
|
||||
this.toolStripSeparator2.Size = new System.Drawing.Size(6, 38);
|
||||
//
|
||||
// tbtnJogOnOff
|
||||
//
|
||||
this.tbtnJogOnOff.Image = ((System.Drawing.Image)(resources.GetObject("tbtnJogOnOff.Image")));
|
||||
this.tbtnJogOnOff.ImageTransparentColor = System.Drawing.Color.Magenta;
|
||||
this.tbtnJogOnOff.Name = "tbtnJogOnOff";
|
||||
this.tbtnJogOnOff.Size = new System.Drawing.Size(104, 33);
|
||||
this.tbtnJogOnOff.Text = "开启Jog";
|
||||
this.tbtnJogOnOff.Click += new System.EventHandler(this.tbtnJogOnOff_Click);
|
||||
//
|
||||
// tbtnLeft
|
||||
//
|
||||
this.tbtnLeft.Image = ((System.Drawing.Image)(resources.GetObject("tbtnLeft.Image")));
|
||||
this.tbtnLeft.ImageTransparentColor = System.Drawing.Color.Magenta;
|
||||
this.tbtnLeft.Name = "tbtnLeft";
|
||||
this.tbtnLeft.Size = new System.Drawing.Size(76, 33);
|
||||
this.tbtnLeft.Text = "Jog-";
|
||||
this.tbtnLeft.MouseDown += new System.Windows.Forms.MouseEventHandler(this.tbtnLeft_MouseDown);
|
||||
this.tbtnLeft.MouseUp += new System.Windows.Forms.MouseEventHandler(this.tbtnLeft_MouseUp);
|
||||
//
|
||||
// tbtnRight
|
||||
//
|
||||
this.tbtnRight.Image = ((System.Drawing.Image)(resources.GetObject("tbtnRight.Image")));
|
||||
this.tbtnRight.ImageTransparentColor = System.Drawing.Color.Magenta;
|
||||
this.tbtnRight.Name = "tbtnRight";
|
||||
this.tbtnRight.Size = new System.Drawing.Size(81, 33);
|
||||
this.tbtnRight.Text = "Jog+";
|
||||
this.tbtnRight.MouseDown += new System.Windows.Forms.MouseEventHandler(this.tbtnRight_MouseDown);
|
||||
this.tbtnRight.MouseUp += new System.Windows.Forms.MouseEventHandler(this.tbtnRight_MouseUp);
|
||||
//
|
||||
// toolStripSeparator3
|
||||
//
|
||||
this.toolStripSeparator3.Name = "toolStripSeparator3";
|
||||
this.toolStripSeparator3.Size = new System.Drawing.Size(6, 38);
|
||||
//
|
||||
// tbtnExport
|
||||
//
|
||||
this.tbtnExport.Image = ((System.Drawing.Image)(resources.GetObject("tbtnExport.Image")));
|
||||
this.tbtnExport.ImageTransparentColor = System.Drawing.Color.Magenta;
|
||||
this.tbtnExport.Name = "tbtnExport";
|
||||
this.tbtnExport.Size = new System.Drawing.Size(74, 33);
|
||||
this.tbtnExport.Text = "导出";
|
||||
this.tbtnExport.Click += new System.EventHandler(this.tbtnExport_Click);
|
||||
//
|
||||
// tbtnImport
|
||||
//
|
||||
this.tbtnImport.Image = ((System.Drawing.Image)(resources.GetObject("tbtnImport.Image")));
|
||||
this.tbtnImport.ImageTransparentColor = System.Drawing.Color.Magenta;
|
||||
this.tbtnImport.Name = "tbtnImport";
|
||||
this.tbtnImport.Size = new System.Drawing.Size(74, 33);
|
||||
this.tbtnImport.Text = "导入";
|
||||
this.tbtnImport.Click += new System.EventHandler(this.tbtnImport_Click);
|
||||
//
|
||||
// propertyGrid1
|
||||
//
|
||||
this.propertyGrid1.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.propertyGrid1.LineColor = System.Drawing.SystemColors.ActiveCaption;
|
||||
this.propertyGrid1.Location = new System.Drawing.Point(0, 38);
|
||||
this.propertyGrid1.Name = "propertyGrid1";
|
||||
this.propertyGrid1.Size = new System.Drawing.Size(1178, 561);
|
||||
this.propertyGrid1.TabIndex = 31;
|
||||
this.propertyGrid1.ToolbarVisible = false;
|
||||
//
|
||||
// statusStrip1
|
||||
//
|
||||
this.statusStrip1.ImageScalingSize = new System.Drawing.Size(24, 24);
|
||||
this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.txtLog});
|
||||
this.statusStrip1.Location = new System.Drawing.Point(0, 599);
|
||||
this.statusStrip1.Name = "statusStrip1";
|
||||
this.statusStrip1.Padding = new System.Windows.Forms.Padding(2, 0, 14, 0);
|
||||
this.statusStrip1.Size = new System.Drawing.Size(1178, 22);
|
||||
this.statusStrip1.TabIndex = 30;
|
||||
this.statusStrip1.Text = "statusStrip1";
|
||||
//
|
||||
// txtLog
|
||||
//
|
||||
this.txtLog.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(0)))), ((int)(((byte)(0)))));
|
||||
this.txtLog.Name = "txtLog";
|
||||
this.txtLog.Size = new System.Drawing.Size(0, 15);
|
||||
//
|
||||
// UIAxisDev
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(9F, 18F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.Controls.Add(this.propertyGrid1);
|
||||
this.Controls.Add(this.statusStrip1);
|
||||
this.Controls.Add(this.toolStrip1);
|
||||
this.Name = "UIAxisDev";
|
||||
this.Size = new System.Drawing.Size(1178, 621);
|
||||
this.toolStrip1.ResumeLayout(false);
|
||||
this.toolStrip1.PerformLayout();
|
||||
this.statusStrip1.ResumeLayout(false);
|
||||
this.statusStrip1.PerformLayout();
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
private System.Windows.Forms.ToolStrip toolStrip1;
|
||||
private System.Windows.Forms.ToolStripButton tbtnRun;
|
||||
private System.Windows.Forms.ToolStripButton tbtnExport;
|
||||
private System.Windows.Forms.ToolStripButton tbtnImport;
|
||||
private System.Windows.Forms.ToolStripSeparator toolStripSeparator1;
|
||||
private System.Windows.Forms.ToolStripButton tbtnHome;
|
||||
private System.Windows.Forms.ToolStripButton tbtnLeft;
|
||||
private System.Windows.Forms.ToolStripButton tbtnRight;
|
||||
private System.Windows.Forms.ToolStripSeparator toolStripSeparator2;
|
||||
private System.Windows.Forms.ToolStripButton tbtnJogOnOff;
|
||||
private System.Windows.Forms.ToolStripButton tbtnStop;
|
||||
private System.Windows.Forms.ToolStripSeparator toolStripSeparator3;
|
||||
private System.Windows.Forms.ToolStripButton tbtnRestState;
|
||||
private System.Windows.Forms.ToolStripButton tbtnResetPos;
|
||||
private System.Windows.Forms.PropertyGrid propertyGrid1;
|
||||
private System.Windows.Forms.StatusStrip statusStrip1;
|
||||
private System.Windows.Forms.ToolStripStatusLabel txtLog;
|
||||
private System.Windows.Forms.ToolStripButton tbtnSave;
|
||||
private System.Windows.Forms.ToolStripSeparator tssSave;
|
||||
private System.Windows.Forms.ToolStripButton tsbtnOpenDev;
|
||||
}
|
||||
}
|
332
halftoneproject-master/AssistClient/UI/UIAxisDev.cs
Normal file
332
halftoneproject-master/AssistClient/UI/UIAxisDev.cs
Normal file
@ -0,0 +1,332 @@
|
||||
using Advantech.Motion;
|
||||
using Newtonsoft.Json;
|
||||
using AssistClient.Device;
|
||||
using AssistClient.Utils;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
using System.Xml.Linq;
|
||||
using static AssistClient.Device.AxisDev;
|
||||
using static AssistClient.UI.UIAxisDev;
|
||||
|
||||
namespace AssistClient.UI
|
||||
{
|
||||
public partial class UIAxisDev : UserControl
|
||||
{
|
||||
SynchronizationContext SyncContext = null;
|
||||
|
||||
public Action<string> GetParamsEvent;
|
||||
//
|
||||
private AxisDevProp prop = new AxisDevProp();
|
||||
private AxisDev dev;
|
||||
public UIAxisDev()
|
||||
{
|
||||
InitializeComponent();
|
||||
propertyGrid1.PropertyValueChanged += propertyGrid1_PropertyValueChanged;
|
||||
refreshUIState();
|
||||
//获取UI线程同步上下文
|
||||
SyncContext = SynchronizationContext.Current;
|
||||
//init();
|
||||
}
|
||||
private void refreshUIState()
|
||||
{
|
||||
foreach (ToolStripItem item in this.toolStrip1.Items)
|
||||
{
|
||||
if (item.Text == "打开设备")
|
||||
item.Visible = (dev == null || !dev.IsInit);
|
||||
else
|
||||
this.propertyGrid1.Enabled=item.Enabled = !(dev == null || !dev.IsInit);
|
||||
}
|
||||
}
|
||||
public string getParamsData()
|
||||
{
|
||||
return prop.serialize();
|
||||
}
|
||||
public bool stopNow()
|
||||
{
|
||||
if (dev != null && dev.IsInit)
|
||||
{
|
||||
dev.stopNow();
|
||||
return true;
|
||||
}
|
||||
else
|
||||
return false;
|
||||
}
|
||||
public void setParamsData(string json)
|
||||
{
|
||||
if (json == "") return;
|
||||
prop.deserialize(json);
|
||||
this.propertyGrid1.Refresh();
|
||||
}
|
||||
public void init()
|
||||
{
|
||||
this.tbtnSave.Visible = tssSave.Visible = (GetParamsEvent != null);
|
||||
this.propertyGrid1.SelectedObject = prop;
|
||||
dev = new AxisDev();
|
||||
dev.WarningEvent = (level, info) =>
|
||||
{
|
||||
txtLog.Text = $"({level}){info}";
|
||||
};
|
||||
|
||||
//STATE
|
||||
dev.axisStateEvent += new System.Action<int, AxisStateType, uint>((axisIndex, type, stateValue) =>
|
||||
{
|
||||
if (axisIndex != (int)prop.AxisIndex)
|
||||
return;
|
||||
|
||||
switch (type)
|
||||
{
|
||||
case AxisStateType.AxisState:
|
||||
if (prop.AxState != (AxisState)stateValue)
|
||||
{
|
||||
prop.AxState = (AxisState)stateValue;
|
||||
this.refreshUI();
|
||||
}
|
||||
break;
|
||||
case AxisStateType.AxisIOState:
|
||||
if (prop.AxIOStatus != stateValue)
|
||||
{
|
||||
prop.AxIOStatus = stateValue;
|
||||
|
||||
prop.ALM = (stateValue & (uint)Ax_Motion_IO.AX_MOTION_IO_ALM) > 0;//需IO close
|
||||
prop.EMG = (stateValue & (uint)Ax_Motion_IO.AX_MOTION_IO_EMG) > 0;//需重置 state
|
||||
prop.LMTP = (stateValue & (uint)Ax_Motion_IO.AX_MOTION_IO_LMTP) > 0;//右极限 true->false
|
||||
prop.LMTN = (stateValue & (uint)Ax_Motion_IO.AX_MOTION_IO_LMTN) > 0;//左极限
|
||||
prop.ORG = (stateValue & (uint)Ax_Motion_IO.AX_MOTION_IO_ORG) > 0;
|
||||
prop.EZ = (stateValue & (uint)Ax_Motion_IO.AX_MOTION_IO_EZ) > 0;
|
||||
prop.SVON = (stateValue & (uint)Ax_Motion_IO.AX_MOTION_IO_SVON) > 0;
|
||||
this.refreshUI();
|
||||
|
||||
}
|
||||
break;
|
||||
case AxisStateType.AxisMotionState:
|
||||
if (prop.AxMotionState != stateValue)
|
||||
{
|
||||
prop.AxMotionState = stateValue;
|
||||
this.refreshUI();
|
||||
}
|
||||
break;
|
||||
}
|
||||
});
|
||||
//位置POS
|
||||
dev.axisPosEvent += new System.Action<int, AxisPosType, double>((axisIndex, type, pos) =>
|
||||
{
|
||||
if (axisIndex != (int)prop.AxisIndex)
|
||||
return;
|
||||
|
||||
switch (type)
|
||||
{
|
||||
case AxisPosType.CmdPos:
|
||||
if (prop.CmdPos != pos)
|
||||
{
|
||||
prop.CmdPos = pos;
|
||||
this.refreshUI();
|
||||
}
|
||||
break;
|
||||
case AxisPosType.ActualPos:
|
||||
if (prop.ActualPos != pos)
|
||||
{
|
||||
prop.ActualPos = pos;
|
||||
this.refreshUI();
|
||||
}
|
||||
break;
|
||||
}
|
||||
});
|
||||
|
||||
if (!dev.start(Config.Axis_PulseOutMode,true))
|
||||
{
|
||||
this.closeDev();
|
||||
return;
|
||||
}
|
||||
prop.DeviceNum = dev.DeviceNum.ToString();
|
||||
refreshAxisVelParam();
|
||||
refreshUIState();
|
||||
}
|
||||
private void refreshUI()
|
||||
{
|
||||
SyncContext.Post(m =>
|
||||
{
|
||||
var result = m as string;
|
||||
propertyGrid1.Refresh();
|
||||
tbtnJogOnOff.Text = (prop.AxState == AxisState.STA_AX_EXT_JOG) ? "关闭Jog" : "开启Jog";
|
||||
tbtnLeft.Enabled = tbtnRight.Enabled = (prop.AxState == AxisState.STA_AX_EXT_JOG);
|
||||
}, "异步操作完成结果");
|
||||
}
|
||||
private void refreshAxisVelParam()
|
||||
{
|
||||
int axisIndex = (int)prop.AxisIndex;
|
||||
//prop.HomeMode = (AxitHomeMode)Config.Axis_HomeMode[axisIndex];
|
||||
|
||||
var values = dev.getAxisVelParam(axisIndex);
|
||||
prop.VelLow = dev.tomm(values[0], Config.Axis_MM2PulseNum[axisIndex]);
|
||||
prop.VelHigh = dev.tomm(values[1], Config.Axis_MM2PulseNum[axisIndex]);
|
||||
prop.Acc = dev.tomm(values[2], Config.Axis_MM2PulseNum[axisIndex]);
|
||||
prop.Dec = dev.tomm(values[3], Config.Axis_MM2PulseNum[axisIndex]);
|
||||
}
|
||||
private void closeDev()
|
||||
{
|
||||
try
|
||||
{
|
||||
if (dev == null)
|
||||
return;
|
||||
dev.stop();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
this.refreshUIState();
|
||||
MessageBox.Show(ex.Message, "失败", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
}
|
||||
}
|
||||
|
||||
protected override void OnHandleDestroyed(EventArgs e)
|
||||
{
|
||||
base.OnHandleDestroyed(e);
|
||||
// 在此添加需要手动释放资源的代码
|
||||
this.closeDev();
|
||||
}
|
||||
|
||||
private void tbtnRun_Click(object sender, EventArgs e)
|
||||
{
|
||||
try
|
||||
{
|
||||
dev.setAxisVelParam(prop.VelLow, prop.VelHigh, prop.Acc, prop.Dec, (int)prop.AxisIndex);
|
||||
dev.move_ptp((int)prop.AxisIndex, prop.Value, prop.MoveMode);
|
||||
//running...
|
||||
}
|
||||
catch(Exception ex)
|
||||
{
|
||||
MessageBox.Show(ex.Message, "失败", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
}
|
||||
}
|
||||
|
||||
private void tbtnExport_Click(object sender, EventArgs e)
|
||||
{
|
||||
string filePath = FileUtil.saveAsFile($"Axis{(int)prop.AxisIndex}配置.json", "JSON|*.json");
|
||||
if (filePath != "")
|
||||
{
|
||||
string jsonText = prop.serialize();
|
||||
File.WriteAllText(filePath, jsonText);
|
||||
MessageBox.Show("保存成功!", "成功", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||||
}
|
||||
}
|
||||
|
||||
private void tbtnImport_Click(object sender, EventArgs e)
|
||||
{
|
||||
string filePath = FileUtil.openFile("JSON|*.json");
|
||||
if (filePath != "")
|
||||
{
|
||||
string jsonText = File.ReadAllText(filePath);
|
||||
prop.deserialize(jsonText);
|
||||
this.propertyGrid1.Refresh();
|
||||
//this.propertyGrid1.SelectedObject= axisProp;
|
||||
//MessageBox.Show("加载成功!", "成功", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||||
}
|
||||
}
|
||||
|
||||
private void tbtnHome_Click(object sender, EventArgs e)
|
||||
{
|
||||
int axitIndex = (int)prop.AxisIndex;
|
||||
dev.setAxisVelParam(prop.VelLow, prop.VelHigh, prop.Acc, prop.Dec, (int)prop.AxisIndex);
|
||||
//dev.setAxisVelParam(prop.VelLow, prop.VelHigh, prop.Acc, prop.Dec, (int)prop.AxisIndex,true);
|
||||
dev.home(axitIndex, (uint)Config.Axis_HomeMode[axitIndex], (uint)Config.Axis_HomeDir[axitIndex]);
|
||||
//if (prop.DeviceType == AxisType.默认)
|
||||
//{
|
||||
// dev.home((int)prop.AxisIndex);
|
||||
//}
|
||||
//else //直线电机
|
||||
//{
|
||||
// //dev.move_ptp((int)prop.AxisIndex, - prop.ActualPos, false);
|
||||
// dev.move_ptp((int)prop.AxisIndex, 0, true);
|
||||
//}
|
||||
}
|
||||
|
||||
private void tbtnLeft_MouseDown(object sender, MouseEventArgs e)
|
||||
{
|
||||
dev.jog((int)prop.AxisIndex, 1);
|
||||
}
|
||||
private void tbtnLeft_MouseUp(object sender, MouseEventArgs e)
|
||||
{
|
||||
dev.stopDec((int)prop.AxisIndex);
|
||||
}
|
||||
|
||||
private void tbtnRight_MouseDown(object sender, MouseEventArgs e)
|
||||
{
|
||||
dev.jog((int)prop.AxisIndex, 0);
|
||||
}
|
||||
private void tbtnRight_MouseUp(object sender, MouseEventArgs e)
|
||||
{
|
||||
dev.stopDec((int)prop.AxisIndex);
|
||||
}
|
||||
|
||||
|
||||
|
||||
private void tbtnJogOnOff_Click(object sender, EventArgs e)
|
||||
{
|
||||
if(prop.AxState==AxisState.STA_AX_EXT_JOG)
|
||||
{
|
||||
dev.closeJogMode((int)prop.AxisIndex);
|
||||
//tbtnJogOnOff.Text = "开启Jog";
|
||||
}
|
||||
else
|
||||
{
|
||||
dev.setAxisVelParam(prop.VelLow, prop.VelHigh, prop.Acc, prop.Dec, (int)prop.AxisIndex);
|
||||
dev.openJogMode((int)prop.AxisIndex);
|
||||
//tbtnJogOnOff.Text = "关闭Jog";
|
||||
}
|
||||
}
|
||||
|
||||
private void tbtnStop_Click(object sender, EventArgs e)
|
||||
{
|
||||
dev.stopDec((int)prop.AxisIndex);
|
||||
}
|
||||
|
||||
private void tbtnRestState_Click(object sender, EventArgs e)
|
||||
{
|
||||
dev.resetAxisState((int)prop.AxisIndex);
|
||||
}
|
||||
|
||||
private void tbtnResetPos_Click(object sender, EventArgs e)
|
||||
{
|
||||
dev.resetCmdPosition((int)prop.AxisIndex);
|
||||
dev.resetActualPosition((int)prop.AxisIndex);
|
||||
}
|
||||
|
||||
private void propertyGrid1_PropertyValueChanged(object s, PropertyValueChangedEventArgs e)
|
||||
{
|
||||
//其中包含了两个重要的属性:OldValue和ChangeItem。
|
||||
//ChangeItem是“PropertyDescriptorGridEntry”类型。一般可以通过ChangeItem.PropertyDescriptor.ComponentType查找到属性的实际类型。
|
||||
//而通过ChangeItem的Label,则可以查看到当前在属性编辑输入框中显示的值。
|
||||
|
||||
string className = e.ChangedItem.PropertyDescriptor.ComponentType.Name;
|
||||
string propertyName = e.ChangedItem.PropertyDescriptor.Name;
|
||||
var oldValue = e.OldValue;
|
||||
var newValue = e.ChangedItem.Value;
|
||||
switch (propertyName)
|
||||
{
|
||||
case "AxisIndex":
|
||||
refreshAxisVelParam();
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void tbtnSave_Click(object sender, EventArgs e)
|
||||
{
|
||||
GetParamsEvent?.Invoke(prop.serialize());
|
||||
}
|
||||
|
||||
private void tsbtnOpenDev_Click(object sender, EventArgs e)
|
||||
{
|
||||
this.init();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
387
halftoneproject-master/AssistClient/UI/UIAxisDev.resx
Normal file
387
halftoneproject-master/AssistClient/UI/UIAxisDev.resx
Normal file
@ -0,0 +1,387 @@
|
||||
<?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="toolStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>17, 17</value>
|
||||
</metadata>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="tsbtnOpenDev.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
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
|
||||
I3hAwL+/HJ1QMufZxQAAAABJRU5ErkJggg==
|
||||
</value>
|
||||
</data>
|
||||
<data name="tbtnSave.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAIeSURBVFhH7ZfLShxBFIaPBCRCguALBJVkE3BnJMHLRtQ8
|
||||
wEAkaseuqu46rS7EN3AXkk0kD5CLGEHwBbITXXoBF1lmJ64V0RByOVXU9HQ5NTNdPY0g+MNHz1TV+fuf
|
||||
6tM9M3AnhzogSkaJqcJwOQk8eWr8PFSpdAKLv4PAf6XAcdU455TAwTqT9hk37jnE5UhayPAnfYIvIOKv
|
||||
/sjPEOIP7fMGTyCKus0ZWihKhtMAHD+Z0WLi8m3qJeSWGW2hbAAhN8xoMQm5VvPSfoGZaaJsAIbfzGh+
|
||||
MZynnYv0a44frADTeAFh8kjPNVQ7AZaXu6jur65V4vg+9aoSxns006HnnWonQBg+pLoz4lK/5/Jd6mUh
|
||||
V/S8U1YP4LoZzackeQCvZv7oWiWrCS229bxTdoAmCxtI37ameQV+zHjVaLqzdgC1nS/MjJ8YDlDtacar
|
||||
hkcAhWqqY+KAHjCHraF1HI8gCH6b+no8A5TP7QwQBOeFqN4VWbwCKBMhXwJjPYWI48fks2t5+u0ANVa7
|
||||
EphYnp6X4Bd19RKIZMgbFj8jv6n0a7nK7WzCMvEMcEmXYA74whPdUOqYF7U+ip4Dk/uW5803oUTL03sH
|
||||
hJwFIfphHvv08Tpq3AVf7KV6+pGrH9E5A2R/lNqo7wQ/XA8hjdw0Z3NI3TrOojJpFiAI7tOinfqikng9
|
||||
c0W7PGnO1kCVyj1aPEb94P7bVRSBE7ov7mQJ4D9vFWX+msbQGwAAAABJRU5ErkJggg==
|
||||
</value>
|
||||
</data>
|
||||
<data name="tbtnRun.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAHnSURBVFhH7dfZK4RRGAbwzxKSklJKuVAuXCgXLlwoF8qF
|
||||
Ev8Dg7GPfTf29d6fYd93Yx3bMDdISkqJZM8Yy8PRyPK9M987U74b3um5/j3nm3NOHel/fk6HOUnfYU5E
|
||||
+3YC2rbj0bYVh1ZTLFpMMWjejEbTRhQaNyLRsB6B+rVw1K2FQb8ailpjCGqMwaheCULVciAqlwNQseSP
|
||||
8kU/lC/4omzBB6UGL72NoafTnIxfw+e9UWLwQvGcJ2zc9/nVlX/Bi2Y9UDjtLv8SquEz7ih4i439HDVx
|
||||
3bSbvAAX372YxMe4iuumqALMlb/8+LmC509K8gLcz/6CJ1mcxfMmiALc//wZVjLO4LnjRAHuhnuCxW64
|
||||
eM4YUYCDiw33iDuH4eDZo0QBDi42nBU3ilHCs0aIAhxc7PYHXLLiCM8cJgpwcLHbLThnxx6uHSIKcHBx
|
||||
1O5xyo49XDtIFODg4qjd4YQVR3jGAFGAg4tzfotjxSjh6VQBDi7O+Q2OHIaDp/cTBTi4uGSucWg3XDyt
|
||||
jyjAwcUlc4UDMs7gGqoABxc33CX2ZXEW1/QSBTi4uOEusPctruCpPUQBDi6uV+NZ1xu88x5XcboAA1e6
|
||||
Xrk4WUBNnCwgHg1q4SndEv1AUQMXsXH0iEeD6iv/wyNJrzzCmH5Y8iSuAAAAAElFTkSuQmCC
|
||||
</value>
|
||||
</data>
|
||||
<data name="tbtnStop.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAP5SURBVFhH7ZfLS1RxFMen9i37G9q2ad1zkZWVOjozmqW9
|
||||
W2VUmxIsKnqQumqjFUFQ0LvosehFYFT0gCKIBIvehG4yKknnfvp9f+feGcPRmWtCizpwxPnde77f3++8
|
||||
fucm/ksxCTKZqmxNzYHYmkrtl20IMz4Jli1rpLoar5lMPI3samsbQrh4EqxcOWWgsrKXdevg3Tv49Ak+
|
||||
fixN9a5snK0whBXCli7ZTKaNhQvh8WO4exeammDbttJU78pGtg5DWCFsaRLU1U3rmzkzy+7d8P07pNOw
|
||||
ZAlUVpameldh+PEDYQhLmCF8cclWV1+logI+f4bOTn+KETEuprI5etQwli5FmCH82BLU1paxaBEcO2Zx
|
||||
1GnkgUIkY6lsHLHPCWE5TGGHNIWFlpbJg8lkNytWwM+f0Nycd+d4VLY7dsDgICxfjsd2HCHdSHFxamLB
|
||||
Arh92xJI/xcCjqMKxdOncOuWxxNHSPe7BI2NU79VVPSzZYudfu1aSCYLg8bRqirYsAGyWdi8GXGIK6TN
|
||||
SzadPkx5Obx6BefOQVmZxVFrygk1FWW4TiTVekSg5/pdU6PGY67X2uLFhiGsy5cN2627LtkZ0po4o+l9
|
||||
5eUBbW3w5QukUkZYVwdHjsDZs7BpE+zaBadOwYkTcPKkvaP1ixdtzcXZJ97Bg3DmDHR0GIY8qY2ppFtb
|
||||
8VyO08gTiUlDyWSXJ+3vh/b2/KlPn7aGsm+fN2TjRrhyBd6+tc2o6bx5g9/4+fPw/Ll55OVLOHQIrl0z
|
||||
FZ68prWvX/0BPafjTgTp9BzvqgsX4MULe1GuVR/Ys8fWdNrVq2H+fNi+3ZJ0xgy4ccNKbPZsmDcPnj2z
|
||||
jd27h8+l48fhwQM7TBTOnh7jcpxBKjU3oT8FNyADlaOIRdLdbc9EIK/MmmWhuXnTNqCTK8Yu0fxGHj2y
|
||||
uK9fb6EabQOjhkCxVBd8+BCuX4dLl6wsd+40D2gzivmTJ9DVZe5XyGR7/749U/LZjTh6CHweREko8igJ
|
||||
pUoeJZncrgzXWn09rFplJ9JzEcgrW7fmu6a8puSLSjGqDiWhy5ffkjCSXBm+fp0vQxmJQO4VcBQaAUbg
|
||||
+q3yHN4zhj8XRlSGwnYcI8pQkmtEOola55o1E9uIgsAn5qiNSJJrxXfuTHwrFuZYrViSu4waGswLE3EZ
|
||||
tbTA0JCvqKKXkcRfx9q1avj9+3xiFSIYS2WjStJ4JiyHWfQ6jsQPJEqs3t4/G0jUxvv6fJKWPJBIND75
|
||||
kWzvXhurdBp5QpsqRaOwDQwgjNgjmcQPpWqhSiA1mrhDqWxkq9sv7lAqyY3lKqEPH+KP5bJxtuMeyyW5
|
||||
D5PhjaVUlY214fF9mETyVz/N/gFJJH4B9DKMYQE851AAAAAASUVORK5CYII=
|
||||
</value>
|
||||
</data>
|
||||
<data name="tbtnRestState.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAZ6SURBVFhH1Zd5TJN3GMdxtKUvN1Uh0HKUtlAKVFBQK6Kl
|
||||
xYtDzkJBQA7xdopOhyO6oUw2N8UD74lOXaaZTucSjbqROaNbptkfZks2l5kZssVBsiNbli1b8t3zvH07
|
||||
QSp4/bMn+aS/9/c+x+99fs/vqNf/SjR2v2SNTblenSVcUdt9bmhShH8YbnMfv2MdSf3pidomLNfYha9S
|
||||
F6mw4lwCuntycfVuEb77e6UIt7mP37EO67KNZP74os5SVmuswrVZHWp80leKL/6cj8t/OPHub7k49KsN
|
||||
nT9ninCb+/gd67DuzC0RYFv2Ibl7NFHbhbbE6kCcvT0N136vwPGfZqDjRws2350wJKxzgnTZhm2NzgCQ
|
||||
r1bJ7cOJxq7cZnluFD7qLcXpvhxs7bFg053xjwTbnO7LQzdND/tin5L7oYVHO7FpFD7sLcGRHjs23kpH
|
||||
69dpj0Ub2R4lH+wrfZlq+EzwfBkdgTj+TTYOfmvF+ptjse4JYR9dt62iz7iSAM5EpRRusHDRrD6fjK5b
|
||||
VrRcT0XzZylPBfZ1+FYWnr9gBi9XKdxA4WWTWq9C5+eZeOFqKlZdNg+LZYEKcTlKNHUneXzfnxbyuf/m
|
||||
FJhrQqCxCUulsJI4vLwjswWU7YjFuu5UPHshaUjmnTCKv+l1QTDMUmDxewmDdDyx4Uo6HNtiuRa+lCK7
|
||||
RJ3lYzOVB2HOXgPqDsVj0RmTR+rfioe5NADWFaHic3pdIPQzFGh8JwHzT9ImVBmEmi79IDs3DceMqKIY
|
||||
CaVBiLArLVJ4mnub0G5ZHIqKnXoUvarFvOPGQdQeiUdSoR/00+VIqwkW+8ZVBUCXLUf90XhkLBgFrU2O
|
||||
xAI/1B+LH2TPlLymhXOnDhMpFu8zUnjOgHBlRosajo5Y5K6PokzoUftm3ACyVoQhloJNqA/B6nNjxL4U
|
||||
2mS0WXJUHTBgxVkzJjSEiDrW5WGD7FmHfZdujcW05ggewEUpPGdA0Vu0OQaFm2JEpfzWaFTu0WPOvnvE
|
||||
5/hCa5VjHn1d1X5Xn7nEHzFT5HB26sTnuYfiRJ3kooABtvxBszdGi74L22NQ8EoMNFOFO1J4L6/RU4W/
|
||||
nDv0yHspSlRiZm+IRtl2Hcp36FBGhROVIadBCKjaZxD7GFO+PzRp3pQ513M1vdNaFdBnK//TYQraXB/G
|
||||
5LVGUSHqEJ6h/EUK7xpARScN4MV7A2DyX4pGMWWm9HUtoibJYJimFNtu5lCWyrdr4djqei6mOY7KkEFn
|
||||
c+mVbNaK2ezvkwdQRoMaMACegnJaggXSFNxPPmUjIccPkRYZ7CsjxKliHDSf/IXuZ+uycFHHXBwoZtCT
|
||||
L9Yr6dAOnAIuwvx2KpAtWo9GTCZX7gQZ9DZf8ZkH1Z+clkjosgSox9MgV4UPsnfDg87ZqLm/CIX2zKYw
|
||||
OHfpPRoxXL0Guy80FEA7WYmMxlDMbNZg+hoNJjWEIibDRwxuyvVHyRbXavJEBcWYTCtqwDLUZCunJjqD
|
||||
UNsV/8DUcX04d+tpL6DzPU0GdboMEfTLuNspjiBU7NZ5tGd4JdTSRmcsDeTteLwU3iV8jarYqyMHD84C
|
||||
p7qmKw4z1qox1hkMPWXEkO2LcRXBVFyRqH7DMKjo+lO5h1bQbi3Cs5Q3pbD3RDyM6lRofNuIgpc9F6Mb
|
||||
ng7eWOpoB2Sq9hvEXc6Trhv2yb7HVIcg0i4sksIOFD6Oy3bFYu7hONoTHvwljwr74t3Q0al98HHMwhcS
|
||||
fUEAGk8axd3r/n3hcWAfVQf0aDxlhC6PNq6hLiQsVJ2tyVXBdHwmi1vuk2SC64HrYvklM0zOQK78h7uc
|
||||
8gXSTCfe0vNJqKU5Hq4mPME2dXRuLDmXiMQKqvqHvZS6hUerL/BH/Uk66S4liYeK+0AZCtbhomz6IAn1
|
||||
JwxgH/yPSXI7rIwgvAmBCAqz+Cyhy8qN9MUjsfRiItbS/W7JWZOYVl4JRXSqMdzmviXvm7D2egrpmjBu
|
||||
oYqWm+LT8EyfBvLlQzxDsP8hhZX8iSiCN4piYkGIUXYmPFPRm0C3pultEag/Rbcm+hvWQjdehtvcx+/i
|
||||
6cYUPlH+g8qkOEq2uUQKEU7wR7H/IYUVfIkIYhxRSCwkmolW5Ujvg+T4Wli67PuRFkUfn6KMaryiN9Qi
|
||||
61ElKj6Wh4zYSbpriHlEDmEmQgl3FoYUThErsXIgwYaRhJbQE3GEkTARSf3gZ+7n9zqC9TXEaCKAUBAe
|
||||
gnt5/Qvn251CmZhrHQAAAABJRU5ErkJggg==
|
||||
</value>
|
||||
</data>
|
||||
<data name="tbtnResetPos.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
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
|
||||
</value>
|
||||
</data>
|
||||
<data name="tbtnHome.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAAFiUAABYlAUlSJPAAAARwSURBVFhH1ZZtTFNXGMePwLrpmG9b5ggGppHgHNlMutmN
|
||||
sLiwbJqxl8TEDy5ZFgMKdPUFcVCBUqDQuRk/zqHTsJdoGJhsRRyI1IuWQq/0ZUBnYQ1IkMiodFgKHUXa
|
||||
Z+fCsXh77y0v6gf/zf/D7T3n+Z2X5znnoidaSuOmmBLTRjF5fLw63vLWUrVJ8onKJK5QGjY5SowJUGx8
|
||||
BYra4kB5fT0UXo8FBb1Wq2iNkucb1qwj3R5eVVU7w8vMiZlKwxZHqUkMKtNm4IMX0mtBYYiCAsOLkN/6
|
||||
POQ1rzgrb1m+gYRZnEraE+PxrLvKzBJYELxlFRxpWQ5SKtKbq1smJ+EWJrUpabuaftO9WLhcHwny5mWQ
|
||||
27wUcnSiCqUViUjouVVmTtqqphK9jwb+NHx1TQTZVEQlCR9aqj/fWae2bHHMBT9ukcD3ndvgpPVD+K4j
|
||||
OST88NWnsCPgUFNYPsEIS21JbBKCM/79Zg4Mjt8Af9Bv/J4TDP+cgaNt8bzw7KZwOESFwQEKbSYorkot
|
||||
b6cIwY/hGd8aM2HUVEh7fW441/U5LzzryhI4qF3SQHBclZolRj74N+Y3wDnRCz6YnLcru3bzweFAIwLZ
|
||||
JZRMkLP62iQRC+25baQOz+0/jm972qHPrQfP1DDnndfvgmNtr3Hg+y9P+2eCnZXKKJbzwX/s2gX3YJxl
|
||||
u0sL35oSWAmn6c0Cj8/Jatd+p5oPDtIG5CTYWamMr2uC4Uy2m4fP4QUdDbh/zAAFuOT4sr2yezer7YR/
|
||||
BPKurWbB9zVMbwFj9nFdQifYg+FMnQ9P2mECRgIut34QstR6RptY7U93fMqBf1k/7fcJekbFxrjBYHgR
|
||||
HYN3czjgMf8grvUVgnAm4Rr7Vaw+1d1SDlxahyDjIvqMoGekNMQ5HoQzJ5ySjgYPDAXs9g/AEf1zIev8
|
||||
cn8xq091dwYHnvkHzwDy6Vj7g/D7x+vQZAdOp9sBn+h8VxDOJNzfo/Ws9qfaP+LAMy8i2FuLthP0jBR0
|
||||
rIbvbDfcKQc33Aq4Z6wR5LpneeG/2Hax2rr8fZBzZSUHjmcPaZqgJFTQ0XK+i6Xc+h7O5z6WO+9WQSn9
|
||||
cgCOLxr4rWcfjPjsrHa04wdeeLqGpwwxXCx0qxmdZ8AFvRzf9FBgG62Bf33dnHfMf0rdei68Fi//BVRB
|
||||
sGzl6VcZ+W61IsNLGKaFu2Cft0+1f8wLT7+AYE8N2kqQbOXpV6YIXalFrVFgdf2KK7s7pIemLHDCsk0Q
|
||||
nlaD6giOX3JdpDZUnf9k2wE3Rs9jmI3lAa8eLvUXQi71giB8bw2aSqsNcR0zytU9E5PdLHKEKjXmbC/Q
|
||||
rYGj9KvTLmvdyFtqQXDG8/s+xINIklIirxCc72yfC47L7iwJPz9lXw1PPkxFOB8FHCddxc6qBXyU3lcW
|
||||
hTYcpML+Wiw8tQZ59miQjIRbnPDIw/c3olRZPRpYCBzP+jSefQwJ8/BS4iWUNaAU7JMYbg+Gf1GL3Om4
|
||||
xDBchh1Nuj1epdaj1Rl1KJ48PolC6H+BVsJLPWxk5wAAAABJRU5ErkJggg==
|
||||
</value>
|
||||
</data>
|
||||
<data name="tbtnJogOnOff.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAHISURBVFhH7dfJLwNhGAbwsYRGJEgkEomDxMFB4uDgIHGQ
|
||||
OEiE/4Gq2ndKUbuq/8W+L0XVrmhPEomDg4NLSSNE8DB0api387VNfRfe5LnMHH7PN8uXfML//ByLq8Rk
|
||||
cRVjzFkEs7MQ5rMCjJ7mY+Q0D8MnuRhy5GDQkY2B4yz0H2Wi7ygDpsN09B6koecgFd37KTDuJaNrLwmd
|
||||
uwkw7MTDYI9Dh12DdluMycvQM+4qxa/h27Fos8WgdSsaXu77/OrKZXjLZhSarZHKJ8EN34hE03u87Nfw
|
||||
xButEcoCPPHGdaoAR7xhTVAW4InXrxIFeOJ1K0SBcOLiqOG1y0SBcOGvePmIGl6zRBQIB/6CJ1/U8OpF
|
||||
ogALf8aDX7xn5/O+PGp41QJRgLXyJ3g+8hNvt2l89+RRw/XzRAHWY3+E2xc5Lr8uhYXr54gCrHf+gJtv
|
||||
MdoTFdfEBIJXzhIFWB/cPa6ZCRTXUQXUcOmde3DlN8HguhmiAAuXfrU7XCoSLF4xTRQIBJe211tc+BIK
|
||||
rqUKBIpLO5wb5yHj2imiQDA4a5Nh4eWTRAGeOF2AI04W4ImTBcRDAy+8bEKgDyg8cDFejh7x0MB95X94
|
||||
BOENt7Qt5r1VNxkAAAAASUVORK5CYII=
|
||||
</value>
|
||||
</data>
|
||||
<data name="tbtnLeft.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAHlSURBVFhH7dfZK0RRHAfwYwlJSSmlPCgPHpQHDx6UB+VB
|
||||
if/Bvu/7NvZl/CHe7LsxGMNgrPMiSUkpKdmzz88ZOTXO73LPPbgv/Kbv8+d77u/MrUv+h5+0fmJIHyDg
|
||||
noxBmiECmTRZwzQjBLJpckZpxgjkjhPImyCQP0mgYIpA4TSBohkCxSYCJbMeUGL2gNI5TygzexreGeXh
|
||||
4R/FacrnvaBiwRveuY/zqyd3wystPlBl8cFPQjd80ReqrX74KeiJ11j9Py8gi5/D7ltMxy2qeM1SgHIB
|
||||
eXzvQ9Tw2uVAXEAWv4B9FDW8zhakUEACv4QDFBG83haMC2jFr+AQRRRvWAnBBbTg13CEogVvXA1VKCCI
|
||||
38Axila8aTUMFxDBb+EERQY3rIXjAmr4HZyiyOLN9giFAl/grjfcPZyhyOIt9khc4CucvV4f6L+cjwze
|
||||
uh6FC6jh7PX6SO88H61420Y0LiCCs50/0evHRwvevhGDC4jibOfP9BbwEcU7NmNxAS042/kLXQAfEbxz
|
||||
Kw4X0IqznTvp2fmo4V1b8biADM527uR+anj3dgIuIIuznbNZP+1Txbt3EhUKfAMX2bk73rOThAvoiRsd
|
||||
ybiA66NBL9zoSFH+QNED73Wk4tO7j+ujQfeT/+Eh5BVDb1Kg4N0zSAAAAABJRU5ErkJggg==
|
||||
</value>
|
||||
</data>
|
||||
<data name="tbtnRight.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAHVSURBVFhH7dfJK0VhGAbwYwhJSSmlLJSFhbKwsFAWykKJ
|
||||
/8E8z/N0zeMfYmee53nmcjeSlJSSkjmzh6N7MrxvzvcdORve27P+Pd95b199yv98nVZbjKXVFo2WrSg0
|
||||
b0WieTMCTdZwNFrD0LARivr1ENStB6N2LQg1q4GoXg2AZcUfVct+qFz2RcWSD8oXvVG26IXSBU+UzHug
|
||||
ZM4dxXNuKJpxsdgZftpssfg1fNYVhTMuKJh2hp37PL968g94/pQT8iYc6ZcwDZ90RO5r7Oz7mInnTDjQ
|
||||
AiL42nE7tPkJnjPOFRA4+fOXn1E8e0yhBUQ++zMeSYzgWaNMAdGdP+GeRBbPHGEKyPzhHnFLIoNnDDMF
|
||||
RHFt5w+4JhHF04eYAjK4tvN7XJKI4GmDTAFZXNv5Hc5I9PDUAaaAEVzb+S1OSL7DU/qZAkZxdec3OCb5
|
||||
Dk/pYwoYxa9xRKKHJ/cyBYzgVzgkEcGTuAKy+CUOSETxpB6mgAx+gX0SGTyxmykgip9jj0QWT+AKiOBn
|
||||
2CUxgid0MQX0cPWGO8XOpxjF4zuZAnq4er2OHda8wttv+QnOF9DBRa5XUZwtYCbOFlAfDWbhcR0K/0Ax
|
||||
A1dj5/hRHw2mn/wPj6K8APh2UqDO6R6xAAAAAElFTkSuQmCC
|
||||
</value>
|
||||
</data>
|
||||
<data name="tbtnExport.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAMlSURBVFhH5VZJaBRREC1cQD15cD8oCnoQRBFEEHG5iCCK
|
||||
Ry9uGBDBqLh7kEbM9K/JGCIiSgwaMKbn/z8JgdxEJQqexB1URHE7KCi4gRuKWtX/d8/0dHcW08nFB4/p
|
||||
rnpVv/pP/QUyh8ovBYkSNB6CbmeEtQ4RpFgCx53fNPgfyxvQnp9pvUMA6Z6qGNywKD6AzK+1ij5A108C
|
||||
JXb60yjxCmhxlRK1QruYYRXpUHgiVkBAKeqsqgdoUUPi97FgphLnrCqOjsIE8s+hAnRibECFF31tIhTu
|
||||
SAwKqMQ+qzSQYi7ZGinuNnjO58SYZL6iv2S5zWKhcSo1z68q4UfTzWIPKHelVVKhhenk86q0/aPfqKLW
|
||||
ZiQoka8SdUFH3WTrLYObSeOnKu2/U4oGk5iXS9nxGLQebhwVULilQpMd/cE88Sw0KNxthyxDitWRoCwJ
|
||||
TU0joe3oy9DAm0klVG482ZNXxkDJDRwvwF1ghzbQ4kwkKCsqcdn/uB5noL0wDVrwZyQwC4bNx6gugA+T
|
||||
AMo9EAlMo8TXNFO3wMMnif6AZr9YZ7Nb9FSAxmuhPcbcQ/oP99LSnA+qYbTRiw3JWmJR3KEpn+3rIkgr
|
||||
oLNxbPIOl3tnlmTCUtW4Na4nSmyBFmeUVVUhrQBdPy+SxPASePkpvj8JGhdH9LzjKdxuvSlIK4B/K5NJ
|
||||
cd639wY+Uy7UvaGYm1DCRdYaBedWooP+spr0AkpiWWjjI7k/6HLG2KdkcMMGudNngI5Xfm/DL+DlJvq2
|
||||
rODhAz93s/M1XkCwD3Bnn8QfNKWH/fcsUczdDz8udQYYCpsz/3qGxEfRAviSEBYgVlkZQNuxcfYpO/Dy
|
||||
1fi8XIDjDAPtPg0L0LjLSgcHfM9odb77Y/E+40Nhd0UBd41xkMBXu2AsKV5YY2zPP5t+eRwAVH495f4W
|
||||
jhNedHnbbcW3ocOQ7gCikxrmCP3W0vtmmqmN9LypT2StEtso7iDxND3fs3kN+Q5adGeZAhh8U+VlVyka
|
||||
VNLBFUPJXUjO63FxhuRNSOXX2BFTwIcK3w01IjVKgW5J9elEw1Iv1LifPnBF4in6HwPgL+Chdk9/0QNQ
|
||||
AAAAAElFTkSuQmCC
|
||||
</value>
|
||||
</data>
|
||||
<data name="tbtnImport.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAMxSURBVFhH7VdNaBNREE5FVFQUq2m7u9mkv6YEIv6Agpd6
|
||||
afGmhyJ48+RBEAWt3X2728W0USteBKEn0YOIQgWvetBeRPRiEQQR9SJRCrX+tCVNk53ne5t5bdImu2kT
|
||||
CkI/GLL53sy8b+fNziaBQigGPSYR54XSn/3apGU/lTNJy35WSPaDosM+DK0ekgY9Msn8UAillZpMoA/D
|
||||
q4NsQlTqy3zHxPcV4gwqujMkEydZzth6QuqnYUxRHdiGz/N35CSRWlsoZ1IOFxAyIY5USbQmoCNiODfb
|
||||
bdiB1DLsTdLOFgu6mU9PPAFx26YbcKk8sPSsAnQ/UiWhGs6o62s6T5FyEbOhPmI6g6qW/Rgy8rlC3Ng1
|
||||
b1i2Nhy74XFcQoBE4CBSJcGO6pnwbTbgPOfabHpSMhb6Z2Hzwu/c1Msz0xELLrqJlkI4+QlQrdzrhaRX
|
||||
Zv+EDWdE3LGfseq6n6wao8dvw2ZMmYdw8hMQMnLvhO9KjQsVlQkbdCxg042YtnIBTSQ3LnyrNdZPd7uE
|
||||
CEH6HgFrssIklViDkZ5SSe5tSMu9kvTc+5AxPSPWVHYcbmJBeAng57aSScmSv2yxoTd+ne7CFC5aktDY
|
||||
OgCnw6bzKGzRsy4pgrwESDbdquiZicJNSlm9MTnXLBJXChFcrYDguYlMdBCOYkjlEAl8jiAYNhfPr6Sx
|
||||
icomYOlnPUDr8GI5RAIvAV236J6dF36l/Z57vh4bgsMYlgcbxzJrRDbI7iBTDBHsJSBAaR3r5nExULyM
|
||||
Py1d9+gWjAwEbbqd8/wpQKoYItBTAEM0AVHVcp7IRvaLZKTmRVwpa7acIQxzBfD+4FVAqhgiyE+AAH/D
|
||||
xWwa5m+9iAmX2Hh9wKujGrN/F6ed8xjday+gHDqvwe4OC4602XCqPQlBpNdOQDmsC1gX8P8IkPvhAFI1
|
||||
ReMl2FZPJuc8BKSAC/D7Wb5asKG1SSKpeUnLvUGqGGy+j7lV0IEgVVNIOnTn8zsPkSqGpNFDQS39E51G
|
||||
ZB1MZgNVGwGLvQGHJUJ/89z8/yduuRysAU80kPSUK6LGxsvPhFzFrcqDHUFvA5n/VirJas29e51quMUS
|
||||
BAL/AK8VNEPJuEj/AAAAAElFTkSuQmCC
|
||||
</value>
|
||||
</data>
|
||||
<metadata name="statusStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>332, 17</value>
|
||||
</metadata>
|
||||
</root>
|
86
halftoneproject-master/AssistClient/UI/UICodeScannerDev.Designer.cs
generated
Normal file
86
halftoneproject-master/AssistClient/UI/UICodeScannerDev.Designer.cs
generated
Normal file
@ -0,0 +1,86 @@
|
||||
namespace AssistClient.UI
|
||||
{
|
||||
partial class UICodeScannerDev
|
||||
{
|
||||
/// <summary>
|
||||
/// 必需的设计器变量。
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// 清理所有正在使用的资源。
|
||||
/// </summary>
|
||||
/// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region 组件设计器生成的代码
|
||||
|
||||
/// <summary>
|
||||
/// 设计器支持所需的方法 - 不要修改
|
||||
/// 使用代码编辑器修改此方法的内容。
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.propertyGrid1 = new System.Windows.Forms.PropertyGrid();
|
||||
this.statusStrip1 = new System.Windows.Forms.StatusStrip();
|
||||
this.txtLog = new System.Windows.Forms.ToolStripStatusLabel();
|
||||
this.statusStrip1.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// propertyGrid1
|
||||
//
|
||||
this.propertyGrid1.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.propertyGrid1.HelpVisible = false;
|
||||
this.propertyGrid1.LineColor = System.Drawing.SystemColors.ActiveCaption;
|
||||
this.propertyGrid1.Location = new System.Drawing.Point(0, 0);
|
||||
this.propertyGrid1.Name = "propertyGrid1";
|
||||
this.propertyGrid1.Size = new System.Drawing.Size(1008, 599);
|
||||
this.propertyGrid1.TabIndex = 35;
|
||||
this.propertyGrid1.ToolbarVisible = false;
|
||||
//
|
||||
// statusStrip1
|
||||
//
|
||||
this.statusStrip1.ImageScalingSize = new System.Drawing.Size(24, 24);
|
||||
this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.txtLog});
|
||||
this.statusStrip1.Location = new System.Drawing.Point(0, 599);
|
||||
this.statusStrip1.Name = "statusStrip1";
|
||||
this.statusStrip1.Size = new System.Drawing.Size(1008, 22);
|
||||
this.statusStrip1.TabIndex = 34;
|
||||
this.statusStrip1.Text = "statusStrip1";
|
||||
//
|
||||
// txtLog
|
||||
//
|
||||
this.txtLog.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(0)))), ((int)(((byte)(0)))));
|
||||
this.txtLog.Name = "txtLog";
|
||||
this.txtLog.Size = new System.Drawing.Size(0, 15);
|
||||
//
|
||||
// UICodeScannerDev
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(9F, 18F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.Controls.Add(this.propertyGrid1);
|
||||
this.Controls.Add(this.statusStrip1);
|
||||
this.Name = "UICodeScannerDev";
|
||||
this.Size = new System.Drawing.Size(1008, 621);
|
||||
this.statusStrip1.ResumeLayout(false);
|
||||
this.statusStrip1.PerformLayout();
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.PropertyGrid propertyGrid1;
|
||||
private System.Windows.Forms.StatusStrip statusStrip1;
|
||||
private System.Windows.Forms.ToolStripStatusLabel txtLog;
|
||||
}
|
||||
}
|
138
halftoneproject-master/AssistClient/UI/UICodeScannerDev.cs
Normal file
138
halftoneproject-master/AssistClient/UI/UICodeScannerDev.cs
Normal file
@ -0,0 +1,138 @@
|
||||
using Advantech.Motion;
|
||||
using Newtonsoft.Json;
|
||||
using AssistClient.Device;
|
||||
using AssistClient.UI.PropExtend;
|
||||
using AssistClient.Utils;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
using System.Xml.Linq;
|
||||
|
||||
namespace AssistClient.UI
|
||||
{
|
||||
public partial class UICodeScannerDev : UserControl
|
||||
{
|
||||
SynchronizationContext SyncContext = null;
|
||||
|
||||
//
|
||||
public class CodeScannerProp
|
||||
{
|
||||
[PropertyOrder(1), Browsable(true), Category("数据"), DisplayName("Code"), Description("Code"), ReadOnly(true), JsonIgnore]
|
||||
public string code { get; set; }
|
||||
|
||||
public string serialize()
|
||||
{
|
||||
return JsonConvert.SerializeObject(this);
|
||||
}
|
||||
}
|
||||
|
||||
private CodeScannerProp prop = new CodeScannerProp();
|
||||
private CodeScannerDev dev;
|
||||
public UICodeScannerDev()
|
||||
{
|
||||
InitializeComponent();
|
||||
propertyGrid1.PropertyValueChanged += propertyGrid1_PropertyValueChanged;
|
||||
//this.toolStrip1.Enabled = false;
|
||||
this.propertyGrid1.Enabled = false;
|
||||
//获取UI线程同步上下文
|
||||
SyncContext = SynchronizationContext.Current;
|
||||
init();
|
||||
}
|
||||
//public string getParamsData()
|
||||
//{
|
||||
// return prop.serialize();
|
||||
//}
|
||||
//public void setParamsData(string json)
|
||||
//{
|
||||
//if (json == "") return;
|
||||
// prop.deserialize(json);
|
||||
// this.propertyGrid1.Refresh();
|
||||
//}
|
||||
public void init()
|
||||
{
|
||||
this.propertyGrid1.SelectedObject = prop;
|
||||
dev = new CodeScannerDev();
|
||||
dev.WarningEvent = (level, info) =>
|
||||
{
|
||||
txtLog.Text = $"({level}){info}";
|
||||
};
|
||||
//IN
|
||||
dev.ScanerEvent += new System.Action<string>((data) =>
|
||||
{
|
||||
prop.code = data;
|
||||
this.refreshUI();
|
||||
});
|
||||
if (!dev.start())
|
||||
{
|
||||
this.closeDev();
|
||||
return;
|
||||
}
|
||||
|
||||
//this.toolStrip1.Enabled = true;
|
||||
this.propertyGrid1.Enabled = true;
|
||||
}
|
||||
private void refreshUI()
|
||||
{
|
||||
SyncContext.Post(m =>
|
||||
{
|
||||
var result = m as string;
|
||||
propertyGrid1.Refresh();
|
||||
//tbtnJogOnOff.Text = (prop.AxState == AxisState.STA_AX_EXT_JOG) ? "关闭Jog" : "开启Jog";
|
||||
//tbtnLeft.Enabled = tbtnRight.Enabled = (prop.AxState == AxisState.STA_AX_EXT_JOG);
|
||||
}, "异步操作完成结果");
|
||||
|
||||
|
||||
}
|
||||
|
||||
private void closeDev()
|
||||
{
|
||||
try
|
||||
{
|
||||
if (dev == null)
|
||||
return;
|
||||
dev.stop();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
//this.toolStrip1.Enabled = false;
|
||||
this.propertyGrid1.Enabled = false;
|
||||
MessageBox.Show(ex.Message, "失败", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
}
|
||||
}
|
||||
|
||||
protected override void OnHandleDestroyed(EventArgs e)
|
||||
{
|
||||
base.OnHandleDestroyed(e);
|
||||
// 在此添加需要手动释放资源的代码
|
||||
this.closeDev();
|
||||
}
|
||||
|
||||
private void propertyGrid1_PropertyValueChanged(object s, PropertyValueChangedEventArgs e)
|
||||
{
|
||||
//其中包含了两个重要的属性:OldValue和ChangeItem。
|
||||
//ChangeItem是“PropertyDescriptorGridEntry”类型。一般可以通过ChangeItem.PropertyDescriptor.ComponentType查找到属性的实际类型。
|
||||
//而通过ChangeItem的Label,则可以查看到当前在属性编辑输入框中显示的值。
|
||||
|
||||
string className = e.ChangedItem.PropertyDescriptor.ComponentType.Name;
|
||||
string propertyName = e.ChangedItem.PropertyDescriptor.Name;
|
||||
var oldValue = e.OldValue;
|
||||
var newValue = e.ChangedItem.Value;
|
||||
switch (propertyName)
|
||||
{
|
||||
case "xxx":
|
||||
//refreshAxisVelParam();
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
123
halftoneproject-master/AssistClient/UI/UICodeScannerDev.resx
Normal file
123
halftoneproject-master/AssistClient/UI/UICodeScannerDev.resx
Normal 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="statusStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>17, 17</value>
|
||||
</metadata>
|
||||
</root>
|
179
halftoneproject-master/AssistClient/UI/UIDefectLib.Designer.cs
generated
Normal file
179
halftoneproject-master/AssistClient/UI/UIDefectLib.Designer.cs
generated
Normal file
@ -0,0 +1,179 @@
|
||||
namespace AssistClient.UI
|
||||
{
|
||||
partial class UIDefectLib
|
||||
{
|
||||
/// <summary>
|
||||
/// 必需的设计器变量。
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// 清理所有正在使用的资源。
|
||||
/// </summary>
|
||||
/// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region 组件设计器生成的代码
|
||||
|
||||
/// <summary>
|
||||
/// 设计器支持所需的方法 - 不要修改
|
||||
/// 使用代码编辑器修改此方法的内容。
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(UIDefectLib));
|
||||
this.toolStrip1 = new System.Windows.Forms.ToolStrip();
|
||||
this.tsbtnOpenDev = new System.Windows.Forms.ToolStripButton();
|
||||
this.tbtnSave = new System.Windows.Forms.ToolStripButton();
|
||||
this.tssSave = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.tbtnRun = new System.Windows.Forms.ToolStripButton();
|
||||
this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.tbtnExport = new System.Windows.Forms.ToolStripButton();
|
||||
this.tbtnImport = new System.Windows.Forms.ToolStripButton();
|
||||
this.propertyGrid1 = new System.Windows.Forms.PropertyGrid();
|
||||
this.statusStrip1 = new System.Windows.Forms.StatusStrip();
|
||||
this.txtLog = new System.Windows.Forms.ToolStripStatusLabel();
|
||||
this.toolStrip1.SuspendLayout();
|
||||
this.statusStrip1.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// toolStrip1
|
||||
//
|
||||
this.toolStrip1.ImageScalingSize = new System.Drawing.Size(24, 24);
|
||||
this.toolStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.tsbtnOpenDev,
|
||||
this.tbtnSave,
|
||||
this.tssSave,
|
||||
this.tbtnRun,
|
||||
this.toolStripSeparator1,
|
||||
this.tbtnExport,
|
||||
this.tbtnImport});
|
||||
this.toolStrip1.Location = new System.Drawing.Point(0, 0);
|
||||
this.toolStrip1.Name = "toolStrip1";
|
||||
this.toolStrip1.Size = new System.Drawing.Size(1008, 38);
|
||||
this.toolStrip1.TabIndex = 26;
|
||||
this.toolStrip1.Text = "toolStrip7";
|
||||
//
|
||||
// tsbtnOpenDev
|
||||
//
|
||||
this.tsbtnOpenDev.Image = ((System.Drawing.Image)(resources.GetObject("tsbtnOpenDev.Image")));
|
||||
this.tsbtnOpenDev.ImageTransparentColor = System.Drawing.Color.Magenta;
|
||||
this.tsbtnOpenDev.Name = "tsbtnOpenDev";
|
||||
this.tsbtnOpenDev.Size = new System.Drawing.Size(110, 33);
|
||||
this.tsbtnOpenDev.Text = "打开设备";
|
||||
this.tsbtnOpenDev.Click += new System.EventHandler(this.tsbtnOpenDev_Click);
|
||||
//
|
||||
// tbtnSave
|
||||
//
|
||||
this.tbtnSave.Image = ((System.Drawing.Image)(resources.GetObject("tbtnSave.Image")));
|
||||
this.tbtnSave.ImageTransparentColor = System.Drawing.Color.Magenta;
|
||||
this.tbtnSave.Name = "tbtnSave";
|
||||
this.tbtnSave.Size = new System.Drawing.Size(74, 33);
|
||||
this.tbtnSave.Text = "保存";
|
||||
this.tbtnSave.Click += new System.EventHandler(this.tbtnSave_Click);
|
||||
//
|
||||
// tssSave
|
||||
//
|
||||
this.tssSave.Name = "tssSave";
|
||||
this.tssSave.Size = new System.Drawing.Size(6, 38);
|
||||
//
|
||||
// tbtnRun
|
||||
//
|
||||
this.tbtnRun.Image = ((System.Drawing.Image)(resources.GetObject("tbtnRun.Image")));
|
||||
this.tbtnRun.ImageTransparentColor = System.Drawing.Color.Magenta;
|
||||
this.tbtnRun.Name = "tbtnRun";
|
||||
this.tbtnRun.Size = new System.Drawing.Size(74, 33);
|
||||
this.tbtnRun.Text = "执行";
|
||||
this.tbtnRun.Click += new System.EventHandler(this.tbtnRun_Click);
|
||||
//
|
||||
// toolStripSeparator1
|
||||
//
|
||||
this.toolStripSeparator1.Name = "toolStripSeparator1";
|
||||
this.toolStripSeparator1.Size = new System.Drawing.Size(6, 38);
|
||||
//
|
||||
// tbtnExport
|
||||
//
|
||||
this.tbtnExport.Image = ((System.Drawing.Image)(resources.GetObject("tbtnExport.Image")));
|
||||
this.tbtnExport.ImageTransparentColor = System.Drawing.Color.Magenta;
|
||||
this.tbtnExport.Name = "tbtnExport";
|
||||
this.tbtnExport.Size = new System.Drawing.Size(74, 33);
|
||||
this.tbtnExport.Text = "导出";
|
||||
this.tbtnExport.Click += new System.EventHandler(this.tbtnExport_Click);
|
||||
//
|
||||
// tbtnImport
|
||||
//
|
||||
this.tbtnImport.Image = ((System.Drawing.Image)(resources.GetObject("tbtnImport.Image")));
|
||||
this.tbtnImport.ImageTransparentColor = System.Drawing.Color.Magenta;
|
||||
this.tbtnImport.Name = "tbtnImport";
|
||||
this.tbtnImport.Size = new System.Drawing.Size(74, 33);
|
||||
this.tbtnImport.Text = "导入";
|
||||
this.tbtnImport.Click += new System.EventHandler(this.tbtnImport_Click);
|
||||
//
|
||||
// propertyGrid1
|
||||
//
|
||||
this.propertyGrid1.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.propertyGrid1.LineColor = System.Drawing.SystemColors.ActiveCaption;
|
||||
this.propertyGrid1.Location = new System.Drawing.Point(0, 38);
|
||||
this.propertyGrid1.Name = "propertyGrid1";
|
||||
this.propertyGrid1.Size = new System.Drawing.Size(1008, 583);
|
||||
this.propertyGrid1.TabIndex = 33;
|
||||
this.propertyGrid1.ToolbarVisible = false;
|
||||
//
|
||||
// statusStrip1
|
||||
//
|
||||
this.statusStrip1.ImageScalingSize = new System.Drawing.Size(24, 24);
|
||||
this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.txtLog});
|
||||
this.statusStrip1.Location = new System.Drawing.Point(0, 590);
|
||||
this.statusStrip1.Name = "statusStrip1";
|
||||
this.statusStrip1.Padding = new System.Windows.Forms.Padding(2, 0, 14, 0);
|
||||
this.statusStrip1.Size = new System.Drawing.Size(1008, 31);
|
||||
this.statusStrip1.TabIndex = 34;
|
||||
this.statusStrip1.Text = "statusStrip1";
|
||||
//
|
||||
// txtLog
|
||||
//
|
||||
this.txtLog.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(0)))), ((int)(((byte)(0)))));
|
||||
this.txtLog.Name = "txtLog";
|
||||
this.txtLog.Size = new System.Drawing.Size(46, 24);
|
||||
this.txtLog.Text = "状态";
|
||||
//
|
||||
// UIDefectLib
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(9F, 18F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.Controls.Add(this.statusStrip1);
|
||||
this.Controls.Add(this.propertyGrid1);
|
||||
this.Controls.Add(this.toolStrip1);
|
||||
this.Name = "UIDefectLib";
|
||||
this.Size = new System.Drawing.Size(1008, 621);
|
||||
this.toolStrip1.ResumeLayout(false);
|
||||
this.toolStrip1.PerformLayout();
|
||||
this.statusStrip1.ResumeLayout(false);
|
||||
this.statusStrip1.PerformLayout();
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
private System.Windows.Forms.ToolStrip toolStrip1;
|
||||
private System.Windows.Forms.ToolStripButton tbtnRun;
|
||||
private System.Windows.Forms.ToolStripButton tbtnExport;
|
||||
private System.Windows.Forms.ToolStripButton tbtnImport;
|
||||
private System.Windows.Forms.ToolStripSeparator toolStripSeparator1;
|
||||
private System.Windows.Forms.PropertyGrid propertyGrid1;
|
||||
private System.Windows.Forms.ToolStripButton tbtnSave;
|
||||
private System.Windows.Forms.ToolStripSeparator tssSave;
|
||||
private System.Windows.Forms.ToolStripButton tsbtnOpenDev;
|
||||
private System.Windows.Forms.StatusStrip statusStrip1;
|
||||
private System.Windows.Forms.ToolStripStatusLabel txtLog;
|
||||
}
|
||||
}
|
240
halftoneproject-master/AssistClient/UI/UIDefectLib.cs
Normal file
240
halftoneproject-master/AssistClient/UI/UIDefectLib.cs
Normal file
@ -0,0 +1,240 @@
|
||||
using Advantech.Motion;
|
||||
using Newtonsoft.Json;
|
||||
using OpenCvSharp;
|
||||
using AssistClient.Device;
|
||||
using AssistClient.Utils;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
using static AssistClient.Device.DefectLib;
|
||||
|
||||
namespace AssistClient.UI
|
||||
{
|
||||
public partial class UIDefectLib : UserControl
|
||||
{
|
||||
SynchronizationContext SyncContext = null;
|
||||
public Action<string> GetParamsEvent;
|
||||
//
|
||||
private DefectLibProp prop = new DefectLibProp(Config.Defect_CutSize,Config.Defect_ReSize,Config.Defect_Thresholds);
|
||||
private DefectLib dev;
|
||||
public UIDefectLib()
|
||||
{
|
||||
InitializeComponent();
|
||||
propertyGrid1.PropertyValueChanged += propertyGrid1_PropertyValueChanged;
|
||||
refreshUIState();
|
||||
//获取UI线程同步上下文
|
||||
SyncContext = SynchronizationContext.Current;
|
||||
//init();
|
||||
}
|
||||
private string szLog;
|
||||
|
||||
private void refreshUIState()
|
||||
{
|
||||
foreach (ToolStripItem item in this.toolStrip1.Items)
|
||||
{
|
||||
if (item.Text == "打开设备")
|
||||
item.Visible = (dev == null || !dev.IsInit);
|
||||
else
|
||||
this.propertyGrid1.Enabled = item.Enabled = !(dev == null || !dev.IsInit);
|
||||
}
|
||||
}
|
||||
public void init()
|
||||
{
|
||||
this.tbtnSave.Visible = tssSave.Visible = (GetParamsEvent != null);
|
||||
this.propertyGrid1.SelectedObject = prop;
|
||||
dev = new DefectLib();
|
||||
dev.WarningEvent = (level, info) =>
|
||||
{
|
||||
szLog = $"({level}){info}";
|
||||
txtLog.Text = $"({level}){info}";
|
||||
};
|
||||
//DATA
|
||||
dev.finishEvent += new System.Action<DefectTask>((task) =>
|
||||
{
|
||||
DateTime t1= DateTime.Now;
|
||||
var t2=t1-task.nowTime;
|
||||
var t3= t2.Milliseconds;
|
||||
prop.InformationList = JsonConvert.SerializeObject(task.informationList);
|
||||
prop.resultInfo = task.isSucceed ? "成功" : task.resultInfo;
|
||||
this.refreshUI();
|
||||
});
|
||||
|
||||
if (!dev.start())
|
||||
{
|
||||
this.closeDev();
|
||||
return;
|
||||
}
|
||||
refreshUIState();
|
||||
}
|
||||
public string getParamsData()
|
||||
{
|
||||
return prop.serialize();
|
||||
}
|
||||
public void setParamsData(string json)
|
||||
{
|
||||
if (json == "") return;
|
||||
prop.deserialize(json);
|
||||
this.propertyGrid1.Refresh();
|
||||
}
|
||||
private void refreshUI()
|
||||
{
|
||||
SyncContext.Post(m =>
|
||||
{
|
||||
var result = m as string;
|
||||
propertyGrid1.Refresh();
|
||||
//txtLog.Text = szLog;//不显示
|
||||
//tbtnJogOnOff.Text = (prop.AxState == AxisState.STA_AX_EXT_JOG) ? "关闭Jog" : "开启Jog";
|
||||
//tbtnLeft.Enabled = tbtnRight.Enabled = (prop.AxState == AxisState.STA_AX_EXT_JOG);
|
||||
}, "异步操作完成结果");
|
||||
|
||||
|
||||
}
|
||||
|
||||
private void closeDev()
|
||||
{
|
||||
try
|
||||
{
|
||||
if (dev == null)
|
||||
return;
|
||||
dev.stop();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
refreshUIState();
|
||||
MessageBox.Show(ex.Message, "失败", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
}
|
||||
}
|
||||
|
||||
protected override void OnHandleDestroyed(EventArgs e)
|
||||
{
|
||||
base.OnHandleDestroyed(e);
|
||||
// 在此添加需要手动释放资源的代码
|
||||
this.closeDev();
|
||||
}
|
||||
|
||||
private void tbtnRun_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (!Util.IsNumber(prop.ThresholdsClass.Replace("-", "").Replace(",", "").Replace(";", "").Replace(".", "")))
|
||||
{
|
||||
txtLog.Text = "种类阀值只可输入数字!";
|
||||
return;
|
||||
}
|
||||
if (!verifyThresholdsCount(prop.ThresholdsClass, prop.ThresholdsClassCount))
|
||||
{
|
||||
txtLog.Text = "输入种类阀值与数量不一致!";
|
||||
return;
|
||||
}
|
||||
try
|
||||
{
|
||||
prop.resultInfo = "";
|
||||
dev.add(new DefectTask()
|
||||
{
|
||||
nowTime= DateTime.Now,
|
||||
bmp=new Mat(prop.BmpPath),
|
||||
cut_size=prop.CutSize,
|
||||
resize=prop.Resize,
|
||||
thresholds=prop.Thresholds,
|
||||
thresholdsClass = prop.ThresholdsClass,
|
||||
//finishEvent = (res) =>
|
||||
//{
|
||||
//}
|
||||
});
|
||||
}
|
||||
catch(Exception ex)
|
||||
{
|
||||
MessageBox.Show(ex.Message, "失败", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
}
|
||||
}
|
||||
|
||||
private void tbtnExport_Click(object sender, EventArgs e)
|
||||
{
|
||||
string filePath = FileUtil.saveAsFile($"DefectLib Config.json", "JSON|*.json");
|
||||
if (filePath != "")
|
||||
{
|
||||
string jsonText = prop.serialize();
|
||||
File.WriteAllText(filePath, jsonText);
|
||||
MessageBox.Show("保存成功!", "成功", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||||
}
|
||||
}
|
||||
|
||||
private void tbtnImport_Click(object sender, EventArgs e)
|
||||
{
|
||||
string filePath = FileUtil.openFile("JSON|*.json");
|
||||
if (filePath != "")
|
||||
{
|
||||
string jsonText = File.ReadAllText(filePath);
|
||||
prop.deserialize(jsonText);
|
||||
this.propertyGrid1.Refresh();
|
||||
//this.propertyGrid1.SelectedObject= prop;
|
||||
//MessageBox.Show("加载成功!", "成功", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||||
}
|
||||
}
|
||||
|
||||
private void propertyGrid1_PropertyValueChanged(object s, PropertyValueChangedEventArgs e)
|
||||
{
|
||||
//其中包含了两个重要的属性:OldValue和ChangeItem。
|
||||
//ChangeItem是“PropertyDescriptorGridEntry”类型。一般可以通过ChangeItem.PropertyDescriptor.ComponentType查找到属性的实际类型。
|
||||
//而通过ChangeItem的Label,则可以查看到当前在属性编辑输入框中显示的值。
|
||||
|
||||
string className = e.ChangedItem.PropertyDescriptor.ComponentType.Name;
|
||||
string propertyName = e.ChangedItem.PropertyDescriptor.Name;
|
||||
var oldValue = e.OldValue;
|
||||
var newValue = e.ChangedItem.Value;
|
||||
switch (propertyName)
|
||||
{
|
||||
case "ThresholdsClass":
|
||||
if(!Util.IsNumber(newValue.ToString().Replace("-","").Replace(",", "").Replace(";", "").Replace(".", "")))
|
||||
txtLog.Text = "种类阀值只可输入数字!";
|
||||
else if (!verifyThresholdsCount(newValue.ToString(), prop.ThresholdsClassCount))
|
||||
txtLog.Text = "输入种类阀值与数量不一致!";
|
||||
else
|
||||
txtLog.Text = "";
|
||||
break;
|
||||
case "ThresholdsClassCount":
|
||||
if (!verifyThresholdsCount(prop.ThresholdsClass, (int)newValue))
|
||||
txtLog.Text = "输入种类阀值与数量不一致!";
|
||||
else
|
||||
txtLog.Text = "";
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void tbtnSave_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (!Util.IsNumber(prop.ThresholdsClass.Replace("-", "").Replace(",", "").Replace(";", "").Replace(".", "")))
|
||||
{
|
||||
txtLog.Text = "种类阀值只可输入数字!";
|
||||
return;
|
||||
}
|
||||
if (!verifyThresholdsCount(prop.ThresholdsClass, prop.ThresholdsClassCount))
|
||||
{
|
||||
txtLog.Text = "输入种类阀值与数量不一致!";
|
||||
return;
|
||||
}
|
||||
|
||||
GetParamsEvent?.Invoke(prop.serialize());
|
||||
}
|
||||
|
||||
private void tsbtnOpenDev_Click(object sender, EventArgs e)
|
||||
{
|
||||
szLog = txtLog.Text = "";
|
||||
this.init();
|
||||
}
|
||||
|
||||
private bool verifyThresholdsCount(string szThresholdsClass,int iThresholdsClassCount)
|
||||
{
|
||||
return szThresholdsClass.Trim().TrimEnd(new char[] { ',', ';' })
|
||||
.Split(new char[] { ',', ';' }).Count() == iThresholdsClassCount;
|
||||
|
||||
}
|
||||
}
|
||||
}
|
230
halftoneproject-master/AssistClient/UI/UIDefectLib.resx
Normal file
230
halftoneproject-master/AssistClient/UI/UIDefectLib.resx
Normal file
@ -0,0 +1,230 @@
|
||||
<?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="toolStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>17, 17</value>
|
||||
</metadata>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="tsbtnOpenDev.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
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
|
||||
n+ABAf8Cp5CdYvXLdKIAAAAASUVORK5CYII=
|
||||
</value>
|
||||
</data>
|
||||
<data name="tbtnSave.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAIdSURBVFhH7ZdPaxNBGMbfIJQKlkK/QFHRi+BNS4t/LmLS
|
||||
D5Bj3O7OzO68qx6C38Cb6MXSD9CqWKHQL+BN2mOr4MFjb8WzUlqR/nlnmGx2zCTZ2SxCIA/82GRm3mef
|
||||
zL67SWAih2oQpw+IRmm4rANPbxk/DzWbU8CSzyDwvBI4vjTOBSXwTo/J6Dwy7gXE5f2skOEBfYJ3IJL3
|
||||
/sgNiPCH9lnBQ4jjWXOGIYrTe1kAjutmtJy4fJV5CbllRocoH0DIj2a0nIRc7Xppv8DMDFA+AMNNM1pc
|
||||
DEPauVi/5vjWCtDCI4jSeT3XV6MEaLcvU92ZrlXi+Cbz6hAluzRT0/NOjRIgimao7hdxrN9z+TrzspAv
|
||||
9LxTVg/gBzNaTGl6BVrhqa5VsprQYlvPO2UHGLCwj/Rta5pX4FrOq8vAnbUDqO1cMjN+Yniban/mvLp4
|
||||
BFCopvpO7NMD5utwaB3HbxCEf019L54Bqmc8AwTh71J07oo8XgGUiZDLwNhcKZLkBvnsWJ5+O0CNNaoE
|
||||
ppan5yX4Q139HES64A1L7pJfI/ta7jCeTVglngGO6RI8Af70pm4odSyKWh/Hi8DknuX5/5tQouXpvQNC
|
||||
tkCI6xDiNX38FzXugj+7SvX0I1c/ogsGyP8otVHfCX64HkIa+cmczSF16ziLqmRQgCCYpkVfeosqohWe
|
||||
0C7Xzdn6qNm8RIsfUj+4/3aVReBj3RcTWQK4AF41Zkfj/gngAAAAAElFTkSuQmCC
|
||||
</value>
|
||||
</data>
|
||||
<data name="tbtnRun.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAHnSURBVFhH7dfZK4RRGAbwzxKSklJKuVAuXCgXLlwoF8qF
|
||||
Ev8Dg7GPfTf29d6fYd93Yx3bMDdISkqJZM8Yy8PRyPK9M987U74b3um5/j3nm3NOHel/fk6HOUnfYU5E
|
||||
+3YC2rbj0bYVh1ZTLFpMMWjejEbTRhQaNyLRsB6B+rVw1K2FQb8ailpjCGqMwaheCULVciAqlwNQseSP
|
||||
8kU/lC/4omzBB6UGL72NoafTnIxfw+e9UWLwQvGcJ2zc9/nVlX/Bi2Y9UDjtLv8SquEz7ih4i439HDVx
|
||||
3bSbvAAX372YxMe4iuumqALMlb/8+LmC509K8gLcz/6CJ1mcxfMmiALc//wZVjLO4LnjRAHuhnuCxW64
|
||||
eM4YUYCDiw33iDuH4eDZo0QBDi42nBU3ilHCs0aIAhxc7PYHXLLiCM8cJgpwcLHbLThnxx6uHSIKcHBx
|
||||
1O5xyo49XDtIFODg4qjd4YQVR3jGAFGAg4tzfotjxSjh6VQBDi7O+Q2OHIaDp/cTBTi4uGSucWg3XDyt
|
||||
jyjAwcUlc4UDMs7gGqoABxc33CX2ZXEW1/QSBTi4uOEusPctruCpPUQBDi6uV+NZ1xu88x5XcboAA1e6
|
||||
Xrk4WUBNnCwgHg1q4SndEv1AUQMXsXH0iEeD6iv/wyNJrzzCmH5Y8iSuAAAAAElFTkSuQmCC
|
||||
</value>
|
||||
</data>
|
||||
<data name="tbtnExport.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAMlSURBVFhH5VZJaBRREC1cQD15cD8oCnoQRBFEEHG5iCCK
|
||||
Ry9uGBDBqLjnII2Y6V+dMQQ8GGLQgDEz//9JCOQmKlHwJO6gIorbQUHBDdxQ1Kr+v3ump7uzmE4uPnhM
|
||||
d9Wr+tV/6i+QOZS3EiRK0FgHvc4Yax0hSLECmp3fNPgfyxvQ6c213hGAdE9XDG5YFB9AehutYgDQDdNA
|
||||
ib3+NEq8AlpcpUTt0CnmWEU6FJ6KFRBQinqr6gNa1JD4fSyYqcQ5q4qjKz+F/AuoAJ0YG1DhRV+bCIV7
|
||||
EoMCKnHIKg2kWEi2Joq7DQXnc2JMMl/RX7LaZrHQOJOa51eV8KPpZnEAlLvWKqnQ/GzyFaq0g6PfqKLW
|
||||
ZiQo4VWJeqCrfrr1lsHNpPFTlfbfKUWjSczLpex4DFqPNo4KKNxRocmO/mAF8Sw0KNxvhyxDivWRoCwJ
|
||||
LS1joePEy9DAm0klVG4y2ZNXxlDJDRwvwF1ihzbQ4kwkKCsqcdn/uD5noDM/C9rwZyQwC4bNx6gugA+T
|
||||
AMo9EglMo8TXNFO3oIBPEv0BzX6xyWa36KsAjddCe4y5h/QfHqSluRhU43ijF1uStcSiuENTPt/XRZBW
|
||||
QHfTxOQdLvfOLMmEpapxZ1xPlNgGbc44q6pCWgG6YVEkieElKHgzfH8SNC6P6HnHU7jbelOQVgD/ViaT
|
||||
4rxv7w98plyof0MxN6GEy6w1Cs6tRBf9ZTXpBZTEqtDGR/Jg0ONMsE/J4IYNcqfPAB2v/N6BX6CQm+rb
|
||||
skIBH/i5W52v8QKCfYA7uxl/0JQe89+zRDF3P/y41BlgKGzN/OsZEh9FC+BLQliAWGdlAB0nJ9mn7MDL
|
||||
V+PzcgGOMwq0+zQsQOM+Kx0e8D2j3fnuj8X7jA+FvRUF3DXGYQJf7YKxpHhhjbE9/2z65XEIUN5myv0t
|
||||
HCe86PK2245vQ4ch3QFENzXMcfqtpfftNFNb6XnbgMhaJXZR3FFiMz3fs3kN+Q5adOeZAhh8U+VlVyka
|
||||
VtLBFUPJXUrO63FxhuRNSHkb7Igp4EOF74YakRolT7ekhnSiYakfajxMH7gm8RT9jwHwF2CndnhIXpjb
|
||||
AAAAAElFTkSuQmCC
|
||||
</value>
|
||||
</data>
|
||||
<data name="tbtnImport.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAMwSURBVFhH7VfNaxNREE9FVFQUq2m7u9mkn6YEIn6Agpd6
|
||||
afGmhyL4DygIolBrd9/udjFt1IoXQehJ9CCiUMGrHrQXEb1YBEFEvQiKEOtHW9I02Xm+t5nXJu1mN21K
|
||||
QegPhmx+b2beb+fNziahUigGPSYR57kykP/SpOU/VjJJy39SSP69osM+DK0dkgY9Msl9Vwil1ZpMoB/D
|
||||
a4NsQlzqz33DxPcU4gwpujMsEyddydh6ShqgUUxRG9iGz4p35KSRWlsoZzMOFxAxIYmUJ1pT0BEznBvt
|
||||
NuxAagn2pmlniwXdzKcnmYKkbdMNuFQZWHpWAbofKU+ohjPm+prOE6RcJGyoj5nOkKrlP0SMYq4IN3bN
|
||||
G5atjSSu+xyXECAROIiUJ9hRPRW+zQac51ybTU9Kxnz/zG9e+p2beml6KmbBRTfRYginIAGqVXg1n/Ty
|
||||
zJ+o4YyKOw4yVl33k1Vj7Pgt2IwpixBOQQIiRuGt8F2ucaGiMlGDjodsuhHTVi+giRQmhG+txvrpTpcQ
|
||||
IcjAI2BNVpqkGmswspMqKbyJaIWXkl54FzGmpsWayo7DTSwIPwH83JYzKVnyFy029Cav0V2YwkVLGhpb
|
||||
B+F01HQeRi16xiVFkJ8AyaZbFT33o3QTL6s3MrPNInG1EMG1Cgify+TiQ3AUQ6qHSBBwBOGouXB+nsYm
|
||||
KpuA3s96iNbhxVKIBH4Cum7SPTsv/MoGPfd8PTEMhzGsCDaOZdaIbJDdRqYcIthPQIjSOtbNE2Kg+Bl/
|
||||
Wrru0i0YGQrbdDvn+VOAVDlEoK8AhngK4qrlPJaN/GfJyMyJOC9rtpxhDHMF8P7gVUCqHCIoSIAAf8Ml
|
||||
bBrlb72YCX1svN7n1VGNmb8L0855hO6rL6ASOq/C7g4LjrTZcKo9DWGk105AJawLWBfw/wiQB+AAUquK
|
||||
xj7YVk8ysz4CMsAFBP0sXynY0NokkcycpBVeI1UONt/H3SroQJBaVUg6dBfzOw+QKoek0UNhLfsTnUZl
|
||||
HUxmgzUbAYu9AUckQn/z3Pz/J265FKwBTzSQ7KQrYpWNl58JuYJbVQY7gt4GMvfVK8lKzb17nWq4xSKE
|
||||
Qv8A7O40mQFf7ZYAAAAASUVORK5CYII=
|
||||
</value>
|
||||
</data>
|
||||
<metadata name="statusStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>498, 17</value>
|
||||
</metadata>
|
||||
</root>
|
148
halftoneproject-master/AssistClient/UI/UIForLib.Designer.cs
generated
Normal file
148
halftoneproject-master/AssistClient/UI/UIForLib.Designer.cs
generated
Normal file
@ -0,0 +1,148 @@
|
||||
namespace AssistClient.UI
|
||||
{
|
||||
partial class UIForLib
|
||||
{
|
||||
/// <summary>
|
||||
/// 必需的设计器变量。
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// 清理所有正在使用的资源。
|
||||
/// </summary>
|
||||
/// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region 组件设计器生成的代码
|
||||
|
||||
/// <summary>
|
||||
/// 设计器支持所需的方法 - 不要修改
|
||||
/// 使用代码编辑器修改此方法的内容。
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(UIForLib));
|
||||
this.statusStrip1 = new System.Windows.Forms.StatusStrip();
|
||||
this.txtLog = new System.Windows.Forms.ToolStripStatusLabel();
|
||||
this.propertyGrid1 = new System.Windows.Forms.PropertyGrid();
|
||||
this.toolStrip1 = new System.Windows.Forms.ToolStrip();
|
||||
this.tbtnSave = new System.Windows.Forms.ToolStripButton();
|
||||
this.tssSave = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.tbtnExport = new System.Windows.Forms.ToolStripButton();
|
||||
this.tbtnImport = new System.Windows.Forms.ToolStripButton();
|
||||
this.statusStrip1.SuspendLayout();
|
||||
this.toolStrip1.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// statusStrip1
|
||||
//
|
||||
this.statusStrip1.ImageScalingSize = new System.Drawing.Size(24, 24);
|
||||
this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.txtLog});
|
||||
this.statusStrip1.Location = new System.Drawing.Point(0, 599);
|
||||
this.statusStrip1.Name = "statusStrip1";
|
||||
this.statusStrip1.Padding = new System.Windows.Forms.Padding(2, 0, 14, 0);
|
||||
this.statusStrip1.Size = new System.Drawing.Size(1008, 22);
|
||||
this.statusStrip1.TabIndex = 28;
|
||||
this.statusStrip1.Text = "statusStrip1";
|
||||
//
|
||||
// txtLog
|
||||
//
|
||||
this.txtLog.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(0)))), ((int)(((byte)(0)))));
|
||||
this.txtLog.Name = "txtLog";
|
||||
this.txtLog.Size = new System.Drawing.Size(0, 15);
|
||||
//
|
||||
// propertyGrid1
|
||||
//
|
||||
this.propertyGrid1.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.propertyGrid1.LineColor = System.Drawing.SystemColors.ActiveCaption;
|
||||
this.propertyGrid1.Location = new System.Drawing.Point(0, 38);
|
||||
this.propertyGrid1.Name = "propertyGrid1";
|
||||
this.propertyGrid1.Size = new System.Drawing.Size(1008, 561);
|
||||
this.propertyGrid1.TabIndex = 31;
|
||||
this.propertyGrid1.ToolbarVisible = false;
|
||||
this.propertyGrid1.PropertyValueChanged += new System.Windows.Forms.PropertyValueChangedEventHandler(this.propertyGrid1_PropertyValueChanged);
|
||||
//
|
||||
// toolStrip1
|
||||
//
|
||||
this.toolStrip1.ImageScalingSize = new System.Drawing.Size(24, 24);
|
||||
this.toolStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.tbtnSave,
|
||||
this.tssSave,
|
||||
this.tbtnExport,
|
||||
this.tbtnImport});
|
||||
this.toolStrip1.Location = new System.Drawing.Point(0, 0);
|
||||
this.toolStrip1.Name = "toolStrip1";
|
||||
this.toolStrip1.Padding = new System.Windows.Forms.Padding(0, 0, 3, 0);
|
||||
this.toolStrip1.Size = new System.Drawing.Size(1008, 38);
|
||||
this.toolStrip1.TabIndex = 30;
|
||||
this.toolStrip1.Text = "toolStrip7";
|
||||
//
|
||||
// tbtnSave
|
||||
//
|
||||
this.tbtnSave.Image = ((System.Drawing.Image)(resources.GetObject("tbtnSave.Image")));
|
||||
this.tbtnSave.ImageTransparentColor = System.Drawing.Color.Magenta;
|
||||
this.tbtnSave.Name = "tbtnSave";
|
||||
this.tbtnSave.Size = new System.Drawing.Size(74, 33);
|
||||
this.tbtnSave.Text = "保存";
|
||||
this.tbtnSave.Click += new System.EventHandler(this.tbtnSave_Click);
|
||||
//
|
||||
// tssSave
|
||||
//
|
||||
this.tssSave.Name = "tssSave";
|
||||
this.tssSave.Size = new System.Drawing.Size(6, 38);
|
||||
//
|
||||
// tbtnExport
|
||||
//
|
||||
this.tbtnExport.Image = ((System.Drawing.Image)(resources.GetObject("tbtnExport.Image")));
|
||||
this.tbtnExport.ImageTransparentColor = System.Drawing.Color.Magenta;
|
||||
this.tbtnExport.Name = "tbtnExport";
|
||||
this.tbtnExport.Size = new System.Drawing.Size(74, 33);
|
||||
this.tbtnExport.Text = "导出";
|
||||
this.tbtnExport.Click += new System.EventHandler(this.tbtnExport_Click);
|
||||
//
|
||||
// tbtnImport
|
||||
//
|
||||
this.tbtnImport.Image = ((System.Drawing.Image)(resources.GetObject("tbtnImport.Image")));
|
||||
this.tbtnImport.ImageTransparentColor = System.Drawing.Color.Magenta;
|
||||
this.tbtnImport.Name = "tbtnImport";
|
||||
this.tbtnImport.Size = new System.Drawing.Size(74, 33);
|
||||
this.tbtnImport.Text = "导入";
|
||||
this.tbtnImport.Click += new System.EventHandler(this.tbtnImport_Click);
|
||||
//
|
||||
// UIForLib
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(9F, 18F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.Controls.Add(this.propertyGrid1);
|
||||
this.Controls.Add(this.toolStrip1);
|
||||
this.Controls.Add(this.statusStrip1);
|
||||
this.Name = "UIForLib";
|
||||
this.Size = new System.Drawing.Size(1008, 621);
|
||||
this.statusStrip1.ResumeLayout(false);
|
||||
this.statusStrip1.PerformLayout();
|
||||
this.toolStrip1.ResumeLayout(false);
|
||||
this.toolStrip1.PerformLayout();
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
private System.Windows.Forms.StatusStrip statusStrip1;
|
||||
private System.Windows.Forms.ToolStripStatusLabel txtLog;
|
||||
private System.Windows.Forms.PropertyGrid propertyGrid1;
|
||||
private System.Windows.Forms.ToolStrip toolStrip1;
|
||||
private System.Windows.Forms.ToolStripButton tbtnSave;
|
||||
private System.Windows.Forms.ToolStripSeparator tssSave;
|
||||
private System.Windows.Forms.ToolStripButton tbtnExport;
|
||||
private System.Windows.Forms.ToolStripButton tbtnImport;
|
||||
}
|
||||
}
|
125
halftoneproject-master/AssistClient/UI/UIForLib.cs
Normal file
125
halftoneproject-master/AssistClient/UI/UIForLib.cs
Normal file
@ -0,0 +1,125 @@
|
||||
using Advantech.Motion;
|
||||
using Newtonsoft.Json;
|
||||
using AssistClient.Device;
|
||||
using AssistClient.Utils;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Security.Cryptography;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
using System.Xml.Linq;
|
||||
|
||||
namespace AssistClient.UI
|
||||
{
|
||||
public partial class UIForLib : UserControl
|
||||
{
|
||||
SynchronizationContext SyncContext = null;
|
||||
|
||||
public Action<string> GetParamsEvent;
|
||||
//
|
||||
private ForProp prop = new ForProp();
|
||||
public UIForLib()
|
||||
{
|
||||
InitializeComponent();
|
||||
propertyGrid1.PropertyValueChanged += propertyGrid1_PropertyValueChanged;
|
||||
|
||||
//获取UI线程同步上下文
|
||||
SyncContext = SynchronizationContext.Current;
|
||||
init();
|
||||
}
|
||||
public void init()
|
||||
{
|
||||
this.tbtnSave.Visible = tssSave.Visible = (GetParamsEvent != null);
|
||||
txtLog.Text = "";
|
||||
this.propertyGrid1.SelectedObject = prop;
|
||||
}
|
||||
public string getParamsData()
|
||||
{
|
||||
return prop.serialize();
|
||||
}
|
||||
public void setParamsData(string json)
|
||||
{
|
||||
if (json == "") return;
|
||||
prop.deserialize(json);
|
||||
this.propertyGrid1.Refresh();
|
||||
}
|
||||
|
||||
private void propertyGrid1_PropertyValueChanged(object s, PropertyValueChangedEventArgs e)
|
||||
{
|
||||
//其中包含了两个重要的属性:OldValue和ChangeItem。
|
||||
//ChangeItem是“PropertyDescriptorGridEntry”类型。一般可以通过ChangeItem.PropertyDescriptor.ComponentType查找到属性的实际类型。
|
||||
//而通过ChangeItem的Label,则可以查看到当前在属性编辑输入框中显示的值。
|
||||
|
||||
string className = e.ChangedItem.PropertyDescriptor.ComponentType.Name;
|
||||
string propertyName = e.ChangedItem.PropertyDescriptor.Name;
|
||||
var oldValue = e.OldValue;
|
||||
var newValue = e.ChangedItem.Value;
|
||||
switch (propertyName)
|
||||
{
|
||||
case "GotoStepIndex":
|
||||
if ((int)newValue < 1)
|
||||
{
|
||||
prop.GotoStepIndex = 1;
|
||||
this.refreshUI();
|
||||
}
|
||||
break;
|
||||
case "LimitNum":
|
||||
if ((int)newValue < 1)
|
||||
{
|
||||
prop.LimitNum = 1;
|
||||
this.refreshUI();
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
private void refreshUI()
|
||||
{
|
||||
SyncContext.Post(m =>
|
||||
{
|
||||
var result = m as string;
|
||||
propertyGrid1.Refresh();
|
||||
//tbtnJogOnOff.Text = (prop.AxState == AxisState.STA_AX_EXT_JOG) ? "关闭Jog" : "开启Jog";
|
||||
//tbtnLeft.Enabled = tbtnRight.Enabled = (prop.AxState == AxisState.STA_AX_EXT_JOG);
|
||||
}, "异步操作完成结果");
|
||||
|
||||
|
||||
}
|
||||
private void tbtnSave_Click(object sender, EventArgs e)
|
||||
{
|
||||
GetParamsEvent?.Invoke(prop.serialize());
|
||||
}
|
||||
|
||||
private void tbtnExport_Click(object sender, EventArgs e)
|
||||
{
|
||||
prop.UniqueId = DateTime.Now.Ticks;
|
||||
string filePath = FileUtil.saveAsFile($"For配置.json", "JSON|*.json");
|
||||
if (filePath != "")
|
||||
{
|
||||
string jsonText = prop.serialize();
|
||||
File.WriteAllText(filePath, jsonText);
|
||||
MessageBox.Show("保存成功!", "成功", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||||
}
|
||||
}
|
||||
|
||||
private void tbtnImport_Click(object sender, EventArgs e)
|
||||
{
|
||||
string filePath = FileUtil.openFile("JSON|*.json");
|
||||
if (filePath != "")
|
||||
{
|
||||
string jsonText = File.ReadAllText(filePath);
|
||||
prop.deserialize(jsonText);
|
||||
this.propertyGrid1.Refresh();
|
||||
//this.propertyGrid1.SelectedObject= prop;
|
||||
//MessageBox.Show("加载成功!", "成功", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
182
halftoneproject-master/AssistClient/UI/UIForLib.resx
Normal file
182
halftoneproject-master/AssistClient/UI/UIForLib.resx
Normal file
@ -0,0 +1,182 @@
|
||||
<?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="statusStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>166, 17</value>
|
||||
</metadata>
|
||||
<metadata name="toolStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>287, 17</value>
|
||||
</metadata>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="tbtnSave.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAIdSURBVFhH7ZdPaxNBGMbfIJQKlkK/QFHRi+BNS4t/LmLS
|
||||
D5Bj3O7OzO68qx6C38Cb6MXSD9CqWKHQL+BN2mOr4MFjb8WzUlqR/nlnmGx2zCTZ2SxCIA/82GRm3mef
|
||||
zL67SWAih2oQpw+IRmm4rANPbxk/DzWbU8CSzyDwvBI4vjTOBSXwTo/J6Dwy7gXE5f2skOEBfYJ3IJL3
|
||||
/sgNiPCH9lnBQ4jjWXOGIYrTe1kAjutmtJy4fJV5CbllRocoH0DIj2a0nIRc7Xppv8DMDFA+AMNNM1pc
|
||||
DEPauVi/5vjWCtDCI4jSeT3XV6MEaLcvU92ZrlXi+Cbz6hAluzRT0/NOjRIgimao7hdxrN9z+TrzspAv
|
||||
9LxTVg/gBzNaTGl6BVrhqa5VsprQYlvPO2UHGLCwj/Rta5pX4FrOq8vAnbUDqO1cMjN+Yniban/mvLp4
|
||||
BFCopvpO7NMD5utwaB3HbxCEf019L54Bqmc8AwTh71J07oo8XgGUiZDLwNhcKZLkBvnsWJ5+O0CNNaoE
|
||||
ppan5yX4Q139HES64A1L7pJfI/ta7jCeTVglngGO6RI8Af70pm4odSyKWh/Hi8DknuX5/5tQouXpvQNC
|
||||
tkCI6xDiNX38FzXugj+7SvX0I1c/ogsGyP8otVHfCX64HkIa+cmczSF16ziLqmRQgCCYpkVfeosqohWe
|
||||
0C7Xzdn6qNm8RIsfUj+4/3aVReBj3RcTWQK4AF41Zkfj/gngAAAAAElFTkSuQmCC
|
||||
</value>
|
||||
</data>
|
||||
<data name="tbtnExport.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAMlSURBVFhH5VZJaBRREC1cQD15cD8oCnoQRBFEEHG5iCCK
|
||||
Ry9uGBDBqLh7kEbMzK/OGAIeNDFowJiZ//8kBHITlSh4EndQEcXtoKDgBm4oalX/3z3d091ZTCcXHzym
|
||||
u+pV/eo/9RfIHMpdDhIlaDwCPc4oax0mSLEMmpzfNPgfyxvQ4c623mGAzJ8KDW5YEh9Auuutoh/Q9VNA
|
||||
id3eNEq8AlpcpURt0CFmWUU6FJ6MFeBTijqr6gVa1JD4fSyYqcQ5q4qjszCJ/POoAJ0Y61PhRU+bCIW7
|
||||
EoN8KnHAKg2kmE+2Roq7DUXnc2JMMl/RX7LSZrHQOJ2a51eV8KPpZrEPVH61VVKhhZnkK1ZpB0avUUWt
|
||||
zUhQwq0SdUNn3VTrrYCbSeOnKu2/U4oGk5iXS8XxGLQeaRwhKNwW0mRHb7CieBYYFO61Q1YgxdpIUJaE
|
||||
5ubR0H78ZWDgzSQMlZtI9uSVMVhyA8cLyC+yQxtocSYSlBWVuOx9XK8z0FGYAa34MxKYBYPmY1QXwIeJ
|
||||
D5U/FAlMo8TXNFO3oIhPEv0+zX6xwWa36K0AjdcCe4y5h/Qf7qeluRBUw1ijF5uStcSSuENTPtfTRZBW
|
||||
QFfj+OQdLvfOLMmEpapxe1xPlNgKrc4Yq6pCWgG6fkEkieElKLrTPH8SNC6N6HnHU7jTelOQVgD/hpNJ
|
||||
cd6z9wU+Uy7UvaGYm1DGJdYaBedWopP+spr0AspiRWDjI3kg6HbG2adkcMP6udNngI5Xfm/HL1DMTfZs
|
||||
WaGID7zcLc7XeAH+PsCd3YQ/aEqPeu9ZopS7H3xc6gwwFLZk/vUMiY+iBfAlIShArLEygPYTE+xTduDl
|
||||
q/F5pQDHGQE6/zQoQOMeKx0a8D2jzfnujcX7jAeFPaEC7hrjEIGvdv5YUrywxtiefzb98jgIKHcj5f4W
|
||||
jBNcdHnbbcO3gcOQ7gCiixrmGP3W0vtWmqnN9LylX2StEjso7jDxND3fs3kN+Q5ays8xBTD4psrLLiwa
|
||||
UtLBFUM5v5ic1+PiDMmbkHLX2RFTwIcK3w01IjVKgW5J9elEw3If1HiQPnBV4in6HwPgL5xLdn+vDCbd
|
||||
AAAAAElFTkSuQmCC
|
||||
</value>
|
||||
</data>
|
||||
<data name="tbtnImport.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAMvSURBVFhH7VfNaxNREE9FVFQUq2m7u9mkn6YEIn6Agpd6
|
||||
afGmhyL4D4gIolBrd99mu5g2asWLIPQkehBRqOBVD9qLiF4sgiCiXgTFw9aPtqRpsvN8bzOvTdrNbtoE
|
||||
QegPhmx+b2beb+fNziahUigGPSYR57kylP/SouU/VjJJy39SSP69osM+DK0dkgZ9Msl9Vwil1ZpMYBDD
|
||||
a4Ocgrg0mPuGie8pxBlRdGdUJk6mkrH1tDREo5iiNrANnxXvyMkg9W+hnLUdLiCSgiRSnmhPQ1fMcG50
|
||||
WrADqRXYm6HdbSb0Mp++ZBqSlkU34FJlYOlZBeh+pDyhGs6E65tyniDlImFBYyzljKha/kPEKOaKcGPX
|
||||
vGHZ2ljius9xCQESgYNIeYId1VPh22rAec51WPSkZCz2z+Lmpd+5qZdmZ2ImXHQTLYdwChKgmoVXi0kv
|
||||
z/2OGs64uOMgY9V1P1k1Jo7fgs2YsgjhFCQgYhTeCt/VGhcqKhM16GTIohsxbfUCWkhhSvjWaqyf7vQI
|
||||
EYIMPALWZKVJqrEmIzutksKbiFZ4KemFdxFjZlasqew43MSC8BPAz201k5Ilf9FmQX/yGt2FKVy0ZaC5
|
||||
fRhOR1POw6hJz7ikCPITIFl0q6LnfpRu4mWNhj3fKhJXCxFcq4DwOTsXH4GjGFI9RIKAIwhHU0vn52ls
|
||||
orIJ6P2sh2gDXqyESOAnoOcm3bPzws9s0HPP1xOjcBjDimDjWGaNyAbZbWTKIYL9BIQobWDdPCUGip/x
|
||||
p6XnLt2CkaGwRbdznj8FSJVDBPoKYIinIa6azmPZyH+WDHtBxHlZq+mMYpgrgPcHrwJS5RBBQQIE+Bsu
|
||||
YdEof+vFUjDAxut9Xh3VmPuzNO2cR+hefwGV0H0VdneZcKTDglOdGQgj/e8EVMK6gHUB/48AeQgOIFVX
|
||||
NA/AtkZiz/sIsIELCPpZvlawobVJIvaCpBVeI1UONt8n3SroQJCqKyQdeov5nQdIlUPS6KGwlrXRaVzW
|
||||
IcVsuGYjYLI34JhE6C+em///xC1XgjXgiSaSnXZF1Nl4+ZmQK7hVZbAj6G8iC1+9kqzV3LvXqYZbLEMo
|
||||
9Bdq9jSt+sit4QAAAABJRU5ErkJggg==
|
||||
</value>
|
||||
</data>
|
||||
</root>
|
177
halftoneproject-master/AssistClient/UI/UIHeightDev.Designer.cs
generated
Normal file
177
halftoneproject-master/AssistClient/UI/UIHeightDev.Designer.cs
generated
Normal file
@ -0,0 +1,177 @@
|
||||
namespace AssistClient.UI
|
||||
{
|
||||
partial class UIHeightDev
|
||||
{
|
||||
/// <summary>
|
||||
/// 必需的设计器变量。
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// 清理所有正在使用的资源。
|
||||
/// </summary>
|
||||
/// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region 组件设计器生成的代码
|
||||
|
||||
/// <summary>
|
||||
/// 设计器支持所需的方法 - 不要修改
|
||||
/// 使用代码编辑器修改此方法的内容。
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(UIHeightDev));
|
||||
this.toolStrip1 = new System.Windows.Forms.ToolStrip();
|
||||
this.tsbtnOpenDev = new System.Windows.Forms.ToolStripButton();
|
||||
this.tbtnSave = new System.Windows.Forms.ToolStripButton();
|
||||
this.tssSave = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.tbtnRun = new System.Windows.Forms.ToolStripButton();
|
||||
this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.tbtnExport = new System.Windows.Forms.ToolStripButton();
|
||||
this.tbtnImport = new System.Windows.Forms.ToolStripButton();
|
||||
this.propertyGrid1 = new System.Windows.Forms.PropertyGrid();
|
||||
this.statusStrip1 = new System.Windows.Forms.StatusStrip();
|
||||
this.txtLog = new System.Windows.Forms.ToolStripStatusLabel();
|
||||
this.toolStrip1.SuspendLayout();
|
||||
this.statusStrip1.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// toolStrip1
|
||||
//
|
||||
this.toolStrip1.ImageScalingSize = new System.Drawing.Size(24, 24);
|
||||
this.toolStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.tsbtnOpenDev,
|
||||
this.tbtnSave,
|
||||
this.tssSave,
|
||||
this.tbtnRun,
|
||||
this.toolStripSeparator1,
|
||||
this.tbtnExport,
|
||||
this.tbtnImport});
|
||||
this.toolStrip1.Location = new System.Drawing.Point(0, 0);
|
||||
this.toolStrip1.Name = "toolStrip1";
|
||||
this.toolStrip1.Size = new System.Drawing.Size(1008, 38);
|
||||
this.toolStrip1.TabIndex = 26;
|
||||
this.toolStrip1.Text = "toolStrip7";
|
||||
//
|
||||
// tsbtnOpenDev
|
||||
//
|
||||
this.tsbtnOpenDev.Image = ((System.Drawing.Image)(resources.GetObject("tsbtnOpenDev.Image")));
|
||||
this.tsbtnOpenDev.ImageTransparentColor = System.Drawing.Color.Magenta;
|
||||
this.tsbtnOpenDev.Name = "tsbtnOpenDev";
|
||||
this.tsbtnOpenDev.Size = new System.Drawing.Size(110, 33);
|
||||
this.tsbtnOpenDev.Text = "打开设备";
|
||||
this.tsbtnOpenDev.Click += new System.EventHandler(this.tsbtnOpenDev_Click);
|
||||
//
|
||||
// tbtnSave
|
||||
//
|
||||
this.tbtnSave.Image = ((System.Drawing.Image)(resources.GetObject("tbtnSave.Image")));
|
||||
this.tbtnSave.ImageTransparentColor = System.Drawing.Color.Magenta;
|
||||
this.tbtnSave.Name = "tbtnSave";
|
||||
this.tbtnSave.Size = new System.Drawing.Size(74, 33);
|
||||
this.tbtnSave.Text = "保存";
|
||||
this.tbtnSave.Click += new System.EventHandler(this.tbtnSave_Click);
|
||||
//
|
||||
// tssSave
|
||||
//
|
||||
this.tssSave.Name = "tssSave";
|
||||
this.tssSave.Size = new System.Drawing.Size(6, 38);
|
||||
//
|
||||
// tbtnRun
|
||||
//
|
||||
this.tbtnRun.Image = ((System.Drawing.Image)(resources.GetObject("tbtnRun.Image")));
|
||||
this.tbtnRun.ImageTransparentColor = System.Drawing.Color.Magenta;
|
||||
this.tbtnRun.Name = "tbtnRun";
|
||||
this.tbtnRun.Size = new System.Drawing.Size(74, 33);
|
||||
this.tbtnRun.Text = "执行";
|
||||
this.tbtnRun.Click += new System.EventHandler(this.tbtnRun_Click);
|
||||
//
|
||||
// toolStripSeparator1
|
||||
//
|
||||
this.toolStripSeparator1.Name = "toolStripSeparator1";
|
||||
this.toolStripSeparator1.Size = new System.Drawing.Size(6, 38);
|
||||
//
|
||||
// tbtnExport
|
||||
//
|
||||
this.tbtnExport.Image = ((System.Drawing.Image)(resources.GetObject("tbtnExport.Image")));
|
||||
this.tbtnExport.ImageTransparentColor = System.Drawing.Color.Magenta;
|
||||
this.tbtnExport.Name = "tbtnExport";
|
||||
this.tbtnExport.Size = new System.Drawing.Size(74, 33);
|
||||
this.tbtnExport.Text = "导出";
|
||||
this.tbtnExport.Click += new System.EventHandler(this.tbtnExport_Click);
|
||||
//
|
||||
// tbtnImport
|
||||
//
|
||||
this.tbtnImport.Image = ((System.Drawing.Image)(resources.GetObject("tbtnImport.Image")));
|
||||
this.tbtnImport.ImageTransparentColor = System.Drawing.Color.Magenta;
|
||||
this.tbtnImport.Name = "tbtnImport";
|
||||
this.tbtnImport.Size = new System.Drawing.Size(74, 33);
|
||||
this.tbtnImport.Text = "导入";
|
||||
this.tbtnImport.Click += new System.EventHandler(this.tbtnImport_Click);
|
||||
//
|
||||
// propertyGrid1
|
||||
//
|
||||
this.propertyGrid1.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.propertyGrid1.LineColor = System.Drawing.SystemColors.ActiveCaption;
|
||||
this.propertyGrid1.Location = new System.Drawing.Point(0, 38);
|
||||
this.propertyGrid1.Name = "propertyGrid1";
|
||||
this.propertyGrid1.Size = new System.Drawing.Size(1008, 561);
|
||||
this.propertyGrid1.TabIndex = 33;
|
||||
this.propertyGrid1.ToolbarVisible = false;
|
||||
//
|
||||
// statusStrip1
|
||||
//
|
||||
this.statusStrip1.ImageScalingSize = new System.Drawing.Size(24, 24);
|
||||
this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.txtLog});
|
||||
this.statusStrip1.Location = new System.Drawing.Point(0, 599);
|
||||
this.statusStrip1.Name = "statusStrip1";
|
||||
this.statusStrip1.Size = new System.Drawing.Size(1008, 22);
|
||||
this.statusStrip1.TabIndex = 32;
|
||||
this.statusStrip1.Text = "statusStrip1";
|
||||
//
|
||||
// txtLog
|
||||
//
|
||||
this.txtLog.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(0)))), ((int)(((byte)(0)))));
|
||||
this.txtLog.Name = "txtLog";
|
||||
this.txtLog.Size = new System.Drawing.Size(0, 15);
|
||||
//
|
||||
// UIHeightDev
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(9F, 18F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.Controls.Add(this.propertyGrid1);
|
||||
this.Controls.Add(this.statusStrip1);
|
||||
this.Controls.Add(this.toolStrip1);
|
||||
this.Name = "UIHeightDev";
|
||||
this.Size = new System.Drawing.Size(1008, 621);
|
||||
this.toolStrip1.ResumeLayout(false);
|
||||
this.toolStrip1.PerformLayout();
|
||||
this.statusStrip1.ResumeLayout(false);
|
||||
this.statusStrip1.PerformLayout();
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
private System.Windows.Forms.ToolStrip toolStrip1;
|
||||
private System.Windows.Forms.ToolStripButton tbtnRun;
|
||||
private System.Windows.Forms.ToolStripButton tbtnExport;
|
||||
private System.Windows.Forms.ToolStripButton tbtnImport;
|
||||
private System.Windows.Forms.ToolStripSeparator toolStripSeparator1;
|
||||
private System.Windows.Forms.PropertyGrid propertyGrid1;
|
||||
private System.Windows.Forms.StatusStrip statusStrip1;
|
||||
private System.Windows.Forms.ToolStripStatusLabel txtLog;
|
||||
private System.Windows.Forms.ToolStripButton tbtnSave;
|
||||
private System.Windows.Forms.ToolStripSeparator tssSave;
|
||||
private System.Windows.Forms.ToolStripButton tsbtnOpenDev;
|
||||
}
|
||||
}
|
192
halftoneproject-master/AssistClient/UI/UIHeightDev.cs
Normal file
192
halftoneproject-master/AssistClient/UI/UIHeightDev.cs
Normal file
@ -0,0 +1,192 @@
|
||||
using Advantech.Motion;
|
||||
using Newtonsoft.Json;
|
||||
using AssistClient.Device;
|
||||
using AssistClient.Utils;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
using System.Xml.Linq;
|
||||
|
||||
namespace AssistClient.UI
|
||||
{
|
||||
public partial class UIHeightDev : UserControl
|
||||
{
|
||||
SynchronizationContext SyncContext = null;
|
||||
|
||||
public Action<string> GetParamsEvent;
|
||||
|
||||
//
|
||||
private HeightDevProp prop = new HeightDevProp(Config.HeightDev_IP,Config.HeightDev_Port);
|
||||
private HeightDev dev;
|
||||
public UIHeightDev()
|
||||
{
|
||||
InitializeComponent();
|
||||
propertyGrid1.PropertyValueChanged += propertyGrid1_PropertyValueChanged;
|
||||
refreshUIState();
|
||||
//获取UI线程同步上下文
|
||||
SyncContext = SynchronizationContext.Current;
|
||||
//init();
|
||||
}
|
||||
private void refreshUIState()
|
||||
{
|
||||
foreach (ToolStripItem item in this.toolStrip1.Items)
|
||||
{
|
||||
if (item.Text == "打开设备")
|
||||
item.Visible = (dev == null || !dev.IsInit);
|
||||
else
|
||||
this.propertyGrid1.Enabled = item.Enabled = !(dev == null || !dev.IsInit);
|
||||
}
|
||||
}
|
||||
public void init()
|
||||
{
|
||||
this.tbtnSave.Visible = tssSave.Visible = (GetParamsEvent != null);
|
||||
this.propertyGrid1.SelectedObject = prop;
|
||||
dev = new HeightDev(true);
|
||||
dev.WarningEvent = (level, info) =>
|
||||
{
|
||||
txtLog.Text = $"({level}){info}";
|
||||
};
|
||||
//DATA
|
||||
dev.HeightEvent += new System.Action<double>((value) =>
|
||||
{
|
||||
prop.HeightValue = value;
|
||||
this.refreshUI();
|
||||
});
|
||||
|
||||
if (!dev.start(prop.IP, prop.Port))
|
||||
{
|
||||
this.closeDev();
|
||||
return;
|
||||
}
|
||||
refreshUIState();
|
||||
|
||||
}
|
||||
public string getParamsData()
|
||||
{
|
||||
return prop.serialize();
|
||||
}
|
||||
public void setParamsData(string json)
|
||||
{
|
||||
if (json == "") return;
|
||||
prop.deserialize(json);
|
||||
this.propertyGrid1.Refresh();
|
||||
}
|
||||
private void refreshUI()
|
||||
{
|
||||
SyncContext.Post(m =>
|
||||
{
|
||||
var result = m as string;
|
||||
propertyGrid1.Refresh();
|
||||
//tbtnJogOnOff.Text = (prop.AxState == AxisState.STA_AX_EXT_JOG) ? "关闭Jog" : "开启Jog";
|
||||
//tbtnLeft.Enabled = tbtnRight.Enabled = (prop.AxState == AxisState.STA_AX_EXT_JOG);
|
||||
}, "异步操作完成结果");
|
||||
|
||||
|
||||
}
|
||||
|
||||
private void closeDev()
|
||||
{
|
||||
try
|
||||
{
|
||||
if (dev == null)
|
||||
return;
|
||||
dev.stop();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
refreshUIState();
|
||||
MessageBox.Show(ex.Message, "失败", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
}
|
||||
}
|
||||
|
||||
protected override void OnHandleDestroyed(EventArgs e)
|
||||
{
|
||||
base.OnHandleDestroyed(e);
|
||||
// 在此添加需要手动释放资源的代码
|
||||
this.closeDev();
|
||||
}
|
||||
|
||||
private void tbtnRun_Click(object sender, EventArgs e)
|
||||
{
|
||||
try
|
||||
{
|
||||
//var res=dev.setDigitalValue(prop.ChannelIndex, prop.DigitalValue);
|
||||
//if (!res)
|
||||
// throw new Exception("设置失败!");
|
||||
}
|
||||
catch(Exception ex)
|
||||
{
|
||||
MessageBox.Show(ex.Message, "失败", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
}
|
||||
}
|
||||
|
||||
private void tbtnExport_Click(object sender, EventArgs e)
|
||||
{
|
||||
string filePath = FileUtil.saveAsFile($"Light配置.json", "JSON|*.json");
|
||||
if (filePath != "")
|
||||
{
|
||||
string jsonText = prop.serialize();
|
||||
File.WriteAllText(filePath, jsonText);
|
||||
MessageBox.Show("保存成功!", "成功", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||||
}
|
||||
}
|
||||
|
||||
private void tbtnImport_Click(object sender, EventArgs e)
|
||||
{
|
||||
string filePath = FileUtil.openFile("JSON|*.json");
|
||||
if (filePath != "")
|
||||
{
|
||||
string jsonText = File.ReadAllText(filePath);
|
||||
prop.deserialize(jsonText);
|
||||
this.propertyGrid1.Refresh();
|
||||
//this.propertyGrid1.SelectedObject= prop;
|
||||
//MessageBox.Show("加载成功!", "成功", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||||
}
|
||||
}
|
||||
|
||||
private void propertyGrid1_PropertyValueChanged(object s, PropertyValueChangedEventArgs e)
|
||||
{
|
||||
//其中包含了两个重要的属性:OldValue和ChangeItem。
|
||||
//ChangeItem是“PropertyDescriptorGridEntry”类型。一般可以通过ChangeItem.PropertyDescriptor.ComponentType查找到属性的实际类型。
|
||||
//而通过ChangeItem的Label,则可以查看到当前在属性编辑输入框中显示的值。
|
||||
|
||||
string className = e.ChangedItem.PropertyDescriptor.ComponentType.Name;
|
||||
string propertyName = e.ChangedItem.PropertyDescriptor.Name;
|
||||
var oldValue = e.OldValue;
|
||||
var newValue = e.ChangedItem.Value;
|
||||
switch (propertyName)
|
||||
{
|
||||
//case "ChannelIndex":
|
||||
// if((int)newValue <1 || (int)newValue >4)
|
||||
// {
|
||||
// prop.ChannelIndex = (int)oldValue;
|
||||
// this.refreshUI();
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// dev.getDigitalValue((int)newValue);
|
||||
// }
|
||||
// break;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void tbtnSave_Click(object sender, EventArgs e)
|
||||
{
|
||||
GetParamsEvent?.Invoke(prop.serialize());
|
||||
}
|
||||
|
||||
private void tsbtnOpenDev_Click(object sender, EventArgs e)
|
||||
{
|
||||
this.init();
|
||||
}
|
||||
}
|
||||
}
|
230
halftoneproject-master/AssistClient/UI/UIHeightDev.resx
Normal file
230
halftoneproject-master/AssistClient/UI/UIHeightDev.resx
Normal file
@ -0,0 +1,230 @@
|
||||
<?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="toolStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>17, 17</value>
|
||||
</metadata>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="tsbtnOpenDev.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
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
|
||||
n+ABAf8Cp5CdYvXLdKIAAAAASUVORK5CYII=
|
||||
</value>
|
||||
</data>
|
||||
<data name="tbtnSave.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAIcSURBVFhH7ZdNaxNBGMefIpQKlkK/QLFiL4I3Wyx9uYhJ
|
||||
P0COZtt52Z1ntYfiN+hN9KL4AXzDFgS/gDepR2uhB4+9Fc+W0oqofWaYbHaaSbKzWYRA/vBjk5l5/vvP
|
||||
7LObBEbyaAzidIWol0aoGoj0lvULUKMxDjz5BBL/VYLAbetcUBLvdJgMzj3rXkBCLWeFHI/oE7wBmbwN
|
||||
R70Ght+NzzoeQxxP2TP0UZwuZQEEvrKj5STUk8xLqg92tI/yAaR6b0fLSaoXbS/jF9mZHsoH4LhjR4uL
|
||||
4wbtXGxeC3zuBGjiKbB0xsx11SABtrauUt1fU6sl8Fnm1YIlX2hmzMx7NUgAxiap7idxZt4L9TTzclCP
|
||||
zbxXTg/gOztaTGl6DZrsj6nVcprQ4aOZ98oN0GNhF5nb1javxJc5rzY9d9YNoLdz0c6EieNtqv2R82oT
|
||||
EECjm+qQ2KcHzLf+0DqBBxCx37a+k8AA1TOcASJ2UorWXZEnKIA2kWoNOJ8uRZLcJJ89xzNsB6ixBpXE
|
||||
1PEMvAS/qKs3QaYLwfBknvzq2ddyi+FswioJDHBGl6AJ4uGcaSh9LIpeH8d3gauvjuf/b0KFjmfwDkj1
|
||||
AKS8ARs4a46X0eM+xKPrVE8/cs0jumCA/I9SF/2dEIbvIWRQu/ZsHulbx1tUJb0CRNEELfrcWVQRTXZO
|
||||
u1yzZ+uiRuMKLV6lfvD/7SqLxPumL0ZyBHABC1BmYPLlTLYAAAAASUVORK5CYII=
|
||||
</value>
|
||||
</data>
|
||||
<data name="tbtnRun.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAHnSURBVFhH7dfZK4RRGAbwzxKSklJKuVAuXCgXLlwoF8qF
|
||||
Ev8Dg7GPfTf29d6fYd93Yx3bMDdISkqJZM8Yy8PRyPK9M987U74b3um5/j3nm3NOHel/fk6HOUnfYU5E
|
||||
+3YC2rbj0bYVh1ZTLFpMMWjejEbTRhQaNyLRsB6B+rVw1K2FQb8ailpjCGqMwaheCULVciAqlwNQseSP
|
||||
8kU/lC/4omzBB6UGL72NoafTnIxfw+e9UWLwQvGcJ2zc9/nVlX/Bi2Y9UDjtLv8SquEz7ih4i439HDVx
|
||||
3bSbvAAX372YxMe4iuumqALMlb/8+LmC509K8gLcz/6CJ1mcxfMmiALc//wZVjLO4LnjRAHuhnuCxW64
|
||||
eM4YUYCDiw33iDuH4eDZo0QBDi42nBU3ilHCs0aIAhxc7PYHXLLiCM8cJgpwcLHbLThnxx6uHSIKcHBx
|
||||
1O5xyo49XDtIFODg4qjd4YQVR3jGAFGAg4tzfotjxSjh6VQBDi7O+Q2OHIaDp/cTBTi4uGSucWg3XDyt
|
||||
jyjAwcUlc4UDMs7gGqoABxc33CX2ZXEW1/QSBTi4uOEusPctruCpPUQBDi6uV+NZ1xu88x5XcboAA1e6
|
||||
Xrk4WUBNnCwgHg1q4SndEv1AUQMXsXH0iEeD6iv/wyNJrzzCmH5Y8iSuAAAAAElFTkSuQmCC
|
||||
</value>
|
||||
</data>
|
||||
<data name="tbtnExport.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAMlSURBVFhH5VZJaBRREC1cQD15cD8oCnoQRBFEEHG5iCCK
|
||||
Ry9uGBDBqLh7kEbMzK/OGAIelDFowJiZ//8kBHITlSh4EndQEcXtoKDgBm4oalX/3z3d091ZTCcXHzym
|
||||
u+pV/eo/9RfIHMpdDhIlaDwCPc4oax0mSLEMis5vGvyP5Q3ocGdb7zBA5k+FBjcsiw8g3fVW0Q/oximg
|
||||
xG5vGiVeAS2uUqI26BCzrCIdCk/GCvApRYNV9QIt6kj8PhbMVOKcVcXRWZhE/nlUgE6M9anwoqdNhMJd
|
||||
iUE+lThglQZSzCdbM8XdhpLzOTEmma/oL1lps1honE7N86tG+NF0s9gHKr/aKqnQwkzylWq0A6PXqKLe
|
||||
ZiQo4daIuqGzYar1VsHNpPFTjfbfKUWTSczLpep4DFqPNI4QFG4LabKjN1hJPAsMCvfaIauQYm0kKEtC
|
||||
sTga2o+/DAy8mYShchPJnrwyBktu4HgB+UV2aAMtzkSCsqISl72P63UGOgozoBV/RgKzYNB8jNoC+DDx
|
||||
ofKHIoFplPiaZuoWlPBJot+n2S822OwWvRWg8VpgjzH3kP7D/bQ0F4JqGmv0YlOyllgWd2jK53q6CNIK
|
||||
6Goen7zD5d6ZJZmwVDVuj+uJEluh1RljVTVIK0A3LogkMbwEJXea50+CxqURPe94CndabwrSCuDfcDIp
|
||||
znv2vsBnyoWGNxRzEyq4xFqj4NxKdNJfVpdeQEWsCGx8JA8E3c44+5QMblg/d/oM0PHK7+34BUq5yZ4t
|
||||
K5TwgZe7xfkaL8DfB7izi/iDpvSo954lyrn7wcelzgBDYUvmX8+Q+ChaAF8SggLEGisDaD8xwT5lB16+
|
||||
Gp9XC3CcEaDzT4MCNO6x0qEB3zPanO/eWLzPeFDYEyrgrjEOEfhq548lxQtrjO35Z9Mvj4OAcjdS7m/B
|
||||
OMFFl7fdNnwbOAzpDiC6qGGO0W89vW+lmdpMz1v6RdYqsYPiDhNP0/M9m9eQ76Dl/BxTAINvqrzswqIh
|
||||
JR1cMVTyi8l5PS7OkLwJKXedHTEFfKjw3VAjUqMU6JbUmE40rPRBjQfpA1clnqL/MQD+Atfvdob4v0Iq
|
||||
AAAAAElFTkSuQmCC
|
||||
</value>
|
||||
</data>
|
||||
<data name="tbtnImport.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAMvSURBVFhH7VfNaxNREE9FVFQUq2m7u9mkn6YEIn6Agpd6
|
||||
afGmhyL4DwgKolBrd9/udjFt1IoXQehJ9CCiUMGrHrQXEb1YBEFEvQiKB9ePtqRpsvN8bzOvTdpkN21C
|
||||
QegPhmx+b2beb+fNziahYigGPSYR97kylPvSouU+VjJJy31SSO69osM+DK0dkgZ9Msl+Vwil1ZpMYBDD
|
||||
a4NsQlwazH7DxPcU4o4oujsqEzddydh6ShqiUUxRG9iGzwp35KaRWlsoZx2XC4iYkESqLNpT0BUz3Bud
|
||||
NuxAahn2pml3mwW9zKcvmYKkbdMNuFQZWHpWAbofqbJQDXfC8zXdJ0h5SNjQGDPdEVXLfYgYhVwRbuya
|
||||
NyxbG0tc9zkuIUAicBCpsmBH9VT4thpwnnMdNj0pGQv9s7B58Xdu6qWZ6ZgFF71ESyGcggSoVv7VQtLL
|
||||
s3+ihjsu7jjIWHW9T1aNieO3YDOmLEA4BQmIGPm3wnelxoWKykQNOhmy6UZMW72AFpKfEr61GuunOz1C
|
||||
hCADj4A1WXGSaqzJyDgqyb+JaPmXkp5/FzGmZ8Sayo7DSywIPwH83FYyKVnyF2029Cev0V2YwkNbGprb
|
||||
h+F01HQfRi16xiNFkJ8AyaZbFT37o3iTctZoOHOtInG1EMG1Cgifc7LxETiKIdVDJAg4gnDUXDy/ssYm
|
||||
KpuA5Z/1EG3Ai+UQCfwE9Nyke3Ze+JUJeu75emIUDmNYAWwcy6wR2SC7jUwpRLCfgBClDaybp8RA8TP+
|
||||
tPTcpVswMhS26XbO86cAqVKIQF8BDPEUxFXLfSwbuc+S4cyLuHLWarmjGOYJ4P3Bq4BUKURQkAAB/oZL
|
||||
2DTK33oxEwbYeL3Pq6Mas38Xp537CN3rL6ASuq/C7i4LjnTYcKozDWGk105AJawLWBfw/wiQh+AAUnVF
|
||||
8wBsayTOnI8AB7iAoJ/lqwUbWpsk4sxLWv41UqVg833Sq4IOBKm6QtKht5DffYBUKSSNHgprmZ/oNC7r
|
||||
YDIbrtkIWOwNOCYR+pvn5v8/ccvlYA14oolkHE9EnY2Xnwm5gltVBjuC/iYy/7VcktWad/c61XCLJQiF
|
||||
/gHo7zTBoXgqhgAAAABJRU5ErkJggg==
|
||||
</value>
|
||||
</data>
|
||||
<metadata name="statusStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>498, 17</value>
|
||||
</metadata>
|
||||
</root>
|
148
halftoneproject-master/AssistClient/UI/UIIFLib.Designer.cs
generated
Normal file
148
halftoneproject-master/AssistClient/UI/UIIFLib.Designer.cs
generated
Normal file
@ -0,0 +1,148 @@
|
||||
namespace AssistClient.UI
|
||||
{
|
||||
partial class UIIFLib
|
||||
{
|
||||
/// <summary>
|
||||
/// 必需的设计器变量。
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// 清理所有正在使用的资源。
|
||||
/// </summary>
|
||||
/// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region 组件设计器生成的代码
|
||||
|
||||
/// <summary>
|
||||
/// 设计器支持所需的方法 - 不要修改
|
||||
/// 使用代码编辑器修改此方法的内容。
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(UIIFLib));
|
||||
this.statusStrip1 = new System.Windows.Forms.StatusStrip();
|
||||
this.txtLog = new System.Windows.Forms.ToolStripStatusLabel();
|
||||
this.propertyGrid1 = new System.Windows.Forms.PropertyGrid();
|
||||
this.toolStrip1 = new System.Windows.Forms.ToolStrip();
|
||||
this.tbtnSave = new System.Windows.Forms.ToolStripButton();
|
||||
this.tssSave = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.tbtnExport = new System.Windows.Forms.ToolStripButton();
|
||||
this.tbtnImport = new System.Windows.Forms.ToolStripButton();
|
||||
this.statusStrip1.SuspendLayout();
|
||||
this.toolStrip1.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// statusStrip1
|
||||
//
|
||||
this.statusStrip1.ImageScalingSize = new System.Drawing.Size(24, 24);
|
||||
this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.txtLog});
|
||||
this.statusStrip1.Location = new System.Drawing.Point(0, 599);
|
||||
this.statusStrip1.Name = "statusStrip1";
|
||||
this.statusStrip1.Padding = new System.Windows.Forms.Padding(2, 0, 14, 0);
|
||||
this.statusStrip1.Size = new System.Drawing.Size(1008, 22);
|
||||
this.statusStrip1.TabIndex = 28;
|
||||
this.statusStrip1.Text = "statusStrip1";
|
||||
//
|
||||
// txtLog
|
||||
//
|
||||
this.txtLog.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(0)))), ((int)(((byte)(0)))));
|
||||
this.txtLog.Name = "txtLog";
|
||||
this.txtLog.Size = new System.Drawing.Size(0, 15);
|
||||
//
|
||||
// propertyGrid1
|
||||
//
|
||||
this.propertyGrid1.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.propertyGrid1.LineColor = System.Drawing.SystemColors.ActiveCaption;
|
||||
this.propertyGrid1.Location = new System.Drawing.Point(0, 38);
|
||||
this.propertyGrid1.Name = "propertyGrid1";
|
||||
this.propertyGrid1.Size = new System.Drawing.Size(1008, 561);
|
||||
this.propertyGrid1.TabIndex = 31;
|
||||
this.propertyGrid1.ToolbarVisible = false;
|
||||
this.propertyGrid1.PropertyValueChanged += new System.Windows.Forms.PropertyValueChangedEventHandler(this.propertyGrid1_PropertyValueChanged);
|
||||
//
|
||||
// toolStrip1
|
||||
//
|
||||
this.toolStrip1.ImageScalingSize = new System.Drawing.Size(24, 24);
|
||||
this.toolStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.tbtnSave,
|
||||
this.tssSave,
|
||||
this.tbtnExport,
|
||||
this.tbtnImport});
|
||||
this.toolStrip1.Location = new System.Drawing.Point(0, 0);
|
||||
this.toolStrip1.Name = "toolStrip1";
|
||||
this.toolStrip1.Padding = new System.Windows.Forms.Padding(0, 0, 3, 0);
|
||||
this.toolStrip1.Size = new System.Drawing.Size(1008, 38);
|
||||
this.toolStrip1.TabIndex = 30;
|
||||
this.toolStrip1.Text = "toolStrip7";
|
||||
//
|
||||
// tbtnSave
|
||||
//
|
||||
this.tbtnSave.Image = ((System.Drawing.Image)(resources.GetObject("tbtnSave.Image")));
|
||||
this.tbtnSave.ImageTransparentColor = System.Drawing.Color.Magenta;
|
||||
this.tbtnSave.Name = "tbtnSave";
|
||||
this.tbtnSave.Size = new System.Drawing.Size(74, 33);
|
||||
this.tbtnSave.Text = "保存";
|
||||
this.tbtnSave.Click += new System.EventHandler(this.tbtnSave_Click);
|
||||
//
|
||||
// tssSave
|
||||
//
|
||||
this.tssSave.Name = "tssSave";
|
||||
this.tssSave.Size = new System.Drawing.Size(6, 38);
|
||||
//
|
||||
// tbtnExport
|
||||
//
|
||||
this.tbtnExport.Image = ((System.Drawing.Image)(resources.GetObject("tbtnExport.Image")));
|
||||
this.tbtnExport.ImageTransparentColor = System.Drawing.Color.Magenta;
|
||||
this.tbtnExport.Name = "tbtnExport";
|
||||
this.tbtnExport.Size = new System.Drawing.Size(74, 33);
|
||||
this.tbtnExport.Text = "导出";
|
||||
this.tbtnExport.Click += new System.EventHandler(this.tbtnExport_Click);
|
||||
//
|
||||
// tbtnImport
|
||||
//
|
||||
this.tbtnImport.Image = ((System.Drawing.Image)(resources.GetObject("tbtnImport.Image")));
|
||||
this.tbtnImport.ImageTransparentColor = System.Drawing.Color.Magenta;
|
||||
this.tbtnImport.Name = "tbtnImport";
|
||||
this.tbtnImport.Size = new System.Drawing.Size(74, 33);
|
||||
this.tbtnImport.Text = "导入";
|
||||
this.tbtnImport.Click += new System.EventHandler(this.tbtnImport_Click);
|
||||
//
|
||||
// UIIFLib
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(9F, 18F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.Controls.Add(this.propertyGrid1);
|
||||
this.Controls.Add(this.toolStrip1);
|
||||
this.Controls.Add(this.statusStrip1);
|
||||
this.Name = "UIIFLib";
|
||||
this.Size = new System.Drawing.Size(1008, 621);
|
||||
this.statusStrip1.ResumeLayout(false);
|
||||
this.statusStrip1.PerformLayout();
|
||||
this.toolStrip1.ResumeLayout(false);
|
||||
this.toolStrip1.PerformLayout();
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
private System.Windows.Forms.StatusStrip statusStrip1;
|
||||
private System.Windows.Forms.ToolStripStatusLabel txtLog;
|
||||
private System.Windows.Forms.PropertyGrid propertyGrid1;
|
||||
private System.Windows.Forms.ToolStrip toolStrip1;
|
||||
private System.Windows.Forms.ToolStripButton tbtnSave;
|
||||
private System.Windows.Forms.ToolStripSeparator tssSave;
|
||||
private System.Windows.Forms.ToolStripButton tbtnExport;
|
||||
private System.Windows.Forms.ToolStripButton tbtnImport;
|
||||
}
|
||||
}
|
125
halftoneproject-master/AssistClient/UI/UIIFLib.cs
Normal file
125
halftoneproject-master/AssistClient/UI/UIIFLib.cs
Normal file
@ -0,0 +1,125 @@
|
||||
using Advantech.Motion;
|
||||
using Newtonsoft.Json;
|
||||
using AssistClient.Device;
|
||||
using AssistClient.Utils;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Security.Cryptography;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
using System.Xml.Linq;
|
||||
|
||||
namespace AssistClient.UI
|
||||
{
|
||||
public partial class UIIFLib : UserControl
|
||||
{
|
||||
SynchronizationContext SyncContext = null;
|
||||
|
||||
public Action<string> GetParamsEvent;
|
||||
//
|
||||
private IFProp prop = new IFProp();
|
||||
public UIIFLib()
|
||||
{
|
||||
InitializeComponent();
|
||||
propertyGrid1.PropertyValueChanged += propertyGrid1_PropertyValueChanged;
|
||||
|
||||
//获取UI线程同步上下文
|
||||
SyncContext = SynchronizationContext.Current;
|
||||
init();
|
||||
}
|
||||
public void init()
|
||||
{
|
||||
this.tbtnSave.Visible = tssSave.Visible = (GetParamsEvent != null);
|
||||
txtLog.Text = "";
|
||||
this.propertyGrid1.SelectedObject = prop;
|
||||
}
|
||||
public string getParamsData()
|
||||
{
|
||||
return prop.serialize();
|
||||
}
|
||||
public void setParamsData(string json)
|
||||
{
|
||||
if (json == "") return;
|
||||
prop.deserialize(json);
|
||||
this.propertyGrid1.Refresh();
|
||||
}
|
||||
|
||||
private void propertyGrid1_PropertyValueChanged(object s, PropertyValueChangedEventArgs e)
|
||||
{
|
||||
//其中包含了两个重要的属性:OldValue和ChangeItem。
|
||||
//ChangeItem是“PropertyDescriptorGridEntry”类型。一般可以通过ChangeItem.PropertyDescriptor.ComponentType查找到属性的实际类型。
|
||||
//而通过ChangeItem的Label,则可以查看到当前在属性编辑输入框中显示的值。
|
||||
|
||||
string className = e.ChangedItem.PropertyDescriptor.ComponentType.Name;
|
||||
string propertyName = e.ChangedItem.PropertyDescriptor.Name;
|
||||
var oldValue = e.OldValue;
|
||||
var newValue = e.ChangedItem.Value;
|
||||
switch (propertyName)
|
||||
{
|
||||
case "GotoStepIndex":
|
||||
if ((int)newValue < 1)
|
||||
{
|
||||
prop.GotoStepIndex = 1;
|
||||
this.refreshUI();
|
||||
}
|
||||
break;
|
||||
case "LimitNum":
|
||||
if ((int)newValue < 1)
|
||||
{
|
||||
prop.LimitNum = 1;
|
||||
this.refreshUI();
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
private void refreshUI()
|
||||
{
|
||||
SyncContext.Post(m =>
|
||||
{
|
||||
var result = m as string;
|
||||
propertyGrid1.Refresh();
|
||||
//tbtnJogOnOff.Text = (prop.AxState == AxisState.STA_AX_EXT_JOG) ? "关闭Jog" : "开启Jog";
|
||||
//tbtnLeft.Enabled = tbtnRight.Enabled = (prop.AxState == AxisState.STA_AX_EXT_JOG);
|
||||
}, "异步操作完成结果");
|
||||
|
||||
|
||||
}
|
||||
private void tbtnSave_Click(object sender, EventArgs e)
|
||||
{
|
||||
GetParamsEvent?.Invoke(prop.serialize());
|
||||
}
|
||||
|
||||
private void tbtnExport_Click(object sender, EventArgs e)
|
||||
{
|
||||
prop.UniqueId = DateTime.Now.Ticks;
|
||||
string filePath = FileUtil.saveAsFile($"IF配置.json", "JSON|*.json");
|
||||
if (filePath != "")
|
||||
{
|
||||
string jsonText = prop.serialize();
|
||||
File.WriteAllText(filePath, jsonText);
|
||||
MessageBox.Show("保存成功!", "成功", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||||
}
|
||||
}
|
||||
|
||||
private void tbtnImport_Click(object sender, EventArgs e)
|
||||
{
|
||||
string filePath = FileUtil.openFile("JSON|*.json");
|
||||
if (filePath != "")
|
||||
{
|
||||
string jsonText = File.ReadAllText(filePath);
|
||||
prop.deserialize(jsonText);
|
||||
this.propertyGrid1.Refresh();
|
||||
//this.propertyGrid1.SelectedObject= prop;
|
||||
//MessageBox.Show("加载成功!", "成功", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
182
halftoneproject-master/AssistClient/UI/UIIFLib.resx
Normal file
182
halftoneproject-master/AssistClient/UI/UIIFLib.resx
Normal file
@ -0,0 +1,182 @@
|
||||
<?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="statusStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>166, 17</value>
|
||||
</metadata>
|
||||
<metadata name="toolStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>287, 17</value>
|
||||
</metadata>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="tbtnSave.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAIeSURBVFhH7ZdPSxtBGMZfKUiFiuAXkFb0UuitFaV/LsXo
|
||||
B8gt7a47M7vzbtuD9Bv0VuxF6QdoVbRQ6BfoTerRKvTg0VvpuSK2iH/eGSabnWaS7GyWQsAHfmwyM++z
|
||||
T2bf3SRwLYeGIE4fEwul4bIGPL1r/DxUrw8DS76CwMtK4PjGOBeUwPttJv3z1LgXEJePskKGR/QJ1kEk
|
||||
G/7IjxDhofYJ8SfE8Zg5Qw/F6cMsAMcPZrScuHybeQn52Yz2UD6AkFtmtJyEXGt5ab/AzHRRPgDDbTNa
|
||||
XAyXaOdi/ZrjqhWggScQpRN6rqP6CbC8PEJ1F7pWieO7zKtJlOzSzJCed6qfAFE0SnW/iVP9nsuVzMtC
|
||||
vtbzTlk9gJtmtJjS9BY0wnNdq2Q1ocUXPe+UHaDLwg7St61pXoHvc14tuu6sHUBt55yZ8RPDe1T7K+fV
|
||||
wiOAQjXVD+I7PWD2e0PrOB5AEJ6Z+nY8A1TPYAYIwuNSNO+KPF4BlImQi8DYeCmSZIp8vlmefjtAjdWv
|
||||
BKaWp+cl+Etd/QpEOuMNSx6Q30L2tdxkMJuwSjwDnNIleA78xbRuKHUsilofx7PA5J7l+f+bUKLl6b0D
|
||||
Qj4DISZhCe/o47+ocRf85W2qpx+5+hFdMED+R6mN+k7ww/UQ0shP5mwOqVvHWVQl3QIEwU1atNNeVBGN
|
||||
8A/tcs2crYPq9Ru0+An1g/tvV1kEzuu+uJYlgCuxGmYu25SKJQAAAABJRU5ErkJggg==
|
||||
</value>
|
||||
</data>
|
||||
<data name="tbtnExport.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAMlSURBVFhH5VZJaBRREC1cQD15cD8oCnoQRBFEEHG5iCCK
|
||||
Ry9uGBDBqLjnII2Y6V+dMQQ8GGLQgDEz//9JCOQmKlHwJO6gIorbQUHBDdxQ1Kr+v3ump7uzmE4uPnhM
|
||||
d9Wr+tV/6i+QOZS3EiRK0FgHvc4Yax0hSLECmp3fNPgfyxvQ6c213hGAdE9XDG5YFB9AehutYgDQDdNA
|
||||
ib3+NEq8AlpcpUTt0CnmWEU6FJ6KFRBQinqr6gNa1JD4fSyYqcQ5q4qjKz+F/AuoAJ0YG1DhRV+bCIV7
|
||||
EoMCKnHIKg2kWEi2Joq7DQXnc2JMMl/RX7LaZrHQOJOa51eV8KPpZnEAlLvWKqnQ/GzyFaq0g6PfqKLW
|
||||
ZiQo4VWJeqCrfrr1lsHNpPFTlfbfKUWjSczLpex4DFqPNo4KKNxRocmO/mAF8Sw0KNxvhyxDivWRoCwJ
|
||||
LS1joePEy9DAm0klVG4y2ZNXxlDJDRwvwF1ihzbQ4kwkKCsqcdn/uD5noDM/C9rwZyQwC4bNx6gugA+T
|
||||
AMo9EglMo8TXNFO3oIBPEv0BzX6xyWa36KsAjddCe4y5h/QfHqSluRhU43ijF1uStcSiuENTPt/XRZBW
|
||||
QHfTxOQdLvfOLMmEpapxZ1xPlNgGbc44q6pCWgG6YVEkieElKHgzfH8SNC6P6HnHU7jbelOQVgD/ViaT
|
||||
4rxv7w98plyof0MxN6GEy6w1Cs6tRBf9ZTXpBZTEqtDGR/Jg0ONMsE/J4IYNcqfPAB2v/N6BX6CQm+rb
|
||||
skIBH/i5W52v8QKCfYA7uxl/0JQe89+zRDF3P/y41BlgKGzN/OsZEh9FC+BLQliAWGdlAB0nJ9mn7MDL
|
||||
V+PzcgGOMwq0+zQsQOM+Kx0e8D2j3fnuj8X7jA+FvRUF3DXGYQJf7YKxpHhhjbE9/2z65XEIUN5myv0t
|
||||
HCe86PK2245vQ4ch3QFENzXMcfqtpfftNFNb6XnbgMhaJXZR3FFiMz3fs3kN+Q5adOeZAhh8U+VlVyka
|
||||
VtLBFUPJXUrO63FxhuRNSHkb7Igp4EOF74YakRolT7ekhnSiYakfajxMH7gm8RT9jwHwF2CndnhIXpjb
|
||||
AAAAAElFTkSuQmCC
|
||||
</value>
|
||||
</data>
|
||||
<data name="tbtnImport.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAMwSURBVFhH7VfNaxNREE9FVFQUq2m7u9mkn6YEIn6Agpd6
|
||||
afGmhyL4DygIolBrd9/udjFt1IoXQehJ9CCiUMGrHrQXEb1YBEFEvQiKEOtHW9I02Xm+t5nXJu1mN21K
|
||||
QegPhmx+b2beb+fNziahUigGPSYR57kykP/SpOU/VjJJy39SSP69osM+DK0dkgY9Msl9Vwil1ZpMoB/D
|
||||
a4NsQlzqz33DxPcU4gwpujMsEyddydh6ShqgUUxRG9iGz4p35KSRWlsoZzMOFxAxIYmUJ1pT0BEznBvt
|
||||
NuxAagn2pmlniwXdzKcnmYKkbdMNuFQZWHpWAbofKU+ohjPm+prOE6RcJGyoj5nOkKrlP0SMYq4IN3bN
|
||||
G5atjSSu+xyXECAROIiUJ9hRPRW+zQac51ybTU9Kxnz/zG9e+p2beml6KmbBRTfRYginIAGqVXg1n/Ty
|
||||
zJ+o4YyKOw4yVl33k1Vj7Pgt2IwpixBOQQIiRuGt8F2ucaGiMlGDjodsuhHTVi+giRQmhG+txvrpTpcQ
|
||||
IcjAI2BNVpqkGmswspMqKbyJaIWXkl54FzGmpsWayo7DTSwIPwH83JYzKVnyFy029Cav0V2YwkVLGhpb
|
||||
B+F01HQeRi16xiVFkJ8AyaZbFT33o3QTL6s3MrPNInG1EMG1Cgify+TiQ3AUQ6qHSBBwBOGouXB+nsYm
|
||||
KpuA3s96iNbhxVKIBH4Cum7SPTsv/MoGPfd8PTEMhzGsCDaOZdaIbJDdRqYcIthPQIjSOtbNE2Kg+Bl/
|
||||
Wrru0i0YGQrbdDvn+VOAVDlEoK8AhngK4qrlPJaN/GfJyMyJOC9rtpxhDHMF8P7gVUCqHCIoSIAAf8Ml
|
||||
bBrlb72YCX1svN7n1VGNmb8L0855hO6rL6ASOq/C7g4LjrTZcKo9DWGk105AJawLWBfw/wiQB+AAUquK
|
||||
xj7YVk8ysz4CMsAFBP0sXynY0NokkcycpBVeI1UONt/H3SroQJBaVUg6dBfzOw+QKoek0UNhLfsTnUZl
|
||||
HUxmgzUbAYu9AUckQn/z3Pz/J265FKwBTzSQ7KQrYpWNl58JuYJbVQY7gt4GMvfVK8lKzb17nWq4xSKE
|
||||
Qv8A7O40mQFf7ZYAAAAASUVORK5CYII=
|
||||
</value>
|
||||
</data>
|
||||
</root>
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user