当前位置:   article > 正文

合宙Air780EG开发板系列教程—06 串口uart的数据接收和发送(基于luatos的开发)_air780 联网接收后发何发送数据

air780 联网接收后发何发送数据

一、下载串口调试工具

这里我下载的是合宙官方的串口工具,点击llcom串口调试工具下载。
功能列表

  • 其他串口调试功能具有的功能
  • 收发日志清晰明了,同时显示HEX值与实际字符串
  • 自动保存串口与Lua脚本日志,并附带时间
  • 串口断开后,如果再次连接,会自动重连
  • 发送的数据可被用户自定义的Lua脚本提前处理
  • 右侧快捷发送栏,快捷发送条目数量不限制
  • 可独立运行Lua脚本,并拥有定时器与协程任务特性(移植自合宙Luat Task架构)
    在这里插入图片描述
    其他的串口调试工具也可以,看个人爱好

二、焊接引脚

  • 由于我是直接用的官方的开发板,虽然官方把主串口引出来了,但是还是要我们焊接一个插排才能够使用

  • 合宙780eg开发板的主串口也就是MAIN_XXX用来接收和发送数据,我们需要这两个引脚,和一个地
    在这里插入图片描述

  • 下面是我的开发板的焊接
    在这里插入图片描述

  • 焊接好了需要一个TTL–USB的工具在这里插入图片描述

三、烧录代码

1、uart.read

-- LuaTools需要PROJECT和VERSION这两个信息
PROJECT = "uart_1"
VERSION = "1.0.0"

-- 引入必要的库文件(lua编写), 内部库不需要require
sys = require("sys")

local uartid = 1 -- 根据实际设备选取不同的uartid

--初始化
uart.setup(
    uartid,--串口id
    921600,--波特率
    8,--数据位
    1--停止位
)

-- 收取数据会触发回调, 这里的"receive" 是固定值
uart.on(uartid, "receive", function(id, len)
    local s = ""
    repeat
        -- s = uart.read(id, 1024)
        s = uart.read(id, len)
        if #s > 0 then -- #s 是取字符串的长度
            log.info("uart", "receive", id, #s, s)
            log.info("uart", "receive", id, #s, s:toHex())
        end
        if #s == len then
            break
        end
    until s == ""
end)

-- 用户代码已结束---------------------------------------------
-- 结尾总是这一句
sys.run()
-- sys.run()之后后面不要加任何语句!!!!!

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38

把写好的代码烧录到开发板中,不会烧录的请看我之前的帖子Luatools下载调试工具

效果演示

打开串口调试工具,打开串口
在这里插入图片描述

发送消息
在这里插入图片描述

可以看到 log.info("uart", "receive", id, #s, s) log.info("uart", "receive", id, #s, s:toHex())的区别,
– 如果传输二进制/十六进制数据, 部分字符不可见, 不代表没收到
– 关于收发hex值,请查阅 https://doc.openluat.com/article/583

  • 我们可以把打印出来的值复制一下,我们看一下效果,如图
    在这里插入图片描述
    实际上打印的就是一个是字符串一个是hex数据

2、uart_write

我们直接每秒循环给串口发送数据吧

-- LuaTools需要PROJECT和VERSION这两个信息
PROJECT = "uart_1"
VERSION = "1.0.0"

-- 引入必要的库文件(lua编写), 内部库不需要require
sys = require("sys")

local uartid = 1 -- 根据实际设备选取不同的uartid

--初始化
uart.setup(
    uartid,--串口id
    921600,--波特率
    8,--数据位
    1--停止位
)

sys.timerLoopStart(function()
    uart.write(uartid,"hello,cheney")
end,1000)

-- 收取数据会触发回调, 这里的"receive" 是固定值
uart.on(uartid, "receive", function(id, len)
    local s = ""
    repeat
        -- s = uart.read(id, 1024)
        s = uart.read(id, len)
        if #s > 0 then -- #s 是取字符串的长度
            -- 如果传输二进制/十六进制数据, 部分字符不可见, 不代表没收到
            -- 关于收发hex值,请查阅 https://doc.openluat.com/article/583
            log.info("uart", "receive", id, #s, s)
            log.info("uart", "receive", id, #s, s:toHex())
        end
        if #s == len then
            break
        end
    until s == ""
end)

-- 用户代码已结束---------------------------------------------
-- 结尾总是这一句
sys.run()
-- sys.run()之后后面不要加任何语句!!!!!

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
效果演示

在这里插入图片描述
注意看秒数,每秒发送一次。
发送和接收不冲突

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/877780
推荐阅读
相关标签
  

闽ICP备14008679号