html如何遍历读取sd卡的音频,大彩物联型串口屏遍历U盘、SD卡中音频和视频文件操作说明-专业自动化论坛-中国工控网论坛...

大彩物联型串口屏通过添加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

……

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

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

function update_music_ui()                                  --将遍历出来的音频名字更新到音频画面

--向前播放

if videoplay_index

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

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

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值