热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

ESP8266LUA脚本语言开发:外设篇串口

   https:nodemcu.readthedocs.ioenmastermodulesuart 串口发送数据   发送一个16进制到串口uart.write(0,0xaa) 

 

 

 https://nodemcu.readthedocs.io/en/master/modules/uart/

 

串口发送数据

  ESP8266 LUA脚本语言开发: 外设篇-串口

 

 

 

发送一个16进制到串口

  uart.write(0, 0xaa)  

ESP8266 LUA脚本语言开发: 外设篇-串口

 

 

 

 

 ESP8266 LUA脚本语言开发: 外设篇-串口

 

 

 

注:

ESP8266 LUA脚本语言开发: 外设篇-串口

 

 

 之所以有后面的这两个是因为咱打印的时候其实单片机还没有完全运行完内部的程序

3E 代表 >      20是空

 

咱加个定时器,每隔1S打印

ESP8266 LUA脚本语言开发: 外设篇-串口

 

 

 

ESP8266 LUA脚本语言开发: 外设篇-串口

 

 

 

 

打印字符串

local mytimer1 = tmr.create() 

function TimeFunction1()
    uart.write(0, "hello 8266")
end

mytimer1:register(1000, 1, TimeFunction1)

mytimer1:start()

 

 

ESP8266 LUA脚本语言开发: 外设篇-串口

 

 

 

串口接收数据

  ESP8266 LUA脚本语言开发: 外设篇-串口

 

 

 

  ESP8266 LUA脚本语言开发: 外设篇-串口

 

 

 

接收到数据就把数据传入回调函数(常用)

uart.on("data", 0,
  function(dddd)
    uart.write(0,dddd)
  end
, 0)

 

"data" :代表注册的串口数据接收回调函数

0:         只要接收到数据就传给后面的回调函数的形参

 

function(dddd)  回调函数,数据传给了 dddd
 XXXXXX

   对串口接收的数据dddd做处理
end

 

0: 数据不进行LUA指令解析

    所有的数据都是靠串口

  下面这些指令也不例外

 ESP8266 LUA脚本语言开发: 外设篇-串口

 

 

 

 

典型处理形式

 

 

 

 ESP8266 LUA脚本语言开发: 外设篇-串口

 

 

 

 

local UsartReceiveData="";
local UsartReceiveDataCopy="";
local UsartReceiveFlage=false;
local UsartIdleCnt = 0;


local TimerMs = tmr.create() 

TimerMs:register(1,1,function()

    if  UsartReceiveFlage == true  then
        UsartIdleCnt = UsartIdleCnt +1;
        if  UsartIdleCnt > 10 then
            UsartIdleCnt = 0;
            UsartReceiveFlage = false
            UsartReceiveDataCopy = UsartReceiveData;
            UsartReceiveData = "";
        end
    end

    if  UsartReceiveDataCopy ~= nil  then
        uart.write(0,UsartReceiveDataCopy)  
        UsartReceiveDataCopy = nil
    end
end)
TimerMs:start()



uart.setup(0, 115200, 8, uart.PARITY_NONE, uart.STOPBITS_1)
uart.on("data",0,function(data)
    UsartReceiveData = UsartReceiveData..data;
    UsartReceiveFlage = true;
    UsartIdleCnt = 0;
end, 0)

 

 

参见:  https://www.cnblogs.com/yangfengwu/p/11669373.html     学的是思想,而非程序本身

 

测试

ESP8266 LUA脚本语言开发: 外设篇-串口

 

 

 

 

 

以后直接在这里处理数据

 

 

ESP8266 LUA脚本语言开发: 外设篇-串口

 

 

 

 

 

提醒

  按照上面的写法以后,便不能下载程序,所有的指令也不能运行

  ESP8266 LUA脚本语言开发: 外设篇-串口

 

 

 

 

  这样可以防止别人点击  Reload 加载出来里面的程序

 

  用户需要重新刷空固件

  然后再刷LUA开发的固件

  然后再进行开发

  https://www.cnblogs.com/yangfengwu/p/11949226.html    参考这一节重新刷固件

 

咱调试编程的时候为避免这种情况发生

建议的方式:

  处理串口的数据另外用一个文件处理

  ESP8266 LUA脚本语言开发: 外设篇-串口

 

 

 

 

 

 

  init 延时加载那个文件

 

  ESP8266 LUA脚本语言开发: 外设篇-串口

 

 

 

 

 

 

  

