private SDGPSData parseNO298ECmd(byte[] buffer, int start, out int cmdLen) { SDGPSData result = new SDGPSData(); cmdLen = buffer[start + 4] + 5; try { string ip; DateTime dt; double Lat, Lon; start += 5; start += ParseField.ParseFieldIP(buffer, start, out ip); start += ParseField.ParseFieldTime(buffer, start, out dt); start += ParseField.ParseFieldLat(buffer, start, out Lat); start += ParseField.ParseFieldLon(buffer, start, out Lon); start += ParseField.ParseFieldSpeed(buffer, start, out result.SOG); start += ParseField.ParseFieldAngle(buffer, start, out result.COG); start += ParseField.ParseFieldPosition(buffer, start, out result.Position); result.Name = getNameByIP(ip); result.Id = ip.Replace('.', '-'); result.Src = ""; result.Time = dt; result.Shape = new GeoPointShape(Lon, Lat); result.Distance = 0; return(result); } catch (Exception) { return(null); } }