合宙air800进行串口Json解析


本篇博文主要记叙合宙air800的json数据解析,语言使用luat,IDE使用VScode。
STM32进行JSON数据解析和打包请移步我的上一篇博文。


合宙AIR800部分

合宙官方提供的例程中已经提供了JSON数据的解析代码,但是并未通过串口进行接收,因此本博文的合宙AIR800部分我会从以下两部分介绍:①Air800的串口接收②串口接收的数据进行JSON解析

Air800的串口接收

首先是进行串口的配置和接收、发送函数的回调。

--保持系统处于唤醒状态,此处只是为了测试需要,所以此模块没有地方调用pm.sleep("testUart")休眠,不会进入低功耗休眠状态
--在开发“要求功耗低”的项目时,一定要想办法保证pm.wake("testUart")后,在不需要串口时调用pm.sleep("testUart")
pm.wake("testUart")
--注册串口的数据接收函数,串口收到数据后,会以中断方式,调用read接口读取数据
uart.on(UART_ID,"receive",read)
--注册串口的数据发送通知函数
uart.on(UART_ID,"sent",writeOk)

--配置并且打开串口
uart.setup(UART_ID,115200,8,uart.PAR_NONE,uart.STOP_1)

其次是将串口接收到的数据进行储存

--[[
函数名:read
功能  :读取串口接收到的数据
参数  :无
返回值:无
]]
local function read()
    local data = ""
    --底层core中,串口收到数据时:
    --如果接收缓冲区不为空,则会以中断方式通知Lua脚本收到了新数据;
    --如果接收缓冲器为空,则不会通知Lua脚本
    --所以Lua脚本中收到中断读串口数据时,每次都要把接收缓冲区中的数据全部读出,这样才能保证底层core中的新数据中断上来,此read函数中的while语句中就保证了这一点
    while true do --当且仅当允许接收时才接收数据
        data = uart.read(UART_ID, "*l")--将串口所有数据取出
        if not data or string.len(data) == 0 then --如果没有数据就跳出
            break
        end
        json_analysis(data)--json解析
        data = "" --清空字符串
    end
end

串口接收的数据进行JSON解析

--[[
函数名:json_analysis
功能  :JSON格式解析数据
]]
local function json_analysis(data)
    local tjsondata, result, errinfo = json.decode(data)
    if result and type(tjsondata) == "table" then --正确解析
        --调试输出
        log.info("testJson.decode status ", tjsondata["status"])
        
        log.info("status type is ", type(status))
        
        status = tjsondata["status"]--灯的状态
        write("{\"status\":" .. string.format("%s", tostring(status)) .. "}")--串口输出Json字符串
    else --错误解析
        log.info("testJson.decode error", errinfo)
    end
end

STM32进行JSON数据发送

AIR800代码资源


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值