self.location_thread_id = 0
self.location_queue = Queue(100)
self.lpm_fd = None
+ self.start_agps = 0
#quecgnss.init()
#quecgnss.gnssEnable(0)
@staticmethod
self.cell_data = []
gnss_r_data = []
self.GSV_sig_ok_count = 0
+ self.GSV_sig_very_ok_count = 0
self.GGA_count = 0
self.RMC_A_count = 0
+ # if self.start_agps == 1: #开启agps
+ # self.start_agps = 0
+ # quecgnss.configSet(2,1)
if self.lpm_fd == None:
self.lpm_fd = pm.create_wakelock("test_lock", len("test_lock"))
pm.wakelock_lock(self.lpm_fd)
# if self.location_check_data_timer_count >= 3:
# pm.autosleep(0)#唤醒
# pm.sclkEx_set(0, 1, 5)
- if self.location_check_data_timer_count >= 5 :#5秒查一次基站数据和wifi数据
+ if self.location_check_data_timer_count >= 3 :#3秒查一次基站数据和wifi数据
self.location_check_data_timer_count = 0
#print(self.location_timer_count)
GSV_dict= {}
#gnss_r_data = [0,1]
gnss_r_data = quecgnss.read(4096)
#EventMesh.txt_log("gps Datalen:{}".format(gnss_r_data[0]))
- # print("location gnss_r_data:len{}\n{}".format(gnss_r_data[0],gnss_r_data[1].decode()))
+ print("location gnss_r_data:len{}\n{}".format(gnss_r_data[0],gnss_r_data[1].decode()))
#print("gnss_r_data len:{}".format(gnss_r_data[0]))
if gnss_r_data[0] > 0 : #有数据
tmp_ok_count = 0
+ tmp_very_ok_count = 0
gsv_data = gnss_r_data[1].split("GSV")
if len(gsv_data) >= 2 :
#print("gsv_tmp[i+3]:{}".format(gsv_tmp[i+3]))
if gsv_tmp[i+3] != "" :
if int(gsv_tmp[i+3])>=20:
- tmp_ok_count +=1
+ tmp_ok_count +=1
+ if int(gsv_tmp[i+3])>=30:
+ tmp_very_ok_count +=1
+
except Exception as e:
usys.print_exception(e)
#print("GSV_dict:{}:[{}]".format(gsv_tmp[i],gsv_tmp[i+3]))
if(tmp_ok_count > self.GSV_sig_ok_count ):
self.GSV_sig_ok_count = tmp_ok_count
-
-
+ if(tmp_very_ok_count > self.GSV_sig_very_ok_count ):
+ self.GSV_sig_very_ok_count = tmp_very_ok_count
+
# if len(match_gga_data) > 8:
# #print(match_gga_data)
# if(match_gga_data[7] ):
EventMesh.txt_log("GGA:{}".format(match_gga_data))
# EventMesh.txt_log("VTG:{}".format(match_vtg_data))
# EventMesh.txt_log("RMC:{}".format(match_rmc_data))
- # EventMesh.txt_log("timer:{} ok_count:{} count:{}\n".format(self.location_timer_count,self.GSV_sig_ok_count,self.GGA_count))
+ #EventMesh.txt_log("timer:{} ok:{} very_ok:{}".format(self.location_timer_count,self.GSV_sig_ok_count,self.GSV_sig_very_ok_count))
print("LOCATION_ok :time:{}!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n\n\n".format(self.location_timer_count))
gps_date = "%s,%s"%(match_rmc_data[9],match_rmc_data[1][:6])#日期
gps_data_tmp = self.gps.read_coordinates(gnss_r_data[1])
elif self.location_type == 0: #正常模式
if self.gps_data != {} or self.location_timer_count > 100: #or( self.wifi_data != [] and self.cell_data != []):
if self.location_queue.empty() == False:#有定位队列
- EventMesh.txt_log("LOCATION:timer:{} ok_count:{} ".format(self.location_timer_count,self.GSV_sig_ok_count))
- upload_time = EventMesh.publish("get_upload_data")
-
-
+ EventMesh.txt_log("LOCATION timer:{} ok:{} very_ok:{}".format(self.location_timer_count,self.GSV_sig_ok_count,self.GSV_sig_very_ok_count))
+ #EventMesh.txt_log("LOCATION:timer:{} ok_count:{} ".format(self.location_timer_count,self.GSV_sig_ok_count))
+ if self.gps_data == {}: #定位超时,且信噪比多个大于30,下次启动agps
+ if self.GSV_sig_very_ok_count > 3:#3个超30以上
+ self.start_agps = 1
+ EventMesh.txt_log("open agps:{}".format(GSV_dict))
+ #upload_time = EventMesh.publish("get_upload_data")
self.Location_send([self.gps_data,self.wifi_data,self.cell_data])
#if upload_time > 200 :
EventMesh.publish(constants.EVENT.CLOSE_LOCATION)#关闭定位
if self.GSV_sig_ok_count <= 1 and self.wifi_data != [] and self.cell_data != [] and self.location_timer_count > 20: #超过40秒且信号大于30的不足3个
EventMesh.publish(constants.EVENT.CLOSE_LOCATION)#关闭定位
- EventMesh.txt_log("GSV_sig_ok_count<3:timer:{} ok_count:{} count:{}".format(self.location_timer_count,self.GSV_sig_ok_count,self.GGA_count))
+ EventMesh.txt_log("GSV_sig_ok_count<3:timer:{} ok_count:{} ".format(self.location_timer_count,self.GSV_sig_ok_count))
self.Location_send([self.gps_data,self.wifi_data,self.cell_data])
#break
# if self.location_type != 1 and self.location_timer_count >= 60*4 : #4分钟关闭