首页 > 其他分享 >lvgl 使用demo

lvgl 使用demo

时间:2024-08-23 11:53:42浏览次数:7  
标签:LV set obj DEFAULT demo lv 使用 lvgl left

实现效果

 

 代码

    #define OBJ_PARENT_WIDTH 970
    #define OBJ_PARENT_HEIGH 446
    #define OBJ_BTN_WIDTH 150
    #define OBJ_BTN_HEIGH 50
    #define OBJ_BTN_POS_X 120
    #define OBJ_BTN_POS_Y 40
    #define OBJ_ITEM_WIDTH 420
    #define OBJ_ITEM_HEIGH 50 
    #define OBJ_TABLE_HEIGH 60 
    #define OBJ_ITEM_STEP 60 
    #define OBJ_COLOR_BG_MAIN 0xfff2f2f2
    #define OBJ_COLOR_FONT_DEFAULT 0xFF2E2E2E
    #define OBJ_COLOR_FONT_BLUE 0xFF3B90F4
    #define OBJ_COLOR_FONT_GRAY 0xFFB3B3B3

    lv_obj_t* obj_p = lv_obj_create(appObjUiParent);
    lv_obj_center(obj_p);
    lv_obj_set_size(obj_p,OBJ_PARENT_WIDTH,OBJ_PARENT_HEIGH);
    lv_obj_set_style_border_width(obj_p,0,LV_STATE_DEFAULT);
    lv_obj_set_style_bg_color(obj_p,lv_color_hex(OBJ_COLOR_BG_MAIN),LV_STATE_DEFAULT);
    lv_obj_set_style_pad_all(obj_p,0,LV_STATE_DEFAULT);
    lv_obj_set_style_text_font(obj_p, &lv_font_montserrat_24, LV_STATE_DEFAULT); //设置字体大小
    lv_obj_set_style_text_color(obj_p,lv_color_hex(OBJ_COLOR_FONT_DEFAULT),LV_STATE_DEFAULT);


    // 创建两个obj 左右各一个,使用btn按钮作为基座,上面label左右对齐
    lv_obj_t * obj_left_face = lv_obj_create(obj_p);
    lv_obj_align(obj_left_face,LV_ALIGN_LEFT_MID,0,0);
    lv_obj_set_size(obj_left_face, OBJ_PARENT_WIDTH/2, OBJ_PARENT_HEIGH);
    // lv_obj_set_style_bg_color(obj_left_face,lv_color_hex(0xfff2f200),LV_STATE_DEFAULT);
    lv_obj_set_style_bg_opa(obj_left_face,LV_OPA_TRANSP,LV_STATE_DEFAULT);
    lv_obj_set_style_border_width(obj_left_face,0,LV_STATE_DEFAULT);
    lv_obj_set_style_pad_all(obj_left_face,0,LV_STATE_DEFAULT);
    lv_obj_set_style_outline_width(obj_left_face,0,LV_STATE_DEFAULT);

    // 摄像头
    if(1){
        // canvas
        #define CAMERA_SHOW_WIDTH 240
        #define CAMERA_SHOW_HEIGH 240
        static unsigned char bufCameraBigCanvas[CAMERA_SHOW_WIDTH*CAMERA_SHOW_HEIGH*4];

        lv_obj_t* appObj_canvas_p=lv_obj_create(obj_left_face);
        lv_obj_set_size(appObj_canvas_p,CAMERA_SHOW_WIDTH+50, CAMERA_SHOW_HEIGH+50);
        lv_obj_set_style_bg_opa(appObj_canvas_p,LV_OPA_0,LV_STATE_DEFAULT);
        lv_obj_set_style_border_width(appObj_canvas_p,0,LV_STATE_DEFAULT);
        lv_obj_set_style_radius(appObj_canvas_p,0,LV_STATE_DEFAULT);
        lv_obj_set_style_outline_width(appObj_canvas_p,0,LV_STATE_DEFAULT);
        lv_obj_align(appObj_canvas_p, LV_ALIGN_TOP_MID, 0, 0);
        
        // CANVAS
        lv_obj_t* appObjCamera = lv_canvas_create(appObj_canvas_p);//lv_scr_act()
        lv_obj_align(appObjCamera, LV_ALIGN_CENTER, 0, 0);
        lv_obj_set_size(appObjCamera,CAMERA_SHOW_WIDTH, CAMERA_SHOW_HEIGH);
        lv_obj_set_style_radius(appObjCamera,CAMERA_SHOW_WIDTH/2,LV_STATE_DEFAULT);
        lv_obj_set_style_border_color(appObjCamera,lv_color_hex(0xffffffff),LV_STATE_DEFAULT);
        lv_obj_set_style_border_width(appObjCamera,0,LV_STATE_DEFAULT);

        lv_canvas_set_buffer(appObjCamera, bufCameraBigCanvas, CAMERA_SHOW_WIDTH, CAMERA_SHOW_HEIGH, LV_IMG_CF_TRUE_COLOR_ALPHA);mydebug;
        // lv_canvas_copy_buf(appObjCamera,bufCameraBigCanvas,0,0,CAMERA_SHOW_WIDTH, CAMERA_SHOW_HEIGH);mydebug;
        // lv_obj_invalidate(appObjCamera);// 主动触发重绘指令

        lv_obj_t* appObj_p2=lv_obj_create(appObj_canvas_p);
        lv_obj_set_size(appObj_p2,CAMERA_SHOW_WIDTH+4, CAMERA_SHOW_HEIGH+4);
        lv_obj_set_style_border_width(appObj_p2,4,LV_STATE_DEFAULT);
        lv_obj_set_style_radius(appObj_p2,CAMERA_SHOW_WIDTH/2+2,LV_STATE_DEFAULT);
        lv_obj_set_style_border_color(appObj_p2,lv_color_hex(0xffffffff),LV_STATE_DEFAULT);
        lv_obj_set_style_bg_opa(appObj_p2,LV_OPA_0,LV_STATE_DEFAULT);
        lv_obj_align(appObj_p2, LV_ALIGN_CENTER, 0, 0);
    }
    // 弹窗,按钮
    if(1){
        // 中间弹窗 // xxx:录入中,录入成功,录入超时,录入失败  ---:--
        lv_obj_t* obj_left_face_state=lv_label_create(obj_left_face);
        lv_obj_align(obj_left_face_state, LV_ALIGN_TOP_MID, 0, 290);
        lv_label_set_text(obj_left_face_state,"---:--");
        lv_obj_set_style_text_color(obj_left_face_state,lv_color_hex(OBJ_COLOR_FONT_GRAY),LV_STATE_DEFAULT);
        // 左侧按钮
        lv_obj_t* obj_left_face_btn_l=lv_btn_create(obj_left_face);
        lv_obj_set_size(obj_left_face_btn_l,OBJ_BTN_WIDTH,OBJ_BTN_HEIGH);
        lv_obj_t* obj_left_face_btn_l_text=lv_label_create(obj_left_face_btn_l);
        lv_obj_center(obj_left_face_btn_l_text);
        lv_label_set_text(obj_left_face_btn_l_text,"btn1");
        lv_obj_align(obj_left_face_btn_l, LV_ALIGN_BOTTOM_MID, -OBJ_BTN_POS_X, -OBJ_BTN_POS_Y);
        // 右侧按钮
        lv_obj_t* obj_left_face_btn_r=lv_btn_create(obj_left_face);
        lv_obj_set_size(obj_left_face_btn_r,OBJ_BTN_WIDTH,OBJ_BTN_HEIGH);
        lv_obj_t* obj_left_face_btn_r_text=lv_label_create(obj_left_face_btn_r);
        lv_obj_center(obj_left_face_btn_r_text);
        lv_label_set_text(obj_left_face_btn_r_text,"btn2");
        lv_obj_align(obj_left_face_btn_r, LV_ALIGN_BOTTOM_MID, OBJ_BTN_POS_X, -OBJ_BTN_POS_Y);

        // 下划线 新增记录
        if(1){
            lv_obj_t* obj_left=lv_label_create(obj_left_face);
            lv_obj_align(obj_left,LV_ALIGN_BOTTOM_MID,0,-5);
            lv_label_set_text(obj_left,"new record");
            // lv_obj_set_style_text_decor(obj_left,LV_TEXT_DECOR_UNDERLINE,LV_STATE_DEFAULT);// 文字下划线
            lv_obj_set_style_text_font(obj_left, &lv_font_montserrat_20, LV_STATE_DEFAULT); //设置字体大小
            lv_obj_set_style_text_color(obj_left,lv_color_hex(OBJ_COLOR_FONT_DEFAULT),LV_STATE_DEFAULT);

            lv_obj_t * obj_left_1 = lv_btn_create(obj_left_face);
            lv_obj_set_size(obj_left_1, OBJ_BTN_WIDTH, 30);
            lv_obj_align(obj_left_1,LV_ALIGN_BOTTOM_MID,0,-5);
            lv_obj_set_style_bg_opa(obj_left_1,LV_OPA_TRANSP,LV_STATE_DEFAULT);
            lv_obj_set_style_border_width(obj_left_1,2,LV_STATE_DEFAULT);
            lv_obj_set_style_border_color(obj_left_1,lv_color_hex(0xFFD9D9D9),LV_STATE_DEFAULT);
            lv_obj_set_style_border_side(obj_left_1,LV_BORDER_SIDE_BOTTOM,LV_STATE_DEFAULT);//边框
            lv_obj_set_style_pad_all(obj_left_1,0,LV_STATE_DEFAULT);
            lv_obj_set_style_outline_width(obj_left_1,0,LV_STATE_DEFAULT);
            lv_obj_set_style_radius(obj_left_1,0,LV_STATE_DEFAULT);
            lv_obj_set_style_shadow_ofs_x(obj_left_1,0,LV_STATE_DEFAULT);
            lv_obj_set_style_shadow_ofs_y(obj_left_1,0,LV_STATE_DEFAULT);
            lv_obj_set_style_shadow_width(obj_left_1,0,LV_STATE_DEFAULT);
        }
    }
    //lv_obj_add_flag(obj_left_face,LV_OBJ_FLAG_HIDDEN);

    lv_obj_t * obj_left_info = lv_obj_create(obj_p);
    lv_obj_align(obj_left_info,LV_ALIGN_LEFT_MID,0,0);
    lv_obj_set_size(obj_left_info, OBJ_PARENT_WIDTH/2, OBJ_PARENT_HEIGH);
    lv_obj_set_style_bg_opa(obj_left_info,LV_OPA_TRANSP,LV_STATE_DEFAULT);
    lv_obj_set_style_border_width(obj_left_info,0,LV_STATE_DEFAULT);
    lv_obj_set_style_pad_all(obj_left_info,0,LV_STATE_DEFAULT);
    lv_obj_set_style_outline_width(obj_left_info,0,LV_STATE_DEFAULT);
    if(1){

        // 姓名
        lv_obj_t* obj_left_0=lv_label_create(obj_left_info);
        lv_obj_align(obj_left_0, LV_ALIGN_TOP_MID, 0, 12);
        lv_obj_set_style_text_font(obj_left_0, &lv_font_montserrat_28, LV_STATE_DEFAULT); //设置字体大小
        lv_label_set_text(obj_left_0,"namexxx");
        lv_obj_set_style_text_color(obj_left_0,lv_color_hex(OBJ_COLOR_FONT_BLUE),LV_STATE_DEFAULT);

        char* info[]={
            "tel","18531231298",
            "id","411325199505050578",
            "driver date","2050-05-05",
            "auth date","2050-05-05"
        };
        // tel
        for(int i=0;i<4;i++){
            lv_obj_t * obj_left_1 = lv_obj_create(obj_left_info);
            lv_obj_set_size(obj_left_1, OBJ_ITEM_WIDTH, OBJ_ITEM_HEIGH);
            lv_obj_align(obj_left_1,LV_ALIGN_TOP_MID,0,OBJ_ITEM_STEP*(i+1));
            lv_obj_set_style_bg_color(obj_left_1,lv_color_hex(0xFFD9D9D9),LV_STATE_DEFAULT);
            lv_obj_set_style_border_width(obj_left_1,0,LV_STATE_DEFAULT);
            lv_obj_set_style_pad_all(obj_left_1,0,LV_STATE_DEFAULT);
            lv_obj_set_style_outline_width(obj_left_1,0,LV_STATE_DEFAULT);

            lv_obj_t* obj_left=lv_label_create(obj_left_1);
            lv_obj_align(obj_left, LV_ALIGN_LEFT_MID, 10, 0);
            lv_label_set_text(obj_left,info[2*i+0]);

            lv_obj_t* obj_right=lv_label_create(obj_left_1);
            lv_obj_align(obj_right, LV_ALIGN_RIGHT_MID, -10, 0);
            lv_obj_set_style_text_font(obj_right, &lv_font_montserrat_20, LV_STATE_DEFAULT); //设置字体大小
            lv_obj_set_style_text_color(obj_right,lv_color_hex(OBJ_COLOR_FONT_GRAY),LV_STATE_DEFAULT);
            lv_label_set_text(obj_right,info[2*i+1]);
        }

        // 左侧按钮
        lv_obj_t* obj_left_face_btn_l=lv_btn_create(obj_left_info);
        lv_obj_set_size(obj_left_face_btn_l,OBJ_BTN_WIDTH,OBJ_BTN_HEIGH);
        lv_obj_t* obj_left_face_btn_l_text=lv_label_create(obj_left_face_btn_l);
        lv_obj_center(obj_left_face_btn_l_text);
        lv_label_set_text(obj_left_face_btn_l_text,"btn3");
        lv_obj_align(obj_left_face_btn_l, LV_ALIGN_BOTTOM_MID, -OBJ_BTN_POS_X, -OBJ_BTN_POS_Y);
        // 右侧按钮
        lv_obj_t* obj_left_face_btn_r=lv_btn_create(obj_left_info);
        lv_obj_set_size(obj_left_face_btn_r,OBJ_BTN_WIDTH,OBJ_BTN_HEIGH);
        lv_obj_t* obj_left_face_btn_r_text=lv_label_create(obj_left_face_btn_r);
        lv_obj_center(obj_left_face_btn_r_text);
        lv_label_set_text(obj_left_face_btn_r_text,"btn4");
        lv_obj_align(obj_left_face_btn_r, LV_ALIGN_BOTTOM_MID, OBJ_BTN_POS_X, -OBJ_BTN_POS_Y);
        
        lv_obj_add_event_cb(obj_left_face_btn_r, my_cb_text_handle, LV_EVENT_CLICKED,obj_left_info);
    }


    lv_obj_t * obj_right = lv_obj_create(obj_p);
    lv_obj_set_size(obj_right, OBJ_PARENT_WIDTH/2, OBJ_PARENT_HEIGH);
    // lv_obj_set_style_bg_color(obj_right,lv_color_hex(0xff00f2f2),LV_STATE_DEFAULT);
    lv_obj_set_style_bg_opa(obj_right,LV_OPA_TRANSP,LV_STATE_DEFAULT);
    lv_obj_align(obj_right,LV_ALIGN_RIGHT_MID,0,0);
    lv_obj_set_style_border_width(obj_right,0,LV_STATE_DEFAULT);
    lv_obj_set_style_pad_all(obj_right,0,LV_STATE_DEFAULT);
    lv_obj_set_style_outline_width(obj_right,0,LV_STATE_DEFAULT);
    if(1){
        lv_obj_t * obj_left_1 = lv_obj_create(obj_right);
        lv_obj_set_size(obj_left_1, OBJ_PARENT_WIDTH/2-10, OBJ_TABLE_HEIGH);
        lv_obj_align(obj_left_1,LV_ALIGN_TOP_LEFT,0,0);
        lv_obj_set_style_bg_opa(obj_left_1,LV_OPA_TRANSP,LV_STATE_DEFAULT);
        lv_obj_set_style_border_width(obj_left_1,1,LV_STATE_DEFAULT);
        lv_obj_set_style_border_color(obj_left_1,lv_color_hex(0xFFD9D9D9),LV_STATE_DEFAULT);
        lv_obj_set_style_border_side(obj_left_1,LV_BORDER_SIDE_LEFT|LV_BORDER_SIDE_BOTTOM,LV_STATE_DEFAULT);
        lv_obj_set_style_pad_all(obj_left_1,0,LV_STATE_DEFAULT);
        lv_obj_set_style_outline_width(obj_left_1,0,LV_STATE_DEFAULT);
        lv_obj_set_style_radius(obj_left_1,1,LV_STATE_DEFAULT);
        
        lv_obj_t* obj_left_0=lv_label_create(obj_left_1);
        lv_obj_align(obj_left_0, LV_ALIGN_CENTER, 0, 0);
        lv_obj_set_style_text_font(obj_left_0, &lv_font_montserrat_28, LV_STATE_DEFAULT); //设置字体大小
        lv_label_set_text(obj_left_0,"record");
        lv_obj_set_style_text_color(obj_left_0,lv_color_hex(OBJ_COLOR_FONT_BLUE),LV_STATE_DEFAULT);

        lv_obj_t * obj_list = lv_obj_create(obj_right);
        lv_obj_set_size(obj_list, OBJ_PARENT_WIDTH/2, OBJ_PARENT_HEIGH-OBJ_TABLE_HEIGH);
        lv_obj_set_style_bg_opa(obj_list,LV_OPA_TRANSP,LV_STATE_DEFAULT);
        lv_obj_align(obj_list,LV_ALIGN_TOP_LEFT,0,OBJ_ITEM_STEP);
        lv_obj_set_style_border_width(obj_list,0,LV_STATE_DEFAULT);
        lv_obj_set_style_pad_all(obj_list,0,LV_STATE_DEFAULT);
        lv_obj_set_style_outline_width(obj_list,0,LV_STATE_DEFAULT);

        // 渐变色
        static lv_style_t style;
        lv_style_init(&style);
        lv_style_set_radius(&style, 0);
        lv_style_set_bg_opa(&style, LV_OPA_80);
        lv_style_set_bg_color(&style, lv_color_hex(0xFFD9D9D9));
        lv_style_set_bg_grad_color(&style, lv_color_hex(OBJ_COLOR_BG_MAIN));
        lv_style_set_bg_grad_dir(&style, LV_GRAD_DIR_HOR);
        lv_style_set_bg_main_stop(&style, 0);//样式起点
        lv_style_set_bg_grad_stop(&style, 150);//样式结束位置

        static lv_style_t style_scroll;//滚动条颜色设置
        lv_style_init(&style_scroll);
        lv_style_set_bg_color(&style_scroll, lv_color_hex(OBJ_COLOR_FONT_BLUE));
        lv_style_set_width(&style_scroll,6);

        lv_obj_scroll_to_y(obj_list,OBJ_ITEM_STEP*20,LV_ANIM_OFF); //滑动到底部
        lv_obj_add_style(obj_list, &style_scroll, LV_PART_SCROLLBAR);//设置滚动条样式

        char* info[]={
            "namexx","18531231298"
        };
        lv_group_t * group=lv_group_create();
        for(int i=0;i<20;i++){
            lv_obj_t * obj_left_1 = lv_btn_create(obj_list);
            lv_group_add_obj(group,obj_left_1);
            lv_group_focus_obj(obj_left_1);
            lv_obj_set_size(obj_left_1, OBJ_PARENT_WIDTH/2-10, OBJ_TABLE_HEIGH);
            lv_obj_align(obj_left_1,LV_ALIGN_TOP_LEFT,0,OBJ_ITEM_STEP*(i));
            lv_obj_set_style_bg_opa(obj_left_1,LV_OPA_TRANSP,LV_STATE_DEFAULT);
            lv_obj_set_style_border_width(obj_left_1,1,LV_STATE_DEFAULT);
            lv_obj_set_style_border_color(obj_left_1,lv_color_hex(0xFFD9D9D9),LV_STATE_DEFAULT);
            lv_obj_set_style_border_side(obj_left_1,LV_BORDER_SIDE_LEFT|LV_BORDER_SIDE_BOTTOM,LV_STATE_DEFAULT);
            lv_obj_set_style_pad_all(obj_left_1,0,LV_STATE_DEFAULT);
            lv_obj_set_style_outline_width(obj_left_1,0,LV_STATE_DEFAULT);
            lv_obj_set_style_radius(obj_left_1,0,LV_STATE_DEFAULT);
            lv_obj_set_style_shadow_ofs_x(obj_left_1,0,LV_STATE_DEFAULT);
            lv_obj_set_style_shadow_ofs_y(obj_left_1,0,LV_STATE_DEFAULT);
            lv_obj_set_style_shadow_width(obj_left_1,0,LV_STATE_DEFAULT);

            lv_obj_set_style_border_color(obj_left_1,lv_color_hex(OBJ_COLOR_FONT_BLUE),LV_STATE_FOCUSED);
            lv_obj_set_style_border_width(obj_left_1,3,LV_STATE_FOCUSED);
            lv_obj_set_style_border_side(obj_left_1,LV_BORDER_SIDE_LEFT,LV_STATE_FOCUSED);
            lv_obj_set_style_shadow_ofs_x(obj_left_1,-1,LV_STATE_FOCUSED);
            lv_obj_set_style_shadow_ofs_y(obj_left_1,1,LV_STATE_FOCUSED);
            lv_obj_set_style_shadow_width(obj_left_1,1,LV_STATE_FOCUSED);
            lv_obj_add_style(obj_left_1, &style, LV_STATE_FOCUSED); //为对象增加 样式

            

            lv_obj_t* obj_left=lv_label_create(obj_left_1);
            lv_obj_align(obj_left, LV_ALIGN_LEFT_MID, 10, 0);
            lv_label_set_text(obj_left,info[0]);
            lv_obj_set_style_text_color(obj_left,lv_color_hex(OBJ_COLOR_FONT_DEFAULT),LV_STATE_DEFAULT);
            lv_obj_set_style_text_color(obj_left,lv_color_hex(OBJ_COLOR_FONT_BLUE),LV_STATE_FOCUSED);

            // 聚集焦点
            lv_obj_add_event_cb(obj_left_1, my_cb_text_handle, LV_EVENT_FOCUSED,obj_left);
            lv_obj_add_event_cb(obj_left_1, my_cb_text_handle, LV_EVENT_DEFOCUSED,obj_left);

            lv_obj_t* obj_right=lv_label_create(obj_left_1);
            lv_obj_align(obj_right, LV_ALIGN_RIGHT_MID, -10, 0);
            lv_obj_set_style_text_font(obj_right, &lv_font_montserrat_20, LV_STATE_DEFAULT); //设置字体大小
            lv_obj_set_style_text_color(obj_right,lv_color_hex(OBJ_COLOR_FONT_GRAY),LV_STATE_DEFAULT);
            lv_label_set_text(obj_right,info[1]);

        }
        
    }

 

