串口屏LUA教程-定时器的使用
利用lua语言控制串口进行数据传输

1.利用lua编写hello world!1. 用记事本新建一个test.lua的文件,并用winSCP上传到路由器,并用用chmod 777 XX 修改属性。
里面的内容是:print("hello world!,lua")2. 用putty登录,执行命令:lua test.lua3. 在终端屏幕上中可以看到hello world!2. 测试串口1. 新建2ser.lua,里面的内容是:(以下代码是一个完整的处理字符串的例子)io.input("/www/cgi-bin/test.txt") -->设置当前输入文件t = io.read("*all") -->读取整个文件t = string.gsub(t, "([\128-\255=])", function (c)return string.format("=%02X", string.byte(c))end)-- io.output("/www/cgi-bin/test2.txt")io.output("/dev/ttyUSB0") -->设置当前输出文件,利用usb转串口输出至超级终端显示io.write(t) -->输出2. 上传,改属性,打开超级终端,设置波特率为9600(此为默认,可修改)3. putty登陆执行:lua 2ser.lua4. 超级终端中可显示文件中的数据3.web与lua连接(web显示数据)1. 新建test文件(没有后缀名),其内容如下:#! /usr/bin/lua-- HTTP header -->告诉浏览器将网页解释成纯文本print [[Content-Type: text/plain]]io.write("hello", "Lua")2. 需要将test文件利用Notepad++等强力编辑工具,转换为UNIX格式3. 上传到/www/cgi-bin/目录下,改属性,在浏览器查看http://192.168.8.1/cgi-bin/test4. 浏览器中可看到:hellolua4.web向串口发送数据1. 新建2ser,内容如下:#!/usr/bin/lua -->调用lua脚本解释器-- HTTP headerprint [[Content-Type: text/plain]]io.output("/dev/ttyUSB0")io.write(os.getenv("QUERY_STRING"))2. 需要将test文件利用Notepad++等强力编辑工具,转换为UNIX格式3. 上传到/www/cgi-bin/目录下,改属性,在浏览器查看http://192.168.8.1/cgi-bin/web2ser?abc4. 超级终端中可看到:abc5. usb转串口波特率的设置1. lsusb命令查到设备信息2. 检查设备是否存在mknod /dev/ttyUSB0 c 188 03. minicom –s,进入minicom的设置模式4. 选择Serial port setup”,按回车,再按“A”以设置“Serial Device”/dev/ttyUSB05. 设置波特率:按“E”键进入设置“bps/par/Bits”(波特率)界面,如果按“I”以设置波特率为115200,按回车返回。
nodemcu lua 串口指令

一、概述在使用NodeMCU开发板进行Lua编程时,串口通信是非常常见的操作。
通过串口通信,可以实现与其他设备的数据交换,包括传感器、显示屏、电脑等。
本文将介绍NodeMCU Lua编程中的串口指令,包括串口初始化、发送数据、接收数据等操作,帮助读者更好地掌握串口通信的方法和技巧。
二、NodeMCU串口介绍NodeMCU是一款基于ESP8266芯片的开源物联网评台,它集成了Wi-Fi模块和微控制器,能够方便地进行无线通信和控制。
在NodeMCU开发板上,一般会提供有串口接口,通过串口通信可以实现与其他设备的数据交换。
三、NodeMCU串口初始化1. 串口初始化函数在NodeMCU Lua编程中,要使用串口通信,需要先对串口进行初始化。
串口初始化的函数为“uart.setup(id, baud, data_bits, parity, stop_bits, flow_control)”。
参数说明:id:串口编号,一般为1或2baud:波特率,常用的有9600、xxx等data_bits:数据位,一般为8位parity:校验位,一般为uart.PARITY_NONEstop_bits:停止位,一般为uart.STOPBITS_1flow_control:流控制,一般为uart.FLOW_NONE2. 串口初始化示例要对串口1进行初始化,波特率为9600:uart.setup(1, 9600, 8, uart.PARITY_NONE, uart.STOPBITS_1, uart.FLOW_NONE)四、NodeMCU串口发送数据1. 串口发送函数串口初始化完成后,就可以使用串口发送数据了。
串口发送数据的函数为“uart.write(id, data, ...)”。
参数说明:id:串口编号,与初始化时一致data:要发送的数据,可以是字符串或者数值...:可以传入多个参数,依次发送2. 串口发送示例要向串口1发送“Hello, World!”:uart.write(1, "Hello, World!")五、NodeMCU串口接收数据1. 串口接收函数除了发送数据,NodeMCU还可以通过串口接收外部设备发送过来的数据。
定时器编程方法

