ソースを参照

apply the singleton pattern to the whole hardware control.

gsp 3 年 前
コミット
280f546eed

+ 16 - 17
OTSCPP/OTSClrInterface/ControlClr/OTSControlFunExport.h

@@ -40,22 +40,15 @@ namespace OTSCLRINTERFACE
 	public ref class COTSControlFunExport
 	{
 	public:
-		/*static COTSControlFunExport^ GetControllerInstance()
+		static COTSControlFunExport^ GetControllerInstance()
 		{
 			if (theInstance == nullptr)
 			{
 				theInstance = gcnew COTSControlFunExport();
 			}
 			return theInstance;
-		}*/
-		COTSControlFunExport()
-		{
-
-			m_pHardWareMgr = new COTSHardwareMgr();
-			
-
-
 		}
+		
 
 		~COTSControlFunExport()
 		{
@@ -99,7 +92,14 @@ namespace OTSCLRINTERFACE
 		//ºÍµç¾µ½¨Á¢Í¨Ñ¶Á¬½Ó
 		bool ConncetSem()
 		{
-
+			if (!Init())
+			{
+				return false;
+			}
+			if (m_pSem->IsConnected())
+			{
+				return true;
+			}
 			BOOL bRev = m_pSem->Connect();
 			return bRev;
 		}
@@ -711,22 +711,21 @@ namespace OTSCLRINTERFACE
 
 			bool bRet = (bool)m_pScan->MoveBeamTo(pt);
 
-			
-			
-			
 			return bRet;
 		}
 		bool SetPointScan(int a_nMatrixIndex)
 		{
 			bool bRet = (bool)m_pScan->SetPointScan(a_nMatrixIndex);
 
-			
-			
-			
 			return bRet;
 		}
 	private:
-		
+		COTSControlFunExport()
+		{
+
+			m_pHardWareMgr = new COTSHardwareMgr();
+
+		}
 	
 		 COTSSemBase* m_pSem;
 		

+ 11 - 11
OTSCPP/OTSControl/COTSHardwareMgr.cpp

@@ -81,20 +81,20 @@ namespace OTSController {
 				{
 
 						m_SemBasePtr = CSemBasePtr(new COTSSEMBruker());
-						LogInfoTrace(__FILE__, __LINE__, "(COTSHardwareMgr::GetSemControllerMgrPtr) new COTSSEMBruker() ");
+						//LogInfoTrace(__FILE__, __LINE__, "(COTSHardwareMgr::GetSemControllerMgrPtr) new COTSSEMBruker() ");
 						break;
 				}
 				case (int)SEM_DEV_ID::OFFLINE:
 				{
 						m_SemBasePtr = CSemBasePtr(new COTSSemSim());
-						LogInfoTrace(__FILE__, __LINE__, "(COTSHardwareMgr::GetSemControllerMgrPtr) new COTSSemSim() ");
+						//LogInfoTrace(__FILE__, __LINE__, "(COTSHardwareMgr::GetSemControllerMgrPtr) new COTSSemSim() ");
          				break;
 				}
 				case (int)SEM_DEV_ID::OXFORD:
 				{
 	
 						m_SemBasePtr = CSemBasePtr(new COTSSEMOxford());
-						LogInfoTrace(__FILE__, __LINE__, "(COTSHardwareMgr::GetSemControllerMgrPtr) new COTSSEMOxford() ");
+						//LogInfoTrace(__FILE__, __LINE__, "(COTSHardwareMgr::GetSemControllerMgrPtr) new COTSSEMOxford() ");
 				
 					break;
 				}
@@ -131,7 +131,7 @@ namespace OTSController {
 				{
 			
 						m_EDSPtr = COTSEDSBasePtr(new COTSEDSBrucker());
-						LogInfoTrace(__FILE__, __LINE__, "(COTSHardwareMgr::GetEDSControllerPtr) new COTSEDSBrucker() ");
+						//LogInfoTrace(__FILE__, __LINE__, "(COTSHardwareMgr::GetEDSControllerPtr) new COTSEDSBrucker() ");
 				
 					break;
 				}
@@ -139,7 +139,7 @@ namespace OTSController {
 				{
 				
 						m_EDSPtr = COTSEDSBasePtr(new COTSEDSSim());
-						LogInfoTrace(__FILE__, __LINE__, "(COTSHardwareMgr::GetEDSControllerPtr) new COTSEDSSim() ");
+						//LogInfoTrace(__FILE__, __LINE__, "(COTSHardwareMgr::GetEDSControllerPtr) new COTSEDSSim() ");
 				
 
 					break;
@@ -148,7 +148,7 @@ namespace OTSController {
 				{
 				
 						m_EDSPtr = COTSEDSBasePtr(new COTSEDSOxford());
-						LogInfoTrace(__FILE__, __LINE__, "(COTSHardwareMgr::GetEDSControllerPtr) new COTSEDSOxford() ");
+						//LogInfoTrace(__FILE__, __LINE__, "(COTSHardwareMgr::GetEDSControllerPtr) new COTSEDSOxford() ");
 				
 
 					break;
@@ -191,19 +191,19 @@ namespace OTSController {
 				{
 
 						m_SCanPtr = COTSScanBasePtr(new COTSScanBrucker());
-						LogInfoTrace(__FILE__, __LINE__, "(COTSHardwareMgr::GetScanControllerPtr) new COTSScanBrucker() ");
+						//LogInfoTrace(__FILE__, __LINE__, "(COTSHardwareMgr::GetScanControllerPtr) new COTSScanBrucker() ");
 					break;
 				}
 				case (int)EDS_DEV_ID::OFFLINE:
 				{
 						m_SCanPtr = COTSScanBasePtr(new COTSScanSim());
-						LogInfoTrace(__FILE__, __LINE__, "(COTSHardwareMgr::GetScanControllerPtr) new COTSScanSim() ");
+						//LogInfoTrace(__FILE__, __LINE__, "(COTSHardwareMgr::GetScanControllerPtr) new COTSScanSim() ");
 					break;
 				}
 				case (int)EDS_DEV_ID::OXFORD:
 				{
 						m_SCanPtr = COTSScanBasePtr(new COTSScanOxford());
-						LogInfoTrace(__FILE__, __LINE__, "(COTSHardwareMgr::GetScanControllerPtr) new COTSScanSim() ");
+						//LogInfoTrace(__FILE__, __LINE__, "(COTSHardwareMgr::GetScanControllerPtr) new COTSScanSim() ");
 					break;
 				}
 				default:
@@ -258,7 +258,7 @@ namespace OTSController {
 				return i;
 			}			
 		}
-		LogErrorTrace(__FILE__, __LINE__, "GetSemControllerID:: SEMControllerName is Valied, ControllerName =%s ", SemControllerName);
+		//LogErrorTrace(__FILE__, __LINE__, "GetSemControllerID:: SEMControllerName is Valied, ControllerName =%s ", SemControllerName);
 		return -1;
 		
 	}
@@ -277,7 +277,7 @@ namespace OTSController {
 				return i;
 			}
 		}
-		LogErrorTrace(__FILE__, __LINE__, "GetEDSControllerID:: EDSControllerName is Valied, ControllerName =%s ", EDSControllerName);
+		//LogErrorTrace(__FILE__, __LINE__, "GetEDSControllerID:: EDSControllerName is Valied, ControllerName =%s ", EDSControllerName);
 		return -1;
 
 	}

+ 3 - 3
OTSIncAMeasureApp/0-OTSModel/Measure/3-MeasureFlow/CMeasure.cs

@@ -121,9 +121,9 @@ namespace OTSModelSharp
         {         
             m_strWorkingFolder = "";
             m_ThreadStatus = new CMsrThreadStatus();
-          
-          
-            m_SemController = new SemController();
+
+
+            m_SemController = SemController.GetSEMController();
            
 
         }

+ 6 - 6
OTSIncAMeasureApp/0-OTSModel/Measure/3-MeasureFlow/CSmplMeasure.cs

@@ -47,9 +47,9 @@ namespace OTSModelSharp
 
            
             m_pSampleRstFile = new CSmplMsrResult();
-            m_SemHardwareMgr = new SemController();
-            m_ScanHardwareMgr = new ScanController();
-            m_EDSHardwareMgr = new EDSController();
+            m_SemHardwareMgr = SemController.GetSEMController();
+            m_ScanHardwareMgr = ScanController.GetScanController();
+            m_EDSHardwareMgr = EDSController.GetEDSController();
 
             m_listHoleBSEImg = new CHoleBSEImgsList();
         }
@@ -62,9 +62,9 @@ namespace OTSModelSharp
           
             m_strWorkingFolder = a_strWorkingFolder;
             m_pSampleRstFile = new CSmplMsrResult( a_strWorkingFolder,  a_pSample);// new CSmplMsrResultFile(m_strWorkingFolder,a_pSample);
-            m_SemHardwareMgr = new SemController();
-            m_ScanHardwareMgr = new ScanController();
-            m_EDSHardwareMgr = new EDSController();
+            m_SemHardwareMgr = SemController.GetSEMController();
+            m_ScanHardwareMgr = ScanController.GetScanController();
+            m_EDSHardwareMgr = EDSController.GetEDSController();
             m_listHoleBSEImg = new CHoleBSEImgsList();
             m_Sample = a_pSample;
             

+ 1 - 1
OTSIncAMeasureApp/1-OTSMeasure/OTSMeasureDisplayResult.cs

@@ -585,7 +585,7 @@ namespace OTSMeasureApp
                                         }
                                     }
                                     //切换样品
-                                    m_MeasureApp.Rev_SoluWindowReqSwitchWSample_Event(sampleName);
+                                    m_MeasureApp.SwitchWSample(sampleName);
                                     //设置样品名称
                                     m_OTSMeasureResultWindow.SetSampleName(sampleName);
 

+ 6 - 6
OTSIncAMeasureApp/4-OTSSamplespaceGraphicsPanel/OTSSamplespaceWindow.cs

@@ -473,7 +473,7 @@ namespace OTSMeasureApp
                                 if (!string.IsNullOrEmpty(sNewWSampleName))
                                 {
                                     //设置工作样品
-                                    m_MeasureAppForm.Rev_SoluWindowReqSwitchWSample_Event(sNewWSampleName);
+                                    m_MeasureAppForm.SwitchWSample(sNewWSampleName);
                                 }
                                 else
                                 {
@@ -1074,7 +1074,7 @@ namespace OTSMeasureApp
                                     m_MeasureAppForm.m_MessageStates = (int)MessageState.StartMeasure;
                                     CMeasureThreadWrapper.DoRunType = (int)MSR_THREAD_RunSTATUS.RUNMEASURE;
                                     //设置工作样品
-                                    m_MeasureAppForm.Rev_SoluWindowReqSwitchWSample_Event(m_SampleSelectName);
+                                    m_MeasureAppForm.SwitchWSample(m_SampleSelectName);
                                     Invalidate();
                                 }
                                 //设置手绘标识
@@ -1189,7 +1189,7 @@ namespace OTSMeasureApp
                             CMeasureThreadWrapper.DoRunType = (int)MSR_THREAD_RunSTATUS.RUNMEASURE;
                             //showSingleInfo();
                             // 设置工作样品
-                            m_MeasureAppForm.Rev_SoluWindowReqSwitchWSample_Event(m_SampleSelectName);
+                            m_MeasureAppForm.SwitchWSample(m_SampleSelectName);
                             Invalidate();
                         }
 
