17-GPRS(Air202)串口

https://www.cnblogs.com/yangfengwu/p/9968716.html  现在看一下官方给的demo  其实只要有两个就好说了module(...,package.seeall) --[[ 函数名:print 功能 :打印...


https://www.cnblogs.com/yangfengwu/p/9968716.html



现在看一下官方给的demo


 其实只要有两个就好说了

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格式用的很多,所以。。。。

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

 

https://www.cnblogs.com/yangfengwu/p/9969179.html

























  • 发表于 2018-11-16 15:17
  • 阅读 ( 2490 )

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
不写代码的码农
杨奉武

18 篇文章

作家榜 »

  1. 技术销售Delectate 43 文章
  2. 陈夏 26 文章
  3. 国梁 24 文章
  4. miuser 21 文章
  5. 晨旭 20 文章
  6. 朱天华 19 文章
  7. 金艺 19 文章
  8. 杨奉武 18 文章