コード例 #1
0
        public void VariablePoint_Rev6_CustomDigital()
        {
            var list = new List <byte>();

            list.AddRange("TEST CUS UNITS\0\0\0\0\0\0\0TESTCUS\0\0".ToBytes());
            list.AddRange(2000.ToBytes()); //Value
            list.Add(0);                   //AutoManual
            list.Add(0);                   //DigitalAnalog
            list.Add(1);                   //Control
            list.Add(2);                   //Unused
            list.Add(23);                  //Unit
            var actual = list.ToArray();

            var customUnits = new CustomUnits();

            customUnits.Digital.Add(new CustomDigitalUnitsPoint(false, "TEST1", "TEST2"));

            var expected = new VariablePoint("TEST CUS UNITS", "TESTCUS");

            expected.Value         = new VariableValue("TEST2", Unit.CustomDigital1, customUnits, 2000);
            expected.AutoManual    = AutoManual.Automatic;
            expected.DigitalAnalog = DigitalAnalog.Digital;
            expected.Control       = OffOn.On;

            BaseTest(actual, expected, FileVersion.Rev6, customUnits);
        }
コード例 #2
0
        public void BaseTest(byte[] actualBytes, VariablePoint expected, FileVersion version, CustomUnits customUnits = null)
        {
            var actual = new VariablePoint(actualBytes, 0, version);

            actual.Value.CustomUnits = customUnits;
            BytesAssert.AreEqual(actual.ToBytes(), expected.ToBytes());
            BytesAssert.AreEqual(actualBytes, expected.ToBytes());
            ObjectAssert.AreEqual(actual, expected);
        }
コード例 #3
0
        private void SetRow(DataGridViewRow row, VariablePoint point)
        {
            if (row == null || point == null)
            {
                return;
            }

            row.SetValue(DescriptionColumn, point.Description);
            row.SetValue(AutoManualColumn, point.AutoManual);
            row.SetCell(ValueColumn, TViewUtilities.GetValueCellForUnit(
                            point.Value.ToString(), point.Value.Unit));
            row.SetValue(UnitColumn, point.Value.Unit);
            row.SetValue(RangeColumn, point.Value.Value);
            row.SetValue(StatusColumn, point.Control);
            row.SetValue(LabelColumn, point.Label);
        }
コード例 #4
0
        public void VariablePoint_Dos_Analog()
        {
            var list = new List <byte>();

            list.AddRange("Description".ToBytes(21));
            list.AddRange("Label".ToBytes(9));
            list.AddRange(5000.ToBytes());                  //Value
            list.Add(new [] { true, true, true }.ToBits()); //AutoManual DigitalAnalog Control
            list.Add((byte)Unit.DegreesC);                  //Unit

            var expected = new VariablePoint("Description", "Label", FileVersion.Dos);

            expected.Value         = new VariableValue("5.000", Unit.DegreesC);
            expected.AutoManual    = AutoManual.Manual;
            expected.DigitalAnalog = DigitalAnalog.Analog;
            expected.Control       = OffOn.On;

            BaseTest(list.ToArray(), expected, FileVersion.Dos);
        }
コード例 #5
0
        public void VariablePoint_Rev6_Time()
        {
            var list = new List <byte>();

            list.AddRange("TEST RUN TIMER\0\0\0\0\0\0\0TESTTIM\0\0".ToBytes());
            list.AddRange(13509000.ToBytes()); //Value
            list.Add(0);                       //AutoManual
            list.Add(1);                       //DigitalAnalog
            list.Add(1);                       //Control
            list.Add(2);                       //Unused
            list.Add(20);                      //Unit

            var expected = new VariablePoint("TEST RUN TIMER", "TESTTIM");

            expected.Value         = new VariableValue("03:45:09", Unit.Time);
            expected.AutoManual    = AutoManual.Automatic;
            expected.DigitalAnalog = DigitalAnalog.Analog;
            expected.Control       = OffOn.On;

            BaseTest(list.ToArray(), expected, FileVersion.Rev6);
        }
