本文目录
- 1. 1. API
- 2. 2. 播放器画面控件表
- 3. 3. 案例:自动连播列表
播放 SD 卡上的 MP3:播放/停止/暂停/继续,加音量控制。适合语音提示、告警音、操作反馈。
1. API
| 函数 | 说明 |
|---|---|
| play_sound(filename) | 播放音频文件(绝对路径,含盘符) |
| stop_sound() | 停止播放 |
| pause_sound() | 暂停(保留位置) |
| resume_sound() | 从暂停位置继续 |

2. 播放器画面控件表
| Address | 控件/用途 |
|---|---|
| LW1000 | 上一页/下一页 |
| LW1001 | 上一首/下一首 |
| LW1002 | 播放/暂停切换 |
| LW1003 / LW1004 | 当前页 / 总页数 |
| LW1005 | SD 卡是否有歌曲(0/1) |
| LW1100~LW1200 | 歌名(128 字节) |
| LW0140 | 音量 |
| LW0143 | 播放进度 |
3. 案例:自动连播列表
on_init 列举 SD 卡歌曲到缓存表;点击播放、上一首/下一首切换;on_run 里循环检测播放状态,播完自动下一首:
musicNameListTb = {}
curPalyIindex = 1
_IS_PLAYING_ = 0
function on_init()
list_dir("1:/music") -- 列举音乐目录
end
function on_list_dir(path, filename, type, fsize)
if type == 1 and string.find(filename, ".mp3") then
table.insert(musicNameListTb, path .. "/" .. filename)
end
end
function on_update(slave, vtype, addr)
if vtype == VT_LW then
if addr == 0x1001 then
local key = get_uint16(VT_LW, 0x1001)
if key == 0 then curPalyIindex = curPalyIindex - 1 end
if key == 1 then curPalyIindex = curPalyIindex + 1 end
if curPalyIindex < 1 then curPalyIindex = #musicNameListTb end
if curPalyIindex > #musicNameListTb then curPalyIindex = 1 end
stop_sound()
play_sound(musicNameListTb[curPalyIindex])
elseif addr == 0x1002 then
local sw = get_uint16(VT_LW, 0x1002)
if sw == 1 then
_IS_PLAYING_ = 1
play_sound(musicNameListTb[curPalyIindex])
else
_IS_PLAYING_ = 0
pause_sound()
end
end
end
end
function on_run(screen)
updatMisucPlayState() -- 循环检测播放状态, 播完自动下一首
end
音频三注意:①文件名路径必须带盘符(M系列 「1:/music/xx.mp3」);②SD 卡没插时 play_sound 无效果但不会报错,界面要靠 LW1005 隐藏控制;③同时只支持一个音频流,播放新文件前先 stop_sound()。
整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com)LUA 教程「音频播放」,版权归大彩科技所有。
发表回复