目录

  • 简介
  • 实现方法
  • 示例
  • 常见问题
  • 相关资料以及购买链接
    • 测试源码
    • 相关开发板购买链接

简介

虚拟AT 也叫 VAT , ‘V’ 的英文就是 virtual 虚拟的意思; ,传统的AT 是上位机何下位机之间的通信指令,通常是通过物理串口进行交互;VAT 则不依赖具体的硬件串口,而是通过软件接口来实现等效功能,所以称它为虚拟AT.

实现方法

##命令一
ril.setrilcb(cb)
参数cb 是一个回调函数, 用于将底层AT 指令返回的内容通过cb 输出到指定通道(如示例中的:usb_write ),或者应用自己的处理函数
##命令二
ril.request(strcmd)
参数 strcmd 就是用户要发给底层的 AT指令字符串。

示例

--- 模块功能:MYVAT
-- @author JWL
-- @license MIT
-- @copyright HEZHOU
-- @release 2020.04.02require"ril"
require "utils"
require "sys"
require "pm"
require "net"
require "record"
require "audio"
require "rtos"
require "misc"
require "common"module(..., package.seeall)--开机就关掉RNDIS 否则物联网卡流量会被网卡给消耗掉。
ril.request("AT+RNDISCALL=0,1")--VAT是否打开 "1" 开 ,"0" 关
local flag_enatc = "1"
-- 串口ID,串口读缓冲区
local  recvQueue =  {}
-- 串口超时,串口准备好后发布的消息
local uartimeout, recvReady,RECV_MAXCNT = 100, "UART_RECV_ID",1024--向PC 写入数据,目的是将AT指令的返回数据呈现给电脑一方
local function usb_write(data)uart.write(uart.USB, data)
end--配置USB 的虚拟串口
uart.setup(uart.USB, 0, 0, uart.PAR_NONE, uart.STOP_1)
uart.on(uart.USB, "receive", function()table.insert(recvQueue, uart.read(uart.USB, RECV_MAXCNT))sys.timerStart(sys.publish, uartimeout, recvReady)
end)--处理PC 发过来的AT 指令
function app_procmd(str_recv)log.info("str_recv------------",str_recv)local flag_handled=true    --用来判断AT指令是否已经被应用层处理,如果已经被处理的就不需要发到底层去了。local str_rsp =""          --临时存放应用层已经处理的AT指令返回字符串local prefix = string.match(str_recv, "[aA][tT](%+%u+)")if prefix ~=nil thenif prefix == "+RIL?" then     --读取VAT标志开关标志str_rsp = "+RIL:"..flag_enatcelseif prefix == "+RIL" then  --设置VAT 开或者关     local temp_enatc = string.match( str_recv, "+RIL=(%d+)")if temp_enatc ~= nil thenflag_enatc = temp_enatcendif flag_enatc == "0" then  ril.setrilcb(nil) endstr_rsp = "+RIL:"..flag_enatcelseflag_handled=falseendelseif  string.upper(str_recv) =="AT\r\n" thenstr_rsp ="OK\r\n"elseflag_handled=falseendendif str_rsp ~="" thenusb_write(str_rsp)endif (not flag_handled) and (flag_enatc == "1") thenlog.info("send at cmd ==>" ,str_recv)ril.setrilcb(usb_write)ril.request(str_recv)end
end--将从VAT 串口收到的内容进行拼接
sys.subscribe(recvReady, function()local str_recv = table.concat(recvQueue)recvQueue = {}app_procmd(str_recv)
end)

常见问题

1,VAT 的指令和标准AT 指令,大部分都相同,由于标准AT 指令里面的CIP 开头的网络通信指令在LUAT 中通过 socket 接口实现,所以LUAT 不支持CIP 的AT 指令。
2,PC 端输入的AT 指令需要大写,比如 AT+CSQ 不要写成 At+CsQ

相关资料以及购买链接

测试源码

myvat.lua

相关开发板购买链接

Air724UG开发板
Air724 开发板使用说明

