我使用的是air202 s6模块,其他模块根据自己的需求做出修改,首先至少熟悉一款单片机接触过编程,最好接触过编程的同学。只为技术交流,高手请指导。。。。。

进入------------------------------------------------------------------>

准备一各代码编辑器,编辑器有很多,推荐使用notepad++、Sublime、text 、VSCode(我是用的就是这款),

VS Code下载链接https://code.visualstudio.com/ 安装教程很简单请移步下文。
1、双击打开安装,下图页面勾选这几个选项,点击下一步到结束    --------- 其他页面根据需求进行设置。

2、在合适的位置新建一个文件夹,命名可以随意,我是用的是UART,使用VS Code打开文件夹,如下图所示:


打开后,在编辑器左侧文件夹中,右击,新建文件,输入 main.lua 和testuart.lua,回车保存:

然后在新建的main.lua内添加下面代码,完成最重要的main.lua文件编写。注意注意 在代码最后一行,另外加入几行换行。代码不再介绍 ,注释里面就有。

PROJECT = "SOCKET-TEST"
VERSION = "1.0.0"require "log"
LOG_LEVEL = log.LOGLEVEL_TRACE
require "sys"
--每1分钟查询一次GSM信号强度,每1分钟查询一次基站信息
require "net"
net.startQueryAll(60000, 60000)
--加载硬件看门狗功能模块
require "wdt"
wdt.setup(pio.P0_30, pio.P0_31)
--加载网络指示灯功能模块
require "netLed"
netLed.setup(true,moduleType == 2 and pio.P1_1 or pio.P2_0,moduleType == 2 and nil or pio.P2_1)
require"testuart"
require"ntp"require "errDump"
errDump.request("udp://ota.airm2m.com:9072")
--require "ledtest"    --led
ntp.timeSync()
--启动系统框架
sys.init(0, 0)
sys.run()

为了使串口操作反馈,我在里面加过了LED反馈和回复反馈,LED使用GPIO4管脚不知道的可以查看手册,手册我会放在最下面,代码不在一一介绍,都写在注释里。不明白处评论区留言解决。

module(...,package.seeall)
require"utils"
require"pm"require"pins"  --用到了pin库,该库为luatask专用库,需要进行引用if moduleType == 2 thenpmd.ldoset(5,pmd.LDO_VMMC)  --使用某些GPIO时,必须在脚本中写代码打开GPIO所属的电压域,配置电压输出输入等级,这些GPIO才能正常工作
endlocal led1 = pins.setup(pio.P0_4,0) --串口ID,1对应uart1
--如果要修改为uart2,把UART_ID赋值为2即可
local UART_ID = 1
--缓存数据
local buf = ""
--处理串口数据
local function proc(data)data = buf..datalog.info("testUart.read proc",data)local used = true--数据是否被处理?if data == "openLED" then--模块收到`qwerty`字符串后,回复`asdfgh`字符串write("open")led1(1)elseif data == "closeLED" then--模块收到closeLED 回复closewrite("close")led1(0) else--数据没匹配上任何东西,没被使用used = falseendif not used then--数据没被使用if buf == "" then--如果缓冲区是空的sys.timerStart(function()buf = ""end,500)--500ms后清空缓冲区endbuf = data--数据追加到缓存区elsebuf = ""end
end
--接收串口数据
local function read()local data = ""--底层core中,串口收到数据时:--如果接收缓冲区为空,则会以中断方式通知Lua脚本收到了新数据;--如果接收缓冲器不为空,则不会通知Lua脚本--所以Lua脚本中收到中断读串口数据时,每次都要把接收缓冲区中的数据全部读出,这样才能保证底层core中的新数据中断上来,此read函数中的while语句中就保证了这一点while true dodata = uart.read(UART_ID,"*l")--数据不存在时停止接收数据if not data or string.len(data) == 0 then break end--打开下面的打印会耗时log.info("testUart.read bin",data)log.info("testUart.read hex",data:toHex())--真正的串口数据处理函数proc(data)end
end
--发送串口数据
function write(s)log.info("testuart.write",s:toHex(),s)uart.write(UART_ID,s)
end
--保持系统处于唤醒状态,此处只是为了测试需要,所以此模块没有地方调用pm.sleep("testUart")休眠,不会进入低功耗休眠状态
--在开发“要求功耗低”的项目时,一定要想办法保证pm.wake("testUart")后,在不需要串口时调用pm.sleep("testUart")
pm.wake("testUart")
--注册串口的数据接收函数,串口收到数据后,会以中断方式,调用read接口读取数据
uart.on(UART_ID,"receive",read)
--配置并且打开串口
uart.setup(UART_ID,9600,8,uart.PAR_NONE,uart.STOP_1)
--模块开机第10秒后,向设备发送`0x01 0x02 0x03`三个字节
sys.timerStart(function()write(string.fromHex("010203"))
end,10000)

