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);
        }
Exemple #2
0
 public DescriptorProperty(string name, DescriptorValue value)
 {
     Name  = name;
     Value = value;
 }