예제 #1
0
        public async Task DoWork()
        {
            Console.WriteLine(_infr.TmUserInfo?.Name);
            Console.WriteLine(await _api.GetSystemTimeString());

            var ts = new TmStatus(20, 1, 1);
            var ti = new TmAnalog(20, 1, 1);

            await _api.UpdateTagPropertiesAndClassData(ts);

            await _api.UpdateStatus(ts);

            await _api.UpdateTagPropertiesAndClassData(ti);

            await _api.UpdateAnalog(ti);

            Console.WriteLine(ts);
            Console.WriteLine(ti);

            Console.WriteLine("Активные уставки:");
            var alarms = await _api.GetPresentAlarms();

            alarms?.ForEach(alarm => Console.WriteLine($"{alarm.FullName}, {alarm.StateName}"));

            Console.WriteLine("Активные АПС:");
            var aps = await _api.GetPresentAps();

            aps?.ForEach(Console.WriteLine);

            Console.WriteLine("Монитор тревог:");
            var alerts = await _api.GetAlertsWithAnalogMicroSeries();

            alerts?.ForEach(alert => Console.WriteLine($"{alert.Name}, {alert.ImportanceAlias}, {alert.CurrentValueString}"));
        }
예제 #2
0
            public void ReturnsAddrForNotInit()
            {
                var addr   = new TmAddr(0, 1, 1);
                var status = new TmStatus(addr);

                status.Name.Should().Be(addr.ToString());
            }
예제 #3
0
            public void ReturnsTrueForNullWhenNull()
            {
                TmStatus tmStatus1 = null;

                var result = tmStatus1 == null;

                Assert.True(result);
            }
예제 #4
0
            public void ReturnsFalseForNull(int ch, int rtu, int point)
            {
                var tmStatus1 = new TmStatus(ch, rtu, point);

                var result = tmStatus1 == null;

                Assert.False(result);
            }
예제 #5
0
            public void ReturnsNameField(TmStatus status)
            {
                var sb = "Name=Выключатель";

                status.SetTmcObjectProperties(sb);

                status.Name.Should().Be("Выключатель");
            }
예제 #6
0
            public void SetsCorrectDuplicateKeys(TmStatus status)
            {
                var sb = "A=1\r\nA=2\r\nA=3";

                status.SetTmcObjectProperties(sb);

                status.Properties.Should().ContainKeys("A", "A_1", "A_2");
            }
예제 #7
0
            public void ReturnsTrue(int ch, int rtu, int point)
            {
                var tmStatus1 = new TmStatus(ch, rtu, point);
                var tmStatus2 = new TmStatus(ch, rtu, point);

                var result = tmStatus1 == tmStatus2;

                Assert.True(result);
            }
예제 #8
0
            public void ReturnsFalseForWrongType(int ch, int rtu, int point)
            {
                var tmAnalog1 = new TmAnalog(ch, rtu, point);
                var tmStatus  = new TmStatus(ch, rtu, point);

                var result = tmAnalog1.Equals(tmStatus);

                Assert.False(result);
            }
예제 #9
0
            public void DoesNotInitWithStatusDataNull()
            {
                var tmStatus       = new TmStatus(0, 1, 1);
                var tmcCommonPoint = new TmNativeDefs.TCommonPoint();

                tmStatus.FromTmcCommonPoint(tmcCommonPoint);

                Assert.False(tmStatus.IsInit);
            }
예제 #10
0
            public void SetsCorrectNormalStatusToStatus(short normalStatus, short expectedNormalStatus,
                                                        TmStatus status)
            {
                var sb = $"Normal={normalStatus}";

                status.SetTmcObjectProperties(sb);

                status.NormalStatus.Should().Be(expectedNormalStatus);
            }
예제 #11
0
            public void SetsCorrectImportanceToStatus(short importance,
                                                      TmStatus status)
            {
                var sb = $"Importance={importance}";

                status.SetTmcObjectProperties(sb);

                status.Importance.Should().Be(importance);
            }
예제 #12
0
            public void ReturnsFalseForWrongAddr(int ch, int rtu, int point)
            {
                var tmStatus1 = new TmStatus(ch, rtu, point);
                var tmStatus2 = new TmStatus(ch, rtu, point + 1);

                var result = tmStatus1 == tmStatus2;

                Assert.False(result);
            }