Luat模块应用手册-指南-Luat二次开发教程指南-功能开发教程-虚拟AT相关推荐

  1. Luat模块应用手册-指南-Luat二次开发教程指南-功能开发教程-长连接超低功耗方案

    目录 简介 什么是超低功耗 能降低多少功耗 什么时候用 哪个版本才支持 实现方法 主要命令 示例 实现原理 两种心跳包 实现代码 常见问题 相关资料以及购买链接 相关开发板购买链接 简介 什么是超低功 ...

  2. Luat模块应用手册-示例-Luat DEMO-长连接超低功耗方案

    如何用开发板实现 低功耗长连接 功能 目录名称 如何用开发板实现 低功耗长连接 功能 简介 材料准备 步骤 实现代码 常见问题 相关资料以及购买链接 简介 socket是物联网中最常用的功能,本文介绍 ...

  3. 开发指南专题二:JEECG微云快速开发平台JEECG框架初探

    开发指南专题二:JEECG微云快速开发平台JEECG框架初探 2.JEECG框架初探 2.1演示系统 打开浏览器输入JEECG演示环境地址:http://demo.jeecg.org:8090/可以看 ...

  4. Excel阅读模式/聚光灯开发技术之二 超级逐步录入提示功能开发原理简述—— 隐鹤 / HelloWorld...

    Excel阅读模式/聚光灯开发技术之二 超级逐步录入提示功能开发原理简述---- 隐鹤  /  HelloWorld 1. 引言 自本人第一篇博文"Excel阅读模式/单元格行列指示/聚光灯 ...

  5. NC65二开单据单据追溯功能开发

    NC65二开单据单据追溯功能开发 一.单据元数据字段增加字段 来源单据主键 来源单据类型 二.设置单据按钮&&修改单据类型 单据增加按钮 <bean id="linkQ ...

  6. 3D格式转换工具HOOPS Exchange最全技术指南(二):4大功能特征与典型使用场景

    什么是 HOOPS Exchange? HOOPS Exchange 是一组软件库,可以帮助开发人员在开发应用程序时读取和写入主流的 2D 和 3D 格式.HOOPS Exchange 支持 在主流的 ...

  7. Luat模块应用手册-指南-luat二次开发教程-功能开发教程-HTTP

    关键词:HTTP,POST,GET 目录 http 简介 API说明 实现流程 示例 执行HTTP请求的回调函数 HTTP请求函数 常见问题 是否支持HTTPS 为什么频繁请求会失败 为什么POST ...

  8. 二.office-Excel 2010 办公常用功能操作教程

    一.Excel 常用技能的说明目录. 1.数据的自动填充方式. 2.输入框中下拉选择框数据的绑定 3.简单的公式计算. 4.超链接的创建. 5.工作簿的保护. 二.说明目录的详细操作. 1.数据的自动 ...

  9. 百度URL自动推送收录插件【土拨鼠网站日记管理(分析推送二合一)】推送功能配置教程

    推送功能配置教程(推送功能和网站日记分析功能可以单独分开始用,需要哪个功能就单独设置这个功能即可): 第一次使用推送功能需要在[工具设置]先生成缓存数据库和配置推送计划 初次设置: 自动爬取整站URL ...

最新文章

  1. JSP简单练习-数组应用实例
  2. acwing3132. 食物(BZOJ3028)
  3. 2019世界大学排名全新出炉!清华北大排名大幅下滑?
  4. linux分区par,linux基础篇(磁盘分区)
  5. 华为存储设备管理ip修改
  6. 股指期货开户的条件和流程
  7. Windows Server 2016域控服务器如何取消密码复杂性规则
  8. L298N电机驱动器
  9. 五十一个经典小故事5
  10. 【Scratch 3.0游戏】—— 乒乓弹球游戏
  11. 广告创意设计的灵感来源
  12. android layout.inflater,LayoutInflater.inflate详解
  13. 关于不锈钢管TIG+MAG
  14. ERROR: No matching distribution found for xxx
  15. 形容计算机老师风采的句子,形容教师的优美句子
  16. 入职阿里一周年,我能谈点什么 | 可惜主语不是我~
  17. Android逆向之旅---静态方式破解微信获取聊天记录和通讯录信息
  18. 用cocos2d3.0写一个srpg游戏-srpg介绍
  19. 水库安全监测主要包含什么内容(大坝安全监测、水雨情自动测报)
  20. eclipse 配置字符集 字体大小 护眼

热门文章

  1. debian通过odbc连接mysql_PHP从Debian Etch使用ODBC和FreeTDS访问MSSQL数据库
  2. 美团给应届生开年薪35万+ 倒挂老员工:加油、打工人
  3. TZT3801G无线振弦在线监测系统
  4. AWFWD改进后的融合算法
  5. CAD绘制填充,从中间挖去一块(网页版)
  6. 办公协同应用「我来 wolai」获数千万人民币融资
  7. ROS修改小乌龟程序背景颜色
  8. 2022年制冷与空调设备运行操作考试题库模拟考试平台操作
  9. C语言实现动态二维数组及相乘
  10. “互联网+“项目路演PPT制作学习笔记分享