示例#1
0
        public void TestMapToStatusPtb()
        {
            var target = new StatusFNN(0x210500000004);

            Assert.AreEqual(BzStatusWord.BzStatusWordIdentification, target.BzStatusWord);
            Assert.AreEqual(SmgwStatusWord.SmgwStatusWordIdentification | SmgwStatusWord.Fatal_Error | SmgwStatusWord.PTB_Temp_Error_signed_invalid, target.SmgwStatusWord);
            Assert.AreEqual("A084000020000000", target.Status);
            Assert.AreEqual(StatusPTB.FatalError, target.MapToStatusPtb());

            target = new StatusFNN(0x200500000004);
            Assert.AreEqual(BzStatusWord.BzStatusWordIdentification, target.BzStatusWord);
            Assert.AreEqual(SmgwStatusWord.SmgwStatusWordIdentification | SmgwStatusWord.PTB_Temp_Error_signed_invalid, target.SmgwStatusWord);
            Assert.AreEqual("A004000020000000", target.Status);
            Assert.AreEqual(StatusPTB.TemporaryError, target.MapToStatusPtb());

            target = new StatusFNN(0x0500000004);
            Assert.AreEqual(BzStatusWord.BzStatusWordIdentification, target.BzStatusWord);
            Assert.AreEqual(SmgwStatusWord.SmgwStatusWordIdentification, target.SmgwStatusWord);
            Assert.AreEqual("A000000020000000", target.Status);
            Assert.AreEqual(StatusPTB.NoError, target.MapToStatusPtb());

            target = new StatusFNN(0x100500000004);
            Assert.AreEqual(BzStatusWord.BzStatusWordIdentification, target.BzStatusWord);
            Assert.AreEqual(SmgwStatusWord.SmgwStatusWordIdentification | SmgwStatusWord.PTB_Warning, target.SmgwStatusWord);
            Assert.AreEqual("A008000020000000", target.Status);
            Assert.AreEqual(StatusPTB.Warning, target.MapToStatusPtb());

            target = new StatusFNN(0x400500000004);
            Assert.AreEqual(BzStatusWord.BzStatusWordIdentification, target.BzStatusWord);
            Assert.AreEqual(SmgwStatusWord.SmgwStatusWordIdentification | SmgwStatusWord.PTB_Temp_Error_is_invalid, target.SmgwStatusWord);
            Assert.AreEqual("A002000020000000", target.Status);
            Assert.AreEqual(StatusPTB.CriticalTemporaryError, target.MapToStatusPtb());
        }
        public static string GetFnnStatusString(this StatusFNN status, int count = 0)
        {
            var statusItems = new List <string>();

            if (status.BzStatusWord.HasFlag(BzStatusWord.Fatal_Error))
            {
                statusItems.Add("Zähler: fataler Fehler");
            }

            if (status.SmgwStatusWord.HasFlag(SmgwStatusWord.Fatal_Error))
            {
                statusItems.Add("SMGw: fataler Fehler");
            }

            if (status.SmgwStatusWord.HasFlag(SmgwStatusWord.Systemtime_Invalid))
            {
                statusItems.Add("SMGw: ungültige Systemzeit");
            }

            if (status.SmgwStatusWord.HasFlag(SmgwStatusWord.PTB_Temp_Error_signed_invalid))
            {
                statusItems.Add("SMGw: temporärer Fehler");
            }

            if (status.BzStatusWord.HasFlag(BzStatusWord.Manipulation_KD_PS))
            {
                statusItems.Add("Zähler: mechanische Beeinflussung");
            }

            if (status.BzStatusWord.HasFlag(BzStatusWord.Magnetically_Influenced))
            {
                statusItems.Add("Zähler: magnetsiche Beeinflussung");
            }

            if (status.SmgwStatusWord.HasFlag(SmgwStatusWord.PTB_Temp_Error_is_invalid))
            {
                statusItems.Add("SMGw: kritischer temporärer Fehler");
            }

            if (status.SmgwStatusWord.HasFlag(SmgwStatusWord.PTB_Warning))
            {
                statusItems.Add("SMGw: Warnung");
            }

            if (!statusItems.Any())
            {
                return("keine Fehler");
            }

            return(string.Join(", ", statusItems));
        }
示例#3
0
 /// <summary>
 /// Validiert den FNNStatus
 /// </summary>
 /// <param name="statusFNN"></param>
 /// <returns>True wenn der FNN Status gültig ist, False falls nicht</returns>
 public static bool ValidateFNNStatus(this StatusFNN statusFNN)
 {
     return(statusFNN.Validate());
 }