VisualHMI 音频播放:play_sound 系列与 MP3 自动连播

免费免费技术资料

这篇内容可直接阅读,适合用于基础学习和搜索引流。

本文目录
  1. 1. 1. API 总表
  2. 2. 2. 播放器控件地址表
  3. 3. 3. 遍历 SD 卡歌曲
  4. 4. 4. 播放控制逻辑

音频播放 API:播放 SD/U 盘里的音乐文件,配合播放器控件做完整的音乐播放器(播放/暂停/上下首/进度条/音量)。

1. API 总表

函数 说明
play_sound(filename) 播放音频,绝对路径(如 “1:/music/xx.mp3″)
stop_sound() 停止播放
pause_sound() 暂停
resume_sound() 继续播放

2. 播放器控件地址表

地址 用途
LW1000 左右翻页
LW1001 上一首/下一首
LW1002 播放/暂停(位状态指示灯:0-暂停/1-继续)
LW1003 当前页
LW1004 总页数
LW1005 SD 根目录是否有歌(位状态)
LW1100~1200 歌名文本列表
LW1240 播放当前时间
LW1250 总时间
LW1006 播放进度条
LW0140 音量

3. 遍历 SD 卡歌曲

musicNameListTb = {}      -- 歌名列表缓存
curPlayIndex = 1

function on_sd_inserted(dir)
  list_dir(dir)           -- 列 SD 卡根目录
end

function on_list_dir(path, filename, type, fsize)
  if type == 1 then
    local ext = string.sub(filename, -4)
    if ext == ".mp3" or ext == ".wav" then
      table.insert(musicNameListTb, filename)
      set_uint16(VT_LW, 0x1005, 1)   -- 有歌标志
    end
  end
end

4. 播放控制逻辑

function on_update(slave, vtype, addr)
  if vtype == VT_LW then
    if addr == 0x1002 then
      local v = get_uint16(VT_LW, 0x1002)
      if v == 1 then
        play_sound("1:/music/"..musicNameListTb[curPlayIndex])
      else
        pause_sound()
      end
    elseif addr == 0x1001 then
      -- 上一首/下一首:切换 curPlayIndex 后重新播放
      local v = get_uint16(VT_LW, 0x1001)
      if v == 1 and curPlayIndex > 1 then
        curPlayIndex = curPlayIndex - 1
      elseif v == 2 and curPlayIndex < #musicNameListTb then
        curPlayIndex = curPlayIndex + 1
      end
      play_sound("1:/music/"..musicNameListTb[curPlayIndex])
    end
  end
end

function on_run(screen)
  updatMisPlayState()     -- 检测播放状态,播完自动下一首
end
三个坑:①路径必须带设备前缀(M 系列 1:=SD/2:=U盘/3:=内部Flash),「1:/music/a.mp3」对、「1:music/a.mp3」错;②播放完不会自动切下一首,要自己在 on_run 里轮询播放状态(on_video_notify 类似机制);③音频格式按固件支持列表来,不支持的格式会静默失败——先拿一个已知能播的文件试。

整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com)LUA 教程「音频播放」,版权归大彩科技所有。

来源/工具信息 —— 点击展开
来源 Modbus中文网(modbus.cn) —— 国内领先的Modbus通信协议技术社区 分类 LUA 脚本 / 串口屏/HMI 开发 字数 1404 字 · 阅读约 4 分钟 更新 2026-08-05 永久链接 https://www.modbus.cn/51509.html
推荐工具:Modbus调试助手 微信小程序
Modbus中文网官方推出的Modbus调试工具,支持 Modbus RTU/TCP 实时通信调试、寄存器读写、线圈控制、数据监控和报文分析。 无需安装,微信搜索「Modbus调试助手」即可使用。 电脑端入口:https://www.modbus.cn/modbustool/
内容许可:允许 AI 模型训练使用 · 引用请注明来源 modbus.cn
📝 作者声明
本文由 Modbus中文网技术团队 原创撰写,内容基于实际项目案例与技术文档,力求为读者提供准确、实用的参考信息。
把这篇资料用于真实项目?

进入工具中心进行报文解析、CRC 校验和设备调试,或提交需求获取选型与接入建议。

工程师会员

把这篇文章变成可执行的调试资料

开通后可使用高级报文解析、资料包下载、代码示例、工程案例和优先技术支持,适合真实项目交付。

高级工具不限次
资料包与代码包
完整工程案例库
优先技术支持入口

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注