fd230 EG810BG 版本所需gnss python测试脚本 2232/2
author孙春阳 <snickersun@163.com>
Fri, 12 Sep 2025 01:05:56 +0000 (09:05 +0800)
committer孙春阳 <snickersun@163.com>
Fri, 12 Sep 2025 01:05:56 +0000 (09:05 +0800)
cat1modem/src/cat1gnsscrt.py [new file with mode: 0644]

diff --git a/cat1modem/src/cat1gnsscrt.py b/cat1modem/src/cat1gnsscrt.py
new file mode 100644 (file)
index 0000000..8d7f7e8
--- /dev/null
@@ -0,0 +1,81 @@
+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)#休眠
+
+