@@ -1338,7 +1338,7 @@ namespace OTSMeasureApp
                                         m_MeasureGDIObjects[i].IsSelect = true;
                                         m_MeasureGDIObjects[i].IsWorkSample = true;
                                         //设置工作样品
-                                        m_MeasureAppForm.Rev_SoluWindowReqSwitchWSample_Event(m_SampleSelectName);
+                                        m_MeasureAppForm.SwitchWSample(m_SampleSelectName);
                                         Invalidate();
                                     }
                                     return;
@@ -1408,7 +1408,7 @@ namespace OTSMeasureApp
                                 m_SampleGDIObjects[i].IsSelect = true;
                                 m_SampleGDIObjects[i].IsWorkSample = true;
                                 //设置工作样品 向主窗体发送请求
-                                m_MeasureAppForm.Rev_SoluWindowReqSwitchWSample_Event(m_SampleSelectName);
+                                m_MeasureAppForm.SwitchWSample(m_SampleSelectName);
                                 Invalidate();
                             }
                             return;
@@ -1638,7 +1638,7 @@ namespace OTSMeasureApp
                                     //获取工作样品名称
                                     m_SampleSelectName = m_SampleGDIObjects[i].SampleName;
                                     //设置工作样品 向主窗体发送请求
-                                    m_MeasureAppForm.Rev_SoluWindowReqSwitchWSample_Event(m_SampleSelectName);
+                                    m_MeasureAppForm.SwitchWSample(m_SampleSelectName);
                                 }
                                 break;
                             }

