private void TestModule() { /**********************************************************/ /* Начало тестирование модуля работы со слоями материалов */ /**********************************************************/ Ingot ingot = new Ingot(); ingot.Test(); // Установлено подключение к СУБД DBConnection db = new DBConnection(); logger.Info("Подключились к СУБД"); db.InitDB(); var data = db.GetMaterials("FeSiMn"); Material mt = new Material(15, "FeSiMn", 10, 7.9, 8.2); bool m = db.AddMaterial(mt); InputTanker tanker1 = new InputTanker(1); tanker1.Load(mt); mt = new Material(16, "FeSiMn", 15, 12.3, 12.7); tanker1.Load(mt); Silos silos1 = new Silos(1); Silos silos2 = new Silos(2); silos1.Load(tanker1, 12); WeightTanker weight1 = new WeightTanker(1); weight1.AddSilos(silos1); weight1.AddSilos(silos2); weight1.Load(silos1, 10); List <Material> u = weight1.Unload(1.3); Conveyor conveyor1 = new Conveyor(1, Conveyor.Types.Horizontal, 78); conveyor1.SetSpeed(3); conveyor1.Deliver(u, onDelivered); /*********************************************************/ /* Конец тестирования модуля работы со слоями материалов */ /*********************************************************/ }
/// <summary> /// Первоначальная инициализация техузлов /// </summary> private void Init() { db = new DBConnection(); string msgStats = "{\"Statuses\":["; _tanker1 = new InputTanker(1); // Загрузочный бункер 1 _material1 = ""; msgStats += "{\"id\":\"Input1\",\"status\":\"off\"},"; _tanker2 = new InputTanker(2); // Загрузочный бункер 2 _material2 = ""; msgStats += "{\"id\":\"Input2\",\"status\":\"off\"},"; _silos1 = new Silos(1); // Силос 1 msgStats += "{\"id\":\"Silos1\",\"status\":\"off\"},"; _silos2 = new Silos(2); // Силос 2 msgStats += "{\"id\":\"Silos2\",\"status\":\"off\"},"; _silos3 = new Silos(3); // Силос 3 msgStats += "{\"id\":\"Silos3\",\"status\":\"off\"},"; _silos4 = new Silos(4); // Силос 4 msgStats += "{\"id\":\"Silos4\",\"status\":\"off\"},"; _silos5 = new Silos(5); // Силос 5 msgStats += "{\"id\":\"Silos5\",\"status\":\"off\"},"; _silos6 = new Silos(6); // Силос 6 msgStats += "{\"id\":\"Silos6\",\"status\":\"off\"},"; _silos7 = new Silos(7); // Силос 7 msgStats += "{\"id\":\"Silos7\",\"status\":\"off\"},"; _silos8 = new Silos(8); // Силос 8 msgStats += "{\"id\":\"Silos8\",\"status\":\"off\"},"; _conveyor1 = new Conveyor(1, Conveyor.Types.Horizontal, 5); msgStats += "{\"id\":\"Conveyor1\",\"status\":\"off\"},"; _conveyor2 = new Conveyor(2, Conveyor.Types.Vertical, 25); msgStats += "{\"id\":\"Conveyor2\",\"status\":\"off\"},"; _conveyor3 = new Conveyor(3, Conveyor.Types.Horizontal, 3); msgStats += "{\"id\":\"Conveyor3\",\"status\":\"off\"}"; msgStats += "]}"; Clients.All.SendAsync("statuses", msgStats); }
/// <summary> /// Загрузить материал в силос из загрузочного бункера /// </summary> /// <param name="source">Загрузочный бункер, из которого принимается материал</param> /// <param name="weight">Вес загружаемого материала</param> public void Load(InputTanker source, double weight) { Status = Status.Loading; if (source == null) { Status = Status.Error; logger.Error($"Не указан загрузочный бункер при загрузке материала в силос {SilosId}"); throw new ArgumentNullException($"Не указан загрузочный бункер при загрузке материала в силос {SilosId}"); } if (weight <= 0) { Status = Status.Error; logger.Error($"Вес згаружаемого материала в силос {SilosId} не может быть равен {weight}"); throw new ArgumentException($"Вес згаружаемого материала в силос {SilosId} не может быть равен {weight}"); } if (Material == "") { // Если текущий материал загрузочного бункера не выбран, то, вероятнее всего, // Можно брать наименование из загружаемого материала и присваивать его материалу бункера logger.Warn($"Не установлен материал для загрузки в силос {SilosId}, используется загружаемый материал {source.Material}"); Material = source.Material; } if (source.Material != Material) { Status = Status.Error; logger.Error($"Загрузка в силос {SilosId}, содержащего материал {Material} новый материал {source.Material}"); throw new ArgumentException($"Силос {SilosId} ожидает материал {Material} вместо {source.Material}"); } Materials = source.Unload(weight); LayersCount = Materials.Count; Weight = GetWeight(); }