예제 #13
0
            public void ConstructsFromChRtuPointCorrectly(int ch, int rtu, int point)
            {
                var tmStatus = new TmStatus(ch, rtu, point);

                Assert.Equal(TmType.Status, tmStatus.Type);
                Assert.Equal(ch, tmStatus.TmAddr.Ch);
                Assert.Equal(rtu, tmStatus.TmAddr.Rtu);
                Assert.Equal(point, tmStatus.TmAddr.Point);
            }
        void RolerStatusSync(TmParameter parameter)
        {
            TmStatus status = TmParameterTool.GetJsonValue <TmStatus>(parameter, parameter.ElevenCode.ToString());

            if (status != null)
            {
                Console.WriteLine(" KeyId: " + status.KeyId + " Recv30: " + " px: " + status.MyselfTmTransform.px + " py: " + status.MyselfTmTransform.py + " pz: " + status.MyselfTmTransform.pz + " ay: " + status.MyselfTmTransform.ay);
                Console.WriteLine(" KeyId: " + status.KeyId + " Recv31: " + " px: " + status.TargetTmTransform.px + " py: " + status.TargetTmTransform.py + " pz: " + status.TargetTmTransform.pz + " ay: " + status.TargetTmTransform.ay);
            }
        }
예제 #15
0
            public void ReturnsCorrectString(int ch, int rtu, int point, short status, string expected)
            {
                var tmStatus = new TmStatus(ch, rtu, point)
                {
                    Status = status
                };

                var result = tmStatus.ToString();

                Assert.Equal(expected, result);
            }
예제 #16
0
            public void ReturnsFalseForWrongS2Flags(int ch, int rtu, int point)
            {
                var tmStatus1 = new TmStatus(ch, rtu, point);
                var tmStatus2 = new TmStatus(ch, rtu, point)
                {
                    S2Flags = TmS2Flags.Break
                };

                var result = tmStatus1 == tmStatus2;

                Assert.False(result);
            }
예제 #17
0
            public void ReturnsFalseForWrongFlags(int ch, int rtu, int point)
            {
                var tmStatus1 = new TmStatus(ch, rtu, point);
                var tmStatus2 = new TmStatus(ch, rtu, point)
                {
                    Flags = TmFlags.Unreliable
                };

                var result = tmStatus1 == tmStatus2;

                Assert.False(result);
            }
예제 #18
0
            public void ReturnsFalseForWrongStatus(int ch, int rtu, int point)
            {
                var tmStatus1 = new TmStatus(ch, rtu, point);
                var tmStatus2 = new TmStatus(ch, rtu, point)
                {
                    Status = 1
                };

                var result = tmStatus1.Equals(tmStatus2);

                Assert.False(result);
            }
예제 #19
0
        public async Task <IActionResult> ShowTs(string id)
        {
            if (!TmAddr.TryParse(id, out var tmAddr, TmType.Status))
            {
                return(NotFound());
            }
            var tmStatus = new TmStatus(tmAddr);
            await Task.WhenAll(_api.UpdateTagPropertiesAndClassData(tmStatus),
                               _api.UpdateStatus(tmStatus));

            return(Ok(_mapper.Map <TmStatusDto>(tmStatus)));
        }
예제 #20
0
            public void SetsCorrectValuesWithNoClass(string name, short classId, string text0, string text1, string textB,
                                                     string textM)
            {
                var tmStatus = new TmStatus(0, 1, 1);

                tmStatus.SetSqlPropertiesAndClassData(name, 0, -1, classId, text0, text1, textB, textM);

                Assert.Equal(name, tmStatus.Name);
                Assert.Null(tmStatus.ClassId);
                Assert.Equal("ОТКЛ", tmStatus.GetClassCaption(TmStatus.ClassCaption.Off));
                Assert.Equal("ВКЛ", tmStatus.GetClassCaption(TmStatus.ClassCaption.On));
            }
 public async Task <TmTelecontrolResult> Execute(TmStatus tmStatus, bool overrideScript = false)
 {
     if (overrideScript)
     {
         if (!CanOverrideScript())
         {
             return(TmTelecontrolResult.ScriptError);
         }
         await _api.OverrideTelecontrolScript().ConfigureAwait(false);
     }
     return(await _api.Telecontrol(tmStatus).ConfigureAwait(false));
 }
예제 #22
0
            public void DoesNotInitWithTmFlagsInvalid()
            {
                var tmStatus       = new TmStatus(0, 1, 1);
                var tmcCommonPoint = new TmNativeDefs.TCommonPoint
                {
                    TM_Flags = 0xFFFF,
                    Data     = new byte[] { 0 },
                };

                tmStatus.FromTmcCommonPoint(tmcCommonPoint);

                Assert.False(tmStatus.IsInit);
            }
예제 #23
0
            public void SetsApsFalse(short flags)
            {
                var tmStatus       = new TmStatus(0, 1, 1);
                var tmcCommonPoint = new TmNativeDefs.TCommonPoint
                {
                    TM_Flags = 1,
                    Data     = new short[] { 0, flags }.SelectMany(BitConverter.GetBytes).ToArray()
                };

                tmStatus.FromTmcCommonPoint(tmcCommonPoint);

                Assert.False(tmStatus.IsAps);
            }
