Пример #1
0
        private static void StartAnalysis(IEnumerable <string> lines)
        {
            var vdm      = new Vdm();
            var count    = 0;
            var msgTypes = new int[128];
            var userIds  = new List <long> ();

            foreach (var line in lines)
            {
                //Console.Write(".");
                var result = vdm.Add(line);
                switch (result)
                {
                case VdmStatus.Complete:
                    //counts[vdm.MsgId]++;
                    count++;
                    try {
                        var msg = vdm.ToMessage();
                        msgTypes[msg.MsgId]++;
                        if (!userIds.Contains(msg.UserId))
                        {
                            userIds.Add(msg.UserId);
                        }
                    } catch (Exception ex) {
                        Console.Error.WriteLine(ex.ToString());
                    }
                    break;

                case VdmStatus.Incomplete:
                    //Console.WriteLine (" {0} Num:{1} Sequence:{2}", vdm.Total, vdm.Num, vdm.Sequence);
                    break;

                case VdmStatus.ChecksumFailed:
                case VdmStatus.NotAisMessage:
                case VdmStatus.NmeaNextError:
                case VdmStatus.OutofSequence:
                default:
                    Console.WriteLine(line);
                    Console.Error.WriteLine(result);
                    break;
                }
                if (count % 1000 == 0)
                {
                    Console.Write("count:{0}", count);
                    for (int i = 0; i < 25; i++)
                    {
                        if (msgTypes[i] > 0)
                        {
                            Console.Write("\tMsg {0}:{1}", i, msgTypes[i]);
                        }
                    }
                    Console.WriteLine();
                }
            }
        }
Пример #2
0
        public static void StartParse(int length)
        {
            var counts = new int[30];
            var count  = 0;
            var vdm    = new Vdm();

            using (var reader = CreateReader()) {
                for (int i = 0; i < length; i++)
                {
                    Console.Write(".");
                    var line   = reader.ReadLine();
                    var result = vdm.Add(line);
                    switch (result)
                    {
                    case VdmStatus.Complete:
                        counts[vdm.MsgId]++;
                        count++;
                        try {
                            var msg = vdm.ToMessage();
                            FormatMsg(vdm, msg);
                        } catch (Exception ex) {
                            Console.Error.WriteLine(ex.ToString());
                        }

                        vdm = new Vdm();
                        break;

                    case VdmStatus.Incomplete:
                        Console.WriteLine(" {0} Num:{1} Sequence:{2}", vdm.Total, vdm.Num, vdm.Sequence);
                        break;

                    case VdmStatus.ChecksumFailed:
                    case VdmStatus.NotAisMessage:
                    case VdmStatus.NmeaNextError:
                    case VdmStatus.OutofSequence:
                    default:
                        Console.WriteLine(line);
                        Console.Error.WriteLine(result);
                        break;
                    }
                    if (count > 100)
                    {
                        Console.WriteLine("Message Summary {0}", FormatCounts(counts));
                        count  = 0;
                        counts = new int[30];
                    }
                }
            }
        }
Пример #3
0
        public static void StartParse(IEnumerable <string> lines)
        {
            var counts = new int[30];
            var count  = 0;
            var vdm    = new Vdm();

            foreach (var line in lines)
            {
                //Console.Write(".");
                var result = vdm.Add(line);
                switch (result)
                {
                case VdmStatus.Complete:
                    //counts[vdm.MsgId]++;
                    count++;
                    try {
                        var msg = vdm.ToMessage();
                        FormatMsg(msg);
                    } catch (Exception ex) {
                        Console.Error.WriteLine(ex.ToString());
                    }

                    //vdm = new Vdm();
                    break;

                case VdmStatus.Incomplete:
                    Console.WriteLine(" {0} Num:{1} Sequence:{2}", vdm.Total, vdm.Num, vdm.Sequence);
                    break;

                case VdmStatus.ChecksumFailed:
                case VdmStatus.NotAisMessage:
                case VdmStatus.NmeaNextError:
                case VdmStatus.OutofSequence:
                default:
                    Console.WriteLine(line);
                    Console.Error.WriteLine(result);
                    break;
                }
                if (count > 100)
                {
                    Console.WriteLine("Message Summary {0}", FormatCounts(counts));
                    count  = 0;
                    counts = new int[30];
                }
            }
        }
Пример #4
0
        public void TestParse()
        {
            var vdm  = new Vdm();
            var msgs = new List <Messages>();

            using (var reader = CreateReader()) {
                for (int i = 0; i < 1000; i++)
                {
                    var line   = reader.ReadLine();
                    var result = vdm.Add(line);
                    if (result == 0)
                    {
                        // vdm.MsgId
                        var msg = vdm.ToMessage();
                        Assert.NotNull(msg);
                        msgs.Add(msg);
                        vdm = new Vdm();
                    }
                }
            }
            Assert.True(msgs.Count > 100);
        }