5662|0

24

帖子

73

TA的资源

一粒金砂(中级)

楼主
 

大彩物联型串口屏遍历U盘、SD卡中音频和视频文件操作说明 [复制链接]

本帖最后由 dcolour2019 于 2019-7-2 14:36 编辑

大彩物联型串口屏通过添加LUA程序可以实现遍历外部的U盘或SD卡中的文件。在广州大彩提供的范例工程demo中,可以实现遍历外部U盘和SD卡下目录所有的音频和视频文件并播放遍历出来的音频和视频。
  大彩物联型串口屏实现遍历U盘中、SD卡中的视频和音频需完成以下4个步骤:
  1.将工程需要的视频进行格式转换(MP4格式);(参考文档《串口屏如何播放视频》);
  2.将视频或音频添加到U盘或SD卡中;
  3.在工程配置;(具体配置参考例程Demo);
  4.编写LUA程序。

工程配置
  例程画面中一共有三个画面,分别是首页、视频、音频画面。
  1.首页画面配置如下图所示;


2.视频画面配置,如下图所示;画面中的视频播放控件的属性窗口中“播放结束时”设为发送通知,如下图所示


3.音频画面配置,如下图所示;编号1到10的控件为文本控件用于显示遍历出来的音频名字,编号11到20为图标控件用于提示当前正在播放的音频,编号35到44为按钮控件,按下按钮播放对应文本框中的音频。

编写LUA脚本
工程创建时在工程目录下会生成一个main.lua文件,点击Visual TFF软件的工具栏选择LUA编程后可以编写main.lua文件,如下图所示;



当串口屏检测到U盘或SD卡插入时会调用LUA脚本的函数on_sd_inserted(dir)或是on_usb_inserted(dir)并将U盘或者SD卡的路径传如函数中;只需要在函数on_sd_inserted(dir)或是on_usb_inserted(dir)中调用遍历目录的函数即可实现遍历SD卡或U盘的音频和视频文件,程序如下:

    ……
--当检测到SD卡插入串口屏后会调用此函数

function on_sd_inserted(dir)                                     -- SD卡回调函数
     listdir(dir)                                               --遍历目录
end
function on_usb_inserted(dir)                                    -- U盘函数
     listdir(dir)                                               --遍历目录
end
    ……
---获取扩展名
function  getExtension(str)                                       
    return str:match(".+%.(%w+)$")                             --调用LUA的库函数获取字符串
end


 
--遍历目录的函数,将目录中的音频和视频文件遍历出来

function  listdir(rootpath)                                         
    for entry in lfs.dir(rootpath) do  
        if entry ~= '.' and entry ~= '..' then                             --跳过目录中的.和..
            local path = rootpath .. '/' .. entry  
            local attr = lfs.attributes(path)                            --获取指定路径的属性
            if  attr.mode ~= 'directory' then
                ext = getExtension(path)                          --获取扩展名
                if ext=='mp4' then                               --筛选MP4文件
                  videofilenames[videofilecount] = path
                  videofilecount = videofilecount+1
               end

               if ext == 'jpg'  or ext == 'jpeg' or ext=='png'  then      --筛选图片文件
                  pic_names[picfilecount] = path
                  picfilecount = picfilecount+1
               end
               if ext=='wav' or ext=='mp3' then                     --筛选音频文件
                  music_names[musicfilecount] = path
                  musicfilecount = musicfilecount+1
               end           
             else 
                listdir(path)                                     
            end  
        end  
    end  
end


……

如果成功遍历后,切换到音乐画面,如下图所示;会将插入串口屏的SD卡里的音频文件名显示在文本框中,LUA脚本程序如下:

function update_music_ui()                                  --将遍历出来的音频名字更新到音频画面
    --向前播放
    if videoplay_index<first_music_index then
      first_music_index = videoplay_index
    end
    --向后播放
    if videoplay_index>=first_music_index+10 then
       first_music_index = videoplay_index-9
    end
    for i=0,9 do
        if first_music_index+i<musicfilecount then
            set_visiable(2,11+i,1)                                         --图标
            local filename = string.match(music_names[first_music_index+i], ".+/(.+)")    
            set_text(2,1+i,'        '..filename)                           --显示音频名字
        else
            set_visiable(2,11+i,0)                                       --图标
            set_text(2,1+i,'')
        end
        
        --正在播放的音乐,图标和文字都高亮显示
        if first_music_index+i==videoplay_index then
            set_value(2,11+i,1)                                         --图标
            set_back_color(2,1+i,0x5aeb)
        else
            set_value(2,11+i,0)                                        --图标
            set_back_color(2,1+i,0x3186)
        end                
    end    
end 
function on_control_notify(screen,control,value)
    --load_config('e:/config.txt')    
    --load_ad('e:/sub.txt')
    if screen == 0 then                                          --首页
        if control==4 then                                     -- 按钮4按下
           playing_mode = 1
           change_screen(0)                                
         
        end
        if control==5 then                                     -- 按钮5按下
           playing_mode = 2 
           change_screen(2)                                  --切换到音频画面
           update_music_ui()                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      
            play_next_video()                                  --播放下一首歌

        end
        if control==6 then                                     --视频模式
           playing_mode = 0 
           change_screen(1)                                  --切换到视频画面    
           play_next_video()                                 --播放下一个视频
        end
    end


详细程序需要参考源文件,以上程序为截取源程序中的部分函数。

3.png (281.87 KB, 下载次数: 0)

3.png
此帖出自单片机论坛
点赞 关注
个人签名

专业提供TFT彩色串口显示屏、

 

回复
举报
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表