Exemplo n.º 1
0
        /// <summary>
        /// 获得数据列表
        /// </summary>
        public List <Scada.Model.IO_DEVICE> DataTableToList(DataTable dt, string strWhere)

        {
            List <Scada.Model.SCADA_DEVICE_DRIVER> drivers = driverBLL.GetModelList("");


            List <Scada.Model.IO_PARA> allParas = paraBll.GetModelList(strWhere);

            List <Task> tasks = new List <Task>();

            List <Scada.Model.IO_DEVICE> modelList = new List <Scada.Model.IO_DEVICE>();
            int rowsCount = dt.Rows.Count;

            if (rowsCount > 0)
            {
                int sid = dt.Rows.Count % 100 == 0 ? (dt.Rows.Count / 100) : (dt.Rows.Count / 100 + 1);
                for (int a = 1; a <= sid; a++)
                {
                    object aa = a.ToString() + "," + sid.ToString();
                    tasks.Add(Task.Run(() =>
                    {
                        int startindex = Convert.ToInt32(aa.ToString().Split(',')[0]);
                        int limitstep  = Convert.ToInt32(aa.ToString().Split(',')[1]);
                        for (int i = (startindex > 1 ? ((startindex - 1) * 100) : 0); i < (startindex == limitstep ? (dt.Rows.Count) : startindex * 100); i++)
                        {
                            Scada.Model.IO_DEVICE model = dal.DataRowToModel(dt.Rows[i], drivers);
                            if (model != null)
                            {
                                model.IOParas = allParas.FindAll(x => x != null && x.IO_DEVICE_ID == model.IO_DEVICE_ID && x.IO_COMM_ID == model.IO_COMM_ID && x.IO_SERVER_ID == model.IO_SERVER_ID);
                                lock (modelList)
                                {
                                    modelList.Add(model);
                                }

                                lock (allParas)
                                {
                                    for (int c = 0; c < model.IOParas.Count; c++)
                                    {
                                        allParas.Remove(model.IOParas[c]);//删除已经搜索到的
                                    }
                                }
                            }
                        }
                    }));
                }
            }
            Task.WaitAll(tasks.ToArray());
            tasks.Clear();
            return(modelList);
        }
Exemplo n.º 2
0
        public int Interval = 3; //默认是3秒

        /// <summary>
        /// 启动模拟器
        /// </summary>
        /// <param name="form"></param>
        public void InitSimulator(int mInterval)
        {
            Task.Run(() =>
            {
                Scada.Business.SCADA_DRIVER DriverBll = new Scada.Business.SCADA_DRIVER();
                Scada.Business.SCADA_DEVICE_DRIVER DeviceDriverBll = new Scada.Business.SCADA_DEVICE_DRIVER();
                Scada.Business.IO_DEVICE deviceBll                   = new Scada.Business.IO_DEVICE();
                Scada.Business.IO_COMMUNICATION commBll              = new Scada.Business.IO_COMMUNICATION();
                Scada.Business.IO_SERVER serverBll                   = new Scada.Business.IO_SERVER();
                List <Scada.Model.SCADA_DRIVER> CommDrivers          = null;
                List <Scada.Model.SCADA_DEVICE_DRIVER> DeviceDrivers = null;
                Interval = mInterval;//获取时间间隔

                Servers        = serverBll.GetModelList("");
                Communications = commBll.GetModelList("");
                Devices        = deviceBll.GetModelList("");
                CommDrivers    = DriverBll.GetModelList("");
                DeviceDrivers  = DeviceDriverBll.GetModelList("");
                for (int i = 0; i < Communications.Count; i++)
                {
                    Communications[i].DriverInfo = CommDrivers.Find(x => x.Id == Communications[i].IO_COMM_DRIVER_ID);
                    if (Communications[i].DriverInfo != null)
                    {
                        Communications[i].CommunicateDriver = DriverAssembly.CreateCommunicateDriver(Communications[i].DriverInfo);
                    }

                    Communications[i].Devices = Devices.FindAll(x => x.IO_COMM_ID == Communications[i].IO_COMM_ID && x.IO_SERVER_ID == Communications[i].IO_SERVER_ID);
                    for (int j = 0; j < Communications[i].Devices.Count; j++)
                    {
                        Communications[i].Devices[j].DriverInfo = DeviceDrivers.Find(x => x.Id == Communications[i].Devices[j].DEVICE_DRIVER_ID);

                        if (Communications[i].Devices[j].DriverInfo != null)
                        {
                            Communications[i].Devices[j].DeviceDrive = DriverAssembly.CreateDeviceDrive(Communications[i].Devices[j].DriverInfo);
                        }
                    }
                }
            });
        }