标签:LV,set,obj,DEFAULT,demo,lv,使用,lvgl,left
From: https://www.cnblogs.com/RYSBlog/p/18375728

相关文章

  • 微前端架构:使用不同框架构建可扩展的大型应用
    随着前端技术的发展,构建和维护大型应用变得愈发复杂。传统的单体前端架构逐渐暴露出诸多问题,如代码臃肿、构建时间过长、团队协作困难等。为了解决这些问题,微前端架构应运而生。微前端架构允许我们将一个大型应用拆分成多个独立的子应用,每个子应用可以使用不同的技术栈独立......
  • 使用gis计算水库库容和淹没范围
    水库库容计算自然有一连串的公式这种传统方式,但基于gis和dem计算出的库容无疑更准确、客观、直观。水库库容的思路就是计算某一高程淹没面下和地面高程之间的体积,对gis来说步骤就是确定研究区域→捕捉倾泻点→生成流域面→使用流域面裁剪原始DEM→使用“存储容量”或“表面体积”......
  • LVGL实现圆形摄像头数据的一个实际测试可行想法
    lvgl显示原始像素图像数据,常用canvas此处为了显示出一个圆,我进行多方测试,发现canvas只能将图像数据原样显示,为了显示出圆,就需要在原始数据上做文章,可以用算法,直接做出来一个圆,其他区域,透明度设置为0x00 实际显示时,发现锯齿很严重,解决这个问题,可以在canvas上再放一......
  • 使用 reloadNuxtApp 强制刷新 Nuxt 应用
    title:使用reloadNuxtApp强制刷新Nuxt应用date:2024/8/22updated:2024/8/22author:cmdragonexcerpt:reloadNuxtApp是一个强大的工具,用于在Nuxt3应用中强制刷新页面。通过不同的选项,你可以控制刷新行为、指定路径、保存状态等。categories:前端开发tags:......
  • laravel发送邮件的使用方法?有哪些技巧?
    laravel发送邮件怎么实现?如何使用Laravel发送邮件?Laravel,作为一个流行的PHP框架,提供了强大且灵活的邮件发送功能,使得开发者可以轻松地集成邮件服务到他们的应用中。AokSend将详细介绍如何在Laravel中使用laravel发送邮件功能。laravel发送邮件:配置服务这通常涉及到编辑.env......
  • Robot Operating System——使用VSCode调试ROS2代码
    大纲安装插件/组件VSCode插件调试组件自定义cmake命令配置CMakeTools新增CMakePresets.json修改默认的cmake编译Debug版配置测试环境启动测试总结参考资料工欲善其事必先利其器。直接使用GDB调试代码毕竟不是很方便,我们将探索如何使用VSCode调试ROS2的代码。我们......
  • 使用光影魔术手的色彩调整功能,让你的照片更具活力
    前言你是否曾经因为处理繁琐的照片而感到无从下手?是否在忙碌的工作中想要快速修整图片,却因为复杂的软件操作而拖延了时间?光影魔术手就是为了解决这些问题而诞生的。它不仅是一款功能强大的批量图像处理工具,更是一位高效的助手,帮助你在繁忙的工作中节省宝贵的时间,提高办公效率,......
  • ToDesk支持多系统互控,使用教程来了!
    能多系统跨设备进行远控的软件被我找到了!就是ToDesk远程控制......
  • .net使用Freesql连接瀚高数据库
    默认情况下Freesql可以使用PostgreSQL的连接方式连接,如果是md5加密的varisdatabase=MyRedis.GetStringKey("DataBaseType");varsqlConnStr="Server=192.168.1.111;Port=5866;UserId=root;Password=123456;Database=databasename;searchpath=moshi";FreeSql.D......
  • 使用Ollama本地离线体验SimpleRAG(手把手教程)
    Ollama介绍Ollama是一个开源项目,专注于开发和部署大语言模型,特别是像LLaMA这样的模型,用于生成高质量的文本和进行复杂的自然语言处理任务。Ollama的目标是让大语言模型的运行和使用变得更加容易和普及,而无需复杂的基础设施或深度的机器学习知识。GitHub地址:https://github.com/......