Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • Home
  • SEARCH
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 5956797
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 22, 20262026-05-22T18:18:32+00:00 2026-05-22T18:18:32+00:00

I have been trying to work with the standard GPS (gps.py) module in python

  • 0

I have been trying to work with the standard GPS (gps.py) module in python 2.6. This is supposed to act as a client and read GPS Data from gpsd running in Ubuntu.

According to the documentation from GPSD webpage on client design (GPSD Client Howto), I should be able to use the following code (slightly modified from the example) for getting latest GPS Readings (lat long is what I am mainly interested in)

from gps import *
session = gps() # assuming gpsd running with default options on port 2947
session.stream(WATCH_ENABLE|WATCH_NEWSTYLE)
report = session.next()
print report

If I repeatedly use the next() it gives me buffered values from the bottom of the queue (from when the session was started), and not the LATEST Gps reading. Is there a way to get more recent values using this library? In a Way, seek the Stream to the latest values?

Has anyone got a code example using this library to poll the gps and get the value i am looking for ?

Here is what I am trying to do:

  1. start the session
  2. Wait for user to call the gps_poll() method in my code
  3. Inside this method read the latest TPV (Time Position Velocity) report and return lat long
  4. Go back to waiting for user to call gps_poll()
  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-22T18:18:33+00:00Added an answer on May 22, 2026 at 6:18 pm

    What you need to do is regularly poll ‘session.next()’ – the issue here is that you’re dealing with a serial interface – you get results in the order they were received. Its up to you to maintain a ‘current_value’ that has the latest retrieved value.

    If you don’t poll the session object, eventually your UART FIFO will fill up and you won’t get any new values anyway.

    Consider using a thread for this, don’t wait for the user to call gps_poll(), you should be polling and when the user wants a new value they use ‘get_current_value()’ which returns current_value.

    Off the top of my head it could be something as simple as this:

    import threading
    import time
    from gps import *
    
    class GpsPoller(threading.Thread):
    
       def __init__(self):
           threading.Thread.__init__(self)
           self.session = gps(mode=WATCH_ENABLE)
           self.current_value = None
    
       def get_current_value(self):
           return self.current_value
    
       def run(self):
           try:
                while True:
                    self.current_value = self.session.next()
                    time.sleep(0.2) # tune this, you might not get values that quickly
           except StopIteration:
                pass
    
    if __name__ == '__main__':
    
       gpsp = GpsPoller()
       gpsp.start()
       # gpsp now polls every .2 seconds for new data, storing it in self.current_value
       while 1:
           # In the main thread, every 5 seconds print the current value
           time.sleep(5)
           print gpsp.get_current_value() 
    
    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I have been trying to make a case for using Python at my work.
I have been trying to work my way through Project Euler, and have noticed
I have been trying to use a formula that is used to work out
I have been trying to get around this error for a day now and
I have been trying to read a picture saved in Access DB as a
I have been trying to implement Win32's MessageBox using GTK. The app uses SDL/OpenGL,
I have been trying to find a really fast way to parse yyyy-mm-dd [hh:mm:ss]
I have been trying to determine a best case solution for registering a COM
I have been trying to explain the difference between switch statements and pattern matching(F#)
I have been trying to learn multi-threaded programming in C# and I am confused

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.