コード例 #1
0
ファイル: LiveInputServiceImpl.cs プロジェクト: helios57/anrl
        public Root PostData(Root root)
        {
            WebOperationContext.Current.OutgoingResponse.Headers.Add("Access-Control-Allow-Origin", "*");
            WebOperationContext.Current.OutgoingResponse.Headers.Add("Access-Control-Allow-Methods", "GET, POST, OPTIONS");
            WebOperationContext.Current.OutgoingResponse.Headers.Add("Access-Control-Allow-Headers", "Content-Type");
            WebOperationContext.Current.OutgoingResponse.Headers.Add("Access-Control-Max-Age", "1728000");

            AnrlDataContext db = new AnrlDataContext();
            Root response = new Root();
            response.response = new Response();
            response.response.countAdded = 0;
            try
            {
                if (root != null && root.gpsdata.Count > 0)
                {
                    t_Tracker tracker;
                    if (db.t_Trackers.Count(p => p.IMEI == root.gpsdata[0].identifier) == 1)
                    {
                        tracker = db.t_Trackers.Single(p => p.IMEI == root.gpsdata[0].identifier);
                    }
                    else
                    {
                        tracker = new t_Tracker();
                        tracker.IMEI = root.gpsdata[0].identifier;
                        db.t_Trackers.InsertOnSubmit(tracker);
                        db.SubmitChanges();
                    }
                    foreach (GPSData data in root.gpsdata)
                    {
                        t_Daten t_d = new t_Daten();
                        t_d.Accuracy = data.accuracy;
                        t_d.Altitude = data.altitude;
                        t_d.Bearing = data.bearing;
                        t_d.Latitude = data.latitude;
                        t_d.Longitude = data.longitude;
                        t_d.Speed = data.speed;
                        t_d.Timestamp = data.timestampGPS;
                        t_d.ID_Tracker = tracker.ID;
                        db.t_Datens.InsertOnSubmit(t_d);
                        response.response.countAdded++;
                    }
                    db.SubmitChanges();
                }
            }
            catch (Exception ex)
            {
            #if !DEBUG
                //Logger.Log("Exception in GPSRequestProcessor.proccessRequest" + ex.ToString(), 9);
            #else
                //System.Console.WriteLine("Exception in GPSRequestProcessor.proccessRequest " + ex.ToString());
            #endif
                response.exception = ex.ToString();
            }
            finally
            {
                db.Dispose();
            }
            return response;
        }
コード例 #2
0
ファイル: Reciever.cs プロジェクト: helios57/anrl
        /// <summary>
        /// Handels the Data recieved and processed in the Message_Received_Processor
        /// Adds the Data to the Database
        /// For Threat-Security
        /// </summary>
        /// <param name="GPSData">THe Data</param>
        private void ProcessRecievedGPSData(object GPSData)
        {
            try
            {
                String incomingData = GPSData as String;
                if (incomingData != null)
                {
                    AnrlDB.AnrlDataContext db = new AnrlDB.AnrlDataContext();
                    try
                    {
                        String trimedGPSData = incomingData.Trim(new char[] { '!', '$' });
                        String[] GPScoords = trimedGPSData.Split(new char[] { ',', '*' });

                        if (db.t_Trackers.Count(p => p.IMEI == GPScoords[0]) == 0)
                        {
                            t_Tracker t = new t_Tracker();
                            t.IMEI = GPScoords[0];
                            db.t_Trackers.InsertOnSubmit(t);
                            db.SubmitChanges();
                        }
                        string yy = GPScoords[3].Substring(4, 2);
                        string mm = GPScoords[3].Substring(2, 2);
                        string dd = GPScoords[3].Substring(0, 2);
                        if (yy != "00" && mm != "00" && dd != "00") //Only save sensefull data
                        {
                            t_GPS_IN new_position = new t_GPS_IN();
                            new_position.IMEI = GPScoords[0];
                            new_position.Status = Int32.Parse(GPScoords[1]);
                            new_position.GPS_fix = Int32.Parse(GPScoords[2]);
                            new_position.TimestampTracker = new DateTime(
                                                    Int32.Parse("20" + yy),
                                                    Int32.Parse(mm),
                                                    Int32.Parse(dd),
                                                    Int32.Parse(GPScoords[4].Substring(0, 2)),
                                                    Int32.Parse(GPScoords[4].Substring(2, 2)),
                                                    Int32.Parse(GPScoords[4].Substring(4, 2)));
                            new_position.longitude = GPScoords[5];
                            new_position.latitude = GPScoords[6];
                            new_position.altitude = GPScoords[7];
                            new_position.speed = GPScoords[8];
                            new_position.heading = GPScoords[9];
                            new_position.nr_used_sat = Int32.Parse(GPScoords[10]);
                            new_position.HDOP = GPScoords[11];
                            new_position.Timestamp = DateTime.Now;
                            new_position.Processed = false;

                            db.t_GPS_INs.InsertOnSubmit(new_position);
                            db.SubmitChanges();
                        }
                    }
                    catch (Exception ex)
                    {
                        Logger.Log("Exception in Server.ProcessRecievedGPSData incomming:"+incomingData + " " + ex.ToString(), 12);
                    }
                    finally
                    {
                        db.Dispose();
                    }
                }
            }
            catch { }
        }
