啃小安派代码-13-小安派AiPi-Knob-ClipsTool

[复制链接]
查看1194 | 回复7 | 2023-12-15 11:46:24 | 显示全部楼层 |阅读模式
本帖最后由 ckdsx.cn 于 2023-12-15 11:57 编辑

工程目录:AiPi-Open-Kits/ AiPi-Knob-ClipsTool
文件目录:AiPi-Open-Kits/ AiPi-Knob-ClipsTool / main / main.c



AiPi-Knob-ClipsTool 剪辑助手概述
AiPi-Knob-ClipsTool 剪辑助手是一个HID键盘设备, 拥有蓝牙的电脑可以识别到它,并且与其连接。 它只有一个功能,就是控制视频剪辑软件的时间轴,方便视频剪辑人员可以对时间轴进行帧的调整。 AiPi-Knob-ClipsTool 的是运行在AiPi-Knob智能旋钮之上,因此,在控制时间轴的时候,直接使用旋钮进行控制。
1.png
使用方法1.连接 AiPi-Knob-ClipsTool
AiPi-Knob-ClipsTool设计了两个常用软件视频的界面,但是它没有连接任何电脑时,它不会显示任何界面,只会显示提示信息:
2.png
这时,需要使用电脑的蓝牙搜索并连接AiPi-Knob屏幕显示的AiPi-CilpsTool名称的蓝牙设备,当连接成功之后,AiPi-Knob-ClipsTool就会显示软件名称,默认会显示Pr.
3.png
2.时间轴控制
当AiPi-Knob-ClipsTool 连接上电脑之后,可以点击旋钮进入对应软件的控制界面。随之在电脑上打开视频剪辑软件并打开项目,选中时间轴之后,顺时针转动旋钮可以让时间轴前进,逆时针转动控制时间轴的后退。长按3s可以退出控制页面,旋钮的控制功能会切换成AiPi-Knob-ClipsTool页面切换。

                               
登录/注册后可看大图

编译与烧录1.接线
AiPi-Knob 硬件设计已经把TTL串口集成在板子上了,所以只需要使用一根Type-C数据线接入Type-C USB烧录口即可。
2.编译及烧录
在 AiPi-Knob-ClipsTool 目录下,使用:
make make flash COMX=xxx


根据提示点击AiPi-Knob 的复位键即可。
3.其他
关于修改蓝牙设备名称,可以通过修改代码components/BLE_HID/ble_hid_dev.h 中的 BLE_DEV_NAME 宏的值,可以修改蓝牙设备名称。

                               
登录/注册后可看大图
5.png



主程序代码main.c
--------------------------------------------

/**
* @file main.c
* @author your name (you@domain.com)
* @brief
* @version 0.1
* @date 2023-08-22
*
* @copyright Copyright (c) 2023
*
*/

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <FreeRTOS.h>
#include <task.h>
#include "board.h"
#include "log.h"
#include "mem.h"

#include "easyflash.h"
#include "bflb_mtd.h"
//lvgl
#include "lv_conf.h"
#include "lvgl.h"
#include "lv_port_disp.h"
#include "lv_port_indev.h"
//GuiGuider UI
#include "lv_user_config.h"
#include "gui_guider.h"
#include "events_init.h"
#include "custom.h"
//BLE
#include "ble_hid_dev.h"
//WiFi
#include "wifi_mgmr_ext.h"
#include "wifi_mgmr.h"
#include "wifi_event.h"

//custom
#include "encoder.h"
#define DBG_TAG "MAIN"

/**************************************/

/*****************  extern  ************/

lv_ui guider_ui;
/**************************************/
static int bl61x_get_heap_size(void);
static void bl61x_show_heap_size_task(void* arg)
{
    while (1) {
        bl61x_get_heap_size();
        vTaskDelay(3000/portTICK_PERIOD_MS);
    }
}

int main(void)
{
    board_init();  //初始化开发板

    tcpip_init(NULL, NULL);  //初始化网络
    wifi_start_firmware_task();//一定要使用,不然启动不了BLE

    bflb_mtd_init();
    easyflash_init();  //存储读写初始化

    lv_init();
    lv_port_disp_init();
    lv_port_indev_init();
    setup_ui(&guider_ui);
    custom_init(&guider_ui);
    events_init(&guider_ui);
    // indev_encoder_init();

    lv_log_register_print_cb(lv_log_print_g_cb);

    //hid 任务
    xTaskCreate(ble_hid_task, "ble_hid_task", 1024, NULL, 2, (xTaskHandle*)&hid_task);
    //lvgl 心跳任务
    xTaskCreate(lvgl_tick_task, (char*)"lvgl", 1024, NULL, 3, NULL);
    //内存打印任务
    xTaskCreate(bl61x_show_heap_size_task, (char*)"heap", 1024, NULL, 4, NULL);
    //旋钮任务
    xTaskCreate(button_process_task, (char*)"encoder", 1024, (void*)&guider_ui, 5, (xTaskHandle*)&encoder_task);
    vTaskStartScheduler();
}

static int bl61x_get_heap_size(void)
{
    struct meminfo info1 = { 0 };
    struct meminfo info2 = { 0 };
    uint32_t total_free_size = 0;
    // return xPortGetFreeHeapSize();

    bflb_mem_usage(KMEM_HEAP, &info1);  //存储使用记录
    bflb_mem_usage(PMEM_HEAP, &info2);

    total_free_size = info1.free_size;
    LOG_F("heap size  KMEM heap=%d   PMEM heap=%d", info1.free_size, info2.free_size);
    return total_free_size;
}

回复

使用道具 举报

1084504793 | 2023-12-15 12:41:29 | 显示全部楼层
学到了
回复

使用道具 举报

干簧管 | 2023-12-15 13:06:56 | 显示全部楼层
回复

使用道具 举报

爱笑 | 2023-12-15 15:07:37 | 显示全部楼层
用心做好保姆工作
回复

使用道具 举报

qwe2079282957 | 2023-12-15 15:17:46 | 显示全部楼层
knob原来是键盘啊
回复 支持 反对

使用道具 举报

san | 2023-12-15 23:58:09 | 显示全部楼层
学到了
回复

使用道具 举报

bzhou830 | 2023-12-17 16:40:05 来自手机 | 显示全部楼层
点赞
选择去发光,而不是被照亮
回复

使用道具 举报

WT_0213 | 2023-12-18 09:24:45 | 显示全部楼层
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则