美文网首页Air202
17-GPRS(Air202)串口

17-GPRS(Air202)串口

作者: 杨奉武 | 来源:发表于2018-11-16 14:01 被阅读25次

    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()

        ifuartReadDataCnt ~=0 then

            UartTimerCnt = UartTimerCnt+1;

            ifUartTimerCnt >=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 =""whiletruedo        uartdata = uart.read(UART_ID,"*l",0)

            ifnot uartdata orstring.len(uartdata) ==0thenbreak 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()

        ifuartReadDataCnt ~=0 then

            UartTimerCnt = UartTimerCnt+1;

            ifUartTimerCnt >=20then--有200ms不进去中断接受数据了,就认为收完了一条数据

                UartTimerCnt=0;

                uartReadDataCnt =0;

                ifuartReadData=="{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 =""whiletruedo        uartdata = uart.read(UART_ID,"*l",0)

            ifnot uartdata orstring.len(uartdata) ==0thenbreak 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

    相关文章

      网友评论

        本文标题:17-GPRS(Air202)串口

        本文链接:https://www.haomeiwen.com/subject/wbkmfqtx.html