bash
label 显示的文本格式是 %.4fmm,例如 12.3456mm。
目标是从文本中提取出 12.3456 并转为 double 类型。
c
lv_label_set_text(guider_ui.screen_1_label_1, position_mm_buffer);
就可以更新了
lv_obj_invalidate(guider_ui.screen_1_label_1);更新后重绘
char View_VUE[32]; //更新显示
snprintf(View_VUE, sizeof(View_VUE), "%.4fmm", circleVUE_Min_extreme);
if (lv_scr_act() == guider_ui.screen_1)
{ // 检查当前活动屏幕是否为屏幕1
if (lv_obj_is_valid(guider_ui.screen_1_label_6))
{
lv_label_set_text(guider_ui.screen_1_label_6, View_VUE);
lv_obj_invalidate(guider_ui.screen_1_label_6);
}
}
c
// 获取 label 文本
const char *text = lv_label_get_text(guider_ui.screen_1_label_6);
// 提取数值部分(去掉 单位"mm")
char value_str[32];
sscanf(text, "%[^m]", value_str);
// 转为 double
double value = atof(value_str);
确保 label 文本格式固定:如果格式变化(例如单位位置不同),需要调整字符串处理逻辑。
错误处理:如果 label 文本为空或格式错误,atof() 会返回 0,需要额外检查。
内存安全:value_str 长度要足够容纳数值字符串,避免溢出。