+ 4 - 18
OTSIncAMeasureApp/4-OTSSamplespaceGraphicsPanel/SEMDATAFieldManage.cs

@@ -55,15 +55,15 @@ namespace OTSMeasureApp
                 //控制类对象初始化
                 if (cSemfun == null)
                 {
-                    cSemfun = new SemController();
+                    cSemfun = SemController.GetSEMController();
                 }
                 if (cScanfun == null)
                 {
-                    cScanfun = new ScanController();
+                    cScanfun = ScanController.GetScanController();
                 }
                 if (cEDSfun == null)
                 {
-                    cEDSfun = new EDSController();
+                    cEDSfun = EDSController.GetEDSController();
                 }
                 //获取帧图操作类对象
                 if (cFieldMgrClr == null)
@@ -83,21 +83,7 @@ namespace OTSMeasureApp
 
 
 
-        #region 关闭电镜连接
-        public bool CloseSEM()
-        {
-            try
-            {
-                cSemfun.DisConnect();
-                return true;
-            }
-            catch (Exception ex)
-            {
-                log.Error("CloseSEM:--Error:" + ex.ToString() + "");
-                return false;
-            }
-        }
-        #endregion
+    
 
         #region 获取放大倍数
         private double GetGMagnification()

+ 1 - 1
OTSIncAMeasureApp/5-OTSMeasureStatuImageFun/OTSBSEImageFun.cs

