From 995ba735e29f5b758e023240b45a521d28ba9463 Mon Sep 17 00:00:00 2001
From: wells.liu <wells.liu@broconcentric.com>
Date: 星期一, 29 六月 2020 18:47:10 +0800
Subject: [PATCH] 代码优化

---
 src/Bro.Device.GTSCard/Bro.Device.GTSCard.csproj |    5 --
 src/Bro.Device.GTSCard/GTSCardDriver.cs          |   24 ------------
 /dev/null                                        |   78 ---------------------------------------
 3 files changed, 0 insertions(+), 107 deletions(-)

diff --git a/src/Bro.Device.GTSCard/Bro.Device.GTSCard.csproj b/src/Bro.Device.GTSCard/Bro.Device.GTSCard.csproj
index 774e9c9..88abfb9 100644
--- a/src/Bro.Device.GTSCard/Bro.Device.GTSCard.csproj
+++ b/src/Bro.Device.GTSCard/Bro.Device.GTSCard.csproj
@@ -48,12 +48,7 @@
   <ItemGroup>
     <Compile Include="GTSCardDriver.cs" />
     <Compile Include="GTSCardConfig.cs" />
-    <Compile Include="GtsCardManager.cs" />
     <Compile Include="GTSCardAPI.cs" />
-    <Compile Include="GtsIO.cs" />
-    <Compile Include="GtsMotionCard.cs" />
-    <Compile Include="GtsParameter.cs" />
-    <Compile Include="GtsPos.cs" />
     <Compile Include="Properties\AssemblyInfo.cs" />
   </ItemGroup>
   <ItemGroup>
diff --git a/src/Bro.Device.GTSCard/GTSCardDriver.cs b/src/Bro.Device.GTSCard/GTSCardDriver.cs
index ffe11a6..c055b66 100644
--- a/src/Bro.Device.GTSCard/GTSCardDriver.cs
+++ b/src/Bro.Device.GTSCard/GTSCardDriver.cs
@@ -33,29 +33,6 @@
             }
         }
 
-        static Dictionary<int, object> axisMoveLockDict = new Dictionary<int, object>();
-
-        /// <summary>
-        /// 杞磋繍鍔ㄥ紑濮嬫椂鐨勬娴嬶紝true:鏈夊啿绐� 涓嶅彲缁х画鎵ц false锛氭棤鍐茬獊,鍙户缁墽琛�
-        /// </summary>
-        public event OnAxisStartToCheckDelegate OnAxisStartToCheckConfliction;
-        /// <summary>
-        /// 鏆傚仠锛堢嚎绋嬪悓姝ヤ簨浠讹級
-        /// </summary>
-        Dictionary<int, ManualResetEvent> axisImmediatePauseHandleDict = new Dictionary<int, ManualResetEvent>();
-        Dictionary<int, CancellationTokenSource> axisMoveCancelDict = new Dictionary<int, CancellationTokenSource>();
-        /// <summary>
-        /// 杩愯杩囩▼涓殑绾跨▼绛夊緟
-        /// </summary>
-        private Dictionary<int, ManualResetEvent> runningEventDic = new Dictionary<int, ManualResetEvent>();
-        private Dictionary<int, AutoResetEvent> axisMovingHandleDict = new Dictionary<int, AutoResetEvent>();
-        private ConcurrentDictionary<int, int> axisDestination = new ConcurrentDictionary<int, int>();
-
-        private ObservableCollection<int> _commandAxisList = new ObservableCollection<int>();
-        public Action<bool> CommandAxisCountChangedAction = null;
-        private Dictionary<int, VelocityPara> velIndexDict = new Dictionary<int, VelocityPara>();
-        ManualResetEvent _pauseHandle = new ManualResetEvent(true);
-
         static object moveLock = new object();
         /// <summary>
         /// 鏄惁澶嶄綅鏍囧織
@@ -78,7 +55,6 @@
         {
             InitialMotionCard();
         }
