public void DevcomClear(string devID)
        {
            if (devDicList.Keys.Contains(devID))
            {
                DevBase dev = devDicList[devID];
                Array.Clear(dev.DB1, 0, dev.DB1.Count());
                Array.Clear(dev.DB2, 0, dev.DB2.Count());
                dev.DevStatusCommit();
                dev.DevDB1Commit();
            }

            //switch (devID)
            //{
            //    case "1001":
            //        {
            //            break;
            //        }
            //    case "1002":
            //        {
            //            break;
            //        }
            //    case "5001":
            //        {
            //            break;
            //        }
            //    case "5002":
            //        {
            //            break;
            //        }
            //    case "5003":
            //        {
            //            break;
            //        }
            //}
        }
        //public TestWarehouseOutBusiness WarehouseOutTest
        //{
        //    get
        //    {
        //        return warehouseOutTest;
        //    }
        //    private set { }
        //}
        public bool InitTestManager(ref string resultStr)
        {
            devDicList = new Dictionary <string, DevBase>();
            devBll     = new DeviceBll();
            plcRW      = new PlcRWSim();
            //1 创建设备对象
            IList <DeviceModel> devList = devBll.GetModelList(" ");

            foreach (DeviceModel devME in devList)
            {
                if (devME == null)
                {
                    continue;
                }
                DevBase ecamsDev = null;
                if (devME.DeviceType == EnumDevType.堆垛机.ToString())
                {
                    ecamsDev = new Stacker(devME, plcRW, devBll);
                }
                else if (devME.DeviceType == EnumDevType.站台.ToString())
                {
                    if (devME.BytesLenDB1 <= 0 || devME.BytesLenDB2 <= 0)
                    {
                        continue;
                    }
                    ecamsDev = new TransPort(devME, plcRW, devBll);
                }
                else if (devME.DeviceType == EnumDevType.机械手.ToString())
                {
                    ecamsDev = new XYZGriper(devME, plcRW, devBll);
                }
                else
                {
                    ecamsDev = null;
                    continue;
                }
                if (!ecamsDev.Init())
                {
                    resultStr = ecamsDev.DevModel.DeviceType + " " + ecamsDev.DevModel.DeviceID + " " + "初始化失败";
                    return(false);
                }
                devDicList[devME.DeviceID] = ecamsDev;
            }

            //2 创建业务模拟对象
            warehouseInOutTest = new TestWarehouseInOutBusiness();
            // warehouseOutTest = new TestWarehouseOutBusiness();
            warehouseInOutTest.Stacker1001   = devDicList["1001"] as Stacker;
            warehouseInOutTest.Stacker1002   = devDicList["1002"] as Stacker;
            warehouseInOutTest.TransPort2002 = devDicList["2002"] as TransPort;
            warehouseInOutTest.TransPort2004 = devDicList["2004"] as TransPort;
            warehouseInOutTest.TransPort2006 = devDicList["2006"] as TransPort;
            warehouseInOutTest.TransPort2008 = devDicList["2008"] as TransPort;
            warehouseInOutTest.TransPort2009 = devDicList["2009"] as TransPort;
            //warehouseInOutTest.TransPort2003 = devDicList["2003"] as TransPort;
            //warehouseInOutTest.TransPort2005 = devDicList["2005"] as TransPort;
            //warehouseInOutTest.TransPort2007 = devDicList["2007"] as TransPort;
            //warehouseInOutTest.TransPort2009 = devDicList["2009"] as TransPort;

            fillPalletTest             = new TestBusinessFillPallet();
            fillPalletTest.Grisper5001 = devDicList["5001"] as XYZGriper;

            grispTest1         = new TestBusinessGrisp();
            grispTest1.Grisper = devDicList["5002"] as XYZGriper;
            grispTest2         = new TestBusinessGrisp();
            grispTest2.Grisper = devDicList["5003"] as XYZGriper;

            //3
            sysWorkingThread = new Thread(new ThreadStart(SysWorkingProc));
            sysWorkingThread.IsBackground = true;
            sysWorkingThread.Name         = "业务测试主线程";

            return(true);
        }
        private void SysWorkingProc()
        {
            while (!exitRunning)
            {
                Thread.Sleep(scanInterval);

                try
                {
                    //1 遍历设备的接口

                    foreach (KeyValuePair <string, DevBase> keyVal in devDicList)
                    {
                        DataTable db1Dt = new DataTable();
                        db1Dt.Columns.Add("字节号");
                        db1Dt.Columns.Add("数值");
                        DataTable db2Dt = new DataTable();
                        db2Dt.Columns.Add("字节号");
                        db2Dt.Columns.Add("数值");
                        if (keyVal.Value == null)
                        {
                            continue;
                        }
                        DevBase dev = keyVal.Value;
                        if (!dev.ReadDB1())
                        {
                            //读设备DB2状态出现错误,在日志显示
                        }
                        for (int i = 0; i < dev.DB1.Count(); i++)
                        {
                            db1Dt.Rows.Add(new object[] { i, dev.DB1[i] });
                        }
                        for (int i = 0; i < dev.DB2.Count(); i++)
                        {
                            db2Dt.Rows.Add(new object[] { i, dev.DB2[i] });
                        }
                        if (DbMonitorView != null)
                        {
                            DbMonitorView.RefreshPlcData(int.Parse(dev.DevModel.DeviceID), db1Dt, db2Dt);
                        }
                    }

                    //2 业务逻辑模拟(执行层)
                    if (warehouseInOutTest != null)
                    {
                        warehouseInOutTest.ExeBusiness();
                    }
                    if (fillPalletTest != null)
                    {
                        fillPalletTest.ExeBusiness();
                    }
                    if (grispTest1 != null)
                    {
                        grispTest1.ExeBusiness();
                    }
                    if (grispTest2 != null)
                    {
                        grispTest2.ExeBusiness();
                    }
                    //3 写DB2
                    foreach (KeyValuePair <string, DevBase> keyVal in devDicList)
                    {
                        if (keyVal.Value == null)
                        {
                            continue;
                        }
                        DevBase dev = keyVal.Value;
                        if (!dev.DevStatusCommit())
                        {
                            //设备指令发送,如出现错误,在日志显示
                        }
                    }
                }
                catch (System.Exception ex)
                {
                    LogModel log = new LogModel();
                    log.logCategory = EnumLogCategory.控制层日志.ToString();
                    log.logContent  = "业务模拟系统异常,信息:" + ex.Message;
                    log.logTime     = System.DateTime.Now;

                    log.logType = EnumLogType.错误.ToString();
                    AddLog(log);
                }
            }
        }