コード例 #6
0
        public void VariablePoint_Rev6_Analog()
        {
            var list = new List <byte>();

            list.AddRange("PUMP SPEED\0\0\0\0\0\0\0\0\0\0\0PMPSPEED\0".ToBytes());
            list.AddRange(40000.ToBytes()); //Value
            list.Add(0);                    //AutoManual
            list.Add(1);                    //DigitalAnalog
            list.Add(0);                    //Control
            list.Add(2);                    //Unused
            list.Add(22);                   //Unit

            var expected = new VariablePoint("PUMP SPEED", "PMPSPEED");

            expected.Value         = new VariableValue("40.000", Unit.Percents);
            expected.AutoManual    = AutoManual.Automatic;
            expected.DigitalAnalog = DigitalAnalog.Analog;
            expected.Control       = OffOn.Off;

            BaseTest(list.ToArray(), expected, FileVersion.Rev6);
        }
コード例 #7
0
        public void VariablePoint_Rev6_Digital()
        {
            var list = new List <byte>();

            list.AddRange("START TEST FLAG\0\0\0\0\0\0INIT\0\0\0\0\0".ToBytes());
            list.AddRange(0.ToBytes()); //Value
            list.Add(0);                //AutoManual
            list.Add(0);                //DigitalAnalog
            list.Add(0);                //Control
            list.Add(2);                //Unused
            list.Add(1);                //Unit

            var expected = new VariablePoint("START TEST FLAG", "INIT");

            expected.Value         = new VariableValue(false, Unit.OffOn, null, 1000);
            expected.AutoManual    = AutoManual.Automatic;
            expected.DigitalAnalog = DigitalAnalog.Digital;
            expected.Control       = OffOn.Off;

            BaseTest(list.ToArray(), expected, FileVersion.Rev6);
        }
コード例 #8
0
        /// <summary>
        /// Add a variable control point info
        /// </summary>
        /// <param name="variable">VariablePoint</param>
        /// <param name="index">Index</param>
        public void Add(VariablePoint variable, int index)
        {
            try
            {
                ControlPointInfo newCPInfo = new ControlPointInfo
                {
                    ControlPointName = "VAR" + index,
                    Label            = variable.Label,
                    FullLabel        = variable.Description,
                    Type             = IdentifierTypes.VARS,
                    Value            = variable.Value.ToString(),
                    Units            = variable.Value.Unit.GetUnitsNames(null).OffOnName,
                    AutoManual       = variable.AutoManual == 0 ? "Auto" : "Manual",
                    Index            = (short)index
                };


                Variables.Add(newCPInfo);
            }
            catch (Exception ex)
            {
                ExceptionHandler.Show(ex, "Addition of new Variable to ControlPointsInfo");
            }
        }
