--- /dev/null
+import utime
+import pm
+import log
+import quecgnss
+from machine import UART
+import checkNet
+import ure
+
+# 创建wakelock锁
+lpm_fd = pm.create_wakelock("pm_lock", len("pm_lock"))
+gps_init_cnt = 0
+
+'''
+log.basicConfig(level=log.INFO)
+log.set_output(UART(UART.UART0, 115200, 8, 0, 1, 0))
+logger = log.getLogger("Davon")
+'''
+
+def gnssint():
+ quecgnss.configSet(0, 5) # 设置定位星系为GPS+Beidou+Galileo
+ quecgnss.configSet(2, 1) # 打开AGPS
+ quecgnss.configSet(3, 1) #打开APFLASH
+ #quecgnss.configSet(4, 1) # 打开备电
+ ret = quecgnss.init()
+ if ret == 0:
+ print('GNSS init ok.')
+ else:
+ print('GNSS init failed.')
+def GNSSget():
+ i=0
+
+ if quecgnss.get_state() == 0:
+ ret=quecgnss.gnssEnable(1)
+ if ret==0:
+ print('gnss enable ok.')
+ else:
+ print('gnss enable failed.')
+ utime.sleep(1)
+ if quecgnss.get_state() == 2:
+ while True:
+ data = quecgnss.read(4096)
+ if data[0]>0:
+ print("{}".format(data[1].decode()))
+ if ure.search("GNRMC", data[1].decode()):
+ r = ure.search("GNRMC,(.+?),(.+?),(.+?),(.+?),(.+?),(.+?),(.+?)V", data[1].decode())
+ if ure.match(r.group(2), 'A'): # 判断有效值A确认是否定位完成
+ print("{}".format(data[1].decode()))
+ print("gnss get ok.")
+ break
+ utime.sleep(1)
+ i=i+1
+ print("gnssdatagetcount={}".format(i))
+ if i>120:
+ print("gnss get failed.outtime")
+ break
+ ret=quecgnss.gnssEnable(0)
+ if ret==0:
+ print('gnss disable ok.')
+ else:
+ print('gnss disable failed.')
+
+if __name__ == "__main__":
+
+ print('start')
+ stage, state = checkNet.wait_network_connected(30)
+ if stage == 3 and state == 1:
+ print('Network connection successful.')
+
+ # 设置自动休眠模式
+ pm.autosleep(1)
+
+ gnssint()
+ while True:
+ print('get lock')
+ pm.wakelock_lock(lpm_fd) # 添加休眠锁
+ GNSSget()
+ print('out lock')
+ pm.wakelock_unlock(lpm_fd) # 释放锁
+ utime.sleep(10)#休眠
+
+