public void Save() { _assignedAccessDescriptor.SetReceiveValueFormula(_getValueFormula.Text); //Double.TryParse(_minimum.Text, System.Globalization.NumberStyles.Any, System.Globalization.NumberFormatInfo.InvariantInfo, out _assignedAccessDescriptor.MinimumValue); //Double.TryParse(_maximum.Text, System.Globalization.NumberStyles.Any, System.Globalization.NumberFormatInfo.InvariantInfo, out _assignedAccessDescriptor.MaximumValue); //Double.TryParse(_step.Text, System.Globalization.NumberStyles.Any, System.Globalization.NumberFormatInfo.InvariantInfo, out _assignedAccessDescriptor.Step); _assignedAccessDescriptor.SetMinimumValueFormula(_minimum.Text); _assignedAccessDescriptor.SetMaximumValueFormula(_maximum.Text); _assignedAccessDescriptor.SetStepFormula(_step.Text); _assignedAccessDescriptor.EnableDefaultValue = _enableDefaultValue.IsChecked == true; if (_cycleType.SelectedItem == null) { _assignedAccessDescriptor.SetCycleType(CycleType.None); } else { _assignedAccessDescriptor.SetCycleType((CycleType)((ComboBoxItem)_cycleType.SelectedItem).Tag); } if (_enableDefaultValue.IsChecked == true) { //Double.TryParse(_defaultValue.Text, System.Globalization.NumberStyles.Any, System.Globalization.NumberFormatInfo.InvariantInfo, out _assignedAccessDescriptor.DefaultValue); _assignedAccessDescriptor.SetDefaultValueFormula(_defaultValue.Text); } }
public void PrepareProfile() { Profile.Clear(); // Создание трёх панелей var p1 = new Panel { Name = "Panel1" }; Profile.PanelStorage.StorePanel(p1); var panelId1 = p1.Id; var p2 = new Panel { Name = "Panel2" }; Profile.PanelStorage.StorePanel(p2); var panelId2 = p2.Id; var p3 = new Panel { Name = "Panel3" }; Profile.PanelStorage.StorePanel(p3); var panelId3 = p3.Id; // Создание трёх переменных. Одна в первой панели, вторая и третья во второй var firstTestVariable = new FakeVariable { Size = MemoryVariableSize.Byte, Name = "Var1", PanelId = panelId1, Description = "Тестовая переменная 1\nНовая строка" }; var firstTestVariableId = firstTestVariable.Id; Profile.VariableStorage.StoreVariable(firstTestVariable); var secondTestVariable = new FakeVariable { Size = MemoryVariableSize.EightByteFloat, Name = "Var2", PanelId = panelId2, Description = "Тестовая переменная 2\nНовая строка" }; var secondTestVariableId = secondTestVariable.Id; Profile.VariableStorage.StoreVariable(secondTestVariable); var thirdTestVariable = new FakeVariable { Size = MemoryVariableSize.FourBytesSigned, Name = "Var3", PanelId = panelId2, Description = "Тестовая переменная 3\nНовая строка" }; var thirdTestVariableId = thirdTestVariable.Id; Profile.VariableStorage.StoreVariable(thirdTestVariable); // Создание описателей доступа // Button var valueAccessDescriptor = new DescriptorValue(); var powerFormula = "[" + Profile.PanelStorage.GetPanelById(Profile.VariableStorage.GetVariableById(firstTestVariableId).PanelId).Name + "." + Profile.VariableStorage.GetVariableById(firstTestVariableId).Name + "]"; valueAccessDescriptor.SetPowerFormula(powerFormula); valueAccessDescriptor.AssignDefaultStateId(0); valueAccessDescriptor.AddConnector("Off"); valueAccessDescriptor.AddConnector("On"); // valueAccessDescriptor.AddVariable(firstTestVariableId); valueAccessDescriptor.AddVariable(secondTestVariableId); valueAccessDescriptor.AddVariable(thirdTestVariableId); // valueAccessDescriptor.SetFormula(0, 0, "0"); valueAccessDescriptor.SetFormula(0, secondTestVariableId, "0"); valueAccessDescriptor.SetFormula(0, thirdTestVariableId, "0"); // valueAccessDescriptor.SetFormula(1, 0, "1"); valueAccessDescriptor.SetFormula(1, secondTestVariableId, "2.58"); valueAccessDescriptor.SetFormula(1, thirdTestVariableId, "-3"); valueAccessDescriptor.AssignDefaultStateId(0); valueAccessDescriptor.SetAssignedPanelId(panelId3); valueAccessDescriptor.SetName("AccessDescriptor1"); var valueAccessDescriptorId = Profile.AccessDescriptor.RegisterAccessDescriptor(valueAccessDescriptor); // Encoder var rangeAccessDescriptor = new DescriptorRange(); rangeAccessDescriptor.SetReceiveValueFormula("[" + Profile.PanelStorage.GetPanelById(panelId2).Name + "." + Profile.VariableStorage.GetVariableById(secondTestVariableId).Name + "]"); rangeAccessDescriptor.AddVariable(secondTestVariableId); rangeAccessDescriptor.AddVariable(firstTestVariableId); rangeAccessDescriptor.SetAssignedPanelId(panelId3); rangeAccessDescriptor.SetName("AccessDescriptorRange"); rangeAccessDescriptor.SetFormula(0, secondTestVariableId, "[R]"); rangeAccessDescriptor.SetFormula(1, thirdTestVariableId, "[R]:1"); rangeAccessDescriptor.SetMinimumValueFormula("0"); rangeAccessDescriptor.SetMaximumValueFormula("4"); rangeAccessDescriptor.SetStepFormula("0.5"); // rangeAccessDescriptor.IsLooped = true; var rangeAccessDescriptorId = Profile.AccessDescriptor.RegisterAccessDescriptor(rangeAccessDescriptor); var tempFile = Path.GetTempFileName(); Profile.SaveAs(tempFile); Profile.Clear(); Profile.Load(tempFile, ProfileItemPrivacyType.Public); var valueDescriptor = (DescriptorValue)Profile.AccessDescriptor.GetAccessDesciptorById(valueAccessDescriptorId); Profile.VariableStorage.WriteValue(firstTestVariableId, 0); Profile.VariableStorage.WriteValue(secondTestVariableId, 0); Profile.VariableStorage.WriteValue(thirdTestVariableId, 0); Thread.Sleep(200); valueDescriptor.SetState(1); Thread.Sleep(200); Assert.AreEqual(0, Profile.VariableStorage.ReadValue(firstTestVariableId).Value); Assert.AreEqual(0, Profile.VariableStorage.ReadValue(secondTestVariableId).Value); Assert.AreEqual(0, Profile.VariableStorage.ReadValue(thirdTestVariableId).Value); Profile.VariableStorage.WriteValue(firstTestVariableId, 1); Thread.Sleep(200); valueDescriptor.SetState(1); Thread.Sleep(200); Assert.AreEqual(1, Profile.VariableStorage.ReadValue(firstTestVariableId).Value); Assert.AreEqual(2.58, Profile.VariableStorage.ReadValue(secondTestVariableId).Value); Assert.AreEqual(-3, Profile.VariableStorage.ReadValue(thirdTestVariableId).Value); valueAccessDescriptor.SetDefaultState(); Thread.Sleep(200); Assert.AreEqual(0, Profile.VariableStorage.ReadValue(firstTestVariableId).Value); Assert.AreEqual(0, Profile.VariableStorage.ReadValue(secondTestVariableId).Value); Assert.AreEqual(0, Profile.VariableStorage.ReadValue(thirdTestVariableId).Value); File.Delete(tempFile); }