串口屏LUA例程-音频播放器V1.0

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

LUA例程-音频播放器V1.0

工程技术笔记

修订历史

版本日期原因编制审查V1.02019/02/28创建文档林青田刘启鑫

目录

1.适合范围 (1)

2.开发环境版本 (2)

3.概述 (3)

4.参考资料.........................................................................错误!未定义书签。

5.教程实现 (4)

5.1准备工程素材 (4)

5.1.1硬件平台 (4)

5.1.2UI素材准备 (4)

5.1.3LUA编辑器 (5)

5.2API函数说明 (6)

5.3实现功能 (8)

5.3.1工程配置 (8)

5.3.2程序具体解析 (8)

6.完整程序清单 (13)

7.免责声明 (24)

1.适合范围

该文档适合所有广州大彩物联型系列。

2.开发环境版本

1.VisualTFT软件版本:V3.0.0.944及以上的版本。

版本查看:

a)打开VisualTFT软件启动页面如图2-1软件版本,右上角会显示的软件版本号;

图2-1软件版本

b)打开VisualTFT,在软件右下角可以查看软件版本图2-2软件版本,

最新版本可登录大彩官网进行下载。

图2-2软件版本

2.串口屏硬件版本:V

3.0.301.0及以上的版本。

版本查看:

a)查看屏幕背面版本号贴纸;

b)VisualTFT与屏幕联机成功后,右下角显示的版本号。

3.LUA语言版本V5.5。

3.概述

物联型串口屏通过LUA脚本配合工程可以实现播放循环屏内部或者外部音频的功能。

4.教程实现

本文将分为以下是3个阶段讲述教程DEMO是如何实现的:

1.准备工程素材,

2.实现功能,

3.下载工程。

4.1准备工程素材

在实现教程DEMO前需要作以下三个准备:

1.硬件平台,

2.UI素材,

3.LUA编辑器。

4.1.1硬件平台

该例程使用大彩物联型7寸串口屏DC80480W070为验证开发平台。如图5-1所示。

图5-1物联型7寸串口屏

其他尺寸的物联型串口屏均可借鉴此教程。

4.1.2UI素材准备

准备好相应的美工UI。如图5-2所示

图5-2素材准备

4.1.3LUA编辑器

上位机VisualTFT内部已集成了LUA开发编译环境,点击菜单栏工具,选择LUA编辑器,如图5-3所示。

图5-3打开LUA编辑器

打开编辑器后,Visual TFT画面如图5-4所示;

图5-4LUA编辑器

4.2API函数说明

大彩科技针对LUA脚本提供了丰富的API接口函数,具体函数可以查阅文档《物联型LUA脚本API》,如图5-5所示。

图5-5API函数文档

1.本教程文档中所涉及到的部分的相关接口函数如下

函数pause_sound(state)

注释:继续播放

State:播放状态,1继续播放,2停止播放函数play_sound(fliepath)

注释:暂停播放。

Fliepath:音频路径

函数set_volume(volume)

注释:设置音量。

Volume音量0~100

函数on_screen_change(screen)

注释:当画面切换至目标画面ID时,执行此回调函数

参数:screen表示目标画面ID

注:更多API函数请参考文档《物联型LUA脚本API_V1.0》

4.3实现功能

本章节主要讲述调用部分API函数在串口屏上的如何实现循环播放视频,DEMO分以下三个部分解释:

1.配置工程属性,

2.程序详细解析,

3.编译以及运行程序。

4.3.1工程配置

1.教程DEMO画面如图5-6所示,关于画面中控件具体属性配置请参考教程DEMO。

图5-6音频播放

4.3.2程序具体解析

大彩组态控件中的视频播放控件可以根据视频路径播放视频,同时为了可以播放更多的视频,我司在LUA脚本中提供了设置视频播放相关的API函数,通过这些API函数可以实视频循环播放的功能。详细程序分以下几个部分说明:

1.遍历外部存储的视频,将外部视频的路径遍历到一个表中,程序如所示;

local musicfilecount=0--音频计数

local musicplay_index=0--当前值

local music_names={}--音频表

local music_playing=1--播放标志位

local playing=0--播放标志位

local volume=80--音量

line_number=0--行号

local current_page=1--显示的页码(按上一页下一页查看所有的歌曲,不影响正在播放的歌曲)

now_page=1--正在播放的歌曲所在的页码

stop_music=0--音乐播放结束是否播放下一首的的标志位

pause_flag=0--暂停/继续或者是停止的标志位all_page=0--最大页数,初始化为零

u_dir='c:/'--U盘路径

music_path=""--音乐路径初始化

--获取扩展名

function getExtension(str)

return str:match(".+%.(%w+)$")

end

function listdir(rootpath)--遍历目录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=='wav'or ext=='mp3'then

music_names[musicfilecount]=path

musicfilecount=musicfilecount+1

end

else

listdir(path)

end

end

end

end

function on_usb_inserted(dir)--U盘函数

u_dir=dir--U盘路径

current_page=1

musicfilecount=0--音频计数

music_names={}--音频表

set_value(0,34,current_page)

set_value(0,35,1)

listdir(dir)--遍历目录

all_page=math.modf(musicfilecount/10)--计算总页数,如果总数等于10的倍数会多留一页update_music_ui()

end

2.显示歌曲名

--[[*************************************************************************** **Function name:update_music_ui

相关文档
最新文档