Commit 8b4c8415e8a8e953f7f1d455ae3c3e6cc69b0401

Authored by Gustav Nore
1 parent 395a57b5

Lagt til kommentarer, ryddet i kode, og slettet det som ikke lenger er i bruk. B…

…lant annet en del print-funksjoner.
Showing 2 changed files with 133 additions and 37 deletions   Show diff stats
... ... @@ -2,17 +2,22 @@ import serial
2 2 import RPi.GPIO as GPIO
3 3 import os
4 4  
5   -ser = serial.Serial("/dev/ttyS0", timeout = 1.0)
  5 +#Pinne-oppsett
6 6 port_1pps = 18
7 7 port_3ds = 24
8   -fix = False
9   -pwrStat = False
10   -lat = 0
11   -long = 0
12 8 redled=13
13 9 greenled=6
14 10 save_btn = 26
15 11 off_btn=19
  12 +
  13 +#Setter globale variabler
  14 +ser = serial.Serial("/dev/ttyS0", timeout = 1.0)
  15 +
  16 +fix = False
  17 +pwrStat = False
  18 +lat = 0
  19 +long = 0
  20 +
16 21 i = 1 #bare en teller YO
17 22  
18 23 #GPIO setup
... ... @@ -28,8 +33,8 @@ GPIO.setup(save_btn, GPIO.IN, pull_up_down=GPIO.PUD_UP)
28 33  
29 34  
30 35  
31   -def setPos(a,b): #omgjør fra min til decimal
32   - global lat
  36 +def setPos(a,b): #omgjør posisjon fra minutt-form til decimal-form
  37 + global lat #og lagrer denne i varabler
33 38 global long
34 39 lat_deg = float(a[:2])
35 40 lat_mdeg = float(a[2:])
... ... @@ -39,38 +44,41 @@ def setPos(a,b): #omgjør fra min til decimal
39 44 lon_mdeg = float(b[3:])
40 45 long = round ((lon_deg+lon_mdeg/60),4)
41 46  
42   -def redblink():
  47 +
  48 +def redblink(): #Funksjon for å blinke med rød led.
43 49 for i in range(0,4):
44 50 GPIO.output(redled,GPIO.HIGH)
45 51 sleep(0.25)
46 52 GPIO.output(redled,GPIO.LOW)
47 53 sleep(0.25)
48 54  
49   -def shutdown(channel):
  55 +def shutdown(channel): #Interrupt-rutine for å slå av Pi
50 56 os.system("sudo shutdown -h now")
51 57 ser.close()
52 58 GPIO.cleanup()
53 59  
54 60 print("Trykk knapp koblet til pinne {} for å skru av".format(off_btn))
  61 +
  62 +#Aktiverer interrupt på av-knapp
55 63 GPIO.add_event_detect(off_btn, GPIO.FALLING, callback = shutdown, bouncetime=50)
56 64  
57   -def savePos(channel):
  65 +
  66 +def savePos(channel): #Funksjon for å lagre posisjon til fil
58 67 global fix
59 68 global lat
60 69 global long
61   - if fix:
62   - print("Lat: {:f}").format(lat)
63   - print("Long: {:f}").format(long)
64   - global i
65   - #i = str(i)
  70 + if fix: #Lagrer ingenting om ikke det er 3dfix
  71 + print("Lat: {:f}").format(lat) #Echo til konsoll for kontroll av
  72 + print("Long: {:f}").format(long) #hva som lagres
  73 + global i #Teller antall loggnummer siden oppstart av pi.
  74 + #Kunne med fordel blitt lagret i ekstern fil og resatt
  75 + #når filen ble tømt
  76 +
66 77 tosave = "{:f}\t{:f}\tcircle2\tred\t{:d}\n".format(lat,long,i)
67   - #tosave = pos[0]+'\t'+pos[1]+'\t'+'circle2'+'\t'+'red'+'\t'+i+'\n'
68   - print(tosave)
69   - #i = int(i)
70 78 i = i+1
71 79  
72   - f=open('/var/www/html/gps_data.txt','a')
73   - f.write(tosave)
  80 + f=open('/var/www/html/gps_data.txt','a') #Åpner og lagrer behandlet
  81 + f.write(tosave) #data til fil
