"# VisualHMI Lua API \u5927\u5168\uff1a\u56de\u8c03\/\u901a\u4fe1\/\u5bc4\u5b58\u5668\u8bfb\u5199\u51fd\u6570\u901f\u67e5\u8868\n\n> 2026-08-04 | 2026-08-04\n> http:\/\/www.modbus.cn\/en\/51496.html\n\n**LUA \u811a\u672c, \u4e32\u53e3\u5c4f\/HMI \u5f00\u53d1**\n\n---\n\n\u8fd9\u662f VisualHMI LUA \u7684**API \u603b\u8868**\uff1a\u7cfb\u7edf\u56de\u8c03\u3001\u901a\u4fe1\u63a7\u5236\u3001\u5bc4\u5b58\u5668\u8bfb\u5199\u3001\u5b57\u7b26\u4e32\u3001\u4e32\u53e3\u3001\u5b9a\u65f6\u5668\u3001\u753b\u56fe\u3001\u6587\u4ef6\u3001\u6570\u636e\u5e93\u5168\u5957\u51fd\u6570\u3002\u5f00\u53d1\u65f6\u67e5\u8fd9\u4e00\u7bc7\u5c31\u591f\u3002\n\n## 1. \u7cfb\u7edf\u56de\u8c03\u51fd\u6570\n\n\u51fd\u6570\u89e6\u53d1\u65f6\u673aon_init()\u4e0a\u7535\u52a0\u8f7d\u540e\u6267\u884c\u4e00\u6b21on_run(screen)\u4e3b\u5faa\u73af\u5468\u671f\u8c03\u7528\uff08set_run_cycle \u8bbe\u5468\u671f\uff09on_update(slave,vtype,addr)\u53d8\u91cf\u88ab\u4fee\u6539\u65f6\uff08\u7528\u6237\u64cd\u4f5c\u6216\u811a\u672c\uff09on_screen_change(screen)\u753b\u9762\u5207\u6362\u5b8c\u6210\u540eon_press(state,x,y)\u89e6\u6478\u4e8b\u4ef6\uff080\u62ac\u8d77\/1\u6309\u4e0b\/2\u957f\u6309\uff09on_usb_inserted(driver)\/on_usb_removed()U \u76d8\u63d2\u62d4on_sd_inserted(dir)\/on_sd_removed()SD \u5361\u63d2\u62d4on_parse_timestamp(screen,control,timestamp)\u65f6\u95f4\u6233\u89e3\u6790\uff08\u6570\u636e\u8bb0\u5f55\u63a7\u4ef6\uff09\n\n## 2. \u901a\u4fe1\u63a7\u5236\n\n\u51fd\u6570\u8bf4\u660eset_notify(enable)\u901a\u4fe1\u5e27\u6536\u53d1\u901a\u77e5\u5f00\u5173\uff1a1=\u4f7f\u80fd on_cmd_resp\uff0c0=\u5173\u95edselect_slave(slave_id)\u9009\u62e9\u5f53\u524d\u4ece\u673a\uff080 \u8d77\uff09\uff1b\u914d\u5408 set_slave_site \u6620\u5c04\u5b9e\u9645\u7ad9\u53f7set_slave_site(idx, slave_id)\u8bbe\u7f6e\u4ece\u673a\u5e8f\u53f7\u4e0e\u7ad9\u53f7\u6620\u5c04set_endian(en)\u5b57\u8282\u5e8f\uff1a0=\u5c0f\u7aef\uff08\u9ed8\u8ba4\uff09\uff0c1=\u5927\u7aefcreate_resp_que()\u521b\u5efa\u54cd\u5e94\u961f\u5217\uff0c\u4f7f\u80fd on_cmd_resp \u56de\u8c03start_read(index,vtype,addr,quantity,cycle,cycle_run,mode)\u540e\u53f0\u81ea\u52a8\u8f6e\u8be2\u8bfb\u4ece\u673a\u5bc4\u5b58\u5668stop_read(index)\u505c\u6b62\u6307\u5b9a\u7d22\u5f15\u7684\u8f6e\u8be2stop_all_read()\u505c\u6b62\u5168\u90e8\u8f6e\u8be2set_auto_read(en)0=\u811a\u672c\u63a7\u5236\u8bfb\u53d6\uff08\u914d start_read\uff09\uff0c1=\u81ea\u52a8\n\n### 2.1 start_read \u53c2\u6570\n\n```\nstart_read(index, vtype, addr, quantity, cycle, cycle_run, mode)\n-- index: \u8f6e\u8be2\u4efb\u52a1\u7d22\u5f15(0~N)\n-- vtype: \u53d8\u91cf\u7c7b\u578b VT_4x\/VT_0x \u7b49\n-- addr: \u8d77\u59cb\u5730\u5740\n-- quantity: \u6570\u91cf\n-- cycle: \u8f6e\u8be2\u5468\u671f(ms)\n-- cycle_run: 0=\u5b9a\u65f6\u5668\u89e6\u53d1, 1=\u753b\u9762\u89e6\u53d1\n-- mode: 1=\u81ea\u52a8\u540e\u53f0\u8f6e\u8be2(\u9ed8\u8ba4)\n```\n\n\u4f8b\uff1a`start_read(1, VT_4x, 0x2000, 10, 3, 2)`\u2014\u2014\u7d22\u5f15 1\u3001\u4fdd\u6301\u5bc4\u5b58\u5668 0x2000 \u8d77 10 \u4e2a\u3001\u5468\u671f 3ms\u3002\n\n## 3. \u5bc4\u5b58\u5668\u8bfb\u5199 API\uff08\u901f\u67e5\uff09\n\n\u51fd\u6570\u8303\u56f4\u5730\u5740\u8de8\u5ea6set_bit \/ get_bit\u4f4d\uff080\/1\uff091 \u4f4dset_uint16 \/ get_uint160~655351 \u5bc4\u5b58\u5668set_int16 \/ get_int16-32768~327671 \u5bc4\u5b58\u5668set_uint32 \/ get_uint320~42949672952 \u5bc4\u5b58\u5668set_int32 \/ get_int32-2^31~2^31-12 \u5bc4\u5b58\u5668set_uint64 \/ get_uint640~2^64-14 \u5bc4\u5b58\u5668set_int64 \/ get_int64-2^63~2^63-14 \u5bc4\u5b58\u5668set_float \/ get_floatIEEE754 \u5355\u7cbe\u5ea62 \u5bc4\u5b58\u5668set_double \/ get_doubleIEEE754 \u53cc\u7cbe\u5ea64 \u5bc4\u5b58\u5668set_string \/ get_string\u6700\u5927 2048 \u5b57\u8282\u5b57\u8282\u6570\/2set_uint16_ex\u6279\u91cf\u5199\uff0c\u6700\u591a 120 \u4e2a\u8fde\u7eedset_array\u6279\u91cf\u5199 Lua \u8868\uff0c\u6700\u591a 120 \u5b57\u8fde\u7eed\n\nvtype \u53d6\u503c\uff08Modbus\uff09\uff1aVT_0x=10\uff08\u7ebf\u5708\uff09\u3001VT_1x=11\uff08\u8f93\u5165\u70b9\uff09\u3001VT_3x=12\uff08\u8f93\u5165\u5bc4\u5b58\u5668\uff09\u3001VT_4x=13\uff08\u4fdd\u6301\u5bc4\u5b58\u5668\uff09\u3001VT_LW=1\uff08\u5185\u90e8\u53d8\u91cf\uff09\u3001VT_RW=2\uff08\u6389\u7535\u4fdd\u6301\uff09\u3002FX3U \u53e6\u6709 VT_X\/VT_Y\/VT_S\/VT_M\/VT_D\/VT_T\/VT_C\u3002\n\n## 4. \u5176\u4ed6\u5e38\u7528\n\n- `get_date_time()`\uff1a\u8bfb\u53d6\u7cfb\u7edf\u65f6\u95f4\uff08\u5e74\/\u6708\/\u65e5\/\u65f6\/\u5206\/\u79d2\/\u661f\u671f\uff09- `delay_ms(ms)`\uff1a\u5ef6\u65f6\uff08\u614e\u7528\uff0c\u963b\u585e\u4e3b\u5faa\u73af\uff09- `feed_dog()`\uff1a\u5582\u770b\u95e8\u72d7\uff08\u8d85\u957f\u4efb\u52a1\u91cc\u9632\u590d\u4f4d\uff09- `redraw()`\uff1a\u5f3a\u5236\u5237\u65b0\u753b\u9762\uff08\u89e6\u53d1 on_draw\uff09- `set_pen_color(color)`\uff1a\u8bbe\u7f6e\u753b\u7b14\u989c\u8272\uff08RGB565\uff09\uff0c\u4f9b on_draw \u7ed8\u56fe\u7528- `print(...)`\uff1a\u8c03\u8bd5\u8f93\u51fa\uff08\u865a\u62df\u5c4f\u8bbe\u7f6e\u7a97\u53e3\/\u5b9e\u4f53\u5c4f\u8c03\u8bd5\u53e3\uff09- `pcall(f)`\uff1a\u4fdd\u62a4\u8c03\u7528\uff0c\u6355\u83b7\u8fd0\u884c\u65f6\u9519\u8bef\u4e0d\u5d29\u811a\u672c\n\n![API \u603b\u89c8](https:\/\/www.modbus.cn\/wp-content\/uploads\/2026\/08\/visualhmi\/lu000a_1.png)\n\nAPI \u540d\u5b57**\u5927\u5c0f\u5199\u654f\u611f\u3001\u4e0b\u5212\u7ebf\u4e0d\u80fd\u7701**\uff08set_uint16 \u5199\u6210 setuint16 \u76f4\u63a5 nil \u62a5\u9519\uff09\u3002on_cmd_resp \u662f\u901a\u4fe1\u56de\u8c03\u6838\u5fc3\uff1aset_notify(1)+create_resp_que() \u4f7f\u80fd\u540e\uff0c\u6bcf\u5e27\u54cd\u5e94\u90fd\u4f1a\u56de\u8c03\uff0c\u914d start_read \u505a\u811a\u672c\u4e3b\u5bfc\u7684\u901a\u4fe1\u3002\n\n\u6574\u7406\u81ea \u5e7f\u5dde\u5927\u5f69\u79d1\u6280 VisualHMI \u5f00\u53d1\u6587\u6863\uff08hmi-doc.gz-dc.com\uff09LUA \u6559\u7a0b\u300cLua API\u300d\uff0c\u7248\u6743\u5f52\u5927\u5f69\u79d1\u6280\u6240\u6709\u3002\n\n---\n*modbus.cn*\n"