Exemple #1
0
        private void _receiver_OnPositionEvent(Atlas2Data data)
        {
            VTSAtlas2Target target = new VTSAtlas2Target(data.TrackId);

            target.MMSI = data.MMSI;
            target.Update(data.Lon, data.Lat, data.SOG, data.COG, DateTime.Now);
            target.Name         = data.Name;
            target.ReceiverTime = data.Time;
            lock (_tracksData)
            {
                _tracksData.UpdateDynamicEvent(target);
            }
        }
        protected override void onRecv(byte[] pb, int len)
        {
            VTSInfo[] infos = _parser.Parse(pb, 0, len);
            foreach (VTSInfo info in infos)
            {
                Atlas2Data data = new Atlas2Data();
                data.Time            = info.RecvTime;
                data.TrackId         = info.SystemTrackId;
                data.Status          = info.Status;
                data.Name            = info.Name;
                data.ShortName       = info.ShortName;
                data.CallSign        = info.CallSign;
                data.ShipType        = info.ShipType;
                data.Length          = info.Length;
                data.Width           = info.Width;
                data.Shape           = new GeoPointShape(info.Longitude, info.Latitude);
                data.COG             = info.Course;
                data.SOG             = info.Speed;
                data.Heading         = (int)info.Heading;
                data.TimeLastUpdate  = info.TimeLastUpdate;
                data.ObjType         = (Atlas2Data.ObjTypes)info.ObjType;
                data.TargetType      = info.TargetType;
                data.PilotStatus     = info.PilotStatus;
                data.Rating          = info.Rating;
                data.LabelColorIndex = info.LabelColorIndex;
                data.Category        = info.Category;
                int.TryParse(info.TransponderId, out data.MMSI);
                data.TransponderState = info.TransponderState;
                data.DBTrackId        = info.DBTrackId;
                data.Draught          = info.Draught;
                data.InfoTxt          = info.InfoTxt;
                data.ETA                 = info.ETA;
                data.ETAEndPoint         = info.ETAEndPoint;
                data.RateOfTurn          = info.RateOfTurn;
                data.AISNavStatus        = info.AISNavStatus;
                data.AISRateOfTurn       = info.AISRateOfTurn;
                data.AISSOG              = info.AISSOG;
                data.AISLatitude         = info.AISLatitude;
                data.AISLongitude        = info.AISLongitude;
                data.AISCOG              = info.AISCOG;
                data.AISTrueHeading      = info.AISTrueHeading;
                data.AISETA              = info.AISETA;
                data.AISDraught          = info.AISDraught;
                data.AISTimeOfLastUpdate = info.AISTimeOfLastUpdate;
                data.DataTime            = info.DataTime;
                data.Id = data.GetID();

                if (!_dic.ContainsKey(data.TrackId))
                {
                    _dic.Add(data.TrackId, data);
                }

                else if (data.SOG > 1 || _dic[data.TrackId].Time.AddSeconds(Atlas2TimeoutUtil.TotalSeconds) <= data.Time)
                {
                    _dic[data.TrackId] = data;
                }
                else
                {
                    return;
                }

                if (OnReceivedData != null)
                {
                    OnReceivedData(data);
                }
            }
        }