LuatOS-SOC接口文档(air780E)--mobile - 蜂窝网络

示例

-- 简单演示log.info("imei", mobile.imei())
log.info("imsi", mobile.imsi())
local sn = mobile.sn()
if sn thenlog.info("sn",   sn:toHex())
end
log.info("muid", mobile.muid())
log.info("iccid", mobile.iccid())
log.info("csq", mobile.csq())
log.info("rssi", mobile.rssi())
log.info("rsrq", mobile.rsrq())
log.info("rsrp", mobile.rsrp())
log.info("snr", mobile.snr())
log.info("simid", mobile.simid())

常量

常量

类型

解释

mobile.UNREGISTER

number

未注册

mobile.REGISTERED

number

已注册

mobile.SEARCH

number

正在搜索中

mobile.DENIED

number

注册被拒绝

mobile.UNKNOW

number

未知

mobile.REGISTERED_ROAMING

number

已注册,漫游

mobile.SMS_ONLY_REGISTERED

number

已注册,仅SMS

mobile.SMS_ONLY_REGISTERED_ROAMING

number

已注册,漫游,仅SMS

mobile.EMERGENCY_REGISTERED

number

已注册,紧急服务

mobile.CSFB_NOT_PREFERRED_REGISTERED

number

已注册,非主要服务

mobile.CSFB_NOT_PREFERRED_REGISTERED_ROAMING

number

已注册,非主要服务,漫游

mobile.CONF_RESELTOWEAKNCELL

number

小区重选信号差值门限,需要飞行模式设置

mobile.CONF_STATICCONFIG

number

网络静态模式优化,需要飞行模式设置

mobile.CONF_QUALITYFIRST

number

网络切换以信号质量优先,需要飞行模式设置,0不开,1开启,2开启并加速切换,功耗会增加

mobile.CONF_USERDRXCYCLE

number

LTE跳paging,需要飞行模式设置,谨慎使用,0是不设置,1~7增大或减小DrxCycle周期倍数,1:1/8倍 2:1/4倍 3:1/2倍 4:2倍 5:4倍 6:8倍 7:16倍,8~12配置固定的DrxCycle周期,仅当该周期大于网络分配的DrxCycle周期时该配置才会生效,8:320ms 9:640ms 10:1280ms 11:2560ms 12:5120ms

mobile.CONF_T3324MAXVALUE

number

PSM模式中的T3324时间,单位S

mobile.CONF_PSM_MODE

number

PSM模式开关,0关,1开

mobile.CONF_CE_MODE

number

attach模式,0为EPS ONLY 2为混合,遇到IMSI detach脱网问题,设置为0,注意设置为EPS ONLY时会取消短信功能

mobile.CONF_SIM_WC_MODE

number

SIM写入次数的配置和读取

mobile.PIN_VERIFY

number

验证PIN码操作

mobile.PIN_CHANGE

number

更换PIN码操作

mobile.PIN_ENABLE

number

使能PIN码验证

mobile.PIN_DISABLE

number

关闭PIN码验证

mobile.PIN_UNBLOCK

number

解锁PIN码

mobile.imei(index)

获取IMEI

参数

传入值类型

解释

int

编号,默认0. 在支持双卡的模块上才会出现0或1的情况

返回值

返回值类型

解释

string

当前的IMEI值,若失败返回nil

例子


mobile.imsi(index)

获取IMSI

参数

传入值类型

解释

int

编号,默认0. 在支持双卡的模块上才会出现0或1的情况

返回值

返回值类型

解释

string

当前的IMSI值,若失败返回nil

例子


mobile.sn()

获取SN

参数

返回值

返回值类型

解释

string

当前的SN值,若失败返回nil. 注意, SN可能包含不可见字符

例子

-- 注意, 出厂未必有写SN
-- 一般用途的唯一id, 可以用mobile.imei()代替
-- 如需要真正的唯一ID, 使用 mcu.unique_id()

mobile.muid()

获取MUID

参数

返回值

返回值类型

解释

string

当前的MUID值,若失败返回nil

例子


mobile.iccid(id)

获取或设置ICCID

参数

传入值类型

解释