定时器编程方法定时器编程方法是一种常用的编程技术,用于在特定的时间间隔或特定的时间点执行特定的任务。
在现代计算机系统中,定时器在各个领域都得到了广泛的应用,例如操作系统调度、网络通信、多媒体处理等。
在编程中,我们通常使用定时器来实现定时任务的调度。
定时器可以设置时间间隔,周期性地执行任务,也可以设置特定的时间点来执行任务。
定时器编程方法有多种实现方式,下面将介绍其中的一些常见方法。
一种常用的定时器编程方法是使用系统提供的定时器函数。
不同的编程语言和操作系统提供了各种定时器函数,开发者可以根据自己的需求选择合适的函数进行调用。
通过设置定时器的时间间隔或时间点,以及注册相应的回调函数,可以实现定时执行特定任务的功能。
另一种常见的定时器编程方法是使用定时器类或库。
许多编程语言和开发框架都提供了定时器相关的类或库,开发者可以直接使用这些类或库来实现定时任务的调度。
通过创建定时器对象,设置定时器的时间间隔或时间点,以及注册相应的事件处理函数,可以实现定时执行特定任务的功能。
除了使用系统提供的定时器函数或定时器类,开发者还可以通过其他方式实现定时器功能。
例如,可以使用线程或进程来实现定时任务的调度。
开发者可以创建一个线程或进程,在其中使用循环和睡眠函数来控制任务的执行时间。
通过设置循环的次数或睡眠的时间,以及在循环中执行相应的任务,可以实现定时执行特定任务的功能。
定时器编程方法在实际应用中非常重要,可以帮助开发者实现各种定时任务的调度。
无论是在操作系统中进行任务调度,还是在网络通信中进行数据传输,定时器编程方法都能够提供灵活可靠的定时任务执行机制。
开发者可以根据具体的需求选择合适的定时器编程方法,并结合实际情况进行调试和优化,以实现高效可靠的定时任务调度。
定时器编程方法是一种重要的编程技术,可以帮助开发者实现各种定时任务的调度。
通过合理选择定时器函数、定时器类或库,以及其他实现方式,开发者可以灵活地控制任务的执行时间,实现定时执行特定任务的功能。
定时器的原理和应用

定时器的原理和应用一、定时器的原理定时器是一种计时设备,它可以按照预先设定的时间间隔来产生定时信号。
定时器由计数器和控制逻辑组成,其中计数器用于计数,控制逻辑用于控制计数器的操作。
当计数器的计数值达到设定的时间间隔时,定时器将产生一个定时信号,用于触发其他外部设备的工作。
1.设置初始计数值:在开始计时之前,需要将计数器的初始计数值设置为0。
2.计数:计数器开始计数,每经过一个时钟周期,计数器的计数值加13.比较:将计数器的计数值与设定的时间间隔进行比较,判断是否达到设定的时间间隔。
4.定时信号产生:当计数器的计数值达到设定的时间间隔时,定时器将产生一个定时信号,用于触发其他外部设备的工作。
5.重置计数器:在定时信号产生后,需要将计数器的计数值重置为0,以便进行下一次计数。
二、定时器的应用定时器在各个领域都有广泛的应用,下面介绍几个常见的应用场景。
1.高精度计时在科学实验、医疗设备等领域,需要进行高精度的时间测量和计时。
定时器可以提供精确的计时能力,用于测量非常短暂的时间间隔,如纳秒级、微秒级甚至更短的时间。
2.定时调度在计算机领域,定时器用于进行任务的定时调度,例如定时执行一些函数或者程序。
可以通过设定定时器的时间间隔来控制任务的触发时机,实现定时任务的执行。
3.时钟和闹钟定时器被广泛用于制作时钟和闹钟等计时设备。
通过设定定时器的时间间隔,可以实现时钟的走时和闹钟的报警功能。
定时器可以产生周期性的定时信号,用于控制时钟的行走和闹钟的响铃。
4.数据采集和采样在仪器仪表、自动化系统等领域,需要对信号进行定时采集和采样。
定时器可以提供计时触发信号,用于控制模拟信号的采集和数字信号的采样。
通过设定定时器的时间间隔,可以使采集和采样工作按照设定的频率进行。
5.脉冲宽度调制定时器可以用来产生不同频率和占空比的脉冲信号,用于控制电机、灯光、声音等设备的开关。
通过设定定时器的时间间隔和计数值,可以调节脉冲信号的频率和占空比,实现对设备的精确控制。
定时器的指令介绍及应用

定时器的指令介绍及应用定时器是一种常用的电子元件,可以在设定的时间间隔内进行计时、计数和触发一些操作。
定时器通常由一个时钟源、一个计数器和一组控制逻辑组成。
在现实生活中,定时器有着广泛的应用,包括定时启动和关闭电器设备、报警器、电子钟表、计时器等等。
在电子领域中,定时器常常与微处理器或微控制器一起使用,实现各种功能。
以下是一些常见的定时器指令及其应用介绍:1.延时指令:延时指令可以实现以微秒或毫秒为单位的精确延时。
在一些需要精确时间控制的应用中,比如机器人、自动化系统中,延时指令可以用来控制各种行为和活动的时间。
2.定时触发指令:定时触发指令可以在设定的时间间隔内触发一些操作。
比如,可以设置一个定时触发指令来控制灯光的闪烁,或者用来实现周期性的数据采集和上传。
3. PWM(Pulse Width Modulation)信号生成指令:PWM信号是一种特殊的脉冲信号,在一定的时间内高电平的时间占总周期的百分比是可以调整的。
这种信号在电机控制、电子调光、无线调速等领域有着广泛的应用。
定时器可以通过PWM信号生成指令来生成PWM信号,从而实现对电机、LED等设备的控制。
4.计数器功能:定时器中的计数器功能可以记录经过的时间或者事件的次数。
这种功能在需要对一些事件进行计数的应用中非常有用,比如交通流量统计、频率测量等等。
例如,在一个小型工厂的流水线上,有一个定时器和传感器连接在一起。
每当产品经过传感器时,传感器会将信号发送给定时器,定时器会记录经过的时间,并且当经过时间达到设定值时触发一些操作,比如打开下一个流程的机器。
另一个例子是定时器可以用于控制路灯的开关。
通过定时器设置,可以在天黑时自动打开路灯,并在天亮时自动关闭路灯。
这样不仅提高了能源利用效率,也方便了人们的生活。
定时器也可以应用在计算机的操作系统中,比如在多任务操作系统中,定时器可以用来实现进程调度和时间片轮转等功能。
在即时操作系统中,定时器可以用来实现实时任务的调度和响应等。
关于物联型串口屏LUA脚本API

物联型LUA脚本API目录1.适用范围 (4)2.LUA 脚本介绍 (4)3.API 接口函数 (4)3.1控件属性类 (5)3.1.1change_screen(screen) (5)3.1.2set_value(screen,control,value) (5)3.1.3get_value(screen,control) (5)3.1.4set_visiable(screen,control,visiable) (5)3.1.5set_enable(screen,control,enable) (5)3.1.6set_fore_color(screen,control,color) (5)3.1.7set_back_color(screen,control,color) (5)3.1.8set_text(screen,control,text) (5)3.1.9get_text(screen,control) (5)3.2常用回调函数 (5)3.2.1on_init() (5)3.2.2on_systick() (6)3.2.3on_control_notify(screen,control,value) (6)3.2.4on_screen_change(screen) (6)3.2.5on_press(state,x,y) (6)3.2.6on_usb_inserted(driver) (6)3.2.7on_usb_removed() (6)3.3绘图函数 (6)3.3.1redraw() (6)3.3.2on_draw(screen) (6)3.3.3set_pen_color(color) (6)3.3.4draw_line(x0,y0,x1,y1,width) (6)3.3.5draw_rect(x0,y0,x1,y1,fill) (7)3.3.6draw_circle(x,y,r,fill) (7)3.3.7draw_ellipse(x0,y0,x1,y1,fill) (7)3.4寄存器访问 (8)3.4.1get_variant(name) (8)3.4.2set_variant(name,value) (8)3.5网络相关 (8)3.5.1get_wifi_cfg() (8)3.5.2set_wifi_cfg(wifi_mode, secumode, ssid, password) (9)3.5.4set_network_cfg(dhcp, ipaddr, netmask, gateway, dns) (9)3.5.5get_network_cfg() (9)3.5.6save_network_cfg() (9)3.5.7set_network_service_cfg(wificom, mode, port, server_addr) (9)3.5.8get_network_service_cfg() (9)3.5.9scan_ap() (10)3.5.10get_ap_info(index) (10)3.5.11client_send_data(packet) (10)3.5.12server_send_data(packet) (10)3.5.13on_client_recv_data(packet) (10)3.5.14on_server_recv_data(packet) (11)3.6定时器 (11)3.6.1start_timer(timer_id, timeout, countdown, repeat) (11)3.6.2stop_timer(timer_id) (11)3.6.3on_timer(timer_id) (11)3.6.4get_timer_value(timer_id) (11)3.7串口 (11)3.7.1uart_send_data(packet) (11)3.7.2uart_set_timeout(timeout, timeout_inter) (12)3.7.3uart_set_baudrate(baudrate) (12)3.7.4uart_get_baudrate() (12)3.7.5on_uart_recv_data(packet) (12)3.8音视频 (12)3.8.1play_sound(filename) (12)3.8.2set_volume(level) (12)3.8.3get_volume() (12)3.9其他 (12)3.9.1set_backlight(level) (12)3.9.2get_backlight() (13)3.9.3beep(time) (13)3.10机智云接口 (13)3.10.1gagent_get_info() (13)3.10.2gagent_send_data(packet) (13)3.10.3gagent_reset() (13)3.10.4gagent_get_bind_url() (13)3.10.5gagent_get_status() (13)3.10.6on_gagent_recv_data(packet) (13)1. 适用范围文档仅适合新物联型系列串口屏产品,W系列。
定时器使用方法

定时器使用方法定时器是一种非常常见的功能,我们可以通过定时器来实现一些定时执行的任务,比如定时发送邮件、定时清理数据等。
在编程中,定时器也是一个非常重要的组件,它可以帮助我们实现一些定时执行的逻辑。
接下来,我将介绍一些定时器的使用方法,希望对大家有所帮助。
首先,我们需要了解定时器的基本原理。
定时器其实就是一个计时器,它可以在设定的时间间隔内执行特定的任务。
在编程中,我们可以通过调用系统提供的定时器接口来创建和启动定时器。
一般来说,定时器的使用可以分为以下几个步骤:1. 创建定时器,首先,我们需要创建一个定时器对象。
在大多数编程语言中,都提供了相应的定时器类或接口,我们可以通过实例化这些类或调用接口来创建定时器对象。
2. 设置定时器的时间间隔,接下来,我们需要设置定时器的时间间隔,即定时器多久执行一次任务。
一般来说,时间间隔可以以毫秒为单位进行设置,比如1000毫秒表示1秒钟。
3. 编写定时器任务,然后,我们需要编写定时器要执行的任务。
这个任务可以是一个函数或一个代码块,定时器会在设定的时间间隔内执行这个任务。
4. 启动定时器,最后,我们需要启动定时器,让它开始按照设定的时间间隔执行任务。
一旦定时器启动,它就会按照设定的时间间隔一直执行任务,直到我们手动停止它。
在实际的编程中,定时器的使用方法可能会有所不同,但基本原理是相似的。
下面,我将以Python语言为例,介绍一下如何使用定时器:```python。
import threading。
def task():print("定时器任务执行")。
# 创建定时器,设置时间间隔为3秒,指定定时器任务为task函数。
timer = threading.Timer(3, task)。
# 启动定时器。
timer.start()。
```。
在这个例子中,我们首先导入了Python的threading模块,然后定义了一个名为task的函数作为定时器的任务。
定时器的指令介绍及应用