コード例 #9
0
        public void Prg_BTUMeter()
        {
            var path = TestUtilities.GetFullPathForPrgFile("BTUMeter.prg");
            var prg  = Prg.Load(path);

            ObjectAssert.AreEqual(new CustomDigitalUnitsPoint(false, "TANK1", "TANK2"), prg.CustomUnits.Digital[0]);

            //Inputs
            {
                //IN1
                var expected = new InputPoint
                {
                    Description     = "TANK2 TOP",
                    AutoManual      = AutoManual.Automatic,
                    Value           = new VariableValue(0.683, Unit.PercentsVolts5),
                    CalibrationH    = 0.0,
                    CalibrationL    = 0.0,
                    CalibrationSign = Sign.Negative,
                    Control         = OffOn.On,
                    CustomUnits     = null,
                    DigitalAnalog   = DigitalAnalog.Analog,
                    FileVersion     = FileVersion.Rev6,
                    Filter          = 1,
                    Status          = InputStatus.Normal,
                    Jumper          = Jumper.To5V,
                    Label           = "T2_TOP",
                    SubNumber       = 0.1,
                    //Decom = 32
                };
                ObjectAssert.AreEqual(expected, prg.Inputs[0]);

                //IN2
                expected = new InputPoint
                {
                    Description     = "TANK2 BOT",
                    AutoManual      = AutoManual.Automatic,
                    Value           = new VariableValue(true, Unit.LowHigh, null, 1000),
                    CalibrationH    = 0.0,
                    CalibrationL    = 0.0,
                    CalibrationSign = Sign.Negative,
                    Control         = OffOn.On,
                    CustomUnits     = null,
                    DigitalAnalog   = DigitalAnalog.Digital,
                    FileVersion     = FileVersion.Rev6,
                    Filter          = 1,
                    Status          = InputStatus.Normal,
                    Jumper          = Jumper.Thermistor,
                    Label           = "T2_BOT",
                    SubNumber       = 0.1
                };
                ObjectAssert.AreEqual(expected, prg.Inputs[1]);

                //IN3
                expected = new InputPoint
                {
                    Description     = "IN 3",
                    AutoManual      = AutoManual.Automatic,
                    Value           = new VariableValue(19.824, Unit.Psi20),
                    CalibrationH    = 0.0,
                    CalibrationL    = 0.0,
                    CalibrationSign = Sign.Negative,
                    Control         = OffOn.On,
                    CustomUnits     = null,
                    DigitalAnalog   = DigitalAnalog.Analog,
                    FileVersion     = FileVersion.Rev6,
                    Filter          = 32,
                    Status          = InputStatus.Normal,
                    Jumper          = Jumper.Thermistor,
                    Label           = "IN3",
                    SubNumber       = 0.1
                };
                ObjectAssert.AreEqual(expected, prg.Inputs[2]);
            }

            //Outputs
            {
                //OUT1
                var expected = new OutputPoint()
                {
                    Description    = "VALVE LEFT",
                    AutoManual     = AutoManual.Manual,
                    HwSwitchStatus = SwitchStatus.Auto,
                    Value          = new VariableValue(true, Unit.OffOn, null, 1000),
                    LowVoltage     = 0,
                    HighVoltage    = 0,
                    PwmPeriod      = 0,
                    Control        = OffOn.On,
                    CustomUnits    = null,
                    DigitalAnalog  = DigitalAnalog.Digital,
                    FileVersion    = FileVersion.Rev6,
                    Label          = "VAL_LEFT",
                    SubNumber      = 0.1
                };
                ObjectAssert.AreEqual(expected, prg.Outputs[0]);

                //OUT2
                expected = new OutputPoint()
                {
                    Description    = "VALVE RIGHT",
                    AutoManual     = AutoManual.Automatic,
                    HwSwitchStatus = SwitchStatus.Auto,
                    Value          = new VariableValue(true, Unit.OffOn, null, 1000),
                    LowVoltage     = 0,
                    HighVoltage    = 0,
                    PwmPeriod      = 0,
                    Control        = OffOn.On,
                    CustomUnits    = null,
                    DigitalAnalog  = DigitalAnalog.Digital,
                    FileVersion    = FileVersion.Rev6,
                    Label          = "VAL_RIT",
                    SubNumber      = 0.1
                };
                ObjectAssert.AreEqual(expected, prg.Outputs[1]);
            }

            //Variables
            {
                //VAR1
                var expected = new VariablePoint()
                {
                    Description   = "START TEST FLAG",
                    AutoManual    = AutoManual.Automatic,
                    Value         = new VariableValue(false, Unit.OffOn, null, 1000),
                    Control       = OffOn.Off,
                    DigitalAnalog = DigitalAnalog.Digital,
                    FileVersion   = FileVersion.Rev6,
                    Label         = "INIT"
                };
                ObjectAssert.AreEqual(expected, prg.Variables[0]);

                //VAR10
                expected = new VariablePoint()
                {
                    Description   = "NOW FILLING",
                    AutoManual    = AutoManual.Automatic,
                    Value         = new VariableValue(false, Unit.CustomDigital1, null, 2000),
                    Control       = OffOn.Off,
                    DigitalAnalog = DigitalAnalog.Digital,
                    FileVersion   = FileVersion.Rev6,
                    Label         = "FILLTANK",
                };
                ObjectAssert.AreEqual(expected, prg.Variables[9]);
            }

            //Program codes
            {
                //var expected = new ProgramCode()
                //{
                //    Code = new byte[2000],
                //    FileVersion = FileVersion.Rev6
                //};
                //ObjectAssert.AreEqual(expected, prg.ProgramCodes[0]);

                //Console.WriteLine(prg.ProgramCodes[0].PropertiesText());
                //foreach (var line in prg.ProgramCodes[0].Lines)
                //{
                //Console.WriteLine(line.GetString());
                //}

                //Console.WriteLine(DebugUtilities.CompareBytes(prg.ProgramCodes[0].Code,
                //    prg.ProgramCodes[0].Code, onlyDif: false));
            }
        }