Commit d22c0788 by 李儒

Initial commit

parents
File added
## 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/
[Aa][Rr][Mm]/
[Aa][Rr][Mm]64/
bld/
[Bb]in/
[Oo]bj/
[Ll]og/
# Visual Studio 2015/2017 cache/options directory
.vs/
# Uncomment if you have tasks that create the project's static files in wwwroot
#wwwroot/
# Visual Studio 2017 auto generated files
Generated\ Files/
# MSTest test Results
[Tt]est[Rr]esult*/
[Bb]uild[Ll]og.*
# NUNIT
*.VisualState.xml
TestResult.xml
# Build Results of an ATL Project
[Dd]ebugPS/
[Rr]eleasePS/
dlldata.c
# Benchmark Results
BenchmarkDotNet.Artifacts/
# .NET Core
project.lock.json
project.fragment.lock.json
artifacts/
# StyleCop
StyleCopReport.xml
# Files built by Visual Studio
*_i.c
*_p.c
*_h.h
*.ilk
*.meta
*.obj
*.iobj
*.pch
*.pdb
*.ipdb
*.pgc
*.pgd
*.rsp
*.sbr
*.tlb
*.tli
*.tlh
*.tmp
*.tmp_proj
*_wpftmp.csproj
*.log
*.vspscc
*.vssscc
.builds
*.pidb
*.svclog
*.scc
# Chutzpah Test files
_Chutzpah*
# Visual C++ cache files
ipch/
*.aps
*.ncb
*.opendb
*.opensdf
*.sdf
*.cachefile
*.VC.db
*.VC.VC.opendb
# Visual Studio profiler
*.psess
*.vsp
*.vspx
*.sap
# Visual Studio Trace Files
*.e2e
# TFS 2012 Local Workspace
$tf/
# Guidance Automation Toolkit
*.gpState
# ReSharper is a .NET coding add-in
_ReSharper*/
*.[Rr]e[Ss]harper
*.DotSettings.user
# JustCode is a .NET coding add-in
.JustCode
# TeamCity is a build add-in
_TeamCity*
# DotCover is a Code Coverage Tool
*.dotCover
# AxoCover is a Code Coverage Tool
.axoCover/*
!.axoCover/settings.json
# Visual Studio code coverage results
*.coverage
*.coveragexml
# NCrunch
_NCrunch_*
.*crunch*.local.xml
nCrunchTemp_*
# MightyMoose
*.mm.*
AutoTest.Net/
# Web workbench (sass)
.sass-cache/
# Installshield output folder
[Ee]xpress/
# DocProject is a documentation generator add-in
DocProject/buildhelp/
DocProject/Help/*.HxT
DocProject/Help/*.HxC
DocProject/Help/*.hhc
DocProject/Help/*.hhk
DocProject/Help/*.hhp
DocProject/Help/Html2
DocProject/Help/html
# Click-Once directory
publish/
# Publish Web Output
*.[Pp]ublish.xml
*.azurePubxml
# Note: Comment the next line if you want to checkin your web deploy settings,
# but database connection strings (with potential passwords) will be unencrypted
*.pubxml
*.publishproj
# Microsoft Azure Web App publish settings. Comment the next line if you want to
# checkin your Azure Web App publish settings, but sensitive information contained
# in these scripts will be unencrypted
PublishScripts/
# NuGet Packages
*.nupkg
# The packages folder can be ignored because of Package Restore
**/[Pp]ackages/*
# except build/, which is used as an MSBuild target.
!**/[Pp]ackages/build/
# Uncomment if necessary however generally it will be regenerated when needed
#!**/[Pp]ackages/repositories.config
# NuGet v3's project.json files produces more ignorable files
*.nuget.props
*.nuget.targets
# Microsoft Azure Build Output
csx/
*.build.csdef
# Microsoft Azure Emulator
ecf/
rcf/
# Windows Store app package directories and files
AppPackages/
BundleArtifacts/
Package.StoreAssociation.xml
_pkginfo.txt
*.appx
*.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
*- Backup*.rdl
# Microsoft Fakes
FakesAssemblies/
# GhostDoc plugin setting file
*.GhostDoc.xml
# Node.js Tools for Visual Studio
.ntvs_analysis.dat
node_modules/
# Visual Studio 6 build log
*.plg
# Visual Studio 6 workspace options file
*.opt
# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
*.vbw
# Visual Studio LightSwitch build output
**/*.HTMLClient/GeneratedArtifacts
**/*.DesktopClient/GeneratedArtifacts
**/*.DesktopClient/ModelManifest.xml
**/*.Server/GeneratedArtifacts
**/*.Server/ModelManifest.xml
_Pvt_Extensions
# Paket dependency manager
.paket/paket.exe
paket-files/
# FAKE - F# Make
.fake/
# 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/
<?xml version="1.0"?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
</configSections>
<appSettings file="project.config">
<add key="deviceCode" value="A03" />
<add key="version" value="1.0.0.1" />
<add key="contentUrl" value="http://10.60.120.80:9007/MES_PC_SERVER" />
<!--<add key="contentUrl" value="http://172.21.3.28:9007/MES_PC_SERVER" />-->
<add key="ClientSettingsProvider.ServiceUri" value="" />
</appSettings>
<log4net debug="true">
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="meslog\mesclient.log" />
<!--file可以指定具体的路径 eg : d:\\test.log。不指定的话log被生成在项目的bin/Debug 或者 bin/Release目录下 (web的项目 默认生成在根目录下)-->
<appendToFile value="true" />
<rollingStyle value="Size" />
<maxSizeRollBackups value="10" />
<!--备份log文件的个数最多10个-->
<maximumFileSize value="2MB" />
<!--每个log文件最大是2M,如果超过2M将重新创建一个新的log文件,并将原来的log文件备份。-->
<staticLogFileName value="true" />
<layout type="log4net.Layout.PatternLayout">
<!--指定log的格式-->
<conversionPattern value="[%date] %thread -- %-5level -- %logger [%M] -- %message%newline" />
</layout>
</appender>
<root>
<level value="DEBUG" />
<!--指定将此级别及以上的log打印到log文件中-->
<appender-ref ref="RollingLogFileAppender" />
</root>
</log4net>
<system.web>
<membership defaultProvider="ClientAuthenticationMembershipProvider">
<providers>
<add name="ClientAuthenticationMembershipProvider" type="System.Web.ClientServices.Providers.ClientFormsAuthenticationMembershipProvider, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" serviceUri="" />
</providers>
</membership>
<roleManager defaultProvider="ClientRoleProvider" enabled="true">
<providers>
<add name="ClientRoleProvider" type="System.Web.ClientServices.Providers.ClientRoleProvider, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" serviceUri="" cacheTimeout="86400" />
</providers>
</roleManager>
</system.web>
</configuration>
\ No newline at end of file
using CefSharp;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace SixIpc
{
public class CEFKeyBoardHander : IKeyboardHandler
{
public bool OnKeyEvent(IWebBrowser browserControl, IBrowser browser, KeyType type, int windowsKeyCode, int nativeKeyCode, CefEventFlags modifiers, bool isSystemKey)
{
if (type == KeyType.KeyUp && Enum.IsDefined(typeof(Keys), windowsKeyCode))
{
var key = (Keys)windowsKeyCode;
switch (key)
{
case Keys.F12:
browser.ShowDevTools();
break;
case Keys.F5:
if (modifiers == CefEventFlags.ControlDown)
{
//MessageBox.Show("ctrl+f5");
browser.Reload(true); //强制忽略缓存
}
else
{
//MessageBox.Show("f5");
browser.Reload();
}
break;
}
}
return false;
}
public bool OnPreKeyEvent(IWebBrowser browserControl, IBrowser browser, KeyType type, int windowsKeyCode, int nativeKeyCode, CefEventFlags modifiers, bool isSystemKey, ref bool isKeyboardShortcut)
{
return false;
}
}
}

namespace JC.DeviceMonitor.SingleCrystal.Client
{
partial class JSSW
{
/// <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.button1 = new System.Windows.Forms.Button();
this.SuspendLayout();
//
// button1
//
this.button1.Location = new System.Drawing.Point(159, 108);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(181, 106);
this.button1.TabIndex = 0;
this.button1.Text = "工控机程序";
this.button1.UseVisualStyleBackColor = true;
//
// JSSW
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(800, 450);
this.Controls.Add(this.button1);
this.Name = "JSSW";
this.Text = "JSSW";
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.Button button1;
}
}
\ No newline at end of file
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace JC.DeviceMonitor.SingleCrystal.Client
{
public partial class JSSW : Form
{
public JSSW()
{
InitializeComponent();
}
}
}
<?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>
\ No newline at end of file
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Diagnostics;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Windows.Forms;
using CefSharp;
using CefSharp.WinForms;
using SixIpc.SplashScreen;
namespace JC.DeviceMonitor.SingleCrystal.Client
{
//[ComVisible(true)]
public class JsManager
{
private ChromiumWebBrowser webBrowser;
private MainForm mainForm;
public void Browser_FrameLoadEnd(object sender, FrameLoadEndEventArgs e)
{
string deviceCode = System.Configuration.ConfigurationManager.AppSettings["deviceCode"];
//设置设备编号
webBrowser.GetBrowser().MainFrame.ExecuteJavaScriptAsync("setDeviceCode('" + deviceCode + "')");
Splasher.Status = "同步数据完成,启动成功......";
Splasher.Close();
this.mainForm.WindowState = FormWindowState.Maximized;
}
public void Browser_LoadingStateChanged(object sender, LoadingStateChangedEventArgs e)
{
Splasher.Status = "正在同步MES数据............";
}
public JsManager(MainForm form, ChromiumWebBrowser webBrowser)
{
this.mainForm = form;
this.webBrowser = webBrowser;
}
public void showDevTools()
{
webBrowser.ShowDevTools();
}
/// <summary>
/// 最小化
/// </summary>
public void minimize()
{
mainForm.minimize();
}
public void opencmd()
{
ProcessStartInfo start = new ProcessStartInfo("cmd.exe", "/c pause");
Process.Start(start);
}
public string test(string message)
{
System.Windows.Forms.MessageBox.Show(message);
return "收到";
}
public void sendToJs(string a)
{
webBrowser.GetBrowser().MainFrame.ExecuteJavaScriptAsync("testJs('aaa')");
}
/// <summary>
/// 获取系统版本号
/// </summary>
/// <returns></returns>
public string getProjectVersion()
{
string version = ConfigurationManager.AppSettings["version"];
return version;
}
/// <summary>
/// 获取设备机台号
/// </summary>
/// <returns></returns>
public string getDeviceCode()
{
string deviceCode = ConfigurationManager.AppSettings["deviceCode"];
return deviceCode;
}
}
}
namespace JC.DeviceMonitor.SingleCrystal.Client
{
partial class MainForm
{
/// <summary>
/// 必需的设计器变量。
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// 清理所有正在使用的资源。
/// </summary>
/// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows 窗体设计器生成的代码
/// <summary>
/// 设计器支持所需的方法 - 不要修改
/// 使用代码编辑器修改此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.SuspendLayout();
//
// MainForm
//
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
this.ClientSize = new System.Drawing.Size(1008, 729);
this.ControlBox = false;
this.Name = "MainForm";
this.Text = "MES单晶车间执行端";
this.WindowState = System.Windows.Forms.FormWindowState.Minimized;
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.Form1_FormClosing);
this.Load += new System.EventHandler(this.MainForm_Load);
this.ResumeLayout(false);
}
#endregion
}
}
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Configuration;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using CefSharp;
using CefSharp.WinForms;
using SixIpc;
using SixIpc.SplashScreen;
namespace JC.DeviceMonitor.SingleCrystal.Client
{
public partial class MainForm : Form
{
public MainForm()
{
InitializeComponent();
InitBrowser();
}
public ChromiumWebBrowser browser;
public JsManager jsManager;
public void InitBrowser()
{
}
private void MainForm_Load(object sender, EventArgs e)
{
Splasher.Status = "工控机程序正在启动......";
var settings = getCefSettings();
Cef.Initialize(settings,false,false);
string contentUrl = System.Configuration.ConfigurationManager.AppSettings["contentUrl"];
browser = new ChromiumWebBrowser(contentUrl);
Font font = new Font("微软雅黑", 10.5f);
browser.Font = font;
browser.Dock = DockStyle.Fill;
this.Controls.Add(browser);
//F12调试工具 F5强制刷新
browser.KeyboardHandler = new CEFKeyBoardHander();
Splasher.Status = "正在同步MES数据......";
//this.Visible = false;
jsManager = new JsManager(this, browser);
browser.RegisterJsObject("jsManager", jsManager, false);
//加载完成的事件
browser.FrameLoadEnd += jsManager.Browser_FrameLoadEnd;
browser.LoadingStateChanged += jsManager.Browser_LoadingStateChanged;
Control.CheckForIllegalCrossThreadCalls = false;
}
CefSettings getCefSettings()
{
var setting = new CefSettings();
setting.CefCommandLineArgs.Add("disable-gpu", "1");
setting.Locale = "zh-CN";
setting.AcceptLanguageList = "zh-CN";
setting.MultiThreadedMessageLoop = true;
setting.CachePath = Directory.GetCurrentDirectory() + @"\CHBrowser\BrowserCache";//缓存路径
setting.AcceptLanguageList = "zh-CN,zh;q=0.8";//浏览器引擎的语言
//setting.LocalesDirPath = "CHBrowser/localeDir";//日志
setting.LogFile = Directory.GetCurrentDirectory() + @"\CHBrowser\LogData";//日志文件
setting.PersistSessionCookies = true;//
return setting;
}
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
try
{
browser.CloseDevTools();
browser.GetBrowser().CloseBrowser(true);
browser.Dispose();
//browser.Dispose();
//CefSharp.Cef.Shutdown();
Console.WriteLine("ddd");
}
catch { }
}
private void button1_Click(object sender, EventArgs e)
{
jsManager.sendToJs("are you ok");
}
private void button2_Click(object sender, EventArgs e)
{
jsManager.showDevTools();
}
public void minimize()
{
if (InvokeRequired)
{
this.Invoke(new Action(() => { this.WindowState = FormWindowState.Minimized; }));
}
else
{
WindowState = FormWindowState.Minimized;
}
}
}
}
<?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>
\ No newline at end of file
using CefSharp.WinForms;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Reflection;
using System.Runtime.InteropServices;
using System.Threading;
using System.Windows.Forms;
namespace JC.DeviceMonitor.SingleCrystal.Client
{
static class Program
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main()
{
//Console.WriteLine(System.Diagnostics.Process.GetCurrentProcess().ProcessName);
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
//1.这里判定是否已经有实例在运行
//只运行一个实例
Process instance = RunningInstance();
if (instance == null)
{
//1.1 没有实例在运行
SixIpc.SplashScreen.Splasher.Show(typeof(SixIpc.SplashScreen.FrmSplashScreen));
Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(Application_ThreadException);
Application.Run(new MainForm());
CefSharp.Cef.Shutdown();
}
else
{
//1.2 已经有一个实例在运行
HandleRunningInstance(instance);
}
}
private static void Application_ThreadException(object sender, ThreadExceptionEventArgs e)
{
string message = string.Format("{0}\r\n操作发生错误,您需要退出系统么?", e.Exception.Message);
if (DialogResult.Yes == MessageBox.Show(message, "系统错误", MessageBoxButtons.YesNo))
{
Application.Exit();
}
}
//2.在进程中查找是否已经有实例在运行
private static Process RunningInstance()
{
Process current = Process.GetCurrentProcess();
Process[] processes = Process.GetProcessesByName(current.ProcessName);
//遍历与当前进程名称相同的进程列表
foreach (Process process in processes)
{
//如果实例已经存在则忽略当前进程
if (process.Id != current.Id)
{
//保证要打开的进程同已经存在的进程来自同一文件路径
if (Assembly.GetExecutingAssembly().Location.Replace("/", "\\") == current.MainModule.FileName)
{
//返回已经存在的进程
return process;
}
}
}
return null;
}
//3.已经有了就把它激活,并将其窗口放置最前端
private static void HandleRunningInstance(Process instance)
{
ShowWindowAsync(instance.MainWindowHandle, 1); //调用api函数,正常显示窗口
SetForegroundWindow(instance.MainWindowHandle); //将窗口放置最前端
}
[DllImport("User32.dll")]
private static extern bool ShowWindowAsync(System.IntPtr hWnd, int cmdShow);
[DllImport("User32.dll")]
private static extern bool SetForegroundWindow(System.IntPtr hWnd);
}
}
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// 有关程序集的一般信息由以下
// 控制。更改这些特性值可修改
// 与程序集关联的信息。
[assembly: AssemblyTitle("SixIpc")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("SixIpc")]
[assembly: AssemblyCopyright("Copyright © 2019")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// 将 ComVisible 设置为 false 会使此程序集中的类型
//对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型
//请将此类型的 ComVisible 特性设置为 true。
[assembly: ComVisible(false)]
// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID
[assembly: Guid("64289c0d-1646-4966-b12c-d4f621cfcfec")]
// 程序集的版本信息由下列四个值组成:
//
// 主版本
// 次版本
// 生成号
// 修订号
//
// 可以指定所有值,也可以使用以下所示的 "*" 预置版本号和修订号
// 方法是按如下所示使用“*”: :
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
//------------------------------------------------------------------------------
// <auto-generated>
// 此代码由工具生成。
// 运行时版本:4.0.30319.42000
//
// 对此文件的更改可能会导致不正确的行为,并且如果
// 重新生成代码,这些更改将会丢失。
// </auto-generated>
//------------------------------------------------------------------------------
namespace SixIpc.Properties {
using System;
/// <summary>
/// 一个强类型的资源类,用于查找本地化的字符串等。
/// </summary>
// 此类是由 StronglyTypedResourceBuilder
// 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。
// 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen
// (以 /str 作为命令选项),或重新生成 VS 项目。
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.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("SixIpc.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 启动画面 {
get {
object obj = ResourceManager.GetObject("启动画面", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
}
}
<?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="启动画面" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\启动画面.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
</root>
\ No newline at end of file
//------------------------------------------------------------------------------
// <auto-generated>
// 此代码由工具生成。
// 运行时版本:4.0.30319.42000
//
// 对此文件的更改可能会导致不正确的行为,并且如果
// 重新生成代码,这些更改将会丢失。
// </auto-generated>
//------------------------------------------------------------------------------
namespace SixIpc.Properties {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.8.1.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;
}
}
}
}
<?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>
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="..\packages\CefSharp.WinForms.49.0.1\build\CefSharp.WinForms.props" Condition="Exists('..\packages\CefSharp.WinForms.49.0.1\build\CefSharp.WinForms.props')" />
<Import Project="..\packages\CefSharp.Common.49.0.1\build\CefSharp.Common.props" Condition="Exists('..\packages\CefSharp.Common.49.0.1\build\CefSharp.Common.props')" />
<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>{CA0D0BF2-24B0-4059-A624-37664B074608}</ProjectGuid>
<OutputType>WinExe</OutputType>
<RootNamespace>SixIpc</RootNamespace>
<AssemblyName>SixIpc</AssemblyName>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<Deterministic>true</Deterministic>
<NuGetPackageImportStamp>
</NuGetPackageImportStamp>
<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>
</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 Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'">
<DebugSymbols>true</DebugSymbols>
<OutputPath>bin\x64\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<DebugType>full</DebugType>
<PlatformTarget>x64</PlatformTarget>
<ErrorReport>prompt</ErrorReport>
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'">
<OutputPath>bin\x64\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<Optimize>true</Optimize>
<DebugType>pdbonly</DebugType>
<PlatformTarget>x64</PlatformTarget>
<ErrorReport>prompt</ErrorReport>
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
<DebugSymbols>true</DebugSymbols>
<OutputPath>bin\x86\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<DebugType>full</DebugType>
<PlatformTarget>x86</PlatformTarget>
<LangVersion>7.3</LangVersion>
<ErrorReport>prompt</ErrorReport>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
<OutputPath>bin\x86\Mes\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<Optimize>true</Optimize>
<DebugType>pdbonly</DebugType>
<PlatformTarget>x86</PlatformTarget>
<LangVersion>7.3</LangVersion>
<ErrorReport>prompt</ErrorReport>
</PropertyGroup>
<ItemGroup>
<Reference Include="CSkin, Version=16.1.14.2, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\..\wuqi-eap-client\packages\cskin.16.1.14.3\lib\net40\CSkin.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.configuration" />
<Reference Include="System.Core" />
<Reference Include="System.Web.Extensions" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Deployment" />
<Reference Include="System.Drawing" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="CEFKeyBoardHander.cs" />
<Compile Include="JSSW.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="JSSW.Designer.cs">
<DependentUpon>JSSW.cs</DependentUpon>
</Compile>
<Compile Include="MainForm.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="MainForm.Designer.cs">
<DependentUpon>MainForm.cs</DependentUpon>
</Compile>
<Compile Include="JsManager.cs" />
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="SplashScreen\FrmSplashScreen.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="SplashScreen\FrmSplashScreen.designer.cs">
<DependentUpon>FrmSplashScreen.cs</DependentUpon>
</Compile>
<Compile Include="SplashScreen\ISplashForm.cs" />
<Compile Include="SplashScreen\Splasher.cs" />
<EmbeddedResource Include="JSSW.resx">
<DependentUpon>JSSW.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="MainForm.resx">
<DependentUpon>MainForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Properties\Resources.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
<SubType>Designer</SubType>
</EmbeddedResource>
<Compile Include="Properties\Resources.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Resources.resx</DependentUpon>
<DesignTime>True</DesignTime>
</Compile>
<EmbeddedResource Include="SplashScreen\FrmSplashScreen.resx">
<DependentUpon>FrmSplashScreen.cs</DependentUpon>
</EmbeddedResource>
<None Include="App.config" />
<None Include="packages.config" />
<None Include="Properties\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
</None>
<Compile Include="Properties\Settings.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Settings.settings</DependentUpon>
<DesignTimeSharedInput>True</DesignTimeSharedInput>
</Compile>
</ItemGroup>
<ItemGroup>
<BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
<Visible>False</Visible>
<ProductName>.NET Framework 3.5 SP1</ProductName>
<Install>false</Install>
</BootstrapperPackage>
</ItemGroup>
<ItemGroup>
<None Include="Resources\启动画面.jpg" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<Import Project="..\packages\cef.redist.x64.3.2623.1401\build\cef.redist.x64.targets" Condition="Exists('..\packages\cef.redist.x64.3.2623.1401\build\cef.redist.x64.targets')" />
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<ErrorText>这台计算机上缺少此项目引用的 NuGet 程序包。使用“NuGet 程序包还原”可下载这些程序包。有关更多信息,请参见 http://go.microsoft.com/fwlink/?LinkID=322105。缺少的文件是 {0}。</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('..\packages\cef.redist.x64.3.2623.1401\build\cef.redist.x64.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\cef.redist.x64.3.2623.1401\build\cef.redist.x64.targets'))" />
<Error Condition="!Exists('..\packages\cef.redist.x86.3.2623.1401\build\cef.redist.x86.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\cef.redist.x86.3.2623.1401\build\cef.redist.x86.targets'))" />
<Error Condition="!Exists('..\packages\CefSharp.Common.49.0.1\build\CefSharp.Common.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\CefSharp.Common.49.0.1\build\CefSharp.Common.props'))" />
<Error Condition="!Exists('..\packages\CefSharp.Common.49.0.1\build\CefSharp.Common.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\CefSharp.Common.49.0.1\build\CefSharp.Common.targets'))" />
<Error Condition="!Exists('..\packages\CefSharp.WinForms.49.0.1\build\CefSharp.WinForms.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\CefSharp.WinForms.49.0.1\build\CefSharp.WinForms.props'))" />
</Target>
<Import Project="..\packages\cef.redist.x86.3.2623.1401\build\cef.redist.x86.targets" Condition="Exists('..\packages\cef.redist.x86.3.2623.1401\build\cef.redist.x86.targets')" />
<Import Project="..\packages\CefSharp.Common.49.0.1\build\CefSharp.Common.targets" Condition="Exists('..\packages\CefSharp.Common.49.0.1\build\CefSharp.Common.targets')" />
</Project>
\ No newline at end of file
using CCWin;
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 SixIpc.SplashScreen
{
public partial class FrmSplashScreen : Form, ISplashForm
{
public FrmSplashScreen()
{
InitializeComponent();
}
//实现接口方法,主要用于接口的反射调用
#region ISplashForm
public void SetStatusInfo(string NewStatusInfo)
{
lbStatusInfo.Text = NewStatusInfo;
}
#endregion
}
}
namespace SixIpc.SplashScreen
{
partial class FrmSplashScreen
{
/// <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(FrmSplashScreen));
this.lbStatusInfo = new CCWin.SkinControl.SkinLabel();
this.SuspendLayout();
//
// lbStatusInfo
//
this.lbStatusInfo.AutoSize = true;
this.lbStatusInfo.BackColor = System.Drawing.Color.Transparent;
this.lbStatusInfo.BorderColor = System.Drawing.Color.White;
this.lbStatusInfo.Font = new System.Drawing.Font("新宋体", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.lbStatusInfo.ForeColor = System.Drawing.Color.White;
this.lbStatusInfo.Location = new System.Drawing.Point(298, 338);
this.lbStatusInfo.Name = "lbStatusInfo";
this.lbStatusInfo.Size = new System.Drawing.Size(0, 16);
this.lbStatusInfo.TabIndex = 20;
//
// FrmSplashScreen
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("$this.BackgroundImage")));
this.ClientSize = new System.Drawing.Size(800, 600);
this.ControlBox = false;
this.Controls.Add(this.lbStatusInfo);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.MaximizeBox = false;
this.MinimizeBox = false;
this.Name = "FrmSplashScreen";
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
this.Text = "MES执行系统";
this.TopMost = true;
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private CCWin.SkinControl.SkinLabel lbStatusInfo;
}
}
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace SixIpc.SplashScreen
{
interface ISplashForm
{
void SetStatusInfo(string NewStatusInfo);
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Threading;
using System.Reflection;
namespace SixIpc.SplashScreen
{
class Splasher
{
private static Form m_SplashForm = null;
private static ISplashForm m_SplashInterface = null;
private static Thread m_SplashThread = null;
private static string m_TempStatus = string.Empty;
/// <summary>
/// Show the SplashForm
/// </summary>
public static void Show(Type splashFormType)
{
if (m_SplashThread != null)
return;
if (splashFormType == null)
{
throw (new Exception("splashFormType is null"));
}
m_SplashThread = new Thread(new ThreadStart(delegate ()
{
CreateInstance(splashFormType);
Application.Run(m_SplashForm);
}));
m_SplashThread.IsBackground = true;
m_SplashThread.SetApartmentState(ApartmentState.STA);
m_SplashThread.Start();
}
/// <summary>
/// set the loading Status
/// </summary>
public static string Status
{
set
{
if (m_SplashInterface == null || m_SplashForm == null)
{
m_TempStatus = value;
return;
}
m_SplashForm.Invoke(
new SplashStatusChangedHandle(delegate (string str) { m_SplashInterface.SetStatusInfo(str); }),
new object[] { value }
);
}
}
/// <summary>
/// Colse the SplashForm
/// </summary>
public static void Close()
{
if (m_SplashThread == null || m_SplashForm == null) return;
try
{
m_SplashForm.Invoke(new MethodInvoker(m_SplashForm.Close));
}
catch (Exception)
{
}
m_SplashThread = null;
m_SplashForm = null;
}
private static void CreateInstance(Type FormType)
{
//利用反射创建对象
object obj = Activator.CreateInstance(FormType);
m_SplashForm = obj as Form;
m_SplashInterface = obj as ISplashForm;
if (m_SplashForm == null)
{
throw (new Exception("Splash Screen must inherit from System.Windows.Forms.Form"));
}
if (m_SplashInterface == null)
{
throw (new Exception("must implement interface ISplashForm"));
}
if (!string.IsNullOrEmpty(m_TempStatus))
m_SplashInterface.SetStatusInfo(m_TempStatus);
}
private delegate void SplashStatusChangedHandle(string NewStatusInfo);
}
}
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="cef.redist.x64" version="3.2623.1401" targetFramework="net40" />
<package id="cef.redist.x86" version="3.2623.1401" targetFramework="net40" />
<package id="CefSharp.Common" version="49.0.1" targetFramework="net40" />
<package id="CefSharp.WinForms" version="49.0.1" targetFramework="net40" />
<package id="cskin" version="16.1.14.3" targetFramework="net40" />
</packages>
\ No newline at end of file

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.0.31729.503
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SixIpc", "JC.DeviceMonitor.SingleCrystal.Client\SixIpc.csproj", "{CA0D0BF2-24B0-4059-A624-37664B074608}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Debug|x64 = Debug|x64
Debug|x86 = Debug|x86
Release|Any CPU = Release|Any CPU
Release|x64 = Release|x64
Release|x86 = Release|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{CA0D0BF2-24B0-4059-A624-37664B074608}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{CA0D0BF2-24B0-4059-A624-37664B074608}.Debug|Any CPU.Build.0 = Debug|Any CPU
{CA0D0BF2-24B0-4059-A624-37664B074608}.Debug|x64.ActiveCfg = Debug|x64
{CA0D0BF2-24B0-4059-A624-37664B074608}.Debug|x64.Build.0 = Debug|x64
{CA0D0BF2-24B0-4059-A624-37664B074608}.Debug|x86.ActiveCfg = Debug|x86
{CA0D0BF2-24B0-4059-A624-37664B074608}.Debug|x86.Build.0 = Debug|x86
{CA0D0BF2-24B0-4059-A624-37664B074608}.Release|Any CPU.ActiveCfg = Release|Any CPU
{CA0D0BF2-24B0-4059-A624-37664B074608}.Release|Any CPU.Build.0 = Release|Any CPU
{CA0D0BF2-24B0-4059-A624-37664B074608}.Release|x64.ActiveCfg = Release|x64
{CA0D0BF2-24B0-4059-A624-37664B074608}.Release|x64.Build.0 = Release|x64
{CA0D0BF2-24B0-4059-A624-37664B074608}.Release|x86.ActiveCfg = Release|x86
{CA0D0BF2-24B0-4059-A624-37664B074608}.Release|x86.Build.0 = Release|x86
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {6E3D26CF-4BF6-4E09-BA6A-C91189BAFA09}
EndGlobalSection
EndGlobal
This source diff could not be displayed because it is too large. You can view the blob instead.
<?xml version="1.0"?>
<doc>
<assembly>
<name>HX.Core.Data</name>
</assembly>
<members>
<member name="T:HX.Core.Data.Server.Expression.ExpressionParse">
<summary>
表达式转换类
</summary>
</member>
<member name="M:HX.Core.Data.Server.Expression.ExpressionParse.#ctor">
<summary>
表达式转化类的无参构造函数
</summary>
</member>
<member name="M:HX.Core.Data.Server.Expression.ExpressionParse.#ctor(System.String)">
<summary>
根据字符串表达式修改实例化转化类的实例
</summary>
<param name="expression">字符串表达式</param>
</member>
<member name="M:HX.Core.Data.Server.Expression.ExpressionParse.Check(System.String@)">
<summary>
检查语法
</summary>
<returns></returns>
</member>
<member name="M:HX.Core.Data.Server.Expression.ExpressionParse.Execute">
<summary>
表达式式执行
</summary>
</member>
<member name="M:HX.Core.Data.Server.Expression.ExpressionParse.ExecuteToString">
<summary>
表达式式执行-返回字符串结果
</summary>
</member>
<member name="M:HX.Core.Data.Server.Expression.ExpressionParse.Analyze">
<summary>
解析
</summary>
</member>
<member name="P:HX.Core.Data.Server.Expression.ExpressionParse.Words">
<summary>
获取分词
</summary>
</member>
<member name="P:HX.Core.Data.Server.Expression.ExpressionParse.Expression">
<summary>
获取或赋值表达式
</summary>
</member>
<member name="T:HX.Core.Data.Server.Expression.EOperatorType">
<summary>
操作类型
</summary>
</member>
<member name="F:HX.Core.Data.Server.Expression.EOperatorType.LeftParen">
<summary>
左括号
</summary>
</member>
<member name="F:HX.Core.Data.Server.Expression.EOperatorType.RightParen">
<summary>
右括号
</summary>
</member>
<member name="F:HX.Core.Data.Server.Expression.EOperatorType.Plus">
<summary>
</summary>
</member>
<member name="F:HX.Core.Data.Server.Expression.EOperatorType.Minus">
<summary>
</summary>
</member>
<member name="F:HX.Core.Data.Server.Expression.EOperatorType.Multiply">
<summary>
</summary>
</member>
<member name="F:HX.Core.Data.Server.Expression.EOperatorType.Divide">
<summary>
</summary>
</member>
<member name="F:HX.Core.Data.Server.Expression.EOperatorType.Mod">
<summary>
</summary>
</member>
<member name="F:HX.Core.Data.Server.Expression.EOperatorType.Positive">
<summary>
正号
</summary>
</member>
<member name="F:HX.Core.Data.Server.Expression.EOperatorType.Negative">
<summary>
负号
</summary>
</member>
<member name="F:HX.Core.Data.Server.Expression.EOperatorType.LessThan">
<summary>
小于
</summary>
</member>
<member name="F:HX.Core.Data.Server.Expression.EOperatorType.GreaterThan">
<summary>
大于
</summary>
</member>
<member name="F:HX.Core.Data.Server.Expression.EOperatorType.Equal">
<summary>
等于
</summary>
</member>
<member name="F:HX.Core.Data.Server.Expression.EOperatorType.NotEqual">
<summary>
不等于
</summary>
</member>
<member name="F:HX.Core.Data.Server.Expression.EOperatorType.LessEqual">
<summary>
不大于
</summary>
</member>
<member name="F:HX.Core.Data.Server.Expression.EOperatorType.GreaterEqual">
<summary>
不小于
</summary>
</member>
<member name="T:HX.Core.Data.Server.Expression.EDataType">
<summary>
数据类型
</summary>
</member>
<member name="F:HX.Core.Data.Server.Expression.EDataType.Dunknown">
<summary>
未知
</summary>
</member>
<member name="F:HX.Core.Data.Server.Expression.EDataType.Dbool">
<summary>
布尔类型
</summary>
</member>
<member name="F:HX.Core.Data.Server.Expression.EDataType.Dint">
<summary>
整形
</summary>
</member>
<member name="F:HX.Core.Data.Server.Expression.EDataType.Ddouble">
<summary>
双精度浮点数
</summary>
</member>
<member name="F:HX.Core.Data.Server.Expression.EDataType.Dstring">
<summary>
字符串
</summary>
</member>
<member name="F:HX.Core.Data.Server.Expression.EDataType.Ddatetime">
<summary>
时间类型
</summary>
</member>
<member name="T:HX.Core.Data.Server.Expression.EKeyword">
<summary>
语法关键字
</summary>
</member>
<member name="F:HX.Core.Data.Server.Expression.EKeyword.IF">
<summary>
if关键字
</summary>
</member>
<member name="F:HX.Core.Data.Server.Expression.EKeyword.AND">
<summary>
与关键字
</summary>
</member>
<member name="F:HX.Core.Data.Server.Expression.EKeyword.OR">
<summary>
或关键字
</summary>
</member>
<member name="F:HX.Core.Data.Server.Expression.EKeyword.NOT">
<summary>
非关键字
</summary>
</member>
<member name="F:HX.Core.Data.Server.Expression.EKeyword.TRUE">
<summary>
</summary>
</member>
<member name="F:HX.Core.Data.Server.Expression.EKeyword.FALSE">
<summary>
</summary>
</member>
<member name="F:HX.Core.Data.Server.Expression.EKeyword.ToString">
<summary>
转化为字符串
</summary>
</member>
<member name="F:HX.Core.Data.Server.Expression.EKeyword.ToDateTime">
<summary>
转化为日期
</summary>
</member>
<member name="F:HX.Core.Data.Server.Expression.EKeyword.ToInt">
<summary>
转化为整形数字
</summary>
</member>
<member name="F:HX.Core.Data.Server.Expression.EKeyword.ToDouble">
<summary>
转化为双精度浮点数
</summary>
</member>
<member name="F:HX.Core.Data.Server.Expression.EKeyword.Len">
<summary>
取长度
</summary>
</member>
<member name="F:HX.Core.Data.Server.Expression.EKeyword.NowDate">
<summary>
取当前时间
</summary>
</member>
<member name="T:HX.Core.Data.Server.Expression.ETokenType">
<summary>
标记类型
</summary>
</member>
<member name="F:HX.Core.Data.Server.Expression.ETokenType.token_operand">
<summary>
操作数
</summary>
</member>
<member name="F:HX.Core.Data.Server.Expression.ETokenType.token_operator">
<summary>
操作符
</summary>
</member>
<member name="F:HX.Core.Data.Server.Expression.ETokenType.token_keyword">
<summary>
关键字
</summary>
</member>
<member name="F:HX.Core.Data.Server.Expression.ETokenType.token_separator">
<summary>
分隔符
</summary>
</member>
<member name="T:HX.Core.Data.Server.Expression.EDFAState">
<summary>
有限状态自动机
</summary>
</member>
<member name="F:HX.Core.Data.Server.Expression.EDFAState.Start">
<summary>
初态
</summary>
</member>
<member name="F:HX.Core.Data.Server.Expression.EDFAState.IntStr">
<summary>
整数串,不带小数点
</summary>
</member>
<member name="F:HX.Core.Data.Server.Expression.EDFAState.DoubleStr">
<summary>
浮点数串
</summary>
</member>
<member name="F:HX.Core.Data.Server.Expression.EDFAState.CharStr">
<summary>
字符串
</summary>
</member>
<member name="F:HX.Core.Data.Server.Expression.EDFAState.ABCStr">
<summary>
字母串
</summary>
</member>
<member name="F:HX.Core.Data.Server.Expression.EDFAState.OperatorStr">
<summary>
操作符
</summary>
</member>
<member name="F:HX.Core.Data.Server.Expression.EDFAState.Comma">
<summary>
逗号
</summary>
</member>
<member name="T:HX.Core.Data.Server.Module.RealTimeModule">
<summary>
实时数据模块
</summary>
</member>
<member name="M:HX.Core.Data.Server.Expression.GrammarAnalyzer.Key_IF_Analyze(HX.Core.Data.Server.Expression.TOKENLink,HX.Core.Data.Server.Expression.TOKENLink@)">
<summary>
IF语句语法 if(JudgeExpression,TrueExpression,FalseExpression)
JudgeExpression 为 true 返回 TrueExpression 否则 返回 FalseExpression
</summary>
<param name="startLink">语句开始标记</param>
<param name="endLink">语句结束标记</param>
<returns></returns>
</member>
<member name="M:HX.Core.Data.Server.Expression.GrammarAnalyzer.Key_ANDOR_Analyze(HX.Core.Data.Server.Expression.TOKENLink,HX.Core.Data.Server.Expression.TOKENLink@)">
<summary>
AND,OR语句语法 and(JudgeExpression,JudgeExpression,......)
</summary>
<param name="startLink"></param>
<param name="endLink"></param>
<returns></returns>
</member>
<member name="M:HX.Core.Data.Server.Expression.GrammarAnalyzer.Key_Not_Analyze(HX.Core.Data.Server.Expression.TOKENLink,HX.Core.Data.Server.Expression.TOKENLink@)">
<summary>
Not语句语法 not(JudgeExpression)
JudgeExpression 表达式为 true 返回 fase 否则 返回 true
</summary>
<param name="startLink"></param>
<param name="endLink"></param>
<returns></returns>
</member>
<member name="M:HX.Core.Data.Server.Expression.GrammarAnalyzer.Key_Len_Analyze(HX.Core.Data.Server.Expression.TOKENLink,HX.Core.Data.Server.Expression.TOKENLink@)">
<summary>
LEN语句语法 Len(Expression)
Expression 返回值 长度
</summary>
<param name="startLink"></param>
<param name="endLink"></param>
<returns></returns>
</member>
<member name="M:HX.Core.Data.Server.Expression.GrammarAnalyzer.Key_NowDate_Analyze(HX.Core.Data.Server.Expression.TOKENLink,HX.Core.Data.Server.Expression.TOKENLink@)">
<summary>
NowDate语句语法 NowDate()
</summary>
<param name="startLink"></param>
<param name="endLink"></param>
<returns></returns>
</member>
<member name="M:HX.Core.Data.Server.Expression.GrammarAnalyzer.Key_ToString_Analyze(HX.Core.Data.Server.Expression.TOKENLink,HX.Core.Data.Server.Expression.TOKENLink@)">
<summary>
ToString语句语法 ToString(Expression|Operand,FormatString)
</summary>
<param name="startLink">语句开始标记</param>
<param name="endLink">语句结束标记</param>
<returns></returns>
</member>
<member name="M:HX.Core.Data.Server.Expression.GrammarAnalyzer.Key_ToInt_Analyze(HX.Core.Data.Server.Expression.TOKENLink,HX.Core.Data.Server.Expression.TOKENLink@)">
<summary>
ToInt语句语法 ToInt(Expression|Operand)
</summary>
<param name="startLink">语句开始标记</param>
<param name="endLink">语句结束标记</param>
<returns></returns>
</member>
<member name="M:HX.Core.Data.Server.Expression.GrammarAnalyzer.Key_ToDouble_Analyze(HX.Core.Data.Server.Expression.TOKENLink,HX.Core.Data.Server.Expression.TOKENLink@)">
<summary>
ToDouble语句语法 ToDouble(Expression|Operand)
</summary>
<param name="startLink">语句开始标记</param>
<param name="endLink">语句结束标记</param>
<returns></returns>
</member>
<member name="M:HX.Core.Data.Server.Expression.GrammarAnalyzer.Key_ToDateTime_Analyze(HX.Core.Data.Server.Expression.TOKENLink,HX.Core.Data.Server.Expression.TOKENLink@)">
<summary>
ToDateTime语句语法 ToDateTime(Expression|Operand)
</summary>
<param name="startLink">语句开始标记</param>
<param name="endLink">语句结束标记</param>
<returns></returns>
</member>
<member name="M:HX.Core.Data.Server.Expression.GrammarAnalyzer.Key_True_Analyze(HX.Core.Data.Server.Expression.TOKENLink,HX.Core.Data.Server.Expression.TOKENLink@)">
<summary>
True语句语法 true()
</summary>
<param name="startLink"></param>
<param name="endLink"></param>
<returns></returns>
</member>
<member name="M:HX.Core.Data.Server.Expression.GrammarAnalyzer.Key_False_Analyze(HX.Core.Data.Server.Expression.TOKENLink,HX.Core.Data.Server.Expression.TOKENLink@)">
<summary>
False语句语法 false()
</summary>
<param name="startLink"></param>
<param name="endLink"></param>
<returns></returns>
</member>
<member name="M:HX.Core.Data.Server.Expression.GrammarAnalyzer.Key_analyze(HX.Core.Data.Server.Expression.TOKENLink,HX.Core.Data.Server.Expression.TOKENLink@,System.Collections.Generic.List{HX.Core.Data.Server.Expression.TOKENLink}@)">
<summary>
分解关键字 - 处理拥有逻辑表达式的关键字
</summary>
<param name="startLink">关键字</param>
<param name="endLink">结束括弧</param>
<param name="commaList">表达式分隔符列表</param>
</member>
<member name="M:HX.Core.Data.Server.Expression.Grammar.Key_IF(HX.Core.Data.Server.Expression.TOKENLink,HX.Core.Data.Server.Expression.TOKENLink@)">
<summary>
IF语句语法 if(JudgeExpression,TrueExpression,FalseExpression)
JudgeExpression 为 true 返回 TrueExpression 否则 返回 FalseExpression
</summary>
<param name="startLink">语句开始标记</param>
<param name="endLink">语句结束标记</param>
<returns></returns>
</member>
<member name="M:HX.Core.Data.Server.Expression.Grammar.Key_AND(HX.Core.Data.Server.Expression.TOKENLink,HX.Core.Data.Server.Expression.TOKENLink@)">
<summary>
AND语句语法 and(JudgeExpression,JudgeExpression,......)
所有 JudgeExpression 表达式为 true 返回 true 否则 返回 false
</summary>
<param name="startLink"></param>
<param name="endLink"></param>
<returns></returns>
</member>
<member name="M:HX.Core.Data.Server.Expression.Grammar.Key_OR(HX.Core.Data.Server.Expression.TOKENLink,HX.Core.Data.Server.Expression.TOKENLink@)">
<summary>
OR语句语法 or(JudgeExpression,JudgeExpression,......)
所有 JudgeExpression 表达式为 fase 返回 fase 否则 返回 true
</summary>
<param name="startLink"></param>
<param name="endLink"></param>
<returns></returns>
</member>
<member name="M:HX.Core.Data.Server.Expression.Grammar.Key_Not(HX.Core.Data.Server.Expression.TOKENLink,HX.Core.Data.Server.Expression.TOKENLink@)">
<summary>
Not语句语法 not(JudgeExpression)
JudgeExpression 表达式为 true 返回 fase 否则 返回 true
</summary>
<param name="startLink"></param>
<param name="endLink"></param>
<returns></returns>
</member>
<member name="M:HX.Core.Data.Server.Expression.Grammar.Key_Len(HX.Core.Data.Server.Expression.TOKENLink,HX.Core.Data.Server.Expression.TOKENLink@)">
<summary>
LEN语句语法 Len(Expression)
Expression 返回值 长度
</summary>
<param name="startLink"></param>
<param name="endLink"></param>
<returns></returns>
</member>
<member name="M:HX.Core.Data.Server.Expression.Grammar.Key_NowDate(HX.Core.Data.Server.Expression.TOKENLink,HX.Core.Data.Server.Expression.TOKENLink@)">
<summary>
NowDate语句语法 NowDate()
</summary>
<param name="startLink"></param>
<param name="endLink"></param>
<returns></returns>
</member>
<member name="M:HX.Core.Data.Server.Expression.Grammar.Key_ToString(HX.Core.Data.Server.Expression.TOKENLink,HX.Core.Data.Server.Expression.TOKENLink@)">
<summary>
ToString语句语法 ToString(Expression|Operand,FormatString)
</summary>
<param name="startLink">语句开始标记</param>
<param name="endLink">语句结束标记</param>
<returns></returns>
</member>
<member name="M:HX.Core.Data.Server.Expression.Grammar.Key_ToInt(HX.Core.Data.Server.Expression.TOKENLink,HX.Core.Data.Server.Expression.TOKENLink@)">
<summary>
ToInt语句语法 ToInt(Expression|Operand)
</summary>
<param name="startLink">语句开始标记</param>
<param name="endLink">语句结束标记</param>
<returns></returns>
</member>
<member name="M:HX.Core.Data.Server.Expression.Grammar.Key_ToDouble(HX.Core.Data.Server.Expression.TOKENLink,HX.Core.Data.Server.Expression.TOKENLink@)">
<summary>
ToDouble语句语法 ToDouble(Expression|Operand)
</summary>
<param name="startLink">语句开始标记</param>
<param name="endLink">语句结束标记</param>
<returns></returns>
</member>
<member name="M:HX.Core.Data.Server.Expression.Grammar.Key_ToDateTime(HX.Core.Data.Server.Expression.TOKENLink,HX.Core.Data.Server.Expression.TOKENLink@)">
<summary>
ToDateTime语句语法 ToDateTime(Expression|Operand)
</summary>
<param name="startLink">语句开始标记</param>
<param name="endLink">语句结束标记</param>
<returns></returns>
</member>
<member name="M:HX.Core.Data.Server.Expression.Grammar.Key_True(HX.Core.Data.Server.Expression.TOKENLink,HX.Core.Data.Server.Expression.TOKENLink@)">
<summary>
True语句语法 true()
</summary>
<param name="startLink"></param>
<param name="endLink"></param>
<returns></returns>
</member>
<member name="M:HX.Core.Data.Server.Expression.Grammar.Key_False(HX.Core.Data.Server.Expression.TOKENLink,HX.Core.Data.Server.Expression.TOKENLink@)">
<summary>
False语句语法 false()
</summary>
<param name="startLink"></param>
<param name="endLink"></param>
<returns></returns>
</member>
<member name="M:HX.Core.Data.Server.Expression.Grammar.Key_Analyze(HX.Core.Data.Server.Expression.TOKENLink,HX.Core.Data.Server.Expression.TOKENLink@,System.Collections.Generic.List{HX.Core.Data.Server.Expression.TOKENLink}@)">
<summary>
分解关键字 - 包含括弧表达式
</summary>
<param name="startLink">开始括弧</param>
<param name="endLink">结束括弧</param>
<param name="commaList">表达式分隔符列表</param>
</member>
<member name="T:HX.Core.Data.File.ServerFileTransfer">
<summary>
文件传输
</summary>
</member>
<member name="M:HX.Core.Data.File.ServerFileTransfer.#ctor">
<summary>
文件传输类的无参构造函数
</summary>
</member>
<member name="F:HX.Core.Data.File.ServerFileTransfer.baseDirect">
<summary>
服务端当前的路径
用于在服务端保存上传的文件的根目录
</summary>
</member>
<member name="F:HX.Core.Data.File.ServerFileTransfer.maxFileSize">
<summary>
默认的可传输的文件的大小
100MB
</summary>
</member>
<member name="M:HX.Core.Data.File.ServerFileTransfer.Upload(HX.Base.Common.CommonData.FileTransferMessage)">
<summary>
向服务端传送文件
</summary>
<param name="fileReqest">文件传送的请求</param>
</member>
<member name="M:HX.Core.Data.File.ServerFileTransfer.GetFileInfoByFolder(System.String)">
<summary>
获取指定的子文件夹下面的所有文件信息
</summary>
<param name="foldder">需要获取的子文件夹</param>
<returns></returns>
</member>
<member name="M:HX.Core.Data.File.ServerFileTransfer.DownloadRequire(System.IO.FileInfo,System.String,System.Guid)">
<summary>
客户端请求下载文件
</summary>
<param name="fileInfo">需要下载的文件的信息</param>
<param name="targetFileName">下载的程序在客户端的文件名(包含路径)</param>
<param name="clientId">客户端的唯一标识</param>
</member>
<member name="P:HX.Core.Data.File.ServerFileTransfer.BaseDirect">
<summary>
获取和设置服务器上面的文件保存的根目录
若设置的路径不是合法(已创建的路径)
则不会产生小怪
</summary>
</member>
<member name="E:HX.Core.Data.File.ServerFileTransfer.FileTransferRequired">
<summary>
文件传输请求事件
</summary>
</member>
<member name="T:HX.Core.Data.Server.Module.DataRecord.HistoryData">
<summary>
历史数据
</summary>
</member>
<member name="T:HX.Core.Data.Server.Module.IRecordable">
<summary>
可以周期记录的数据接口
</summary>
</member>
<member name="F:HX.Core.Data.Server.Module.DataRecord.HistoryData.deviceId">
<summary>
记录对应的设备id
</summary>
</member>
<member name="F:HX.Core.Data.Server.Module.DataRecord.HistoryData.mode">
<summary>
设备的运行模式
</summary>
</member>
<member name="F:HX.Core.Data.Server.Module.DataRecord.HistoryData.operatorId">
<summary>
操作员的id
</summary>
</member>
<member name="F:HX.Core.Data.Server.Module.DataRecord.HistoryData.lotNo">
<summary>
设备的生产批次编号
</summary>
</member>
<member name="F:HX.Core.Data.Server.Module.DataRecord.HistoryData.configId">
<summary>
历史数据记录组的配置的id,
</summary>
</member>
<member name="F:HX.Core.Data.Server.Module.DataRecord.HistoryData.modeVar">
<summary>
设备运行模式的变量
</summary>
</member>
<member name="F:HX.Core.Data.Server.Module.DataRecord.HistoryData.operatorIdVar">
<summary>
操作员变量
</summary>
</member>
<member name="F:HX.Core.Data.Server.Module.DataRecord.HistoryData.lotNoVar">
<summary>
批次编号的变量
</summary>
</member>
<member name="F:HX.Core.Data.Server.Module.DataRecord.HistoryData.dataVars">
<summary>
需要记录的数据对应的变量的集合
</summary>
</member>
<member name="M:HX.Core.Data.Server.Module.DataRecord.HistoryData.RelateDeviceAndConfig(HX.Base.Common.Server.IDevice,HX.Base.Common.Config.HistoryDataConfig)">
<summary>
关联设备和历史数据记录
</summary>
<param name="device">需要管理的服务端设备</param>
<param name="hisConfig">历史数据配置</param>
</member>
<member name="M:HX.Core.Data.Server.Module.DataRecord.HistoryData.GetData">
<summary>
获取历史数据日志
</summary>
<returns>返回的数据日志</returns>
</member>
<member name="P:HX.Core.Data.Server.Module.DataRecord.HistoryData.RecordPeriod">
<summary>
记录的周期单位为毫秒
</summary>
</member>
<member name="T:HX.Core.Data.Server.Module.LotModule">
<summary>
批次模块
</summary>
</member>
<member name="F:HX.Core.Data.Server.Module.LotModule.lotAndDevice">
<summary>
批次编号变量和设备的集合
</summary>
</member>
<member name="F:HX.Core.Data.Server.Module.LotModule.deviceLotDict">
<summary>
设备与当前的批次信息的集合
</summary>
</member>
<member name="M:HX.Core.Data.Server.Module.LotModule.AddDevice(HX.Base.Common.Server.IDevice,HX.Base.Common.Server.IServerVariable)">
<summary>
向模块中添加服务端设备并绑定批次状态的变量
参数lotStatusVariable的值发生改变的时候认为批次已经结束
</summary>
<param name="serverDevice">需要添加的服务端设备</param>
<param name="lotStatusVariable">绑定的批次状态变量</param>
</member>
<member name="E:HX.Core.Data.Server.Module.LotModule.LotStarted">
<summary>
批次开始事件
</summary>
</member>
<member name="E:HX.Core.Data.Server.Module.LotModule.LotEnded">
<summary>
批次结束事件
</summary>
</member>
<member name="T:HX.Core.Data.Server.Expression.Evaluator">
<summary>
表达式求值
</summary>
</member>
<member name="M:HX.Core.Data.Server.Expression.Evaluator.ExpressionEvaluate(HX.Core.Data.Server.Expression.TOKENLink,HX.Core.Data.Server.Expression.TOKENLink)">
<summary>
逻辑表达式求值
</summary>
<param name="startLink"></param>
<param name="endLink"></param>
<returns></returns>
</member>
<member name="M:HX.Core.Data.Server.Expression.Evaluator.MathEvaluate(HX.Core.Data.Server.Expression.TOKENLink,HX.Core.Data.Server.Expression.TOKENLink)">
<summary>
数表达式求值
</summary>
<param name="startLink"></param>
<param name="endLink"></param>
<returns></returns>
</member>
<member name="T:HX.Core.Data.Server.Expression.Define">
<summary>
表达式的定义
</summary>
</member>
<member name="F:HX.Core.Data.Server.Expression.Define.Operators">
<summary>
操作符集
</summary>
</member>
<member name="F:HX.Core.Data.Server.Expression.Define.KeyWords">
<summary>
关键字集
</summary>
</member>
<member name="T:HX.Core.Data.Server.Expression.Unknown">
<summary>
未知类型
</summary>
</member>
<member name="T:HX.Core.Data.Server.Expression.KeyWord">
<summary>
关键字
</summary>
</member>
<member name="M:HX.Core.Data.Server.Expression.KeyWord.#ctor(HX.Core.Data.Server.Expression.EKeyword,HX.Core.Data.Server.Expression.EDataType,System.String)">
<summary>
根据语法关键字 数据类型以及字符串值实例化关键字的实例
</summary>
<param name="type">定义的语法关键字</param>
<param name="returnType">返回值的类型</param>
<param name="value">关键字字符串值</param>
</member>
<member name="F:HX.Core.Data.Server.Expression.KeyWord.Type">
<summary>
关键字类型
</summary>
</member>
<member name="F:HX.Core.Data.Server.Expression.KeyWord.ReturnType">
<summary>
返回数据类型
</summary>
</member>
<member name="F:HX.Core.Data.Server.Expression.KeyWord.Value">
<summary>
关键字
</summary>
</member>
<member name="T:HX.Core.Data.Server.Expression.Separator">
<summary>
分隔符
</summary>
</member>
<member name="M:HX.Core.Data.Server.Expression.Separator.#ctor(System.Char)">
<summary>
根据字符串实例化分隔符
</summary>
<param name="value">输入字符串</param>
</member>
<member name="F:HX.Core.Data.Server.Expression.Separator.Value">
<summary>
分隔字符串值
</summary>
</member>
<member name="T:HX.Core.Data.Server.Expression.IOperand">
<summary>
操作数接口
</summary>
</member>
<member name="P:HX.Core.Data.Server.Expression.IOperand.Type">
<summary>
数据类型
</summary>
</member>
<member name="P:HX.Core.Data.Server.Expression.IOperand.Value">
<summary>
数据值
</summary>
</member>
<member name="T:HX.Core.Data.Server.Expression.Operand`1">
<summary>
泛型操作数
</summary>
<typeparam name="T">操作数的数据类型</typeparam>
</member>
<member name="M:HX.Core.Data.Server.Expression.Operand`1.#ctor(HX.Core.Data.Server.Expression.EDataType,`0)">
<summary>
根据操作数的数据类型以及数据值实例化泛型操作数的实例
</summary>
<param name="type">操作数的数据类型</param>
<param name="value">操作数的值</param>
</member>
<member name="M:HX.Core.Data.Server.Expression.Operand`1.ToString">
<summary>
重载类型的tostring方法
</summary>
<returns></returns>
</member>
<member name="P:HX.Core.Data.Server.Expression.Operand`1.TValue">
<summary>
获取操作数值
</summary>
</member>
<member name="P:HX.Core.Data.Server.Expression.Operand`1.Type">
<summary>
获取操作数类型
</summary>
</member>
<member name="P:HX.Core.Data.Server.Expression.Operand`1.Value">
<summary>
操作数的值
</summary>
</member>
<member name="T:HX.Core.Data.Server.Expression.Operator">
<summary>
操作符
</summary>
</member>
<member name="M:HX.Core.Data.Server.Expression.Operator.#ctor(System.Int32,System.Int32,HX.Core.Data.Server.Expression.EOperatorType,System.String)">
<summary>
根据操作数的元数、优先级、数据类型以及操作符的
字符串实例化操作符的实例
</summary>
<param name="dimension">元数</param>
<param name="pri">优先级</param>
<param name="type">操作类型</param>
<param name="value">操作符的字符串值</param>
</member>
<member name="F:HX.Core.Data.Server.Expression.Operator.Dimension">
<summary>
操作数的元数
</summary>
</member>
<member name="F:HX.Core.Data.Server.Expression.Operator.PRI">
<summary>
操作数的优先级
</summary>
</member>
<member name="F:HX.Core.Data.Server.Expression.Operator.Type">
<summary>
操作符的数据类型
</summary>
</member>
<member name="F:HX.Core.Data.Server.Expression.Operator.Value">
<summary>
操作符的字符串值
</summary>
</member>
<member name="T:HX.Core.Data.Server.Expression.IToken">
<summary>
标记接口
</summary>
</member>
<member name="P:HX.Core.Data.Server.Expression.IToken.Type">
<summary>
数据类型
</summary>
</member>
<member name="P:HX.Core.Data.Server.Expression.IToken.Index">
<summary>
数据位置
</summary>
</member>
<member name="T:HX.Core.Data.Server.Expression.TOKEN`1">
<summary>
标记
</summary>
<typeparam name="T"></typeparam>
</member>
<member name="M:HX.Core.Data.Server.Expression.TOKEN`1.#ctor(HX.Core.Data.Server.Expression.ETokenType,`0,System.Int32)">
<summary>
根据标记的类型、标记值以及标记的索引来实例化标记的实例
</summary>
<param name="type">标记的类型</param>
<param name="tag">标记值</param>
<param name="index">标记的索引</param>
</member>
<member name="P:HX.Core.Data.Server.Expression.TOKEN`1.Tag">
<summary>
获取或设置标记值
</summary>
</member>
<member name="P:HX.Core.Data.Server.Expression.TOKEN`1.Type">
<summary>
获取标记类型值
</summary>
</member>
<member name="P:HX.Core.Data.Server.Expression.TOKEN`1.Index">
<summary>
获取标记的位置
</summary>
</member>
<member name="T:HX.Core.Data.Server.Expression.Link_OP">
<summary>
链表操作
</summary>
</member>
<member name="F:HX.Core.Data.Server.Expression.Link_OP.Head">
<summary>
链表的头指针
</summary>
</member>
<member name="F:HX.Core.Data.Server.Expression.Link_OP.Tail">
<summary>
链表的尾指针
</summary>
</member>
<member name="M:HX.Core.Data.Server.Expression.Link_OP.Add(HX.Core.Data.Server.Expression.TOKENLink)">
<summary>
添加元素到链表
</summary>
<param name="token">需要添加的元素</param>
</member>
<member name="T:HX.Core.Data.Server.Expression.TOKENLink">
<summary>
标记链表
</summary>
</member>
<member name="M:HX.Core.Data.Server.Expression.TOKENLink.#ctor(HX.Core.Data.Server.Expression.IToken)">
<summary>
根据标记实例化标记链表
</summary>
<param name="token">当前的标记</param>
</member>
<member name="P:HX.Core.Data.Server.Expression.TOKENLink.Token">
<summary>
获取链表的当前值
</summary>
</member>
<member name="P:HX.Core.Data.Server.Expression.TOKENLink.Prev">
<summary>
获取或设置前一个标记链表
</summary>
</member>
<member name="P:HX.Core.Data.Server.Expression.TOKENLink.Next">
<summary>
获取或设置下一个标记链表
</summary>
</member>
<member name="T:HX.Core.Data.Server.Expression.KeyValueList`2">
<summary>
键值列表的实例
</summary>
<typeparam name="K">键的类型</typeparam>
<typeparam name="T">值的类型</typeparam>
</member>
<member name="M:HX.Core.Data.Server.Expression.KeyValueList`2.Add(`0,`1)">
<summary>
向键值列表中添加键和值
</summary>
<param name="key">需要添加的键</param>
<param name="value">对应的值</param>
</member>
<member name="P:HX.Core.Data.Server.Expression.KeyValueList`2.Item(`0)">
<summary>
根据键获取相应的值
</summary>
<param name="key"></param>
<returns></returns>
</member>
<member name="T:HX.Core.Data.Server.Module.BackupModule">
<summary>
备份模块
</summary>
</member>
<member name="F:HX.Core.Data.Server.Module.BackupModule.backupFile">
<summary>
备份的文件名称
</summary>
</member>
<member name="F:HX.Core.Data.Server.Module.BackupModule.backupData">
<summary>
备份的数据的集合
</summary>
</member>
<member name="F:HX.Core.Data.Server.Module.BackupModule.deviceVariablesDict">
<summary>
设备和变量的字典
</summary>
</member>
<member name="F:HX.Core.Data.Server.Module.BackupModule.sysVariables">
<summary>
系统变量的集合
</summary>
</member>
<member name="F:HX.Core.Data.Server.Module.BackupModule.interval">
<summary>
备份的时间间隔
</summary>
</member>
<member name="F:HX.Core.Data.Server.Module.BackupModule.backTimer">
<summary>
备份的定时器
</summary>
</member>
<member name="F:HX.Core.Data.Server.Module.BackupModule.addSynObj">
<summary>
添加系统数据的锁
</summary>
</member>
<member name="M:HX.Core.Data.Server.Module.BackupModule.AddDeviceAndVariable(HX.Base.Common.Server.IDevice,HX.Base.Common.Server.IServerVariable)">
<summary>
向模块中添加设备和变量
</summary>
<param name="device">需要添加的设备</param>
<param name="variable">需要添加的变量</param>
</member>
<member name="M:HX.Core.Data.Server.Module.BackupModule.variable_ValueChanged(System.Object,HX.Base.Common.Server.VarValueChangedEventArgs)">
<summary>
变量的中发生变化的时间
</summary>
<param name="sender"></param>
<param name="e"></param>
</member>
<member name="M:HX.Core.Data.Server.Module.BackupModule.AddSystemVariable(HX.Base.Common.Server.IServerVariable)">
<summary>
添加需要备份的系统值的集合
</summary>
<param name="variable">需要添加来备份的系统系统变量</param>
</member>
<member name="M:HX.Core.Data.Server.Module.BackupModule.GetDeviceValues">
<summary>
获取需要备份的设备值的集合
</summary>
<returns>需要备份的设备值的集合</returns>
</member>
<member name="M:HX.Core.Data.Server.Module.BackupModule.GetSystemValues">
<summary>
获取需要备份的系统变量的值的集合
</summary>
<returns>需要备份的系统变量的值的集合</returns>
</member>
<member name="M:HX.Core.Data.Server.Module.BackupModule.#ctor">
<summary>
实例化备份模块的无参构造函数
</summary>
</member>
<member name="M:HX.Core.Data.Server.Module.BackupModule.StartWork">
<summary>
开始运行
</summary>
</member>
<member name="M:HX.Core.Data.Server.Module.BackupModule.StopWork">
<summary>
模块停止工作
</summary>
</member>
<member name="T:HX.Core.Data.Server.Initialization.SystemValueItem">
<summary>
系统值项目
与设备无关的变量值
</summary>
</member>
<member name="P:HX.Core.Data.Server.Initialization.SystemValueItem.VariableId">
<summary>
变量的id
</summary>
</member>
<member name="P:HX.Core.Data.Server.Initialization.SystemValueItem.VariableValue">
<summary>
变量值的字符串形式
</summary>
</member>
<member name="T:HX.Core.Data.Server.Module.AlarmModule">
<summary>
报警模块
</summary>
</member>
<member name="F:HX.Core.Data.Server.Module.AlarmModule.alarmConfigs">
<summary>
报警配置的集合
</summary>
</member>
<member name="F:HX.Core.Data.Server.Module.AlarmModule.devices">
<summary>
设备的集合
</summary>
</member>
<member name="F:HX.Core.Data.Server.Module.AlarmModule.alarms">
<summary>
设备和报警的集合
</summary>
</member>
<member name="M:HX.Core.Data.Server.Module.AlarmModule.#ctor(System.Collections.Generic.List{HX.Base.Common.Server.IDevice},System.Collections.Generic.List{HX.Base.Common.Config.AlarmConfig})">
<summary>
服务端设备的集合以及报警配置的集合实例化报警模块
</summary>
<param name="serverDevices">服务端设备的集合</param>
<param name="configs">配置的集合</param>
</member>
<member name="M:HX.Core.Data.Server.Module.AlarmModule.AddDeviceAndConfig(System.Collections.Generic.List{HX.Base.Common.Server.IDevice},System.Collections.Generic.List{HX.Base.Common.Config.AlarmConfig})">
<summary>
向模块中添加服务端设备的集合以及变量配置的集合
</summary>
<param name="serverDevices">服务端设备的集合</param>
<param name="configs">配置的集合</param>
</member>
<member name="M:HX.Core.Data.Server.Module.AlarmModule.GetCurrentAlarmByDevice(HX.Base.Common.Server.IDevice)">
<summary>
获取当前的报警序号的集合
</summary>
<param name="device">需要查找的变量的集合</param>
<returns></returns>
</member>
<member name="M:HX.Core.Data.Server.Module.AlarmModule.AddDevice(System.Collections.Generic.List{HX.Base.Common.Server.IDevice})">
<summary>
向中心中添加服务端设备集合
</summary>
<param name="serverDevices">需要添加服务端设备的集合</param>
</member>
<member name="M:HX.Core.Data.Server.Module.AlarmModule.AddConfigs(System.Collections.Generic.List{HX.Base.Common.Config.AlarmConfig})">
<summary>
向模块中添加报警信息配置的集合
</summary>
<param name="configs">需要添加的配置的集合</param>
</member>
<member name="E:HX.Core.Data.Server.Module.AlarmModule.AlarmChanged">
<summary>
报警状态发生改变事件
</summary>
</member>
<member name="E:HX.Core.Data.Server.Module.AlarmModule.AlarmLogGenerated">
<summary>
报警日志产生事件
</summary>
</member>
<member name="T:HX.Core.Data.Server.Module.HistoryDataModule">
<summary>
历史数据记录模块
</summary>
</member>
<member name="F:HX.Core.Data.Server.Module.HistoryDataModule.broker">
<summary>
记录代理模块
</summary>
</member>
<member name="F:HX.Core.Data.Server.Module.HistoryDataModule.configs">
<summary>
历史数据模块的配置
</summary>
</member>
<member name="F:HX.Core.Data.Server.Module.HistoryDataModule.devices">
<summary>
模块中的设备集合
</summary>
</member>
<member name="F:HX.Core.Data.Server.Module.HistoryDataModule.datas">
<summary>
历史数据日志记录的集合
</summary>
</member>
<member name="M:HX.Core.Data.Server.Module.HistoryDataModule.AddConfig(System.Collections.Generic.List{HX.Base.Common.Config.HistoryDataConfig})">
<summary>
添加历史数据配置的集合
</summary>
<param name="historyDataConfigs">历史数据配置的集合</param>
</member>
<member name="M:HX.Core.Data.Server.Module.HistoryDataModule.AddDevice(HX.Base.Common.Server.IDevice)">
<summary>
向历史数据模块中添加设备类的接
</summary>
<param name="device"></param>
</member>
<member name="F:HX.Core.Data.Server.Module.HistoryDataModule.isRuning">
<summary>
模块是否在运行
</summary>
</member>
<member name="M:HX.Core.Data.Server.Module.HistoryDataModule.Run">
<summary>
历史数据模块开始运行
</summary>
</member>
<member name="M:HX.Core.Data.Server.Module.HistoryDataModule.Stop">
<summary>
历史数据模块停止运行
</summary>
</member>
<member name="F:HX.Core.Data.Server.Module.HistoryDataModule.isDisposed">
<summary>
资源是否释放的标识
</summary>
</member>
<member name="M:HX.Core.Data.Server.Module.HistoryDataModule.Dispose">
<summary>
释放module的资源
</summary>
</member>
<member name="E:HX.Core.Data.Server.Module.HistoryDataModule.HistoryDataGenerated">
<summary>
历史数据记录生成事件
</summary>
</member>
<member name="T:HX.Core.Data.File.ClientFileTransfer">
<summary>
客户端的文件接收类
</summary>
</member>
<member name="F:HX.Core.Data.File.ClientFileTransfer.baseDirectory">
<summary>
服务端当前的路径
用于在服务端保存上传的文件的根目录
</summary>
</member>
<member name="M:HX.Core.Data.File.ClientFileTransfer.Download(HX.Base.Common.CommonData.FileTransferMessage)">
<summary>
服务端向客户端传送文件
</summary>
<param name="fileReqest">文件传送的请求</param>
</member>
<member name="P:HX.Core.Data.File.ClientFileTransfer.BaseDirectory">
<summary>
默认的根目录
</summary>
</member>
<member name="T:HX.Core.Data.Server.Expression.ToolBox">
<summary>
工具箱
</summary>
</member>
<member name="M:HX.Core.Data.Server.Expression.ToolBox.InfixToPostfix(HX.Core.Data.Server.Expression.TOKENLink,HX.Core.Data.Server.Expression.TOKENLink)">
<summary>
中缀表达式转后缀表达式
-1*6+5*(2+3) 转换成 1 - 6 * 5 2 3 + * +
</summary>
<param name="startLink"></param>
<param name="endLink"></param>
<returns></returns>
</member>
<member name="T:HX.Core.Data.Server.Expression.PhraseAnalyzer">
<summary>
词法分析器
</summary>
</member>
<member name="M:HX.Core.Data.Server.Expression.PhraseAnalyzer.Analyze">
<summary>
词法分析
</summary>
</member>
<member name="M:HX.Core.Data.Server.Expression.PhraseAnalyzer.AddToLink(System.Int32,System.Int32,HX.Core.Data.Server.Expression.EDFAState)">
<summary>
加入链表
</summary>
<param name="startpos">开始位</param>
<param name="endpos">结束位</param>
<param name="state">处理状态</param>
</member>
<member name="T:HX.Core.Data.Server.Module.OnlineStatusModule">
<summary>
设备在线状态模块
</summary>
</member>
<member name="F:HX.Core.Data.Server.Module.OnlineStatusModule.statusDict">
<summary>
设备的实时在线状态
</summary>
</member>
<member name="F:HX.Core.Data.Server.Module.OnlineStatusModule.manualStatusDict">
<summary>
被服务端手动设置的在线状态的集合
</summary>
</member>
<member name="M:HX.Core.Data.Server.Module.OnlineStatusModule.AddDevice(System.Int32)">
<summary>
向模块中添加需要管理的设备id
</summary>
<param name="deviceId"></param>
</member>
<member name="M:HX.Core.Data.Server.Module.OnlineStatusModule.GetOnlineStatus(System.Int32)">
<summary>
获取指定设备的在线状态
</summary>
<param name="deviceId">设备的id</param>
<returns></returns>
</member>
<member name="M:HX.Core.Data.Server.Module.OnlineStatusModule.RefreshStatus(System.Int32,System.Boolean)">
<summary>
刷新设备的在线状态
</summary>
<param name="deviceId"></param>
<param name="status"></param>
</member>
<member name="M:HX.Core.Data.Server.Module.OnlineStatusModule.ManualRefreshStatus(System.Int32,System.Boolean)">
<summary>
服务端手动设置设备的在线状态
</summary>
<param name="deviceId"></param>
<param name="status"></param>
</member>
<member name="M:HX.Core.Data.Server.Module.OnlineStatusModule.IsManualOffline(System.Int32)">
<summary>
获取指定的设备是否被手动设置为离线的状态
</summary>
<param name="deviceId">需要获取的设备id</param>
<returns></returns>
</member>
<member name="T:HX.Core.Data.Server.Initialization.DeviceValueItem">
<summary>
用于记录设备的变量id与文本格式的值
</summary>
</member>
<member name="P:HX.Core.Data.Server.Initialization.DeviceValueItem.DeviceId">
<summary>
设备id
</summary>
</member>
<member name="P:HX.Core.Data.Server.Initialization.DeviceValueItem.VariableId">
<summary>
变量的id
</summary>
</member>
<member name="P:HX.Core.Data.Server.Initialization.DeviceValueItem.VariableValue">
<summary>
变量的值
</summary>
</member>
<member name="T:HX.Core.Data.Server.Initialization.BackupData">
<summary>
系统中需要备份的的数据
</summary>
</member>
<member name="M:HX.Core.Data.Server.Initialization.BackupData.#ctor">
<summary>
实例化备份数据的无参构造函数
</summary>
</member>
<member name="F:HX.Core.Data.Server.Initialization.BackupData.deviceVariableSynObj">
<summary>
设备同步的锁
</summary>
</member>
<member name="M:HX.Core.Data.Server.Initialization.BackupData.AddOrUpDataDeviceValue(System.Int32,System.Int32,System.String)">
<summary>
添加或者刷新需要保存的变量的值
</summary>
<param name="deviceId">设备的id</param>
<param name="variableId">变量的id</param>
<param name="variableValue">变量的值</param>
</member>
<member name="M:HX.Core.Data.Server.Initialization.BackupData.AddOrUpDataSystemValue(System.Int32,System.String)">
<summary>
添加或更新系统变量的值
</summary>
<param name="variableId">变量的id</param>
<param name="variableValue">变量的值</param>
</member>
<member name="P:HX.Core.Data.Server.Initialization.BackupData.DeviceValues">
<summary>
需要备份的设备数据
</summary>
</member>
<member name="P:HX.Core.Data.Server.Initialization.BackupData.SystemValues">
<summary>
需要备份的系统数据
</summary>
</member>
<member name="T:HX.Core.Data.Server.Expression.SyntaxAnalyzer">
<summary>
语法分析
</summary>
</member>
<member name="M:HX.Core.Data.Server.Expression.SyntaxAnalyzer.Execute(HX.Core.Data.Server.Expression.TOKENLink,HX.Core.Data.Server.Expression.TOKENLink)">
<summary>
执行语法检查
</summary>
<param name="startLink"></param>
<param name="endLink"></param>
<returns></returns>
</member>
<member name="M:HX.Core.Data.Server.Expression.SyntaxAnalyzer.Analyze(HX.Core.Data.Server.Expression.TOKENLink,HX.Core.Data.Server.Expression.TOKENLink)">
<summary>
分析函数
</summary>
<param name="startLink"></param>
<param name="endLink"></param>
</member>
<member name="M:HX.Core.Data.Server.Expression.SyntaxAnalyzer.TokenEnvirAnalyze(HX.Core.Data.Server.Expression.TOKENLink,HX.Core.Data.Server.Expression.TOKENLink)">
<summary>
去关键字后 检查标记应用环境(不检查操作符与数据类型匹配关系)
</summary>
<param name="startLink"></param>
<param name="endLink"></param>
</member>
<member name="M:HX.Core.Data.Server.Expression.SyntaxAnalyzer.OperatorEvalAnalyze(HX.Core.Data.Server.Expression.TOKENLink,HX.Core.Data.Server.Expression.TOKENLink)">
<summary>
检查操作符与操作数的类型匹配
</summary>
<param name="startLink"></param>
<param name="endLink"></param>
</member>
<member name="T:HX.Core.Data.EventData.LotStatusChangeEventArgs">
<summary>
批次开始的事件
</summary>
</member>
<member name="M:HX.Core.Data.EventData.LotStatusChangeEventArgs.#ctor(HX.Base.Common.Logs.LotInfo)">
<summary>
根据批次信息创建批次状态改变的事件的数据载体
</summary>
<param name="lotInfo">批次信息</param>
</member>
<member name="P:HX.Core.Data.EventData.LotStatusChangeEventArgs.LotInfo">
<summary>
批次信息
</summary>
</member>
<member name="T:HX.Core.Data.File.FileTransferRequiredEventArgs">
<summary>
文件传输请求
</summary>
</member>
<member name="M:HX.Core.Data.File.FileTransferRequiredEventArgs.#ctor(HX.Base.Common.CommonData.FileTransferMessage,System.Guid)">
<summary>
根据传输的文件的信息以及标识实例化FileTransferRequiredEventArgs类
</summary>
<param name="fileTransferMessage">需要传输的文件信息</param>
<param name="clientId">唯一标识</param>
</member>
<member name="P:HX.Core.Data.File.FileTransferRequiredEventArgs.FileTransferMessage">
<summary>
文件传输的信息
</summary>
</member>
<member name="P:HX.Core.Data.File.FileTransferRequiredEventArgs.ClientId">
<summary>
客户端id
</summary>
</member>
<member name="T:HX.Core.Data.Server.Module.RecordModule">
<summary>
操作记录模块
</summary>
</member>
<member name="T:HX.Core.Data.Server.Module.RecordBroker">
<summary>
记录的代理类
</summary>
</member>
<member name="F:HX.Core.Data.Server.Module.RecordBroker.brokerTimer">
<summary>
记录代理的定时器
</summary>
</member>
<member name="F:HX.Core.Data.Server.Module.RecordBroker.recordInterval">
<summary>
默认的定时器的定时间隔为1000ms
</summary>
</member>
<member name="F:HX.Core.Data.Server.Module.RecordBroker.currentCount">
<summary>
定时器当前循环的次数
</summary>
</member>
<member name="F:HX.Core.Data.Server.Module.RecordBroker.recordList">
<summary>
需要记录集合
</summary>
</member>
<member name="F:HX.Core.Data.Server.Module.RecordBroker.currentRecords">
<summary>
当前需要记录的记录的队列
</summary>
</member>
<member name="M:HX.Core.Data.Server.Module.RecordBroker.#ctor(System.Collections.Generic.List{HX.Core.Data.Server.Module.IRecordable})">
<summary>
需要记录的集合来实例化记录代理类
</summary>
<param name="recordList">需要代理的记录的集合</param>
</member>
<member name="F:HX.Core.Data.Server.Module.RecordBroker.isDisposed">
<summary>
是否释放了该资源
</summary>
</member>
<member name="M:HX.Core.Data.Server.Module.RecordBroker.Start">
<summary>
开始代理
</summary>
</member>
<member name="M:HX.Core.Data.Server.Module.RecordBroker.Stop">
<summary>
停止代理
</summary>
</member>
<member name="M:HX.Core.Data.Server.Module.RecordBroker.Restart">
<summary>
重新启动代理
</summary>
</member>
<member name="M:HX.Core.Data.Server.Module.RecordBroker.Dispose">
<summary>
释放资源
</summary>
</member>
<member name="E:HX.Core.Data.Server.Module.RecordBroker.DataRecordRequired">
<summary>
数据需要记录的事件
</summary>
</member>
<member name="T:HX.Core.Data.Server.Module.RecordBroker.DataRecordRequiredHandler">
<summary>
数据记录需要记录的委托
</summary>
<param name="records">需要记录的数据</param>
</member>
<member name="T:HX.Core.Data.Server.Module.Alarm">
<summary>
服务端的报警类
</summary>
</member>
<member name="F:HX.Core.Data.Server.Module.Alarm.ex">
<summary>
解析表达式
</summary>
</member>
<member name="F:HX.Core.Data.Server.Module.Alarm.variableIndexs">
<summary>
服务端变量和其在表达式中的索引的记录
</summary>
</member>
<member name="P:HX.Core.Data.Server.Module.Alarm.IsGenerated">
<summary>
报警是否生成
</summary>
</member>
<member name="P:HX.Core.Data.Server.Module.Alarm.Status">
<summary>
报警状态
</summary>
</member>
<member name="P:HX.Core.Data.Server.Module.Alarm.DeviceId">
<summary>
获取报警对应的设备的id
</summary>
</member>
<member name="P:HX.Core.Data.Server.Module.Alarm.Level">
<summary>
报警的级别
</summary>
</member>
<member name="E:HX.Core.Data.Server.Module.Alarm.AlarmChanged">
<summary>
报警发生改变的事件
</summary>
</member>
<member name="P:HX.Core.Data.Server.Module.Alarm.Id">
<summary>
报警的id
</summary>
</member>
</members>
</doc>
File added
MqttLib.dll以及Newtonsoft.Json.dll 用于与设备监控的服务器通讯
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment