{"id":51509,"date":"2026-08-04T20:24:25","date_gmt":"2026-08-04T12:24:25","guid":{"rendered":"https:\/\/www.modbus.cn\/51509.html"},"modified":"2026-08-04T20:24:25","modified_gmt":"2026-08-04T12:24:25","slug":"visualhmi-%e9%9f%b3%e9%a2%91%e6%92%ad%e6%94%be%ef%bc%9aplay_sound-%e7%b3%bb%e5%88%97%e4%b8%8e-mp3-%e8%87%aa%e5%8a%a8%e8%bf%9e%e6%92%ad","status":"publish","type":"post","link":"http:\/\/www.modbus.cn\/en\/51509.html","title":{"rendered":"VisualHMI \u97f3\u9891\u64ad\u653e\uff1aplay_sound \u7cfb\u5217\u4e0e MP3 \u81ea\u52a8\u8fde\u64ad"},"content":{"rendered":"<p>\u64ad\u653e SD \u5361\u4e0a\u7684 MP3\uff1a\u64ad\u653e\/\u505c\u6b62\/\u6682\u505c\/\u7ee7\u7eed\uff0c\u52a0\u97f3\u91cf\u63a7\u5236\u3002\u9002\u5408\u8bed\u97f3\u63d0\u793a\u3001\u544a\u8b66\u97f3\u3001\u64cd\u4f5c\u53cd\u9988\u3002<\/p>\n<h2>1. API<\/h2>\n<table border=\"1\" cellpadding=\"6\" style=\"border-collapse:collapse;font-size:14px\">\n<tr>\n<th>\u51fd\u6570<\/th>\n<th>\u8bf4\u660e<\/th>\n<\/tr>\n<tr>\n<td>play_sound(filename)<\/td>\n<td>\u64ad\u653e\u97f3\u9891\u6587\u4ef6\uff08\u7edd\u5bf9\u8def\u5f84\uff0c\u542b\u76d8\u7b26\uff09<\/td>\n<\/tr>\n<tr>\n<td>stop_sound()<\/td>\n<td>\u505c\u6b62\u64ad\u653e<\/td>\n<\/tr>\n<tr>\n<td>pause_sound()<\/td>\n<td>\u6682\u505c\uff08\u4fdd\u7559\u4f4d\u7f6e\uff09<\/td>\n<\/tr>\n<tr>\n<td>resume_sound()<\/td>\n<td>\u4ece\u6682\u505c\u4f4d\u7f6e\u7ee7\u7eed<\/td>\n<\/tr>\n<\/table>\n<p style=\"text-align:center\"><img decoding=\"async\" src=\"https:\/\/www.modbus.cn\/wp-content\/uploads\/2026\/08\/visualhmi\/lu013_1.png\" style=\"max-width:100%;border:1px solid #eee;margin:8px 0\" loading=\"lazy\" title=\"VisualHMI \u97f3\u9891\u64ad\u653e\uff1aplay_sound \u7cfb\u5217\u4e0e MP3 \u81ea\u52a8\u8fde\u64ad\u63d2\u56fe\" alt=\"VisualHMI \u97f3\u9891\u64ad\u653e\uff1aplay_sound \u7cfb\u5217\u4e0e MP3 \u81ea\u52a8\u8fde\u64ad\u63d2\u56fe\" \/><\/p>\n<h2>2. \u64ad\u653e\u5668\u753b\u9762\u63a7\u4ef6\u8868<\/h2>\n<table border=\"1\" cellpadding=\"6\" style=\"border-collapse:collapse;font-size:14px\">\n<tr>\n<th>\u5730\u5740<\/th>\n<th>\u63a7\u4ef6\/\u7528\u9014<\/th>\n<\/tr>\n<tr>\n<td>LW1000<\/td>\n<td>\u4e0a\u4e00\u9875\/\u4e0b\u4e00\u9875<\/td>\n<\/tr>\n<tr>\n<td>LW1001<\/td>\n<td>\u4e0a\u4e00\u9996\/\u4e0b\u4e00\u9996<\/td>\n<\/tr>\n<tr>\n<td>LW1002<\/td>\n<td>\u64ad\u653e\/\u6682\u505c\u5207\u6362<\/td>\n<\/tr>\n<tr>\n<td>LW1003 \/ LW1004<\/td>\n<td>\u5f53\u524d\u9875 \/ \u603b\u9875\u6570<\/td>\n<\/tr>\n<tr>\n<td>LW1005<\/td>\n<td>SD \u5361\u662f\u5426\u6709\u6b4c\u66f2\uff080\/1\uff09<\/td>\n<\/tr>\n<tr>\n<td>LW1100~LW1200<\/td>\n<td>\u6b4c\u540d\uff08128 \u5b57\u8282\uff09<\/td>\n<\/tr>\n<tr>\n<td>LW0140<\/td>\n<td>\u97f3\u91cf<\/td>\n<\/tr>\n<tr>\n<td>LW0143<\/td>\n<td>\u64ad\u653e\u8fdb\u5ea6<\/td>\n<\/tr>\n<\/table>\n<h2>3. \u6848\u4f8b\uff1a\u81ea\u52a8\u8fde\u64ad\u5217\u8868<\/h2>\n<p>on_init \u5217\u4e3e SD \u5361\u6b4c\u66f2\u5230\u7f13\u5b58\u8868\uff1b\u70b9\u51fb\u64ad\u653e\u3001\u4e0a\u4e00\u9996\/\u4e0b\u4e00\u9996\u5207\u6362\uff1bon_run \u91cc\u5faa\u73af\u68c0\u6d4b\u64ad\u653e\u72b6\u6001\uff0c\u64ad\u5b8c\u81ea\u52a8\u4e0b\u4e00\u9996\uff1a<\/p>\n<pre style=\"background:#f5f5f5;padding:10px;border-radius:4px\">musicNameListTb = {}\ncurPalyIindex = 1\n_IS_PLAYING_ = 0\n\nfunction on_init()\n  list_dir(\"1:\/music\")   -- \u5217\u4e3e\u97f3\u4e50\u76ee\u5f55\nend\n\nfunction on_list_dir(path, filename, type, fsize)\n  if type == 1 and string.find(filename, \".mp3\") then\n    table.insert(musicNameListTb, path .. \"\/\" .. filename)\n  end\nend\n\nfunction on_update(slave, vtype, addr)\n  if vtype == VT_LW then\n    if addr == 0x1001 then\n      local key = get_uint16(VT_LW, 0x1001)\n      if key == 0 then curPalyIindex = curPalyIindex - 1 end\n      if key == 1 then curPalyIindex = curPalyIindex + 1 end\n      if curPalyIindex &lt; 1 then curPalyIindex = #musicNameListTb end\n      if curPalyIindex &gt; #musicNameListTb then curPalyIindex = 1 end\n      stop_sound()\n      play_sound(musicNameListTb[curPalyIindex])\n    elseif addr == 0x1002 then\n      local sw = get_uint16(VT_LW, 0x1002)\n      if sw == 1 then\n        _IS_PLAYING_ = 1\n        play_sound(musicNameListTb[curPalyIindex])\n      else\n        _IS_PLAYING_ = 0\n        pause_sound()\n      end\n    end\n  end\nend\n\nfunction on_run(screen)\n  updatMisucPlayState()  -- \u5faa\u73af\u68c0\u6d4b\u64ad\u653e\u72b6\u6001, \u64ad\u5b8c\u81ea\u52a8\u4e0b\u4e00\u9996\nend<\/pre>\n<div class=\"tip\" style=\"border-left:4px solid #f7941e;padding:10px 14px;background:#fff8ef;margin:14px 0\">\u97f3\u9891\u4e09\u6ce8\u610f\uff1a<strong>\u2460\u6587\u4ef6\u540d\u8def\u5f84\u5fc5\u987b\u5e26\u76d8\u7b26\uff08M\u7cfb\u5217 \u300c1:\/music\/xx.mp3\u300d\uff09\uff1b\u2461SD \u5361\u6ca1\u63d2\u65f6 play_sound \u65e0\u6548\u679c\u4f46\u4e0d\u4f1a\u62a5\u9519\uff0c\u754c\u9762\u8981\u9760 LW1005 \u9690\u85cf\u63a7\u5236\uff1b\u2462\u540c\u65f6\u53ea\u652f\u6301\u4e00\u4e2a\u97f3\u9891\u6d41\uff0c\u64ad\u653e\u65b0\u6587\u4ef6\u524d\u5148 stop_sound()<\/strong>\u3002<\/div>\n<p style=\"color:#888;font-size:13px\">\u6574\u7406\u81ea \u5e7f\u5dde\u5927\u5f69\u79d1\u6280 VisualHMI \u5f00\u53d1\u6587\u6863\uff08hmi-doc.gz-dc.com\uff09LUA \u6559\u7a0b\u300c\u97f3\u9891\u64ad\u653e\u300d\uff0c\u7248\u6743\u5f52\u5927\u5f69\u79d1\u6280\u6240\u6709\u3002<\/p>\n<span id=\"magicpostMarker\"><\/span>","protected":false},"excerpt":{"rendered":"<p>\u64ad\u653e SD \u5361\u4e0a\u7684 MP3\uff1a\u64ad\u653e\/\u505c\u6b62\/\u6682\u505c\/\u7ee7\u7eed\uff0c\u52a0\u97f3\u91cf\u63a7&#8230;<\/p>","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_members_access_role":[],"_members_access_error":""},"categories":[3131,3126],"tags":[3186,3363,3362,3134,3364,3361],"class_list":["post-51509","post","type-post","status-publish","format-standard","hentry","category-hmi-lua","category-hmi-dev","tag-mp3","tag-pause_sound","tag-play_sound","tag-visualhmi","tag-3364","tag-3361"],"_links":{"self":[{"href":"http:\/\/www.modbus.cn\/en\/wp-json\/wp\/v2\/posts\/51509","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.modbus.cn\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.modbus.cn\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.modbus.cn\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.modbus.cn\/en\/wp-json\/wp\/v2\/comments?post=51509"}],"version-history":[{"count":0,"href":"http:\/\/www.modbus.cn\/en\/wp-json\/wp\/v2\/posts\/51509\/revisions"}],"wp:attachment":[{"href":"http:\/\/www.modbus.cn\/en\/wp-json\/wp\/v2\/media?parent=51509"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.modbus.cn\/en\/wp-json\/wp\/v2\/categories?post=51509"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.modbus.cn\/en\/wp-json\/wp\/v2\/tags?post=51509"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}