#include <stdint.h>
#include <stdbool.h>
#include "helios_debug.h"
-#define HX3918_DEBUG 0
+#define HX3918_DEBUG 1
#if HX3918_DEBUG == 1
#define HX3918_LOG(msg, ...) custom_log("HX3918", msg, ##__VA_ARGS__)
#else
hx3918_delay(5);
hx3918_write_reg(0x4d, 0x00); //release
hx3918_delay(5);
+ #ifdef SAR_ALG_LIB
+ hx3918_prox_reg_init();
+#endif
+
read_fifo_first_flg = 1;
}
int32_t *PPG_buf = &(s_dat->green_data[0]);
int32_t *ir_buf = &(s_dat->ir_data[0]);
int32_t *s_buf = &(s_dat->s_buf[0]);
- s_dat->green_cur = calReg.led_cur;
//int32_t *sar_lp_data = &s_dat->sar_data;
int32_t ps_data[4]= {0};
int32_t ps_green_data = 0;
uint8_t data_count = 0;
+ uint8_t i=0;
+ s_dat->green_cur = calReg.led_cur;
if (!s_ppg_state || s_cal_state)
{
- return NULL;
+ return 0;
}
read_data_packet(ps_data);
data_count = hx3918_read_fifo_data(s_buf,2,1);
s_dat->count = data_count;
HX3918_LOG("hx3918_hrs_read data_count:%d\r\n ",data_count);
- for (uint8_t i=0; i<data_count; i++)
+ for ( i=0; i<data_count; i++)
{
PPG_src_data = s_buf[i*2+1];
Ir_src_data = s_buf[i*2];
static uint8_t data_updata_ready = 0;
+static uint8_t data_convert_ready = 0;
uint8_t is_factory_mode = 0; // 产测模式, 用来读取整机对空时OFFSET和对空的nv_base值;
uint8_t is_offset_manual = 0; // = 0自动校准模式, 用来读取整机对空时OFFSET和对空的nv_base值;
static bool cap_enable = true;
{
int16_t lpout;
hx3918_write_offset(offset,chx_offset);
- hx3918_delay(52);
+ hx3918_delay(32);
lpout = hx3918_read_diff_lp(chx_offset);
- hx3918_delay(53);
+ hx3918_delay(33);
lpout = hx3918_read_diff_lp(chx_offset);
return lpout;
}
recordoffset = mid-1;
}
cnt ++;
+ if(cnt > 20)
+ break;
+ HX3918_LOG(" hx3918_read_offset cnt=%d,recordoffset =%d writeoffset=%d\r\n",cnt,recordoffset,writeoffset);
}
else
{
offset = mid;
- TYHX_LOG(" final ch=%d,offset =%d lp=%d\r\n",chx_offset,offset,lp);
+ HX3918_LOG(" final ch=%d,offset =%d lp=%d\r\n",chx_offset,offset,lp);
break;
}
//TYHX_LOG(" ch=%d,lp =%d,writeoffset=%d,recordoffset=%d\r\n",chx_offset,lp,writeoffset,recordoffset);
{
bool write_ok = true;
data_updata_ready = 0;
+ data_convert_ready = 0;
//prf 默认25HZ
// if (hx3918_chip_id != PROX_CHIPID)
// {
#ifdef INDEPENDDENT_CH //
write_ok &= hx3918_write_reg(0x55,0x0C); //CS1->CH0
- write_ok &= hx3918_write_reg(0x55,0x03); //CS0->CH0
+ write_ok &= hx3918_write_reg(0x57,0x03); //CS0->CH1
// write_ok &= hx3918_write_reg(0x57,0x30); //CS2->CH1
// write_ok &= hx3918_write_reg(0x57,0x03); //CS0->CH1
- write_ok &= hx3918_write_reg(0x57,0x0c); //CS1->CH1
+ //write_ok &= hx3918_write_reg(0x57,0x0c); //CS1->CH1
#elif defined(DIFFERENCE_CH) //?????????????¨, ???????·??
// write_ok &= hx3918_write_reg(0x55,0x2c); //CS1->CH0[P],CS2->CH0[N]
data_updata_ready = 0;
}
- if (data_updata_ready == 1&& (glp[0] != gbl[0]))
+ if (data_convert_ready == 1&& (glp[0] != gbl[0]))
{
if (is_offset_manual == 0)
{
gdiff[0] = glp[0]- nv_base_data[0];
}
gdiff[1] = glp[1]- gbl[1];
-
+ data_updata_ready = 1;
hx3918_update_min_nv_data(gbl[0]);
}
if ((glp[0] == gbl[0]) && (glp[0] != 0) && is_offset_manual ==1)
{
- if (data_updata_ready == 0)
+ if (data_convert_ready == 0)
{
// 恢复寄存器
hx3918_write_reg(0x9c,0x07); // lp_out_delta_bypass
//hx3918_write_reg(0x85,0x0f); // prox_int_high_num_i2c
//hx3918_write_reg(0xa3,0xff); //lp_out_delta_thres_ch1[7:0]
//hx3918_write_reg(0xa4,0x0f); // lp_out_delta_thres_ch1[11:8]
- hx3918_write_reg(0x70,0x99); // RA_UP_ALP_1_0_CFG
- data_updata_ready = 1;
- HX3918_LOG("data_updata_ready == 1\r\n");
+ hx3918_write_reg(0x70,0x00); // RA_UP_ALP_1_0_CFG
+ data_convert_ready = 1;
+ TYHX_LOG("data_convert_ready == 1\r\n");
}
}
if(gdiff[0]>sar_wear_thres)
for (i = 0; i<5; i++)
{
hx3918_chip_id = hx3918_check_device_id();
- TYHX_LOG(" power restart ,prox device_id is : 0x%.2x !\r\n", hx3918_chip_id);
+ HX3918_LOG(" power restart ,prox device_id is : 0x%.2x !\r\n", hx3918_chip_id);
if (hx3918_chip_id == PROX_CHIPID)
{
hx3918_write_reg(0x18,0x40); //prf =100HZ
if(hx3918_chip_id != PROX_CHIPID)
{
- TYHX_LOG("no proximity device\r\n");
+ HX3918_LOG("no proximity device\r\n");
hx3918_power_down();
}
return ret;
// int16_t lp[2] = {0};
//uint8_t device_id = 0x00;
is_offset_manual = 0;
+ HX3918_LOG("hx3918_prox_factory_hanging_cali0\n");
hx3918_prox_factory_init();
+ HX3918_LOG("hx3918_prox_factory_hanging_cali1\n");
hx3918_delay(50);//delay 100ms
-
+ HX3918_LOG("hx3918_prox_factory_hanging_cali2\n");
prox_factory_offset0 = hx3918_read_offset(WEAR_CH);
prox_factory_offset1 = hx3918_read_offset(REF_CH);
-
+ HX3918_LOG("hx3918_prox_factory_hanging_cali3\n");
prox_factory_lp[0] = hx3918_read_diff_lp(WEAR_CH);
prox_factory_lp[1] = hx3918_read_diff_lp(REF_CH);
nv_wear_offset[1] = prox_factory_offset1;
nv_base_data[0] = prox_factory_lp[0];
nv_base_data[1] = prox_factory_lp[1];
- HX3918_LOG("base0,base1= %d %d\r\n", glp[0],glp[1]);
+ HX3918_LOG("base0,base1= %d %d\r\n", prox_factory_lp[0],prox_factory_lp[1]);
#ifdef DIFFERENCE_CH
//将差分数据读到的OFFSET, NV_BASE记录到FLASH里面, 校准存储把自学习的记录也需要清掉重新计算
#define READ_DEVATION 845
#elif defined(FULL375PF)
#define READ_DEVATION 560
-#elif defined(FULL375PF)
-#define READ_DEVATION 420
#elif defined(FULL50PF)
#define READ_DEVATION 420
#endif
hx3918_delay(5);
hx3918_write_reg(0X4d,0X00); //release
hx3918_delay(5);
-
+
+#ifdef SAR_ALG_LIB
+ hx3918_prox_reg_init();
+#endif
read_fifo_first_flg = 1;
}
return true;
}
}
+ else{
+
+ if (spo2_wear_status == MSG_SPO2_INIT )
+ {
+ spo2_wear_status = MSG_SPO2_NO_WEAR;
+ spo2_wear_status_pre = MSG_SPO2_NO_WEAR;
+ }
+ }
+
return false;
}
int32_t Green_src_data;
int32_t Amb_data;
bool recal = false;
+uint8_t i=0;
int32_t *green_buf = &(s_dat->green_data[0]);
int32_t *red_buf = &(s_dat->red_data[0]);
int32_t *ir_buf = &(s_dat->ir_data[0]);
int32_t *s_buf = &(s_dat->s_buf[0]);
//int32_t *sar_lp_data = &s_dat->sar_data;
+ uint8_t data_count = 0;
s_dat->green_cur = calReg.green_cur;
s_dat->red_cur = calReg.red_cur;
s_dat->ir_cur = calReg.ir_cur;
- uint8_t data_count = 0;
if (!s_ppg_state || s_cal_state)
{
- return NULL;
+ return 0;
}
data_count = hx3918_read_fifo_data(s_buf,4,1);
//*sar_lp_data = hx3918_read_sar_data();
s_dat->count = data_count;
- TYHX_LOG("\r\n spo2 ir data: ");
- for (uint8_t i=0; i<data_count; i++)
+
+ for ( i=0; i<data_count; i++)
{
Amb_data = s_buf[i*4];
Green_src_data = s_buf[i*4+2];
TYHX_LOG("spo2 unwear data %d\r\n: ",calReg.ir_idac);
if(hx3918_spo2_check_unwear())
{
- return NULL;
+ return 0;
}
}
else
TYHX_LOG("spo2 check wear data %d\r\n: ",Ir_src_data-Amb_data);
if(hx3918_spo2_check_wear(Ir_src_data-Amb_data))
{
- return NULL;
+ return 0;
}
}
ports/quectel/core/source/modHsensor.c \
ports/quectel/core/source/modHsensor_GH3018.c \
ports/quectel/core/source/modHsensor_HX3918.c \
+ ports/quectel/core/source/modgpio_encoder.c \
ports/quectel/core/source/modVideoCall.c \
ports/quectel/core/source/modVideoCall_juphoon.c \
ports/quectel/core/source/modrsa.c \
mp_sched_schedule_ex(&cb_msg->callback, mp_obj_new_int(cb_msg->state));
}
break;
+ #if MICROPY_QPY_MODULE_GPIO_ENCODER
+ case CALLBACK_TYPE_ID_ENCODER:
+ {
+ st_CallBack_Encoder *cb_msg = (st_CallBack_Encoder *)msg.msg;
+ arg = mp_obj_new_int(cb_msg->spin_direct);
+ mp_sched_schedule_ex(&cb_msg->callback, arg);
+ }
+ break;
+ #endif
#if MICROPY_QPY_MODULE_BT
case CALLBACK_TYPE_ID_BT:
{
#endif
CALLBACK_TYPE_ID_TP,
CALLBACK_TYPE_ID_Gsensor,
+#if MICROPY_QPY_MODULE_GPIO_ENCODER
+ CALLBACK_TYPE_ID_ENCODER,
+#endif
#if MICROPY_QPY_MODULE_BT
CALLBACK_TYPE_ID_BT,
#endif
uint8_t state;
c_callback_t callback;
}st_CallBack_Gsensor;
-
+typedef struct{
+ uint32_t spin_direct;
+ c_callback_t callback;
+}st_CallBack_Encoder;
typedef struct{
uint8_t pin_no;
uint8_t edge;
// Helios_GPIO_SetLevel(g_HX3918->power, HELIOS_LVL_HIGH);
// Helios_msleep(20);
// hx3918_init(WEAR_MODE);//打开佩戴检测
+ HX3918_LOG("HX3918_test: hx3918_prox_factory_hanging_cali\r\n");
#ifdef SAR_ALG_LIB
+ //hx3918_prox_init();
hx3918_prox_factory_hanging_cali();
#endif
}
}
void HX3918_restart(void)
{
+ // Helios_GPIO_SetLevel(g_HX3918->power, HELIOS_LVL_LOW);
+ // Helios_msleep(50);
+ // Helios_GPIO_SetLevel(g_HX3918->power, HELIOS_LVL_HIGH);
+ // Helios_msleep(50);
+
Helios_GPIO_SetLevel(g_HX3918->power, HELIOS_LVL_LOW);
- Helios_msleep(50);
+ Helios_msleep(10);
Helios_GPIO_SetLevel(g_HX3918->power, HELIOS_LVL_HIGH);
- Helios_msleep(50);
+ Helios_GPIO_SetLevel(31, HELIOS_LVL_LOW);
+ Helios_msleep(20);
+ Helios_GPIO_SetLevel(31, HELIOS_LVL_HIGH);
+ Helios_msleep(20);
}
//关闭hsensor
STATIC mp_obj_t mp_HX3918_close(mp_obj_t self_in)
--- /dev/null
+#include <stdint.h>
+#include <stdio.h>
+#include <string.h>
+
+#include "obj.h"
+#include "runtime.h"
+#include "mperrno.h"
+
+#include "mpconfigboard.h"
+#if MICROPY_QPY_MODULE_GPIO_ENCODER
+
+#include "helios_debug.h"
+#include "helios_extint.h"
+#include "helios_gpio.h"
+#include "modgpio_encoder.h"
+#include "callbackdeal.h"
+
+#define HELIOS_ENCODER_LOG(msg, ...) custom_log("gpio codec", msg, ##__VA_ARGS__)
+
+#define STEP_RIGHT 1
+#define STEP_LEFT 2
+
+
+char first_line = 0; //第一次跳变的线(A 0r B)
+char first_line_edge = 0; //跳边沿
+int gpio_a = 0;
+int gpio_b = 0;
+int step1_switch = 0;
+static c_callback_t *usr_callback = NULL;
+static c_callback_t cb = {0};
+
+/* 定义encoder_obj_t结构体 */
+typedef struct _encoder_obj_t
+{
+ mp_obj_base_t base; //定义的对象结构体要包含该成员
+}encoder_obj_t;
+
+void knob_line_A_detection(void)
+{
+ step1_switch = 0;
+ if (Helios_GPIO_GetLevel(gpio_a) == 0) //A线产生下降沿
+ {
+ if (first_line == 'B')
+ {
+ if (first_line_edge == 0)
+ {
+ first_line = 0;
+ //先B下降沿,然后A下降沿,判断为逆时针转动一次
+ step1_switch = STEP_RIGHT;
+ }
+ else
+ {
+ //先B上升沿,然后A下降沿,判断为顺时针转动一次
+ first_line = 0;
+ step1_switch = STEP_LEFT;
+ }
+ }
+ else
+ {
+ //首次A下降沿
+ first_line = 'A';
+ first_line_edge = 0;
+ }
+ }
+ else //A线产生上升沿
+ {
+ if (first_line == 'B')
+ {
+ if (first_line_edge == 0)
+ {
+ //先B下降沿,然后A上升沿,判断为顺时针转动一次
+ first_line = 0;
+ step1_switch = STEP_LEFT;
+ }
+ else
+ {
+ first_line = 0;
+ //先B上升沿,然后A上升沿,判断为逆时针转动一次
+ step1_switch = STEP_RIGHT;
+ }
+ }
+ else
+ {
+ //首次A上升沿
+ first_line = 'A';
+ first_line_edge = 1;
+ }
+ }
+ if (usr_callback && step1_switch) {
+ st_CallBack_Encoder *encoder_int = malloc(sizeof(st_CallBack_Encoder));
+ if(NULL != encoder_int) {
+ encoder_int->spin_direct = step1_switch;
+ encoder_int->callback = cb;
+ qpy_send_msg_to_callback_deal_thread(CALLBACK_TYPE_ID_ENCODER, encoder_int);
+ }
+ }
+ Helios_ExtInt_Enable((Helios_GPIONum)gpio_a);
+}
+
+void knob_line_B_detection(void)
+{
+ step1_switch = 0;
+ if (Helios_GPIO_GetLevel(gpio_b) == 0) //B线产生下降沿
+ {
+ if (first_line == 'A')
+ {
+ if (first_line_edge == 0)
+ {
+ first_line = 0;
+ //先A下降沿,然后B下降沿,判断为顺时针转动一次
+ step1_switch = STEP_LEFT;
+ }
+ else
+ {
+ //先A上升沿,然后B下降沿,判断为逆时针转动一次
+ first_line = 0;
+ step1_switch = STEP_RIGHT;
+ }
+ }
+ else
+ {
+ //首次B上升沿
+ first_line = 'B';
+ first_line_edge = 0;
+ }
+ }
+ else //B线产生上升沿
+ {
+ if (first_line == 'A')
+ {
+ if (first_line_edge == 0)
+ {
+ //先A下降沿,然后B上升沿,判断为逆时针转动一次
+ first_line = 0;
+ step1_switch = STEP_RIGHT;
+ }
+ else
+ {
+ first_line = 0;
+ //先A上升沿,然后B上升沿,判断为顺时针转动一次
+ step1_switch = STEP_LEFT;
+ }
+ }
+ else
+ {
+ //首次B上升沿
+ first_line = 'B';
+ first_line_edge = 1;
+ }
+ }
+
+ if (usr_callback && step1_switch) {
+ st_CallBack_Encoder *encoder_int = malloc(sizeof(st_CallBack_Encoder));
+ if(NULL != encoder_int) {
+ encoder_int->spin_direct = step1_switch;
+ encoder_int->callback = cb;
+ qpy_send_msg_to_callback_deal_thread(CALLBACK_TYPE_ID_ENCODER, encoder_int);
+ }
+ }
+
+ Helios_ExtInt_Enable((Helios_GPIONum)gpio_b);
+}
+
+
+mp_obj_t encoder_make_new(const mp_obj_type_t *type, size_t n_args, size_t n_kw, const mp_obj_t *all_args) {
+ enum { ARG_pin_A, ARG_pin_B};
+ static const mp_arg_t allowed_args[] = {
+ { MP_QSTR_pin_A, MP_ARG_REQUIRED | MP_ARG_INT, {.u_int = 0} },
+ { MP_QSTR_pin_B, MP_ARG_REQUIRED | MP_ARG_INT, {.u_int = 0} },
+ };
+
+ mp_arg_val_t args[MP_ARRAY_SIZE(allowed_args)];
+ mp_arg_parse_all_kw_array(n_args, n_kw, all_args, MP_ARRAY_SIZE(allowed_args), allowed_args, args);
+
+ int pin_a = args[ARG_pin_A].u_int;
+ int pin_b = args[ARG_pin_B].u_int;
+ int ret=-1;
+ gpio_a = pin_a;
+ gpio_b = pin_b;
+ encoder_obj_t *self = m_new_obj_with_finaliser(encoder_obj_t);
+ self->base.type = &encoder_type;
+ HELIOS_ENCODER_LOG("encoder_make_new start!!!,a:%d,b:%d", gpio_a, gpio_b);
+ // init extint A
+ Helios_ExtIntStruct extint_struct = {0};
+ extint_struct.gpio_trigger = HELIOS_EDGE_TRIGGER;
+ extint_struct.gpio_edge = HELIOS_EDGE_BOTH;
+ extint_struct.gpio_debounce = HELIOS_DEBOUNCE_EN;
+ extint_struct.gpio_pull = HELIOS_PULL_UP;
+ extint_struct.eint_cb = NULL;
+ extint_struct.wakeup_eint_cb = knob_line_A_detection;
+ if(0 != Helios_ExtInt_Init((Helios_GPIONum)pin_a, &extint_struct)) {
+ mp_raise_ValueError("Interrupt initialization failed");
+ }
+ Helios_ExtInt_Enable((Helios_GPIONum)pin_a);
+
+ // init extint B
+ extint_struct.gpio_trigger = HELIOS_EDGE_TRIGGER;
+ extint_struct.gpio_edge = HELIOS_EDGE_BOTH;
+ extint_struct.gpio_debounce = HELIOS_DEBOUNCE_EN;
+ extint_struct.gpio_pull = HELIOS_PULL_UP;
+ extint_struct.eint_cb = NULL;
+ extint_struct.wakeup_eint_cb = knob_line_B_detection;
+ if(0 != Helios_ExtInt_Init((Helios_GPIONum)pin_b, &extint_struct)) {
+ mp_raise_ValueError("Interrupt initialization failed");
+ }
+ Helios_ExtInt_Enable((Helios_GPIONum)pin_b);
+
+ return MP_OBJ_FROM_PTR(self);
+}
+
+STATIC mp_obj_t set_callback(mp_obj_t self_in, const mp_obj_t handler)
+{
+ usr_callback = &cb;
+ mp_sched_schedule_callback_register(usr_callback, handler);
+
+ return mp_obj_new_int(1);
+}
+STATIC MP_DEFINE_CONST_FUN_OBJ_2(set_callback_obj, set_callback);
+
+
+/* 定义type的本地字典 */
+STATIC const mp_rom_map_elem_t encoder_locals_dict_table[] = {
+ { MP_OBJ_NEW_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_encoder) },
+ { MP_ROM_QSTR(MP_QSTR_set_callback), MP_ROM_PTR(&set_callback_obj) },
+};
+
+STATIC MP_DEFINE_CONST_DICT(encoder_locals_dict, encoder_locals_dict_table);
+
+/* 定义mp_obj_type_t类型的结构体;注意这里和定义module使用的类型是不一样的 */
+const mp_obj_type_t encoder_type = {
+ .base={ &mp_type_type },
+ .name = MP_QSTR_ENCODER, //type类的name属性是放在这里定义,而不是放在DICT中
+ .make_new = encoder_make_new, //添加的make new属性
+ .locals_dict = (mp_obj_dict_t*)&encoder_locals_dict, //注册encoder_locals_dict
+};
+
+
+
+#endif /* MICROPY_QPY_MODULE_GPIO_ENCODER */
+
--- /dev/null
+/*
+ * Copyright (c) Quectel Wireless Solution, Co., Ltd.All Rights Reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef MICROPY_INCLUDED_ENCODER_H
+#define MICROPY_INCLUDED_ENCODER_H
+
+#include "helios_os.h"
+
+#include <stdint.h>
+
+
+#endif // MICROPY_INCLUDED_ENCODER_H
+
#else
#define MICROPY_PORT_BUILTIN_MODULES_Gsensor
#endif
+#if MICROPY_QPY_MODULE_GPIO_ENCODER
+extern const struct _mp_obj_type_t encoder_type;
+#define MICROPY_PORT_BUILTIN_MODULES_ENCODER { MP_OBJ_NEW_QSTR(MP_QSTR_encoder), (mp_obj_t)&encoder_type},
+#else
+#define MICROPY_PORT_BUILTIN_MODULES_ENCODER
+#endif
#if 1 //MICROPY_QPY_MODULE_Hsensor
extern const struct _mp_obj_module_t mp_module_Hsensor;
MICROPY_PORT_BUILTIN_MODULES_ALIPAY \
MICROPY_PORT_BUILTIN_MODULES_G729 \
MICROPY_PORT_BUILTIN_MODULES_Gsensor \
+ MICROPY_PORT_BUILTIN_MODULES_ENCODER \
MICROPY_PORT_BUILTIN_MODULES_Hsensor \
MICROPY_PORT_BUILTIN_MODULES_VideoCall \
MICROPY_PORT_BUILTIN_MODULES_code128\
source/modHsensor.c \
source/modHsensor_GH3018.c \
source/modHsensor_HX3918.c \
+ source/modgpio_encoder.c \
source/modrsa.c \
source/utils_crc32.c \
source/http_parser.c \
print("打开校准模式")
self.Hsensor.set_sar(1)
self.Hsensor.open_test(255) #打开校准模式
- utime.sleep_ms(500)
+ utime.sleep_ms(1000)
self.Hsensor.open_heart()
self.hsensorTest_timer_count = 5
self.hsensorTest_timer_count -= 1
if self.hsensorTest_timer_count == 0:
self.Hsensor.close()
- self.Hsensor.init();
+ utime.sleep_ms(500)
+ self.Hsensor.init()
def Close(self):
self.hsensorTest_timer.stop()
import EventMesh
from machine import Pin
from machine import ExtInt
+import utime
import constants
+import encoder
+
class BtnDevice(Abstract):
def __init__(self, tp=None):
self.GPIO41_status = 0
self.powerKey_status = 0
self.Coder_timer = osTimer()
- #self.Coder_data_str_1 = ""
+ self.Coder_timer_count = 0
+ self.Coder_data_str_1 = ""
self.Coder_data_str_2 = ""
self.Coder_IO_tmp = 0
self.Coder_data_tmp = []
self.Coder_data1 = []
-
+ self.start_timer_a = 0
+ self.start_timer_b = 0
+ self.start_timer_flag = 0
+ self.tmp_a = 1
+ self.tmp_b = 1
def post_processor_after_instantiation(self):
# self.keypad.init()
# self.keypad.set_callback(self.key_callback)
self.extint = ExtInt(ExtInt.GPIO41, ExtInt.IRQ_RISING_FALLING, ExtInt.PULL_PU, self.pwk_extint_cb)
self.extint.enable()
+ # self.coder = encoder(Pin.GPIO22,Pin.GPIO21)
+ # self.coder.set_callback(self.Coder_cb)
self.Coder_A = ExtInt(ExtInt.GPIO22, ExtInt.IRQ_RISING_FALLING, ExtInt.PULL_PU, self.Coder_cb)
self.Coder_A.enable()
def Coder_cb(self,args):
- if self.Coder_data_str_2 == "":
+ #print("Coder_cb {}".format(args))
+ self.Coder_timer_count = 0
+ if self.start_timer_flag == 0:
#self.Coder_timer.stop()
- self.Coder_timer.start(1000, 1, self.Coder_timer_cb)
+ #self.Coder_data_str_2 = "11"
+ self.start_timer_flag = 1
+ self.Coder_timer_count = 0
+ self.Coder_timer.start(100, 1, self.Coder_timer_cb)
rest_flag = 0
- # data_tmp = ""
- # if args[0] == 21:
- # data_tmp = "B{},".format(args[1])
- # elif args[0] == 22:
- # data_tmp = "A{},".format(args[1])
- # self.Coder_data_str_1+=data_tmp
+ data_tmp = ""
+ if args[0] == 21:
+ # if self.Coder_B.read_level() == 1:
+ # self.start_timer_b = utime.ticks_us()
+ # else :
+ diff = utime.ticks_diff(utime.ticks_us(), self.start_timer_b)
+ self.start_timer_b = utime.ticks_us()
+ if diff > 8000 :#and diff <200000:
+ data_tmp = "B:{} {} {}\n".format(args[1],diff//1000,self.Coder_B.read_level())
+ else :
+ return
+ elif args[0] == 22:
+ #if self.Coder_A.read_level() == 1:
+
+ diff = utime.ticks_diff(utime.ticks_us(), self.start_timer_a)
+ self.start_timer_a = utime.ticks_us()
+ if diff > 8000 :#and diff <200000:
+ data_tmp = "A:{} {} {}\n".format(args[1],diff//1000,self.Coder_A.read_level())
+ else :
+ return
+ #self.Coder_data_str_1+=data_tmp
if self.Coder_IO_tmp != 0 :
- if self.Coder_IO_tmp != args[0]:
+ if self.Coder_IO_tmp != args[0] :#上一个中断io和当前中断io不一样
if self.Coder_data1 == []:
self.Coder_data1 = self.Coder_data_tmp
if self.Coder_data1[0] == 22 and self.Coder_data1[1] == 1:
- #self.Coder_data_str_1 += "-左滑"
+ #self.Coder_data_str_1 += "-上滑\n"
self.Coder_data_str_2+="上滑 "
- EventMesh.publish("done_UP")
+ flag = EventMesh.publish("get_lcd_state")
+ if flag == 1:
+ EventMesh.publish("done_UP")
#rest_flag = 1
elif self.Coder_data1[0] == 21 and self.Coder_data1[1] == 1 :
- #self.Coder_data_str_1 += "-右滑"
+ #self.Coder_data_str_1 += "-下滑\n"
self.Coder_data_str_2+="下滑 "
- EventMesh.publish("done_DOWN")
+ flag = EventMesh.publish("get_lcd_state")
+ if flag == 1:
+ EventMesh.publish("done_DOWN")
else:
rest_flag = 1
elif args[0] != self.Coder_data1[0] and args[1] == 0:#分段
#self.Coder_data_str_1+="分段"
rest_flag = 1
- if rest_flag == 1 :
+ if rest_flag == 1 :#判断完有效清数据
self.Coder_data1 = []
self.Coder_IO_tmp = 0
else :
+
self.Coder_IO_tmp = args[0]
self.Coder_data_tmp =args
def Coder_timer_cb(self, *args):
- #print("Coder1:{}".format(self.Coder_data_str_1))
- print("Coder2:{}".format(self.Coder_data_str_2))
-
- #self.Coder_data_str_1 = ""
- self.Coder_data_str_2 = ""
- self.Coder_data1 = []
- self.Coder_IO_tmp = 0
- self.Coder_timer.stop()
+ # tmp = self.Coder_A.read_level()
+ # data_tmp = ""
+ # if self.tmp_a != tmp :
+ # if self.start_timer_a != 0:
+ # data_tmp = "A{} {},".format(self.tmp_a,self.start_timer_a*6)
+ # self.start_timer_a = 0
+ # else:
+ # self.start_timer_a += 1
+ # self.tmp_a = tmp
+
+ # tmp = self.Coder_B.read_level()
+ # if self.tmp_b != tmp :
+ # if self.start_timer_b != 0:
+ # data_tmp = "B{} {},".format(self.tmp_b,self.start_timer_b*6)
+ # self.start_timer_b = 0
+ # else:
+ # self.start_timer_b += 1
+ # self.tmp_b = tmp
+ # self.Coder_data_str_1+=data_tmp
+ self.Coder_timer_count += 1
+ if self.Coder_timer_count > 4:
+ #print("Coder1:\n{}".format(self.Coder_data_str_1))
+ print("Coder2:\n{}".format(self.Coder_data_str_2))
+ self.Coder_timer_count = 0
+ self.Coder_data_str_1 = ""
+ self.Coder_data_str_2 = ""
+ self.Coder_data1 = []
+ self.Coder_IO_tmp = 0
+ self.start_timer_b = 0
+ self.start_timer_a = 0
+ self.tmp_a = 1
+ self.tmp_b = 1
+ self.Coder_timer.stop()
+ self.start_timer_flag=0
def pwk_extint_cb(self,args):
#print('### interrupt {} '.format(args)) # args[0]:gpio号 args[1]:上升沿或下降沿
-import sms
-import atcmd
-import net
-import machine
-import usys
-resp=bytearray(50)
-# atcmd.sendSync('AT+log=52,1\r\n',resp,'',200)
-# print("AT+log=52,1:{}".format(resp))
-from common import Abstract
-class App(object):
- def __init__(self):
- self.managers = []
-
- def append_manager(self, manager):
- try:
- if isinstance(manager, Abstract):
- manager.post_processor_after_instantiation()
- self.managers.append(manager)
- except Exception as e:
- usys.print_exception(e)
- return self
-
- def start(self):
- try:
- for manager in self.managers:
- manager.post_processor_before_initialization()
- manager.initialization()
- manager.post_processor_after_initialization()
- except Exception as e:
- usys.print_exception(e)
-
-class watchApp(App):
- def __init__(self):
- super(watchApp, self).__init__()
- self.__ui = None
-
- def set_ui(self, ui):
- self.__ui = ui
-
- def start(self):
- if self.__ui is not None:
- self.__ui.start()
- super().start()
-
-
-
-if __name__ == '__main__':
-
- from ui_main_menu import MainMenuScreen
- # from ui_WatchFaceScreen import WatchFaceScreen
-
- import ui as _ui
- # import ui as _ui
- #print("init4:{}".format(utime.localtime()))
- ui = _ui.UI()
- ui.post_processor_after_instantiation()
- ui.add_screen(MainMenuScreen())
-
-
-
+import main_init
+main_init.main_init()
\ No newline at end of file
rmc_data = quecgnss.get_rmc()
gga_data = quecgnss.get_gga()
vtg_data = quecgnss.get_vtg()
- print("gsv:{}".format(quecgnss.get_gsv()))
- print("gga:{}".format(quecgnss.get_gga()))
- print("rmc:{}".format(quecgnss.get_rmc()))
- print("vtg:{}".format(quecgnss.get_vtg()))
+ # print("gsv:{}".format(quecgnss.get_gsv()))
+ # print("gga:{}".format(quecgnss.get_gga()))
+ # print("rmc:{}".format(quecgnss.get_rmc()))
+ # print("vtg:{}".format(quecgnss.get_vtg()))
for i in range(len(gsv_data)) :
if i % 2 == 0:
self.system_sleep_timeout_rest()
def ui_press(self, event, key):
+ EventMesh.publish("publish_message_event_ui",{"func":self.ui_press_do,"data":event})
+ def ui_press_do(self, event):
screen_NAME = EventMesh.publish("get_screen_NAME")
if screen_NAME == "system_init":
return
self.screen.done_UP()
# if event == "done_press":
# self.system_sleep_timeout_rest()
+
def btn_press(self, event, key):
+ EventMesh.publish("publish_message_event_ui",{"func":self.btn_press_do,"data":event})
+ def btn_press_do(self, event):
screen_NAME = EventMesh.publish("get_screen_NAME")
if screen_NAME == "system_init":
return
#主表盘按电源键,息屏
#息屏状态按按钮都亮屏
-
-
if self.main_flag != 1 and self.sleep_flag == 0:
if event == "btn8_long_press":
if EventMesh.publish(constants.EVENT.GET_CONNECT) == 1:#有卡时触发sos报警 无卡时自动关机
class WatchFace1():
NAME = "Watchface1"
# # #表盘1
- def __init__(self,main_menu):
+ def __init__(self):
print("Watchface1:__init__")
self.meta = Watchface1
+ def set_parent(self,main_menu):
Watchface1.set_parent(main_menu)#设置父控件
- def initialization(self,main_menu):
+ def initialization(self):
print("Watchface1:initialization")
-
+ #Watchface1.set_parent(main_menu)#设置父控件
#获取信号
signal = EventMesh.publish("screen_get_sig")
if signal:
class WatchFace2():
NAME = "Watchface2"
# # #表盘2
- def __init__(self,main_menu):
+ def __init__(self):
print("Watchface2:__init__")
self.meta = Watchface2
- Watchface2.set_parent(main_menu)#设置父控件
-
- def initialization(self,main_menu):
+ def set_parent(self,main_menu):
+ Watchface1.set_parent(main_menu)#设置父控件
+
+ def initialization(self):
print("Watchface2:initialization")
-
+ #Watchface2.set_parent(main_menu)#设置父控件
#获取信号
signal = EventMesh.publish("screen_get_sig")
if signal:
class WatchFace():
#NAME = "Watchface"
- def __init__(self):
+ def __init__(self,main_menu):
#表盘
self.meta = None
self.watchface_style_num = "Watchface1"
self.watchface_list = []
+ self.watchface_style = None
self.timer_update = osTimer()
EventMesh.subscribe("set_change_face", self.change_face)
self.PWM_backlight = None
read_data = EventMesh.publish("get_storage_config","watchface")
if read_data != None:
self.watchface_style_num = read_data
-
-
-
- def initialization(self,main_menu):
if self.watchface_list == [] : #第一次初始化
- self.watchface_list.append( WatchFace1(main_menu))
- self.watchface_list.append( WatchFace2(main_menu))
- print("watchface INIT !!!!!!!!:",self.watchface_style_num)
+ self.watchface_list.append( WatchFace1())
+ self.watchface_list.append( WatchFace2())
+ self.set_parent( main_menu)
+
for wat in self.watchface_list:
if wat.NAME == self.watchface_style_num :
self.watchface_style = wat
wat.meta.add_flag(lv.obj.FLAG.HIDDEN) #隐藏
- self.watchface_style.initialization(main_menu)
+ self.watchface_style.initialization()
self.meta = self.watchface_style.meta
self.watchface_style.meta.clear_flag(lv.obj.FLAG.HIDDEN)#显示
+
+ def initialization(self):
+
+ print("watchface INIT !!!!!!!!:",self.watchface_style_num)
+
self.timer_update.start(10000, 1, self.timerout_update)
+ def set_parent(self,main_menu):
+ Watchface1.set_parent(main_menu)#设置父控件
+ Watchface2.set_parent(main_menu)#设置父控件
+
def timerout_update(self, *args, **kwargs):
self.watchface_style.timerout_update()
def change_face(self, event=None, msg=None):
print("change_face :",msg)
self.watchface_style_num = str(msg)
-
+ for wat in self.watchface_list:
+ if wat.NAME == self.watchface_style_num :
+ self.watchface_style = wat
+ wat.meta.add_flag(lv.obj.FLAG.HIDDEN) #隐藏
+ self.watchface_style.initialization()
+ self.meta = self.watchface_style.meta
+ self.watchface_style.meta.clear_flag(lv.obj.FLAG.HIDDEN)#显示
EventMesh.publish("load_screen", {"screen": "main_menu"})
import constants
from misc import Power
import pm
-from ui import Screen
+from ui import Screen,style_screen
from ui_WatchFaceScreen import WatchFace
from lcd import LCD_SIZE_W,LCD_SIZE_H
MAIN_ICON_SZIE = 120 #菜单界面图片的大小
style_btn.set_border_width(0)
-# MainMenu = lv.obj()
-# class MainMenuScreen(Screen):
-# NAME = "main_menu"
-
-# def __init__(self):
-# super().__init__()
-# #主菜单
-# self.meta = MainMenu
-# self.main_menu_style_num = "MainMenu2"
-
-# def initialization(self):
-# print("main_menu INIT !!!!!!!!")
-# EventMesh.publish("load_screen", {"screen": self.main_menu_style_num})
-
-
-# def post_processor_after_instantiation(self):
-# EventMesh.subscribe("change_style", self.change_style)
-
-
-# def change_style(self, event=None, msg=None): #换风格
-# self.main_menu_style_num = msg
-# EventMesh.publish("load_screen", {"screen": self.main_menu_style_num})
-
-# def Close(self):
-# return
-
-
-# def done_return(self):
-# EventMesh.publish("load_screen", {"screen": "Watchface"})
-
-# def btn1_release(self):
-# EventMesh.publish("load_screen", {"screen": "Watchface"})
-
-# def btn8_press(self):
-# EventMesh.publish("load_screen", {"screen": "Watchface"})
-
-
-
-
+MainMenu = lv.obj()
style_font_youyuan_font_60 = lv.style_t()
style_font_youyuan_font_60.init()
style_font_youyuan_font_60.set_text_font(lv.font_60_main_menu)
MainMenu2x = 0
MainMenu2_num = 0
-MainMenu2 = lv.obj()
+MainMenu2 = lv.obj(MainMenu)
+MainMenu2.set_size(LCD_SIZE_W,LCD_SIZE_H)
+#MainMenu1.set_pos(0,0)
+MainMenu2.set_scrollbar_mode(lv.SCROLLBAR_MODE.OFF)
+MainMenu2.add_style(style_screen, lv.PART.MAIN|lv.STATE.DEFAULT)
print("MainMenu2")
MainMenu2_til = lv.tileview(MainMenu2)
MainMenu2_til.set_scrollbar_mode(0)
label_text.set_pos(0, LCD_SIZE_W)
label_text.set_size(0, 0)
label_text.set_text("0")
+
MainMenu2_num+=1
# #支付宝
# MainMenu2_alipay = MainMenu2_til.add_tile(MainMenu2x, 0, lv.DIR.LEFT | lv.DIR.RIGHT)
+################################################################################################################
+MainMenu1x = 0
+MainMenu1_num = 0
+MainMenu1 = lv.obj(MainMenu)
+MainMenu1.set_size(LCD_SIZE_W,LCD_SIZE_H)
+#MainMenu1.set_pos(0,0)
+MainMenu1.set_scrollbar_mode(lv.SCROLLBAR_MODE.OFF)
+MainMenu1.add_style(style_screen, lv.PART.MAIN|lv.STATE.DEFAULT)
+print("MainMenu1")
+MainMenu1_til = lv.tileview(MainMenu1)
+MainMenu1_til.set_scrollbar_mode(0)
+MainMenu1_til.set_size(240,284)
+MainMenu1_til.add_style(style_MainMenu_screen_default, lv.PART.MAIN | lv.STATE.DEFAULT)
+#MainMenu1_til.add_flag(lv.obj.FLAG.SCROLL_ELASTIC)
+#LV_OBJ_FLAG_SCROLL_MOMENTUM
+#表盘
+MainMenu1_Watchface = MainMenu1_til.add_tile(0, 1, lv.DIR.LEFT | lv.DIR.RIGHT)
+
+label_text = lv.label(MainMenu1_Watchface)
+label_text.set_pos(0, LCD_SIZE_W)
+label_text.set_size(0, 0)
+label_text.set_text("0")
+
+
+
+MainMenu1_num+=1
+
+#拨号盘
+MainMenu1_phone = MainMenu1_til.add_tile(MainMenu1x, 0, lv.DIR.LEFT | lv.DIR.RIGHT)
+label_text = lv.label(MainMenu1_phone)
+label_text.set_pos(0, LCD_SIZE_H)
+label_text.set_size(0, 0)
+label_text.set_text("{}".format(MainMenu1_num))
+MainMenu1_img_phone = lv.img(MainMenu1_phone)
+MainMenu1_img_phone.set_size(MAIN_ICON_SZIE,MAIN_ICON_SZIE)
+MainMenu1_img_phone.set_pos(MAIN_ICON_X,MAIN_ICON_Y)
+MainMenu1_img_phone.set_src("U:/static/IMAGE_ONE_PAGE_CALL.png")
+MainMenu1_img_phone.add_flag(lv.obj.FLAG.CLICKABLE)
+MainMenu1_img_phone.add_style(style_MainMenu_img_default, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+MainMenu1_img_phone_text = lv.label(MainMenu1_phone)
+MainMenu1_img_phone_text.set_pos(int(0),int(MAIN_LABEL_Y))
+MainMenu1_img_phone_text.set_size(LCD_SIZE_W,LCD_SIZE_H-MAIN_LABEL_Y)
+MainMenu1_img_phone_text.add_flag(lv.obj.FLAG.CLICKABLE)
+MainMenu1_img_phone_text.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
+MainMenu1_img_phone_text.set_text("拨号盘人")
+MainMenu1_img_phone_text.add_style(style_font_youyuan_font_60, lv.PART.MAIN|lv.STATE.DEFAULT)
+MainMenu1_num+=1
+MainMenu1x+=1
+
+#通讯录
+MainMenu1_contacts = MainMenu1_til.add_tile(MainMenu1x, 0, lv.DIR.LEFT | lv.DIR.RIGHT)
+label_text = lv.label(MainMenu1_contacts)
+label_text.set_pos(0, LCD_SIZE_H)
+label_text.set_size(0, 0)
+label_text.set_text("{}".format(MainMenu1_num))
+MainMenu1_img_contacts = lv.img(MainMenu1_contacts)
+MainMenu1_img_contacts.set_size(MAIN_ICON_SZIE,MAIN_ICON_SZIE)
+MainMenu1_img_contacts.set_pos(MAIN_ICON_X,MAIN_ICON_Y)
+MainMenu1_img_contacts.set_src("U:/static/IMAGE_ONE_PAGE_CONTACTS.png")
+MainMenu1_img_contacts.add_flag(lv.obj.FLAG.CLICKABLE)
+MainMenu1_img_contacts.add_style(style_MainMenu_img_default, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+MainMenu1_img_contacts_txt = lv.label(MainMenu1_contacts)
+MainMenu1_img_contacts_txt.set_pos(int(0),int(MAIN_LABEL_Y))
+MainMenu1_img_contacts_txt.set_size(LCD_SIZE_W,LCD_SIZE_H-MAIN_LABEL_Y)
+MainMenu1_img_contacts_txt.add_flag(lv.obj.FLAG.CLICKABLE)
+MainMenu1_img_contacts_txt.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
+MainMenu1_img_contacts_txt.set_text("联系人拨")
+MainMenu1_img_contacts_txt.add_style(style_font_youyuan_font_60, lv.PART.MAIN|lv.STATE.DEFAULT)
+MainMenu1_num+=1
+MainMenu1x+=1
+#短信
+MainMenu1_SMS = MainMenu1_til.add_tile(MainMenu1x, 0, lv.DIR.LEFT | lv.DIR.RIGHT)
+label_text = lv.label(MainMenu1_SMS)
+label_text.set_pos(0, LCD_SIZE_H)
+label_text.set_size(0, 0)
+label_text.set_text("{}".format(MainMenu1_num))
+MainMenu1_img_sms = lv.img(MainMenu1_SMS)
+MainMenu1_img_sms.set_size(MAIN_ICON_SZIE,MAIN_ICON_SZIE)
+MainMenu1_img_sms.set_pos(MAIN_ICON_X,MAIN_ICON_Y)
+MainMenu1_img_sms.set_src("U:/static/IMAGE_ONE_PAGE_SMS.png")
+MainMenu1_img_sms.add_flag(lv.obj.FLAG.CLICKABLE)
+MainMenu1_img_sms.add_style(style_MainMenu_img_default, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+MainMenu1_img_sms_txt = lv.label(MainMenu1_SMS)
+MainMenu1_img_sms_txt.set_pos(int(0),int(MAIN_LABEL_Y))
+MainMenu1_img_sms_txt.set_size(LCD_SIZE_W,LCD_SIZE_H-MAIN_LABEL_Y)
+MainMenu1_img_sms_txt.add_flag(lv.obj.FLAG.CLICKABLE)
+MainMenu1_img_sms_txt.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
+MainMenu1_img_sms_txt.set_text("短信")
+MainMenu1_img_sms_txt.add_style(style_font_youyuan_font_60, lv.PART.MAIN|lv.STATE.DEFAULT)
+MainMenu1_num+=1
+MainMenu1x+=1
#主菜单风格2,单页
class MainMenuScreen(Screen):
NAME = "main_menu"
def __init__(self):
- self.meta = MainMenu2
- self.watchface = WatchFace()
+ self.meta = MainMenu
+ self.MainMenu_Watchface = None
+ self.MainMenu_til = None
+ self.MainMenu_num = None
+ self.watchface = None
+ self.set_mainmenu(msg = "2")
+
+ self.watchface = WatchFace(self.MainMenu_Watchface )
+
+ read_data = EventMesh.publish("get_storage_config","MainMenu")
+ if read_data != None:
+ self.set_mainmenu(msg = [read_data,0])
+ EventMesh.subscribe("set_mainmenu", self.set_mainmenu)
self.menu_id = "0"
self.menu_new_id = "255"
self.menu_old_id = "255"
self.is_sliding = 0
self.scroll_begin_event_count = 0
self.menu_action = 0 # =1左滑 =2右划
+ ###1
+ MainMenu1_til.add_event_cb(lambda e: EventMesh.callback_wrapper(self.scroll_begin_event_cb(e)),lv.EVENT.SCROLL_END,None)
+ #lv_obj_add_event_cb(lv_tabview_get_content(tabview), scroll_begin_event, LV_EVENT_SCROLL_END, NULL);
+ MainMenu1_img_phone.add_event_cb(lambda e: EventMesh.callback_wrapper(self.img_cb(e, "Phone")), lv.EVENT.CLICKED, None)
+ MainMenu1_img_phone.add_event_cb(lambda e: EventMesh.callback_wrapper(self.img_cb(e, "Phone")), lv.EVENT.PRESSING, None)
+ ##2
print("MainMenu1:__init__")
MainMenu2_til.add_event_cb(lambda e: EventMesh.callback_wrapper(self.scroll_begin_event_cb(e)),lv.EVENT.SCROLL_END,None)
#lv_obj_add_event_cb(lv_tabview_get_content(tabview), scroll_begin_event, LV_EVENT_SCROLL_END, NULL);
#MainMenu2_img_alipay.add_event_cb(lambda e: img_cb(e, "Watchface_set"), lv.EVENT.CLICKED, None)
def initialization(self):
- self.watchface.initialization(MainMenu2_Watchface)
+
+ self.watchface.initialization()
self.is_sliding = 0
if self.menu_id =="0":
- MainMenu2_til.set_tile_id(0,1,lv.ANIM.OFF)
+ self.MainMenu_til.set_tile_id(0,1,lv.ANIM.OFF)
# if self.meta_info in globals() :
- # MainMenu2_til.set_tile_id(self.meta_info[0],self.meta_info[1],lv.ANIM.OFF)
+ # self.MainMenu_til.set_tile_id(self.meta_info[0],self.meta_info[1],lv.ANIM.OFF)
pass#
-
+
+ #切换菜单风格
+ def set_mainmenu(self, event=None, msg=None):
+ if self.watchface != None:
+ self.watchface.Close()
+ MainMenu2.add_flag(lv.obj.FLAG.HIDDEN)#隐藏菜单
+ MainMenu1.add_flag(lv.obj.FLAG.HIDDEN)
+ if msg[0] == "2":
+ MainMenu2.clear_flag(lv.obj.FLAG.HIDDEN)#显示菜单
+ self.MainMenu_Watchface = MainMenu2_Watchface
+ self.MainMenu_til = MainMenu2_til
+ self.MainMenu_num = MainMenu2_num
+ # self.watchface = MainMenu2_watchface
+ print("set_mainmenu2")
+ elif msg[0] == "1":
+ MainMenu1.clear_flag(lv.obj.FLAG.HIDDEN)
+ self.MainMenu_Watchface = MainMenu1_Watchface
+ self.MainMenu_til = MainMenu1_til
+ self.MainMenu_num = MainMenu1_num
+ #self.watchface = MainMenu1_watchface
+ print("set_mainmenu1")
+ else :
+ MainMenu1.clear_flag(lv.obj.FLAG.HIDDEN)
+ self.MainMenu_Watchface = MainMenu1_Watchface
+ self.MainMenu_til = MainMenu1_til
+ self.MainMenu_num = MainMenu1_num
+ #self.watchface = MainMenu1_watchface
+ msg[0] = "1"
+
+ EventMesh.publish("set_storage_config",["MainMenu",msg[0]])
+ if self.watchface != None:
+ self.watchface.set_parent(self.MainMenu_Watchface)#切换父对象,比较危险
+ self.watchface.initialization()
+ self.menu_id = "0"
+ if len (msg ) >= 2:
+ if msg[1] != 0 :
+ #EventMesh.publish("load_screen", {"screen": "setting"})
+ EventMesh.publish("load_screen", {"screen": "main_menu"})
+ #self.MainMenu_til.set_tile_id(0,1,lv.ANIM.OFF)
+ #self.initialization()
+ self.MainMenu_til.set_tile_id(0,1,lv.ANIM.OFF)
def scroll_begin_event_cb(self, e):
pass
# EventMesh.publish("publish_message_event_ui",{"func":self.scroll_begin_event,"data":0})
# self.scroll_begin_event_count+=1
# if self.scroll_begin_event_count == 1:
- # self.menu_new_id = MainMenu2_til.get_tile_act().get_child(0).get_text()
+ # self.menu_new_id = self.MainMenu_til.get_tile_act().get_child(0).get_text()
# #print("scroll_begin_event scroll_begin_event {} old_id {} new_id{}".format(self.scroll_begin_event_count,self.menu_old_id,self.menu_new_id))
# elif self.scroll_begin_event_count == 2:
- # self.menu_old_id = MainMenu2_til.get_tile_act().get_child(0).get_text()
+ # self.menu_old_id = self.MainMenu_til.get_tile_act().get_child(0).get_text()
# print("scroll_begin_event menu_action {} old_id {} new_id {}".format(self.menu_action,self.menu_old_id,self.menu_new_id))
# self.scroll_begin_event_count = 0
# if self.menu_old_id == self.menu_new_id and self.menu_action == 1:
- # MainMenu2_til.set_tile_id(int(self.menu_old_id)-2,0,lv.ANIM.ON)
+ # self.MainMenu_til.set_tile_id(int(self.menu_old_id)-2,0,lv.ANIM.ON)
# print("scroll_begin_event menu_action == 1")
# elif self.menu_old_id == self.menu_new_id and self.menu_action == 2:
# print("scroll_begin_event menu_action == 2")
- # MainMenu2_til.set_tile_id(int(self.menu_old_id),0,lv.ANIM.ON)
+ # self.MainMenu_til.set_tile_id(int(self.menu_old_id),0,lv.ANIM.ON)
# self.menu_action = 0
# else :
# self.scroll_begin_event_count = 0
# if code == lv.EVENT.SCROLL_END:
# pass
def watch_top_show(self, event, msg): #
- MainMenu2_til.set_tile_id(0,1,lv.ANIM.OFF)
+ self.MainMenu_til.set_tile_id(0,1,lv.ANIM.OFF)
def img_cb(self,e,msg):
code = e.get_code()
self.watchface.timer_update.stop()
def done_return(self):
- MainMenu2_til.set_tile_id(0,1,lv.ANIM.OFF)
+ self.MainMenu_til.set_tile_id(0,1,lv.ANIM.OFF)
def btn1_release(self):
flag = EventMesh.publish("get_lcd_state")
if flag == 0:
EventMesh.publish(constants.EVENT.SYSTEM_UP)
else:
- if MainMenu2_til.get_tile_act() != None:
- id = MainMenu2_til.get_tile_act().get_child(0).get_text()
+ if self.MainMenu_til.get_tile_act() != None:
+ id = self.MainMenu_til.get_tile_act().get_child(0).get_text()
if id != "0":
- MainMenu2_til.set_tile_id(0,1,lv.ANIM.OFF)
+ self.MainMenu_til.set_tile_id(0,1,lv.ANIM.OFF)
else:
EventMesh.publish("load_screen", {"screen": "alipay_open"})
def return_alipay(self, event, msg):
- MainMenu2_til.set_tile_id(0,0,lv.ANIM.OFF)
+ self.MainMenu_til.set_tile_id(0,0,lv.ANIM.OFF)
def return_setiing(self, event, msg):
- MainMenu2_til.set_tile_id(7,0,lv.ANIM.OFF)
+ self.MainMenu_til.set_tile_id(7,0,lv.ANIM.OFF)
def btn8_press(self):
flag = EventMesh.publish("get_lcd_state")
- if MainMenu2_til.get_tile_act() != None:
- id = MainMenu2_til.get_tile_act().get_child(0).get_text()
+ if self.MainMenu_til.get_tile_act() != None:
+ id = self.MainMenu_til.get_tile_act().get_child(0).get_text()
if id == "0":
if flag == 1:
EventMesh.publish(constants.EVENT.SYSTEM_SLEEP)
EventMesh.publish(constants.EVENT.SYSTEM_UP)
else:
if flag == 1:
- MainMenu2_til.set_tile_id(0,1,lv.ANIM.OFF)
+ self.MainMenu_til.set_tile_id(0,1,lv.ANIM.OFF)
else:
EventMesh.publish(constants.EVENT.SYSTEM_UP)
else:
if flag == 1:
- MainMenu2_til.set_tile_id(0,1,lv.ANIM.OFF)
+ self.MainMenu_til.set_tile_id(0,1,lv.ANIM.OFF)
else:
EventMesh.publish(constants.EVENT.SYSTEM_UP)
def done_bottom_to_top(self):
- id = MainMenu2_til.get_tile_act().get_child(0).get_text()
+ id = self.MainMenu_til.get_tile_act().get_child(0).get_text()
if id == "0":
EventMesh.publish("load_screen", {"screen": "call_log"})
self.menu_id = id
def done_top_to_bottom(self):
- id = MainMenu2_til.get_tile_act().get_child(0).get_text()
+ id = self.MainMenu_til.get_tile_act().get_child(0).get_text()
if id == "0":
EventMesh.publish("load_screen", {"screen": "popup"})
self.menu_id = id
def done_left_to_right(self):
- id = MainMenu2_til.get_tile_act().get_child(0).get_text()
+ id = self.MainMenu_til.get_tile_act().get_child(0).get_text()
print("done_left_to_right:ID{} menu_id{}".format(id,self.menu_id))
if id == "0":
- MainMenu2_til.set_tile_id(MainMenu2_num-2,0,lv.ANIM.OFF)
+ self.MainMenu_til.set_tile_id(self.MainMenu_num-2,0,lv.ANIM.OFF)
elif self.menu_id != '2' and id == '1':
- MainMenu2_til.set_tile_id(MainMenu2_num-2,0,lv.ANIM.OFF)
+ self.MainMenu_til.set_tile_id(self.MainMenu_num-2,0,lv.ANIM.OFF)
elif self.menu_id == id :
self.menu_action = 1
self.menu_id = id
def done_right_to_left(self):
- id = MainMenu2_til.get_tile_act().get_child(0).get_text()
+ id = self.MainMenu_til.get_tile_act().get_child(0).get_text()
print("done_right_to_left:ID{} menu_id{}".format(id,self.menu_id))
if id == "0":
- MainMenu2_til.set_tile_id(0,0,lv.ANIM.OFF)
- elif (self.menu_id != str(MainMenu2_num-2) ) and id == str(MainMenu2_num-1) :
- MainMenu2_til.set_tile_id(0,0,lv.ANIM.OFF)
+ self.MainMenu_til.set_tile_id(0,0,lv.ANIM.OFF)
+ elif (self.menu_id != str(self.MainMenu_num-2) ) and id == str(self.MainMenu_num-1) :
+ self.MainMenu_til.set_tile_id(0,0,lv.ANIM.OFF)
else :
self.menu_action = 2
self.menu_id = id
def done_DOWN(self):#下滑
- id = MainMenu2_til.get_tile_act().get_child(0).get_text()
- print("done_right_to_left: {} {} {}".format(id,self.menu_id,MainMenu2_num))
+ id = self.MainMenu_til.get_tile_act().get_child(0).get_text()
+ print("done_right_to_left: {} {} {}".format(id,self.menu_id,self.MainMenu_num))
if id == "0":
- MainMenu2_til.set_tile_id(MainMenu2_num-2,0,lv.ANIM.OFF)
+ self.MainMenu_til.set_tile_id(self.MainMenu_num-2,0,lv.ANIM.OFF)
elif self.menu_id != '2' and id == '1':
- MainMenu2_til.set_tile_id(MainMenu2_num-2,0,lv.ANIM.OFF)
+ self.MainMenu_til.set_tile_id(self.MainMenu_num-2,0,lv.ANIM.OFF)
else :
if id == "1":
- MainMenu2_til.set_tile_id(MainMenu2_num-2,0,lv.ANIM.OFF)
+ self.MainMenu_til.set_tile_id(self.MainMenu_num-2,0,lv.ANIM.OFF)
else :
- MainMenu2_til.set_tile_id(int(id)-2,0,lv.ANIM.ON)
+ self.MainMenu_til.set_tile_id(int(id)-2,0,lv.ANIM.OFF)
self.menu_id = id
def done_UP(self):#上滑
- id = MainMenu2_til.get_tile_act().get_child(0).get_text()
- print("done_right_to_left: {} {} {}".format(id,self.menu_id,MainMenu2_num))
+ id = self.MainMenu_til.get_tile_act().get_child(0).get_text()
+ print("done_right_to_left: {} {} {}".format(id,self.menu_id,self.MainMenu_num))
if id == "0":
- MainMenu2_til.set_tile_id(0,0,lv.ANIM.OFF)
- elif (self.menu_id != str(MainMenu2_num-2) ) and id == str(MainMenu2_num-1) :
- MainMenu2_til.set_tile_id(0,0,lv.ANIM.OFF)
+ self.MainMenu_til.set_tile_id(0,0,lv.ANIM.OFF)
+ elif (self.menu_id != str(self.MainMenu_num-2) ) and id == str(self.MainMenu_num-1) :
+ self.MainMenu_til.set_tile_id(0,0,lv.ANIM.OFF)
else :
- if int(id) == MainMenu2_num-1 :
- MainMenu2_til.set_tile_id(0,0,lv.ANIM.OFF)
+ if int(id) == self.MainMenu_num-1 :
+ self.MainMenu_til.set_tile_id(0,0,lv.ANIM.OFF)
else :
- MainMenu2_til.set_tile_id(int(id),0,lv.ANIM.ON)
+ self.MainMenu_til.set_tile_id(int(id),0,lv.ANIM.OFF)
self.menu_id = id
def Close(self):
def fun(self,*argc):
EventMesh.publish("system_sleep_rest")#防止黑屏
if self.count == 0:
- self.aud.play(1, 1, 'E:/static/R_POWER_1.mp3') #播放来电铃声
+ temp = Power.getVbatt()
+ if temp > 3400:#低电播放音频会导致一直复位
+ self.aud.play(1, 1, 'E:/static/R_POWER_1.mp3') #播放来电铃声
else:
- play_state = EventMesh.publish("get_audio_state")#音频播放状态
- if play_state != None:
- if self.count >= 9:#在上一个界面在播放音频时切换界面则关闭 以免一直播放
- self.count = 0
- self.timer.stop()
- EventMesh.publish("load_screen", {"screen": "main_menu"})
- return
+
+ if self.count >= 9:#在上一个界面在播放音频时切换界面则关闭 以免一直播放
+ self.count = 0
+ self.timer.stop()
+ EventMesh.publish("load_screen", {"screen": "main_menu"})
+ return
self.count+=1
def Close(self):
#define MICROPY_QPY_MODULE_UCRYPTOLIB (1)
#define MICROPY_QPY_MODULE_ALIPAY (0)
#define MICROPY_QPY_MODULE_VFS_THREADSAFE (1)
-
+#define MICROPY_QPY_MODULE_GPIO_ENCODER (1)
#if CONFIG_MBEDTLS
#define MICROPY_QPY_MODULE_USSL (0)
#define MICROPY_QPY_SSL_MBEDTLS (1)