Kaynağa Gözat

simple script to kick off gps

Abram Connelly 6 yıl önce
ebeveyn
işleme
7cdfb19e91
1 değiştirilmiş dosya ile 157 ekleme ve 0 silme
  1. 157 0
      busunit/scripts/reset-gps.py

+ 157 - 0
busunit/scripts/reset-gps.py

@@ -0,0 +1,157 @@
+#!/usr/bin/python
+#
+# Copyright (c) 2019 Clementine Computing LLC.
+#
+# This file is part of PopuFare.
+#
+# PopuFare is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# PopuFare is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with PopuFare.  If not, see <https://www.gnu.org/licenses/>.
+#
+
+import os
+import serial
+import sys
+import re
+import time
+from os import listdir
+from os.path import isfile, join
+from os import system
+
+GPS_BAUD = 115200
+FREQ_SECOND = 3
+BITMASK = 31
+
+DEVGPS = "/dev/ttyGPS"
+
+DEBUG = True
+VERBOSE = True
+
+###
+###
+
+ser = serial.Serial(DEVGPS, GPS_BAUD, bytesize=8, parity='N', stopbits=1, timeout=1, xonxoff=0, rtscts=0)
+
+if DEBUG: print "send:", "AT+CGPSINFOCFG=" + str(FREQ_SECOND) + "," + str(BITMASK) 
+
+ser.write("AT+CGPSINFOCFG=" + str(FREQ_SECOND) + "," + str(BITMASK) + "\r")
+ser.flush()
+resp = ser.readline()
+while (len(resp) > 0) and (resp[0] == '$'):
+  resp = ser.readline()
+if not  re.search(r'[aA][tT]', resp): print "WARNING: got response: '" + str(resp) + "', expecting 'OK'. continuing"
+resp = ser.readline()
+while (len(resp) > 0) and (resp[0] == '$'):
+  resp = ser.readline()
+if not  re.search(r'[oO][kK]', resp): print "WARNING: got response: '" + str(resp) + "', expecting 'OK'. continuing"
+
+if DEBUG: print "got:", resp
+
+time.sleep(1)
+
+if DEBUG: print "closing connection"
+ser.close()
+
+sys.exit(0);
+
+###
+###
+
+#if DEBUG: print "send:", "AT"
+#
+#ser.write("\rAT\r")
+#ser.flush()
+#
+#resp = ser.readline()
+#if not re.search(r'[aA][tT]', resp):
+#  print "ERROR: got response: '" + str(resp) + "', expecting 'OK', exiting"
+#  sys.exit(-1)
+#
+#resp = ser.readline()
+#if not re.search(r'[oO][kK]', resp):
+#  print "ERROR: got response: '" + str(resp) + "', expecting 'OK', exiting"
+#  sys.exit(-1)
+#
+#if DEBUG: print "got:", resp
+#
+###
+###
+
+if DEBUG: print "send:", "AT+CGPSINFOCFG=0"
+
+ser.write("AT+CGPSINFOCFG=0\r")
+ser.flush()
+resp = ser.readline()
+while (len(resp) > 0) and (resp[0] == '$'):
+  resp = ser.readline()
+if not  re.search(r'[aA][tT]', resp): print "WARNING: got response: '" + str(resp) + "', expecting 'OK'. continuing"
+resp = ser.readline()
+if not  re.search(r'[oO][kK]', resp): print "WARNING: got response: '" + str(resp) + "', expecting 'OK'. continuing"
+
+if DEBUG: print "got:", resp
+
+time.sleep(1)
+
+###
+###
+
+if DEBUG: print "send:", "AT+CGPS=0"
+
+ser.write("AT+CGPS=0\r")
+ser.flush()
+
+resp = ser.readline()
+if not  re.search(r'[aA][tT]', resp): print "WARNING: got response: '" + str(resp) + "', expecting 'OK'. continuing"
+resp = ser.readline()
+if not  re.search(r'[oO][kK]', resp): print "WARNING: got response: '" + str(resp) + "', expecting 'OK'. continuing"
+
+if DEBUG: print "got:", resp
+
+time.sleep(2)
+
+###
+###
+
+if DEBUG: print "send:", "AT+CGPS=1"
+
+ser.write("AT+CGPS=1\r")
+ser.flush()
+resp = ser.readline()
+if not  re.search(r'[aA][tT]', resp): print "WARNING: got response: '" + str(resp) + "', expecting 'OK'. continuing"
+resp = ser.readline()
+if not  re.search(r'[oO][kK]', resp): print "WARNING: got response: '" + str(resp) + "', expecting 'OK'. continuing"
+
+if DEBUG: print "got:", resp
+
+time.sleep(1)
+
+###
+###
+
+if DEBUG: print "send:", "AT+CGPSINFOCFG=" + str(FREQ_SECOND) + "," + str(BITMASK) 
+
+ser.write("AT+CGPSINFOCFG=" + str(FREQ_SECOND) + "," + str(BITMASK) + "\r")
+ser.flush()
+resp = ser.readline()
+if not  re.search(r'[aA][tT]', resp): print "WARNING: got response: '" + str(resp) + "', expecting 'OK'. continuing"
+resp = ser.readline()
+if not  re.search(r'[oO][kK]', resp): print "WARNING: got response: '" + str(resp) + "', expecting 'OK'. continuing"
+
+if DEBUG: print "got:", resp
+
+time.sleep(1)
+
+###
+###
+
+if DEBUG: print "closing connection"
+ser.close()