Parking Finder
The Parking Finder system is a smart parking solution designed to help drivers efficiently locate available
Loading...
Searching...
No Matches
gps.GPS Class Reference

Public Member Functions

 __init__ (self)
 __str__ (self)
 update_loop (self)
 get_lat (self)
 get_long (self)
 get_altitude (self)
 stop (self)
 get_data (self)

Public Attributes

 ser
bool running = True
int latitude = 0
int longitude = 0
int altitude = 0
bool new_data = False
 thread = threading.Thread(target=self.update_loop, daemon=True)

Detailed Description

Definition at line 11 of file gps.py.

Constructor & Destructor Documentation

◆ __init__()

gps.GPS.__init__ ( self)

Definition at line 12 of file gps.py.

12 def __init__(self):
13 self.ser = serial.Serial(
14 port='/dev/ttyTHS1', # Adjust this for your specific setup
15 baudrate=9600,
16 parity=serial.PARITY_NONE,
17 stopbits=serial.STOPBITS_ONE,
18 bytesize=serial.EIGHTBITS,
19 timeout=1 # Timeout in seconds
20 )
21
22 #self.rate = rate_hz # rate_hz=5 in init header
23 self.running = True
24
25 self.latitude = 0
26 self.longitude = 0
27 self.altitude = 0 #sometimes returns None
28
29 # new data flag
30 self.new_data = False
31
32 # start background thread
33 self.thread = threading.Thread(target=self.update_loop, daemon=True)
34 self.thread.start()
35

Member Function Documentation

◆ __str__()

gps.GPS.__str__ ( self)

Definition at line 36 of file gps.py.

36 def __str__(self):
37 def _fmt(v):
38 return f"{v:.3f}" if isinstance(v, (int, float)) else "N/A"
39
40 return (
41 f"Latitude: {_fmt(self.latitude)}\n"
42 f"Longitude: {_fmt(self.longitude)}\n"
43 f"Altitude: {_fmt(self.altitude)}\n"
44 )
45

◆ get_altitude()

gps.GPS.get_altitude ( self)

Definition at line 88 of file gps.py.

88 def get_altitude(self):
89 return self.altitude
90

◆ get_data()

gps.GPS.get_data ( self)

Definition at line 96 of file gps.py.

96 def get_data(self):
97 self.new_data = False
98 return self.latitude, self.longitude
99

◆ get_lat()

gps.GPS.get_lat ( self)

Definition at line 82 of file gps.py.

82 def get_lat(self):
83 return self.latitude
84

◆ get_long()

gps.GPS.get_long ( self)

Definition at line 85 of file gps.py.

85 def get_long(self):
86 return self.longitude
87

◆ stop()

gps.GPS.stop ( self)

Definition at line 91 of file gps.py.

91 def stop(self):
92 self.running = False
93 self.ser.close()
94 self.thread.join()
95

◆ update_loop()

gps.GPS.update_loop ( self)

Definition at line 46 of file gps.py.

46 def update_loop(self):
47 print("Serial port opened. Waiting for data...")
48 #period = 1 / self.rate
49 try:
50 while self.running:
51 if self.ser.in_waiting > 0:
52 # Read data from the serial port
53 # ser.readline() reads until a newline character is encountered
54 # ser.read(num_bytes) reads a specified number of bytes
55 data = self.ser.readline().decode().strip() # Decode and remove whitespace
56 # 'utf-8'
57 if data:
58 if data.find('GGA') > 0:
59 try:
60 msg = pynmea2.parse(data)
61 '''
62 print(msg.timestamp, 'Lat:', round(msg.latitude, 6), 'Lon:', round(msg.longitude, 6),
63 'Alt:', msg.altitude, 'Sats:', msg.num_sats)
64 '''
65 # print(f"Received: {data}")
66
67 self.latitude = msg.latitude
68 self.longitude = msg.longitude
69 self.altitude = msg.altitude
70 self.new_data = True
71
72 except Exception as e:
73 print(e)
74
75 else:
76 print("No data recieved")
77 #time.sleep(period) # Small delay to prevent busy-waiting
78
79 except Exception as e:
80 print(f"An error occurred: {e}")
81

Member Data Documentation

◆ altitude

int gps.GPS.altitude = 0

Definition at line 27 of file gps.py.

◆ latitude

gps.GPS.latitude = 0

Definition at line 25 of file gps.py.

◆ longitude

int gps.GPS.longitude = 0

Definition at line 26 of file gps.py.

◆ new_data

bool gps.GPS.new_data = False

Definition at line 30 of file gps.py.

◆ running

bool gps.GPS.running = True

Definition at line 23 of file gps.py.

◆ ser

gps.GPS.ser
Initial value:
= serial.Serial(
port='/dev/ttyTHS1', # Adjust this for your specific setup
baudrate=9600,
parity=serial.PARITY_NONE,
stopbits=serial.STOPBITS_ONE,
bytesize=serial.EIGHTBITS,
timeout=1 # Timeout in seconds
)

Definition at line 13 of file gps.py.

◆ thread

gps.GPS.thread = threading.Thread(target=self.update_loop, daemon=True)

Definition at line 33 of file gps.py.


The documentation for this class was generated from the following file: