|
|
|
|
using System;
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using System.Reflection;
|
|
|
|
|
using System.Text;
|
|
|
|
|
using System.IO;
|
|
|
|
|
using System.Linq;
|
|
|
|
|
using System.Windows.Forms;
|
|
|
|
|
using System.Xml;
|
|
|
|
|
using ICSharpCode.Core;
|
|
|
|
|
using ICSharpCode.Core.Services;
|
|
|
|
|
using Mesnac.Action.ChemicalWeighing.FinishBatch;
|
|
|
|
|
using Mesnac.Gui.Run.Global;
|
|
|
|
|
namespace MCRun
|
|
|
|
|
{
|
|
|
|
|
using Mesnac.Core.Service;
|
|
|
|
|
using Mesnac.DoUtils;
|
|
|
|
|
using Mesnac.Gui.Workbench;
|
|
|
|
|
using Mesnac.PlcUtils;
|
|
|
|
|
using Mesnac.PlcUtils.common;
|
|
|
|
|
using Mesnac.PlcUtils.enumInfo;
|
|
|
|
|
using Mesnac.PlcUtils.Impl;
|
|
|
|
|
using System.Drawing.Drawing2D;
|
|
|
|
|
|
|
|
|
|
class Program
|
|
|
|
|
{
|
|
|
|
|
[STAThread]
|
|
|
|
|
static void Main(string[] args)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
Timer timer = new Timer();
|
|
|
|
|
|
|
|
|
|
if (Mesnac.Basic.ProcessHelper.HaveRunningInstance())
|
|
|
|
|
{
|
|
|
|
|
Mesnac.Basic.MessageBoxTimeOut.Show("The application is running, Please be patient...", "Caption", 2000);
|
|
|
|
|
Application.Exit();
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
Application.EnableVisualStyles();
|
|
|
|
|
Application.SetCompatibleTextRenderingDefault(false);
|
|
|
|
|
//初始化服务管理器
|
|
|
|
|
MesnacServiceManager.Init();
|
|
|
|
|
|
|
|
|
|
#region 授权处理
|
|
|
|
|
|
|
|
|
|
#if (!DEBUG)
|
|
|
|
|
//MesnacServiceManager.Instance.LoggingService.Info("软件授权...");
|
|
|
|
|
//if (!Mesnac.Basic.Register.IsExist("MCRun") || Mesnac.Basic.Register.GetRegData("MCRun") != Mesnac.Basic.Register.GetRegCode())
|
|
|
|
|
//{
|
|
|
|
|
// Mesnac.Gui.Run.FrmRegister frmRegister = new Mesnac.Gui.Run.FrmRegister();
|
|
|
|
|
// frmRegister.ShowDialog();
|
|
|
|
|
// if (frmRegister.DialogResult == DialogResult.Cancel)
|
|
|
|
|
// {
|
|
|
|
|
// Application.Exit();
|
|
|
|
|
// return;
|
|
|
|
|
// }
|
|
|
|
|
//}
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
ICSharpCode.Core.LoggingService<Program>.Info("starting the application...");
|
|
|
|
|
//MesnacServiceManager.Instance.LoggingService.Info("starting the application...");
|
|
|
|
|
//ICSharpCode.Core.LoggingService.Info("starting the application...");
|
|
|
|
|
Assembly exe = typeof(Program).Assembly;
|
|
|
|
|
FileUtility.ApplicationRootPath = Path.GetDirectoryName(exe.Location);
|
|
|
|
|
|
|
|
|
|
CoreStartup cs = new CoreStartup("MCRun");
|
|
|
|
|
//设备配置文件目录
|
|
|
|
|
cs.ConfigDirectory = Path.Combine(FileUtility.ApplicationRootPath, "Data", "Config");
|
|
|
|
|
|
|
|
|
|
ICSharpCode.Core.LoggingService<Program>.Info("starting core services...");
|
|
|
|
|
cs.StartCoreServices();
|
|
|
|
|
//注册资源文件,文本和图片
|
|
|
|
|
ResourceService.RegisterNeutralStrings(new System.Resources.ResourceManager("MCRun.Properties.SDRes", exe));
|
|
|
|
|
ResourceService.RegisterNeutralImages(new System.Resources.ResourceManager("MCRun.Properties.SDRes", exe));
|
|
|
|
|
|
|
|
|
|
ResourceService.RegisterNeutralStrings(new System.Resources.ResourceManager("MCRun.Properties.MesnacResource", exe));
|
|
|
|
|
ResourceService.RegisterNeutralImages(new System.Resources.ResourceManager("MCRun.Properties.MesnacResource", exe));
|
|
|
|
|
|
|
|
|
|
ResourceService.RegisterNeutralStrings(new System.Resources.ResourceManager("MCRun.Properties.Mesnac.Common", exe));
|
|
|
|
|
ResourceService.RegisterNeutralImages(new System.Resources.ResourceManager("MCRun.Properties.Mesnac.Common", exe));
|
|
|
|
|
|
|
|
|
|
ResourceService.RegisterNeutralStrings(new System.Resources.ResourceManager("MCRun.Properties.Mesnac.Run", exe));
|
|
|
|
|
ResourceService.RegisterNeutralImages(new System.Resources.ResourceManager("MCRun.Properties.Mesnac.Run", exe));
|
|
|
|
|
|
|
|
|
|
ResourceService.RegisterNeutralStrings(new System.Resources.ResourceManager("MCRun.Properties.Mesnac.Controls.Default", exe));
|
|
|
|
|
ResourceService.RegisterNeutralImages(new System.Resources.ResourceManager("MCRun.Properties.Mesnac.Controls.Default", exe));
|
|
|
|
|
|
|
|
|
|
ResourceService.RegisterNeutralStrings(new System.Resources.ResourceManager("MCRun.Properties.Mesnac.Action.Default", exe));
|
|
|
|
|
ResourceService.RegisterNeutralImages(new System.Resources.ResourceManager("MCRun.Properties.Mesnac.Action.Default", exe));
|
|
|
|
|
|
|
|
|
|
ResourceService.RegisterNeutralStrings(new System.Resources.ResourceManager("MCRun.Properties.Mesnac.Action.ChemicalWeighing", exe));
|
|
|
|
|
ResourceService.RegisterNeutralImages(new System.Resources.ResourceManager("MCRun.Properties.Mesnac.Action.ChemicalWeighing", exe));
|
|
|
|
|
|
|
|
|
|
AddInTree.Doozers.TryAdd("Pad", new Mesnac.PlugIn.Pad.PadDoozer());
|
|
|
|
|
|
|
|
|
|
ICSharpCode.Core.LoggingService<Program>.Debug("searching plugins...");
|
|
|
|
|
cs.AddAddInsFromDirectory(Path.Combine(FileUtility.ApplicationRootPath, "Data", "SharpPlugIn"));
|
|
|
|
|
|
|
|
|
|
ICSharpCode.Core.LoggingService<Program>.Debug("loadding plugins...");
|
|
|
|
|
cs.RunInitialization();
|
|
|
|
|
|
|
|
|
|
ICSharpCode.Core.LoggingService<Program>.Debug("initializing workbench...");
|
|
|
|
|
WorkbenchSingleton.InitFinished += delegate(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
ICSharpCode.Core.LoggingService<Program>.Debug("initializing run engine...");
|
|
|
|
|
string projectPath = Path.Combine(Application.StartupPath, AppConfigHandler.Instance.MCProjectPath); //组态工程路径
|
|
|
|
|
if (Mesnac.Gui.Common.RunEngine.Instance.Init(projectPath, true, true, true)) //初始化运行引擎
|
|
|
|
|
{
|
|
|
|
|
AppConfigHandler.Instance.InitCustomerMenuAndToolStrip(WorkbenchSingleton.Workbench.TopMenu, WorkbenchSingleton.Workbench.ToolStrip); //初始化自定义系统菜单和工具栏
|
|
|
|
|
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
var instance = Mesnac.Equips.Factory.Instance.ConfigFile;
|
|
|
|
|
XmlDocument doc = new XmlDocument();
|
|
|
|
|
doc.Load(instance);
|
|
|
|
|
var nodes = doc.ChildNodes[1].ChildNodes[0].ChildNodes[0].ChildNodes[4].ChildNodes[0];
|
|
|
|
|
var ip = nodes.Attributes["value"].Value;
|
|
|
|
|
//初始化HslCommunication 11.0.6.0
|
|
|
|
|
PlcBusiness.Instance.InitPlcConnect(PlcType.SiemensPlc,ip, 102);
|
|
|
|
|
}
|
|
|
|
|
catch (Exception exception)
|
|
|
|
|
{
|
|
|
|
|
ICSharpCode.Core.LoggingService<Program>.Debug("HSLPlc读取失败");
|
|
|
|
|
}
|
|
|
|
|
//初始化连接报警器
|
|
|
|
|
DoControl.Instance.ComOn();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 设置触发间隔时间(以毫秒为单位)
|
|
|
|
|
timer.Interval = 1500; // 1000 毫秒 = 1 秒
|
|
|
|
|
// 绑定 Tick 事件处理程序
|
|
|
|
|
timer.Tick += new EventHandler(new Program().Timer_Tick);
|
|
|
|
|
// 启动 Timer
|
|
|
|
|
timer.Start();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//if (!Mesnac.Basic.InfluxDbHelper.Instance.IsStartDbServer)
|
|
|
|
|
//{
|
|
|
|
|
// ICSharpCode.Core.LoggingService<Program>.Debug("starting InfluxDb server...");
|
|
|
|
|
// Mesnac.Basic.InfluxDbHelper.Instance.StartDbServer();
|
|
|
|
|
//}
|
|
|
|
|
//else
|
|
|
|
|
//{
|
|
|
|
|
// ICSharpCode.Core.LoggingService<Program>.Debug("InfluxDb server is started...");
|
|
|
|
|
//}
|
|
|
|
|
|
|
|
|
|
ICSharpCode.Core.LoggingService<Program>.Debug("starting communication server...");
|
|
|
|
|
//Mesnac.Communication.TcpService.StartService(); //启动通信服务器
|
|
|
|
|
//Mesnac.Basic.SocketClient.Instance.Connect();
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
WorkbenchSingleton.InitializeWorkbench();
|
|
|
|
|
|
|
|
|
|
ICSharpCode.Core.LoggingService<Program>.Debug("starting workbench...");
|
|
|
|
|
Form frmMain = WorkbenchSingleton.Workbench as Form;
|
|
|
|
|
|
|
|
|
|
if (String.IsNullOrEmpty(Mesnac.Basic.UserInfo.Instance.RoleGUID) || String.IsNullOrEmpty(Mesnac.Basic.UserInfo.Instance.UserName))
|
|
|
|
|
{
|
|
|
|
|
Mesnac.Basic.UserInfo.Instance.RoleGUID = "-99"; //设置用户角色
|
|
|
|
|
//Mesnac.Basic.UserInfo.Instance.UserGUID = "";
|
|
|
|
|
//Mesnac.Basic.UserInfo.Instance.UserName = "mesnac";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#region 显示当前用户
|
|
|
|
|
|
|
|
|
|
Mesnac.Basic.UserInfo.Instance.TriggerReLoginEvent();
|
|
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
WorkbenchSingleton.Workbench.CloseFlag = true;
|
|
|
|
|
|
|
|
|
|
Application.Run(frmMain);
|
|
|
|
|
|
|
|
|
|
PropertyService.Save();
|
|
|
|
|
//Mesnac.Communication.TcpService.StopService(); //停止通信服务器
|
|
|
|
|
//Mesnac.Basic.SocketClient.Instance.Disconnect();
|
|
|
|
|
//退出系统之前,关闭相关文档
|
|
|
|
|
Mesnac.Gui.Common.RunEngine.Instance.CloseAllForms();
|
|
|
|
|
Mesnac.Gui.Workbench.WorkbenchSingleton.Workbench.CloseAllViews();
|
|
|
|
|
|
|
|
|
|
ICSharpCode.Core.LoggingService<Program>.Info("closed the application.");
|
|
|
|
|
//关闭当前线程
|
|
|
|
|
System.Environment.Exit(System.Environment.ExitCode);
|
|
|
|
|
Application.ExitThread();
|
|
|
|
|
Application.Exit();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private void Timer_Tick(object sender, EventArgs e)
|
|
|
|
|
{
|
|
|
|
|
// 定时触发的操作
|
|
|
|
|
FinishBatchService.Instance.Start();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|