17-GPRS(Air202)串口

现在看一下官方给的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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏linux驱动个人学习

proc文件系统

一、proc文件系统是什么? proc是一个伪文件系统,伪文件系统的定义: 它只存在内存当中,而不占用外存空间。它以文件系统的方式为访问系统内核数据的操作提供接...

3807
来自专栏smy

对比cp和scp命令 将数据从一台linux服务器复制到另一台linux服务器

cp命令用来将一个或多个源文件或者目录复制到指定的目的文件或目录。它可以将单个源文件复制成一个指定文件名的具体的文件或一个已经存在的目录下。cp命令还支持同时复...

6385
来自专栏优启梦

文章内的新浪短网址https无法访问解决办法!

大家都知道最近新浪短网址出问题了! 以前蓝奏云、文章分享出来的地址都是https://t.cn的 导致丢失好多量! 一个一个修改太麻烦了,我们只能暂时将 htt...

4367
来自专栏云计算教程系列

如何在Ubuntu 18.04上配置Node.js生产环境应用

Node.js是一个开源JavaScript运行环境,用于构建服务器端和网络应用程序。该平台可在Linux,macOS,FreeBSD和Windows上运行。虽...

1533
来自专栏编程语言

Python:VScode 设置Python不同版本运行环境

1.首先本地安装有不同的Python的版本,比如2.7和3.5.mac下一般默认自带2.7版本。  终端输入侧  python -V 则显示默认版本号。而p...

1302
来自专栏ytkah

finecms如何批量替换文章中的关键词?

  Finecms批量替换文章关键词要怎么操作呢,比如把关键词A换为B?Finecms是免费开源无商业限制的内容管理系统,个人在维护,但二次开发很灵活,我们可以...

3343
来自专栏快乐八哥

Netbeans配置Xdebug

1.进入 http://xdebug.org/wizard.php 页面,新建一个php页面,里面输入 echo phpinfo(); 然后在运行的页面,复制页...

2237
来自专栏技术专栏

Zookeeper 在linux&mac下 安装配置

详情参考 http://zookeeper.apache.org/doc/r3.4.5/zookeeperStarted.html

3782
来自专栏JavaEdge

Error running Tomcat8: Address localhost:1099 is already in use

这明显是1099端口已经被占用,解决办法如下: 第一步,命令提示符号,执行命令:

1551
来自专栏大大的微笑

Redis初步了解

①. 到这里下载自己需要的版本 ,http://download.redis.io/releases/,我的版本是2.8.7 ②. 解压下载的安装包到自己想要存...

2486

扫码关注云+社区

领取腾讯云代金券