74 82 f.close()
75 83 led.redblink()
76 84  
... ... @@ -78,25 +86,24 @@ GPIO.add_event_detect(save_btn, GPIO.FALLING, callback = savePos, bouncetime = 5
78 86  
79 87  
80 88  
81   -#Burde skrive funksjon for å sjekke strømstaus i tilfelle den endrer seg
82   -
83   -def update():
84   -# print("hei")
  89 +def update(): #Funksjon for å oppdatere felt (posisjon og fix)
85 90 global fix
86 91 global lat
87 92 global long
88   - while ser.in_waiting != 0:
89   - try:
90   - msg = ser.readline().decode('ascii')
91   - except:
92   - print('Drit i å koble fra da!')
  93 +
  94 + while ser.in_waiting != 0: #Leser fra buffer så lenge data er tilgjengelig
  95 + msg = ser.readline().decode('ascii')
93 96 msg = msg.split(",")
94 97 if msg[0] == ("$GPGSA"):
95   - if msg[2] == "3": #Sjekker om 3Dfix
  98 +
  99 + #Leser fix-data
  100 + if msg[2] == "3":
96 101 fix = True
97 102 else:
98 103 fix = False
99   - GPIO.output(greenled, fix)
  104 + GPIO.output(greenled, fix) #Tenner lys om fix
  105 +
  106 + #Leser posisjonsdata
100 107 elif msg[0] == ("$GPRMC"):
101 108 if fix:
102 109 setPos(msg[3], msg[5])
... ... @@ -104,14 +111,12 @@ def update():
104 111 lat = 0
105 112 long = 0
106 113  
107   -def main():
  114 +def main(): #Mainfunksjon med programflyt
108 115 try:
109 116 while True:
110 117 update()
111   -# print(lat)
112   -# print(long)
113   - except KeyboardInterrupt:
114   - GPIO.cleanup()
115   - ser.close()
  118 + except KeyboardInterrupt: #Lukker serieport og rydder i GPIO
  119 + GPIO.cleanup() #dersom KeyboardInterrupt mens programmet
  120 + ser.close() #kjører
116 121  
117 122 main()
... ...
gps_gammel.py 0 → 100644
  1 +import RPi.GPIO as GPIO
  2 +
  3 +#GPIO setup
  4 +GPIO.setwarnings(False)
  5 +GPIO.setmode(GPIO.BCM)
  6 +
  7 +
  8 +class Gps:
  9 + def setPos(a,b): #omgjør fra min til decimal
  10 + lat_deg = float(a[:2])
  11 + lat_mdeg = float(a[2:])
  12 + self.lat = round((lat_deg+lat_mdeg/60),4)
  13 +
  14 + lon_deg = float(b[:3])
  15 + lon_mdeg = float(b[3:])
  16 + self.lon = round ((lon_deg+lon_mdeg/60),4)
  17 +
  18 +
  19 + def __init__(self, serialport, BCM_pwr_port, BCM_1pps_port, BCM_3ds_port):
  20 + #Class variables
  21 + self.ser = serialport #Set serialport
  22 + self.port_pwr = BCM_pwr_port
  23 + self.port_1pps = BCM_1pps_port
  24 + self.port_3ds = BCM_3ds_port
  25 + self.fix = False
  26 + self.pwrStat = False
  27 + self.lat = 0
  28 + self.long = 0
  29 + self.running = False
  30 +
  31 + #GIPO Setup
  32 + GPIO.setup(self.port_pwr, GPIO.OUT, initial = 0)
  33 + GPIO.setup(self.port_1pps, GPIO.IN)
  34 + GPIO.setup(self.port_3ds, GPIO.IN)
  35 +
  36 +
  37 +
  38 + #Burde skrive funksjon for å sjekke strømstaus i tilfelle den endrer seg
  39 +
  40 + def update(self):
  41 + print("hei")
  42 + if self.pwrStat:
  43 + while self.ser.in_waiting() != 0:
  44 + msg = ser.readline().decode('ascii')
  45 + msg = msg.split(",")
  46 + if msg[0] == ("$GPGSA"):
  47 + if msg[2] == "3": #Sjekker om 3Dfix
  48 + fix = True
  49 + else:
  50 + fix = False
  51 + elif msg[0] == ("$GPRMC"):
  52 + if hasFix():
  53 + setPos(msg[3], msg[5])
  54 + else:
  55 + lat = 0
  56 + long = 0
  57 +
  58 +
  59 +
  60 + def pwrOn(self):
  61 + try:
  62 + GPIO.output(self.port_pwr, 1)
  63 + self.pwrStat = True
  64 + except:
  65 + print('GPS could not be powered on')
  66 +
  67 +
  68 + def pwrOff(self):
  69 + try:
  70 + GPIO.output(self.pwr_port, 0)
  71 + self.pwrStat = False
  72 + except:
  73 + print('GPS could not be powered off')
  74 +
  75 +
  76 + def hasFix(self):
  77 + return self.fix
  78 +
  79 +
  80 + def getLat(self):
  81 + return self.lat
  82 +
  83 +
  84 + def getLong(self):
  85 + return self.long
  86 +
  87 +# def getPos():
  88 +# #Kode for å returnere posisjon
  89 +
  90 + def cleanup():
  91 + GPIO.cleanup()
... ...