コード例 #3
0
ファイル: Anrl.designer.cs プロジェクト: helios57/anrl
 partial void Deletet_Tracker(t_Tracker instance);
コード例 #4
0
ファイル: Anrl.designer.cs プロジェクト: helios57/anrl
 partial void Updatet_Tracker(t_Tracker instance);
コード例 #5
0
ファイル: Anrl.designer.cs プロジェクト: helios57/anrl
 partial void Insertt_Tracker(t_Tracker instance);
コード例 #6
0
ファイル: GPSRequestProcessor.cs プロジェクト: helios57/anrl
        public RootMessage proccessRequest(RootMessage request)
        {
            AnrlDataContext db = new AnrlDataContext();
            RootMessage response = new RootMessage();
            response.response = new Response();
            response.response.countAdded = 0;
            try
            {
                if (request != null && request.gpsdata.Count > 0)
                {
                    t_Tracker tracker;
                    if (db.t_Trackers.Count(p => p.IMEI == request.gpsdata[0].identifier) == 1)
                    {
                        tracker = db.t_Trackers.Single(p => p.IMEI == request.gpsdata[0].identifier);
                    }
                    else
                    {
                        tracker = new t_Tracker();
                        tracker.IMEI = request.gpsdata[0].identifier;
                        db.t_Trackers.InsertOnSubmit(tracker);
                        db.SubmitChanges();
                    }
                    foreach (GPSData data in request.gpsdata)
                    {
                        t_Daten t_d = new t_Daten();
                        t_d.Accuracy = data.accuracy;
                        t_d.Altitude = data.altitude;
                        t_d.Bearing = data.bearing;
                        t_d.Latitude = data.latitude;
                        t_d.Longitude = data.longitude;
                        t_d.Speed = data.speed;
                        //Convert Javas millis to C#'s nano- Ticks

                        //Hack to fix the Bug from Android (One day in future)
                        long day = TimeSpan.TicksPerDay;
                        long hours = TimeSpan.TicksPerHour;
                        long timestampGPS = UTCBaseTime.Add(new TimeSpan(data.timestampGPS * TimeSpan.TicksPerMillisecond)).Ticks;
                        long timestampSender = UTCBaseTime.Add(new TimeSpan(data.timestampSender * TimeSpan.TicksPerMillisecond)).Ticks;

                        if ((timestampGPS - day + hours) > timestampSender)
                        {
                            timestampGPS -= day;
                        }

                        t_d.Timestamp = timestampGPS;
                        t_d.ID_Tracker = tracker.ID;
                        db.t_Datens.InsertOnSubmit(t_d);
                        response.response.countAdded++;
                    }
                    db.SubmitChanges();
                }
            }
            catch (Exception ex)
            {
            #if !DEBUG
                Logger.Log("Exception in GPSRequestProcessor.proccessRequest" + ex.ToString(), 9);
            #else
                //System.Console.WriteLine("Exception in GPSRequestProcessor.proccessRequest " + ex.ToString());
            #endif
                response.exception = ex.ToString();
            }
            finally
            {
                db.Dispose();
            }
            return response;
        }