int

SIM卡的编号, 例如0, 1, 默认0

返回值

返回值类型

解释

string

ICCID值,若失败返回nil

例子


mobile.number(id)

获取手机卡号,注意,只有写入了手机号才能读出,因此有可能读出来是空的

参数

传入值类型

解释

int

SIM卡的编号, 例如0, 1, 默认0

返回值

返回值类型

解释

string

number值,若失败返回nil

例子


mobile.simid(id)

获取当前SIM卡槽,或者切换卡槽

参数

传入值类型

解释

int

SIM卡的编号, 例如0, 1, 如果支持双卡,比如EC618,可以填2来自适应,但是会占用掉4个IO(gpio4/5/6/23)。如果不填就直接读取当前卡槽

boolean

是否优先用SIM0,只有SIM卡编号写2自适应才有用!!!。true优先用SIM0,false则由具体平台决定,支持双卡双待SIM0优先,不支持的是上一次检测到的优先,默认是false,必须在开机就配置,否则就无效了

返回值

返回值类型

解释

int

当前sim卡槽编号,若失败返回-1

例子

mobile.simid(0) -- 固定使用SIM0
mobile.simid(1) -- 固件使用SIM1
mobile.simid(2) -- 自动识别SIM0, SIM1, 优先级看具体平台
mobile.simid(2, true) -- -- 自动识别SIM0, SIM1, 且SIM0优先
-- 提醒, 自动识别是会增加时间的

mobile.simPin(id,operation,pin1,pin2)

检测当前SIM卡是否准备好,对SIM卡的PIN码做相关操作

参数

传入值类型

解释

int

SIM卡的编号, 例如0, 1, 支持双卡双待的才需要选择

int

PIN码操作类型,只能是mobile.PIN_XXXX,不操作就留空

string

更换pin时操作的pin码,或者验证操作的pin码,或者解锁pin码时的PUK,4~8字节

string

更换pin码操作时的新的pin码,解锁pin码时的新PIN,4~8字节

返回值

返回值类型

解释

boolean

当无PIN操作时,返回SIM卡是否准备好,有PIN操作时,返回是否成功

例子

local cpin_is_ready = mobile.simPin() -- 当前sim卡是否准备好,一般返回false就是没卡
local succ = mobile.simPin(0, mobile.PIN_VERIFY, "1234")	-- 输入pin码验证

mobile.rtime(time, auto_reset_stack)

设置RRC自动释放时间间隔,当开启时后,遇到极弱信号+频繁数据操作可能会引起网络严重故障,因此需要额外设置自动重启协议栈

参数

传入值类型

解释

int

RRC自动释放时间,等同于Air724的AT+RTIME,单位秒,写0或者不写则是停用,不要超过20秒,没有意义

boolean

网络遇到严重故障时尝试自动恢复,和飞行模式/SIM卡切换冲突,true开启,false关闭,留空时,如果设置了时间则自动开启。原厂优化过协议栈后不需要了。本参数废弃

返回值

返回值类型

解释

nil

无返回值

例子


mobile.setAuto(check_sim_period, get_cell_period, search_cell_time, auto_reset_stack, network_check_period)

设置一些辅助周期性或者自动功能,目前支持SIM卡暂时脱离后恢复,周期性获取小区信息,网络遇到严重故障时尝试自动恢复

参数

传入值类型

解释

int

SIM卡自动恢复时间,单位毫秒,建议5000~10000,和飞行模式/SIM卡切换冲突,不能再同一时间使用,必须错开执行。写0或者不写则是关闭功能

int

周期性获取小区信息的时间间隔,单位毫秒。获取小区信息会增加部分功耗。写0或者不写则是关闭功能

int

每次搜索小区时最大搜索时间,单位秒。不要超过8秒

boolean

网络遇到严重故障时尝试自动恢复,和飞行模式/SIM卡切换冲突,true开启,false关闭,开始状态是false,留空则不做改变

int

设置定时检测网络是否正常并且在检测到长时间无网时通过重启协议栈来恢复,无网恢复时长,单位ms,建议60000以上,为网络搜索网络保留足够的时间,留空则不做更改