local T = tmr.create()
T:register(3000, 0, function() 
    if  file.open("uart.lua", "r") then 
        file.close(); 
        dofile("uart.lua")
    end 
end)
T:start();

 

 

 

 

 

这样,每次复位模块的时候,都有3S的时间去操作清除文件

ESP8266 LUA脚本语言开发: 外设篇-串口

 

 

 

 

 

 

 

 然后再进行下载调试

  

 


推荐阅读
  • 本文介绍了编程语言的基本分类,包括机器语言、汇编语言和高级语言的特点及其优缺点。随后详细讲解了Python解释器的安装与配置方法,并探讨了Python变量的定义、使用及内存管理机制。 ... [详细]
  • 深入理解Select、Poll和Epoll
    本文详细介绍了三种常用的I/O多路复用技术:Select、Poll和Epoll。通过对比它们的工作原理和性能特点,帮助读者更好地选择适合的I/O模型。 ... [详细]
  • 2023年最新指南:如何在PHP中屏蔽警告和错误
    本文详细介绍了如何在PHP中屏蔽警告和错误,包括多种方法和最佳实践,帮助开发者提升代码质量和安全性。 ... [详细]
  • 解决Bootstrap DataTable Ajax请求重复问题
    在最近的一个项目中,我们使用了JQuery DataTable进行数据展示,虽然使用起来非常方便,但在测试过程中发现了一个问题:当查询条件改变时,有时查询结果的数据不正确。通过FireBug调试发现,点击搜索按钮时,会发送两次Ajax请求,一次是原条件的请求,一次是新条件的请求。 ... [详细]
  • 本文详细介绍了 PHP 中对象的生命周期、内存管理和魔术方法的使用,包括对象的自动销毁、析构函数的作用以及各种魔术方法的具体应用场景。 ... [详细]
  • 开机自启动的几种方式
    0x01快速自启动目录快速启动目录自启动方式源于Windows中的一个目录,这个目录一般叫启动或者Startup。位于该目录下的PE文件会在开机后进行自启动 ... [详细]
  • 驱动程序的基本结构1、Windows驱动程序中重要的数据结构1.1、驱动对象(DRIVER_OBJECT)每个驱动程序会有唯一的驱动对象与之对应,并且这个驱动对象是在驱 ... [详细]
  • 使用 Mui.js 获取复选框值的方法
    本文介绍如何使用 Mui.js 框架来获取复选框的值,并通过数组进行处理和展示。 ... [详细]
  • 使用 Jupyter Notebook 实现 Markdown 编写与代码运行
    Jupyter Notebook 是一个开源的基于网页的应用程序,允许用户在同一文档中编写 Markdown 文本和运行多种编程语言的代码,并实时查看运行结果。 ... [详细]
  • windows安装RabbitMQ遇到epmderrorforhostxxx:address(cannotconnecttohost/port)错误解决方法
    未安装服务,Windows下,dev环境用bat运行运行RabbitMQ时报如下错误 Configuringloggerredirection09:11:07.009[warnin ... [详细]
  • 解决Unreal Engine中UMG按钮长时间按住自动释放的问题
    本文探讨了在Unreal Engine中使用UMG按钮时,长时间按住按钮会导致自动释放的问题,并提供了详细的解决方案。 ... [详细]
  • 浅析python实现布隆过滤器及Redis中的缓存穿透原理_python
    本文带你了解了位图的实现,布隆过滤器的原理及Python中的使用,以及布隆过滤器如何应对Redis中的缓存穿透,相信你对布隆过滤 ... [详细]
  • 基于iSCSI的SQL Server 2012群集测试(一)SQL群集安装
    一、测试需求介绍与准备公司计划服务器迁移过程计划同时上线SQLServer2012,引入SQLServer2012群集提高高可用性,需要对SQLServ ... [详细]
  • 单片机入门指南:基础理论与实践
    本文介绍了单片机的基础知识及其应用。单片机是一种将微处理器(类似于CPU)、存储器(类似硬盘和内存)以及多种输入输出接口集成在一块硅片上的微型计算机系统。通过详细解析其内部结构和功能,帮助初学者快速掌握单片机的基本原理和实际操作方法。 ... [详细]
  • 在软件开发过程中,经常需要将多个项目或模块进行集成和调试,尤其是当项目依赖于第三方开源库(如Cordova、CocoaPods)时。本文介绍了如何在Xcode中高效地进行多项目联合调试,分享了一些实用的技巧和最佳实践,帮助开发者解决常见的调试难题,提高开发效率。 ... [详细]
author-avatar
uw65ayk
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有