-
 
         protected override void Pause()
         {
diff --git a/src/Bro.Device.GTSCard/GtsCardManager.cs b/src/Bro.Device.GTSCard/GtsCardManager.cs
deleted file mode 100644
index 7be0c3f..0000000
--- a/src/Bro.Device.GTSCard/GtsCardManager.cs
+++ /dev/null
@@ -1,440 +0,0 @@
-锘�//using Bro.Common.PubSub;
-//using Broc.AOI.Entity;
-//using Broc.AOI.Manager;
-//using HalconDotNet;
-//using Lmi3d.GoSdk;
-//using Lmi3d.Zen;
-//using Lmi3d.Zen.Io;
-//using System;
-//using System.Collections.Generic;
-//using System.Configuration;
-//using System.Diagnostics;
-//using System.IO;
-//using System.Linq;
-//using System.Runtime.InteropServices;
-//using System.Threading;
-//using System.Threading.Tasks;
-//using static Broc.AOI.Manager.LogHelper;
-
-//namespace Bro.Device.GTSCard
-//{
-//    public class GtsCardManager
-//    {
-//        GtsMotionCard _gts = new GtsMotionCard();
-//        int pCount;//浣嶇疆姣旇緝宸茶緭鍑烘鏁�
-//        bool canStop = false;
-//        private static GtsIO curValueIo = new GtsIO();
-//        CancellationTokenSource cts = new CancellationTokenSource();
-//        private static int lastInputValue = Parameter.InDefaultValue;
-
-//        int StopType = 0; //0锛氭湭鏀跺埌鎵嬪姩鍋滄淇″彿 1锛氭敹鍒版敹鍒板仠姝俊鍙� 2锛氭敹鍒版�ュ仠淇″彿
-//        public GtsCardManager(ProductManager productManager)
-//        {
-//            try
-//            {
-//                _product = productManager.GetProductList().Find(x => x.IsDefault);
-//                Monitor();
-//                InitGocatorIO();
-//                PubSubCenter.GetInstance().RemoveSubscribers(MessageType.StopType.ToString());
-//                PubSubCenter.GetInstance().Subscribe(MessageType.StopType.ToString(), OnStopType);
-//                gocatorRecord = new GocatorRecord();
-//                //gocatorRecord.OnDataDone = OnGocatorDataDone;
-//                gocatorRecord.Connect();
-//                gocatorRecord.GocatorStop();
-//            }
-//            catch (Exception ex)
-//            {
-//                Trace.TraceError(ex.ToString());
-//            }
-//        }
-
-//        private object OnStopType(ISubscriber arg1, object arg2, object arg3)
-//        {
-//            StopType = (int)arg2;
-//            Trace.TraceInformation($"鍋滄淇″彿鍙樻洿涓猴細{StopType}");
-//            if (StopType > 0)
-//            {
-//                Trace.TraceError("鍋滄鍚庤閲嶅惎杞欢");
-//            }
-//            return null;
-//        }
-
-//        public void InitGocatorIO()
-//        {
-//            _gts.WriteOut(Parameter.cardn, Parameter.EXO_8, false);
-//            _gts.WriteOut(Parameter.cardn, Parameter.EXO_16, false);
-//        }
-
-
-//        public void DoCompare(List<ST_Point> pointList)
-//        {
-//            canStop = !canStop;
-//            GTSCardAPI.T2DComparePrm prm;
-//            short t;
-//            short sRtn;
-//            GTSCardAPI.T2DCompareData[] dataBuf = new GTSCardAPI.T2DCompareData[1];
-//            short pStatus,
-//            pFifo,//褰撳墠绌洪棽fifo
-//            pFifoCount,//褰撳墠绌洪棽fifo鍓╀綑绌洪棿
-//            pBufCount;//FPGA 涓� FIFO 鍓╀綑绌洪棿锛� FPGA 鐨� FIFO 鎬诲ぇ灏忎负 512锛屽惎鍔ㄤ綅缃瘮杈冧箣鍓嶏紝鍘嬪叆鐨勬暟鎹厛杩涘叆 FPGA 鐨� FIFO
-
-//            sRtn = GTSCardAPI.GT_2DCompareClear(0, 0);
-//            sRtn = GTSCardAPI.GT_2DCompareMode(0, 0, GTSCardAPI.COMPARE2D_MODE_2D);
-//            prm.encx = Axisn.X;       // X 杞翠负1杞�
-//            prm.ency = Axisn.Y;       // Y 杞翠负2杞�
-//            prm.maxerr = 500;   // 鏈�澶ц宸甈ulse
-//            prm.outputType = 0; // 杈撳嚭绫诲瀷 = 鑴夊啿
-//            prm.source = 1;     // 姣旇緝婧�0 锛氳鍒�1锛氱紪鐮佸櫒
-//            prm.startLevel = 0; //璧峰鐢靛钩鏂瑰紡0锛氫綅缃瘮杈冭緭鍑哄紩鑴氱數骞冲浣�    1锛氫綅缃瘮杈冭緭鍑哄紩鑴氱數骞冲彇鍙�
-//            prm.threshold = 0; // 鏈�浼樼偣璁$畻闃堝��
-//            prm.time = 50;   // 鑴夊啿瀹藉害 us
-//            sRtn = GTSCardAPI.GT_2DCompareSetPrm(0, 0, ref prm);
-//            sRtn = GTSCardAPI.GT_SetComparePort(0, GTSCardAPI.COMPARE_PORT_HSIO, 0, 1);
-//            sRtn = GTSCardAPI.GT_2DCompareStart(0, 0);
-
-//            foreach (var point in pointList)
-//            {
-//                dataBuf[0].px = point.X - (pointList[0].X + 2000);
-//                dataBuf[0].py = point.Y - pointList[0].Y;
-//                do
-//                {
-//                    t = GTSCardAPI.GT_2DCompareStatus(0, 0, out pStatus, out pCount, out pFifo, out pFifoCount, out pBufCount);
-//                    t = GTSCardAPI.GT_2DCompareData(0, 0, 1, ref dataBuf[0], pFifo);//鍘嬪叆鏁版嵁 
-//                } while (t != 0);
-//            }
-//        }
-
-//        public void ChaBu(List<ST_Point> pointList)
-//        {
-//            short sRtn = -1;        //Googol杩斿洖鍊兼煡璇�
-//            GTSCardAPI.TCrdPrm crdPrm = new GTSCardAPI.TCrdPrm();        //鍧愭爣绯诲弬鏁扮粨鏋勪綋
-//            int[] posTest = new int[2];
-
-//            GTSCardAPI.TCrdData temp = new GTSCardAPI.TCrdData();//瀹氫箟鍓嶇灮缂撳瓨鍖哄ぇ灏忎负200娈�
-//            GTSCardAPI.TCrdData[] crdData = new GTSCardAPI.TCrdData[400];
-//            int size = Marshal.SizeOf(temp) * 400;
-//            IntPtr pCrdData = Marshal.AllocHGlobal(size);
-
-//            //******绗竴姝ュ缓浜岀淮绔嬪潗鏍囩郴1杞碭浜岃酱Y锛屼娇鐢ㄥ潗鏍囩郴1鐨凢IFO0鍘嬪叆鏁版嵁銆�
-//            crdPrm.dimension = 3;                        // 寤虹珛涓夌淮鐨勫潗鏍囩郴
-//            crdPrm.synVelMax = 500;                      // 鍧愭爣绯荤殑鏈�澶у悎鎴愰�熷害鏄�: 500 pulse/ms 
-//            crdPrm.synAccMax = 5;                        // 鍧愭爣绯荤殑鏈�澶у悎鎴愬姞閫熷害鏄�: 5 pulse/ms^2
-//            crdPrm.evenTime = 0;                         // 鍧愭爣绯荤殑鏈�灏忓寑閫熸椂闂翠负0
-//            crdPrm.profile1 = 1;                         // 瑙勫垝鍣�1瀵瑰簲鍒癤杞�                       
-//            crdPrm.profile2 = 2;                         // 瑙勫垝鍣�2瀵瑰簲鍒癥杞�
-//            crdPrm.profile3 = 3;
-//            crdPrm.profile4 = 0;
-//            crdPrm.profile5 = 0;
-//            crdPrm.profile6 = 0;
-//            crdPrm.profile7 = 0;                         // 鑻rofile7 = 1锛岃鍒掑櫒7瀵瑰簲鍒癤杞�           
-//            crdPrm.profile8 = 0;
-//            crdPrm.setOriginFlag = 1;                    // 闇�瑕佽缃姞宸ュ潗鏍囩郴鍘熺偣浣嶇疆
-//            crdPrm.originPos1 = 0;                       // 鍔犲伐鍧愭爣绯诲師鐐逛綅缃湪(0,0)锛屽嵆涓庢満搴婂潗鏍囩郴鍘熺偣閲嶅悎
-//            crdPrm.originPos2 = 0;
-//            crdPrm.originPos3 = 0;
-//            crdPrm.originPos4 = 0;
-//            crdPrm.originPos5 = 0;
-//            crdPrm.originPos6 = 0;
-//            crdPrm.originPos7 = 0;
-//            crdPrm.originPos8 = 0;
-//            sRtn = GTSCardAPI.GT_SetCrdPrm(0, 1, ref crdPrm);   //蹇呴』鍦ㄨ酱璋冪敤鍋滄鐘舵�佷笅
-//            sRtn = GTSCardAPI.GT_CrdClear(0, 1, 0);//娓呴櫎鍧愭爣绯�1 FIFO1涓殑鏁版嵁缂撳瓨
-//            // 鍒濆鍖栧潗鏍囩郴1鐨凢IFO0鐨勫墠鐬绘ā鍧�
-//            sRtn = GTSCardAPI.GT_InitLookAhead(Parameter.cardn,           //鍗″彿
-//                                       Parameter.crdn,           //鍧愭爣绯�
-//                                       Parameter.fifo,           //FIFO
-//                                       5,           //鎷愯鏃堕棿T
-//                                       5,           //accMax
-//                                      200,         //鏁版嵁娈礜
-//                                      pCrdData);   //缁撴瀯浣揷rdData
-
-//            //*******绗簩姝ュ帇鍏ユ暟鎹紝瓒呰繃4096娈靛惊鐜帇鍏ャ��
-//            foreach (var point in pointList)
-//            {
-//                //sRtn = mc.GT_LnXY(Parameter.cardn, Parameter.crdn, point.X, point.Y, Parameter.speed, Parameter.synAcc, Parameter.velEnd, Parameter.fifo);
-//                sRtn = GTSCardAPI.GT_LnXYZ(Parameter.cardn, Parameter.crdn, point.X, point.Y, point.Z.Value, Parameter.flySpeed, Parameter.flyAcc, Parameter.velEnd, Parameter.fifo);
-//            }
-//            sRtn = GTSCardAPI.GT_CrdData(Parameter.cardn, Parameter.crdn, System.IntPtr.Zero, Parameter.fifo);
-//            GTSCardAPI.GT_CrdStart(0, 1, 0);
-//        }
-
-//        public void On()
-//        {
-//            for (int i = 1; i <= Axisn.Count; i++)
-//            {
-//                GTSCardAPI.GT_AxisOn(0, (short)i);
-//            }
-//        }
-
-//        public void Off()
-//        {
-//            for (int i = 1; i <= Axisn.Count; i++)
-//            {
-//                GTSCardAPI.GT_AxisOff(0, (short)i);
-//            }
-//        }
-
-//        public void GoHome()
-//        {
-//            try
-//            {
-//                //娓呴櫎鎶ヨ
-//                ClearGtsAlarm();
-
-//                Task.Run(() =>
-//                {
-//                    //鍏抽棴Gocator X Y
-//                    _gts.WriteOut(Parameter.cardn, Parameter.EXO_8, false);
-//                    _gts.WriteOut(Parameter.cardn, Parameter.EXO_16, false);
-//                    ////鍒囨崲Gocator鐨凧ob涓洪暱杈笿ob
-//                    //gocatorRecord.GocatorStop();
-//                    //gocatorRecord.SwitchJob(_product.JobLong);
-
-//                    //Z杞村洖鍘熺偣锛岃繑鍥炵數鏈烘柟鍚�,寰呯粨鏉熷悗鍐嶅姩X銆乊杞达紝閬垮厤纰版挒
-//                    _gts.GoHome(Parameter.cardn, Axisn.Z, GTSCardAPI.HOME_MODE_LIMIT_HOME, -1, 0);
-//                    //X杞村洖鍘熺偣,杩滅鐢垫満
-//                    _gts.GoHome(Parameter.cardn, Axisn.X, GTSCardAPI.HOME_MODE_LIMIT_HOME, 1, 0);
-
-//                    _gts.GoHome(Parameter.cardn, Axisn.Y, GTSCardAPI.HOME_MODE_LIMIT_HOME, 1, 0);
-
-//                    while (true)
-//                    {
-//                        Thread.Sleep(100);
-//                        if (_gts.IsStop(0, Axisn.X) && _gts.IsStop(0, Axisn.Y) && _gts.IsStop(0, Axisn.Z) && StopType == 0)
-//                        {
-//                            //鍓嶅線涓婃枡鐐�
-//                            GoLoading();
-//                            PubSubCenter.GetInstance().Publish(MessageType.IsHome.ToString(), null, null);
-//                            break;
-//                        }
-//                    }
-//                });
-//            }
-//            catch (Exception ex)
-//            {
-//                Trace.TraceError("GoHome寮傚父锛歿0}", ex);
-//            }
-//        }
-
-//        public void GoLoading()
-//        {
-//            try
-//            {
-//                while (true)
-//                {
-//                    if (_gts.IsStop(0, Axisn.Y))
-//                    {
-//                        _gts.P2P(Parameter.cardn, Axisn.Y, Parameter.loading, Parameter.freeSpeed);
-//                        break;
-//                    }
-//                }
-//            }
-//            catch (Exception ex)
-//            {
-//                Trace.TraceError("GoLoading寮傚父锛歿0}", ex);
-//            }
-
-//        }
-
-//        public void ClearGtsAlarm()
-//        {
-//            int axis_sts;
-//            uint clk;
-
-//            GTSCardAPI.GT_ClrSts(Parameter.cardn, 1, Axisn.Count);
-//            for (short i = Axisn.Count; i > 0; i--)
-//            {
-//                GTSCardAPI.GT_GetSts(Parameter.cardn, i, out axis_sts, 1, out clk);
-//                if ((axis_sts & 0x200) == 0)
-//                {
-//                    var rst = GTSCardAPI.GT_AxisOn(0, i);
-//                }
-
-//                // 姝f瀬闄愭姤璀�
-//                if ((axis_sts & 0x20) != 0)
-//                {
-//                    // 浣嶇疆璇烽浂
-//                    GTSCardAPI.GT_ZeroPos(Parameter.cardn, 1, Axisn.Count);
-//                    // 璐熷悜绉诲姩
-//                    _gts.P2P(Parameter.cardn, i, -50, Parameter.homeSpeed);
-//                }
-
-//                // 璐熸瀬闄愭姤璀�
-//                if ((axis_sts & 0x40) != 0)
-//                {
-//                    // 浣嶇疆璇烽浂
-//                    GTSCardAPI.GT_ZeroPos(Parameter.cardn, 1, Axisn.Count);
-//                    // 姝e悜绉诲姩
-//                    _gts.P2P(Parameter.cardn, i, 50, Parameter.homeSpeed);
-//                }
-//            }
-
-//            // 娓呴櫎鐘舵��
-//            GTSCardAPI.GT_ClrSts(Parameter.cardn, 1, Axisn.Count);
-//        }
-
-//        public void Stop(bool value)
-//        {
-//            Task.Run(() =>
-//            {
-//                try
-//                {
-//                    _gts.Stop(Parameter.cardn, Axisn.X, value);
-//                    _gts.Stop(Parameter.cardn, Axisn.Y, value);
-//                    _gts.Stop(Parameter.cardn, Axisn.Z, value);
-//                }
-//                catch (Exception ex)
-//                {
-                   
-//                }
-//            });
-//        }
-
-//        public void GoToFirst(ST_Point point)
-//        {
-//            _gts.P2P(Parameter.cardn, Axisn.X, point.X + 2000, Parameter.p2pSpeed);
-//            _gts.P2P(Parameter.cardn, Axisn.Y, point.Y, Parameter.p2pSpeed);
-//            _gts.P2P(Parameter.cardn, Axisn.Z, point.Z.Value, Parameter.p2pSpeed);
-//            while (true)
-//            {
-//                if (_gts.IsStop(0, Axisn.X) && _gts.IsStop(0, Axisn.Y) && _gts.IsStop(0, Axisn.Z)) break;
-//            }
-//        }
-
-//        //public void ExistSport(int checkId, string barcode, CameraManager cameraManager, List<ST_Point> pointList, List<ST_CheckItem> checkItemExistList, string path)
-//        //{
-//        //    cameraManager.SetExposure(Parameter.existExposure);
-//        //    cameraManager.BeginAcquisition();
-//        //    int speed = 0;
-
-//        //    int i = 1;
-//        //    foreach (var point in pointList)
-//        //    {
-//        //        //鍥涗釜姝i潰鍏夛細true琛ㄧず鐔勭伃銆乫alse琛ㄧず浜捣
-//        //        if (!string.IsNullOrEmpty(point.Light) && point.Light.Contains(","))
-//        //        {
-//        //            SetLightOn(point.Light);
-//        //        }
-
-//        //        speed = Parameter.p2pSpeed;
-//        //        _gts.P2P(Parameter.cardn, Axisn.X, point.X, speed);
-//        //        _gts.P2P(Parameter.cardn, Axisn.Y, point.Y, speed);
-//        //        _gts.P2P(Parameter.cardn, Axisn.Z, point.Z.Value, speed);
-//        //        while (true)
-//        //        {
-//        //            if (_gts.IsStop(0, Axisn.X) && _gts.IsStop(0, Axisn.Y) && _gts.IsStop(0, Axisn.Z) && StopType == 0) break;
-//        //        }
-
-//        //        cameraManager.ExistCheck(checkId, barcode, checkItemExistList, i, point, path);
-//        //        CheckProcess checkProcess = i == 1 ? CheckProcess.Begin : i == pointList.Count ? CheckProcess.CheckEnd : CheckProcess.In;
-//        //        i++;
-//        //    }
-
-//        //    //鍥涗釜姝i潰鍏夛細true琛ㄧず鐔勭伃銆乫alse琛ㄧず浜捣
-//        //    SetLightOff();
-
-//        //}
-
-//        public void Monitor()
-//        {
-//            lastInputValue = Parameter.InDefaultValue;
-//            Task.Factory.StartNew(() =>
-//            {
-//                while (!cts.IsCancellationRequested)
-//                {
-//                    try
-//                    {
-//                        Thread.Sleep(100);
-//                        //mc.GT_GetDi(Parameter.cardn, mc.MC_LIMIT_POSITIVE, out curValueIo.Limpos);
-//                        //mc.GT_GetDi(Parameter.cardn, mc.MC_LIMIT_NEGATIVE, out curValueIo.Limneg);
-//                        //mc.GT_GetDi(Parameter.cardn, mc.MC_HOME, out curValueIo.Home);
-//                        //mc.GT_GetDi(Parameter.cardn, mc.MC_ALARM, out curValueIo.Alarm);
-//                        GTSCardAPI.GT_GetDi(Parameter.cardn, GTSCardAPI.MC_GPI, out curValueIo.Input);
-//                        //mc.GT_GetDo(Parameter.cardn, mc.MC_GPO, out curValueIo.Output);
-//                        //if (_gts.IsAlarm())
-//                        //{
-//                        //    //鎬ュ仠
-//                        //    _gts.Stop(Parameter.cardn, true);
-//                        //    // 寮�鍚彁绀虹孩鐏拰澹伴煶
-//                        //    AlarmLight(AlarmType.Red);
-//                        //}
-//                        if (curValueIo.Input != lastInputValue)
-//                        {
-//                            OnMessageIO();
-//                            lastInputValue = curValueIo.Input;
-//                        }
-//                    }
-//                    catch (Exception ex)
-//                    {
-//                        Trace.TraceError("Monitor: {0}", ex.Message);
-//                    }
-//                }
-//            }, cts.Token);
-//        }
-
-//        //private void OnMessageIO()
-//        //{
-//        //    try
-//        //    {
-//        //        //鏍规嵁淇″彿鎵ц鐩稿簲鍔ㄤ綔
-//        //        for (var i = 0; i < 16; i++)
-//        //        {
-//        //            if ((lastInputValue & (1 << i)) != (curValueIo.Input & (1 << i)))
-//        //            {
-//        //                // 鏈夊彉鍖栧湪鍙戝竷閫氱煡 InputBitIndex-Value(0/1)
-//        //                byte v = (byte)((curValueIo.Input & (1 << i)) >> i);
-//        //                PubSubCenter.GetInstance().Publish(MessageType.MessageIO.ToString(), i, v);
-//        //            }
-//        //        }
-//        //    }
-//        //    catch (Exception ex)
-//        //    {
-//        //        Trace.TraceError("OnServerMessage: {0}", ex.Message);
-//        //    }
-//        //}
-
-//        //private void SetLightOn(string lights)
-//        //{
-//        //    if (lights.Contains("1"))
-//        //    {
-//        //        _gts.WriteOut(Parameter.cardn, Parameter.EXO_9, false);
-//        //    }
-//        //    else
-//        //    {
-//        //        _gts.WriteOut(Parameter.cardn, Parameter.EXO_9, true);
-//        //    }
-//        //    if (lights.Contains("2"))
-//        //    {
-//        //        _gts.WriteOut(Parameter.cardn, Parameter.EXO_10, false);
-//        //    }
-//        //    else
-//        //    {
-//        //        _gts.WriteOut(Parameter.cardn, Parameter.EXO_10, true);
-//        //    }
-//        //    if (lights.Contains("3"))
-//        //    {
-//        //        _gts.WriteOut(Parameter.cardn, Parameter.EXO_11, false);
-//        //    }
-//        //    else
-//        //    {
-//        //        _gts.WriteOut(Parameter.cardn, Parameter.EXO_11, true);
-//        //    }
-//        //    if (lights.Contains("4"))
-//        //    {
-//        //        _gts.WriteOut(Parameter.cardn, Parameter.EXO_12, false);
-//        //    }
-//        //    else
-//        //    {
-//        //        _gts.WriteOut(Parameter.cardn, Parameter.EXO_12, true);
-//        //    }
-//        //}
-
-//        //private void SetLightOff()
-//        //{
-//        //    _gts.WriteOut(Parameter.cardn, Parameter.EXO_10, true);
-//        //    _gts.WriteOut(Parameter.cardn, Parameter.EXO_9, true);
-//        //    _gts.WriteOut(Parameter.cardn, Parameter.EXO_11, true);
-//        //    _gts.WriteOut(Parameter.cardn, Parameter.EXO_12, true);
-//        //}
-//    }
-//}
diff --git a/src/Bro.Device.GTSCard/GtsIO.cs b/src/Bro.Device.GTSCard/GtsIO.cs
deleted file mode 100644
index de2b527..0000000
--- a/src/Bro.Device.GTSCard/GtsIO.cs
+++ /dev/null
@@ -1,63 +0,0 @@
-锘�//using System;
-//using System.Collections.Generic;
-//using System.Linq;
-//using System.Text;
-//using System.Threading.Tasks;
-
-//namespace Bro.Device.GTSCard
-//{
-//    public class GtsIO
-//    {
-//        /// <summary>
-//        /// 杈撳叆鐐逛綅
-//        /// </summary>
-//        public int Input;
-
-//        /// <summary>
-//        /// 杈撳嚭鐐逛綅
-//        /// </summary>
-//        public int Output;
-
-//        /// <summary>
-//        /// 鍥為浂鐐逛綅
-//        /// </summary>
-//        public int Home;
-
-//        /// <summary>
-//        /// 姝f瀬闄�
-//        /// </summary>
-//        public int Limpos;
-
-//        /// <summary>
-//        /// 璐熸瀬闄�
-//        /// </summary>
-//        public int Limneg;
-
-//        /// <summary>
-//        /// 鎶ヨ淇℃伅
-//        /// </summary>
-//        public int Alarm;
-
-//        /// <summary>
-//        /// 杞寸姸鎬�
-//        /// </summary>
-//        public int AxisSts;
-
-//        /// <summary>
-//        /// X杞磋鍒掍綅缃�
-//        /// </summary>
-//        public double PrfPosX;
-//        /// <summary>
-//        /// Y杞磋鍒掍綅缃�
-//        /// </summary>
-//        public double PrfPosY;
-//        /// <summary>
-//        /// Z杞磋鍒掍綅缃�
-//        /// </summary>
-//        public double PrfPosZ;
-//        /// <summary>
-//        /// A杞磋鍒掍綅缃�
-//        /// </summary>
-//        public double PrfPosA;
-//    }
-//}
diff --git a/src/Bro.Device.GTSCard/GtsMotionCard.cs b/src/Bro.Device.GTSCard/GtsMotionCard.cs
deleted file mode 100644
index 4d5a7da..0000000
--- a/src/Bro.Device.GTSCard/GtsMotionCard.cs
+++ /dev/null
@@ -1,483 +0,0 @@
-锘�//using Broc.AOI.Entity;
-//using System;
-//using System.Collections.Generic;
-//using System.Runtime.InteropServices;
-//using System.Threading;
-
-//namespace Bro.Device.GTSCard
-//{
-//    public class GtsMotionCard
-//    {
-//        private const int dangliang = 1;
-//        private object lockobj = new object();//绾跨▼閿�
-//        /// <summary>
-//        /// 鍒濆鍖栧崱
-//        /// </summary>
-//        /// <returns></returns>
-//        public bool InitCard()
-//        {
-//            short rtn;
-//            rtn = GTSCardAPI.GT_Open(0, 0, 1);                  //鎵撳紑杩愬姩鎺у埗鍣ㄣ�傚弬鏁板繀椤讳负锛�0,1锛夛紝涓嶈兘淇敼銆�
-//            //rtn += mc.GT_Reset(0);
-//            rtn += GTSCardAPI.GT_LoadConfig(0, AppDomain.CurrentDomain.BaseDirectory + @"Gts800.cfg");
-//            rtn += GTSCardAPI.GT_ClrSts(0, 1, 8);
-//            return rtn == 0;
-
-//        }
-//        /// <summary>
-//        /// 鎵╁睍妯″潡鍒濆鍖�
-//        /// </summary>
-//        /// <param name="cardNum"></param>
-//        /// <returns></returns>
-//        public bool ExtIOModuleInit(short cardNum)
-//        {
-//            short rtn = 0;
-//            rtn += GTSCardAPI.GT_OpenExtMdl(cardNum, "gts.dll");
-//            rtn += GTSCardAPI.GT_LoadExtConfig(cardNum, "ExtModule.cfg");
-//            rtn += GTSCardAPI.GT_ResetExtMdl(cardNum);
-//            return rtn == 0;
-//        }
-//        /// <summary>
-//        /// 鍥為浂
-//        /// </summary>
-//        /// <param name="cardNum">鍗″彿</param>
-//        /// <param name="axisNum">杞村彿</param>
-//        /// <param name="homests">杞村洖鍘熺偣鐘舵��</param>
-//        public bool GoHome(short cardNum, short axisNum, short home_mode, short home_dir, int homeoffset)
-//        {
-//            GTSCardAPI.GT_ZeroPos(cardNum, axisNum, 1);
-//            GTSCardAPI.THomePrm thomeprm;
-//            GTSCardAPI.THomeStatus homests;
-//            short rtn = GTSCardAPI.GT_GetHomePrm(cardNum, axisNum, out thomeprm);
-//            thomeprm.mode = home_mode;//鍥為浂鏂瑰紡
-//            thomeprm.moveDir = home_dir;//鍥為浂鏂瑰悜
-//            thomeprm.edge = 0;
-//            thomeprm.velHigh = 50;
-//            thomeprm.velLow = 50;
-//            thomeprm.acc = 50;
-//            thomeprm.dec = 50;
-//            thomeprm.searchHomeDistance = 9999999;//鎼滄悳璺濈
-//            thomeprm.homeOffset = 0;  //鍋忕Щ璺濈
-//            thomeprm.escapeStep = 1000;
-//            rtn = GTSCardAPI.GT_GoHome(cardNum, axisNum, ref thomeprm);  //鍚姩鍥為浂
-//            //do
-//            //{
-//            //    mc.GT_GetHomeStatus(cardNum, axisNum, out homests);//鑾峰彇鍥炲師鐐圭姸鎬�
-//            //} while (homests.run == 1); // 绛夊緟鎼滅储鍘熺偣鍋滄
-//            //mc.GT_ZeroPos(cardNum, axisNum, 1);
-//            //return true;
-
-//            while (true)
-//            {
-//                Thread.Sleep(5);
-//                GTSCardAPI.GT_GetHomeStatus(cardNum, axisNum, out homests);
-//                if (homests.run == 0)
-//                {
-//                    if (homests.error == 0)
-//                    {
-//                        Thread.Sleep(200);
-//                        GTSCardAPI.GT_ZeroPos(cardNum, axisNum, 1);
-//                    }
-//                    return true;
-//                }
-//            }
-//        }
-
-//        /// <summary>
-//        /// 鐐逛綅鍒扮偣浣� 杩愬姩
-//        /// </summary>
-//        /// <param name="cardNum">鍗″彿</param>
-//        /// <param name="axisNum">杞村彿</param>
-//        /// <param name="prfPosition">瑙勫垝浣嶇疆,鍗曚綅姣背</param>
-//        /// <param name="prfVelocity">瑙勫垝閫熷害,鍗曚綅绫虫瘡绉�</param>
-//        public void P2P(short cardNum, short axisNum, int prfPosition, int prfVelocity)
-//        {
-//            GTSCardAPI.TTrapPrm trapprm;
-//            GTSCardAPI.GT_PrfTrap(cardNum, axisNum);
-//            GTSCardAPI.GT_GetTrapPrm(cardNum, axisNum, out trapprm);
-//            trapprm.acc = Parameter.p2pAcc;
-//            trapprm.dec = Parameter.p2pDec;
-//            trapprm.smoothTime = 1;
-//            GTSCardAPI.GT_SetTrapPrm(cardNum, axisNum, ref trapprm);
-//            GTSCardAPI.GT_SetPos(cardNum, axisNum, prfPosition * dangliang);
-//            GTSCardAPI.GT_SetVel(cardNum, axisNum, prfVelocity * dangliang);
-//            GTSCardAPI.GT_Update(cardNum, 1 << (axisNum - 1));
-//        }
-
-//        /// <summary>
-//        /// 鍋滄
-//        /// </summary>
-//        /// <param name="cardNum"></param>
-//        /// <param name="axisNum"></param>
-//        /// <param name="option">0琛ㄧず骞虫粦鍋滄锛�1琛ㄧず绱ф�ュ仠姝�</param>
-//        public void Stop(short cardNum, short axisNum, short option)
-//        {
-//            GTSCardAPI.GT_Stop(cardNum, 1 << (axisNum - 1), option);
-//        }
-
-//        /// <summary>
-//        /// 鍋滄
-//        /// </summary>
-//        /// <param name="cardNum"></param>
-//        /// <param name="value">鍋滄鏂瑰紡锛宖alse琛ㄧず骞虫粦鍋滄锛宼rue琛ㄧず绱ф�ュ仠姝�</param>
-//        public void Stop(short cardNum, bool value)
-//        {
-//            for (short i = 1; i <= Axisn.Count; i++)
-//            {
-//                Stop(cardNum, i, value);
-//            }
-//        }
-
-//        /// <summary>
-//        /// Jog杩愬姩
-//        /// </summary>
-//        /// <param name="cardNum"></param>
-//        /// <param name="axisNum"></param>
-//        /// <param name="prfvel_ms">瑙勫垝閫熷害锛屽崟浣嶇背姣忕</param>
-//        public void Jog(short cardNum, short axisNum, double prfvel_ms)
-//        {
-//            GTSCardAPI.TJogPrm jogprm = new GTSCardAPI.TJogPrm();
-//            short rtn = GTSCardAPI.GT_PrfJog(cardNum, axisNum);
-//            jogprm.acc = 1;
-//            jogprm.dec = 1;
-//            GTSCardAPI.GT_SetJogPrm(cardNum, axisNum, ref jogprm);//璁剧疆jog杩愬姩鍙傛暟
-//            GTSCardAPI.GT_SetVel(cardNum, axisNum, prfvel_ms);//璁剧疆鐩爣閫熷害
-//            GTSCardAPI.GT_Update(cardNum, 1 << (axisNum - 1));//鏇存柊杞磋繍鍔�
-//        }
-//        /// <summary>
-//        /// 璇诲彇杈撳叆
-//        /// </summary>
-//        /// <param name="cardNum">鍗″彿</param>
-//        /// <param name="index">杈撳叆鍙�</param>
-//        /// <returns>鏈夎緭鍏ヨ繑鍥瀟rue锛屾棤杈撳叆杩斿洖false</returns>
-//        public bool GetDi(short cardNum, short index)
-//        {
-//            int value;
-//            GTSCardAPI.GT_GetDi(cardNum, GTSCardAPI.MC_GPI, out value);
-//            if ((value & 1 << index) == 0) return true;//鏈夎緭鍏ヨ繑鍥瀟rue
-//            else return false;          //鏃犺緭鍏ヨ繑鍥瀎alse
-//        }
-//        /// <summary>
-//        /// 璇诲彇姝i檺浣�
-//        /// </summary>
-//        /// <param name="cardNum">鍗″彿</param>
-//        /// <param name="axisNum">杞村彿</param>
-//        /// <returns>0琛ㄧず瑙﹀彂闄愪綅锛�1琛ㄧず娌℃湁瑙﹀彂</returns>
-//        public bool GetPosLimit(short cardNum, short axisNum)
-//        {
-//            int value;
-//            GTSCardAPI.GT_GetDi(cardNum, GTSCardAPI.MC_LIMIT_POSITIVE, out value);
-//            if ((value & 1 << axisNum) == 0) return true;////0琛ㄧず瑙﹀彂闄愪綅,杩斿洖true锛�
-//            else return false;    // //1琛ㄧず娌℃湁瑙﹀彂,杩斿洖false
-//        }
-//        /// <summary>
-//        /// 璇诲彇璐熼檺浣�
-//        /// </summary>
-//        /// <param name="cardNum">鍗″彿</param>
-//        /// <param name="axisNum">杞村彿</param>
-//        /// <returns>0琛ㄧず瑙﹀彂闄愪綅,杩斿洖true锛�1琛ㄧず娌℃湁瑙﹀彂,杩斿洖false</returns>
-//        public bool GetNegLimit(short cardNum, short axisNum)
-//        {
-//            int value;
-//            GTSCardAPI.GT_GetDi(cardNum, GTSCardAPI.MC_LIMIT_NEGATIVE, out value);
-//            if ((value & 1 << axisNum) == 0) return true;//0琛ㄧず瑙﹀彂闄愪綅,杩斿洖true锛�
-//            else return false;                         //1琛ㄧず娌℃湁瑙﹀彂,杩斿洖false
-//        }
-//        /// <summary>
-//        /// 杈撳嚭
-//        /// </summary>
-//        /// <param name="cardNumo">鍗″彿</param>
-//        /// <param name="index">杈撳嚭鍙�,杩斿洖1-16</param>
-//        /// <param name="value">0琛ㄧず杈撳嚭锛�1琛ㄧず鍏抽棴</param>
-//        public void WriteOut(short cardNumo, short index, bool value)
-//        {
-//            short outNum = 0;
-//            outNum = (short)(index % 100 + 1);
-//            switch (value)
-//            {
-//                case true:
-//                    {
-//                        GTSCardAPI.GT_SetDoBit(cardNumo, GTSCardAPI.MC_GPO, outNum, 0);//鎸変綅杈撳嚭锛�0琛ㄧず杈撳嚭锛�1琛ㄧず鍏抽棴
-//                    }
-//                    break;
-//                case false:
-//                    {
-//                        GTSCardAPI.GT_SetDoBit(cardNumo, GTSCardAPI.MC_GPO, outNum, 1);//鎸変綅杈撳嚭锛�0琛ㄧず杈撳嚭锛�1琛ㄧず鍏抽棴
-//                    }
-//                    break;
-//            }
-//        }
-//        /// <summary>
-//        /// 璇诲彇IO杈撳嚭鐘舵��
-//        /// </summary>
-//        /// <param name="cardNumo"></param>
-//        /// <param name="index"></param>
-//        /// <returns></returns>
-//        public bool GetDoSts(short cardNumo, short index)
-//        {
-//            short outNum = 0;
-//            int outSts;
-//            outNum = (short)(index % 100);
-//            GTSCardAPI.GT_GetDo(cardNumo, GTSCardAPI.MC_GPO, out outSts);
-//            if ((outSts & (1 << outNum)) == 0) return true;
-//            else return false;
-//        }
-//        /// <summary>
-//        /// 璇诲彇褰撳墠鍊�
-//        /// </summary>
-//        /// <param name="cardNum">鍗″彿</param>
-//        /// <param name="axisNum">杞村彿</param>
-//        /// <returns>杩斿洖褰撳墠鍊硷紝鍗曚綅姣背</returns>
-//        public double GetPosMM(short cardNum, short axisNum)
-//        {
-//            lock (lockobj)
-//            {
-//                double prfpos = 0; uint pclock = 0;
-//                GTSCardAPI.GT_GetPrfPos(cardNum, axisNum, out prfpos, 1, out pclock);
-//                return prfpos / dangliang;
-//            }
-//        }
-
-//        /// <summary>
-//        /// 璇诲彇杞寸姸鎬侊紝鍒ゆ柇鐢垫満鏄惁鍋滄
-//        /// </summary>
-//        /// <param name="cardNum"></param>
-//        /// <param name="axisNum"></param>
-//        /// <returns></returns>
-//        public bool IsStop(short cardNum, short axisNum)
-//        {
-//            lock (lockobj)
-//            {
-//                int sts = 0;
-//                uint pclock = 0;
-//                GTSCardAPI.GT_GetSts(cardNum, axisNum, out sts, 1, out pclock);
-//                if ((sts & 0x400) == 0) return true;//鍋滄杩斿洖true
-//                else return false;              //杩愯涓繑鍥瀎alse
-//            }
-//        }
-
-//        /// <summary>
-//        /// 浜岀淮浣嶇疆姣旇緝杈撳嚭
-//        /// </summary>
-//        /// <param name="cardNum"></param>
-//        /// <param name="output_data"></param>
-//        public void Compare2DOutput(short cardNum, short chn, int[] output_data)
-//        {
-//            GTSCardAPI.GT_2DCompareClear(cardNum, chn);
-//            GTSCardAPI.GT_2DCompareMode(cardNum, chn, GTSCardAPI.COMPARE2D_MODE_2D);
-//            GTSCardAPI.GT_SetComparePort(cardNum, GTSCardAPI.COMPARE_PORT_GPO, 0, 1);
-//            GTSCardAPI.T2DComparePrm Prm;
-//            Prm.encx = 1;
-//            Prm.ency = 2;
-//            Prm.maxerr = 300;
-//            Prm.outputType = 0;
-//            Prm.source = 0;
-//            Prm.startLevel = 0;
-//            Prm.threshold = 10;
-//            Prm.time = 10000;
-//            GTSCardAPI.GT_2DCompareSetPrm(cardNum, chn, ref Prm);
-//            GTSCardAPI.T2DCompareData[] pBuf = new GTSCardAPI.T2DCompareData[5];
-//            for (int i = 0; i < output_data.Length / 2; i += 2)
-//            {
-//                pBuf[i].px = 1000;
-//                pBuf[i + 1].py = 1000;
-//            }
-//            GTSCardAPI.GT_2DCompareData(cardNum, chn, (short)(output_data.Length / 2), ref pBuf[0], 0);
-//            GTSCardAPI.GT_2DCompareStart(cardNum, chn);
-//        }
-
-//        /// <summary>
-//        /// 鎸変綅璇诲彇鎵╁睍IO杈撳叆鍙�
-//        /// </summary>
-//        /// <param name="cardNum"></param>
-//        /// <param name="mdl"></param>
-//        /// <param name="index"></param>
-//        /// <returns></returns>
-//        public bool GetDiBit(short cardNum, short mdl, short index)
-//        {
-//            ushort pvalue = 0;
-//            GTSCardAPI.GT_GetExtIoBit(cardNum, mdl, index, out pvalue);
-//            return pvalue == 0;
-//        }
-
-//        /// <summary>
-//        /// IO杈撳嚭
-//        /// </summary>
-//        /// <param name="cardNum">鍗″彿</param>
-//        /// <param name="mdl">妯″潡鍙�</param>
-//        /// <param name="index">IO杈撳嚭</param>
-//        /// <param name="value">true琛ㄧず杈撳嚭锛宖alse琛ㄧず鏃犺緭鍑�</param>
-//        public void MC_WriteDigitalOutput(short cardNum, short mdl, short index, bool value)
-//        {
-//            if (value)
-//            {
-//                GTSCardAPI.GT_SetExtIoBit(cardNum, mdl, index, 0);
-//            }
-//            else
-//            {
-//                GTSCardAPI.GT_SetExtIoBit(cardNum, mdl, index, 1);
-//            }
-//        }
-
-//        /// <summary>
-//        /// 寤虹珛鎻掕ˉ鍧愭爣绯�
-//        /// </summary>
-//        /// <param name="crdnum">鍧愭爣绯诲彿</param>
-//        public void BuildCrd(short cardNum, short crdn, short axis_x, short axis_y, double maxVel, double maxAcc, short evenTime)
-//        {
-//            GTSCardAPI.TCrdPrm crdPrm;
-//            crdPrm.dimension = 2;
-//            crdPrm.synVelMax = maxVel;
-//            crdPrm.synAccMax = maxAcc;
-//            crdPrm.evenTime = evenTime;
-//            crdPrm.profile1 = 1;
-//            crdPrm.profile2 = 2;
-//            crdPrm.profile3 = 0;
-//            crdPrm.profile4 = 0;
-//            crdPrm.profile5 = 0;
-//            crdPrm.profile6 = 0;
-//            crdPrm.profile7 = 0;
-//            crdPrm.profile8 = 0;
-//            crdPrm.setOriginFlag = 1;
-//            crdPrm.originPos1 = 0;
-//            crdPrm.originPos2 = 0;
-//            crdPrm.originPos3 = 0;
-//            crdPrm.originPos4 = 0;
-//            crdPrm.originPos5 = 0;
-//            crdPrm.originPos6 = 0;
-//            crdPrm.originPos7 = 0;
-//            crdPrm.originPos8 = 0;
-//            GTSCardAPI.GT_SetCrdPrm(cardNum, crdn, ref crdPrm);
-//            GTSCardAPI.GT_CrdClear(cardNum, crdn, 0);
-//            GTSCardAPI.GT_ClrSts(cardNum, 1, 4);
-//        }
-//        /// <summary>
-//        /// 鐩寸嚎鎻掕ˉ
-//        /// </summary>
-//        /// <param name="chabunum"></param>
-//        public void LnXY(short cardNum, short crdn, short fifon, int[] data, double vel, double prfacc, double endVel)
-//        {
-//            short run;
-//            int segment;
-//            for (int i = 0; i < data.Length; i += 2)
-//            {
-//                run = GTSCardAPI.GT_LnXY(cardNum, crdn, data[i], data[i + 1], vel, prfacc, endVel, fifon);
-//            }
-//            run = GTSCardAPI.GT_CrdStart(cardNum, crdn, 0);
-//            //while (true)
-//            //{
-//            //    mc.GT_CrdStatus(cardNum, crdn, out run, out segment, fifon);
-//            //    if (run == 0)
-//            //    {
-//            //        break;
-//            //    }
-//            //}
-//        }
-//        /// <summary>
-//        /// 浠ュ渾蹇冨仛鍦嗗姬鎻掕ˉ
-//        /// </summary>
-//        /// <param name="cardNum"></param>
-//        /// <param name="crdn"></param>
-//        /// <param name="fifon"></param>
-//        /// <param name="data"></param>
-//        /// <param name="xCenter"></param>
-//        /// <param name="yCenter"></param>
-//        /// <param name="dir"></param>
-//        /// <param name="vel"></param>
-//        /// <param name="prfacc"></param>
-//        /// <param name="endVel"></param>
-//        public void ArcXYC(short cardNum, short crdn, short fifon, int[] data, double xCenter, double yCenter, short dir, double vel, double prfacc, double endVel)
-//        {
-//            short run;
-//            int segment;
-//            for (int i = 0; i < data.Length; i += 2)
-//            {
-//                GTSCardAPI.GT_ArcXYC(cardNum, crdn, data[i], data[i + 1], xCenter, yCenter, dir, vel, prfacc, endVel, fifon);
-//            }
-//            GTSCardAPI.GT_CrdStart(cardNum, crdn, 0);
-//            while (true)
-//            {
-//                GTSCardAPI.GT_CrdStatus(cardNum, crdn, out run, out segment, fifon);
-//                if (run == 0)
-//                {
-//                    break;
-//                }
-//            }
-//        }
-//        /// <summary>
-//        /// 浠ュ崐寰勫仛鍦嗗姬鎻掕ˉ
-//        /// </summary>
-//        /// <param name="cardNum"></param>
-//        /// <param name="crdn"></param>
-//        /// <param name="fifon"></param>
-//        /// <param name="data"></param>
-//        /// <param name="rad"></param>
-//        /// <param name="dir"></param>
-//        /// <param name="vel"></param>
-//        /// <param name="prfacc"></param>
-//        /// <param name="endVel"></param>
-//        public void ArcXYR(short cardNum, short crdn, short fifon, int[] data, double rad, short dir, double vel, double prfacc, double endVel)
-//        {
-//            short run;
-//            int segment;
-//            for (int i = 0; i < data.Length; i += 2)
-//            {
-//                GTSCardAPI.GT_ArcXYR(cardNum, crdn, data[i], data[i + 1], rad, dir, vel, prfacc, endVel, fifon);
-//            }
-//            GTSCardAPI.GT_CrdStart(cardNum, crdn, 0);
-//            while (true)
-//            {
-//                GTSCardAPI.GT_CrdStatus(cardNum, crdn, out run, out segment, fifon);
-//                if (run == 0)
-//                {
-//                    break;
-//                }
-//            }
-//        }
-//        /// <summary>
-//        /// 鍋滄杩愬姩
-//        /// </summary>
-//        /// <param name="cardNum"></param>
-//        /// <param name="axisNum">杞村彿</param>
-//        /// <param name="value">鍋滄鏂瑰紡锛宖alse琛ㄧず骞虫粦鍋滄锛宼rue琛ㄧず绱ф�ュ仠姝�</param>
-//        public void Stop(short cardNum, short axisNum, bool value)
-//        {
-//            switch (value)
-//            {
-//                case false:
-//                    {
-//                        GTSCardAPI.GT_Stop(cardNum, 1 << (axisNum - 1), 0);
-//                    }
-//                    break;
-//                case true:
-//                    {
-//                        GTSCardAPI.GT_Stop(cardNum, 1 << (axisNum - 1), 1 << (axisNum - 1));
-
-//                    }
-//                    break;
-//            }
-
-//        }
-
-//        /// <summary>
-//        /// 鏄惁鎶ヨ
-//        /// bit 0-鍏夋爡锛宐it 1-闂ㄥ紑鍏筹紝bit 2-鎬ュ仠
-//        /// 1100 0000 0101
-//        /// </summary>
-//        /// <returns></returns>
-//        public bool IsAlarm()
-//        {
-//            GTSCardAPI.GT_GetDi(Parameter.cardNum, GTSCardAPI.MC_GPI, out var input);
-//            var bRet = 
-//                ((input & (1 << Parameter.EXI6)) >> Parameter.EXI6) == 1 ||
-//                //((input & (1 << GlueInCommands.EXI1)) >> GlueInCommands.EXI1) == 0 || todo
-//                ((input & (1 << Parameter.EXI4)) >> Parameter.EXI4) == 1;
-//            //var bRet = isAlarm ||
-//            //    ((input & (1 << Parameter.EXI6)) >> Parameter.EXI6) == 1 ||
-//            //    //((input & (1 << GlueInCommands.EXI1)) >> GlueInCommands.EXI1) == 0 || todo
-//            //    ((input & (1 << Parameter.EXI4)) >> Parameter.EXI4) == 1;
-
-//            return bRet;
-//        }
-//    }
-//}
\ No newline at end of file
diff --git a/src/Bro.Device.GTSCard/GtsParameter.cs b/src/Bro.Device.GTSCard/GtsParameter.cs
deleted file mode 100644
index 7e4f21d..0000000
--- a/src/Bro.Device.GTSCard/GtsParameter.cs
+++ /dev/null
@@ -1,194 +0,0 @@
-锘�//using System;
-//using System.Collections.Generic;
-//using System.Configuration;
-//using System.Linq;
-//using System.Text;
-//using System.Threading.Tasks;
-
-//namespace Broc.AOI.Entity
-//{
-//    /// <summary>
-//    /// 鐐逛綅绫诲瀷
-//    /// </summary>
-//    public enum PointType
-//    {
-//        /// <summary>
-//        /// 鐩寸嚎鎻掕ˉ
-//        /// </summary>
-//        Line = 1,
-//        /// <summary>
-//        /// 鍦嗗姬鎻掕ˉ(鍗婂緞)
-//        /// </summary>
-//        CircleRadius,
-//        /// <summary>
-//        /// 鍦嗗姬鎻掕ˉ(鍦嗗績)
-//        /// </summary>
-//        CircleCenter
-//    }
-
-//    public static class Axisn
-//    {
-//        public const short X = 1;
-//        public const short Y = 2;
-//        public const short Z = 3;
-//        public const short Count = 4;
-//    }
-
-//    public static class Parameter
-//    {
-//        #region 杩愬姩鍙傛暟
-//        public static short cardn = Convert.ToInt16(ConfigurationManager.AppSettings["cardn"]);
-//        public static short crdn = Convert.ToInt16(ConfigurationManager.AppSettings["crdn"]);
-//        public static short fifo = Convert.ToInt16(ConfigurationManager.AppSettings["fifo"]);
-//        public static int flySpeed = Convert.ToInt32(ConfigurationManager.AppSettings["flySpeed"]);
-//        public static double flyAcc = Convert.ToDouble(ConfigurationManager.AppSettings["flyAcc"]);
-//        public static int gocatorSpeed = Convert.ToInt32(ConfigurationManager.AppSettings["gocatorSpeed"]);
-//        public static int p2pSpeed = Convert.ToInt32(ConfigurationManager.AppSettings["p2pSpeed"]);
-//        public static double p2pAcc = Convert.ToDouble(ConfigurationManager.AppSettings["p2pAcc"]);
-//        public static double p2pDec = Convert.ToDouble(ConfigurationManager.AppSettings["p2pDec"]);
-//        public static int calibrationSpeed = Convert.ToInt32(ConfigurationManager.AppSettings["calibrationSpeed"]);
-//        public static int calibrationZ = Convert.ToInt16(ConfigurationManager.AppSettings["calibrationZ"]);
-//        public static int barcodeSpeed = Convert.ToInt32(ConfigurationManager.AppSettings["barcodeSpeed"]);
-//        public static int freeSpeed = Convert.ToInt32(ConfigurationManager.AppSettings["freeSpeed"]);
-//        public static int velEnd = Convert.ToInt32(ConfigurationManager.AppSettings["velEnd"]);
-//        public static int homeSpeed = Convert.ToInt32(ConfigurationManager.AppSettings["homeSpeed"]);
-//        public static int loading = Convert.ToInt32(ConfigurationManager.AppSettings["loading"]);
-//        //public const short cardn = 0;//杩愬姩鎺у埗鍣ㄥ崱鍙� 榛樿涓猴細0
-//        //public const short crdn = 1;//鍧愭爣绯诲彿 鍙栧�艰寖鍥达細[1, 2]
-//        //public const short fifo = 0;//鎻掕ˉ缂撳瓨鍖哄彿 鍙栧�艰寖鍥达細[0, 1]锛岄粯璁ゅ�间负锛�0
-//        //public const int flySpeed = 250;//椋炴媿閫熷害
-//        //public const double flyAcc = 0.5;//椋炴媿鍔犻�熷害
-//        //public const int gocatorSpeed = 150;//3D妫�娴嬭酱杩愬姩閫熷害
-//        //public const int p2pSpeed = 250;//P2P閫熷害
-//        //public const double p2pAcc = 1;//P2P鍔犻�熷害
-//        //public const double p2pDec = 1;//P2P鍑忛�熷害
-//        //public const int calibrationSpeed = 10;//鏍囧畾閫熷害
-//        //public const int calibrationZ = 19336;//鏍囧畾Z杞撮珮搴�
-//        //public const int barcodeSpeed = 250;//鏉$爜妫�娴嬭酱杩愬姩閫熷害
-//        //public const int freeSpeed = 250;//闈炴娴嬫椂杞磋繍鍔ㄩ�熷害
-//        //public const int velEnd = 0;//椋炴媿缁撴潫閫熷害
-//        //public const int homeSpeed = 50;//鍥為浂閫熷害
-//        //public const int loading = 80000;//涓婃枡浣嶇疆
-//        #endregion
-
-//        #region 鐩告満鍙傛暟
-//        public static int flyExposure = Convert.ToInt32(ConfigurationManager.AppSettings["flyExposure"]);
-//        public static int photoExposure = Convert.ToInt32(ConfigurationManager.AppSettings["photoExposure"]);
-//        public static int codeExposure = Convert.ToInt32(ConfigurationManager.AppSettings["codeExposure"]);
-//        public static int existExposure = Convert.ToInt32(ConfigurationManager.AppSettings["existExposure"]);
-//        public static int holeExposure = Convert.ToInt32(ConfigurationManager.AppSettings["holeExposure"]);
-//        public static int realTimeExposure = Convert.ToInt32(ConfigurationManager.AppSettings["realTimeExposure"]);
-        
-//        //public const int flyExposure = 200;//椋炴媿鏇濆厜
-//        //public const int photoExposure = 250000;//鎷嶇収鏇濆厜
-//        //public const int codeExposure = 20000;//鏉$爜鏇濆厜
-//        //public const int existExposure = 20000;//鏈夋棤妫�娴嬬殑鏇濆厜
-//        #endregion
-
-//        #region IO
-//        /// <summary>
-//        /// 杈撳叆IO榛樿鍊�
-//        /// </summary>
-//        public const int InDefaultValue = 0xFFDA;
-//        /// <summary>
-//        /// 澶圭揣姘旂几
-//        /// </summary>
-//        public const short EXO_1 = 100;//澶圭揣姘旂几
-//        /// <summary>
-//        /// 鏃ュ厜鐏�
-//        /// </summary>
-//        public const short EXO_2 = 101;//鏃ュ厜鐏�
-//        /// <summary>
-//        /// 鍏夋簮鍒囨崲
-//        /// </summary>
-//        public const short EXO_3 = 102;//鍏夋簮鍒囨崲
-//        /// <summary>
-//        /// 绾㈢伅
-//        /// </summary>
-//        public const short EXO_4 = 103;//绾㈢伅
-//        /// <summary>
-//        /// 榛勭伅
-//        /// </summary>
-//        public const short EXO_5 = 104;//榛勭伅
-//        /// <summary>
-//        /// 缁跨伅
-//        /// </summary>
-//        public const short EXO_6 = 105;//缁跨伅
-//        /// <summary>
-//        /// 铚傞福鍣�
-//        /// </summary>
-//        public const short EXO_7 = 106;//铚傞福鍣�
-//        /// <summary>
-//        /// Gocator X
-//        /// </summary>
-//        public const short EXO_8 = 107;//Gocator X
-
-//        /// <summary>
-//        /// 姝i潰鍏�(宸�)
-//        /// </summary>
-//        public const short EXO_9 = 108;//姝i潰鍏�(宸�)
-
-//        /// <summary>
-//        /// 姝i潰鍏�(鍚�)
-//        /// </summary>
-//        public const short EXO_10 = 109;//姝i潰鍏�(鍚�)
-
-//        /// <summary>
-//        /// 姝i潰鍏�(鍙�)
-//        /// </summary>
-//        public const short EXO_11 = 110;//姝i潰鍏�(鍙�)
-
-//        /// <summary>
-//        /// 姝i潰鍏�(鍓�)
-//        /// </summary>
-//        public const short EXO_12 = 111;//姝i潰鍏�(鍓�)
-
-//        /// <summary>
-//        /// Gocator Y
-//        /// </summary>
-//        public const short EXO_16 = 115;//Gocator Y
-
-//        /// <summary>
-//        /// 杈撳嚭IO榛樿鍊�
-//        /// </summary>
-//        public const int OutDefaultValue = 0xFFF;
-//        /// <summary>
-//        /// 宸﹀惎鍔�
-//        /// </summary>
-//        public const short EXI0 = 0;//宸﹁捣鍔�
-//        /// <summary>
-//        /// 鍙冲惎鍔�
-//        /// </summary>
-//        public const short EXI1 = 1;//鍙宠捣鍔�
-//        /// <summary>
-//        /// 鍋滄
-//        /// </summary>
-//        public const short EXI2 = 2;//鍋滄
-//        /// <summary>
-//        /// 澶嶄綅
-//        /// </summary>
-//        public const short EXI3 = 3;//澶嶄綅
-//        /// <summary>
-//        /// 鎬ュ仠
-//        /// </summary>
-//        public const short EXI4 = 4;//鎬ュ仠
-//        /// <summary>
-//        /// 闂ㄥ紑鍏�
-//        /// </summary>
-//        public const short EXI5 = 5;//闂ㄥ紑鍏�
-//        /// <summary>
-//        /// 瀹夊叏鍏夊箷
-//        /// </summary>
-//        public const short EXI6 = 6;//瀹夊叏鍏夊箷
-//        public const short EXI7 = 7;//
-//        /// <summary>
-//        /// 澶圭揣姘旂几鍘熶綅
-//        /// </summary>
-//        public const short EXI8 = 8;//澶圭揣姘旂几鍘熶綅
-//        /// <summary>
-//        /// 澶圭揣姘旂几鍒颁綅
-//        /// </summary>
-//        public const short EXI9 = 9;//澶圭揣姘旂几鍒颁綅
-//        #endregion
-//    }
-//}
diff --git a/src/Bro.Device.GTSCard/GtsPos.cs b/src/Bro.Device.GTSCard/GtsPos.cs
deleted file mode 100644
index 8882cf2..0000000
--- a/src/Bro.Device.GTSCard/GtsPos.cs
+++ /dev/null
@@ -1,78 +0,0 @@
-锘縰sing System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace Bro.Device.GTSCard
-{
-    /// <summary>
-    /// 鍥洪珮鐐逛綅缁撴瀯
-    /// </summary>
-    public class GtsPos
-    {
-        /// <summary>
-        /// 鐐逛綅绫诲瀷
-        /// </summary>
-        public PosType Type;
-
-        /// <summary>
-        /// 鎻掕ˉ娈� x 杞寸粓鐐瑰潗鏍囧��,鍙栧�艰寖鍥达細[-1073741823, 1073741823]锛屽崟浣嶏細pulse
-        /// </summary>
-        public int X;
-
-        /// <summary>
-        /// 鎻掕ˉ娈� y 杞寸粓鐐瑰潗鏍囧�笺�傚彇鍊艰寖鍥达細[-1073741823, 1073741823]锛屽崟浣嶏細pulse
-        /// </summary>
-        public int Y;
-
-        /// <summary>
-        /// 鎻掕ˉ娈� z 杞寸粓鐐瑰潗鏍囧�笺�傚彇鍊艰寖鍥达細[-1073741823, 1073741823]锛屽崟浣嶏細pulse
-        /// </summary>
-        public int Z;
-
-        /// <summary>
-        /// 鍦嗗姬鎻掕ˉ鐨勫渾蹇� x 鏂瑰悜鐩稿浜庤捣鐐逛綅缃殑鍋忕Щ閲忋�� 
-        /// </summary>
-        public double CenterX;
-
-        /// <summary>
-        /// 鍦嗗姬鎻掕ˉ鐨勫渾蹇� y 鏂瑰悜鐩稿浜庤捣鐐逛綅缃殑鍋忕Щ閲�
-        /// </summary>
-        public double CenterY;
-
-        /// <summary>
-        /// 鍦嗗姬鎻掕ˉ鐨勫渾寮у崐寰勫�笺�傚彇鍊艰寖鍥达細[-1073741823, 1073741823]锛屽崟浣嶏細pulse銆� 
-        /// 鍗婂緞涓烘鏃讹紝琛ㄧず鍦嗗姬涓哄皬浜庣瓑浜� 180掳鍦嗗姬銆� 
-        /// 鍗婂緞涓鸿礋鏃讹紝琛ㄧず鍦嗗姬涓哄ぇ浜� 180掳鍦嗗姬銆� 
-        /// 鍗婂緞鎻忚堪鏂瑰紡涓嶈兘鐢ㄦ潵鎻忚堪鏁村渾銆� 
-        /// </summary>
-        public double Radius;
-
-        /// <summary>
-        /// 鍦嗗姬鐨勬棆杞柟鍚戙�� 0锛氶『鏃堕拡鍦嗗姬銆� 1锛氶�嗘椂閽堝渾寮�
-        /// </summary>
-        public short CircleDir;
-
-        /// <summary>
-        /// 鎻掕ˉ娈电殑鐩爣鍚堟垚閫熷害銆傚彇鍊艰寖鍥达細(0, 32767)锛屽崟浣嶏細pulse/ms銆� 
-        /// </summary>
-        public double Vel;
-
-        /// <summary>
-        /// 鎻掕ˉ娈电殑鍚堟垚鍔犻�熷害銆傚彇鍊艰寖鍥达細(0, 32767)锛屽崟浣嶏細pulse/ms2銆� 
-        /// </summary>
-        public double Acc;
-
-        /// <summary>
-        /// 鎻掕ˉ娈电殑缁堢偣閫熷害銆傚彇鍊艰寖鍥达細[0, 32767)锛屽崟浣嶏細pulse/ms銆�
-        /// 璇ュ�煎彧鏈夊湪娌℃湁浣跨敤 鍓嶇灮棰勫鐞嗗姛鑳芥椂鎵嶆湁鎰忎箟锛屽惁鍒欒鍊兼棤鏁堛�傞粯璁ゅ�间负锛�0銆�
-        /// </summary>
-        public double EndVel;
-
-        /// <summary>
-        /// 鍏宠仈瀛楁
-        /// </summary>
-        public int CameraPoSq { get; set; }
-    }
-}

--
Gitblit v1.8.0