返回值

返回值类型

解释

nil

无返回值

例子


mobile.apn(index, cid, new_apn_name, user_name, password, ip_type, protocol)

获取或设置APN,设置APN必须在入网前就设置好,比如在SIM卡识别完成前就设置好

参数

传入值类型

解释

int

编号,默认0. 在支持双卡的模块上才会出现0或1的情况

int

cid, 默认0,如果要用非默认APN来激活,必须>0

string

新的APN,不填就是获取APN, 填了就是设置APN, 是否支持设置取决于底层实现

string

新的APN的username,如果APN不是空,那必须填写,如果没有留个空字符串””。如果APN是空的,那可以nil

string

新的APN的password,如果APN不是空,那必须填写,如果没有留个空字符串””。如果APN是空的,那可以nil

int

激活APN时的IP TYPE,1=IPV4 2=IPV6 3=IPV4V6,默认是1

int

激活APN时,如果需要username和password,就要写鉴权协议类型,1~3,默认3,代表1和2都尝试一下。不需要鉴权的写0

boolean

是否删除APN,true是,其他都否,只有参数3新的APN不是string的时候才有效果

返回值

返回值类型

解释

string

获取到的默认APN值,失败返回nil

例子

local mobile.apn(0,1,"cmiot","","",nil,0) -- 移动公网卡设置APN为cmiot,一般不用设置
local mobile.apn(0,1,"name","user","password",nil,3) -- 专网卡设置的demo,name,user,password联系卡商获取

mobile.ipv6(onff)

是否默认开启IPV6功能,必须在LTE网络连接前就设置好

参数

传入值类型

解释

boolean

开关 true开启 false 关闭

返回值

返回值类型

解释

boolean

true 当前是开启的,false 当前是关闭的

例子

-- 注意, 开启ipv6后, 开机联网会慢2~3秒

mobile.csq()

获取csq

参数

返回值

返回值类型

解释

int

当前CSQ值, 若失败返回0. 范围 0 - 31, 越大越好

例子

-- 注意, 4G模块的CSQ值仅供参考, rsrp/rsrq才是真正的信号强度指标

mobile.rssi()

获取rssi

参数

返回值

返回值类型

解释

int

当前rssi值,若失败返回0. 范围 0 到 -114, 越小越好

例子


mobile.rsrp()

获取rsrp,参考信号接收功率

参数

返回值

返回值类型

解释

int

当前rsrp值,若失败返回0. 取值范围: -44 ~ -140 ,值越大越好

例子


mobile.rsrq()

获取rsrq,参考信号发送功率

参数

返回值

返回值类型

解释

int

当前rsrq值,若失败返回0. 取值范围: -3 ~ -19.5 ,值越大越好

例子


mobile.snr()

获取snr,信噪比

参数

返回值

返回值类型

解释

int

当前snq值,若失败返回0.范围 0 - 30, 越大越好

例子


mobile.eci()

获取当前服务小区的ECI(E-UTRAN Cell Identifier)

参数

返回值

返回值类型

解释

int

当前eci值,若失败返回-1

例子


mobile.tac()

获取当前服务小区的TAC或者LAC

参数

返回值

返回值类型

解释

int

当前eci值,若失败返回-1. 如果尚未注册到网络,会返回0

例子

-- 本API于 2023.7.9 新增

mobile.enbid()

获取当前服务小区的eNBID(eNodeB Identifier)

参数

返回值

返回值类型

解释

int

当前enbid值,若失败返回-1

例子


mobile.flymode(index, enable)

进出飞行模式

参数

传入值类型

解释

int

编号,默认0. 在支持双卡的模块上才会出现0或1的情况

bool

是否设置为飞行模式,true为设置, false为退出,可选

返回值

返回值类型

解释

bool

原飞行模式的状态

例子


mobile.status()

获取网络状态

参数

返回值

返回值类型

解释

int

当前网络状态,0:网络未注册;1:网络已注册;2:正在搜网中;3:网络注册被拒绝

例子


mobile.getCellInfo()

获取机制信息

参数

返回值

返回值类型

解释

table

包含基站数据的数组

例子

