示例#1
0
        public void SetSwTriggerTest(bool value)
        {
            var registers = new ushort[] { 2000 - 1 };
            var values    = new[] { value };
            var master    = new DummyBroadcastWriteCoilModbusMaster();
            var lili      = new LinearLightV103(master, 0);

            lili.SwTrigger = value;
            Assert.AreEqual(registers, master.CalledCoilAdresses);
            Assert.AreEqual(values, master.CalledValues);
        }
示例#2
0
        public void ReadTemperatures1Test()
        {
            var addresses      = new byte[] { 1, 2, 3 };
            var startAddresses = new ushort[] { 3201 - 1, 3201 - 1, 3201 - 1, };
            var lengths        = new ushort[] { 1, 1, 1 };
            var temperatures   = new ushort[] { 30, 54, 15 };
            var returnVals     = temperatures.Select(x => new[] { x }).ToArray();

            var master = new DummyReadInputRegistersModbusMaster(addresses, startAddresses, lengths, returnVals);
            var lili   = new LinearLightV103(master, addresses.Length);

            CollectionAssert.AreEqual(temperatures, lili.Segments.Select(x => x.LedTemperature));
        }
示例#3
0
        public void ReadIntensities2Test()
        {
            var addresses      = new byte[] { 1, 2, 3 };
            var startAddresses = new ushort[] { 4225 - 1, 4225 - 1, 4225 - 1, };
            var lengths        = new ushort[] { 1, 1, 1 };
            var intensities    = new ushort[] { 30, 54, 15 };
            var returnVals     = intensities.Select(x => new[] { x }).ToArray();

            var master = new DummyReadRegistersModbusMaster(addresses, startAddresses, lengths, returnVals);
            var lili   = new LinearLightV103(master, addresses.Length);

            CollectionAssert.AreEqual(intensities, lili.Segments.Select(x => x.SetIntensity2));
        }
示例#4
0
        public void SetFanSpeedTest()
        {
            ushort setSpeed    = 50;
            var    registers   = new ushort[] { 4109 - 1 };
            var    values      = new[] { setSpeed };
            var    master      = new DummyBroadcastWriteModbusMaster();
            var    linearLight = new LinearLightV103(master, 0);

            linearLight.FanSpeed = setSpeed;

            Assert.AreEqual(registers, master.CalledRegisterAdresses);
            Assert.AreEqual(values, master.CalledValues);
        }
示例#5
0
        public void ReadFanEnablesTest()
        {
            var addresses      = new byte[] { 1, 2, 3 };
            var startAddresses = new ushort[] { 2001 - 1, 2001 - 1, 2001 - 1, };
            var lengths        = new ushort[] { 1, 1, 1 };
            var values         = new[] { false, false, true };
            var returnVals     = values.Select(x => new[] { x }).ToArray();

            var master = new DummyReadCoilsModbusMaster(addresses, startAddresses, lengths, returnVals);
            var lili   = new LinearLightV103(master, addresses.Length);

            CollectionAssert.AreEqual(values, lili.Segments.Select(x => x.FanEnable));
        }
示例#6
0
        public void ReadAmps2Test()
        {
            var addresses      = new byte[] { 1, 2, 3 };
            var startAddresses = new ushort[] { 3224 - 1, 3224 - 1, 3224 - 1, };
            var lengths        = new ushort[] { 1, 1, 1 };
            var currents       = new[] { 3.123, 0.054, 15.123 };
            var returnVals     = currents.Select(x => new[] { (ushort)(x * 1000) }).ToArray();

            var master = new DummyReadInputRegistersModbusMaster(addresses, startAddresses, lengths, returnVals);
            var lili   = new LinearLightV103(master, addresses.Length);

            CollectionAssert.AreEqual(currents, lili.Segments.Select(x => x.Amperes2));
        }
示例#7
0
        public void ReadVolts1Test()
        {
            var addresses      = new byte[] { 1, 2, 3 };
            var startAddresses = new ushort[] { 3213 - 1, 3213 - 1, 3213 - 1, };
            var lengths        = new ushort[] { 1, 1, 1 };
            var voltages       = new[] { 3.123, 54, 15 };
            var returnVals     = voltages.Select(x => new[] { (ushort)(x * 1000) }).ToArray();

            var master = new DummyReadInputRegistersModbusMaster(addresses, startAddresses, lengths, returnVals);
            var lili   = new LinearLightV103(master, addresses.Length);

            CollectionAssert.AreEqual(voltages, lili.Segments.Select(x => x.Volts1));
        }
示例#8
0
 public void SetIntensity()
 {
     using (var comm = new Communicator("COM29"))
     {
         var master = new ModbusRtuMaster(comm);
         var lili   = new LinearLightV103(master, 1);
         lili.Intensity = 10;
         //lili.FanSpeed = 100;
         lili.FanEnable = true;
         lili.SwTrigger = true;
         Thread.Sleep(500);
         Console.Out.WriteLine(string.Join(", ", lili.Segments.Select(x => x.SetIntensity1.ToString())));
     }
 }
示例#9
0
        public void SetIntensityTest()
        {
            ushort expectedIntensity = 15;
            var    registers         = new ushort[] { 4215 - 1, 4225 - 1 };
            var    values            = new[] { expectedIntensity, expectedIntensity };

            var master      = new DummyBroadcastWriteModbusMaster();
            var linearLight = new LinearLightV103(master, 0);

            linearLight.Intensity = expectedIntensity;

            Assert.AreEqual(registers, master.CalledRegisterAdresses);
            Assert.AreEqual(values, master.CalledValues);
        }
        private T CreateLinearLight <T>(int segments) where T : class, ILinearLight
        {
            var protocol = GetProtocol();
            T   returnLight;

            switch (protocol)
            {
            case LinearLightV101.CompatibleProtocolVersion:
                returnLight = new LinearLightV101(master, segments) as T ??
                              throw new InvalidCastException(
                                        $"{typeof(LinearLightV101)} does not implement {typeof(T)}.");
                break;

            case LinearLightV102.CompatibleProtocolVersion:
                returnLight = new LinearLightV102(master, segments) as T ??
                              throw new InvalidCastException(
                                        $"{typeof(LinearLightV102)} does not implement {typeof(T)}.");
                break;

            case LinearLightV103.CompatibleProtocolVersion:
                returnLight = new LinearLightV103(master, segments) as T ??
                              throw new InvalidCastException(
                                        $"{typeof(LinearLightV103)} does not implement {typeof(T)}.");
                break;

            default:
                if (MajorVersion(protocol) != MajorVersion(LinearLightV103.CompatibleProtocolVersion))
                {
                    throw new Exception("Unsupported protocol.");
                }
                returnLight = new LinearLightV103(master, segments) as T ??
                              throw new InvalidCastException(
                                        $"{typeof(LinearLightV103)} does not implement {typeof(T)}.");
                break;
            }

            master.MillisecondsDelayBetweenTransmits = returnLight.MillisecondsBetweenTransmits;
            return(returnLight);
        }