定时器的指令介绍及应用定时器是一种用于在特定时间间隔执行操作的设备或程序。
它通常用于执行周期性的任务或在需要精确时间控制的应用中。
定时器常见的指令包括设置定时器的时间间隔、启动定时器、停止定时器和重置定时器。
下面将详细介绍定时器的指令及其应用。
1.设置定时器的时间间隔:定时器的时间间隔决定了定时器何时触发。
一般而言,时间间隔可以以毫秒、秒、分钟等单位表示。
设置时间间隔的指令通常是通过指定一个数值来实现,例如"SETTIMERINTERVAL500"表示将定时器的时间间隔设置为500毫秒。
2.启动定时器:启动定时器即开始计时并在到达指定时间间隔时触发相应的操作。
启动定时器的指令通常是一个简单的"STARTTIMER"。
在启动定时器之前,一般需要先设置好时间间隔。
定时器的应用:-在嵌入式系统中,定时器常用于控制外设的读写或数据采集的频率。
例如,一个传感器可能需要每隔一秒读取一次数据,这就需要使用一个定时器来触发读取操作,并设置时间间隔为1秒。
-在操作系统中,定时器被广泛应用于进程调度和时间片轮转算法。
操作系统可以使用定时器来控制每个进程分配的时间片,并在时间片用尽时进行进程切换,从而实现多任务调度。
定时器的时间间隔可以根据系统的需求进行调整,以实现不同的调度算法。
-在游戏开发中,定时器可用于处理游戏中的动画效果、生成敌人或物品、更新游戏状态等。
例如,在一个射击游戏中,可以设置一个定时器,每隔一定时间就生成一批新的敌人,以增加游戏的难度和乐趣。
-在网络通信中,定时器常用于处理重传机制和超时检测。
当发送方发送数据包后,可以启动一个定时器,在规定的时间内没有收到对应的确认消息时,认为数据包丢失,并重新发送该数据包。
-在物联网应用中,定时器可用于处理设备的定时任务。
例如,智能家居系统可以使用定时器来控制灯光的开关,在特定时间点自动调整室内温度,定时浇水等。
3.停止定时器:停止定时器即终止定时器的计时和触发操作。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
LUA教程-定时器的使用V1.0工程技术笔记修订历史版本日期原因编制审查V1.02019/01/15创建文档林绍佳刘启鑫目录1.适合范围 (1)2.开发环境版本 (2)3.概述 (3)4.实现教程 (4)4.1工程准备 (4)4.1.1硬件平台 (4)4.1.2素材准备 (4)4.1.3LUA编辑器 (5)4.2API函数说明 (6)4.3教程实现过程 (7)4.3.1定时器的使用 (7)4.4编译和下载 (10)4.4.1编译工程 (10)4.4.2下载 (11)5.完整程序清单 (12)6.免责声明 (15)1.适合范围该文档适合所有大彩物联型系列。
2.开发环境版本1.VisualTFT软件版本:V3.0.0.944及以上的版本。
版本查看:a)打开VisualTFT软件启动页面如图2-1软件版本,右上角会显示的软件版本号;图2-1软件版本b)打开VisualTFT,在软件右下角可以查看软件版本图2-2软件版本,最新版本可登录大彩官网进行下载。
图2-2软件版本2.串口屏硬件版本:V3.0.301.0及以上的版本。
版本查看:a)查看屏幕背面版本号贴纸;b)VisualTFT与屏幕联机成功后,右下角显示的版本号。
3.LUA语言版本V5.5。
3.概述物联型可以通过LUA脚本配合工程完成丰富多样的操作。
本文将介绍在LUA脚本中使用定时器循环设置按钮的状态。
在按下按钮后,定时器启动,定时器以设定的时间为标准,循环设置灯亮/灭。
4.实现教程本章节主要讲述通过LUA实现循环计时,并在超时回调函数中设置灯循环亮/灭。
本文将分为以下是4个阶段讲述教程DEMO是如何实现的:1.工程准备,2.工程配置与功能,3.LUA编写及调试,4.下载与运行。
4.1工程准备在实现教程DEMO前需要作以下三个准备:1.硬件平台,2.UI素材,3.LUA编辑器。
4.1.1硬件平台该例程使用大彩物联型7寸DC80480W070为验证开发平台。
如图5-1所示。
图5-1物联型7寸4.1.2素材准备准备好相应的美工UI。
如图5-2所示。
图5-2素材准备4.1.3LUA编辑器上位机VisualTFT内部已集成了LUA开发编译环境,点击菜单栏工具,选择LUA编辑器,如图5-3所示。
图5-3打开LUA编辑器LUA编辑器的开发环境,如图5-4所示。
图5-4LUA编辑器界面4.2API函数说明大彩科技针对LUA脚本提供了丰富的API接口函数,具体函数可以查阅文档《大彩组态串口屏LUA脚本API》,如图5-5所示。
图5-5API函数文档本教程文档中所涉及到的部分的相关接口函数1.函数on_control_notify(screen,control,value)注释:此函数可以在用户触摸修改控件后被回调。
函数有三个参数:screen表示画面IDcontrol表示控件的编号value表示控件的值。
2.函数on_timer(timer_id)注释:此函数可以在定时器超时后被回调。
函数有一个参数:timer_id表示超时定时器ID3.函数start_timer(timer_id,timeout,countdown,repeat)注释:此函数可以启动定时器。
函数有四个参数:timer_id表示定时器ID,0~31timeout表示超时时间,单位毫秒countdown表示计时的方向,0顺计时,1倒计时repeat表示重复次数,0表示无限重复4.函数stop_timer(timer_id),timer_id表示定时器ID。
5.函数set_value(screen,control,value)注释:此函数可以设置控件数值。
函数有三个参数:screen表示画面IDcontrol表示控件的编号value表示控件的值。
注:更多API函数请参考文档《物联型LUA脚本API_V1.0》4.3教程实现过程本例程主要展示通过定时器设置灯循环亮/灭,教程中功能的实现步骤如下:1.配置工程属性,2.编写LUA程序,3.运行程序。
4.3.1定时器的使用1.首先,设置一个按钮用来控制定时器的开关,事件通知选择是。
如果在按下时需要有效果,就要选择按下时的图片效果,并勾选上裁剪。
操作风格选择开关。
如图5-6。
图5-6设置开关按钮在工程中可以选择按钮或者图标来模拟灯。
本文使用按钮来模拟。
设置一个按钮,因为灯有两种状态,所有需要两张图片分别表示亮和灭。
使用灯灭的图片作页面背景图。
在按下时的图片处选择灯亮的图片并勾选裁剪。
如图5-7。
图5-7设置灯2.按下按钮时,触发事件通知,LUA脚本中的if判断成立,执行函数start_timer(...),启动定时器。
如程序清单5-1所示。
程序清单5-1设置定时器启动if screen==0and control==1and value==1--按下第0页,第1个控件thenstart_timer(0,1000,1,0)--开启定时器0,超时时间2send定时器开启后,超时就会进入回调函数on_timer(...),在回调函数中循环设置灯的状态。
如程序清单5-2。
程序清单5-2循环设置灯的状态if timer_id==0--定时器0超时thenif lamp_status==0--当按钮为弹起状态thenset_value(0,2,1)--设置按钮2为按下状态,灯亮lamp_status=1elseif lamp_status==1--当按钮为按下状态thenset_value(0,2,0)--设置按钮2为弹起状态,灯灭lamp_status=0endend把程序编写入软件的LUA编辑器中,如图5-8所示。
图5-8把程序写入LUA编辑器3.运行虚拟屏,点击"19200"和"115200"按钮即可设置波特率,如图5-9和图5-10所示。
图5-9虚拟运行,灯亮图5-10虚拟运行,灯灭4.4编译和下载在我司的上层软件Visual TFT中集成了LUA程序的编译器,可以实现在编译工程的同时将LUA脚本程序一起编译,并且将编译后的图片和程序集合在一个名为DCIOT.PKG的文件中。
编译后只需要把DCIOT.PKG文件拷贝到U盘中,接上串口屏并重新上电即可将图片和程序下载到屏中。
4.4.1编译工程点击菜单中的编译工程后在输出窗口会显示编译过程和结果,如工程控件或图片设置有错误和不恰当,就会提示编译失败和显示错误或警告的位置。
如图5-11所示注意:目前在软件Visual TFT集成的LUA脚本编译器无法进行语法检测,所以编写LUA 程序是尽量分模块编写,已达到节省调试的时间。
图5-11编译4.4.2下载工程编译成功后在输出窗口会提示编译成功,如所示。
编译成功后打开工程目录,找到output文件夹,将文件夹中的DCIOT.PKG文件拷贝到U盘中,如图5-12和图5-13所示;接上串口屏重新上电,等到提示烧录工程成功后,拔掉U盘重新上电即可。
图5-12编译成功图5-13拷贝5.完整程序清单定时器的使用demo的完整程序,如程序清单3所示,查看程序时请结合教程demo理解:程序清单3完整程序--[[******************************Copyright(c)***********************************GUANGZHOU DCOLOUR TECHNOLOGY CO.,LTD**广州大彩光电科技有限公司**/****LUA学习网站:/lua**------File Info-----------------------------------------------------------**File Name:LUA教程-定时器的使用-LUA**Latest modified Date:2019.01.21**Latest Version:V1.0**Description:定时器的使用****--------------------------------------------------------------------------**Created By:林绍佳**Created date:2019.01.21**Version:V1.0**Descriptions:按下按钮2s后灯亮/灭****--------------------------------------------------------------------------**Modified by:修改人的姓名**Modified date:文件的修改日期(YYYY-MM-DD)**Version:文件修订的版本号**Description:文件修订的简要描述*****************************************************************************--]]--[[*****************************************************************************Function name:on_control_notify**Descriptions:用户通过触摸修改控件后,执行此回调函数。
**点击按钮控件,修改文本控件、修改滑动条都会触发此事件。
**input parameters:screen:被触发控件的页码**control:控件的编号**value:控件的值***************************************************************************--]]function on_control_notify(screen,control,value)--************************--功能:按下按钮时启动定时器--调用函数:start_timer(timer_id,timeout,countdown,repeat)--函数功能:启动定时器--参数:timer_id:定时器ID,0~31;--timeout:超时时间,单位毫秒;--countdown:0顺计时,1倒计时;--repeat:重复次数,0表示无限重复;--************************if screen==0and control==1and value==1--按下第0页,第1个控件thenstart_timer(0,1000,1,0)--开启定时器0,超时时间2s end--************************--功能:松开按钮时停止定时器--调用函数:stop_timer(timer_id)--函数功能:停止定时器--参数:timer_id:定时器ID,0~31;--************************if screen==0and control==1and value==0--松开第0页,第1个控件thenstop_timer(0)--停止定时器0endendlocal lamp_status=0--[[*************************************************************************** **Function name:on_timer**Descriptions:定时器超时回调函数**input parameters:timer_id,超时定时器的id;***************************************************************************--]] function on_timer(timer_id)--************************--功能:定时器1超时,设置按钮2为按下状态(灯亮)--调用函数:set_value(screen,control,value)--函数功能:设置按钮2为按下状态--参数:screen:目标画面ID;--control:目标控件ID;--value:0按下,1弹起;--************************if timer_id==0--定时器0超时thenif lamp_status==0--当按钮为弹起状态thenset_value(0,2,1)--设置按钮2为按下状态,灯亮lamp_status=1elseif lamp_status==1--当按钮为按下状态thenset_value(0,2,0)--设置按钮2为弹起状态,灯灭lamp_status=0endendend--[[*************************************************************************** END FILE***************************************************************************--]]6.免责声明广州大彩光电科技有限公司所提供的所有服务内容旨在协助客户加速产品的研发进度,在服务过程中或者其他渠道所提供的任何例程程序、技术文档、CAD图等资料和信息,都仅供参考,客户有权不使用或自行参考修改,本公司不提供任何的完整性、可靠性等保证,若在客户使用过程中因任何原因造成的特别的、偶然的或间接的损失,本公司不承担任何责任。