|
@@ -0,0 +1,66 @@
|
|
|
+using OxfordExtenderWrapper;
|
|
|
+using System;
|
|
|
+using System.Collections.Generic;
|
|
|
+using System.Diagnostics;
|
|
|
+using System.Linq;
|
|
|
+using System.Runtime.Remoting.Channels;
|
|
|
+using System.Runtime.Remoting.Channels.Ipc;
|
|
|
+using System.Text;
|
|
|
+using System.Threading;
|
|
|
+using System.Threading.Tasks;
|
|
|
+using System.Windows.Forms;
|
|
|
+
|
|
|
+namespace OTSMeasureApp.ServiceCenter.OxfordExtender
|
|
|
+{
|
|
|
+ static class ExtenderWrapperIpc
|
|
|
+ {
|
|
|
+ static ExtenderWrapper extenderRemoteObj=null;
|
|
|
+
|
|
|
+
|
|
|
+ public static ExtenderWrapper GetExtenderWrapper()
|
|
|
+ {
|
|
|
+ if (extenderRemoteObj == null)
|
|
|
+ {
|
|
|
+ Process[] processes = Process.GetProcessesByName("OxfordExtenderWrapper");
|
|
|
+ System.Diagnostics.Process p;
|
|
|
+ if (processes.Length == 0)
|
|
|
+ {
|
|
|
+ p = System.Diagnostics.Process.Start(Application.StartupPath + "\\OxfordExtender\\OxfordExtenderWrapper.exe", "hide");
|
|
|
+ Thread.Sleep(800);
|
|
|
+
|
|
|
+ IpcClientChannel channel = new IpcClientChannel();
|
|
|
+ //Register the channel with ChannelServices.
|
|
|
+ ChannelServices.RegisterChannel(channel, false);
|
|
|
+ extenderRemoteObj = (ExtenderWrapper)Activator.GetObject(typeof(ExtenderWrapper), "ipc://ExtenderServerChannel/ExtenderWrapper");
|
|
|
+
|
|
|
+ extenderRemoteObj.ConnectToEDSHardware();
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ IpcClientChannel channel = new IpcClientChannel();
|
|
|
+ //Register the channel with ChannelServices.
|
|
|
+ ChannelServices.RegisterChannel(channel, false);
|
|
|
+ extenderRemoteObj = (ExtenderWrapper)Activator.GetObject(typeof(ExtenderWrapper), "ipc://ExtenderServerChannel/ExtenderWrapper");
|
|
|
+
|
|
|
+ extenderRemoteObj.ConnectToEDSHardware();
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+ return extenderRemoteObj;
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ internal static void CloseExtenderWrapper()
|
|
|
+ {
|
|
|
+ Process[] processes = Process.GetProcessesByName("OxfordExtenderWrapper");
|
|
|
+
|
|
|
+ if (processes.Length!=0)
|
|
|
+ {
|
|
|
+ processes[0].Kill();
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|