FactoryModeLocation_screen.set_size(240, 320)
FactoryModeLocation_screen.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT)
-FactoryModeLocation_WIFI_label = lv.label(FactoryModeLocation_screen)
-FactoryModeLocation_WIFI_label.set_text("WIFI:")
-FactoryModeLocation_WIFI_label.set_size(240, 120)
-FactoryModeLocation_WIFI_label.set_pos(0, 0)
-FactoryModeLocation_WIFI_label.set_style_text_color(lv.color_make(0xff, 0xff, 0xff), lv.STATE.DEFAULT)
-FactoryModeLocation_WIFI_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
-
-FactoryModeLocation_CALL_label = lv.label(FactoryModeLocation_screen)
-FactoryModeLocation_CALL_label.set_text("CALL:")
-FactoryModeLocation_CALL_label.set_size(240, 100)
-FactoryModeLocation_CALL_label.set_pos(0, 120)
-FactoryModeLocation_CALL_label.set_style_text_color(lv.color_make(0xff, 0xff, 0xff), lv.STATE.DEFAULT)
-FactoryModeLocation_CALL_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+# FactoryModeLocation_WIFI_label = lv.label(FactoryModeLocation_screen)
+# FactoryModeLocation_WIFI_label.set_text("WIFI:")
+# FactoryModeLocation_WIFI_label.set_size(240, 120)
+# FactoryModeLocation_WIFI_label.set_pos(0, 0)
+# FactoryModeLocation_WIFI_label.set_style_text_color(lv.color_make(0xff, 0xff, 0xff), lv.STATE.DEFAULT)
+# FactoryModeLocation_WIFI_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+# FactoryModeLocation_CALL_label = lv.label(FactoryModeLocation_screen)
+# FactoryModeLocation_CALL_label.set_text("CALL:")
+# FactoryModeLocation_CALL_label.set_size(240, 100)
+# FactoryModeLocation_CALL_label.set_pos(0, 120)
+# FactoryModeLocation_CALL_label.set_style_text_color(lv.color_make(0xff, 0xff, 0xff), lv.STATE.DEFAULT)
+# FactoryModeLocation_CALL_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
FactoryModeLocation_GNSS_label = lv.label(FactoryModeLocation_screen)
FactoryModeLocation_GNSS_label.set_text("GNSS:\n")
-FactoryModeLocation_GNSS_label.set_size(240, 200)
-FactoryModeLocation_GNSS_label.set_pos(0, 220)
+FactoryModeLocation_GNSS_label.set_size(240, lv.SIZE.CONTENT)
+FactoryModeLocation_GNSS_label.set_pos(0, 0)
+FactoryModeLocation_GNSS_label.set_long_mode(lv.label.LONG.WRAP)
FactoryModeLocation_GNSS_label.set_style_text_color(lv.color_make(0xff, 0xff, 0xff), lv.STATE.DEFAULT)
FactoryModeLocation_GNSS_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
self.meta = FactoryModeLocation_screen
EventMesh.subscribe("PUSH_LOCATION_DATA",self.GET_LOCATION_DATA)
self.timer_FactoryModeLocation = osTimer()
+ self.time_count = 0
+ self.time_GNSS = 0
+ self.GNSS_status = 0
def initialization(self):
FactoryModeLocation_GNSS_label.set_text("GNSS:\n")
- FactoryModeLocation_WIFI_label.set_text("WIFI:")
- FactoryModeLocation_CALL_label.set_text("CALL:")
+ # FactoryModeLocation_WIFI_label.set_text("WIFI:")
+ # FactoryModeLocation_CALL_label.set_text("CALL:")
self.timer_FactoryModeLocation.start(1000, 1, self.timer_FactoryModeLocation_cb)
-
+ self.time_count = utime.mktime(utime.localtime())
+ self.time_GNSS = 0
+ self.GNSS_status = 0
def post_processor_after_initialization(self):
#utime.sleep_ms(1000)
EventMesh.publish(constants.EVENT.START_LOCATION_TEST) #测试模式
print("WIFI:{}".format(msg[1]))
print("CALL:{}".format(msg[2]))
EventMesh.publish("system_sleep_rest")#防止黑屏
+ _DATA = ""
+ time_tmp = utime.mktime(utime.localtime())
+
+
+ if len(msg[0]) > 1 : #GPS
+ GNSS_DATA = "GNSS:------\n"
+
+ _DATA += "定位时间:{} {}秒\n".format(self.time_GNSS,time_tmp-self.time_count)
+ rmc_data = msg[0][1].split("RMC")
+ gsv_data = msg[0][1].split("GSV")
+ if len(rmc_data) >= 2 :
+ rmc_data = rmc_data[1:]
+ rmc_tmp = rmc_data[0].split(",")
+ if len(rmc_tmp) >= 2:
+ GNSS_DATA = GNSS_DATA + "{},{},{}\n".format(rmc_tmp[2],rmc_tmp[3],rmc_tmp[5])
+ if rmc_tmp[2] == 'A':
+ if self.GNSS_status == 0:
+ self.time_GNSS = time_tmp-self.time_count
+ self.GNSS_status = 1
+
+ if len(gsv_data) >= 2 :
+ gsv_data = gsv_data[1:]
+ GSV_dict= {}
+ for i in range(len(gsv_data)) :
+ gsv_data[i] = gsv_data[i].split("\r\n")[0]
+ gsv_tmp = gsv_data[i].split(",")
+ if len(gsv_tmp) < 7 :
+ break
+ gsv_tmp = gsv_tmp[4:]
+ #print("gsv_tmp:{}".format(gsv_tmp))
+ for i in range(len(gsv_tmp)) :
+ if i % 4 == 0:
+ GSV_dict[gsv_tmp[i]] = gsv_tmp[i+3]
+ print("GSV_dict:{}:[{}]".format(gsv_tmp[i],gsv_tmp[i+3]))
+ if len(gsv_tmp)-i < 4:
+ break
+ count = 0
+ for key in GSV_dict :
+ #print("GSV_dict[key]:len:{}".format(len(GSV_dict[key])))
+ if len(GSV_dict[key]) >= 1 :
+ GNSS_DATA+=" {:<3}:[{:<3}] \n".format(key,GSV_dict[key])#:<3 宽度为3左对齐
+ count+=1
+ if count > 14:
+ break
+ print("GxGSV:{}".format(GNSS_DATA))
+ _DATA += GNSS_DATA
+ #FactoryModeLocation_GNSS_label.set_text(GNSS_DATA)
if msg[1] != [] : #WIFI
WIFI_len = len(msg[1][1])
- WIFI_DATA = "WIFI:"
+ _DATA += "WIFI:------\n"
if WIFI_len > 3:
WIFI_len = 3
for i in range(WIFI_len) :
- WIFI_DATA += "{}".format(msg[1][1][i])
- FactoryModeLocation_WIFI_label.set_text(WIFI_DATA)
-
- if len(msg[0]) > 1 : #GPS
- GNSS_DATA = "GNSS:\n"
-
- gsv_data = msg[0][1].split("GSV")
- if len(gsv_data) < 2 :
- return
- gsv_data = gsv_data[1:]
-
- GSV_dict= {}
- for i in range(len(gsv_data)) :
- gsv_data[i] = gsv_data[i].split("\r\n")[0]
- gsv_tmp = gsv_data[i].split(",")
- if len(gsv_tmp) < 7 :
- break
- gsv_tmp = gsv_tmp[4:]
- #print("gsv_tmp:{}".format(gsv_tmp))
- for i in range(len(gsv_tmp)) :
- if i % 4 == 0:
- GSV_dict[gsv_tmp[i]] = gsv_tmp[i+3]
- #print("GSV_dict:{}:[{}]".format(gsv_tmp[i],gsv_tmp[i+3]))
- if len(gsv_tmp)-i < 4:
- break
- count = 0
- for key in GSV_dict :
- print("GSV_dict[key]:len".format(len(GSV_dict[key])))
- if len(GSV_dict[key]) >= 1 :
- GNSS_DATA+=" {:<3}:[{:<3}] ".format(key,GSV_dict[key])#:<3 宽度为3左对齐
- count+=1
- if count%2 == 0:
- GNSS_DATA+="\n"
- if count > 14:
- break
- print("GxGSV:{}".format(GNSS_DATA))
- FactoryModeLocation_GNSS_label.set_text(GNSS_DATA)
+ _DATA += "{}".format(msg[1][1][i])
if msg[2] != [] :#基站
#print("CALL data:".format(msg[2][0]))
if len(msg[2]) >= 2 :
- FactoryModeLocation_CALL_label.set_text("CALL:{}".format(msg[2][0]))
+ _DATA += "CALL:------\n{}".format(msg[2][0])
+ #FactoryModeLocation_CALL_label.set_text("CALL:{}".format(msg[2][0]))
+ print("GET_LOCATION_DATA:data:{}".format(_DATA))
+ FactoryModeLocation_GNSS_label.set_text(_DATA)
def Close(self):
EventMesh.publish(constants.EVENT.CLOSE_LOCATION)
self.timer_FactoryModeLocation.stop()
from misc import USB, Power, ADC
from machine import ExtInt, Pin,Timer,RTC,UART
import EventMesh
+import usys
import audio
from machine import I2C
from Gsensor import SC7A20
self.no_smi_state = 0
self.charge_full_count = 0
-
+ self.GPS_step_t = 0#记录步数
self.usb = USB()
self.usb.setCallback(self.usb_event_cb)
self.log = LogAdapter(self.__class__.__name__)
def post_processor_after_instantiation(self):
print("post_processor_after_instantiation:1")
"""订阅此类所有的事件到 EventMesh中"""
+ voiceCall.setCallback(voice_callback)
EventMesh.subscribe("screen_get_ope", self.get_device_ope)
EventMesh.subscribe("screen_get_sig", self.get_signal)
EventMesh.subscribe("screen_get_time", self.get_time)
EventMesh.subscribe("about_get_imei", self.get_imei)
EventMesh.subscribe("about_get_iccid", self.get_ic_cid)
+ EventMesh.subscribe("get_sim_Status", self.get_sim_Status)
EventMesh.subscribe("about_get_phonenum", self.get_phone_num)
EventMesh.subscribe("screen_get_battery", self.get_battery)
EventMesh.subscribe("set_curr_battery_level", self.set_curr_battery_level)
#EventMesh.publish(constants.EVENT.START_HEART)
# 设备开机立刻更新一次参数
self.publish_event_cb()
+
print("post_processor_after_instantiation:3")
def publish_message_event_DeviceInfo(self,event,msg):
data["func"](data["data"])
except Exception as e:
print("DeviceInfo_queue_thread:ERROR:{}".format(e))
+ usys.print_exception(e)
def gsensor_cb(self, para):
EventMesh.publish("publish_message_event_DeviceInfo",{"func":self.publish_event,"data":0})
def publish_event(self,data):
"""
- 主动推送事件
+ 定时事件处理
:param args:
:param kwargs:
:return:
# EventMesh.publish("time", self.get_time())
# EventMesh.publish("battery", self.get_battery())
# EventMesh.publish("signal", self.get_signal())
-
+
self.timer_push = 0
date_tmp = utime.localtime()
time_tmp = utime.mktime(date_tmp)
# print("date_tmp......01....{} time_tmp:{}\r\n".format(date_tmp,time_tmp))
+
+
EventMesh.publish("countdown_end_cb")
+ """定时检查是否关闭gps失败"""
gnss_state = quecgnss.get_state()
get_location_flag = EventMesh.publish("get_location_flag")
if get_location_flag != None:
if gnss_state == 2 and get_location_flag == 0:
EventMesh.publish(constants.EVENT.GPSCLOSE)
+ """7分钟一次心跳"""
if math.fabs(time_tmp - self.KA_time) > 7*60: #7分钟一次心跳
self.KA_time = time_tmp
EventMesh.publish(constants.PROTOCOL.KA_SEND)
+
+ """定时定位"""
self.upload_time = EventMesh.publish("get_upload_data")
#print("self.upload_time:{} math.fabs(time_tmp - self.UD_time):{}".format(self.upload_time,math.fabs(time_tmp - self.UD_time)))
- if self.upload_time != None:
+ if self.upload_time != None :
if math.fabs(time_tmp - self.UD_time) > self.upload_time: #30分钟一次定位
self.UD_time = time_tmp
- if EventMesh.publish(constants.EVENT.GET_CONNECT) == 1:
+ step_tmp = self.gsensor.get_step()
+ if EventMesh.publish(constants.EVENT.GET_CONNECT) == 1 and step_tmp - self.GPS_step_t > 3:
EventMesh.publish(constants.EVENT.START_LOCATION,constants.PROTOCOL.UD_SEND) #开始UD定位
+ self.GPS_step_t = step_tmp#记录步数
EventMesh.publish(constants.EVENT.PUSH_STEP, self.get_step_count())
+ """电池平均值"""
temp = Power.getVbatt()
-
if self.bat_count < 10:
self.vbat_buf.append(temp)
self.bat_count += 1
for i in range(9):
self.vbat_buf[i] = self.vbat_buf[i+1]
self.vbat_buf[9] = temp
-
curr_count = len(self.vbat_buf)
bat_total_value = 0
for i in range(curr_count):
bat_total_value += self.vbat_buf[i]
-
bat_total_value = bat_total_value//curr_count#一分钟更新一次电量 10个平均值
-
EventMesh.publish("set_curr_battery_level",bat_total_value)
# print("self.vbat_buf:{} curr_count :{} bat_total_value:{} temp:{}".format(self.vbat_buf,curr_count,bat_total_value,temp))
-
-
bat_tmp = EventMesh.publish("screen_get_battery")
self.vbat_count+=10
if self.vbat_count >= 60:
if bat_value <= 0:
EventMesh.publish("load_screen", {"screen": "LOW_ONE_POWER"})
- self.get_hr_state = EventMesh.publish("get_hr_state")
- self.get_spo2_state = EventMesh.publish("get_spo2_state")
+ """"隔天清步数"""
hour = 0
min = 0
hour = date_tmp[3]
min = date_tmp[4]
-
old_Timesec = EventMesh.publish("get_old_time_data")
if old_Timesec != None:
data = RTC().datetime()
if spo2 != 0:
EventMesh.publish("set_old_spo2_data", 0)
EventMesh.publish("set_old_time_data",time_tmp)
-
if hour == 0:#清步数
if min <= 1:
if self.clear_step == 0:
if self.clear_step == 1:
self.clear_step = 0
- #电量小于20% 5分钟提醒一次
+ """电量小于20% 5分钟提醒一次"""
get_low_btn = EventMesh.publish("get_low_bat_btn")#
battery = EventMesh.publish("screen_get_battery")
# print("get_low_btn:{} self.bat_time:{}".format(get_low_btn,self.bat_time))
else:
self.bat_time = 0
- #消息已满
+ """未联网提示关机"""
+ if EventMesh.publish(constants.EVENT.GET_CONNECT) == 0:#未联网提示关机
+ if battery[0] == "0":
+ self.no_smi_count+=10
+ if self.no_smi_count > (15*60) and self.no_smi_state == 0:
+ self.no_smi_count = 0
+ self.no_smi_state = 1
+ EventMesh.publish("load_screen", {"screen": "no_sim_auto_screen"})
+ else:
+ self.no_smi_count = 0
+ self.no_smi_state = 0
+ else:
+ self.no_smi_count = 0
+ self.no_smi_state = 0
+ if battery[0] == "1":
+ if battery[1] >= 100:
+ if self.charge_full_count > 60 and self.charge_full_count % (60*10) == 0:#每十分钟提醒一次
+ EventMesh.publish("load_screen", {"screen": "charge_full"})
+ self.charge_full_count+=10
+ else:
+ self.charge_full_count = 0
+
+ """检测短信已满,提示是否清掉"""
msg_nums = sms.getMsgNums() #获取短信条数
if(msg_nums != -1):
sms_data = sms.getSaveLoc()
else:
self.sms_full_flag = 0
+ """定时测量心率,血氧,体温"""
WEAR = EventMesh.publish(constants.EVENT.GET_WEAR)#佩戴数据
+ self.get_hr_state = EventMesh.publish("get_hr_state")
+ self.get_spo2_state = EventMesh.publish("get_spo2_state")
get_temp_time = EventMesh.publish("get_temp_time")
get_temp_state = EventMesh.publish("get_temp_state")
hr_time = {}
self.old_time = 0
self.set_hsenor_crt = 0
- voiceCall.setCallback(voice_callback)
- if EventMesh.publish(constants.EVENT.GET_CONNECT) == 0:#未插卡提示关机
- if battery[0] == "0":
- self.no_smi_count+=10
- if self.no_smi_count > (15*60) and self.no_smi_state == 0:
- self.no_smi_count = 0
- self.no_smi_state = 1
- EventMesh.publish("load_screen", {"screen": "no_sim_auto_screen"})
- else:
- self.no_smi_count = 0
- self.no_smi_state = 0
- else:
- self.no_smi_count = 0
- self.no_smi_state = 0
- if battery[0] == "1":
- if battery[1] >= 100:
- if self.charge_full_count > 60 and self.charge_full_count % (60*10) == 0:#每十分钟提醒一次
- EventMesh.publish("load_screen", {"screen": "charge_full"})
- self.charge_full_count+=10
- else:
- self.charge_full_count = 0
+
#quecgnss.gnssEnable(0)
-
-
+ def get_sim_Status(self, event, msg):
+ return sim.getStatus()
def get_device_ope(self, event, msg):
"""
获取设备运营商信息
if (self.gps_data == [] or self.location_type == 1) and quecgnss.get_state() == 2:
self.gps.__gps_nmea_data_clean()
data = quecgnss.read(4096)
- #print(data[1].decode())
+ #print("location data:{}".format(data[1].decode()))
if data[0] > 0 : #有数据
match_gga_data = self.match.GxGGA(data[1]).split(",")
match_gsv_data = self.match.GxGSV(data[1]).split(",")
if self.location_type == 1: #测试模式
EventMesh.publish("PUSH_LOCATION_DATA", [data,self.wifi_data,self.cell_data])
elif self.location_type == 0: #正常模式
- if self.gps_data != [] or self.location_timer_count > 60: #or( self.wifi_data != [] and self.cell_data != []):
+ if self.gps_data != [] or self.location_timer_count > 70: #or( self.wifi_data != [] and self.cell_data != []):
self.Location_send([self.gps_data,self.wifi_data,self.cell_data])
EventMesh.publish(constants.EVENT.CLOSE_LOCATION)#关闭定位
#break
else :
utime.sleep_ms(2000)
except Exception as e:
+ usys.print_exception(e)
utime.sleep_ms(1000)
print("location_thread:ERROR:{}\r\n{}".format(e,Exception))
print("self.gps_data{},self.wifi_data{},self.cell_data{}".format(self.gps_data,self.wifi_data,self.cell_data))
def save_msg_name(self, event, msg):
self.msg_name = str(msg)
+ print("save_msg_name:msg".format(msg))
def save_msg_content(self, event, msg):
self.msg_content = str(msg)
+ print("save_msg_content:msg".format(msg))
def get_msg_content(self, event, msg):
return self.msg_content