update: loc info get

This commit is contained in:
JackSun-qc 2022-03-29 15:09:33 +08:00
parent 9291493e1b
commit 8d98f5dd70
4 changed files with 26 additions and 32 deletions

View File

@ -81,10 +81,11 @@ class GPS(Singleton):
self.uart_obj.set_callback(gps_data_retrieve_cb)
gps_data_retrieve_queue = Queue(maxsize=8)
def gps_timer_callback(self, args):
if self.break_flag == 0:
def first_gps_timer_callback(self, args):
self.break_flag = 1
elif self.break_flag == 1:
def second_gps_timer_callback(self, args):
global gps_data_retrieve_queue
self.break_flag = 2
if gps_data_retrieve_queue is not None:
gps_data_retrieve_queue.put(0)
@ -93,7 +94,7 @@ class GPS(Singleton):
global gps_data_retrieve_queue
while self.break_flag == 0:
self.gps_timer.start(50, 1, self.gps_timer_callback)
self.gps_timer.start(50, 1, self.first_gps_timer_callback)
nread = gps_data_retrieve_queue.get()
data = self.uart_obj.read(nread).decode()
self.gps_timer.stop()
@ -103,7 +104,7 @@ class GPS(Singleton):
gga_data = ''
vtg_data = ''
while self.break_flag == 1:
self.gps_timer.start(3000, 1, self.gps_timer_callback)
self.gps_timer.start(1500, 1, self.second_gps_timer_callback)
nread = gps_data_retrieve_queue.get()
if nread:
udata = self.uart_obj.read(nread).decode()
@ -127,7 +128,7 @@ class GPS(Singleton):
quecgnss.gnssEnable(1)
while self.break_flag == 0:
self.gps_timer.start(50, 1, self.gps_timer_callback)
self.gps_timer.start(50, 1, self.first_gps_timer_callback)
data = quecgnss.read(4096)
self.gps_timer.stop()
@ -137,7 +138,7 @@ class GPS(Singleton):
vtg_data = ''
count = 0
while self.break_flag == 1:
self.gps_timer.start(3000, 1, self.gps_timer_callback)
self.gps_timer.start(1500, 1, self.second_gps_timer_callback)
gnss_data = quecgnss.read(4096)
if gnss_data and gnss_data[1]:
udata = gnss_data[1].decode() if len(gnss_data) > 1 and gnss_data[1] else ''
@ -172,7 +173,7 @@ class GPS(Singleton):
def read_location_GxRMC(self, gps_data):
rmc_re = ure.search(
r"\$G[NP]RMC,[0-9]+\.[0-9]+,A,[0-9]+\.[0-9]+,[NS],[0-9]+\.[0-9]+,[EW],[0-9]+\.[0-9]+,[0-9]+\.[0-9]+,[0-9]+,,,[ADE],[SCUV]\*[0-9]+",
r"\$G[NP]RMC,\d*\.*\d*,[AV]*,\d*\.*\d*,[NS]*,\d*\.*\d*,[EW]*,\d*\.*\d*,\d*\.*\d*,\d*,\d*\.*\d*,[EW]*,[ADEN]*,[SCUV]*\**\d*",
gps_data)
if rmc_re:
return rmc_re.group(0)
@ -180,14 +181,14 @@ class GPS(Singleton):
def read_location_GxGGA(self, gps_data):
gga_re = ure.search(
r"\$G[BLPN]GGA,[0-9]+\.[0-9]+,[0-9]+\.[0-9]+,[NS],[0-9]+\.[0-9]+,[EW],[126],[0-9]+,[0-9]+\.[0-9]+,-*[0-9]+\.[0-9]+,M,-*[0-9]+\.[0-9]+,M,,\*[0-9]+",
r"\$G[BLPN]GGA,\d*\.*\d*,\d*\.*\d*,[NS]*,\d*\.*\d*,[EW]*,[0126]*,\d*,\d*\.*\d*,-*\d*\.*\d*,M,-*\d*\.*\d*,M,\d*,\**\d*",
gps_data)
if gga_re:
return gga_re.group(0)
return ""
def read_location_GxVTG(self, gps_data):
vtg_re = ure.search(r"\$G[NP]VTG,[0-9]+\.[0-9]+,T,([0-9]+\.[0-9]+)??,M,[0-9]+\.[0-9]+,N,[0-9]+\.[0-9]+,K,[ADEN]\*\w*", gps_data)
vtg_re = ure.search(r"\$G[NP]VTG,\d*\.*\d*,T,\d*\.*\d*,M,\d*\.*\d*,N,\d*\.*\d*,K,[ADEN]*\**\d*", gps_data)
if vtg_re:
return vtg_re.group(0)
return ""
@ -195,7 +196,7 @@ class GPS(Singleton):
def read_location_GxVTG_speed(self, gps_data):
vtg_data = self.read_location_GxVTG(gps_data)
if vtg_data:
speed_re = ure.search(r",N,[0-9]+\.[0-9]+,K,", vtg_data)
speed_re = ure.search(r",N,\d+\.\d+,K,", vtg_data)
if speed_re:
return speed_re.group(0)[3:-3]
return ""
@ -204,7 +205,6 @@ class GPS(Singleton):
res = {}
data = []
gps_data = self.read()
log.debug('read_quecIot gps_data: %s' % gps_data)
r = self.read_location_GxRMC(gps_data)
if r:
data.append(r)

View File

@ -13,7 +13,7 @@
# limitations under the License.
import utime
import usr.settings as settings
from usr.settings import settings
def asyncLog(name, level, *message, timeout=None, await_connection=True):
@ -27,7 +27,8 @@ def asyncLog(name, level, *message, timeout=None, await_connection=True):
def log(name, level, *message, local_only=False, return_only=False, timeout=None):
if not settings.settings.get().get('sys', {}).get('sw_log', True):
current_settings = settings.get()
if not current_settings.get('sys', {}).get('sw_log', True):
return
if hasattr(utime, "strftime"):

View File

@ -80,17 +80,8 @@ _settings_lock = _thread.allocate_lock()
def settings_lock(func_name):
def settings_lock_fun(func):
def wrapperd_fun(*args, **kwargs):
if not _settings_lock.locked():
if _settings_lock.acquire():
source_fun = func(*args, **kwargs)
_settings_lock.release()
return source_fun
else:
print('_settings_lock acquire falied. func: %s, args: %s' % (func_name, args))
return False
else:
print('_settings_lock is locked. func: %s, args: %s' % (func_name, args))
return False
with _settings_lock:
return func(*args, **kwargs)
return wrapperd_fun
return settings_lock_fun

View File

@ -31,7 +31,7 @@ from usr.common import numiter
from usr.common import Singleton
from usr.mpower import PowerManage
from usr.logging import getLogger
from usr.location import GPS
# from usr.location import GPS
from usr.location import Location
from usr.timer import LEDTimer
@ -298,14 +298,15 @@ class SelfCheck(object):
def gps_check(self):
# return True if OK
gps = GPS(settings.default_values_sys._gps_cfg)
# gps = GPS(settings.default_values_sys._gps_cfg)
locator = Location()
retry = 0
gps_data = None
sleep_time = 1
while retry < 5:
gps_data = gps.read()
gps_data = locator.read()
if gps_data:
break
else:
@ -313,6 +314,7 @@ class SelfCheck(object):
utime.sleep(sleep_time)
sleep_time *= 2
del locator
if gps_data:
return True