VisualHMI 音频播放:play_sound 시리즈与 MP3 自动连播

무료무료 기술 자료

이 글은 바로 읽을 수 있으며 기초 학습과 검색 유입에 적합합니다.

音频播放 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总页数
LW1005SD 根目录是否有歌(位状态)
LW1100~1200歌名文本列表
LW1240播放当前时间
LW1250总时间
LW1006播放进度条
LW0140音量

3. 遍历 SD 卡歌曲

music이름ListTb = {}      -- 歌名列表缓存
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(music이름ListTb, 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/"..music이름ListTb[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 < #music이름ListTb then
        curPlayIndex = curPlayIndex + 1
      end
      play_sound("1:/music/"..music이름ListTb[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 튜토리얼「音频播放」,版权归大彩科技所有。

실제 프로젝트에 이 자료를 활용하시겠습니까?

도구 센터에서 프레임 분석, CRC 검증, 장비 디버깅을 진행하거나 요청을 제출하여 선정 및 연동 제안을 받아보세요.

엔지니어 회원

이 글을 실행 가능한 디버깅 자료로 활용하세요

가입하면 고급 프레임 분석, 자료 패키지 다운로드, 코드 예제, 엔지니어링 사례, 우선 기술 지원을 이용할 수 있어 실제 프로젝트 납품에 적합합니다.

고급 도구 무제한 이용
자료 패키지와 코드 패키지
완전한 엔지니어링 사례 라이브러리
우선 기술 지원 채널

답글 작성

이메일 주소는 공개되지 않습니다. 必填项已用 * 标注