快排仪表以及A270S版本生成

This commit is contained in:
2025-02-11 18:48:14 +08:00
parent f0fb64e4e6
commit 08e216ffb2
63 changed files with 29766 additions and 29566 deletions

View File

@ -83,4 +83,23 @@ uint8_t getBitValue(uint8_t count, int bitPosition) {
}
#endif
// 封装的函数获取2个bit组合成的值
uint8_t getBit2Value(uint8_t count, int bitPosition) {
return (count >> bitPosition) & 0x3;
}
// 封装的函数获取3个bit组合成的值
uint8_t getBit3Value(uint8_t count, int bitPosition) {
return (count >> bitPosition) & 0x7;
}
// 封装的函数获取4个bit组合成的值
uint8_t getBit4Value(uint8_t count, int bitPosition) {
return (count >> bitPosition) & 0xf;
}
// 封装的函数获取5个bit组合成的值
uint8_t getBit5Value(uint8_t count, int bitPosition) {
return (count >> bitPosition) & 0x1f;
}
#endif /*WITH_MVVM*/

View File

@ -7,6 +7,7 @@
#define MOTO_ICMX_GB518_A270M 1
#define MOTO_ICMX_GB518_A270M_KP 2
#define MOTO_ICMX_GB518_A270S 3
#define MOTO_ICMX_GB518_A270S_KP 4
#define MOTO_WARE_HOSE MOTO_ICMX_GB518_A270S
@ -28,10 +29,20 @@
#elif (MOTO_WARE_HOSE == MOTO_ICMX_GB518_A270S)
#define SOFT_WARE_HOST 0
#define SOFT_WARE_ORDER 2
#define SOFT_WARE_ORDER 3
#define HARD_WARE "MXC-A27-M V4.5"
#define HARD_WARE_LABEL "4.5"
#define KEY_EXCHANGE 1
#define MCU_INFO_LABEL "A270S"
#elif (MOTO_WARE_HOSE == MOTO_ICMX_GB518_A270S_KP)
#define SOFT_WARE_HOST 0
#define SOFT_WARE_ORDER 2
#define HARD_WARE "MXC-A27-S-KP V4.5"
#define HARD_WARE_LABEL "4.5"
#define KEY_EXCHANGE 1
#define UI_VIEW_QUICKLY_ARRANGE 1//快排功能宏
#else

View File

@ -169,7 +169,7 @@ void Power_On_Self_Test(void){
widget_t* win = window_manager();
widget_t* child = window_manager_get_top_main_window(win);
widget_t* progress_circle = widget_lookup(win, "progress_circle", TRUE);
widget_set_animation(progress_circle, "value(duration=1000,yoyo_times=1,easing=linear,from=120,to=1)");
widget_set_animation(progress_circle, "value(duration=800,yoyo_times=1,easing=linear,from=120,to=1)");
}
//长按事件处理
@ -299,7 +299,7 @@ double calculateTotalDistance(uint8_t count)
void ASB_speed_event_handing(int *buf){
#if (MOTO_WARE_HOSE == MOTO_ICMX_GB518_A270S_KP)
#ifdef UI_VIEW_QUICKLY_ARRANGE
uint8_t data = 0;
uint8_t speed_data = 0;
uint8_t speed_flag = 0;
@ -314,7 +314,8 @@ void ASB_speed_event_handing(int *buf){
speed_flag = getBitValue(data,2);
// printf("frontflag=%d.\r\n",speed_flag);
//前轮速度有效
if(!speed_flag){
// if(!speed_flag){
if(0){
// printf("front>speed_data=%05X,speed=%08X,",speed_data,speed);
speed = speed_data | speed<<5;
// printf("rearspeed=%X.\r\n",speed);
@ -352,7 +353,8 @@ void ASB_speed_event_handing(int *buf){
// printf("data3=%X.\r\n",speed_data);
speed_flag = getBitValue(data,4);
// printf("rearflag=%d.\r\n",speed_flag);
if(!speed_flag){
// if(!speed_flag){
if(1){
speed = speed_data | speed<<3;
// printf("rearspeed=%X.\r\n",speed);
@ -385,6 +387,54 @@ void ASB_speed_event_handing(int *buf){
#endif
}
void ASB_141_speed_event_handing(int *buf){
#ifdef UI_VIEW_QUICKLY_ARRANGE
uint8_t data = 0;
uint8_t speed_data = 0;
uint8_t speed_flag = 0;
uint16_t speed = 0;
uint32_t trip = 0;
uint32_t total = 0;
uint16_t display_speed = 0;
*(buf++)&0xFF;
*(buf++)&0xFF;
*(buf++)&0xFF;
*(buf++)&0xFF;
speed = *(buf++)&0xFF;
data = *(buf++)&0xFF;
speed_data = getBit5Value(data,3);
speed = speed_data | speed<<5;
speed = (int)(speed * 0.05625);//偏移系数
display_speed = speed;//UI显示上浮8%
// printf("display_speed=%X>%d,",speed,speed);
speed = (int)(speed * 0.92);
// printf("mile_speed=%X>%d.\r\n",speed,speed);
total_mile += calculateTotalDistance(speed);
if(display_speed>=255)
display_speed = 255;
Set_sys_velocity(display_speed);
trip = flash_trip_mile + total_mile;
total = flash_total_mile + total_mile;
if((int)(total_mile)>=1 && (((int)total_mile)%1000 ==0) && total != total_flag){
save_total_mile = 1;
total_flag = total;
}
Set_sys_trip_mileage(trip);
Set_sys_total_mileage(total);
#endif
}
void speed_event_handing(int *buf){
uint16_t veer_velocity = 0;
uint16_t eng_temp = 0;
@ -403,13 +453,15 @@ void speed_event_handing(int *buf){
speed = *(buf++)&0xFF;
display_speed = speed;//UI显示上浮8%
speed = (int)(speed * 0.92);
#else
*(buf++)&0xFF;
#endif
*(buf++);
eng_temp = *(buf++) &0xFF;
eng_temp = (*(buf++)&0xFF) | eng_temp<<8;
*(buf++);
// *(buf++);
#if SPEED_DATA_CAN
if(veer_velocity>16384)
veer_velocity = 16384;
@ -1254,7 +1306,7 @@ void information_win_init(widget_t* win){
widget_set_text_utf8(child,tmpStr);
child = widget_lookup(win, "pcb", TRUE);
tk_snprintf(tmpStr, sizeof(tmpStr), "%s V%d.%d",Get_device_produce_num(),Get_device_hardware_version_host(),Get_device_hardware_version_order());
tk_snprintf(tmpStr, sizeof(tmpStr), "%s V%d.%d",MCU_INFO_LABEL,Get_device_hardware_version_host(),Get_device_hardware_version_order());
widget_set_text_utf8(child,tmpStr);
child = widget_lookup(win, "bt", TRUE);

View File

@ -77,5 +77,6 @@ void list_theme_button2_init(void);
void list_theme_button4_init(void);
void speed_event_handing(int *buf);
void ASB_141_speed_event_handing(int *buf);
#endif