@@ -33,7 +33,7 @@ namespace OTSMeasureApp
         public int GetScanImage(int iWidth, int iHeigh, ref byte[] bImageData)
         {
             //电镜设置对象
-            COTSControlFunExport cfun = new COTSControlFunExport();
+            COTSControlFunExport cfun = COTSControlFunExport.GetControllerInstance();
             int GetImgCount = 0;
             try
             {

+ 1 - 1
OTSIncAMeasureApp/5-OTSMeasureStatuImageFun/OTSMeasureStatusWindow.cs

@@ -1494,7 +1494,7 @@ namespace OTSMeasureApp
             MenuItemLineScam.Checked = false;
             //电镜设置对象
             //控制类对象初始化
-            COTSControlFunExport cfun =new  COTSControlFunExport();
+            COTSControlFunExport cfun = COTSControlFunExport.GetControllerInstance();
             //1.连接电镜
             if (cfun.ConncetSem())
             {

+ 2 - 2
OTSIncAMeasureApp/6-OTSDisplayTreeViewData/OTSSolutionWindow.cs

@@ -238,7 +238,7 @@ namespace OTSMeasureApp
                 if ("" != sWorkName && (sWorkName != e.Node.Text))
                 {
                     //m_MeasureAppForm.m_EventFun.Send_SwithcWSample_SoluWindowReqMeasureApp_Event_Fun(e.Node.Text);
-                    m_MeasureAppForm.Rev_SoluWindowReqSwitchWSample_Event(e.Node.Text);
+                    m_MeasureAppForm.SwitchWSample(e.Node.Text);
                 }
 
                 //OTSSolutionWindow 给 MeasureApp 发送样品checkbox发生变化事件
@@ -303,7 +303,7 @@ namespace OTSMeasureApp
             string sWorkName = m_MeasureAppForm.m_ProjParam.GetWorkSampleName();
 
             //m_MeasureAppForm.m_EventFun.Send_SwithcWSample_SoluWindowReqMeasureApp_Event_Fun(tn.Text);
-            m_MeasureAppForm.Rev_SoluWindowReqSwitchWSample_Event(tn.Text);
+            m_MeasureAppForm.SwitchWSample(tn.Text);
                 //切换工作样品,通知Grid更新工作样品属性值
                 m_bSetWorkSampleFlag = true;
             

+ 61 - 59
OTSIncAMeasureApp/OTSIncAMeasureAppForm.Designer.cs

@@ -29,21 +29,21 @@
         private void InitializeComponent()
         {
             System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(OTSIncAMeasureAppForm));
-            OTS.WinFormsUI.Docking.DockPanelSkin dockPanelSkin1 = new OTS.WinFormsUI.Docking.DockPanelSkin();
-            OTS.WinFormsUI.Docking.AutoHideStripSkin autoHideStripSkin1 = new OTS.WinFormsUI.Docking.AutoHideStripSkin();
-            OTS.WinFormsUI.Docking.DockPanelGradient dockPanelGradient1 = new OTS.WinFormsUI.Docking.DockPanelGradient();
-            OTS.WinFormsUI.Docking.TabGradient tabGradient1 = new OTS.WinFormsUI.Docking.TabGradient();
-            OTS.WinFormsUI.Docking.DockPaneStripSkin dockPaneStripSkin1 = new OTS.WinFormsUI.Docking.DockPaneStripSkin();
-            OTS.WinFormsUI.Docking.DockPaneStripGradient dockPaneStripGradient1 = new OTS.WinFormsUI.Docking.DockPaneStripGradient();
-            OTS.WinFormsUI.Docking.TabGradient tabGradient2 = new OTS.WinFormsUI.Docking.TabGradient();
-            OTS.WinFormsUI.Docking.DockPanelGradient dockPanelGradient2 = new OTS.WinFormsUI.Docking.DockPanelGradient();
-            OTS.WinFormsUI.Docking.TabGradient tabGradient3 = new OTS.WinFormsUI.Docking.TabGradient();
-            OTS.WinFormsUI.Docking.DockPaneStripToolWindowGradient dockPaneStripToolWindowGradient1 = new OTS.WinFormsUI.Docking.DockPaneStripToolWindowGradient();
-            OTS.WinFormsUI.Docking.TabGradient tabGradient4 = new OTS.WinFormsUI.Docking.TabGradient();
-            OTS.WinFormsUI.Docking.TabGradient tabGradient5 = new OTS.WinFormsUI.Docking.TabGradient();
-            OTS.WinFormsUI.Docking.DockPanelGradient dockPanelGradient3 = new OTS.WinFormsUI.Docking.DockPanelGradient();
-            OTS.WinFormsUI.Docking.TabGradient tabGradient6 = new OTS.WinFormsUI.Docking.TabGradient();
-            OTS.WinFormsUI.Docking.TabGradient tabGradient7 = new OTS.WinFormsUI.Docking.TabGradient();
+            OTS.WinFormsUI.Docking.DockPanelSkin dockPanelSkin2 = new OTS.WinFormsUI.Docking.DockPanelSkin();
+            OTS.WinFormsUI.Docking.AutoHideStripSkin autoHideStripSkin2 = new OTS.WinFormsUI.Docking.AutoHideStripSkin();
+            OTS.WinFormsUI.Docking.DockPanelGradient dockPanelGradient4 = new OTS.WinFormsUI.Docking.DockPanelGradient();
+            OTS.WinFormsUI.Docking.TabGradient tabGradient8 = new OTS.WinFormsUI.Docking.TabGradient();
+            OTS.WinFormsUI.Docking.DockPaneStripSkin dockPaneStripSkin2 = new OTS.WinFormsUI.Docking.DockPaneStripSkin();
+            OTS.WinFormsUI.Docking.DockPaneStripGradient dockPaneStripGradient2 = new OTS.WinFormsUI.Docking.DockPaneStripGradient();
+            OTS.WinFormsUI.Docking.TabGradient tabGradient9 = new OTS.WinFormsUI.Docking.TabGradient();
+            OTS.WinFormsUI.Docking.DockPanelGradient dockPanelGradient5 = new OTS.WinFormsUI.Docking.DockPanelGradient();
+            OTS.WinFormsUI.Docking.TabGradient tabGradient10 = new OTS.WinFormsUI.Docking.TabGradient();
+            OTS.WinFormsUI.Docking.DockPaneStripToolWindowGradient dockPaneStripToolWindowGradient2 = new OTS.WinFormsUI.Docking.DockPaneStripToolWindowGradient();
+            OTS.WinFormsUI.Docking.TabGradient tabGradient11 = new OTS.WinFormsUI.Docking.TabGradient();
+            OTS.WinFormsUI.Docking.TabGradient tabGradient12 = new OTS.WinFormsUI.Docking.TabGradient();
+            OTS.WinFormsUI.Docking.DockPanelGradient dockPanelGradient6 = new OTS.WinFormsUI.Docking.DockPanelGradient();
+            OTS.WinFormsUI.Docking.TabGradient tabGradient13 = new OTS.WinFormsUI.Docking.TabGradient();
+            OTS.WinFormsUI.Docking.TabGradient tabGradient14 = new OTS.WinFormsUI.Docking.TabGradient();
             this.rbNew = new System.Windows.Forms.RibbonButton();
             this.rbOpen = new System.Windows.Forms.RibbonButton();
             this.rbSave = new System.Windows.Forms.RibbonButton();
@@ -595,6 +595,7 @@
             this.rbConnectHardware.ToolTip = null;
             this.rbConnectHardware.ToolTipImage = null;
             this.rbConnectHardware.ToolTipTitle = null;
+            this.rbConnectHardware.Click += new System.EventHandler(this.rbConnectHardware_Click);
             // 
             // rbDisconnectHardware
             // 
@@ -609,6 +610,7 @@
             this.rbDisconnectHardware.ToolTip = null;
             this.rbDisconnectHardware.ToolTipImage = null;
             this.rbDisconnectHardware.ToolTipTitle = null;
+            this.rbDisconnectHardware.Click += new System.EventHandler(this.rbDisconnectHardware_Click);
             // 
             // rbStart
             // 
@@ -846,50 +848,50 @@
             this.dockPanel.Margin = new System.Windows.Forms.Padding(6);
             this.dockPanel.Name = "dockPanel";
             this.dockPanel.Size = new System.Drawing.Size(1277, 541);
-            dockPanelGradient1.EndColor = System.Drawing.SystemColors.ControlLight;
-            dockPanelGradient1.StartColor = System.Drawing.SystemColors.ControlLight;
-            autoHideStripSkin1.DockStripGradient = dockPanelGradient1;
-            tabGradient1.EndColor = System.Drawing.SystemColors.Control;
-            tabGradient1.StartColor = System.Drawing.SystemColors.Control;
-            tabGradient1.TextColor = System.Drawing.SystemColors.ControlDarkDark;
-            autoHideStripSkin1.TabGradient = tabGradient1;
-            dockPanelSkin1.AutoHideStripSkin = autoHideStripSkin1;
-            tabGradient2.EndColor = System.Drawing.SystemColors.ControlLightLight;
-            tabGradient2.StartColor = System.Drawing.SystemColors.ControlLightLight;
-            tabGradient2.TextColor = System.Drawing.SystemColors.ControlText;
-            dockPaneStripGradient1.ActiveTabGradient = tabGradient2;
-            dockPanelGradient2.EndColor = System.Drawing.SystemColors.Control;
-            dockPanelGradient2.StartColor = System.Drawing.SystemColors.Control;
-            dockPaneStripGradient1.DockStripGradient = dockPanelGradient2;
-            tabGradient3.EndColor = System.Drawing.SystemColors.ControlLight;
-            tabGradient3.StartColor = System.Drawing.SystemColors.ControlLight;
-            tabGradient3.TextColor = System.Drawing.SystemColors.ControlText;
-            dockPaneStripGradient1.InactiveTabGradient = tabGradient3;
-            dockPaneStripSkin1.DocumentGradient = dockPaneStripGradient1;
-            tabGradient4.EndColor = System.Drawing.SystemColors.ActiveCaption;
-            tabGradient4.LinearGradientMode = System.Drawing.Drawing2D.LinearGradientMode.Vertical;
-            tabGradient4.StartColor = System.Drawing.SystemColors.GradientActiveCaption;
-            tabGradient4.TextColor = System.Drawing.SystemColors.ActiveCaptionText;
-            dockPaneStripToolWindowGradient1.ActiveCaptionGradient = tabGradient4;
-            tabGradient5.EndColor = System.Drawing.SystemColors.Control;
-            tabGradient5.StartColor = System.Drawing.SystemColors.Control;
-            tabGradient5.TextColor = System.Drawing.SystemColors.ControlText;
-            dockPaneStripToolWindowGradient1.ActiveTabGradient = tabGradient5;
-            dockPanelGradient3.EndColor = System.Drawing.SystemColors.ControlLight;
-            dockPanelGradient3.StartColor = System.Drawing.SystemColors.ControlLight;
-            dockPaneStripToolWindowGradient1.DockStripGradient = dockPanelGradient3;
-            tabGradient6.EndColor = System.Drawing.SystemColors.GradientInactiveCaption;
-            tabGradient6.LinearGradientMode = System.Drawing.Drawing2D.LinearGradientMode.Vertical;
-            tabGradient6.StartColor = System.Drawing.SystemColors.GradientInactiveCaption;
-            tabGradient6.TextColor = System.Drawing.SystemColors.ControlText;
-            dockPaneStripToolWindowGradient1.InactiveCaptionGradient = tabGradient6;
-            tabGradient7.EndColor = System.Drawing.Color.Transparent;
-            tabGradient7.StartColor = System.Drawing.Color.Transparent;
-            tabGradient7.TextColor = System.Drawing.SystemColors.ControlDarkDark;
-            dockPaneStripToolWindowGradient1.InactiveTabGradient = tabGradient7;
-            dockPaneStripSkin1.ToolWindowGradient = dockPaneStripToolWindowGradient1;
-            dockPanelSkin1.DockPaneStripSkin = dockPaneStripSkin1;
-            this.dockPanel.Skin = dockPanelSkin1;
+            dockPanelGradient4.EndColor = System.Drawing.SystemColors.ControlLight;
+            dockPanelGradient4.StartColor = System.Drawing.SystemColors.ControlLight;
+            autoHideStripSkin2.DockStripGradient = dockPanelGradient4;
+            tabGradient8.EndColor = System.Drawing.SystemColors.Control;
+            tabGradient8.StartColor = System.Drawing.SystemColors.Control;
+            tabGradient8.TextColor = System.Drawing.SystemColors.ControlDarkDark;
+            autoHideStripSkin2.TabGradient = tabGradient8;
+            dockPanelSkin2.AutoHideStripSkin = autoHideStripSkin2;
+            tabGradient9.EndColor = System.Drawing.SystemColors.ControlLightLight;
+            tabGradient9.StartColor = System.Drawing.SystemColors.ControlLightLight;
+            tabGradient9.TextColor = System.Drawing.SystemColors.ControlText;
+            dockPaneStripGradient2.ActiveTabGradient = tabGradient9;
+            dockPanelGradient5.EndColor = System.Drawing.SystemColors.Control;
+            dockPanelGradient5.StartColor = System.Drawing.SystemColors.Control;
+            dockPaneStripGradient2.DockStripGradient = dockPanelGradient5;
+            tabGradient10.EndColor = System.Drawing.SystemColors.ControlLight;
+            tabGradient10.StartColor = System.Drawing.SystemColors.ControlLight;
+            tabGradient10.TextColor = System.Drawing.SystemColors.ControlText;
+            dockPaneStripGradient2.InactiveTabGradient = tabGradient10;
+            dockPaneStripSkin2.DocumentGradient = dockPaneStripGradient2;
+            tabGradient11.EndColor = System.Drawing.SystemColors.ActiveCaption;
+            tabGradient11.LinearGradientMode = System.Drawing.Drawing2D.LinearGradientMode.Vertical;
+            tabGradient11.StartColor = System.Drawing.SystemColors.GradientActiveCaption;
+            tabGradient11.TextColor = System.Drawing.SystemColors.ActiveCaptionText;
+            dockPaneStripToolWindowGradient2.ActiveCaptionGradient = tabGradient11;
+            tabGradient12.EndColor = System.Drawing.SystemColors.Control;
+            tabGradient12.StartColor = System.Drawing.SystemColors.Control;
+            tabGradient12.TextColor = System.Drawing.SystemColors.ControlText;
+            dockPaneStripToolWindowGradient2.ActiveTabGradient = tabGradient12;
+            dockPanelGradient6.EndColor = System.Drawing.SystemColors.ControlLight;
+            dockPanelGradient6.StartColor = System.Drawing.SystemColors.ControlLight;
+            dockPaneStripToolWindowGradient2.DockStripGradient = dockPanelGradient6;
+            tabGradient13.EndColor = System.Drawing.SystemColors.GradientInactiveCaption;
+            tabGradient13.LinearGradientMode = System.Drawing.Drawing2D.LinearGradientMode.Vertical;
+            tabGradient13.StartColor = System.Drawing.SystemColors.GradientInactiveCaption;
+            tabGradient13.TextColor = System.Drawing.SystemColors.ControlText;
+            dockPaneStripToolWindowGradient2.InactiveCaptionGradient = tabGradient13;
+            tabGradient14.EndColor = System.Drawing.Color.Transparent;
+            tabGradient14.StartColor = System.Drawing.Color.Transparent;
+            tabGradient14.TextColor = System.Drawing.SystemColors.ControlDarkDark;
+            dockPaneStripToolWindowGradient2.InactiveTabGradient = tabGradient14;
+            dockPaneStripSkin2.ToolWindowGradient = dockPaneStripToolWindowGradient2;
+            dockPanelSkin2.DockPaneStripSkin = dockPaneStripSkin2;
+            this.dockPanel.Skin = dockPanelSkin2;
             this.dockPanel.TabIndex = 4;
             // 
             // ribbonButton3

+ 37 - 2
OTSIncAMeasureApp/OTSIncAMeasureAppForm.cs

@@ -199,15 +199,24 @@ namespace OTSMeasureApp
                
                 if (!m_MsrThreadWrapper.ConnectSEM())
                 {
-                    MessageBox.Show("Connect SEM failed!Please goto the SysMgrApp.exe to setup the proper parameter and check other parameter of the EDS software");
+                    MessageBox.Show("Connect SEM failed!Please goto the SysMgrApp.exe to setup the proper parameter or check other parameter of the EDS software");
                     System.Diagnostics.ProcessStartInfo process = new System.Diagnostics.ProcessStartInfo();
                     process.FileName = "OTSSysMgrApp.exe";//打开app的路径
                     //string FilePath = string.Join(" ",m_ProjData.GetPathName());
                     //process.Arguments = FilePath;//多个参数用空格隔开
                     process.WindowStyle = System.Diagnostics.ProcessWindowStyle.Normal;
                     System.Diagnostics.Process.Start(process);
+                    this.rbConnectHardware.Enabled = true;
+                    this.rbDisconnectHardware.Enabled = false;
+                    //this.StatusConnection.Text = "Connect Failed!";
                 }
+                this.rbConnectHardware.Enabled = false;
+                
+                this.rbDisconnectHardware.Enabled = true;
+                log.Warn("SEM connect success!");
+                
                 PrepareIpcServer();
+                log.Info("Ipc server start success!");
             }
             catch (Exception ex)
             {
@@ -269,7 +278,7 @@ namespace OTSMeasureApp
         }
 
         // sNewWorkSampleName:  新工作样品名
-        public void Rev_SoluWindowReqSwitchWSample_Event(string sNewWorkSampleName)
+        public void SwitchWSample(string sNewWorkSampleName)
         {
             if (!m_ProjParam.SetWorkSample(sNewWorkSampleName))
             {
@@ -1351,5 +1360,31 @@ namespace OTSMeasureApp
             //Console.ReadLine();
 
         }
+
+        private void rbConnectHardware_Click(object sender, EventArgs e)
+        {
+            if (!m_MsrThreadWrapper.IsSEMConnected())
+            {
+                if (!m_MsrThreadWrapper.ConnectSEM())
+                {
+                    MessageBox.Show("Connect failed!");
+                }
+                this.rbConnectHardware.Enabled = false;
+                this.rbDisconnectHardware.Enabled = true;
+                log.Warn("SEM connect success!");
+            }
+        }
+
+        private void rbDisconnectHardware_Click(object sender, EventArgs e)
+        {
+            if (m_MsrThreadWrapper.IsSEMConnected())
+            {
+                m_MsrThreadWrapper.DisconnectSEM();
+                this.rbDisconnectHardware.Enabled = false;
+                this.rbConnectHardware.Enabled = true;
+                log.Warn("SEM Disconnect!");
+
+            }
+        }
     }
 }

+ 6 - 6
OTSIncAMeasureApp/OTSIncAMeasureAppForm.resx

@@ -164,6 +164,12 @@
     <value>
         iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
         wwAADsMBx2+oZAAAABNJREFUOE9jGAWjYBSMAjBgYAAABBAAAadEfGMAAAAASUVORK5CYII=
+</value>
+  </data>
+  <data name="ribCircle.SmallImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
+        vAAADrwBlbxySQAAABNJREFUOE9jGAWjYBSMAjBgYAAABBAAAadEfGMAAAAASUVORK5CYII=
 </value>
   </data>
   <data name="rbCircleCenter.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
@@ -188,12 +194,6 @@
     <value>
         iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAW
         JQAAFiUBSVIk8AAAABNJREFUOE9jGAWjYBSMAjBgYAAABBAAAadEfGMAAAAASUVORK5CYII=
-</value>
-  </data>
-  <data name="ribCircle.SmallImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
-    <value>
-        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
-        vAAADrwBlbxySQAAABNJREFUOE9jGAWjYBSMAjBgYAAABBAAAadEfGMAAAAASUVORK5CYII=
 </value>
   </data>
   <data name="ribRectangle.SmallImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">

+ 14 - 11
OTSIncAMeasureApp/ServiceCenter/EDSController.cs

@@ -19,8 +19,17 @@ namespace OTSModelSharp.ServiceInterface
     {
 
       private  COTSControlFunExport eds;
-        private bool m_init=false;
-        public EDSController()
+        static EDSController edsctrl=null;
+       public static EDSController GetEDSController()
+        {
+            if (edsctrl == null)
+            {
+                edsctrl = new EDSController();
+            }
+            return edsctrl;
+        
+        }
+        private EDSController()
         {
 
             eds = SemController.hw;
@@ -36,10 +45,7 @@ namespace OTSModelSharp.ServiceInterface
             {
                 return false;
             }
-            if (!m_init)
-            {
-                return false;
-            }
+          
             COTSParticleClr[] parts = a_listParticles.ToArray();
            
             
@@ -56,10 +62,7 @@ namespace OTSModelSharp.ServiceInterface
             {
                 return false;
             }
-            if (!m_init)
-            {
-                return false;
-            }
+           
             int xrayNum = a_listParticles.Count;
             Point[] Ps = new Point[xrayNum];
 
@@ -81,7 +84,7 @@ namespace OTSModelSharp.ServiceInterface
         public bool Init()
         {
             
-            m_init= eds.EDSInit();
+          bool  m_init= eds.EDSInit();
             return m_init;
         }
     }

+ 16 - 15
OTSIncAMeasureApp/ServiceCenter/ScanController.cs

@@ -13,8 +13,18 @@ namespace OTSModelSharp.ServiceInterface
     public class ScanController : IScanController
     {
        private OTSCLRINTERFACE.COTSControlFunExport scan;
-        private bool m_init=false;
-        public ScanController()
+        static ScanController scanctrl=null;
+      public  static ScanController GetScanController()
+        {
+            if (scanctrl == null)
+            {
+                scanctrl = new ScanController();
+            
+            }
+            return scanctrl;
+        
+        }
+        private ScanController()
         {
 
             this.scan = SemController.hw;
@@ -26,10 +36,7 @@ namespace OTSModelSharp.ServiceInterface
             {
                 return null;
             }
-            if (!m_init)
-            {
-                return null;
-            }
+            
             Rectangle r = new Rectangle();
             CBSEImgClr bse = new CBSEImgClr(r);
            if (!scan.AcquireBSEImage(matrixIndex, reads, dwell, ref bse))
@@ -43,7 +50,7 @@ namespace OTSModelSharp.ServiceInterface
         public bool Init()
         {
 
-            m_init= scan.ScanInit();
+           bool m_init= scan.ScanInit();
             return m_init;
 
         }
@@ -56,10 +63,7 @@ namespace OTSModelSharp.ServiceInterface
             {
                 return false;
             }
-            if (!m_init)
-            {
-                return false;
-            }
+           
             return scan.SetDwellTime((int)val);
         }
 
@@ -69,10 +73,7 @@ namespace OTSModelSharp.ServiceInterface
             {
                 return false;
             }
-            if (!m_init)
-            {
-                return false;
-            }
+            
             return scan.SetImageSize(width,height);
         }
     }

+ 12 - 3
OTSIncAMeasureApp/ServiceCenter/SemController.cs

@@ -11,11 +11,20 @@ namespace OTSModelSharp.ServiceInterface
     public class SemController : ISemController
     {
      public static OTSCLRINTERFACE.COTSControlFunExport hw=null;
-
-        public SemController()
+        private static SemController sem=null;
+        public static SemController GetSEMController()
+        {
+            if (sem == null)
+            {
+                sem = new SemController();
+            }
+            
+            return sem;
+        }
+        private SemController()
         {
 
-            hw =new  OTSCLRINTERFACE.COTSControlFunExport();
+            hw = OTSCLRINTERFACE.COTSControlFunExport.GetControllerInstance();
         }
        
         public bool Connect()

+ 0 - 1
OTSIncAReportApp/3-ServiceCenter/SemController.cs

@@ -7,7 +7,6 @@ using System.Text;
 using System.Threading.Tasks;
 using System.Runtime.InteropServices;
 using System.Runtime.Remoting.Channels;
-using OTSModelSharp.ServiceInterface;
 using System.Runtime.Remoting.Channels.Ipc;
 using OTSMeasureApp.ServiceCenter;
 

+ 1 - 1
OTSSysMgrApp/ControllerSettingForm.cs

@@ -55,7 +55,7 @@ namespace OTSSysMgrApp
             //控制类对象初始化
             if (cfun == null)
             {
-                cfun =new COTSControlFunExport();
+                cfun = COTSControlFunExport.GetControllerInstance();
             }
             lan = new OTSSysMgrTools.Language(this);
             table = lan.GetNameTable(this.Name);

+ 8 - 4
OTSSysMgrApp/SemTestForms.cs

@@ -41,10 +41,9 @@ namespace OTSSysMgrApp
         {
             InitializeComponent();
             //控制类对象初始化
-            if (cfun == null)
-            {
-                cfun =new COTSControlFunExport();
-            }
+            
+            cfun = COTSControlFunExport.GetControllerInstance();
+           
 
             //国际化
             lan = new OTSSysMgrTools.Language(this);
@@ -468,6 +467,11 @@ namespace OTSSysMgrApp
         {
             if (!ConnectionState)
             {
+                
+                if (!cfun.Init())
+                {
+                    return;
+                }
                 //和电镜建立通讯连接
                 ConnectionState = cfun.ConncetSem();
                 ///获取当前电镜的ID号

+ 1 - 1
OTSSysMgrTools/Imagepro.cs

@@ -89,7 +89,7 @@ namespace OTSSysMgrTools
         public static int GetScanImage(int iWidth, int iHeigh, string DwellTime, ref byte[] bImageData)
         {
             //电镜设置对象
-            COTSControlFunExport cfun =new COTSControlFunExport();
+            var cfun = COTSControlFunExport.GetControllerInstance();
             int GetImgCount = 0;
             try
             {