Python Forum
Python in Linux environment on RPI
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Python in Linux environment on RPI
#11
Thanks.
I put this in the script as below and ran but still get nothing printed to the file and it does not open the file locations.csv :
from gps import *
import time
import threading
def run(self):
      global gpsd
      while gpsp.running:
          with open("locations.csv","w") as f:
              gpsd.next()
              f.write('{}, {}\n'.format(gpsd.fix.longitude, gpsd.fix.latitude))
              # print (gpsd.fix.longitude)
              # print (gpsd.fix.latitude)
Reply
#12
if you remove comments from the print statements do you see any output?
perhaps you are not receiving any data from your gps.
Reply
#13
Thanks.
No output after removing comments from script in my previous post but do get output from script below. It prints lat, lon but into the python shell i.e. print works but  f.write does not work.

from gps import *
import time
import threading
f = open("locations.csv","w")
gpsd = None
class GpsPoller(threading.Thread):
  def __init__(self):
      threading.Thread.__init__(self)
      global gpsd
      gpsd=gps(mode=WATCH_ENABLE)
      self.current_value = None
      self.running = True
            
  def run(self):
      global gpsd
      while gpsp.running:
          gpsd.next()
          print (gpsd.fix.longitude)
          print (gpsd.fix.latitude)
        
if  __name__ == '__main__':
  
  gpsp=GpsPoller()
  try:
      gpsp.start()
      
      while True:
          f.write(str(gpsd.fix.longitude) + "," + str(gpsd.fix.latitude) + "\n") 
        
          time.sleep(30)
  except(KeyboardInterrupt,SystemExit):
      f.close()
      gpsp.running = False
      gpsp.join()
Reply
#14
Did you leave the __init__ on the first attempt (with code I showed you)?
It is of course necessary to still initialize
Reply
#15
Thanks.
I tried the foll. and no errors but no printing either:
from gps import *
import time
import threading
f = open("locations10.csv","w")
gpsd = None
def __init__(self):
     threading.Thread.__init__(self)
     global gpsd
     gpsd=gps(mode=WATCH_ENABLE)
     self.current_value = None
     self.running = True
class GpsPoller(threading.Thread):
 def run(self):
      global gpsd
      while gpsp.running:
          with open("locations10.csv","w") as f:
              gpsd.next()
              f.write('{}, {}\n'.format(gpsd.fix.longitude, gpsd.fix.latitude))
              print (gpsd.fix.longitude)
              print (gpsd.fix.latitude)
Reply
#16
And you do get data printed out if you comment out the file stuff? (and adjust indentation)
Reply
#17
yes, only with this script below:
from gps import *
import time
import threading
f = open("locations.csv","w")
gpsd = None
class GpsPoller(threading.Thread):
 def __init__(self):
     threading.Thread.__init__(self)
     global gpsd
     gpsd=gps(mode=WATCH_ENABLE)
     self.current_value = None
     self.running = True
            
 def run(self):
     global gpsd
     while gpsp.running:
         gpsd.next()
         print (gpsd.fix.longitude)
         print (gpsd.fix.latitude)
        
if  __name__ == '__main__':
  
 gpsp=GpsPoller()
 try:
     gpsp.start()
      
     while True:
         f.write(str(gpsd.fix.longitude) + "," + str(gpsd.fix.latitude) + "\n") 
        
         time.sleep(30)
 except(KeyboardInterrupt,SystemExit):
     f.close()
     gpsp.running = False
     gpsp.join()
Reply
#18
Well, there is one more thing you can try now.
that is to flush the file after write.

        #immediately after 
        f.write('{}, {}\n'.format(gpsd.fix.longitude, gpsd.fix.latitude))
        # add
        f.flush()
If that doesn't work, I guess you can cache to a list, and write after you have enough samples
Reply
#19
While working on and testing GPS code I always have a Terminal window open and type one of the following commands so I can verify my GPS is working and receiving data, if you think your signal is intermittent you can scroll back and look for breaks in the GPS data stream.

Type cgps -s in Terminal use Ctrl + Z too stop

Type gpsmon In Terminal use Ctrl + Z too stop
Reply
#20
K_Research -- Please note that you are responding to a three+ year old thread,and doubtful OP will see, hasn't logged in since last January.
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  Is possible to run the python command to call python script on linux? cuten222 6 738 Jan-30-2024, 09:05 PM
Last Post: DeaD_EyE
  Installing python packages in a virtual environment Led_Zeppelin 1 775 Aug-15-2023, 08:18 PM
Last Post: deanhystad
  Understanding venv; How do I ensure my python script uses the environment every time? Calab 1 2,291 May-10-2023, 02:13 PM
Last Post: Calab
  Python development environment standenman 3 1,648 May-04-2023, 07:24 PM
Last Post: snippsat
  Python Scripting Environment jpotter0 1 1,723 Nov-19-2022, 03:07 PM
Last Post: snippsat
  How to use a variable in linux command in python code? ilknurg 2 1,611 Mar-14-2022, 07:21 AM
Last Post: ndc85430
  How do I link the virtual environment of that project to the 3.9.2 version of python? Bryant11 1 1,381 Feb-26-2022, 11:15 AM
Last Post: Larz60+
  Python syntax in Linux St0rmcr0w 2 51,918 Jul-29-2021, 01:40 PM
Last Post: snippsat
  VS Code debugger using wrong Python environment topfox 0 2,516 Jun-09-2021, 10:01 AM
Last Post: topfox
  Login to NordVPN on Linux with python script AGreenPig 2 6,000 Feb-09-2021, 10:44 AM
Last Post: AGreenPig

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020