/// <summary> /// Добавить силос в список, из которых весовой бункер может загружать материал /// </summary> /// <param name="silos">Добавляемый силос</param> public void AddSilos(Silos silos) { if (silos == null) { Status = Status.Error; logger.Error($"Привязываемый силос к весовому бункеру {WeightTankerId} не может быть NULL"); throw new ArgumentNullException($"Привязываемый силос к весовому бункеру {WeightTankerId} не может быть NULL"); } Siloses.Add(silos); }
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="silos">Силос, из которого будет загружен материал</param> /// <param name="weight">Вес загружаемого материала</param> public void Load(Silos silos, double weight) { Status = Status.Loading; if (Siloses.Count == 0) { Status = Status.Error; logger.Error($"Список силосов для весового бункера {WeightTankerId} пуст! Невозможно загрузить материал"); throw new ArgumentException($"Список силосов для весового бункера {WeightTankerId} пуст! Невозможно загрузить материал"); } bool included = false; for (int i = 0; i < Siloses.Count; i++) { if (silos == Siloses[i]) { included = true; break; } } if (!included) { Status = Status.Error; logger.Error($"Силос {silos.SilosId} не добавлен в список силосов весового бункера {WeightTankerId}. Загрузка материала невозможна"); throw new ArgumentOutOfRangeException($"Силос {silos.SilosId} не добавлен в список силосов весового бункера {WeightTankerId}. Загрузка материала невозможна"); } try { Materials = silos.Unload(weight); LayersCount = Materials.Count; Weight = GetWeight(); } catch (Exception e) { Status = Status.Error; logger.Error(e.Message); throw new InvalidOperationException(e.Message); } }