"# LUA \u811a\u672cAPI\u51fd\u6570\u63a5\u53e3\n\n> 2022-03-26 | 2026-07-01\n> https:\/\/www.modbus.cn\/en\/7371.html\n\n**LUA \u811a\u672c\u6587\u6863, \u89e6\u63a7\u5c4f\u5f00\u53d1\u6587\u6863**\n\n---\n\n\u672c\u6587\u6863\u9002\u7528\u4e8eM\u7cfb\u5217\u3001W\u7cfb\u5217\u3001X\u7cfb\u5217\u3001F\u7cfb\u5217\uff08\u56fa\u4ef6\u7248\u672c &gt;= V4.2.401.0\uff09\u3002API\u51fd\u6570\u4e2d\u7684screen\u3001control\u53c2\u6570\u5747\u8868\u793a\u4e3a\u76ee\u6807\u753b\u9762ID\u3001\u76ee\u6807\u7ec4\u6001\u63a7\u4ef6ID\uff0c\u540e\u6587\u6bcf\u4e2aAPI\u4e0d\u4e00\u4e00\u4ecb\u7ecd\n\n## 1.1 \u63a7\u4ef6\u5c5e\u6027\u7c7b\n\n#### 1.1.1 change_screen(screen)\n\n\u5207\u6362\u5230\u6307\u5b9a\u753b\u9762\n\n#### 1.1.2 change_child_screen (screen)\n\n\u5207\u6362\u5230\u5b50\u753b\u9762\uff0c\u4f8b\u5982\u5bf9\u8bdd\u6846\n\n#### 1.1.3 change_screen_effect(screen,effect)\n\n\u5207\u6362\u5230\u6307\u5b9a\u753b\u9762\uff0c\u4f7f\u7528\u52a8\u753b\u6548\u679c\n\n- effect\uff1a\u52a8\u753b\u6548\u679c\u30020-\u65e0\u52a8\u753b\uff0c1-\u4ece\u5de6\u5230\u53f3\uff0c2-\u4ece\u53f3\u5230\u5de6\uff0c3-\u4ece\u4e0a\u5230\u4e0b\uff0c4-\u4ece\u4e0b\u5230\u4e0a\uff0c5-\u6e10\u9690\u6e10\u6d88\n\n#### 1.1.4 set_slide_screen(slide,round,start_screen,end_screen)\n\n\u8bbe\u7f6e\u7a97\u53e3\u6ed1\u52a8\u6a21\u5f0f\n\n- slide\uff1a0-\u7981\u6b62\u6ed1\u52a8\uff0c1-\u5de6\u53f3\u6ed1\u52a8\uff0c2-\u4e0a\u4e0b\u6ed1\u52a8\n\n- round: 1-\u73af\u56de\u6a21\u5f0f\uff0c\u5c3e\u9875\u53ef\u4ee5\u6ed1\u5230\u9996\u9875\n\n- start_screen: \u5f00\u59cb\u753b\u9762\n\n- end_screen\uff1a\u7ed3\u675f\u753b\u9762\n\n#### 1.1.5 set_button_notify_release ()\n\n\u8bbe\u7f6e\u6309\u94ae\u677e\u5f00\u901a\u77e5\u6a21\u5f0f\uff0c\u5728\u89e6\u6478\u6309\u94ae\u4e0a\u4e5f\u53ef\u4ee5\u6ed1\u52a8\u7a97\u53e3\n\n#### 1.1.6 get_current_screen()\n\n\u83b7\u53d6\u5f53\u524d\u753b\u9762ID\n\n#### 1.1.7 set_value(screen,control,value)\n\n\u8bbe\u7f6e\u63a7\u4ef6\u6570\u503c\n\n- value\uff1a\u63a7\u4ef6\u503c\n\n\u6309\u94ae\u63a7\u4ef6\uff1avalue=1 - \u6309\u4e0b\uff0c0 - \u5f39\u8d77\n\n\u6587\u672c\u63a7\u4ef6\uff1avalue - \u6574\u6570\u6216\u5c0f\u6570\n\n\u4e5f\u53ef\u4ee5\u8bbe\u7f6e\u8fdb\u5ea6\u6761\u3001\u6ed1\u5757\u3001\u4eea\u8868\u3001\u6ed1\u52a8\u9009\u62e9\u63a7\u4ef6\u7b49\u7b49\n\n#### 1.1.8 get_value(screen,control)\n\n\u83b7\u53d6\u63a7\u4ef6\u6570\u503c\uff0c\u6309\u94ae\u3001\u6587\u672c\u3001\u8fdb\u5ea6\u6761\u3001\u6ed1\u5757\u3001\u4eea\u8868\u7b49\n\n#### 1.1.9 set_visiable(screen,control,visiable)\n\n\u8bbe\u7f6e\u63a7\u4ef6\u662f\u5426\u53ef\u89c1\n\n- visiable\uff1a0-\u9690\u85cf\uff0c1-\u663e\u793a\n\n#### 1.1.10 set_enable(screen,control,enable)\n\n\u8bbe\u7f6e\u63a7\u4ef6\u662f\u5426\u53ef\u89e6\u6478\n\n- enable\uff1a0-\u7981\u6b62\u89e6\u6478\uff0c1-\u542f\u7528\u89e6\u6478\n\n#### 1.1.11 set_fore_color(screen,control,color)\n\n\u8bbe\u7f6e\u63a7\u4ef6\u524d\u666f\u8272\uff0c\u4f8b\u5982\u6587\u672c\u63a7\u4ef6\u6587\u5b57\u989c\u8272\uff0c\u8fdb\u5ea6\u6761\u663e\u793a\u989c\u8272\n\n- color\uff1aRGB\u503c\uff0c2\u4e2a\u5b57\u8282\uff0cRGB565\n\n#### 1.1.12 set_back_color(screen,control,color)\n\n\u8bbe\u7f6e\u63a7\u4ef6\u80cc\u666f\u8272\uff0c\u4f8b\u5982\u6587\u672c\u63a7\u4ef6\u80cc\u666f\u989c\u8272\uff0c\u8fdb\u5ea6\u6761\u80cc\u666f\u989c\u8272\n\n- color\uff1aRGB\u503c\uff0c2\u4e2a\u5b57\u8282\uff0cRGB565\n\n#### 1.1.13 set_text(screen,control,text)\n\n\u8bbe\u7f6e\u63a7\u4ef6\u663e\u793a\u5185\u5bb9(\u5b57\u7b26\u4e32)\uff0c\u6587\u672c\u63a7\u4ef6\uff0c\u4e8c\u7ef4\u7801\u63a7\u4ef6\u7b49\n\n- text\uff1a\u5b57\u7b26\u4e32\u7c7b\u578b\n\n#### 1.1.14 set_text_roll(screen,control, speed)\n\n\u8bbe\u7f6e\u6587\u672c\u63a7\u4ef6\u4ece\u53f3\u5f80\u5de6\u6eda\u52a8\u901f\u5ea6\n\n- speed\uff1a\u6bcf\u79d2\u591a\u5c11\u4e2a\u50cf\u7d20\u3002\u8bbe\u7f6e\u4e3a0\u505c\u6b62\u6eda\u52a8\n\n#### 1.1.15 set_text_flicker (screen,control, cycle)\n\n\u8bbe\u7f6e\u6587\u672c\u63a7\u4ef6\u95ea\u70c1\u5468\u671f\n\n- cycle\uff1a\u95ea\u70c1\u5468\u671f\uff0c\u5355\u4f4d10ms\u3002\u8bbe\u7f6e\u4e3a0\u505c\u6b62\u95ea\u70c1\n\n#### 1.1.16 get_text(screen,control)\n\n\u83b7\u53d6\u63a7\u4ef6\u5b57\u7b26\u4e32\u5185\u5bb9(\u5b57\u7b26\u4e32)\uff0c\u6587\u672c\u63a7\u4ef6\uff0c\u4e8c\u7ef4\u7801\u63a7\u4ef6\u7b49\n\n#### 1.1.17 set_options (screen, control, options)\n\n\u8bbe\u7f6e\u6ed1\u52a8\u9009\u62e9\u63a7\u4ef6\u7684\u5185\u5bb9\n\n- options\uff1a\u9009\u9879\u5185\u5bb9\uff0c\u5b57\u7b26\u4e32\u683c\u5f0f\uff0c\u6bcf\u4e00\u9879\u7528\u82f1\u6587\u5206\u53f7\u201c;\u201d\u9694\u5f00\n\n\u4f8b\u5982\uff1aset_options (screen,control, \u2018\u9009\u98791;\u9009\u98792;\u9009\u98793;\u2019)\n\n#### 1.1.18 set_screen_range(screen, control, start_screen,end_screen, round)\n\n\u8bbe\u7f6e\u5b50\u753b\u9762\u7a97\u53e3\u6ed1\u52a8\u6a21\u5f0f\uff0cW\u7cfb\u5217\u652f\u6301\uff0cF\u3001M\u7cfb\u5217\u4e0d\u652f\u6301\n\n- start_screen: \u5f00\u59cb\u753b\u9762\n\n- end_screen\uff1a\u7ed3\u675f\u753b\u9762\n\n- round:1\u73af\u56de\u6a21\u5f0f\uff0c\u5c3e\u9875\u53ef\u4ee5\u6ed1\u5230\u9996\u9875\n\n#### 1.1.19 play_animation(screen, control)\n\n\u8bbe\u7f6e\u52a8\u753b\u63a7\u4ef6\u64ad\u653e\n\n#### 1.1.20 stop_animation(screen\uff0ccontrol)\n\n\u8bbe\u7f6e\u52a8\u753b\u63a7\u4ef6\u505c\u6b62\n\n#### 1.1.21 set_history_graph_value(screen,control,channel0,..,channel7)\n\n\u8bbe\u7f6e\u5386\u53f2\u66f2\u7ebf\u7684\u901a\u9053\u503c\uff0c\u6839\u636e\u901a\u9053\u7684\u4e2a\u6570\u586b\u5199\u53c2\u6570\n\n- channe0\uff1a\u901a\u90530\u7684\u503c\n\n- \u2026\n\n- channe7\uff1a\u901a\u90537\u7684\u503c\n\n\u4f8b\u5982\u67094\u4e2a\u901a\u9053\uff1aset_history_graph_value(screen,control,1,2,3,4)\n\n#### 1.1.22 set_history_graph_direction\uff08screen,control,direction\uff09\n\n\u8bbe\u7f6e\u5386\u53f2\u66f2\u7ebf\u5237\u65b0\u65b9\u5411\uff0c\u9ed8\u8ba4\u72b6\u6001\u4e0b\uff0c\u5237\u65b0\u65b9\u5411\u4ece\u53f3\u5f80\u5de6\n\n- direction\uff1a0-\u4ece\u53f3\u5f80\u5de6\uff0c1-\u4ece\u5de6\u5f80\u53f3\n\n#### 1.1.23 set_scroll_position(screen, control, mode)\n\n\u8bbe\u7f6e\u5386\u53f2\u66f2\u7ebf\u7684\u7ffb\u9875\n\n- mode\uff1a\u7ffb\u9875\u6a21\u5f0f\u30022-\u4e0b\u4e00\u9875\uff0c3-\u4e0a\u4e00\u9875\uff0c4-\u5c3e\u9875\uff0c5-\u9996\u9875\n\n## 1.2 \u8bb0\u5f55\u63a7\u4ef6\n\n#### 1.2.1 record_set_event(screen,control,eventid)\n\n\u544a\u8b66\u7c7b\u578b-\u89e6\u53d1\u544a\u8b66\n\n- eventid\uff1a\u548c\u544a\u8b66\u7c7b\u578b\u7684\u6570\u636e\u8bb0\u5f55\u63a7\u4ef6\u4e2d\u544a\u8b66\u89e3\u6790ID\u5173\u8054\n\n#### 1.2.2 record_reset_event(screen,control,eventid)\n\n\u544a\u8b66\u7c7b\u578b-\u89e3\u9664\u544a\u8b66\n\n- eventid\uff1a\u548c\u544a\u8b66\u7c7b\u578b\u7684\u6570\u636e\u8bb0\u5f55\u63a7\u4ef6\u4e2d\u544a\u8b66\u89e3\u6790ID\u5173\u8054\n\n#### 1.2.3 record_add(screen,control,record)\n\n\u5728\u672b\u5c3e\u6dfb\u52a0\u4e00\u6761\u8bb0\u5f55\n\n- record\uff1arecord\u4e3a\u5b57\u7b26\u4e32\n\n```\n\u4f8b\u5982\uff1arecord_add(screen,control, \u201citem1;item2;item3;\u201d)\n\n```\n\n#### 1.2.4 record_insert (screen,control,position,record)\n\n\u5728\u6307\u5b9a\u4f4d\u7f6e\u63d2\u5165\u4e00\u6761\u8bb0\u5f55\n\n- position\uff1a\u63d2\u5165\u4f4d\u7f6e\u7d22\u5f15\n\n- record\uff1arecord\u4e3a\u5b57\u7b26\u4e32\n\n#### 1.2.5 record_clear(screen,control)\n\n\u6e05\u9664\u8bb0\u5f55\u6570\u636e\n\n#### 1.2.6 record_setoffset(screen,control,offset)\n\n\u8bbe\u7f6e\u6eda\u52a8\u663e\u793a\u4f4d\u7f6e\n\n- offset\uff1a\u5f53\u524d\u663e\u793a\u7684\u5b9a\u4f4d\u5230\u8be5\u7d22\u5f15\n\n#### 1.2.7 record_get_count(screen,control)\n\n\u83b7\u53d6\u8bb0\u5f55\u6761\u6570\n\n```\n\u4f8b\u5982\uff1alocal recordCnt = record_get_count(0, 1) \u2014\u5047\u8bbe\u753b\u97620\u3001\u63a7\u4ef61\u4f4d\u6570\u636e\u8bb0\u5f55\u63a7\u4ef6\n\n```\n\n#### 1.2.8 record_read(screen,control,position)\n\n\u8bfb\u53d6\u4e00\u6761\u8bb0\u5f55\uff0c\u8fd4\u56de\u5b57\u7b26\u4e32\n\n- position\uff1a\u9700\u8981\u88ab\u8bfb\u53d6\u7684\u884c\u53f7\u3002\u7d22\u5f15\u4ece0\u5f00\u59cb\uff0c0\u5373\u662f\u7b2c\u4e00\u884c\u6570\u636e\n\n#### 1.2.9 record_modify(screen,control, position ,record)\n\n\u4fee\u6539\u4e00\u6761\u8bb0\u5f55\n\n- position\uff1a\u9700\u8981\u88ab\u4fee\u6539\u7684\u884c\u53f7\uff0c\u7d22\u5f15\u4ece0\u5f00\u59cb\uff0c0\u5373\u662f\u7b2c\u4e00\u884c\u6570\u636e\n\n- record\uff1a\u65b0\u7684\u4fee\u6539\u5185\u5bb9\n\n#### 1.2.10 record_delete(screen,control,position)\n\n\u5220\u9664\u4e00\u6761\u8bb0\u5f55\n\n- position\uff1a\u9700\u8981\u88ab\u5220\u9664\u7684\u884c\u53f7\u3002\u7d22\u5f15\u4ece0\u5f00\u59cb\uff0c0\u5373\u662f\u7b2c\u4e00\u884c\u6570\u636e\n\n#### 1.2.11 record_select(screen,control,position)\n\n\u9009\u4e2d\u4e00\u6761\u8bb0\u5f55\n\n- position\uff1a\u9700\u8981\u88ab\u9009\u4e2d\u7684\u884c\u53f7\u3002\u7d22\u5f15\u4ece0\u5f00\u59cb\uff0c0\u5373\u662f\u7b2c\u4e00\u884c\u6570\u636e\n\n#### 1.2.12 record_export(screen,control)\n\n\u5bfc\u51fa\u8bb0\u5f55\u5230SD\u5361\/U\u76d8\n\n## 1.3 \u5e38\u7528\u56de\u8c03\u51fd\u6570\n\n#### 1.3.1 on_init()\n\n\u7cfb\u7edf\u52a0\u8f7dLUA\u811a\u672c\u6587\u4ef6\u4e4b\u540e\uff0c\u7acb\u5373\u8c03\u7528\u6b64\u56de\u8c03\u51fd\u6570\uff0c\u901a\u5e38\u7528\u4e8e\u6267\u884c\u521d\u59cb\u5316\u64cd\u4f5c\u3002\n\n#### 1.3.2 on_systick()\n\n\u7cfb\u7edf\u6bcf\u96941\u79d2\u949f\u81ea\u52a8\u8c03\u7528\u6b64\u56de\u8c03\u51fd\u6570\u3002\n\n#### 1.3.3 on_control_notify(screen,control,value)\n\n\u7528\u6237\u89e6\u6478\u4fee\u6539\u63a7\u4ef6\u540e\uff0c\u6267\u884c\u6b64\u56de\u8c03\u51fd\u6570\u3002\u70b9\u51fb\u6309\u94ae\u63a7\u4ef6\uff0c\u4fee\u6539\u6587\u672c\u63a7\u4ef6\u3001\u4fee\u6539\u6ed1\u52a8\u6761\u90fd\u4f1a\u89e6\u53d1\u6b64\u63a7\u4ef6\n\n- value:\u4e3a\u6570\u503c\u7c7b\u578b\uff0c\u5982\u679c\u9700\u8981\u83b7\u53d6\u6587\u672c\u63a7\u4ef6\u7684\u5b57\u7b26\u4e32\u503c\uff0c\u4f7f\u7528get_text(screen,control)\n\n#### 1.3.4 on_screen_change(screen)\n\n\u5f53\u753b\u9762\u9700\u8981\u5207\u6362\u65f6\uff0c\u6267\u884c\u6b64\u56de\u8c03\u51fd\u6570\uff0cscreen\u4e3a\u76ee\u6807\u753b\u9762\u3002\n\n\u6ce8\u610f\uff0c\u6b64\u51fd\u6570\u5185\u90e8\u8c03\u7528change_screen,\u4e0d\u4f1a\u5d4c\u5957\u6267\u884con_screen_change\u3002\n\n#### 1.3.5 on_press(state,x,y)\n\n\u7528\u6237\u70b9\u51fb\u89e6\u6478\u5c4f\u65f6\uff0c\u6267\u884c\u6b64\u56de\u8c03\u51fd\u6570\u3002\n\n- state\uff1a\u89e6\u6478\u72b6\u6001\uff0c0-\u677e\u5f00\uff0c1-\u6309\u4e0b\uff0c2-\u6301\u7eed\u6309\u538b\n\n- x\uff1a\u4e3a\u89e6\u6478X\u5750\u6807\n\n- y\uff1a\u4e3a\u89e6\u6478Y\u5750\u6807\n\n#### 1.3.6 on_usb_inserted(driver)\n\nU\u76d8\u63d2\u5165\u65f6\uff0c\u6267\u884c\u6b64\u56de\u8c03\u51fd\u6570\n\n- dirver\uff1a\u4e3aU\u76d8\u7684\u76d8\u7b26\n\n#### 1.3.7 on_usb_removed()\n\nU\u76d8\u62d4\u51fa\u65f6\uff0c\u6267\u884c\u6b64\u56de\u8c03\u51fd\u6570\n\n#### 1.3.8 on_sd_inserted(dir)\n\nSD\u5361\u63d2\u5165\u901a\u77e5\n\n- dir\uff1a\u76d8\u7b26\u8def\u5f84\n\n#### 1.3.9 on_sd_removed()\n\nSD\u5361\u62d4\u51fa\u901a\u77e5\n\n#### 1.3.10 on_screen_sliding(screen, control)\n\n\u7528\u4e8e\u786e\u5b9a\u624b\u6307\u6ed1\u52a8\u65f6\u7684\u76ee\u6807\u753b\u9762ID\uff0cW\u7cfb\u5217\u652f\u6301\uff0cF\u3001M\u7cfb\u5217\u4e0d\u652f\u6301\n\n\u8fd4\u56de\u5207\u6362\u76ee\u6807\u7684\u753b\u9762\u7684ID\uff0cleft\u3001right \u3001up\u3001down\uff0c4\u4e2a\u53c2\u6570\uff0c\u6307\u5b9a\u5de6\u3001\u53f3\u3001\u4e0a\u3001\u4e0b\u7684\u9875\u9762ID\uff0c\u82e5\u4e3a-1\uff0c\u8be5\u65b9\u5411\u4e0d\u5141\u8bb8\u6ed1\u52a8\n\n- screen\uff1a\u5f53\u524d\u6240\u5728\u7684\u753b\u9762\n\n- control\uff1a\u5f53\u524d\u9875\u9762\uff0c\u5728\u4e0a\u9762\u6ed1\u52a8\u7684\u63a7\u4ef6ID\n\n## 1.4 \u7ed8\u56fe\u51fd\u6570\n\n#### 1.4.1 on_draw(screen)\n\n\u5f53\u754c\u9762\u7684\u663e\u793a\u5185\u5bb9\u9700\u8981\u66f4\u65b0\u65f6\uff0c\u7cfb\u7edf\u81ea\u52a8\u8c03\u7528\u6b64\u51fd\u6570\uff0c\u7528\u6237\u5728\u6b64\u51fd\u6570\u4e2d\u6dfb\u52a0\u81ea\u5b9a\u4e49\u7684\u7ed8\u56fe\u64cd\u4f5c\u3002\u7528\u6237\u7ed8\u5236\u7684\u5185\u5bb9\u53e0\u52a0\u5728\u753b\u9762\u5185\u5bb9\u63a7\u4ef6\u4e0a\u9762.\u6b64\u51fd\u6570\u4e3a\u7cfb\u7edf\u56de\u8c03\u51fd\u6570\uff0c\u7528\u6237\u4e0d\u8981\u76f4\u63a5\u8c03\u7528\n\n\u4e0b\u9762\u51e0\u79cd\u60c5\u51b5\u4f1a\u89e6\u53d1\u6b64\u51fd\u6570\uff1a\n\n- \u754c\u9762\u6709\u52a8\u753b\u64ad\u653e\u3001\u89c6\u9891\u64ad\u653e\u3001RTC\u65f6\u95f4\u663e\u793a\u7684\u52a8\u6001\u5237\u65b0\n\n- \u7528\u6237\u64cd\u4f5c\u5c4f\u5e55\u63a7\u4ef6\n\n- \u901a\u8fc7LUA\u811a\u672c\u6216\u4e32\u53e3\u6307\u4ee4\u66f4\u65b0\u63a7\u4ef6\n\n- \u901a\u8fc7\u6267\u884credraw\n\n\u603b\u4e4b\uff0c\u754c\u9762\u4e0a\u6709\u4efb\u4f55\u53d8\u5316\uff0c\u90fd\u4f1a\u89e6\u53d1\u6b64\u56de\u8c03\u51fd\u6570\u3002\n\n#### 1.4.2 on_pre_draw(screen)\n\n\u7528\u6237\u7ed8\u5236\u7684\u5185\u5bb9\u5728\u753b\u9762\u6700\u5e95\u5c42\uff0c\u5f53\u524d\u7ed8\u5236\u753b\u9762\u9700\u8981\u900f\u660e\uff0c\u65e0\u80cc\u666f\u56fe\n\n\u76f8\u5173\u8bf4\u660e\u540c\u4e0a\n\n#### 1.4.3 redraw()\n\n\u53d1\u9001\u91cd\u7ed8\u8bf7\u6c42\uff0c\u89e6\u53d1on_draw\u7684\u6267\u884c\n\n#### 1.4.4 screen_shoot(filename,x,y,width,height,quality)\n\n\u622a\u53d6\u5c4f\u5e55\u7a97\u53e3\u8303\u56f4\uff0c\u5b58\u50a8\u5230\u6307\u5b9a\u6587\u4ef6\u8def\u5f84\u3002W\u7cfb\u5217\u652f\u6301\uff0cF\u3001M\u7cfb\u5217\u4e0d\u652f\u6301\n\n- filename: \u56fe\u7247\u6587\u4ef6\u5b58\u653e\u8def\u5f84\n\n- x\uff1a\u622a\u56fe\u7684\u8d77\u70b9x\u5750\u6807\n\n- y\uff1a\u622a\u56fe\u7684\u8d77\u70b9y\u5750\u6807\n\n- width\uff1a\u622a\u56fe\u7684\u5bbd\u5ea6\n\n- height\uff1a\u622a\u56fe\u7684\u9ad8\u5ea6\n\n- quality: JPEG\u56fe\u7247\u8d28\u91cf\uff0c\u9ed8\u8ba495\n\n\u4f8b\u5982\uff1ascreen_shoot(\u2018b:\/shoot.jpg\u2019,0,0,480,272, 95)\n\n#### 1.4.5 set_pen_color(color)\n\n\u8bbe\u7f6e\u753b\u7b14\u7684\u989c\u8272\uff0cRGB565\uff0c\u7528\u4e8e\u6307\u5b9a\u7ebf\u3001\u77e9\u5f62\u3001\u5706\u7b49\u7684\u989c\u8272\n\n- color\uff1aRGB565\u989c\u8272\u503c\n\n#### 1.4.6 draw_line(x0,y0,x1,y1,width)\n\n\u7ed8\u5236\u76f4\u7ebf\n\n- x0,y0\uff1a\u8d77\u59cb\u70b9\u5750\u6807\n\n- x1,y1\uff1a\u7ed3\u675f\u70b9\u5750\u6807\n\n- width\uff1a\u4e3a\u7ebf\u6761\u7684\u539a\u5ea6\uff0c1~10\n\n#### 1.4.7 draw_rect(x0,y0,x1,y1,fill)\n\n\u7ed8\u5236\u77e9\u5f62\n\n- x0,y0\uff1a\u5de6\u4e0a\u89d2\u5750\u6807\n\n- x1,y1\uff1a\u53f3\u4e0b\u89d2\u5750\u6807\n\n- fill\uff1a0\u4e0d\u586b\u5145\uff0c1\u586b\u5145\n\n#### 1.4.8 draw_rect_alpha(x0,y0,x1,y1,alpha)\n\n\u7ed8\u5236\u5b9e\u5fc3\u7684\u534a\u900f\u660e\u77e9\u5f62\uff0cF\u7cfb\u5217\u4e0d\u652f\u6301\n\n- x0,y0\uff1a\u5de6\u4e0a\u89d2\u5750\u6807\n\n- x1,y1\uff1a\u53f3\u4e0b\u89d2\u5750\u6807\n\n- alpha\uff1a\u900f\u660e\u5ea60\u5168\u900f\u660e~255\u4e0d\u900f\u660e\n\n#### 1.4.9 draw_circle(x,y,r,fill)\n\n\u7ed8\u5236\u5706\u5f62\n\n- x,y\uff1a\u5706\u7684\u4e2d\u5fc3\u5750\u6807\n\n- r\uff1a\u5706\u7684\u534a\u5f84\n\n- fill\uff1a0\u4e0d\u586b\u5145\uff0c1\u586b\u5145\n\n#### 1.4.10 draw_ellipse(x0,y0,x1,y1,fill)\n\n\u7ed8\u5236\u692d\u5706\n\n- x0,y0\uff1a\u5de6\u4e0a\u89d2\u5750\u6807\n\n- x1,y1\uff1a\u53f3\u4e0b\u89d2\u5750\u6807\n\n- fill\uff1a0\u4e0d\u586b\u5145\uff0c1\u586b\u5145\n\n#### 1.4.11 load_image (image_id,frame_id)\n\n\u52a0\u8f7d\u6307\u5b9a\u56fe\u7247\u5230\u5185\u5b58\uff0c\u4e00\u822c\u7528\u5728on_init\u4e2d\uff0c\u727a\u7272\u4e86\u5f00\u673a\u901f\u5ea6\uff0c\u4f46\u4f7f\u8fd0\u884c\u8fc7\u7a0b\u66f4\u6d41\u7a0b\u3002W\u7cfb\u5217\u652f\u6301\uff0cF\u3001M\u7cfb\u5217\u4e0d\u652f\u6301\n\n- image_id\uff1a\u56fe\u7247\u8d44\u6e90\u7684ID\n\n- frame_id\uff1a\u5bf9\u5e94\u56fe\u6807\uff0c\u53ef\u4ee5\u8bbe\u7f6e\u5e27ID\uff0c\u5176\u4ed6\u56fe\u7247\u56fa\u5b9a\u4e3a0\n\n#### 1.4.12 draw_image(image_id,frame_id,dstx,dsty,width,height,srcx,srcy)\n\n\u7ed8\u5236\u56fe\u7247\n\n- image_id\uff1a\u56fe\u7247\u8d44\u6e90\u7684ID\n\n- frame_id\uff1a\u5bf9\u5e94\u56fe\u6807\uff0c\u53ef\u4ee5\u8bbe\u7f6e\u5e27ID\uff0c\u5176\u4ed6\u56fe\u7247\u56fa\u5b9a\u4e3a0\n\n- dstx\uff1a\u56fe\u7247\u663e\u793aX\u5750\u6807\n\n- dsty\uff1a\u56fe\u7247\u663e\u793aY\u5750\u6807\n\n- width\uff1a\u56fe\u7247\u663e\u793a\u5bbd\u5ea6\n\n- height\uff1a\u56fe\u7247\u663e\u793a\u9ad8\u5ea6\n\n- srcx\uff1a\u56fe\u7247\u88c1\u526aX\u5750\u6807\n\n- srcy\uff1a\u56fe\u7247\u88c1\u526aY\u5750\u6807\n\n#### 1.4.13 draw_image_file(filename,dstx,dsty,width,height,srcx,srcy)\n\n\u7ed8\u5236\u56fe\u7247\uff0c\u6b64\u65b9\u6cd5\u4e0d\u5bf9\u56fe\u7247\u8fdb\u884c\u7f13\u5b58\uff0c\u6548\u7387\u8f83\u4f4e\uff0cW\u7cfb\u5217\u652f\u6301\uff0cF\u3001M\u7cfb\u5217\u4e0d\u652f\u6301\n\n- filename\uff1a\u56fe\u7247\u6587\u4ef6\uff0c\u652f\u6301JPEG\/PNG\n\n- dstx\uff1a\u56fe\u7247\u663e\u793aX\u5750\u6807\n\n- dsty\uff1a\u56fe\u7247\u663e\u793aY\u5750\u6807\n\n- width\uff1a\u56fe\u7247\u663e\u793a\u5bbd\u5ea6\n\n- height\uff1a\u56fe\u7247\u663e\u793a\u9ad8\u5ea6\n\n- srcx\uff1a\u56fe\u7247\u88c1\u526aX\u5750\u6807\n\n- srcy\uff1a\u56fe\u7247\u88c1\u526aY\u5750\u6807\n\n#### 1.4.14 load_surface (filename)\n\n\u52a0\u8f7d\u56fe\u7247\u5230\u56fe\u5c42\uff0cW\u7cfb\u5217\u652f\u6301\u3001M\u7cfb\u5217 &gt;= V6.1.241.00\u652f\u6301\uff08\u88c1\u526a\u663e\u793a\uff09\u3001F\u7cfb\u5217\u4e0d\u652f\u6301\n\n- filename\uff1a\u56fe\u7247\u6587\u4ef6\uff0c\u652f\u6301JPEG\/PNG\n\n\u4f8b\u5982\uff1asurface = load_surface (\u201cc:\/test.jpg\u201d)\n\n\u56fe\u5c42\u4e0d\u518d\u4f7f\u7528\u65f6\uff0c\u9700\u8981\u8c03\u7528destroy_surface\u8fdb\u884c\u9500\u6bc1\uff0c\u5426\u5219\u4f1a\u5bfc\u81f4\u5185\u5b58\u6cc4\u6f0f\u3002\n\n#### 1.4.15 destroy_surface (surface)\n\n\u9500\u6bc1\u56fe\u5c42\uff0cW\u7cfb\u5217\u652f\u6301\u3001M\u7cfb\u5217 &gt;= V6.1.241.00\u3001F\u7cfb\u5217\u4e0d\u652f\u6301\n\n- surface\uff1a\u56fe\u5c42\u8d44\u6e90\u6307\u9488\n\n#### 1.4.16 draw_surface (surface,dstx,dsty,width,height,srcx,srcy)\n\n\u7ed8\u5236\u56fe\u5c42\uff0c\u76f8\u6bd4\u4e8edraw_image_file\uff0c\u6b64\u65b9\u6cd5\u6548\u7387\u8f83\u9ad8\uff0cW\u7cfb\u5217\u652f\u6301\u3001M\u7cfb\u5217 &gt;= V6.1.241.00\u652f\u6301\uff08\u88c1\u526a\u663e\u793a\uff09\u3001F\u7cfb\u5217\u4e0d\u652f\u6301\n\n- surface\uff1a\u56fe\u5c42\u8d44\u6e90\u6307\u9488\n\n- dstx\uff1a\u56fe\u7247\u663e\u793aX\u5750\u6807\n\n- dsty\uff1a\u56fe\u7247\u663e\u793aY\u5750\u6807\n\n- width\uff1a\u56fe\u7247\u663e\u793a\u5bbd\u5ea6[\u53ef\u9009]\n\n- height\uff1a\u56fe\u7247\u663e\u793a\u9ad8\u5ea6[\u53ef\u9009]\n\n- srcx\uff1a\u56fe\u7247\u88c1\u526aX\u5750\u6807[\u53ef\u9009]\n\n- srcy\uff1a\u56fe\u7247\u88c1\u526aY\u5750\u6807[\u53ef\u9009]\n\n\u4f8b\u5982\uff1a\n\n- \u5e73\u94fa\u663e\u793a\uff1adraw_surface(surface, dstx, dsty)\n\n- \u7f29\u653e\u663e\u793a\uff1adraw_surface(surface, dstx, dsty, width, height)\n\n- \u88c1\u526a\u663e\u793a\uff1adraw_surface(surface, dstx, dsty, width, height ,srcx, srcy)\n\n#### 1.4.17 draw_text(text,x,y,w,h,font,color,align)\n\n\u663e\u793a\u6587\u5b57\n\n- text\uff1a\u5b57\u7b26\u4e32\n\n- x\uff1a\u663e\u793aX\u5750\u6807\n\n- y\uff1a\u663e\u793aY\u5750\u6807\n\n- w\uff1a\u663e\u793a\u5bbd\u5ea6\n\n- h\uff1a\u663e\u793a\u9ad8\u5ea6\n\n- font\uff1a\u5b57\u4f53\u7f16\u53f7\n\n- color\uff1a\u989c\u8272RGB565\n\n- align\uff1a\u5bf9\u9f50\u65b9\u5f0f\n\nbit0~bit1\u6c34\u5e73\u5bf9\u9f50\u65b9\u5f0f\uff0c0\u5de6\u5bf9\u9f50\uff0c1\u5c45\u4e2d\u5bf9\u9f50\uff0c2\u53f3\u5bf9\u9f50\n\nbit2~bit3\u5782\u76f4\u5bf9\u9f50\u65b9\u5f0f\uff0c0\u4e0a\u5bf9\u9f50\uff0c1\u5c45\u4e2d\u5bf9\u9f50\uff0c3\u4e0b\u5bf9\u9f50\n\n## 1.5 MODBUS\u534f\u8bae\u8bbf\u95ee\n\nLUA\u4e2d\u8bbf\u95eeMODBUS\/PLC\u7b49\u534f\u8bae\u4e2d\u5b9a\u4e49\u7684\u53d8\u91cf\uff0c\u9700\u8981\u901a\u8fc7\u4e0b\u9762\u7684\u53d8\u91cf\u8bbf\u95ee\u63a5\u53e3\n\nmb_\u524d\u7f00\u7684\u63a5\u53e3\uff0c\u4e13\u7528\u4e8eMODBUS\u534f\u8bae\uff0c\u56fa\u4ef6\u7248\u672c\u8981\u6c42\uff1aW\u7cfb\u5217&gt;=3.0.590.0\uff0cF\u7cfb\u5217&gt;= 4.1.401.0\uff0cM\u7cfb\u5217&gt;= V6.1.59.00\n\n#### 1.5.1 get_variant(name)\n\n\u83b7\u53d6\u534f\u8bae\u53d8\u91cf\u7684\u6570\u503c\n\n- name\uff1a\u53d8\u91cf\u540d\u79f0\n\n```\n\u4f8b\u5982\uff1aget_variant(\u201cVariable1\u201d)\n\n```\n\n#### 1.5.2 set_variant(name,value)\n\n\u8bbe\u7f6e\u534f\u8bae\u53d8\u91cf\u7684\u6570\u503c\n\n- name\uff1a\u53d8\u91cf\u540d\u79f0\n\n- value\uff1a\u9700\u8981\u5bf9\u53d8\u91cf\u8d4b\u7684\u503c\n\n```\n\u4f8b\u5982\uff1aset_variant(\u201cVariable1\u201d,12345)\n\n```\n\n#### 1.5.3 mb_set_timeout (timeout)\n\n\u8bbe\u7f6e\u4ece\u673a\u5e94\u7b54\u8d85\u65f6\u65f6\u95f4\n\n- timeout\uff1a\u8303\u56f41~255\uff0c10\u6beb\u79d2\u5355\u4f4d\n\n#### 1.5.4 mb_read_coil_01 (slave,addr,quantity)\n\n01\u529f\u80fd\u7801\uff0c\u8bfb\u53d6\u7ebf\u5708\uff0c\u6210\u529f\u65f6\u8fd4\u56de\u5b57\u8282\u6570\u7ec4\uff0c\u4e00\u4e2a\u5b57\u82828\u4e2acoil\uff0c\u5931\u8d25\u8fd4\u56denil\n\n- slave\uff1a\u4ece\u673a\u5730\u5740\n\n- addr\uff1a\u53d8\u91cf\u5730\u5740\n\n- quantity\uff1a\u8bfb\u53d6\u7684\u7ebf\u5708\u4e2a\u6570\n\n#### 1.5.5 mb_read_input_02(slave,addr,quantity)\n\n02\u529f\u80fd\u7801\uff0c\u8bfb\u53d6\u79bb\u6563\u8f93\u5165\uff0c\u6210\u529f\u65f6\u8fd4\u56de\u5b57\u8282\u6570\u7ec4\uff0c\u4e00\u4e2a\u5b57\u82828\u4e2ainput\uff0c\u5931\u8d25\u8fd4\u56denil\n\n- slave\uff1a\u4ece\u673a\u5730\u5740\n\n- addr\uff1a\u53d8\u91cf\u5730\u5740\n\n- quantity\uff1a\u8bfb\u53d6\u79bb\u6563\u8f93\u5165\u5bc4\u5b58\u5668\u7684\u4e2a\u6570\n\n#### 1.5.6 mb_read_reg_03(slave,addr,quantity)\n\n03\u529f\u80fd\u7801\uff0c\u8bfb\u53d6\u4fdd\u6301\u5bc4\u5b58\u5668\uff0c\u6210\u529f\u65f6\u8fd4\u56deWORD\u6570\u7ec4\uff0c\u5931\u8d25\u8fd4\u56denil\n\n- slave\uff1a\u4ece\u673a\u5730\u5740\n\n- addr\uff1a\u53d8\u91cf\u5730\u5740\n\n- quantity\uff1a\u8bfb\u53d6\u7684\u4fdd\u5b58\u5bc4\u5b58\u5668\u7684\u4e2a\u6570\n\n#### 1.5.7 mb_read_input_reg_04(slave,addr,quantity)\n\n04\u529f\u80fd\u7801\uff0c\u8bfb\u53d6\u8f93\u5165\u5bc4\u5b58\u5668\uff0c\u6210\u529f\u65f6\u8fd4\u56deWORD\u6570\u7ec4\uff0c\u5931\u8d25\u8fd4\u56denil\n\n- lave\uff1a\u4ece\u673a\u5730\u5740\n\n- addr\uff1a\u53d8\u91cf\u5730\u5740\n\n- quantity\uff1a\u8bfb\u53d6\u7684\u8f93\u5165\u5bc4\u5b58\u5668\u7684\u4e2a\u6570\n\n#### 1.5.8 mb_write_coil_05 (slave,addr,status)\n\n05\u529f\u80fd\u7801\uff0c\u5199\u5355\u4e2a\u7ebf\u5708\uff0c\u6210\u529f\u65f6\u8fd4\u56detrue\uff0c\u5931\u8d25\u8fd4\u56defalse\n\n- slave\uff1a\u4ece\u673a\u5730\u5740\n\n- addr\uff1a\u53d8\u91cf\u5730\u5740\n\n- status\uff1a1\u4e3aON\uff0c0\u4e3aOFF\n\n#### 1.5.9 mb_write_reg_06 (slave,addr,reg)\n\n06\u529f\u80fd\u7801\uff0c\u5199\u5165\u5355\u4e2a\u4fdd\u6301\u5bc4\u5b58\u5668\uff0c\u6210\u529f\u65f6\u8fd4\u56detrue\uff0c\u5931\u8d25\u8fd4\u56defalse\n\n- slave\uff1a\u4ece\u673a\u5730\u5740\n\n- addr\uff1a\u53d8\u91cf\u5730\u5740\n\n- reg\uff1a\u5bc4\u5b58\u5668\u503c\n\n#### 1.5.10 mb_write_coil_15 (slave,addr,quantity,coils)\n\n15\u529f\u80fd\u7801\uff0c\u5199\u591a\u4e2a\u7ebf\u5708\uff0c\u6210\u529f\u65f6\u8fd4\u56detrue\uff0c\u5931\u8d25\u8fd4\u56defalse\n\n- slave\uff1a\u4ece\u673a\u5730\u5740\n\n- addr\uff1a\u53d8\u91cf\u5730\u5740\n\n- coils\uff1a\u5b57\u8282\u6570\u7ec4\uff0c\u4e00\u4e2a\u5b57\u82828\u4e2acoil\uff0c\u4e0b\u6807\u7d22\u5f15\u4ece0\u5f00\u59cb\n\n#### 1.5.11 mb_write_reg_16 (slave,addr,regs)\n\n16\u529f\u80fd\u7801\uff0c\u5199\u5165\u591a\u4e2a\u4fdd\u6301\u5bc4\u5b58\u5668\uff0c\u6210\u529f\u65f6\u8fd4\u56detrue\uff0c\u5931\u8d25\u8fd4\u56defalse\n\n- slave\uff1a\u4ece\u673a\u5730\u5740\n\n- addr\uff1a\u53d8\u91cf\u5730\u5740\n\n- regs\uff1a\u5bc4\u5b58\u5668WORD\u6570\u7ec4\uff0c\u4e0b\u6807\u7d22\u5f15\u4ece0\u5f00\u59cb\n\n## 1.6 \u7f51\u7edc\u76f8\u5173\n\nW\u8054\u578b\u652f\u6301\uff0cF\u7cfb\u5217\u3001M\u7cfb\u5217\u4e0d\u652f\u6301\n\n#### 1.6.1 get_wifi_cfg()\n\n\u8fd4\u56de4\u4e2a\u53c2\u6570\n\n```\n\u4f8b\u5982\uff1awifi_mode, secumode, ssid, password = get_wifi_cfg()\n\n```\n\n- wifi_mode\uff1a\u65e0\u7ebf\u7f51\u7edc\u6a21\u5f0f\u30020-\u7981\u7528\u65e0\u7ebf\u7f51\u7edc\uff0c1-\u65e0\u7ebf\u7f51\u5361\u6a21\u5f0f\uff0c2-AP\u70ed\u70b9\u6a21\u5f0f\n\n- secumode\uff1a\u52a0\u5bc6\u6a21\u5f0f 0-AUTO(\u9ed8\u8ba4\u503c) \uff0c1-WEP\uff0c 2-WPAPSK \uff0c3-WPAPSK2\n\n- ssid\uff1a\u65e0\u7ebf\u7f51\u7edc\u540d\u79f0\n\n- password\uff1a\u65e0\u7ebf\u7f51\u7edc\u5bc6\u7801\n\n#### 1.6.2 set_wifi_cfg(wifi_mode, secumode, ssid, password)\n\n\u8bbe\u7f6eWIFI\u914d\u7f6e\uff0c\u53c2\u6570\u8bf4\u660e\u540c\u4e0a\n\n#### 1.6.3 on_wifi_callback(state,reason)\n\n\u7f51\u7edc\u72b6\u6001\u6539\u53d8\u65f6\uff0c\u4f1a\u88ab\u8c03\u7528\n\n#### 1.6.4 get_network_state()\n\n\u83b7\u53d6\u7f51\u7edc\u72b6\u6001\uff0c\u8fd4\u56de\u4e00\u4e2a\u53c2\u6570\n\n```\n\u4f8b\u5982\uff1astate = get_network_state()\n\n```\n\n\u72b6\u6001\u4f4d\u8bf4\u660e\n\n- bit0-\u65e0\u7ebf\u7f51\u7edc\u8fde\u63a5\n\n- bit1-\u6709\u7ebf\u7f51\u7edc\u8fde\u63a5\n\n- bit2-\u662f\u5426\u8fde\u4e0a\u670d\u52a1\u5668\n\n- bit3-\u662f\u5426\u6709\u5ba2\u6237\u7aef\u8fde\u4e0a\n\n#### 1.6.5 set_network_cfg(dhcp, ipaddr, netmask, gateway, dns)\n\ndhcp\u542f\u7528DHCP\uff0c0\u7981\u7528\uff0c1\u542f\u7528\uff0c\u7981\u7528\u65f6\u540e\u9762\u7684\u53c2\u6570\u624d\u6709\u6548\n\n- ipaddr\uff1a\u9759\u6001IP\n\n- netmask\uff1a\u63a9\u7801\n\n- gateway\uff1a\u5b50\u7f51\u63a9\u7801\n\n- dns\uff1a\u57df\u540d\u670d\u52a1\u5668\n\n#### 1.6.6 get_network_cfg()\n\n\u8fd4\u56de\u4e94\u4e2a\u53c2\u6570\uff0c\u8bf4\u660e\u540c\u4e0a\n\n```\n\u4f8b\u5982\uff1adhcp, ipaddr, netmask, gateway, dns = get_network_cfg()\n\n```\n\n#### 1.6.7 save_network_cfg()\n\n\u4fdd\u5b58\u7f51\u7edc\u8bbe\u7f6e\uff0c\u5e76\u91cd\u8fde\u7f51\u7edc\n\n\u6ce8\u610f\uff1a\u4fee\u6539\u7f51\u7edc\u914d\u7f6e\u3001\u670d\u52a1\u5668\u53c2\u6570\u7b49\u9700\u8981\u8c03\u7528\u6b64\u51fd\u6570\u8fdb\u884c\u4fdd\u5b58\u751f\u6548\uff0c\u5982\u4e0b\u6240\u793a\n\n```\n......\nset_network_cfg(dhcp, ipaddr, netmask, gateway, dns)\nsave_network_cfg()\n......\n```\n\n#### 1.6.8 set_network_service_cfg(wificom, mode, port, server_addr)\n\n\u8bbe\u7f6e\u7f51\u7edc\u670d\u52a1\u53c2\u6570\n\n- wificom\uff1a\u9ed8\u8ba4\u4e3a0\uff0c\u4e3a1\u65f6\u542f\u7528\u900f\u4f20\u6a21\u5f0f\uff08\u5373\u65e0\u7ebf\u4e32\u53e3\u5c4f\uff09\n\n- mode\uff1a0\u7981\u7528\u7f51\u7edc\u670d\u52a1\uff0c1\u5ba2\u6237\u7aef\u6a21\u5f0f\uff0c2\u670d\u52a1\u5668\u6a21\u5f0f\n\n- port \uff1a\u670d\u52a1\u7aef\u53e3\uff0c\u9ed8\u8ba45050\n\n- server_addr\uff1a\u670d\u52a1\u5668\u5730\u5740(\u5c4f\u4f5c\u5ba2\u6237\u7aef\u65f6)\n\n#### 1.6.9 get_network_service_cfg()\n\n\u8fd4\u56de4\u4e2a\u53c2\u6570\uff0c\u8bf4\u660e\u540c\u4e0a\n\nwificom, mode, port, server_addr = get_network_service_cfg()\n\n#### 1.6.10 scan_ap()\n\n\u626b\u63cf\u65e0\u7ebf\u70ed\u70b9\uff0c\u8fd4\u56de\u70ed\u70b9\u6570\u76ee\n\n```\nap_count = scan_ap()\n\n```\n\n#### 1.6.11 get_ap_info(index)\n\n\u83b7\u53d6\u6307\u5b9a\u70ed\u70b9\u7684\u4fe1\u606f\n\n- index\uff1aWIFI\u7684\u5e8f\u53f7\uff0c\u5982\u4e0b\u6240\u793a\n\n```\nlocal ap_cnt = scan_ap()\nfor i = 1, ap_cnt \ndo\n    local ssid, security, quality = get_ap_info(i - 1)\n    record_add(sc_scanwifi, 1, ssid..\";\"..quality..\";\")\nend\n```\n\n- index \u70ed\u70b9\u7d22\u5f15\uff0c\u7d22\u5f15\u4ece0\u5f00\u59cb\n\n- ssid\uff1a\u70ed\u70b9\u540d\u79f0\n\n- security\uff1a\u52a0\u5bc6\u65b9\u5f0f\n\n- quality\uff1a\u4fe1\u53f7\u8d28\u91cf\n\n#### 1.6.12 client_send_data(packet)\n\n\u901a\u8fc7\u5ba2\u6237\u7aefSOCKET\u53d1\u9001\u62a5\u6587 \u5230\u670d\u52a1\u5668\n\n- packet\uff1a\u53d1\u9001\u5b57\u8282\u6570\u7ec4packet\uff0c\u4e0b\u6807\u4ece0\u5f00\u59cb\n\n```\nfunction my_sendToserver()\n    local send_buff = {}    \n    send_buff&#91;0] = 0x00\n    send_buff&#91;1] = 0x01\n    send_buff&#91;2] = 0x02\n    send_buff&#91;3] = 0x03\n    send_buff&#91;4] = 0x04\n    send_buff&#91;5] = 0x05\n    send_buff&#91;6] = 0x06\n    send_buff&#91;7] = 0x07\n    send_buff&#91;8] = 0x08\n    send_buff&#91;9] = 0x09\n    client_send_data(send_buff)\nend\n--\u7528\u6237\u901a\u8fc7\u89e6\u6478\u4fee\u6539\u63a7\u4ef6\u540e\uff0c\u6267\u884c\u6b64\u56de\u8c03\u51fd\u6570\u3002\n--\u70b9\u51fb\u6309\u94ae\u63a7\u4ef6\uff0c\u4fee\u6539\u6587\u672c\u63a7\u4ef6\u3001\u4fee\u6539\u6ed1\u52a8\u6761\u90fd\u4f1a\u89e6\u53d1\u6b64\u4e8b\u4ef6\u3002\nfunction on_control_notify(screen,control,value)\n    ......\n    if screen == sc_tcp\n    then \n        if control == 3 and value == 0\n        then\n            my_sendToserver()\n        end\n    end\n    ......\nend\n```\n\n#### 1.6.13 server_send_data(clinet_id\uff0cpacket)\n\n\u901a\u8fc7\u670d\u52a1\u7aefSOCKET\u53d1\u9001\u62a5\u6587\u5230\u5ba2\u6237\u7aef\n\n- clinet_id\uff1a\u76ee\u6807\u5ba2\u6237\u7aefID\n\n- packet\uff1a\u53d1\u9001\u5b57\u8282\u6570\u7ec4packet\uff0c\u4e0b\u6807\u4ece0\u5f00\u59cb\n\n```\nfunction my_sendToClien()\n    local send_buff = {}    \n    send_buff&#91;0] = 0x00\n    send_buff&#91;1] = 0x01\n    send_buff&#91;2] = 0x02\n    send_buff&#91;3] = 0x03\n    send_buff&#91;4] = 0x04\n    send_buff&#91;5] = 0x05\n    send_buff&#91;6] = 0x06\n    send_buff&#91;7] = 0x07\n    send_buff&#91;8] = 0x08\n    send_buff&#91;9] = 0x09\n    server_send_data(1\uff0csend_buff)\nend\n--\u7528\u6237\u901a\u8fc7\u89e6\u6478\u4fee\u6539\u63a7\u4ef6\u540e\uff0c\u6267\u884c\u6b64\u56de\u8c03\u51fd\u6570\u3002\n--\u70b9\u51fb\u6309\u94ae\u63a7\u4ef6\uff0c\u4fee\u6539\u6587\u672c\u63a7\u4ef6\u3001\u4fee\u6539\u6ed1\u52a8\u6761\u90fd\u4f1a\u89e6\u53d1\u6b64\u4e8b\u4ef6\u3002\nfunction on_control_notify(screen,control,value)\n    ......\n    if screen == sc_tcp\n    then \n        if control == 3 and value == 0\n        then\n            my_sendToClien()\n        end\n    end\n    ......\nend\n```\n\n#### 1.6.14 on_client_recv_data(packet)\n\n\u5f53\u5ba2\u6237\u7aefSOCKET\u63a5\u6536\u5230\u6570\u636e\u65f6\uff0c\u7cfb\u7edf\u81ea\u52a8\u56de\u8c03\u6b64\u51fd\u6570\u3002\n\n- packet\uff1a\u63a5\u6536\u7684\u5b57\u8282\u6570\u7ec4packet\uff0c\u4e0b\u6807\u4ece0\u5f00\u59cb\n\nPS\uff1a\u5c4f\u5e55\u63a5\u6536\u670d\u52a1\u5668\u7684\u6570\u636e\u4e0d\u4e00\u5b9a\u662f\u5b8c\u6574\u4e00\u5e27\u62a5\u6587\u6570\u636e\uff0c\u6b64\u5904\u4ecd\u9700\u8981\u505a\u7c98\u5305\u3001\u5206\u5305\uff0c\u518d\u63d0\u53d6\u5b8c\u6574\u4e00\u5e27\u6570\u636e\u505a\u5904\u7406\n\n```\nfunction on_client_recv_data(packet)\n    local client_rec = ''\n    for i= 1,#(packet) do\n            client_rec = client_rec ..\" \".. string.format(\"%02X\",packet&#91;i])\n    end\n\n    --\u7b80\u5355\u663e\u793a\u62a5\u6587\u6570\u636e\n    set_text(sc_tcp, 1, 'cnt('..recv_cnt..') = '..client_rec)\nend\n```\n\n\u200b\n\n#### 1.6.15 on_server_recv_data(clinet_id\uff0cpacket)\n\n\u5f53\u670d\u52a1\u7aefSOCKET\u63a5\u6536\u5230\u6570\u636e\u65f6\uff0c\u7cfb\u7edf\u81ea\u52a8\u56de\u8c03\u6b64\u51fd\u6570\n\n- clinet_id\uff1a\u5ba2\u6237\u7aefID\n\n- packet\uff1a\u63a5\u6536\u7684\u5b57\u8282\u6570\u7ec4packet\uff0c\u4e0b\u6807\u4ece0\u5f00\u59cb\n\nPS\uff1a\u5c4f\u5e55\u63a5\u6536\u670d\u52a1\u5668\u7684\u6570\u636e\u4e0d\u4e00\u5b9a\u662f\u5b8c\u6574\u4e00\u5e27\u62a5\u6587\u6570\u636e\uff0c\u6b64\u5904\u4ecd\u9700\u8981\u505a\u7c98\u5305\u3001\u5206\u5305\uff0c\u518d\u63d0\u53d6\u5b8c\u6574\u4e00\u5e27\u6570\u636e\u505a\u5904\u7406\n\n\u5904\u7406\u65b9\u6cd5\u4e0eon_client_recv_data\u7c7b\u4f3c\u3002\n\n#### 1.6.16 http_request(taskid,uri,method,content_type,postdata)\n\n\u53d1\u9001HTTP\u8bf7\u6c42\u5230\u670d\u52a1\u5668\n\n- taskid\uff1a\u8bf7\u6c42\u4efb\u52a1\u7f16\u53f7\uff0c\u4efb\u610f\u8bbe\u7f6e\n\n- uri\uff1a\u8d44\u6e90\u8def\u5f84\n\n- method\uff1a\u65b9\u6cd5\uff0c0GET\uff0c1POST\n\n\u4ee5\u4e0b\u53c2\u6570POST\u65b9\u6cd5\u624d\u9700\u8981\n\n- content_type\uff1a\u6570\u636e\u7c7b\u578b\u4f8b\u5982 json,xml,text\u7b49\n\n- postdata\uff1aPOST\u6570\u636e\n\n#### 1.6.17 on_http_response(taskid,response)\n\nHTTP\u54cd\u5e94\n\n- taskid\uff1a\u54cd\u5e94\u4efb\u52a1\u7f16\u53f7\uff0c\u4e0ehttp_request\u5339\u914d\n\n- response\uff1a\u54cd\u5e94\u6570\u636e\n\n#### 1.6.18 http_download (taskid,uri,savepath)\n\n\u4f7f\u7528HTTP\u534f\u8bae\u4e0b\u8f7d\u6587\u4ef6\n\n- taskid\uff1a\u8bf7\u6c42\u4efb\u52a1\u7f16\u53f7\uff0c\u4efb\u610f\u8bbe\u7f6e\n\n- uri\uff1a\u8d44\u6e90\u8def\u5f84\n\n- savepath\uff1a\u5b58\u653e\u4f4d\u7f6e\n\n#### 1.6.19 http_download_bigfile(taskid,uri ,savepath)\n\n\u4f7f\u7528HTTP\u534f\u8bae\u4e0b\u8f7d\u5927\u6587\u4ef6\n\n\u53c2\u6570\u8bf4\u660e\u540c\u4e0a\n\n#### 1.6.20 on_http_download (taskid, status)\n\n\u4e0b\u8f7d\u54cd\u5e94\n\ntaskid\uff1a\u54cd\u5e94\u4efb\u52a1\u7f16\u53f7\uff0c\u4e0ehttp_download\u5339\u914d\n\nstatus\uff1a\u4e0b\u8f7d\u72b6\u6001\uff1a0\u4e0b\u8f7d\u5931\u8d25\uff0c1\u4e0b\u8f7d\u6210\u529f\u4f46\u5b58\u50a8\u5931\u8d25\uff0c2\u4e0b\u8f7d\u5e76\u5b58\u50a8\u6210\u529f\n\n#### 1.6.21 udp_create(port)\n\n- port\uff1a\u7aef\u53e3\u53f7\n\n\u521b\u5efaUDP\u5957\u63a5\u5b57\uff0c\u5e76\u7ed1\u5b9a\u670d\u52a1\u7aef\u53e3\n\n```\n\u4f8b\u5982\uff1asockfd = udp_create(12345)\n\n```\n\n#### 1.6.22 udp_close(sockfd)\n\n\u5173\u95edUDP\u5957\u63a5\u5b57\n\n- sockfd\uff1a\u5957\u63a5\u5b57\uff0c\u5982udp_create(port)\u8fd4\u56de\n\n#### 1.6.23 udp_recvfrom(sockfd)\n\n\u63a5\u6536UDP\u6570\u636e\u62a5\u6587\n\n- ret=-1\uff1a\u8868\u793a\u53d1\u751f\u9519\u8bef\uff0cret=0\u8868\u793a\u65e0\u6570\u636e\uff0c\u5176\u4ed6\u503c\u8868\u793a\u6570\u636e\u957f\u5ea6\n\n- ip,port\uff1a\u53d1\u9001\u7aef\u7684IP\u548c\u7aef\u53e3\n\n- packet\u4e3a\u6570\u636e\u62a5\u6587\uff0ctable\u7c7b\u578b\uff0c\u4e0b\u6807\u4ece0\u5f00\u59cb\n\n```\nret,ip,port,packet = udp_recvfrom(sockfd)\n\n```\n\n#### 1.6.24 udp_sendto(sockfd,ip,port,packet)\n\n\u53d1\u9001UDP\u6570\u636e\u62a5\u6587\n\n- sockfd\uff1aUDP\u5957\u63a5\u5b57\n\n- ip,port\uff1a\u63a5\u6536\u7aef\u7684IP\u548c\u7aef\u53e3\n\n- packet\uff1a\u6570\u636e\u62a5\u6587\uff0ctable\u7c7b\u578b\uff0c\u4e0b\u6807\u4ece0\u5f00\u59cb\n\n#### 1.6.25 get_wifi_mac()\n\n\u83b7\u53d6WIFI\u6a21\u5757\u7684mac\u5730\u5740\uff0c\u8fd4\u56de\u5b57\u7b26\u4e32\n\n```\nlocal mac_addr = get_wifi_mac()\n\n```\n\n#### 1.6.26 get_ethernet_mac()\n\n\u83b7\u53d6\u4ee5\u592a\u7f51\u7684mac\u5730\u5740\uff0c\u8fd4\u56de\u5b57\u7b26\u4e32\n\n```\nlocal mac_addr = get_ethernet_mac()\n\n```\n\n## 1.7 \u5b9a\u65f6\u5668\n\n#### 1.7.1 start_timer(timer_id, timeout, countdown, repeat)\n\n\u542f\u52a8\u5b9a\u65f6\u5668\uff0c\u8d85\u65f6\u540e\u7cfb\u7edf\u81ea\u52a8\u8c03\u7528on_timer\n\n- timer_id\uff1a\u5b9a\u65f6\u5668ID\uff0c0~31\n\n- timeout\uff1a\u8d85\u65f6\u65f6\u95f4\uff0c\u5355\u4f4d\u6beb\u79d2\n\n- countdown\uff1a0\u987a\u8ba1\u65f6\uff0c1\u5012\u8ba1\u65f6\n\n- repeat\uff1a\u91cd\u590d\u6b21\u6570\uff0c0\u8868\u793a\u65e0\u9650\u91cd\u590d\n\n#### 1.7.2 stop_timer(timer_id)\n\n\u505c\u6b62\u5b9a\u65f6\u5668\n\n- timer_id\uff1a\u5b9a\u65f6\u5668ID\uff0c0~31\n\n#### 1.7.3 on_timer(timer_id)\n\n\u5b9a\u65f6\u5668\u8d85\u65f6\u56de\u8c03\u51fd\u6570\n\n- timer_id\uff1a\u5b9a\u65f6\u5668ID\uff0c0~31\n\n#### 1.7.4 get_timer_value(timer_id)\n\n\u83b7\u53d6\u5b9a\u65f6\u5668\u5f53\u524d\u8ba1\u65f6\u65f6\u95f4\uff0c\u5355\u4f4d\u6beb\u79d2\n\n- timer_id\uff1a\u5b9a\u65f6\u5668ID\uff0c0~31\n\n## 1.8 \u4e32\u53e3\n\nLUA\u811a\u672c\u7684\u4e32\u53e3API\u51fd\u6570\uff0c\u66f4\u591a\u5e94\u7528\u4e8e\u81ea\u7531\u4e32\u53e3\u534f\u8bae\uff0c\u8be6\u7ec6DEMO\uff0c\u53ef\u53c2\u8003[LUA\u6559\u7a0b10-\u81ea\u5b9a\u4e49\u4e32\u53e3\u6307\u4ee4.zip](http:\/\/kaifabao.gz-dc.com\/LUA%E6%95%99%E7%A8%8B10-%E8%87%AA%E5%AE%9A%E4%B9%89%E4%B8%B2%E5%8F%A3%E6%8C%87%E4%BB%A4.zip)\n\n#### 1.8.1 uart_send_data(packet)\n\n\u901a\u8fc7\u4e32\u53e3\u53d1\u9001\u6570\u636e\n\n- packet\uff1a\u5b57\u8282\u6570\u7ec4\uff0c\u4e0b\u6807\u4ece0\u5f00\u59cb\n\n```\nfunction uart_doorState(state)\n    local door_buff = {}    \n    door_buff&#91;0] = 0x5A\n    door_buff&#91;1] = 0x5A\n    door_buff&#91;2] = 0x07\n    door_buff&#91;3] = 0x82\n    door_buff&#91;4] = 0x00\n    door_buff&#91;5] = 0x01\n    door_buff&#91;6] = state\n\n    uart_send_data(door_buff)\nend\n--\u7528\u6237\u901a\u8fc7\u89e6\u6478\u4fee\u6539\u63a7\u4ef6\u540e\uff0c\u6267\u884c\u6b64\u56de\u8c03\u51fd\u6570\u3002\n--\u70b9\u51fb\u6309\u94ae\u63a7\u4ef6\uff0c\u4fee\u6539\u6587\u672c\u63a7\u4ef6\u3001\u4fee\u6539\u6ed1\u52a8\u6761\u90fd\u4f1a\u89e6\u53d1\u6b64\u4e8b\u4ef6\u3002\nfunction on_control_notify(screen,control,value)\n    ......\n    if screen == sc_door\n    then \n        if control == 1\n        then\n            uart_doorState(value)\n        end\n    end\n    ......\nend\n```\n\n#### 1.8.2 uart_set_timeout(timeout, timeout_inter)\n\n\u8bbe\u7f6e\u4e32\u53e3\u63a5\u6536\u8d85\u65f6\u65f6\u95f4\n\n- timeout\uff1a\u63a5\u6536\u603b\u8d85\u65f6\n\n- timeout_inter\uff1a\u5b57\u8282\u95f4\u9694\u8d85\u65f6\n\n```\n\u5e38\u7528\u4e8e\u81ea\u7531\u4e32\u53e3\u534f\u8bae\uff08uart_free_protocol = 1\uff09\uff0ceg\uff1auart_set_timeout(0, 0)\n\n```\n\n#### 1.8.3 uart_set_baudrate(baudrate)\n\n- baudrate\uff1a\u6ce2\u7279\u7387\uff0c\u652f\u63012400bps ~ 961200bps\n\n```\n\u8bbe\u7f6e\u6ce2\u7279\u7387\uff0c\u5982uart_set_baudrate(9600)\n\n```\n\n#### 1.8.4 uart_get_baudrate()\n\n\u83b7\u53d6\u6ce2\u7279\u7387\uff0c\u8fd4\u56de\u6ce2\u7279\u7387\u503c\n\n```\nlocal baudrate = uart_get_baudrate()\n\n```\n\n#### 1.8.5 on_uart_recv_data(packet)\n\n\u4e32\u53e3\u63a5\u6536\u6570\u636e\u7684\u56de\u8c03\u51fd\u6570\uff0c\u6709\u4e24\u79cd\u65b9\u5f0f\u53ef\u4ee5\u89e6\u53d1\u6b64\u51fd\u6570\u6267\u884c\uff1a\n\n\u2606\u4f7f\u7528\u81ea\u5b9a\u4e49\u4e32\u53e3\u6307\u4ee4\uff1a\u683c\u5f0f\u4e3aEE B5\u3010\u81ea\u5b9a\u4e49\u6570\u636e\u3011FF FC FF FF\n\n\u2606\u4f7f\u7528\u81ea\u7531\u4e32\u53e3\u534f\u8bae\uff1a\u5728LUA\u811a\u672c\u4e2d\u5b9a\u4e49\u5168\u5c40\u53d8\u91cf uart_free_protocol = 1\n\n- packet\uff1a\u63a5\u6536\u7684\u5b57\u8282\u6570\u636e\n\n#### 1.8.6 uart_setup(baudrate,parity,stopbit,databits)\n\n\u4e32\u53e3\u53c2\u6570\u8bbe\u7f6e\n\n- baudrate\uff1a\u6ce2\u7279\u7387\u503c\n\n- parity\uff1a0-\u65e0\u6821\u9a8c\uff0c1-ODD\u5947\u6821\u9a8c\uff0c2-EVEN \u5076\u6821\u9a8c\n\n- stopbit\uff1astopbit=0\uff0c1\u4e2a\u505c\u6b62\u4f4d\uff1bstopbit=1\uff0c1.5\u4e2a\u505c\u6b62\u4f4d\n\n- databits\uff1a\u6570\u636e\u4f4d5~8\n\n## 1.9 CAN \u63a5\u53e3\n\n#### 1.9.1 canbus_open(index,baudrate,listen_mode,loop_back)\n\n\u6253\u5f00 CANBUS \u63a5\u53e3\n\n- index\uff1a\u7d22\u5f15\u53f7 0~1\n\n- baudrate\uff1a\u6ce2\u7279\u7387\uff08\u5355\u4f4d K\uff09\uff0c \u53ef\u9009 125,250,500,1000\n\n- listen_mode\uff1a\u53ea\u8bfb\u6a21\u5f0f\n\n- loop_back\uff1a\u81ea\u53d1\u81ea\u6536\uff08\u73af\u56de\/\u81ea\u6d4b\uff09\n\n#### 1.9.2 canbus_close(index)\n\n\u5173\u95ed CANBUS \u63a5\u53e3\n\n- index\uff1a\u7d22\u5f15\u53f7 0~1\n\n#### 1.9.3 canbus_write(index,identifier,dlc,rtr,ide,data)\n\n\u53d1\u9001 CAN \u62a5\u6587\n\n- index\uff1a\u7d22\u5f15\u53f7 0~1\n\n- identifier\uff1a\u62a5\u6587 ID\n\n- dlc\uff1a\u6570\u636e\u957f\u5ea6\n\n- rtr\uff1a\u8fdc\u7a0b\u5e27\n\n- ide\uff1a\u6269\u5c55\u5e27\n\n- data\uff1a\u6570\u636e\uff0c table \u683c\u5f0f\n\n#### 1.9.4 on_canbus_recv(index,identifier,dlc,rtr,ide,data)\n\nCAN \u62a5\u6587\u56de\u8c03\u51fd\u6570\uff0c \u6536\u5230\u62a5\u6587\u540e\uff0c \u7cfb\u7edf\u81ea\u52a8\u8c03\u7528\n\n- index\uff1a\u7d22\u5f15\u53f7 0~1\n\n- identifier\uff1a\u62a5\u6587 ID\n\n- dlc\uff1a\u6570\u636e\u957f\u5ea6\n\n- rtr\uff1a\u8fdc\u7a0b\u5e27\n\n- ide\uff1a\u6269\u5c55\u5e27\n\n- data\uff1a\u6570\u636e\uff0c table \u683c\u5f0f\n\n## 1.10 \u97f3\u89c6\u9891\n\nW\u7cfb\u5217\u3001F\u7cfb\u5217\u3001M\u7cfb\u5217\u5747\u652f\u6301\u97f3\u9891\u64ad\u653e\uff0cW\u7cfb\u5217\u3001M\u7cfb\u5217\u5747\u652f\u6301\u89c6\u9891\u64ad\u653e\u3001F\u578b\u4e0d\u652f\u6301\n\n#### 1.10.1 play_sound(filename)\n\n\u64ad\u653e\u6307\u5b9a\u7684\u58f0\u97f3\u6587\u4ef6\uff0c\u4f8b\u5982\u64ad\u653e\u5c4f\u5185\u97f3\u9891\u6587\u4ef6\n\n- filename\uff1a\u8def\u5f84\n\n```\n\u5c4f\u5185\u8def\u5f84\u64ad\u653e\uff1a\nW\u7cfb\u5217\uff1aplay_sound(\u2018a:\/sounds\/welcome.wav\u2019)\nM\u3001F\u7cfb\u5217\uff1aplay_sound(\u20183:\/sounds\/welcome.wav\u2019)\n```\n\n#### 1.10.2 stop_sound()\n\n\u505c\u6b62\u64ad\u653e\n\n#### 1.10.3 on_audio_callback (state)\n\n\u58f0\u97f3\u64ad\u653e\u7ed3\u675f\u56de\u8c03\u901a\u77e5\n\n- state\u4fdd\u7559\u672a\u4f7f\u7528\u3002\n\n#### 1.10.4 set_volume(level)\n\n\u8bbe\u7f6e\u97f3\u91cf\n\n- level\uff1a\u97f3\u91cf\u7b49\u7ea70~100\u30020\u9759\u97f3\uff0c100\u6700\u5927\u97f3\u91cf\n\n#### 1.10.5 get_volume()\n\n\u83b7\u53d6\u97f3\u91cf\uff0c\u8fd4\u56de\u503c0-100\n\n#### 1.10.6 play_video(pathname,repeat)\n\n\u64ad\u653e\u89c6\u9891\uff0c\u4e0d\u9002\u7528\u4e8eM\/F\/X\u7cfb\u5217\n\npathname\u4e3a\u89c6\u9891\u8def\u5f84\n\nrepeat\u4e3a\u91cd\u590d\u6b21\u6570\uff0c0\u4e3a\u65e0\u9650\u5236\u6b21\uff0c\n\n\u64ad\u653e\u5c4f\u5185\u89c6\u9891\uff1aplay_ video(\u2018a:\/Videos\/1.mp4\u2019\uff0c0)\n\n#### 1.10.7 pause_video()\n\n\u6682\u505c\u89c6\u9891\u64ad\u653e\uff0cF\u7cfb\u5217\u4e0d\u652f\u6301\n\n#### 1.10.8 resume_video()\n\n\u6062\u590d\u89c6\u9891\u64ad\u653e\uff0cF\u7cfb\u5217\u4e0d\u652f\u6301\n\n#### 1.10.9 stop_video()\n\n\u505c\u6b62\u89c6\u9891\u64ad\u653e\uff0cF\u7cfb\u5217\u4e0d\u652f\u6301\n\n#### 1.10.10 play_video(file,left,top,width,height)\n\n\u64ad\u653e\u89c6\u9891\uff0cM\/X\u7cfb\u5217\uff0cF\u7cfb\u5217\/\u7269\u8054\u578b\u4e0d\u652f\u6301\n\nfile\uff1a\u6587\u4ef6\u8def\u5f84\n\nleft\uff1a\u8d77\u59cb\u5750\u6807x\n\ntop\uff1a\u8d77\u59cb\u5750\u6807y\n\nwidth\uff1a\u89c6\u9891\u663e\u793a\u7684\u5bbd\u5ea6\n\nheight\uff1a\u89c6\u9891\u663e\u793a\u7684\u9ad8\u5ea6\n\n#### 1.10.11 on_video_notify(msg\uff0cv1, v2)\n\n\u89c6\u9891\u64ad\u653e\u56de\u8c03\u51fd\u6570\n\nmsg\uff1a1-\u64ad\u653e\u4e2d\uff0c0-\u64ad\u653e\u5b8c\u6bd5\n\nv1:\u5f53\u524d\u64ad\u653e\u8fdb\u5ea6\uff0c\u5f53\u524d\u5df2\u64ad\u65f6\u957f\uff0c\u5355\u4f4ds\n\nv2:\u64ad\u653e\u603b\u8fdb\u5ea6, \u5f53\u524d\u89c6\u9891\u603b\u65f6\u957f\uff0c\u5355\u4f4ds\n\n#### 1.10.12 set_av_channel(channel)\n\n\u5207\u6362AV\u901a\u9053\uff0cM\u7cfb\u5217\uff0c\u7269\u8054\u578b\u3001F\u7cfb\u5217\u4e0d\u652f\u6301\n\nchannel = 0\uff0c\u5207\u6362\u5230\u901a\u90531\n\nchannel = 1\uff0c\u5207\u6362\u5230\u901a\u90532\n\n## 1.11 FLASH\u5b58\u50a8\u5668\u8bfb\u5199\n\n\u5c4f\u5e55\u63d0\u4f9b128K\u7528\u6237FLASH\uff0c\u53ef\u7528\u4e8e\u5b58\u50a8\u914d\u7f6e\u53c2\u6570\n\n\u56fa\u4ef6\u7248\u672c\u8981\u6c42\uff1aW\u7cfb\u5217&gt;=3.0.590\u30020\uff0cF\u7cfb\u5217&gt;= 4.1.401.0\uff0cM\u7cfb\u5217&gt;= V6.1.59.00\n\n#### 1.11.1 write_flash(addr,data)\n\n\u5199\u7528\u6237FLASH\u6570\u636e\uff0caddr\u5199\u5165\u5730\u5740\uff0cdata\u5b57\u8282\u6570\u7ec4\uff0c\u4e0b\u6807\u4ece0\u5f00\u59cb\u3002\n\n#### 1.11.2 read_flash(addr,length)\n\n\u8bfb\u7528\u6237FLASH\u6570\u636e\uff0caddr\u5199\u5165\u5730\u5740\uff0clength\u8bfb\u53d6\u5b57\u8282\u6570\uff0c\u8fd4\u56de\u7c7b\u578b\u4e3a\u5b57\u8282\u6570\u7ec4\uff0c\u4e0b\u6807\u4ece0\u5f00\u59cb\n\n```\ndata = read_flash(addr,length)\n\n```\n\n#### 1.11.3 write_flash_string(addr,str)\n\n\u5199\u5b57\u7b26\u4e32\u5230\u6307\u5b9aFLASH\u5730\u5740\n\n#### 1.11.4 read_flash_string(addr)\n\n\u4ece\u6307\u5b9aFLASH\u5730\u5740\u8bfb\u53d6\u5b57\u7b26\u4e32\uff0c\u6210\u529f\u8fd4\u56de\u5b57\u7b26\u4e32\uff0c\u5931\u8d25\u8fd4\u56denil\n\n```\nstr = read_flash_string(addr)\n\n```\n\n#### 1.11.5 flush_flash()\n\n\u7cfb\u7edf\u4f1a\u5bf9FLASH\u5199\u5165\u64cd\u4f5c\u8fdb\u884c\u7f13\u5b58\u4f18\u5316\uff0c\u4ee5\u63d0\u9ad8\u5199\u5165\u6548\u7387\n\nflush_flash\u64cd\u4f5c\u4f1a\u7acb\u5373\u628a\u6570\u636e\u5199\u5165FLASH\n\n## 1.12 \u6587\u4ef6\u7cfb\u7edf\u64cd\u4f5c\n\n\u6587\u4ef6\u7cfb\u7edf\u8bfb\u5199\u63a5\u53e3\uff0cM\u7cfb\u5217\u4e13\u7528\uff0c\u4e2a\u522b\u51fd\u6570\u7269\u8054\u578b\u4f7f\u7528\uff0c\u6ca1\u6709\u63d0\u53ca\u90e8\u5206\u5747M\u7cfb\u5217\u4e13\u6709\n\n#### 1.12.1 list_dir(path)\n\n\u904d\u5386\u6307\u5b9a\u76ee\u5f55\u4e0b\u7684\u6587\u4ef6\u548c\u6587\u4ef6\u5939\uff0c\u6210\u529f\u8fd4\u56detrue\uff0c\u5931\u8d25\u8fd4\u56defalse\n\n- path\uff1a\u6587\u4ef6\u8def\u5f84\n\n- filename\uff1a\u6587\u4ef6\u540d\u79f0\n\n- type\uff1a0-\u6587\u4ef6\u5939\uff0c1-\u6587\u4ef6\n\n- fsize\uff1a\u6587\u4ef6\u5927\u5c0f\n\n\u901a\u8fc7\u4ee5\u4e0b\u56de\u8c03\u51fd\u6570\u8fd4\u56de\u6587\u4ef6\u5939\u7684\u5185\u5bb9\n\non_list_dir(path,filename,type,fsize)\n\n#### 1.12.2 file_open(path,mode)\n\n\u6253\u5f00\u6587\u4ef6\uff0c\u6210\u529f\u8fd4\u56detrue\uff0c\u5931\u8d25false\n\n- path-\u6587\u4ef6\u8def\u5f84\n\n- mode-\u6253\u5f00\u6a21\u5f0f\uff0c\u5982\u4e0b\u7ec4\u5408\u65b9\u5f0f\n\nFA_OPEN_EXISTINGFA_READFA_WRITEFA_CREATE_NEWFA_CREATE_ALWAYSFA_OPEN_ALWAYS0x000x010x020x040x080x10\n\n\u4f8b\u5982\uff1a\n\n```\n\u6253\u5f00\u6587\u4ef6\u7528\u4e8e\u8bfb\u53d6\uff1afile_open(path, 0x01)\n\u521b\u5efa\u6587\u4ef6\u7528\u4e8e\u5199\u5165\uff1afile_open(path, 0x02|0x08)\n```\n\n#### 1.12.3 file_close()\n\n\u5173\u95ed\u6587\u4ef6\uff0c\u6210\u529f\u8fd4\u56detrue\uff0c\u5931\u8d25false\n\n#### 1.12.4 file_size()\n\n\u83b7\u53d6\u5f53\u524d\u6587\u4ef6\u5927\u5c0f\uff0c\u8fd4\u56de\u5b57\u8282\u6570\n\n```\nlocal file_fd = file_open(path, 0x01)\nlocal filesize = file_size()\n```\n\n#### 1.12.5 file_seek(offset)\n\n\u5b9a\u4f4d\u6587\u4ef6\u8bfb\u53d6\u4f4d\u7f6e\uff0c\u6210\u529f\u8fd4\u56detrue\uff0c\u5931\u8d25false\n\n- offset\uff1a\u6587\u4ef6\u504f\u79fb\u4f4d\u7f6e\n\n#### 1.12.6 file_read(count)\n\n\u8bfb\u53d6\u6587\u4ef6\u5185\u5bb9\uff0c\u6210\u529f\u8fd4\u56detable\u6570\u7ec4\uff0c\u5931\u8d25\u8fd4\u56denil\n\n- count\uff1a\u8bfb\u53d6\u5b57\u8282\u6570\uff0c\u6700\u5927\u8bfb\u53d62048\u4e2a\u5b57\u8282\n\n#### 1.12.7 file_write(data)\n\n\u5199\u6587\u4ef6\u5185\u5bb9\uff0c\u6210\u529f\u8fd4\u56detrue\uff0c\u5931\u8d25\u8fd4\u56defalse\n\n- data-\u5f85\u5199\u5165\u7684table\u6570\u7ec4\uff0c\u7d22\u5f15\u4ece0\u5f00\u59cb\uff0c\u6700\u5927\u4e00\u6b21\u6027\u51992048\u4e2a\u5b57\u8282\n\n#### 1.12.8 file_delete(path)\n\n- path\uff1a\u5f85\u5220\u9664\u7684\u6587\u4ef6\u8def\u5f84\n\n#### 1.12.9 file_copy(src_path, dst_path)\n\n- src_path\uff1a\u6e90\u6587\u4ef6\u8def\u5f84\n\n- dst_path\uff1a\u76ee\u6807\u6587\u4ef6\u8def\u5f84\n\n#### 1.12.10 start_copy_file (from,to)\n\n**\u6ce8\u610f\uff1a\u6b64\u51fd\u6570\u4ec5\u7269\u8054\u578b\u4f7f\u7528\uff01\uff01\uff01**\n\n\u6587\u4ef6\u62f7\u8d1d\n\n- from\uff1a\u6e90\u8def\u5f84\n\n- to\uff1a\u76ee\u6807\u8def\u5f84\n\n\u62f7\u8d1d\u6587\u4ef6\u8fc7\u7a0b\u4e2d\uff0c\u7cfb\u7edf\u81ea\u52a8\u56de\u8c03\u6587\u4ef6\u62f7\u8d1d\u8fdb\u5ea6\u901a\u77e5\n\non_copy_file_process(status,filesize,transfersize)\n\n#### 1.12.11 on_copy_file_process(status,filesize,transfersize)\n\n**\u6ce8\u610f\uff1a\u6b64\u51fd\u6570\u7269\u8054\u578b\/M\u7cfb\u5217\u5171\u7528\uff01\uff01\uff01**\n\n\u6587\u4ef6\u62f7\u8d1d\u8fdb\u5ea6\uff0c\u914d\u5408 file_copy(src_path, dst_path)\u4f7f\u7528\uff0c\u5f53\u8c03\u7528 file_copy\uff0c\u81ea\u52a8\u56de\u8c03\u5230on_copy_file_process\u51fd\u6570\n\n- status\uff1a\u72b6\u6001.0-\u5931\u8d25\uff0c1-\u62f7\u8d1d\u4e2d\uff0c2-\u62f7\u8d1d\u5b8c\u6210\n\n- filesize\uff1a\u88ab\u62f7\u8d1d\u7684\u6587\u4ef6\u5927\u5c0f\n\n- transfersize\uff1a\u5f53\u524d\u56de\u8c03\u62f7\u8d1d\u7684\u5b57\u8282\u6570\n\n## 1.13 \u5176\u4ed6\n\n#### 1.13.1 set_backlight(level)\n\n\u8bbe\u7f6e\u80cc\u5149\u4eae\u5ea6\n\n- level\uff1a\u4eae\u5ea6\u7b49\u7ea70~100\uff0c0\u6700\u6697\uff0c100\u6700\u4eae\n\n#### 1.13.2 get_backlight()\n\n\u83b7\u53d6\u4eae\u5ea6\u767e\u5206\u6bd4\uff0c\u8fd4\u56de\u6570\u503c\uff0c\u5171100\u7b49\u7ea7\n\n```\n\u5982\uff1alevel = get_backlight()\n\n```\n\n#### 1.13.3 set_language(lang)\n\n\u8bbe\u7f6e\u5f53\u524d\u8bed\u8a00\u9009\u9879\n\n- lang\uff1a\u8bed\u8a00\u7d22\u5f15\uff0c\u4ece0\u5f00\u59cb\u3002\u82e5\u4f7f\u7528\u82f1\u6587\u63d0\u793a\u952e\u76d8\uff0c\u6216\u4e0a0x80\n\n```\n\u4f8b\u5982\uff1a\u8bbe\u7f6e\u8bed\u8a001\uff08\u7d22\u5f150\uff09\n\u4e2d\u6587\u63d0\u793a\u952e\u76d8\uff1aset_language(0)\n\u82f1\u6587\u63d0\u793a\u952e\u76d8\uff1aset_language(0x80|0)\n```\n\n#### 1.13.4 get_language ()\n\n\u83b7\u53d6\u5f53\u524d\u8bed\u8a00\u9009\u9879\n\nlang\uff1a\u8fd4\u56de\u8bed\u8a00\u7d22\u5f15\uff0c\u4ece0\u5f00\u59cb\u3002\u82e5\u4f7f\u7528\u82f1\u6587\u63d0\u793a\u952e\u76d8\uff0c\u5219\u5f97\u5230\u8bed\u8a00\u9879\u6216\u4e0a0x80\n\n```\n\u4f8b\u5982\uff1a\u5047\u8bbe\u5f53\u524d\u8bed\u8a001\uff08\u7d22\u5f150\uff09cur_lang = get_language()\n\u4e2d\u6587\u63d0\u793a\u952e\u76d8\uff1acur_lang  = 0\n\u82f1\u6587\u63d0\u793a\u952e\u76d8\uff1acur_lang  = 0x80\n```\n\n#### 1.13.5 set_wakeup_mode (mode)\n\n\u5524\u9192\u6a21\u5f0f\u8bbe\u7f6e\uff0c\u53ef\u7ec4\u5408\u8bbe\u7f6e\uff0cW\u7cfb\u5217\u652f\u6301\uff0cM\u7cfb\u5217\u3001F\u7cfb\u5217\u4e0d\u652f\u6301\n\n- mode\uff1a0x1\u5355\u51fb\u5524\u9192\uff0c0x2\u53cc\u51fb\u5524\u9192\uff0c0x4\u4e32\u53e3\u5524\u9192\n\n#### 1.13.6 sleepmode (on)\n\n- on\uff1a\u7b49\u4e8e1\u8fdb\u5165\n\n\u8fdb\u5165\u7761\u7720\u4f4e\u529f\u8017\u6a21\u5f0f\uff0c\u7761\u7720\u540e\u5c4f\u5e55\u529f\u80fd\u4e0d\u518d\u8fd0\u884c\uff0c\u53ea\u80fd\u4f7f\u7528\u89e6\u6478\u5524\u9192\n\n#### 1.13.7 standbymode (on)\n\n\u8fdb\u5165\u5f85\u673a\u4f4e\u529f\u8017\u6a21\u5f0f\uff0c\u5c4f\u5e55\u7684\u4e32\u53e3\u53ef\u6b63\u5e38\u8fd0\u884c\u3002W\u7cfb\u5217\u652f\u6301\uff0cM\u7cfb\u5217\u3001F\u7cfb\u5217\u4e0d\u652f\u6301\n\n#### 1.13.8 beep(time)\n\n\u8702\u9e23\u5668\u9e23\u53eb\u65f6\u957f\n\n- time\uff1a\u5355\u4f4d\u6beb\u79d2\n\n#### 1.13.9 get_tick_count ()\n\n\u83b7\u53d6\u4e0a\u7535\u4ee5\u540e\u8fd0\u884c\u65f6\u95f4\uff0c\u5355\u4f4d10ms\u3002\n\n32\u4f4d\u8ba1\u6570\u5668\uff0c\u5927\u7ea649\u5929\u540e\u6ea2\u51fa\u5f52\u96f6\u91cd\u65b0\u8ba1\u65f6\u3002\n\n#### 1.13.10 get_date_time ()\n\n\u83b7\u53d6\u5f53\u524d\u65e5\u671f\u65f6\u95f4\uff0c\u8fd4\u56de7\u4e2a\u53c2\u6570\n\n```\nyear,mon,day,hour,min,sec,week = get_date_time()\n\n```\n\n- year\uff1a\u5e74\n\n- mon\uff1a\u6708\n\n- day\uff1a\u65e5\n\n- hour\uff1a\u65f6\n\n- min\uff1a\u5206\n\n- sec\uff1a\u79d2\n\n- week\uff1a\u661f\u671fx\uff0c\u661f\u671f\u65e5\u4e3a0\n\n#### 1.13.11 set_date_time (year,mon,day,hour,min,sec)\n\n\u8bbe\u7f6e\u5f53\u524d\u65e5\u671f\u65f6\u95f4\n\n- year\uff1a\u5e74\n\n- mon\uff1a\u6708\n\n- day\uff1a\u65e5\n\n- hour\uff1a\u65f6\n\n- min\uff1a\u5206\n\n- sec\uff1a\u79d2\n\n```\nset_date_time(year,mon,day,hour,min,sec)\n\n```\n\n#### 1.13.12 upgrade_logo (url)\n\n\u901a\u8fc7U\u76d8\u66f4\u65b0\u5f00\u673aLOGO\uff0cW\u7cfb\u5217\u652f\u6301\u3001F\u7cfb\u5217\u3001M\u7cfb\u5217\u4e0d\u652f\u6301\n\n- url\uff1a\u56fe\u7247\u8def\u5f84\n\n```\nfunction on_usb_inserted(driver)\n    upgrade_logo(driver..'logo.jpeg')\nend\n```\n\n#### 1.13.13 gpio_set_in (pin)\n\nPIN\u5f15\u811a\u8bbe\u7f6e\u4e3a\u8f93\u5165\u6a21\u5f0f\uff0cW\u7cfb\u5217\u3001M\u7cfb\u5217\u652f\u6301\uff0cF\u7cfb\u5217\u4e0d\u652f\u6301\n\n#### 1.13.14 gpio_set_out (pin)\n\nPIN\u5f15\u811a\u8bbe\u7f6e\u4e3a\u8f93\u51fa\u6a21\u5f0f\uff0cW\u7cfb\u5217\u3001M\u7cfb\u5217\u652f\u6301\uff0cF\u7cfb\u5217\u4e0d\u652f\u6301\n\n#### 1.13.15 gpio_set_value (pin,value)\n\n\u8bbe\u7f6e\u8f93\u51faPIN\u5f15\u811a\u4e3a\uff08\u9ad8\u7535\u5e731\/\u4f4e\u7535\u5e730\uff09\uff0cW\u7cfb\u5217\u3001M\u7cfb\u5217\u652f\u6301\uff0cF\u7cfb\u5217\u4e0d\u652f\u6301\n\n#### 1.13.16 gpio_get_value (pin)\n\n\u83b7\u53d6\u8f93\u5165PIN\u5f15\u811a\u7535\u5e73\uff08\u9ad8\u7535\u5e731\/\u4f4e\u7535\u5e730\uff09\uff0cW\u7cfb\u5217\u3001M\u7cfb\u5217\u652f\u6301\uff0cF\u7cfb\u5217\u4e0d\u652f\u6301\n\n#### 1.13.18 feed_dog ()\n\n\u82e5\u5728\u811a\u672c\u5185\u6267\u884c\u8017\u65f6\u8d85\u8fc75\u79d2\u7684\u64cd\u4f5c\uff0c\u9700\u8981\u6267\u884c\u5582\u72d7\n\nW\u7cfb\u5217\u4e0d\u652f\u6301\uff0cF\u7cfb\u5217\u3001M\u7cfb\u5217\u652f\u6301\u3002\n\n#### 1.13.19 get_pixel(x,y)\n\n\u83b7\u53d6\u5bf9\u5e94\u5750\u6807\u7684RGB565\u503c\n\nW\u7cfb\u5217\u3001M\u7cfb\u5217\u652f\u6301\uff0cF\u7cfb\u5217\u4e0d\u652f\u6301\u3002\n\n#### 1.13.20 refresh_screen()\n\n\u5237\u65b0\u753b\u9762\n\n#### 1.13.21 get_version()\n\n\u83b7\u53d6\u56fa\u4ef6\u7248\u672c\u53f7\uff0c\u8fd4\u56de\u5b57\u7b26\u4e32\n\n---\n*modbus.cn*\n"