예제 #24
0
            public void SetsCorrectValuesToStatus(TmStatus status)
            {
                var sb = "Key1=Value1\r\nKey2=0\r\nName=Выключатель";

                status.SetTmcObjectProperties(sb);

                status.Name.Should().Be("Выключатель");
                status.Properties.Should().Equal(new Dictionary <string, string>
                {
                    { "Key1", "Value1" },
                    { "Key2", "0" },
                    { "Name", "Выключатель" },
                });
            }
예제 #25
0
            public void SetsCorrectValuesWithClass(string name, short classId, string text0, string text1, string textB,
                                                   string textM)
            {
                var tmStatus = new TmStatus(0, 1, 1);

                tmStatus.SetSqlPropertiesAndClassData(name, 0, -1, classId, text0, text1, textB, textM);

                Assert.Equal(name, tmStatus.Name);
                Assert.Equal((byte)classId, tmStatus.ClassId);
                Assert.Equal(text0, tmStatus.GetClassCaption(TmStatus.ClassCaption.Off));
                Assert.Equal(text1, tmStatus.GetClassCaption(TmStatus.ClassCaption.On));
                Assert.Equal(textB, tmStatus.GetClassCaption(TmStatus.ClassCaption.Break));
                Assert.Equal(textM, tmStatus.GetClassCaption(TmStatus.ClassCaption.Malfunction));
            }
예제 #26
0
            public void SetsCorrectValues(TmStatus status)
            {
                var str = "0Txt=отключен\r\n1Txt=включен\r\nBTxt=обрыв";

                status.SetTmcClassData(str);

                status.CaptionOff.Should().Be("отключен");
                status.CaptionOn.Should().Be("включен");
                status.IsClassDataLoaded.Should().BeTrue();
                status.ClassData.Should().Equal(new Dictionary <string, string>
                {
                    { "0Txt", "отключен" },
                    { "1Txt", "включен" },
                    { "BTxt", "обрыв" },
                });
            }
예제 #27
0
 void SyncGrid()
 {
     time2 += 1;
     if (time2 > resTime2)
     {
         TmStatus status = new TmStatus();
         status.KeyId             = clientId;
         status.MyselfTmTransform = new TmTransform(10, 11, 12, 60);
         status.TargetTmTransform = new TmTransform(20, 21, 22, 84);
         //Console.WriteLine("clientId: " + clientId + " Send36: " + " px: " + status.MyselfTmTransform.px + " py: " + status.MyselfTmTransform.py + " pz: " + status.MyselfTmTransform.pz + " ay: " + status.MyselfTmTransform.ay);
         //Console.WriteLine("clientId: " + clientId + " Send37: " + " px: " + status.MyselfTmTransform.px + " py: " + status.MyselfTmTransform.py + " pz: " + status.MyselfTmTransform.pz + " ay: " + status.MyselfTmTransform.ay);
         TmParameter request = TmParameterTool.ToJsonParameter <TmStatus>(TenCode.StatusSync, ElevenCode.Roler, ElevenCode.Roler.ToString(), status);
         TmTcpSocket.Instance.Send(request);
         time2 = 0;
     }
 }
예제 #28
0
            public void SetsCorrectValues(short status, short flags, ushort s2Flags)
            {
                var tmStatus       = new TmStatus(0, 1, 1);
                var tmcCommonPoint = new TmNativeDefs.TCommonPoint
                {
                    TM_Flags = 1,
                    tm_s2    = s2Flags,
                    Data     = new short[] { status, flags }.SelectMany(BitConverter.GetBytes).ToArray(),
                };

                tmStatus.FromTmcCommonPoint(tmcCommonPoint);

                Assert.True(tmStatus.IsInit);
                Assert.Equal(status, tmStatus.Status);
                Assert.Equal(flags, (short)tmStatus.Flags);
                Assert.Equal(s2Flags, (ushort)tmStatus.S2Flags);
            }
예제 #29
0
        public async Task DoWork()
        {
            Tms.PrintDebug(_infr.TmUserInfo?.Name);
            Tms.PrintDebug(await _api.GetSystemTimeString());

            var ts = new TmStatus(20, 1, 1);
            var ti = new TmAnalog(20, 1, 1);

            await _api.UpdateTagPropertiesAndClassData(ts);

            await _api.UpdateStatus(ts);

            await _api.UpdateTagPropertiesAndClassData(ti);

            await _api.UpdateAnalog(ti);

            Tms.PrintDebug(ts);
            Tms.PrintDebug(ti);
        }
예제 #30
0
        public async Task DoWork()
        {
            Console.WriteLine(_infr.TmUserInfo?.Name);
            Console.WriteLine(await _api.GetSystemTimeString());

            var ts = new TmStatus(20, 1, 1);
            var ti = new TmAnalog(20, 1, 1);

            await _api.UpdateTagPropertiesAndClassData(ts);

            await _api.UpdateStatus(ts);

            await _api.UpdateTagPropertiesAndClassData(ti);

            await _api.UpdateAnalog(ti);

            Console.WriteLine(ts);
            Console.WriteLine(ti);
        }