赞
踩
使用教程:http://oldask.openluat.com/article/4
检查下载线连接是否正确,下载线要连接模块的host_txd、host_rxd、gnd
检查下host_txd、host_rxd是否与其他管脚短路,特别是host_txd和vddio相邻,可能会因为贴片或者焊接问题导致短路
下载线不稳定,更换ft232/cp2102等芯片串口线对比试一下
检查供电以及开机是否正常,测量vbat 3.6V到4.2V,并拉低pwrkey 2000ms开机
检查下载口电平是否匹配,支持2.8V,兼容3.3V
更换电脑usb口或者更换电脑对比测试
模块可能损坏【静电击穿、炉温过高可能导致损坏】,更换模块对比测试确认
如果出现下载过程中失败问题,参考如下顺序排查
1)供电可能不稳定,使用稳定的电源供电,可以直接用稳压电源对vbat供电对比确认
2)下载线可能不稳定,更换ft232/cp2102等芯片串口线对比试一下
更多详细说明参考:http://doc.openluat.com/article/600/0
参考开发板使用手册,确认跳线帽使用是否正常
开发板上已经有usb转串口芯片,所以要使用micro usb线,不要使用usb转串口线
检查供电以及开机是否正常,测量vbat 3.6V到4.2V,并长按pwrkey开机
检查下载口电平是否匹配,支持2.8V,兼容3.3V
更换电脑usb口或者更换电脑对比测试
模块可能损坏【静电击穿、炉温过高可能导致损坏】,更换模块对比测试确认
如果出现下载过程中失败问题,参考如下顺序排查
1)供电可能不稳定,使用稳定的电源供电,可以直接用稳压电源对vbat供电对比确认
2)下载线可能不稳定,更换ft232/cp2102等芯片串口线对比试一下
检查下载线连接是否正确,如果是模块,要连接模块的usb_dp、usb_dm、vbus、gnd;如果是开发板,要连接usb口,luatools准备好下载后,拨动开关拨到on位置
需要使用稳定的usb下载线,不要使用usb转串口下载线
检查供电是否正常,测量vbat 3.6V到4.2V
要安装驱动,参考:http://oldask.openluat.com/article/92, 注意:安装好驱动之后,在烧录固件过程中,设备管理器中会出现下图所示的下载驱动
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-24f53taG-1619422566511)(http://oldask.openluat.com/image/show/attachments-2019-10-P2aiLCiP5db9ad0250805.png “undefined”)]
烧录固件,正常开机后,设备管理器中会出现下图所示的3种驱动
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nDM7kCFW-1619422566523)(http://oldask.openluat.com/image/show/attachments-2019-10-nP7l5Mlr5db9acf3b676b.png “undefined”)]
如果没有出现这些端口,或者有感叹号,表示驱动没有安装成功,请重新安装驱动
注意:如果电脑安装了USBPcap,会造成下载驱动有感叹号,从而造成无法烧录固件,但是可以正常抓取日志。如果遇到此问题,请删除USBPcap后再试;此问题可以参考下图操作:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zCqhW8QU-1619422566524)(http://oldask.openluat.com/image/show/attachments-2019-11-cWGdgtNF5dd3a643e6a80.png “undefined”)]
更换电脑usb口或者更换电脑对比测试
模块可能损坏【静电击穿、炉温过高可能导致损坏】,更换模块或者开发板对比测试确认
如果出现下载过程中失败问题,参考如下顺序排查
1)供电可能不稳定,使用稳定的电源供电,可以直接用稳压电源对vbat供电对比确认
2)下载线可能不稳定,更换稳定的usb下载线
如果项目有安全性方便的考虑,防止别人拿到设备后,读取自己写的脚本文件,可以在生成量产文件时,打开加密功能选项,输入密码,Luatools对所有脚本和其他资源文件进行加密,即使别人拿到了加密设备,也无法解密出原始的脚本和资源文件
可以选择输出脚本日志的端口,默认是USB输出日志,如果烧录或者生成量产文件时,选择了指定端口输出日志,注意在Luatools主界面,选择对应的打印口,这样在Trace窗口才能输出日志
任何类型的文件都可以烧录,例如mp3、bmp、png、jpg、txt、自定义后缀的文件等等,烧录后,脚本如何访问这些文件,参考1.1.7章节
通过Luatools烧录进模块的文件,开机启动时,根据不同类型的文件,会自动创建不同的目录保存这些文件,完整的文件路径(filePath)定义如下:
2G模块:
4G模块:
考虑到对内存的消耗过大可能会造成内存不足的问题:如果文件较小(小于4KB),可以使用io.readFile(filePath)一次性全部读出;如果文件较大(大于4KB),可以使用io.readStream(filePath, offset, len)分段读出
不可以。每次烧录,都会删除模块中之前的所有脚本和资源文件,所以每次烧录,必须烧录某个项目的所有脚本和资源文件(包括lib脚本文件)
Luatools打开串口时,会对波特率做校验,如果串口芯片的波特率满足不了要求,会打开失败
2G模式下,波特率为921600;4G模式下,波特率为115200
目前遇到过如下几种打开串口失败的情况:
1. 使用了PCIE转串口卡,这种串口卡不支持921600波特率,所以在2G开发模式下会提示打开失败,在4G模式下可以正常打开
4G模块开机时,部分电脑识别usb口过慢,导致开机部分的日志可能丢失;遇到此类问题,可以参考1.1.5章节,使用uart1或者uart2输出日志
这些内容都是从抓取的日志中分析关键字解析出来的,如果不是从开机开始抓取日志,会丢失一些日志,从而导致解析失败。例如软件版本是搜索poweron reason解析出来的,如果没有抓到这一行日志,软件版本就会解析失败,或者如果自己写的应用脚本中也会输出poweron reason关键字日志,也可能导致解析异常。所以,这些信息的解析仅仅是作为参考方便开发者分析问题,要进一步准确分析问题,一定要直接分析日志
缺少vc_redist运行库,http://www.openluat.com/Product/file/asr1802/vc%E8%BF%90%E8%A1%8C%E5%BA%93%E5%90%88%E9%9B%86MSVBCRT_AIO_2018.07.30_X86+X64.exe 下载安装后,重新运行Luatools
没有64位、Linux、Mac版本工具,Linux和Mac请使用虚拟机运行Luatools工具;支持部分XP系统,建议在WIN7以上的系统上使用
检查电脑的任务管理中是否有多个luatools.exe,如果有,关闭所有后,再重启Luatools
按照如下顺序尝试解决
如果左下角command编辑框中输入r 0命令后回车【注意:host rx要和串口线连接,才能正常接收命令】,有0xXXXXXXXX格式的数据返回,表示host口通信正常,没输出日志,可能是host寄存器受到干扰导致,此时参照下图将可能受到干扰的寄存器主动设置正常
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-l78rDgGD-1619422566526)(http://oldask.openluat.com/image/show/attachments-2019-11-qMXxAfM15dcd00cc6582b.png “undefined”)]!
2G模块量产烧录工具:http://www.openluat.com/Product/file/rda8955/RDA 平台Lod客户升级工具2.5.7z
4G模块量产烧录工具:http://www.openluat.com/Product/file/asr1802/ASR 平台core客户升级工具V1.3_Air720系列.7z
合宙提供了官方的烧录夹具和设计文件,如有需要,打开:luat.taobao.com,在店铺内搜索夹具,与淘宝客服沟通;合宙也提供免费代烧录服务,购买模块到达一定数量时,此服务免费,详情与模块销售沟通
检查下夹具供电,使用稳定的电源给夹具供电;不要一个电源同时给多个夹具供电
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ve8hLpKw-1619422566527)(https://oldask.openluat.com/image/show/attachments-2020-03-CQaioO2Q5e69f0ce8ac32.png “undefined”)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-q8bYL9z9-1619422566528)(https://oldask.openluat.com/image/show/attachments-2020-03-7OnkBxOR5e69f0eb5f1df.png “undefined”)]
出现此问题,一般都是blf文件配置出错导致的,打开config/param.ini,检查下图中的core对应的blf文件配置是否正确
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6UHFIhD8-1619422566528)(https://oldask.openluat.com/image/show/attachments-2020-03-kMfp2nr75e69f1160fa18.png “undefined”)]
测量V_GLOBAL_1V8引脚电压,如果是1.8V左右,表示已经正常开机,“无法开机”纯属误判;如果是低电平0V左右,表示没有开机
如果引出了usb引脚,usb连接电脑,参考1.1.3章节第4步,持续观察20秒,看是否会稳定出现设备管理器中的3个端口,如果稳定出现,表示已经正常开机,“无法开机”纯属误判;如果没有出现,表示没有正常开机;如果出现后一闪而过,表示可能一直在异常重启,参考4.2章节处理
vbat引脚电压3.4V到4.3V,powerkey拉低至少2秒,才有可能开机;测量vbat引脚和powerkey状态,确认是否满足要求
模块峰值需要2A电流,供电跌落不能太多
将模块的第142脚:EXTON1N直接接地可以实现上电自动开机功能。需要注意,在上电自动开机模式下,将无法关机,只要VBAT管脚的电压大于开机电压,即使软件调用关机接口,模块仍然会再次开机。另外,在此模式下,要想成功自动开机,VBAT管脚电压仍然要大于软件设定的开机电压值(3.1V),如果不满足,模块会关闭,就会出现反复开关机的情况。
不建议把模块的第21脚:PWRKEY 直接接地来实现上电开机功能。假如把PWRKEY 直接接地了,此时再把RESET_IN_N 拉低超过15秒的话,模块内部的PMU会认为模块状态异常,强制断电,即使在RESET_IN_N释放以后模块也会一直处于关机状态,直到松开PWRKEY一段时间。
不建议把模块的第21脚:PWRKEY 直接接地来实现上电开机功能。假如把PWRKEY 直接接地了,此时再把RESET_IN_N 拉低超过15秒的话,模块内部的PMU会认为模块状态异常,强制断电,即使在RESET_IN_N释放以后模块也会一直处于关机状态,直到松开PWRKEY一段时间。
建议选择18650或锂聚合物电池。供电必须满足3.7~4.2v,电压跌落不超过0.6v,最低不低于3.4v
请检查电源动态响应能力。必要时vbat、gnd并电容
不能,只能获得电池电压。使用misc.getVbatt(),返回毫安。开发者自行根据电池的承认书去换算百分比(因为不同电池放电曲线各有差异)
请用示波器检查供电有无跌落,万用表响应能力较差
RESET管脚与MCU直接相连,这样的话板子在上电时,MCU的IO反转可能会影响到模块的开机;RESET管脚需要用三极管驱动,或者加二极管隔离。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-W8zKcwFJ-1619422566529)(https://oldask.openluat.com/image/show/attachments-2019-12-Dey6JVAC5de4c676d9c94.png “undefined”)]
关于重启问题的详细描述参考如下文章:
http://oldask.openluat.com/article/27
http://oldask.openluat.com/article/28
http://oldask.openluat.com/article/29
http://oldask.openluat.com/article/909
重要提醒:使用Luat固件开发时,一定要使用errDump功能,此功能对“量产投放市场的设备,远程调试初步定位问题”至关重要
如果以上步骤都不能解决问题,参考1.2.6章节,提供trc日志文件和sdl日志文件给合宙技术支持人员分析;如果需要设置为死机模式,复现问题进一步分析,参考 http://oldask.openluat.com/article/910 处理
模块如果没有校准,射频性能就无法达到最优,极端情况下,会造成网络通信非常不稳定;未校准的模块必须走售后流程维修或者换货
4G模块会对2G、3G、4G进行单独校准,所以要单独查询这三部分是否校准;同时也要根据模块支持的网络制式区别对待,例如720H支持2G、3G、4G,则这三部分都要校准才正常;720G支持3G、4G,则只要这两部分都校准就正常
Lua版本的脚本运行起来之后,会发送AT命令查询imei、sn,从脚本开始运行到查询到结果,一般需要3秒钟【只是经验值,不要用做程序设计依据】,如果在查询到结果之前使用misc.getImei()、misc.getSn()接口读取,就为返回空;
用户开发项目时,可以根据项目的应用场景,分别做不同处理,比较典型的两种场景如下:
2G模块的默认值:359759002514931
4G模块的默认值:3520990017614823
实际场景中,用户可能会写自定义的imei到模块中,AT版本使用AT+WIMEI命令、Luat版本使用misc.setImei接口来写入;imei一共15位,其中最后1位是校验位,根据前14位计算得来
2G模块的固件对最后1位的校验位没做检查,即使校验位错误,也允许写入
4G模块的固件对最后1位的校验位会做正确性检查,校验位出错,返回写入失败;所以如果4G模块出现写IMEI失败,可以通过https://www.oming.me/tools/imei检查下校验位【如果此链接失效,可以把校验位设置为0到9依次尝试】,如果检验位没问题,提供日志给合宙技术支持人员分析
sn的标准含义是指序列号,合宙模块的标签上都有sn号,记录了生产日期等信息;模块的flash中也有一块区域为sn,我们现在讨论的是模块flash中的这一块区域。 sn区域最多可以存储64字节的数据,即使重新烧录固件,此区域的数据也不丢失,和imei的存储机制类似。合宙工厂生产模块时,对sn区域没有写入任何有效数据【2G模块虽然写入了数据,但是此数据没什么实际意义】,所以客户拿到模块之后,可以根据sn区域的特性,存储自定义的不超过64字节的任何数据,例如阿里云的设备密钥
sn读写接口如下:
可以得知:Air720H支持B1、B3、B5、B8、B38、B39、B40、B41
那么Air720H可以在哪些国家使用呢?分如下几种情况讨论
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mZcAKb6E-1619422566530)(https://oldask.openluat.com/image/show/attachments-2020-01-Ag5kfJYa5e0ee38a73945.png “undefined”)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NwhwZU5w-1619422566530)(https://oldask.openluat.com/image/show/attachments-2020-01-mNG0jtwC5e0ee3a9dd309.png “undefined”)]
注意:一旦确定可用,需要参考本文的APN设置章节,设置为正确的APN,才能正常上网
支持
2G模块:主动上报+CPIN: NOT INSERTED或者AT+CPIN?查询返回+CPIN: NOT INSERTED
4G模块:主动上报+CPIN: SIM REMOVED或者AT+CPIN?查询返回+CME ERROR: 10
都表示找不到SIM卡,按照如下步骤排查:
Lua版本的脚本运行起来,检测到sim卡之后,会发送AT命令查询iccid、imsi,从脚本开始运行到查询到结果,一般需要5秒钟【只是经验值,不要用做程序设计依据】,如果在查询到结果之前使用sim.getIccid()、sim.getImsi()接口读取,就为返回空;
用户开发项目时,可以根据项目的应用场景,分别做不同处理,比较典型的两种场景如下:
sys.subscribe(“IMSI_READY”, function() end) --iccid也是IMSI_READY的消息
sys.subscribe(“IMSI_READY”, function() end)
目前有两种方式可以获取本机号码:
虚拟卡是一种“将sim卡数据写入模块flash,实现和实体卡同样网络功能”的纯软件技术,相比实体卡存在“省去卡槽的硬件设计、不会出现掉卡、不会因为卡被盗而产生的巨额流量”的优点
目前合宙已不生产新的虚拟卡模块,之前已经出货的虚拟卡模块会持续维护。部分2G和4G模块支持贴片卡(ESIM卡),有需要的话,可咨询购买
虚拟卡使用时常见问题如下:
目前,支持贴片卡的模块型号列表如下:
物联网卡管理平台地址:sim.openluat.com
商务问题列表如下,有需要请联系淘宝客服处理:
合宙出售的物联网卡为纯流量卡,不支持语音和短信业务。必须去运营商办理实名认证的卡才能使用
无法防盗,建议使用贴片卡
无法防盗,建议使用贴片卡
sim_vcc不是持续供电,是间歇性供电,只有卡在位才持续供电
Luatools有一个检测虚拟卡数据是否完整的功能,但是此功能无法做好,如果出现此提示,根据如下情况分析:
参考:http://doc.openluat.com/article/556/0
常见的模块天线有如下几种:PCB天线、FPC天线、弹簧天线、棒状天线、外置吸盘天线
常见的GPS天线有:陶瓷天线
本章节描述的是常见的注意事项,具体到一款产品遇到的天线问题,还是要分析产品的内部结构,需要拍张清晰的产品内部以及外壳照片发给合宙技术支持人员分析
任何一款规范的产品,天线设计至关重要,一定要到正规的天线厂,针对整机,对天线做匹配性调试。如果天线没有经过调试,在使用过程中会出现信号不稳定、驻网失败、连接服务器断线等网络问题
任何一款规范的产品,天线设计至关重要,一定要到正规的天线厂,针对整机,对天线做匹配性调试。如果天线没有经过调试,在使用过程中会出现信号不稳定、驻网失败、连接服务器断线等网络问题
客户如果没有条件做调试,建议选择抗干扰强的天线,下面分情况讨论:
建议天线选配按照如下顺序执行:
天线调试好之后,使用环境对天线性能也有影响,需要注意的问题如下:
GSM灵敏度-108左右,正常应该不会掉线,可能是有干扰导致灵敏度下降,或者线损没有补上
设计如此,这是正常表现;天线和GND之间有电感,所以测试为0欧姆
4G天线可以用到2G上,但是2G天线不建议用到4G上
合宙大部分的4G模块不支持辅天线,个别模块支持辅天线,对于支持辅天线的模块来说,仅使用主天线可以满足日常基本需求,如果要求射频高性能发挥到极致,可以同时使用主天线和辅天线
信号强度和dBm的对应关系为:信号强度*2-113 = dBm值
信号强度的查询方法:
首先确保手机和模块使用的网络制式相同,例如模块是移动2G网络,手机也要在移动2G网络下,这样才有对比意义
0029版本开始的core固件,支持了中国移动的一种新标准的物联网卡,如果遇到此问题,确认一下版本是否为0029以及之后的版本,如果不是,烧录最新core固件测试确认下
之前有客户遇到过类似问题,均为“测试地点,4G信号太弱”引起的,手机上的天线增益比4G模块大板上的天线增益要高,所以手机正常,4G模块不正常。4G模块更换高增益天线后,也变得正常
不同型号的4G模块,支持的网络频段也不相同。
以支持频段最多的4G模块Air720H为例,同时支持4G、3G、2G网络,开机搜索网络时,默认软件是按照4G、3G、2G网络的顺序依次搜索,等搜索到2G网络时,可能已经过去几分钟了(例如我在上海办公室,使用Air720H模块,3分钟左右才能搜索到2G网络),对于使用2G卡的用户或者要使用2G网络的应用场景来说,这种速度简直是不能忍受。那么如何加快搜索2G网络的速度呢,有如下两种方式:
优势 | 劣势 | |
---|---|---|
全网搜索,减少搜索4G、3G网络的时间,通过每次开机发送如下AT命令实现: AT+MEDCR=0,8,1 AT+MEDCR=0,17,240 AT+MEDCR=0,19,1 | 兼容各种网络环境,注册2G网络的速度可以稍微变快一点儿(例如,我这边Air720H模块,发送这三条指令前,测试了4次,分别为:174秒、118秒、147秒、136秒;发送这三条指令后,测试了4次,分别为240秒、110秒、112秒、112秒) | 2G的驻网速度还是没有质的提升 |
仅搜索2G网络,通过开机发送如下AT命令实现: AT*BAND=0,74 | 2G网络注册快,和2G模块的驻网速度基本一致(例如,我这边Air720H模块,基本上都是在20秒以内) | 设置AT命令后,模块就只能使用2G网络了;以后如果要使用默认网络配置,必须发送AT+RSTSET(发送后,会自动重启)命令来恢复出厂设置 |
<SysMainMode>,<SysMode>
;其中<SysMainMode>
表示当前注册的网络类型:<SysMainMode>
为3时表示2G网络<SysMainMode>
为5时表示3G WCDMA网络<SysMainMode>
为15时表示3G TD网络<SysMainMode>
为17时表示4G网络<SysMainMode>
为其余值时表示未注册网络<n>[,<band>,<AcT>]
;其中<AcT>
表示当前注册的网络类型:<AcT>
为0、1、3时表示2G网络<AcT>
为2、4、5、6、8时表示3G网络<AcT>
为7时表示4G网络<AcT>
为其余值时表示未注册网络<SysMainMode>,<SysMode>
;其中<SysMainMode>
表示当前注册的网络类型:<SysMainMode>
为3时表示2G网络<SysMainMode>
为5时表示3G WCDMA网络<SysMainMode>
为15时表示3G TD网络<SysMainMode>
为17时表示4G网络<SysMainMode>
为其余值时表示未注册网络详情可参考AT手册和 http://oldask.openluat.com/article/130 帮助理解
参考:
https://oldask.openluat.com/article/946
http://bw.openluat.com/#/inter_view 这个地址也可以备注上。
在对接后台时,有些后台会要求终端上传一些小区参数,例如:
cell id:小区ID
ecl、ce level:无线信号覆盖等级
pci:物理小区标识
sinr:信号与干扰加噪声比
rsrp:参考信号接收功率
tac:基站跟踪区域码
strength:信号强度,通过AT+CSQ或者AT+CESQ获取
一般来说,只有4G小区才具有这些参数信息,我们以4G小区为例,来说明如何获取这些参数,AT手册中有一个+EEMLTESVC的上报,上报的数据中包含了这些参数;有如下两种方式可以触发+EEMLTESVC上报:
1. AT版本,固件包含各国公网APN列表,但是列表无法保证完整性和正确性,除中国大陆外,其他国家和地区还是建议用户使用AT+CSTT或者AT+SAPBR命令主动设置正确的APN
1) 如果在中国大陆使用中国移动的公网卡,根据应用场景不同,可选是否设置APN
A. 如果socket单连接,在AT+CGATT?附着上数据网络之后,可以不设置APN,直接使用AT+CIPSTART命令去连接服务器
2) 如果在中国港澳台或者国外使用,请咨询SIM卡供应商获取APN信息,使用AT+CSTT或者AT+SAPBR命令主动去设置正确的APN
3) 如果是专网卡,无论在什么国家和地区使用,请咨询SIM卡供应商获取APN信息,使用AT+CSTT或者AT+SAPBR命令主动去设置正确的APN
2. Luat版本,固件包含各国公网APN列表,但是列表无法保证完整性和正确性,除中国大陆外,其他国家和地区还是建议用户使用link.setApn(apn, userName, password)主动设置正确的APN
1) 如果在中国大陆使用中国移动的公网卡,可以不主动设置APN
2) 如果在中国港澳台或者国外使用,请咨询SIM卡供应商获取APN信息,使用link.setApn(apn, userName, password)主动去设置正确的APN
3) 如果是专网卡,无论在什么国家和地区使用,请咨询SIM卡供应商获取APN信息,使用link.setApn(apn, userName, password)主动去设置正确的APN
参考10.1章节
模块的主频是有限的,如果一直频繁收发数据,CPU频繁的处理数据收发,肯定会导致对其他任务的处理有延时。
如果是Luat版本二次开发,这种表现会更加明显,因为所有Luat应用是一个单task应用,频繁的收发数据,会导致这个单task在频繁的处理数据收发消息,从而影响其他功能的及时响应。可参考:http://oldask.openluat.com/article/930 辅助理解
UDP协议的socket不支持长连接,TCP协议的socket支持长连接;长连接需要在代码中实现断开自动重连的控制逻辑,以及实现定时发送心跳的业务逻辑
UDP协议本身没有可靠性保证,所以不存在快发慢发之说,可以认为UDP协议的socket一直是快发模式
TCP协议发送数据时,数据发送出去之后,必须等到服务器返回TCP ACK包,才认为数据发送成功,在网络较差的情况下,这种ACK确认就会导致发送过程很慢。从而导致用户程序后续的AT处理逻辑一直处于等待状态。例如执行AT+CIPSEND动作发送一包数据后,接下来要执行AT+QTTS播放TTS,但是CIPSEND一直等了1分钟才返回SEND OK,这时AT+QTTS就会一直等待1分钟,可能不是程序中想看到的。此时就可以设置为快发模式,AT+CIPSEND可以立即返回一个结果,此结果表示“数据是否被缓冲区所保存”,从而不影响后续其他AT指令的及时执行
AT版本可以通过AT+CIPQSEND指令、Luat版本可以通过socket.setSendMode接口设置发送模式为快发或者慢发
快发模式下,在core中有一个1460*7=10220字节的缓冲区,要发送的数据首先存储到此缓冲区,然后在core中自动循环发送。如果此缓冲区已满,则AT+CIPSEND会直接返回ERROR,socket:send接口也会直接返回失败
同时满足如下几种条件,适合使用快发模式:
任何数据格式都支持
参考:http://oldask.openluat.com/article/61
参考:http://oldask.openluat.com/article/61
不支持websocket
不可以做server使用
因为基站资源有限,如果不发心跳包保活,基站会主动断掉链路,回收资源,模块和服务器无感,并不知道链路已经断开。建议心跳包的频率不要超过4分钟,一般都是建议使用2分钟
能收到提示的情况,通常是服务器主动断开连接
不能收到提示的情况,可能是链路被基站断开,或者其他意外情况导致【例如服务器网线被拔掉】,模块和服务器无感知;此时只能通过发送数据超时来感知
运营商按照ip包来统计流量,ip包包含:ip包头+tcp包头+用户数据,以IPv4为例:
ip包头包含固定的20字节+可选的4字节,至少20字节
tcp包头包含固定的20字节+可选的4字节,至少20字节
用户数据就是用户能够感知到的数据内容了,如果直接使用socket,就是用户感知的数据;如果使用http、mqtt、ssl,这部分数据就不是用户能够感知的原始数据了,http会加上http包头,mqtt会加入mqtt的包裹部分,ssl会加密数据
tcp数据收发时,有ack确认机制,例如设备发数据给服务器后,还会收到服务器返回的tcp ack包,这个tcp ack包(至少40字节)也是计算在流量之内的。接收到服务器下发的数据时,设备也会回复一个tcp ack包,同样这个ack包仍然计算在流量之内
另外,socket连接以及断开连接,都有多次数据收发,这部分也会消耗流量
例如有一个tcp socket连接,连接成功后,每分钟设备发送2字节的心跳数据到服务器,服务器收到数据后,再回复2字节的心跳应答数据。这个过程中,每分钟消耗的流量至少有42(设备发送)+40(服务器回复ack)+42(服务器发送)+40(设备回复ack)=164字节,实际处理中,服务器回复ack和服务器发送可能合并成一个IP包42字节,这样的话,至少也要42+42+40 = 124字节。这是最简单的算法,实际应用中,还要考虑到重传、包头中的可选字节,应该会比这里计算的流量多一些。如果要准确计算,建议在服务器端用wireshark抓包分析
另外一个常见的例子是,为什么通过http下载一个文件,实际消耗的流量比文件本身要多呢?跟上个例子类似,文件本身大小仅仅是用户数据,除了用户数据外,还有如下几部分的流量消耗:
2G模块不支持IPv6
4G模块支持IPv6协议,rndis和ppp应用也支持了IPv6,但是Luat版本二次开发和AT版本tcp、http、mqtt指令没有使用IPv6
模块激活pdp后,模块端显示的ip地址是运营商分配的内网ip
模块与服务器连接成功后,在服务器端显示的ip地址是运营商分配的公网ip地址
对于同一个模块来说,这两个ip地址都是会变化的,例如同一个模块:
现在的2G网络环境无法保证"任何时间任何地点,都能及时成功的传输数据",延时和发送失败的问题,肯定是存在的,如果要比较完美的行驶轨迹,需要在应用层设计好数据缓存和数据补传工作,注意事项如下:
确认下是否收发数据前是否唤醒了模块
支持,TLSV1.2
支持的http连接总数有限,参考12.9章节
建议一个http连接返回请求结果之后,再去请求下一个连接;不要使用循环定时器方式不断的发起新的http请求
任何数据格式都支持
检查一下是否忘记设置了"Content-Type: application/json"请求头
参考:http://oldask.openluat.com/article/939
AT版本:有缓存机制,内存中有一个的缓冲区(2G模块300KB,4G模块319499字节),收到数据后,插入此缓冲区,然后通过AT口输出urc,提示收到的数据长度;缓冲区满之后,再收到新数据,会丢弃新收到的数据,并通过AT口输出urc提示出错;需要读取数据时,发送AT+HTTPREAD命令读取,可分段读取,也可全部读取
注意:缓冲区位于内存中,断电或者重启后,缓存表中的数据会被清空;虽然缓冲区可以缓存很多数据,但是建议收到数据时,通过AT+HTTPREAD及时读取出来,以防缓冲区满出错
Luat版本:有如下两种缓存机制, http.request接口可以设置使用何种缓存机制,http的demo中有详细示例可供参考
1) 内存缓存:内存中有一个缓冲区,在项目剩余可用内存的范围内,此缓冲区没有大小限制,例如项目可用内存剩余200KB,则此缓冲区的理想最大值是200KB;收到的数据都会缓存到此缓冲区,如果收到的数据超过缓冲区大小,会导致内存不足重启;数据接收完整后,通过回调函数传出缓冲区数据,供用户应用脚本使用
注意:缓冲区位于内存中,断电或者重启后,缓冲区中的数据会被清空;如果接收的数据过多,不建议使用内存缓存的机制,可能会导致内存不足重启
2) 文件缓存:接收到的数据可以保存在文件中,在文件系统剩余空间的范围内,此文件没有大小限制,例如项目剩余文件系统空间200KB,则此文件的理想最大值是200KB;收到的数据都会保存到此文件中,如果收到的数据文件最大值,会导致保存失败,新数据被丢弃;数据接收完整后,通过回调函数传出文件完整路径,供用户应用脚本使用
注意:文件位于文件系统中,断电或者重启后,文件不会被自动清空删除;如果文件已经不再使用,一定要通过os.remove接口将文件删除。否则会一直占用文件系统空间,导致可用文件系统空间变小
支持,TLSV1.2
参考:http://doc.openluat.com/article/625/0
合宙有一个lbsmqtt.airm2m.com:1884的broker,没有网页端控制页面,可以用模块和mqtt.fx客户端配合测试
有,每个设备有clientid、username、password
不允许重复,重复的话,服务器会踢掉上一个相同id的设备
订阅的主题支持通配符,所以建议订阅的主题复杂且不易被猜;建议使用自建服务器,或者项目之间隔离,公网broker不可靠
参考:http://doc.openluat.com/article/600/0
应用允许的情况下,建议使用Qos0,Qos1和Qos2会加重网络负担,4G网络还好,特别是2G网络,在网络拥堵和较差的情况下,数据传输的次数越多,掉线的概率就会越高
需要转义处理,参考:http://oldask.openluat.com/article/122
注意:缓存表位于内存中,断电或者重启后,缓存表中的数据会被清空;虽然缓存表可以缓存很多数据,但是建议收到数据时,还是要及时读取出来;缓存表不断缓存数据,会占用大量内存,在项目内存紧张的情况下,很容易出现内存不足问题导致重启
参考:http://oldask.openluat.com/article/916
支持,但是需要用户自己开发,没有提供官方例程和lib文件
开发者伙伴发布了一些文章在ask网站,仅供参考,不保证正确和稳定性
华为云:http://oldask.openluat.com/article/904、http://oldask.openluat.com/article/902、http://oldask.openluat.com/article/903
OneNET:http://oldask.openluat.com/article/56、http://oldask.openluat.com/article/893、http://oldask.openluat.com/article/179
百度云、腾讯云:http://oldask.openluat.com/article/177
有一个客户陆续反映此问题,目前还没有定位到根本原因,可按照如下方式协助确认此问题:
在定位出根本原因之前,可通过如下方式规避处理:在阿里云上删除此设备,然后再重新录入
目前2G网络环境在逐步恶化,在网络较好的情况下,24小时出现10次以内的掉线【仅仅作为经验值参考】都可以认为正常,如果掉线率太高,需要日志分析,如果不方便抓日志,可以按照如下方式处理后,对比看下是否有改善:
阿里云网站异常信息 | 模块动作 |
---|---|
Device disconnect | 发送了disconnect报文,可能是逻辑问题,导致异常发送了disconnect报文,需要脚本日志文件分析【2G模块2.3.5版本之前的部分版本脚本lib,存在一个bug,可能会导致此问题,建议更新到2.3.5以及之后的版本】 |
Connectoin reset by peer | 模块发送超时失败,没有断开mqtt连接,直接断开了socket【可参考16.5章节优化】 |
keepalive timeout | 模块发送mqtt心跳超时,被服务器断开【可参考16.5章节优化】 |
kicked by the same device | 有两种可能性: 1、存在相同client id的设备,默认使用模块imei作为client id,可能是imei重复,可参考6.2章节确认下是否模块imei为默认值 2、设备在线状态下,发生了重启,重启后成功连接阿里云【如果使用了errDump功能模块,可参考22.3章节检查下是否有异常信息上报】 |
一机一密的三元组信息为:ProductKey、DeviceName、DeviceSecret
一型一密的三元组信息为:ProductKey、ProductSecret、DeviceName
一型一密的三元组信息为:ProductKey、ProductSecret、DeviceName
ProductKey和ProductSecret可以直接固化在代码中
DeviceName建议直接使用模块的IMEI,也可以使用MCU端的一个唯一ID,只要这个ID在同一个ProductKey下是唯一的即可
DeviceSecret的批量写入,详细说明如下:
下载http://www.openluat.com/Product/file/rda8955/core_src.7z,参考:cust_src\elua\lib\crypto\src\aliyun_iot_common_hmac.c文件中的aliyun_iot_common_hmac_md5接口
目前合宙的2G和4G模块都支持基站定位,此服务免费
模块正常联网后,搜索附近的小区信息,上报给后台;后台查询小区经纬度,并结合信号强度等因素进行计算(三角定位原理),最后返回计算出来的经纬度给模块
搜索到的小区越多,定位的精度越高;一般来说,城市中心定位精度比郊区和农村定位精度高,城市中心的定位精度在几十米到几百米不等,郊区和农村的定位精度更低,可能会有几千米甚至更多的误差
搜索到的小区越多,定位的精度越高;一般来说,城市中心定位精度比郊区和农村定位精度高,城市中心的定位精度在几十米到几百米不等,郊区和农村的定位精度更低,可能会有几千米甚至更多的误差
因基站定位请求数据太多,为了保证iot后台运行的稳定性,不再保存请求记录,如果实在有查询需求,联系合宙技术支持人员处理
不能,没有国外的基站数据库
目前仅:Air800、Air801、Air530支持
其余模块例如Air720G如果要支持GPS,可以采用Air720G+Air530方案,使用Luat二次开发实现
目前仅:Air800、Air801、Air530支持
其余模块例如Air720G如果要支持GPS,可以采用Air720G+Air530方案,使用Luat二次开发实现
参考:https://www.jianshu.com/p/f52e9a52cc11
参考:http://oldask.openluat.com/article/963
gps.setNmeaMode(2, function(nmeaItem) log.info("nmea", nmeaItem) end)
参考:http://oldask.openluat.com/article/32
有LNA低噪声放大器
卫星距离地球有33000km,所以高程差几十米很正常。几十米相对于33000km,真的不算什么。如果要求精确,一般个人建议:
参考:http://oldask.openluat.com/article/70
可视卫星是当前区域,接收条件良好情况下,应该可以收到卫星信号的卫星
可用卫星是当前已经收到信号并正在使用参与定位的卫星
视具体情况而定,建议用gga,信息相对更全面
参考:http://www.openluat.com/Product/file/800/NMEA%E6%95%B0%E6%8D%AE%E6%A0%BC%E5%BC%8F%E8%AF%B4%E6%98%8E.docx
不支持,推荐选型:unicorecomm um482;ublox f9p
不支持,可以使用Luat开发方式自行对接ntrip协议
ntrip协议参考:https://blog.csdn.net/hanford/article/details/53025771
可以使用如下函数(但是注意,没有考虑到地球曲率,计算结果存在误差。建议使用高德地图等提供的api在服务端计算
-[[
函数名:diffofloc
功能 :计算两对经纬度之间的直线距离(近似值)
参数:
latti1:纬度1(度格式,例如31.12345度)
longti1:经度1(度格式)
latti2:纬度2(度格式)
longti2:经度2(度格式)
typ:距离类型
返回值:typ如果为true,返回的是直线距离(单位米)的平方和;否则返回的是直线距离(单位米)
]]
function diffofloc(latti1, longti1, latti2, longti2,typ) --typ=true:返回a+b ; 否则是平方和 local I1,I2,R1,R2,diff,d I1,R1=smatch(latti1,"(%d+)%.(%d+)") I2,R2=smatch(latti2,"(%d+)%.(%d+)") if not I1 or not I2 or not R1 or not R2 then return 0 end R1 = I1 .. ssub(R1,1,5) R2 = I2 .. ssub(R2,1,5) d = tonumber(R1)-tonumber(R2) d = (d*111-(d*111%100))/100 if typ == true then diff = (d>0 and d or (-d)) else diff = d * d end I1,R1=smatch(longti1,"(%d+)%.(%d+)") I2,R2=smatch(longti2,"(%d+)%.(%d+)") if not I1 or not I2 or not R1 or not R2 then return 0 end R1 = I1 .. ssub(R1,1,5) R2 = I2 .. ssub(R2,1,5) d = tonumber(R1)-tonumber(R2) if typ == true then diff = diff + (d>0 and d or (-d)) else diff = diff + d*d end --diff = diff + d*d print("all diff:", diff) return diff
end
通常是因为卫星、接收器、天线等多重因素导致,建议服务端从算法层面去过滤这种漂移;设备端也可以通过振动传感器判断静止状态、wifi判断wifi变化率较低、基站变化率较低等多种手段,较少不必要的GPS位置上报来过滤漂移
使用基站定位
可以
建议在服务器端实现。因为加偏算法是很复杂的浮点运算,模块输出结果可能和实际情况有差;如果需要更高的加偏结果,可以使用百度/高德等地图提供的api
高德、腾讯;(百度是GCJ02又转换为BD09,所以不能直接使用GCJ02)
bing maps(非bing地图),google maps(非gogole 地图)
因AT版本不支持gpio操作,故本章节讨论的是Luat版本下的gpio问题
最快检测20ms
中断越频繁,中断检测的及时性越低;可参考:http://oldask.openluat.com/article/930辅助理解
参考模块硬件手册“管脚描述”章节的表格,表格中表明可以用做gpio的都可以使用
建议把gpio状态写入nvm,万一异常重启,根据nvm保存的状态配置gpio
Air720系列4G模块:http://doc.openluat.com/article/600/0
因AT版本需要外接MCU主控,MCU可自行实现硬件看门狗的功能,故本章节不讨论AT版本的硬件看门狗问题,仅讨论Luat版本下的合宙官方硬件看门狗问题
看门狗购买链接:打开:m.openluat.com,进入“周边工具”页面,选择“看门狗Air153B”
看门狗硬件设计以及工作原理参考:http://www.openluat.com/Product/file/rda8955/Luat%E4%B8%93%E7%94%A8%E7%9C%8B%E9%97%A8%E7%8B%97%E8%8A%AF%E7%89%87%E8%AE%BE%E8%AE%A1%E6%89%8B%E5%86%8CV1.6.pdf
Luat软件代码:
require"wdt"
wdt.setup(pio.P0_30, pio.P0_31)
--根据实际的硬件连接,自行修改这两个管脚的gpio id
看门狗购买链接:打开:m.openluat.com,进入“周边工具”页面,选择“看门狗Air153B”
有,可以保证无人值机设备系统的稳定性,避免人肉运维的尴尬
参考:http://oldask.openluat.com/article/74
当模块的pwrkey没有接地,它可以使模块开机;如果模块pwrkey接地,则该脚悬空
有如下两种方法:
不能,固件已经固化在芯片中
可以,软件和硬件需要自行设计
2G模块的core中有一种死循环软件看门狗机制,如果脚本中一直在死循环执行某段代码,2G模块半分钟会软件看门狗重启【重启原因值为poweron reason 8】
4G模块的0027以及之后版本的core+2.2.8以及之后版本的脚本lib,实现了一种死循环软件看门狗机制,如果脚本中一直在死循环执行某段代码,4G模块1分钟会软件看门狗重启【没有特定的重启原因值,重启原因值为普通的软件重启3,重启前的日志会输出SoftDog Restart】
除此之外,还有一种常见的业务逻辑软件看门狗,此软件看门狗的基本实现原理为:根据业务逻辑,连续一段时间和服务器通信不正常,则控制软重启;示例代码如下:
oftwareDogCo = sys.taskInit(function()
while true do
if sys.wait(300000) == nil then --连续5分钟没有喂狗,根据项目需求自行修改时长
sys.restart("logic exception software dog timeout")
end
end
end)
--如下代码是喂狗代码,根据产品业务逻辑,在适当的位置去调用
coroutine.resume(softwareDogCo,"feed")
如何去确认这个“适当的位置”呢?下面列举两种常见示例:
下图为一个不规范的硬件看门狗外围电路
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ioPgZXbk-1619422566533)(https://oldask.openluat.com/image/show/attachments-2019-12-JkFUgt7d5df33e2cbefac.png “undefined”)]
下图为参考硬件连接图
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AhXbhPHL-1619422566534)(https://oldask.openluat.com/image/show/attachments-2019-12-FR6D7uzD5df33e539faaa.png “undefined”)]
不规范的电路图中,看门狗供电VDDIO没有串联二极管,会导致反复重启模块。因为二极管是为了防止单片机的供电漏掉,如果没有二极管,在VDDIO掉电时会将看门狗的电源拉掉,导致看们关机导致拉低RESET,引起模块重启
因AT版本需要外接MCU主控,MCU可自行实现硬件看门狗的功能,故本章节不讨论AT版本的硬件看门狗问题,仅讨论Luat版本下的合宙官方硬件看门狗问题
看门狗购买链接:打开:m.openluat.com,进入“周边工具”页面,选择“看门狗Air153B”
看门狗硬件设计以及工作原理参考:http://www.openluat.com/Product/file/rda8955/Luat%E4%B8%93%E7%94%A8%E7%9C%8B%E9%97%A8%E7%8B%97%E8%8A%AF%E7%89%87%E8%AE%BE%E8%AE%A1%E6%89%8B%E5%86%8CV1.6.pdf
Luat软件代码:
require"wdt"
wdt.setup(pio.P0_30, pio.P0_31)
--根据实际的硬件连接,自行修改这两个管脚的gpio id
有,可以保证无人值机设备系统的稳定性,避免人肉运维的尴尬
参考:http://oldask.openluat.com/article/74
当模块的pwrkey没有接地,它可以使模块开机;如果模块pwrkey接地,则该脚悬空
有如下两种方法:
不能,固件已经固化在芯片中
可以,软件和硬件需要自行设计
2G模块的core中有一种死循环软件看门狗机制,如果脚本中一直在死循环执行某段代码,2G模块半分钟会软件看门狗重启【重启原因值为poweron reason 8】;4G模块暂时没有这种功能
除此之外,还有一种常见的业务逻辑软件看门狗,此软件看门狗的基本实现原理为:根据业务逻辑,连续一段时间和服务器通信不正常,则控制软重启;示例代码如下:
oftwareDogCo = sys.taskInit(function()
while true do
if sys.wait(300000) == nil then --连续5分钟没有喂狗,根据项目需求自行修改时长
sys.restart("logic exception software dog timeout")
end
end
end)
--如下代码是喂狗代码,根据产品业务逻辑,在适当的位置去调用
coroutine.resume(softwareDogCo,"feed")
如何去确认这个“适当的位置”呢?下面列举两种常见示例:
中国电信的短信业务要回落到2G或者3G网络下才能使用,但是Air720H不支持中国电信的2G和3G网络频段,所以不支持中国电信的短信业务;
支持中国移动和中国联通的短信业务
参考:http://oldask.openluat.com/article/15
errDump功能模块对“量产投放市场的设备,远程调试初步定位问题”至关重要, 强烈建议客户一定要使用此功能,加载此功能模块后,具备如下功能:
登录 iot.openluat.com,随便选择一个产品,点进去,点击左侧的“查询debug”菜单,输入设备imei,选择开始日期、结束日期,点击搜索即可
友情提醒:开始和结束日期的跨度越大,搜索速度越慢
检查下模块板和主控板的参考地是否有电势差,曾经有一个客户的板子如下图设计,通过主控板给模块供电,然后只通过上图排插针通插座的方式连接主板串口,导致地连接的阻抗增加,在弱信号下大功率发射时,会导致模块板和主控板的参考地有电势差,导致串口通信异常
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uONlTzX8-1619422566534)(https://oldask.openluat.com/image/show/attachments-2019-12-GqrKcQmE5de4aebb2f099.png “undefined”)]
参考:http://oldask.openluat.com/article/924
4G模块不支持喇叭;2G模块支持的喇叭规格为:8Ω,1W、8Ω,2W、8Ω,3W…,只要8Ω,大于等于1W都支持
0037以及之后版本的8955F和8955F_FLOAT固件,改善了tts播放音质,模块需要选用Air202F、Air268F等64Mb flash的型号;因flash空间问题,非8955F的固件,无法改善
AT固件不方便下载旧版本固件,如果需要,直接联系合宙技术支持人员
2G模块Luat旧版本core固件的下载链接为:http://www.openluat.com/Product/file/rda8955/oldCore/core_VXXXX.zip; VXXXX 替换为特定的版本号,例如V0025
2G模块Luat旧版本core固件的下载链接为:http://www.openluat.com/Product/file/rda8955/oldScript/script_LuaTask_VX.Y.Z.zip ;VX.Y.Z替换为特定的版本号,例如V2.3.5
4G模块Luat旧版本core固件的下载链接为:http://www.openluat.com/Product/file/asr1802/oldCore/core_VXXXX.zip ;VXXXX替换为特定的版本号,例如V0025
4G模块Luat旧版本core固件的下载链接为:http://www.openluat.com/Product/file/asr1802/oldScript/script_LuaTask_VX.Y.Z.zip ;VX.Y.Z替换为特定的版本号,例如V2.2.7
参考:http://doc.openluat.com/article/600/0
不需要手动添加设备到产品的设备列表中,使用Luat版本二次开始时,update、lbsLoc都要用到产品的productKey,当设备第一次成功使用update或者lbsLoc功能时【注意:此处的成功使用,update成功指的是从云平台上成功下载了升级包、lbsLoc成功指的是获取到了基站对应的经纬度】,会自动将设备模块的imei添加到productKey对应产品的设备列表中
把模块IMEI发给合宙技术支持人员查询
如果查询不到,说明设备还没有成功上报过,参考26.2.1处理后才能查询到归属产品,此情况不影响设备正常使用update和lbsLoc功能,设备成功使用过一次update或者lbsLoc功能后,就可以在云平台查到归属产品了
客户向合宙采购4G模块时,如果采购人员没有告知合宙这批模块放在iot.openluat.com上的哪个产品下,则合宙会以采购人的手机号为账号,默认密码888888,创建一个“Air720X标准模块”的产品,此次采购的所有模块都会放在这个产品下
通常采购人员和开发人员并不是同一个人,开发人员拿到模块,如果使用Lua版本开发,用到了合宙服务器提供的基站定位、远程升级功能,就会在iot.openluat.com上开发人员自己的账号下,创建一个新产品【假设产品名为“模块Lua开发”】,此时就会出现main.lua中的PRODUCT_KEY和模块归属的产品ProductKey不一致的问题,导致基站定位和远程升级功能无法正常使用
遇到这种问题,需要把“Air720X标准模块”产品下的所有设备转移到“模块Lua开发”产品下,操作步骤如下:
要转移的设备必须属于源产品,如果批量转移的设备中有些设备不属于源产品,网站不会报错,会忽略这些不属于源产品的设备,仅仅转移属于源产品的设备
此功能不对外开放,告知合宙技术支持人员:源账号、产品ProductKey、目的账号,由合宙技术支持人员处理
使用chrome浏览器打开http://tcplab.openluat.com,如下示例所示
Openluat TCP Lab
服务器建立在[180.97.81.180:51329] 2019/12/20 上午10:30:40
设备通过tcp连接180.97.81.180的51329端口即可
建议使用chrome浏览器
模块发送0x7F的字符,会导致平台断开
设备和平台之间连续3分钟没有数据通信,会导致平台断开
除此之外,因为该平台为测试平台,无法保证稳定性,可能平台存在bug导致断开
cjson
检查数据的完整性和正确性;可在第三方json解析网站对比测试
在非协程中,解析出错时,如果没有判断解析结果,直接使用解析后的table,会导致软件异常重启,如果使用了errDump功能模块,软件重启后,会通过errDump将异常信息上报到调试服务器;如果不想异常重启,可参考如下代码设计
local tDecodedData,result,errInfo = json.decode(data)
if result and type(tDecodedData)==“table” then
--使用tDecodedData
else
--可以使用errDump功能模块将错误信息上报到调试服务器
--errDump.appendErr(errInfo)
end
在协程中,解析出错时,如果没有判断解析结果,直接使用解析后的table,会导致协程异常退出,不会引起软件重启,如果使用了errDump功能模块,会通过errDump将异常信息上报到调试服务器
检查一下是否忘记设置了"Content-Type: application/json"请求头
需要转义处理,参考:http://oldask.openluat.com/article/122
&esnp; 因内存限制,2G模块支持的最大分辨率为240*320;如果想要更大分辨率lcd,建议使用hmi usart等串口屏,此情况需要自行开发软件实现,不能使用core提供的ui库
4G模块还不支持UI功能
参考:http://doc.openluat.com/article/600/0
参考qrcode的demo,scriptLuaTask/demo/qrcode
参考:http://doc.openluat.com/article/600/0
参考:http://doc.openluat.com/article/600/0、http://doc.openluat.com/article/600/0
2G模块RAM总空间为1MB
4G 720D、720H、720G、720SX系列的模块RAM总空间为1.5MB
4G 720UX系列的模块RAM总空间为1180KB
collectgarbage(“count”)返回已用RAM空间,单位为KB;注意:
NVM是基于文件系统实现的一个功能模块,可用于存储小数据量的简单键值对数据,详情参考:http://doc.openluat.com/article/600/0 ;如果存储大数据量数据,参考fs的demo直接操作文件
文件读取不存在权限问题,按照如下顺序排查问题
支持,但是无法挂载文件系统,只能使用spi接口进行读写数据存储管理
不支持
如果因为电脑误使用RNDIS造成了SIM卡流量损失,可以在电脑的网络连接中禁用RNDIS网卡
参考:http://doc.openluat.com/article/600/0
9.5
4G模块支持电话的呼入、呼出、接听;但是因为没有语音编解码芯片,所以听不到通话声音
Air720G仅支持联通3G和移动4G网络
目前,中国移动的语音通话业务在如下几种网络状态下可用:
require "cc"
sys.subscribe("CALL_INCOMING", function(num) cc.accept(num) end)
ril.regUrc("RING",function()ril.request("ATA") end)
参考:http://doc.openluat.com/article/600/0
Flash:128Mb(16MB)
DDRRAM:256Mb(32MB)
主频:600MHz
参考:http://doc.openluat.com/article/600/0
sys.taskInit创建的task实际上是Lua中的协程,无优先级之分,协程的挂起和运行完全由用户自己编写的脚本来主动控制,当前协程运行过程中,只能被当前协程中的sys.wait和sys.waitUntil挂起,不会被外部协程挂起
可以使用定时器接口sys.timerStart或者sys.timerLoopStart实现延时,不阻塞任何业务逻辑
也可以在task协程中使用sys.wait或者sys.waitUntil实现延时,仅仅阻塞本task协程
也可以使用rtos.sleep接口实现延时,但是不建议这样使用,因为这个接口会使整个软件系统挂起
详情参考:http://doc.openluat.com/article/600/0
在123.openluat.com中搜索证书,可查到具体模块的对应证书
没有
模块都没有入网证书,只有终端产品才允许做入网认证,我们的模块本身是可以认证通过的,已经有几家客户的终端产品成功做过入网认证
4G模块终端产品,如果要做入网测试,参考:http://doc.openluat.com/article/600/0
参考:http://doc.openluat.com/article/600/0
参考:http://doc.openluat.com/article/600/0
WIN7参考:http://doc.openluat.com/article/600/0
WIN10参考:http://doc.openluat.com/article/600/0
参考:http://doc.openluat.com/article/600/0
参考:http://doc.openluat.com/article/600/0
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。