Explorar el Código

make refactor to measure.cs

gsp hace 4 años
padre
commit
9aefb681cd

+ 1 - 1
HOZProject/FormUnitControl.cs

@@ -41,7 +41,7 @@ namespace HOZProject
         private String path = Directory.GetCurrentDirectory();
         private int st_flag = 0;
 
-        WebResult wr = new WebResult(ConfigurationManager.AppSettings["WebServerIP"].ToString(),
+        ImageProcess wr = new ImageProcess(ConfigurationManager.AppSettings["WebServerIP"].ToString(),
                        ConfigurationManager.AppSettings["WebServerPort"].ToString(),
                        ConfigurationManager.AppSettings["WebServerUrl"].ToString());
 

+ 2 - 2
MeasureData/FocusParam.cs

@@ -13,7 +13,7 @@ using System.IO;
 
 namespace MeasureData
 {
-    public class FocusParam : ISlo
+    public class FocusParamold : ISlo
     {
         #region 内容
         //图像存储路径
@@ -76,7 +76,7 @@ namespace MeasureData
         }
         #endregion
 
-        public FocusParam()
+        public FocusParamold()
         {
             Init();
         }

+ 12 - 12
MeasureData/MeasureParam.cs

@@ -181,32 +181,32 @@ namespace MeasureData
         }
 
         //对焦参数, SEM
-        private FocusParam focusP;
-        public FocusParam AutoFocus
+        private FocusParamold focusP;
+        public FocusParamold AutoFocus
         {
             get { return this.focusP; }
             set { this.focusP = value; }
         }
 
         //对焦参数, FIB
-        private FocusParam focusF;
-        public FocusParam FIBFocus
+        private FocusParamold focusF;
+        public FocusParamold FIBFocus
         {
             get { return this.focusF; }
             set { this.focusF = value; }
         }
 
         //消像散x参数
-        private FocusParam StigX;
-        public FocusParam AutoStigX
+        private FocusParamold StigX;
+        public FocusParamold AutoStigX
         {
             get { return this.StigX; }
             set { this.StigX = value; }
         }
 
         //消像散Y参数
-        private FocusParam StigY;
-        public FocusParam AutoStigY
+        private FocusParamold StigY;
+        public FocusParamold AutoStigY
         {
             get { return this.StigY; }
             set { this.StigY = value; }
@@ -936,13 +936,13 @@ namespace MeasureData
             this.FIBTemp = @"";
             this.PTTemp = @"";
             this.FocusMode = 2;
-            this.AutoFocus = new FocusParam();
+            this.AutoFocus = new FocusParamold();
             this.AutoFocus.TYPE = 1;
-            this.AutoStigX = new FocusParam();
+            this.AutoStigX = new FocusParamold();
             this.AutoStigX.TYPE = 2;
-            this.AutoStigY = new FocusParam();
+            this.AutoStigY = new FocusParamold();
             this.AutoStigY.TYPE = 3;
-            this.FIBFocus = new FocusParam();
+            this.FIBFocus = new FocusParamold();
             this.FIBFocus.TYPE = 4;
             this.Tilt = false;
             this.ZDistance = 0;

+ 141 - 0
MeasureThread/Focus.cs

@@ -0,0 +1,141 @@
+using NLog;
+using SmartSEMControl;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading;
+using System.Threading.Tasks;
+
+namespace MeasureThread
+{
+    class Focus : IFocus
+    {
+        private Focusparam prm;
+        private ISEMControl iSEM;
+      private  NLog.Logger log;
+
+        public Focus(Focusparam prm, ISEMControl iSEM)
+        {
+            log = NLog.LogManager.GetCurrentClassLogger();
+            this.prm = prm ?? throw new ArgumentNullException(nameof(prm));
+            this.iSEM = iSEM ?? throw new ArgumentNullException(nameof(iSEM));
+            this.log = log ?? throw new ArgumentNullException(nameof(log));
+        }
+
+        public bool DoFocus()
+        {
+            
+               //set voltage and SemIprobe
+             bool mRet_VoltageFlag = iSEM.SetSEMVoltage(prm.voltage);
+            Thread.Sleep(500);
+           bool mRet_ElecFlag = iSEM.SetSEMIPROBE(prm.Iprobe / 1000000000);
+            Thread.Sleep(500);
+            // set magnification
+            bool mRetMag=iSEM.SetMagnification(prm.mag);
+            //float current = iSEM.GetMagnification();
+            //while (Math.Abs(current - prm.mag) > 1)
+            //{
+            //    iSEM.SetMagnification(prm.mag);
+            //    Thread.Sleep(200);
+            //    current = iSEM.GetMagnification();
+            //}
+            Thread.Sleep(500);
+            // 
+            if (!TiltCorrection(54.0f))
+            {               
+                return false;
+            }
+            if (!iSEM.SetWorkingDistance(prm.workingDis/1000))
+            {
+                //log.Error("测量线程报错:重新设置到标准工作距离失败。", false);
+                return false;
+            }
+            // set the window of focusing.
+            iSEM.SetReduced(402, 128, 400, 400);
+
+            iSEM.CmdFocusScanSpeed(prm.ScanSpeed);//
+            if (prm.IfAutoBrightnessAndContrast)
+            {
+                iSEM.SetAutoVideoBrightnessAndContrast();
+                Thread.Sleep(5000);
+            }
+            else
+            {
+                iSEM.SetAutoVideoOff();
+                Thread.Sleep(200);
+                iSEM.SetBrightness(prm.brightness);//50.0f
+                Thread.Sleep(200);
+                iSEM.SetContrast(prm.contrast);//30.0f
+                Thread.Sleep(200);
+            }
+            if (!ImageFocus1(true))
+            {
+                log.Error("测量线程报错:拉直操作自动对焦失败,程序退出。", false);
+                
+                return false;
+            }
+
+            iSEM.CloseReduced();
+            Thread.Sleep(200);           
+
+            iSEM.SetAutoVideoBrightnessAndContrast();
+           
+           float cycle_time = iSEM.GetCycleTime();
+            Thread.Sleep(100 + Convert.ToInt32(cycle_time));
+
+            return true;
+        }
+
+        public void setFocusParam(Focusparam param)
+        {
+            prm = param;
+        }
+        //角度补偿
+        public bool TiltCorrection(float a_fAngle)
+        {
+            if (!iSEM.SetTiltAngleOn())
+            {
+                return false;
+            }
+            Thread.Sleep(200);
+            //恢复原始状态
+            if (!iSEM.SetTiltAngle(a_fAngle))
+            {
+                return false;
+            }
+            return true;
+        }
+        //执行自动对焦
+        public bool ImageFocus1(Boolean Is_Stig)
+        {
+            
+                #region 执行蔡司自动对焦程序
+                //服务地址
+                string snumstr = @"http://192.168.1.101:8123";
+                bool normalized;
+               
+                // 调用方法;只对焦不消像散
+                if (Is_Stig)
+                {
+                    string focusstig = XmlRpcClient.autofocusstig(10, 3, 3, 3, 0.7, snumstr);//,normalized
+                    if (focusstig != "success")
+                    {
+                        return false;
+                    }
+                }
+                else
+                {
+                    string onlyfocus = XmlRpcClient.autofocus(10, 3, 3, true, snumstr);//,normalized
+                    if (onlyfocus != "success")
+                    {
+                        return false;
+                    }
+                }
+                #endregion
+          
+            return true;
+        }
+    }
+
+}

+ 1 - 1
MeasureThread/IMath.cs → MeasureThread/IAutoFocus.cs

@@ -5,7 +5,7 @@ namespace MeasureThread
     /// <summary>
     /// 实现XmlRpc代理接口(IXmlRpcProxy), 并指明对应服务类的方法;
     /// </summary>
-    public interface IMethod : IXmlRpcProxy
+    public interface IAutoFocus : IXmlRpcProxy
     {
 
         [XmlRpcMethod("autostigfocus")]//其中客户端的web方法名称即[ ]中的名称必须和服务端相同,否则会抛异常。

+ 30 - 0
MeasureThread/IFoces.cs

@@ -0,0 +1,30 @@
+using System;
+using System.Collections.Generic;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace MeasureThread
+{
+    interface IFocus
+    {
+        bool DoFocus();
+        void setFocusParam(Focusparameter param);
+    }
+
+    public class Focusparameter
+    {
+        public double voltage;
+        public double Iprobe;
+        public double mag;
+        public double workingDis;
+        public Point reduceWindowPos;
+        public double reduceWinWidth;
+        public double reduceWinHeight;
+        public bool IfAutoBrightnessAndContrast;
+        public double brightness;
+        public double contrast;
+        public double delayTime;//ms
+    }
+}

+ 31 - 0
MeasureThread/IFocus.cs

@@ -0,0 +1,31 @@
+using System;
+using System.Collections.Generic;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace MeasureThread
+{
+    interface IFocus
+    {
+        bool DoFocus();
+        void setFocusParam(Focusparam param);
+    }
+
+    public class Focusparam
+    {
+        public float voltage;
+        public float Iprobe;
+        public float mag;
+        public float workingDis;
+        public Point reduceWindowPos;
+        public double reduceWinWidth;
+        public double reduceWinHeight;
+        public bool IfAutoBrightnessAndContrast;
+        public float brightness;
+        public float contrast;
+        public int delayTime;//ms
+        public string ScanSpeed;
+    }
+}

+ 21 - 0
MeasureThread/ILocate.cs

@@ -0,0 +1,21 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace MeasureThread
+{
+    interface ILocate
+    {
+        bool DoLocateByMoveStage();
+        bool DoLocateByShiftBeam();
+    }
+    public class LocateParam
+   {
+    public float PositionX;
+    public float PositionY;
+    public float PixelSize_Y_cur;//Tilt角度补偿后Y轴方向PixelSize修正值
+    }
+}
+

+ 24 - 0
MeasureThread/IPhoto.cs

@@ -0,0 +1,24 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace MeasureThread
+{
+    interface IPhoto
+    {
+        bool TakePhoto();
+    }
+    public class PhotoParam
+    {
+        private float mag;
+        public string savePath;
+        public string scanSpeed;
+        public string scanSpeedAfter;
+
+    
+
+        public float Mag { get => mag; set { if (value < 200) value = 200; mag = value; } }
+    }
+}

+ 254 - 0
MeasureThread/Locate.cs

@@ -0,0 +1,254 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading;
+using System.Threading.Tasks;
+using NLog;
+using SmartSEMControl;
+
+namespace MeasureThread
+{
+    class Locate : ILocate
+    {
+        NLog.Logger log;
+        private LocateParam prm;
+        private ISEMControl iSEM;
+
+        public Locate( LocateParam prm, ISEMControl iSEM)
+        {
+            this.log = NLog.LogManager.GetCurrentClassLogger();
+           
+            this.log = log ?? throw new ArgumentNullException(nameof(log));
+            this.prm = prm ?? throw new ArgumentNullException(nameof(prm));
+            this.iSEM = iSEM ?? throw new ArgumentNullException(nameof(iSEM));
+        }
+
+       
+        //移动到像素位置,这里要靠移动样品台实现,当位移量小于3um时,不予移动
+        bool MoveToPixByMoveStage(float xc, float yc)
+        {
+            //单位是m/pix
+            float XpixSize = iSEM.GetPixelSize();
+            log.Info("X像素尺寸=" + XpixSize.ToString() + "m/pixel", true);
+            float YpixSize = iSEM.GetPixelSize()/prm.PixelSize_Y_cur;///(float)MParam.PixelSizeCor);
+            log.Info("Y像素尺寸=" + YpixSize.ToString() + "m/pixel", true);
+
+            Thread.Sleep(500);
+            //0:width, 1:height
+            int[] imageSize = iSEM.GetImageStore();
+
+            int width = imageSize[0] / 2;
+            int height = imageSize[1] / 2;
+
+            log.Info("目标像素是(" + xc.ToString() + "," + yc.ToString() + ")", true);
+            log.Info("中心像素是(" + width.ToString() + "," + height.ToString() + ")", true);
+
+            float deltX = (xc - (float)width) * XpixSize;
+            float deltY = (yc - (float)height) * YpixSize;
+
+            log.Info("x位移量 = " + deltX.ToString() + "m", true);
+            log.Info("y位移量 = " + deltY.ToString() + "m", true);
+
+            float xpCur = iSEM.GetStageAtX();
+            float ypCur = iSEM.GetStageAtY();
+
+            log.Info("当前位置(" + xpCur.ToString() + "," + ypCur.ToString() + "),单位m", true);
+
+            float xpNew = xpCur - deltX;
+            float ypNew = ypCur + deltY;
+
+            log.Info("目标位置(" + xpNew.ToString() + "," + ypNew.ToString() + "),单位m", true);
+
+            //计算光束偏移值:
+            //if (deltX >= 0.000003 || deltX <= 0.000003)//大于3um使用移动样品台实现
+            {
+                log.Info("X方向移动样品台", true);
+
+                if (!iSEM.SetStageGotoX(xpNew))
+                {
+                    return false;
+                }
+
+                //判断是否移动完成
+                while (true)
+                {
+                    Thread.Sleep(5000);
+                    if (iSEM.GetStageIs() == 0)
+                    {
+                        break;
+                    }
+                }
+            }
+
+            //if (deltY >= 0.000003 || deltY <= -0.000003)//大于3um使用移动样品台实现
+            {
+                log.Info("Y方向移动样品台", true);
+
+                if (!iSEM.SetStageGotoY(ypNew))
+                {
+                    return false;
+                }
+
+                //判断是否移动完成
+                while (true)
+                {
+                    Thread.Sleep(5000);
+                    if (iSEM.GetStageIs() == 0)
+                    {
+                        break;
+                    }
+                }
+            }
+
+            return true;
+        }
+        //移动到像素位置
+        bool MoveToPix(float xc, float yc)
+        {
+
+            //单位是m/pix
+            float XpixSize = iSEM.GetPixelSize();
+
+            log.Info("X像素尺寸=" + XpixSize.ToString() + "m/pixel", true);
+            float YpixSize = (XpixSize / prm.PixelSize_Y_cur);
+            log.Info("Y像素尺寸=" + YpixSize.ToString() + "m/pixel", true);
+
+            Thread.Sleep(200);
+            //0:width, 1:height
+            int[] imageSize = iSEM.GetImageStore();
+
+            int width = imageSize[0] / 2;
+            int height = imageSize[1] / 2;
+
+            log.Info("目标像素是(" + xc.ToString() + "," + yc.ToString() + ")", true);
+            log.Info("中心像素是(" + width.ToString() + "," + height.ToString() + ")", true);
+
+            float deltX = (xc - (float)width) * XpixSize;
+            float deltY = (yc - (float)height) * YpixSize;
+
+            log.Info("x位移量 = " + deltX.ToString() + "m", true);
+            log.Info("y位移量 = " + deltY.ToString() + "m", true);
+
+            float xpCur = iSEM.GetStageAtX();
+            Thread.Sleep(200);
+            float ypCur = iSEM.GetStageAtY();
+
+            log.Info("当前位置(" + xpCur.ToString() + "," + ypCur.ToString() + "),单位m", true);
+
+            float xpNew = xpCur - deltX;
+            float ypNew = ypCur + deltY;
+
+            log.Info("目标位置(" + xpNew.ToString() + "," + ypNew.ToString() + "),单位m", true);
+
+            //计算最大偏移量
+            float beamXCur = iSEM.GetBeamShiftX();//单位是%
+            Thread.Sleep(200);
+            iSEM.SetBeamShiftX(100);
+            Thread.Sleep(200);
+            float beamXMax = iSEM.GetBeamOffsetX();//单位是m
+            Thread.Sleep(200);
+            iSEM.SetBeamShiftX(beamXCur);
+            Thread.Sleep(200);
+            //计算光束偏移值:
+            float beamX = iSEM.GetBeamOffsetX();
+            log.Info("当前X方向光束偏移量=" + beamX.ToString() + "m", true);
+
+            beamX = (-deltX + beamX);
+            log.Info("X方向光束偏移量应为=" + beamX.ToString() + "m", true);
+
+            if (((beamX <= beamXMax) && (beamX >= 0)) ||
+                ((beamX >= -beamXMax) && (beamX < 0)))
+            {
+                log.Info("X方向移动光束", true);
+                float beamXShift = beamX * 100 / beamXMax;
+                log.Info("X方向光束偏移量应为=" + beamXShift.ToString() + "%", true);
+                if (!iSEM.SetBeamShiftX(beamXShift))//if (!iSEM.SetBeamOffsetX(beamX))
+                {
+                    log.Info("X方向光束偏移量" + beamX.ToString() + "m失败", true);
+                    return false;
+                }
+            }
+            else if (deltX > 0.000003 || deltX < -0.000003)//大于3um使用移动样品台实现
+            {
+                log.Info("X方向移动样品台", true);
+
+                if (!iSEM.SetStageGotoX(xpNew))
+                {
+                    return false;
+                }
+
+                //判断是否移动完成
+                while (true)
+                {
+                    Thread.Sleep(4000);
+                    if (iSEM.GetStageIs() == 0)
+                    {
+                        break;
+                    }
+                }
+            }
+
+            float beamY = iSEM.GetBeamOffsetY();
+            log.Info("当前Y方向光束偏移量=" + beamY.ToString() + "m", true);
+
+            beamY = (-deltY + beamY);
+            log.Info("Y方向光束偏移量应为=" + beamY.ToString() + "m", true);
+
+            //计算最大偏移量
+            float beamYCur = iSEM.GetBeamShiftY();//单位是%
+            Thread.Sleep(200);
+            iSEM.SetBeamShiftY(100);
+            Thread.Sleep(200);
+            float beamYMax = iSEM.GetBeamOffsetY();//单位是m
+            Thread.Sleep(200);
+            iSEM.SetBeamShiftY(beamYCur);
+            Thread.Sleep(200);
+            if (((beamY <= beamYMax) && (beamY >= 0)) ||
+                ((beamY >= -beamYMax) && (beamY < 0)))
+            {
+                log.Info("Y方向移动光束", true);
+                float beamYShift = beamY * 100 / beamYMax;
+                log.Info("Y方向光束偏移量" + beamYShift.ToString() + "%", true);
+                //if(!iSEM.SetBeamOffsetY(beamY))
+                if (!iSEM.SetBeamShiftY(beamYShift))
+                {
+                    log.Info("Y方向光束偏移量" + beamY.ToString() + "m失败", true);
+                    return false;
+                }
+            }
+            else if (deltY > 0.000003 || deltY < -0.000003)//大于3um使用移动样品台实现
+            {
+                log.Info("Y方向移动样品台", true);
+
+                if (!iSEM.SetStageGotoY(ypNew))
+                {
+                    return false;
+                }
+
+                //判断是否移动完成
+                while (true)
+                {
+                    Thread.Sleep(4000);
+                    if (iSEM.GetStageIs() == 0)
+                    {
+                        break;
+                    }
+                }
+
+            }
+
+            return true;
+        }
+
+        public bool DoLocateByMoveStage()
+        {
+           return MoveToPixByMoveStage(prm.PositionX, prm.PositionY);
+        }
+
+        public bool DoLocateByShiftBeam()
+        {
+            return MoveToPix(prm.PositionX, prm.PositionY);
+        }
+    }
+}

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 177 - 2095
MeasureThread/Measure.cs


+ 7 - 1
MeasureThread/MeasureThread.csproj

@@ -73,7 +73,13 @@
     <Reference Include="System.Xml" />
   </ItemGroup>
   <ItemGroup>
-    <Compile Include="IMath.cs" />
+    <Compile Include="ILocate.cs" />
+    <Compile Include="Locate.cs" />
+    <Compile Include="Photo.cs" />
+    <Compile Include="Focus.cs" />
+    <Compile Include="IAutoFocus.cs" />
+    <Compile Include="IFocus.cs" />
+    <Compile Include="IPhoto.cs" />
     <Compile Include="Measure.cs" />
     <Compile Include="Helpers\NewFunMethod.cs" />
     <Compile Include="Properties\AssemblyInfo.cs" />

+ 85 - 0
MeasureThread/Photo.cs

@@ -0,0 +1,85 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading;
+using System.Threading.Tasks;
+using NLog;
+using SmartSEMControl;
+
+namespace MeasureThread
+{
+    class Photo : IPhoto
+    {
+        NLog.Logger log;
+        private PhotoParam prm;
+        private ISEMControl iSEM;
+        public Photo( PhotoParam prm,ISEMControl sem)
+        {
+            this.log = NLog.LogManager.GetCurrentClassLogger();
+            this.prm = prm ?? throw new ArgumentNullException(nameof(prm));
+            this.iSEM = sem ?? throw new ArgumentNullException(nameof(sem));
+        }
+
+        public bool TakePhoto()
+        {
+            if (!iSEM.SetMagnification(prm.Mag))
+            {
+                return false;
+            }
+            //float current = iSEM.GetMagnification();
+            //while (Math.Abs(current - prm.mag) > 1)
+            //{
+            //    iSEM.SetMagnification(prm.mag);
+            //    Thread.Sleep(200);
+            //    current = iSEM.GetMagnification();
+            //}
+            Thread.Sleep(500);
+
+
+
+            iSEM.CmdFocusScanSpeed(prm.scanSpeed);//iSEM.CmdSaveRate();
+          
+            //add by sun 2020 - 12 - 15 增加不同样品扫描速度参数,每大类样品3种扫描速度 end
+            Thread.Sleep(200);
+          float  cycle_time = iSEM.GetCycleTime();
+            Thread.Sleep(Convert.ToInt32(cycle_time) + 100);
+
+
+
+            if (!GetImage(prm.savePath))
+            {
+
+                log.Error("SEM拍照失败", false);
+                return false;
+            }
+            iSEM.CmdFocusScanSpeed(prm.scanSpeedAfter);//CmdFocusRate(4);
+            cycle_time = iSEM.GetCycleTime();
+            Thread.Sleep(Convert.ToInt32(cycle_time) + 100);
+           
+            return true;
+        }
+        //拍图
+        public bool GetImage(String a_fileName)
+        {
+            log.Info("获取分辨率开始!", true);
+            //3. 获取分辨率
+            int[] ImageSize = iSEM.GetImageStore();
+            if (ImageSize[0] == 0 || ImageSize[1] == 0)
+            {
+                return false;
+            }
+            short width = (short)ImageSize[0];
+            short height = (short)ImageSize[1];
+            log.Info("获取分辨率结束!" + a_fileName + "====" + width + "*" + height, true);
+            //4. 抓图
+            if (!iSEM.GrabImage(a_fileName, 0, 0, width, height, 0))
+            {
+                log.Info("抓图失败!", true);
+                return false;
+            }
+
+            return true;
+        }
+    }
+}

+ 4 - 4
MeasureThread/XmlRpcClient.cs

@@ -14,10 +14,10 @@ namespace MeasureThread
         /// </summary>
         /// <param name="urlstr">访问服务器服务类路径</param>
         /// <returns>instance</returns>
-        public static IMethod getInstance(string urlstr)
+        public static IAutoFocus getInstance(string urlstr)
         {
             // 用XmlRpcProxyGen创建接口: 只有此接口实现IXmlRpcProxy接口才能添加url值;
-            IMethod service = XmlRpcProxyGen.Create<IMethod>();
+            IAutoFocus service = XmlRpcProxyGen.Create<IAutoFocus>();
             service.Timeout = 5 * 60 * 1000;
             service.XmlEncoding = new System.Text.UTF8Encoding();
             service.Url = urlstr;
@@ -34,7 +34,7 @@ namespace MeasureThread
         {
             string xrs;
             //调取接口方法
-            IMethod method = getInstance(urlstr);
+            IAutoFocus method = getInstance(urlstr);
             xrs = method.autofocusstig( search_step, iter_n, wd_searh_factor, stig_range, iter_range_damping);//,normalized
 
             return xrs;
@@ -47,7 +47,7 @@ namespace MeasureThread
         {
             string xrs;
             //调取接口方法
-            IMethod method = getInstance(urlstr);
+            IAutoFocus method = getInstance(urlstr);
             xrs = method.autofocus( search_step,  wd_searh_factor,  retry,  refine);//,normalized
 
             return xrs;

+ 1 - 0
WebManager/WebManager.csproj

@@ -52,6 +52,7 @@
   </ItemGroup>
   <ItemGroup>
     <Compile Include="HttpRequestHelper.cs" />
+    <Compile Include="IWebResult.cs" />
     <Compile Include="WebResult.cs" />
     <Compile Include="Properties\AssemblyInfo.cs" />
   </ItemGroup>

+ 2 - 2
WebManager/WebResult.cs

@@ -10,7 +10,7 @@ using System.Drawing;
 
 namespace WebManager
 {
-    public class WebResult
+    public class ImageProcess : IImageProcessByWeb
     {
         #region
         /// <summary>
@@ -31,7 +31,7 @@ namespace WebManager
         /// </summary>
         /// <param name="ws_ip">WebServer的IP地址</param>
         /// <param name="ws_port">WebServer的端口号</param>
-        public WebResult(String ws_ip,String ws_port,String ws_url)
+        public ImageProcess(String ws_ip,String ws_port,String ws_url)
         {
             this.webServer_IP = ws_ip;
             this.webServer_Port = ws_port;

Algunos archivos no se mostraron porque demasiados archivos cambiaron en este cambio