前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >17-GPRS(Air202)串口

17-GPRS(Air202)串口

作者头像
杨奉武
发布2018-12-13 16:41:53
4900
发布2018-12-13 16:41:53
举报
文章被收录于专栏:知识分享知识分享

现在看一下官方给的demo

其实只要有两个就好说了

代码语言:javascript
复制
module(...,package.seeall)

--[[
函数名:print
功能  :打印接口,此文件中的所有打印都会加上test前缀
参数  :无
返回值:无
]]
local function print(...)
    _G.print("test",...)
end


--串口配置
local UART_ID = 1 --uart1
local uartReadData = "";
local uartReadDataCnt = 0;


--定时器空闲中断检测(串口空闲接收数据)
local UartTimerCnt = 0;
local function UartTimer()
    if  uartReadDataCnt ~= 0 then
        UartTimerCnt = UartTimerCnt+1;
        if  UartTimerCnt >= 20 then
            UartTimerCnt=0;
            uartReadDataCnt = 0;
            uart.write(UART_ID,uartReadData);
            uartReadData = "";
        end
    end
end
sys.timer_loop_start(UartTimer,10)


--读取串口接收到的数据
local uartdata = ""
local function read()
    uartdata = ""
    while true do
        uartdata = uart.read(UART_ID,"*l",0)
        if not uartdata or string.len(uartdata) == 0 then break end
        uartReadData = uartReadData..uartdata;
        uartReadDataCnt = uartReadDataCnt +1
        UartTimerCnt = 0;
    end
end


--注册串口的数据接收函数,串口收到数据后,会以中断方式,调用read接口读取数据
sys.reguart(UART_ID,read)
--配置并且打开串口
uart.setup(UART_ID,115200,8,uart.PAR_NONE,uart.STOP_1)

现在下载测试,就是发送给串口1什么就回什么

可以了,现在发指令控制GPIO5 

指令就用

{data:switch,bit:1,status:0}   控制GPIO5输出低电平

{data:switch,bit:1,status:1}   控制GPIO5输出高电平

有可能会问,搞这么复杂的指令干嘛。。。。为了后期统一,而且现在物联网通信json格式用的很多,所以。。。。

代码语言:javascript
复制
module(...,package.seeall)

--[[
函数名:print
功能  :打印接口,此文件中的所有打印都会加上test前缀
参数  :无
返回值:无
]]
local function print(...)
    _G.print("test",...)
end


--串口配置
local UART_ID = 1 --uart1
local uartReadData = "";
local uartReadDataCnt = 0;


pio.pin.setdir(pio.OUTPUT,pio.P0_5)
pio.pin.setval(0,pio.P0_5)


--定时器空闲中断检测(串口空闲接收数据)
local UartTimerCnt = 0;
local function UartTimer()
    if  uartReadDataCnt ~= 0 then
        UartTimerCnt = UartTimerCnt+1;
        if  UartTimerCnt >= 20 then--有200ms不进去中断接受数据了,就认为收完了一条数据
            UartTimerCnt=0;
            uartReadDataCnt = 0;
      
            if  uartReadData=="{data:switch,bit:1,status:0}" then
                pio.pin.setval(0,pio.P0_5)
                uart.write(UART_ID,uartReadData);--返回数据
            elseif  uartReadData=="{data:switch,bit:1,status:1}" then
                pio.pin.setval(1,pio.P0_5)      
                uart.write(UART_ID,uartReadData);--返回数据
            end
            
            uartReadData = "";
        end
    end
end
sys.timer_loop_start(UartTimer,10)--10MS的循环定时器


--读取串口接收到的数据
local uartdata = ""
local function read()
    uartdata = ""
    while true do
        uartdata = uart.read(UART_ID,"*l",0)
        if not uartdata or string.len(uartdata) == 0 then break end
        uartReadData = uartReadData..uartdata;--接收数据
        uartReadDataCnt = uartReadDataCnt +1
        UartTimerCnt = 0;
    end
end


--注册串口的数据接收函数,串口收到数据后,会以中断方式,调用read接口读取数据
sys.reguart(UART_ID,read)
--配置并且打开串口
uart.setup(UART_ID,115200,8,uart.PAR_NONE,uart.STOP_1)

资料源码链接

链接:https://pan.baidu.com/s/1-SRfsKGQ7rZVvFmp1ObHWw 密码:p9qs

基础教程源码链接如果失效,请在淘宝介绍中下载,由于链接还是失效,请联系卖家,谢谢

https://item.taobao.com/item.htm?spm=a1z10.1-c-s.w4004-18540610442.6.36a74814ZSaRsu&id=569295486025

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-11-16 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
物联网通信
腾讯云物联网通信(Internet of Things Hub, IoT Hub)旨在提供一个安全、稳定、高效的连接平台,帮助开发者低成本、快速地实现“设备-设备”、“设备-用户应用”、“设备-云服务”之间可靠、高并发的数据通信。物联网通信平台不仅可以实现设备之间的互动、设备的数据上报和配置下发,还可以基于规则引擎和腾讯云产品打通,方便快捷地实现海量设备数据的存储、计算以及智能分析。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档