-- 注意: 从2023.06.20开始, 需要主动请求一次reqCellInfo才会有基站数据.--示例输出
--[[
[{"rsrq":-10,"rssi":-55,"cid":124045360,"mnc":17,"pci":115,"earfcn":1850,"snr":15,"rsrp":-85,"mcc":1120,"tdd":0},{"pci":388,"rsrq":-11,"mnc":17,"earfcn":2452,"snr":5,"rsrp":-67,"mcc":1120,"cid":124045331},{"pci":100,"rsrq":-9,"mnc":17,"earfcn":75,"snr":17,"rsrp":-109,"mcc":1120,"cid":227096712}
]
]]mobile.reqCellInfo(60)
-- 订阅
sys.subscribe("CELL_INFO_UPDATE", function()log.info("cell", json.encode(mobile.getCellInfo()))
end)-- 定期轮训式
sys.taskInit(function()sys.wait(3000)while 1 domobile.reqCellInfo(15)sys.waitUntil("CELL_INFO_UPDATE", 15000)log.info("cell", json.encode(mobile.getCellInfo()))end
end)

mobile.reqCellInfo(timeout)

发起基站信息查询,含临近小区

参数

传入值类型

解释

int

超时时长,单位秒,默认15. 最少5, 最高60

返回值

返回值类型

解释

nil

无返回值

例子

-- 参考 mobile.getCellInfo 函数

mobile.reset()

重启协议栈

参数

返回值

例子

-- 重启LTE协议栈
mobile.reset()

mobile.dataTraffic(clearUplink, clearDownlink)

数据量流量处理

参数

传入值类型

解释

boolean

清空上行流量累计值,true清空,其他忽略

boolean

清空下行流量累计值,true清空,其他忽略

返回值

返回值类型

解释

int

上行流量GB

int

上行流量B

int

下行流量GB

int

下行流量B

例子

-- 获取上下行流量累计值
-- 上行流量值Byte = uplinkGB * 1024 * 1024 * 1024 + uplinkB
-- 下行流量值Byte = downlinkGB * 1024 * 1024 * 1024 + downlinkB
local uplinkGB, uplinkB, downlinkGB, downlinkB = mobile.dataTraffic()-- 清空上下行流量累计值
mobile.dataTraffic(true, true)

mobile.config(item, value)

网络特殊配置,针对不同平台有不同的配置,谨慎使用,目前只有EC618

参数

传入值类型

解释

int

配置项目,看mobile.CONF_XXX

int

配置值

返回值

返回值类型

解释

boolean

是否成功

例子

-- EC618配置小区重选信号差值门限,不能大于15dbm,必须在飞行模式下才能用
mobile.flymode(0,true)
mobile.config(mobile.CONF_RESELTOWEAKNCELL, 15)
mobile.config(mobile.CONF_STATICCONFIG, 1) --开启网络静态优化
mobile.flymode(0,false)-- EC618设置SIM写入次数的统计
-- 关闭统计
mobile.config(mobile.CONF_SIM_WC_MODE, 0)
-- 开启统计, 默认也是开启的.
mobile.config(mobile.CONF_SIM_WC_MODE, 1)
-- 读取统计值,异步, 需要通过系统消息SIM_IND获取
sys.subscribe("SIM_IND", function(stats, value)log.info("SIM_IND", stats)if stats == "SIM_WC" thenlog.info("sim", "write counter", value)end
end)
mobile.config(mobile.CONF_SIM_WC_MODE, 2)
-- 清空统计值
mobile.config(mobile.CONF_SIM_WC_MODE, 3)

mobile.getBand(band, is_default)

获取当前使用/支持的band

参数

传入值类型

解释

zbuff

输出band

boolean

true默认支持,false当前支持的,默认是false,当前是预留功能,不要写true

返回值

返回值类型

解释

boolean

成功返回true,失败放回false

例子

local buff = zbuff.create(40)
mobile.getBand(buff) --输出当前使用的band,band号放在buff内,buff[0],buff[1],buff[2] .. buff[buff:used() - 1]

mobile.setBand(band, num)

设置使用的band

参数

传入值类型

解释

zbuff

输入使用的band

int

band数量

返回值

返回值类型

解释

boolean

成功返回true,失败放回false

例子

local buff = zbuff.create(40)
buff[0] = 3
buff[1] = 5
buff[2] = 8
buff[3] = 40
mobile.setBand(buff, 4) --设置使用的band一共4个,为3,5,8,40

mobile.nstOnOff(onoff, uart_id)

RF测试开关和配置

参数

传入值类型

解释

boolean

true开启测试模式,false关闭

int

串口号

返回值

返回值类型

解释

nil

无返回值

例子

mobile.nstOnOff(true, uart.VUART_0)	--打开测试模式,并且用虚拟串口发送结果
mobile.nstOnOff(false) --关闭测试模式

mobile.nstInput(data)

RF测试数据输入

参数

传入值类型

解释

string

or zbuff 用户从串口获取的数据,注意,当获取完所有数据后,需要再传一个nil来作为传输结束

返回值

返回值类型

解释

nil

无返回值

例子

mobile.nstInput(uart_data)
mobile.nstInput(nil)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/126889.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ORANGE室内高尔夫—韩国室内模拟高尔夫原装进口真实体验身临其境

ORANGE室内高尔夫—韩国室内模拟高尔夫 真实体验 身临其境 室内高尔夫的产品优势: 1. 实际高尔夫球场的限制:室内高尔夫可以弥补室外高尔夫球场数量有限的问题,使得更多人能够享受高尔夫运动。 2. 天气和季节的限制:室内高尔夫可…

centos7 部署 Flink

1. 准备 安装的前提是虚拟机里已安装了jdk 去官网下载 Flink 所有版本下载地址:https://archive.apache.org/dist/flink/ 找到下图的安装包,下载即可 下载完后,将其上传至虚拟机的某个地方,本人将其放在 /home/flink/ 下 解压…

【Apache Flink】Flink DataStream API的基本使用

Flink DataStream API的基本使用 文章目录 前言1. 基本使用方法2. 核心示例代码3. 完成工程代码pom.xmlWordCountExample测试验证 4. Stream 执行环境5. 参考文档 前言 Flink DataStream API主要用于处理无界和有界数据流 。 无界数据流是一个持续生成数据的数据源&#xff0…

基于MFC的串口通信(Mscomm)

1、串口通信的概述: 串口是一种重要的通信资源,例如鼠标口、USB接口都是串口。串行端口是CPU和串行设备间的编码转换器。当数据从CPU经过端口发送出去的时候,字节数据会被转为串行的位,在接收数据时,串行的位被转换为…

机器人仿真-gazebo学习笔记(4)xacro和传感器添加

1.xacro简介 URDF文件不具备代码复用的特性(在上一篇文章也能发现,其实左右轮是极其相似的但还是要单独描述),一个复杂的机器人模型会拥有大量了的传感器和关节组件,这时候使用URDF文件就太难阅读了。精简化、可复用、…

学习视频剪辑:如何从指定时段快速抽出视频图片!高效技巧分享

随着数字媒体的普及,越来越多的人开始接触视频剪辑。在视频剪辑过程中,有时候我们需要从指定时段快速抽出视频图片。这不仅可以帮助我们提高剪辑效率,还可以让我们的视频更加丰富多彩。本文将分享一些高效技巧,帮助你轻松实现从指…

Vue路由(router)的安装和使用

Vue路由(router)的安装和使用 安装vue-router插件 第一步:在CMD窗口中,使用命令跳转到vue的安装路径下第二步:输入命令:npm i vue-router3 vue2 要安装 vue-router3 npm i vue-router3 vu3 要安装 vue-ro…

【Python微信机器人】第三篇:使用ctypes调用进程函数和读取内存结构体

目录修整 目前的系列目录(后面会根据实际情况变动): 在windows11上编译python将python注入到其他进程并运行注入Python并使用ctypes主动调用进程内的函数和读取内存结构体使用汇编引擎调用进程内的任意函数利用beaengine反汇编引擎的c接口写一个pyd库,用于实现inl…

Docker安装部署[8.x]版本Elasticsearch+Kibana+IK分词器

文章目录 Docker安装部署elasticsearch拉取镜像创建数据卷创建网络elasticsearch容器,启动!踩坑:虚拟机磁盘扩容 Docker安装部署Kibana拉取镜像Kibana容器,启动! 安装IK分词器安装方式一:直接从github上下载…

IDEA初步入门

1 安装 现在的系统更迭很快,很多软件都只支持win10 和 11了,但我们过时党还在用win7. 所以就必须找到合适的版本。在windows 7 64位系统下,可以使用IDEA 2020.1.4版本。 在Jetbrain官方下,找到历史版本,找到windows版…

iOS开发-CoreNFC实现NFC标签Tag读取功能

iOS开发-CoreNFC实现NFC标签Tag读取功能 一、NFC近场通信 近场通信(NFC)是一种无线通信技术,它使设备能够在不使用互联网的情况下相互通信。它首先识别附近配备NFC的设备。NFC常用于智能手机和平板电脑。 二、实现NFC标签Tag读取功能 在…

ConcurrentLinkedDeque详解-Deque接口链表实现方案

简介 ConcurrentLinkedDeque是一种基于链表实现的线程安全的双端队列Deque。它提供了高效的并发访问和操作,适用于高并发场景下的数据共享和交互。 主要特点 线程安全 :ConcurrentLinkedDeque通过使用线程安全的并发控制机制,如内部分锁和C…

1985-2022年全国各地级市绿色专利申请和授权数据

1985-2022年全国各地级市绿色专利申请和授权数据 1、时间:1985-2022年 2、指标:年份、地区、行政区划代码、所属省份、所属地域、绿色专利申请总量、绿色专利申请_发明专利、绿色专利申请_实用新型专利、绿色专利授权总量、绿色专利授权_发明专利、绿色…

一种FSK信号符号同步的思想

FSK原理 FSK利用频率传输信息,即将信息流调制到频率上。以最简单的2FSK通俗来讲,用2个不同的频率 f 1 f_1 f1

【Django】项目模型

Django的基本命令 django-admin 命令含义startproject启动Django项目startapp启动Django应用check检查项目完整性runserver本地运行项目shell进入Django项目的Python Shell环境test 进行Django用例测试makemigrations创建模型变更的迁移文件migrate执行makemigrations…

外贸网站建设攻略:如何建设一个高效的外贸网站

外贸网站是外贸企业展示自己的产品和服务,吸引和沟通国外客户,实现网络营销的重要工具。一个高效的外贸网站不仅要有美观的界面,还要有强大的功能和优化。那么,九凌网络分享如何建设一个高效的外贸网站呢? 第一步&…

Unity 报警告warning CS0649: Field ‘...‘ is never assigned to,...解决办法

文章目录 1. 现象2. 警告出现原因3. 解决方法 1. 现象 2. 警告出现原因 该警告应仅出现在私有成员变量中。那些不能从外部设置,这就是为什么编译器可以确定这些变量没有在任何地方蛇者其值。在C#中,没有访问修饰符的变量(private…

useState和useReducer的区别?

文章目录 前言区别总结后言 前言 hello world欢迎来到前端的新世界 😜当前文章系列专栏:react.js 🐱‍👓博主在前端领域还有很多知识和技术需要掌握,正在不断努力填补技术短板。(如果出现错误,感谢大家指出…

el-date-picker如何选择规定范围内的时间(十天以内的时间)

这个需求是可以选择之后来计算,选择当前日期之后自动计算当前日期前后的十天以内的日期 如下图 就是19号前面十天的日期 以及后面十天的日期(包含当天) 需要用到elementUI el-date-picker是Element UI库中的一个组件&#xff0c;用于日期选择 <el-date-picker v-model&q…

AI:46-基于深度学习的垃圾邮件识别

🚀 本文选自专栏:AI领域专栏 从基础到实践,深入了解算法、案例和最新趋势。无论你是初学者还是经验丰富的数据科学家,通过案例和项目实践,掌握核心概念和实用技能。每篇案例都包含代码实例,详细讲解供大家学习。 📌📌📌本专栏包含以下学习方向: 机器学习、深度学…