第二章 AIR202_Lua_串口控制相关推荐

  1. 第二章 Java流程控制 ① 笔记

    内容回顾: 8种基本数据类型,右侧的数据大小不能超出左侧的类型的范围. 类型的转换 自动(小–>大),强转(大–>小) Scanner(System.in); 课前测 小明去买书,< ...

  2. java的学习--第二章 java流程控制

    1.本章内容 控制代码如何执行.是否执行.执行多少次. 2.程序结构 顺序结构 分支结构 循环结构 2.1分支结构 1.if(){} 2.if(){}else{} 3.if(){}else if(){ ...

  3. Python编程高手之路——第二章:流程控制

    二.流程控制 2.1 运算方式 计算机的核心部件是CPU,CPU有两个功能,控制和运算: 2.1.1 数学运算 print(a ** b) # 幂 print(a // b) // 取整数 2.1.2 ...

  4. 第二章:Webdriver 控制浏览器前进和后退

    Webdriver 控制浏览器前进和后退: 转载于:https://www.cnblogs.com/wanghonggang-521/p/7236311.html

  5. 【学习笔记】第二章——进程的控制、通信

    文章目录 一. 进程控制 如何实现进程控制 创建 终止 阻塞 & 唤醒 切换 总结 二. 进程间的通信 定义 1)共享存储 2)管道通信 3)信息传递 总结 一. 进程控制 def: 实现进程 ...

  6. 模拟进程创建、终止、阻塞、唤醒原语_操作系统第二章--进程的描述与控制

    操作系统第二章--进程的描述与控制 前趋图和程序执行 前趋图 前趋图是一个有向无循环图DAG,用来描述进程之间执行的前后关系 初始结点:没有前趋的结点 终止结点:没有后继的结点 重量:表示该结点所含有 ...

  7. 【操作系统】 第二章 进程的描述与控制

    第二章 进程的描述与控制 2.1 什么是进程 程序代码+相关数据+程序控制块PCB 当处理器开始执行一个程序的代码时,称这个执行的实体为进程 2.1.1 进程和进程控制块PCB PCB(Process ...

  8. 进程的描述与控制 操作系统第二章知识点归纳总结

    系列文章 第一章 操作系统概述 第二章 进程调度 第二章 进程的描述与控制 2.1 什么是进程 程序代码+相关数据+程序控制块PCB 当处理器开始执行一个程序的代码时,称这个执行的实体为进程 2.1. ...

  9. 【操作系统】第二章--进程的描述与控制--笔记与理解(2)

    笔记理解之后可以进行深入解释→[操作系统]第二章–进程的描述与控制–深入与解释(2) 文章目录 第二章--进程的描述与控制--笔记与理解(2) 经典进程的同步问题 生产者-消费者问题 读者-写者问题 ...

  10. STM32 HAL库PID控制电机 第二章 TB6612FNG芯片驱动GB37-520电机

    STM32 HAL库PID控制电机 第二章 TB6612FNG芯片驱动GB37-520电机(HAL库) 1 电路图 2 TB6612简介 TB6612是双驱动,可同时驱动两个电机 STBY:接单片机的 ...

最新文章

  1. 专家谈半导体产业前景 并购热还会继续
  2. Unity中sharedMaterials 和 materials
  3. 用汇编实现add函数
  4. ORACLE中表死锁的处理
  5. web测试内容及工具经典总结
  6. 【转】 Git 常用命令详解(二)----不错
  7. PyTorch学习基础知识二
  8. java错误找不到符号怎么办_java错误找不到符号
  9. 预装Win8系统的电脑安装Win7的方法(EFI安装Win7)
  10. 《孤独的根号三》 中英文对照
  11. 计算机主板反复启动,主板无限重启怎么回事
  12. 插入排序一块说说-很合适~~~二分查找和折半
  13. SourceTree系列1:SourceTree连接github从无到有
  14. 辣评10月自主SUV销量:优胜劣汰开始 哪些产品将死得其所?
  15. Python——循环嵌套
  16. 循序渐进学 LoadingDrawable
  17. 周杰伦入局元宇宙?6200万个联名「幻象熊」40分钟全卖光
  18. 用excle插入自定义两列(行)数据作为X、Y轴生成图表
  19. 三菱mode bus tcp通讯_泰州三菱MR-J4
  20. 键盘响应事件中的连按问题

热门文章

  1. 错误代码741 因为文件名产生符号链接,所以需由对象管理器重新运行分析操作。
  2. meson ninja调试dpdk
  3. 从零开始写一个武侠冒险游戏-1-状态原型
  4. 【爬虫学习笔记day44】5.2. (scrapy案例二)阳光热线问政平台爬虫
  5. 微信小程序(脱敏处理,通过身份证判断性别,时间段的倒计时)
  6. Cartographer(二)使用思岚rplidar雷达进行cartographer建图
  7. C++:error: passing ‘const string’ as ‘this’ argument discards qualifiers [-fpermissive]
  8. matlab之图例legend的数字变量显示
  9. 怎样将iphone照片通过MAC导入移动硬盘?
  10. 计算机网络五层模型详解