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)
相关文章:
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.icc…...
c++创建函数对象的不同方式
在C中,创建任何一个对象(即使我们创建的是一个没有任何成员变量的对象)时,需要占用一定的内存空间。 应用程序会将可用的内存(排除源代码运行的内存等)分出两个部分:栈(stack&#x…...
python实现从字符串中识别出省市区信息
从字符串中识别出省市区的信息分别存储,是我们经常会碰到的问题。如果用分词的方法去匹配获取比较麻烦,cpca包提供了便捷的调用函数transform。只要把含省市区的信息放进去,即可返回标准的含省市区的数据框。 本文详细阐述如何安装cpca包、transform函数参数定义,以及…...
GCN火车票识别项目 P1 火车票识别项目介绍 Pytorch LSTM/GCN
从本节开始,我将带大家完成一个深度学习项目:用图卷积神经网络(GCN),实现一个「火车票文字信息提取」的项目,由于火车票上每个节点文字不是等长的,所以还需要添加一个前置的 LSTM 来提取句子特征。 课前说明 1、这是…...
shell script 的默认变量$0,$1,$2...,参数偏移的shift
简单来说,在scirpt脚本里面,$0表示文件名,$1表示第一个参数,以此类推,还有 $# 后面接参数的个数 $ 代表"$1","$2","$3",每个都是独立的,用双引号括起来 $* 代…...
2023年【危险化学品经营单位安全管理人员】复审考试及危险化学品经营单位安全管理人员模拟考试题库
题库来源:安全生产模拟考试一点通公众号小程序 危险化学品经营单位安全管理人员复审考试考前必练!安全生产模拟考试一点通每个月更新危险化学品经营单位安全管理人员模拟考试题库题目及答案!多做几遍,其实通过危险化学品经营单位…...
Java 正则表达式重复匹配篇
重复匹配 * 可以匹配任意个字符,包括0个字符。 可以匹配至少一个字符。? 可以匹配0个或一个字符。{n} 可以精确指定 n 个字符。{n,m} 可以精确匹配 n-m 个字符。你可以是 0 。 匹配任意个字符 匹配 D 开头,后面是任意数字的字符, String …...
0009Java安卓程序设计-ssm基于android手机设计并实现在线点单系统APP
文章目录 **摘要**目 录系统实现开发环境 编程技术交流、源码分享、模板分享、网课教程 🐧裙:776871563 摘要 网络的广泛应用给生活带来了十分的便利。所以把在线点单管理与现在网络相结合,利用java技术建设在线点单系统,实现餐…...
react_14
动态路由 路由分成两部分: 静态路由,固定的部分,如主页、404、login 这几个页面 动态路由,变化的部分,经常是主页内的嵌套路由,比如 Student、Teacher 这些 动态路由应该是根据用户登录后,根…...
批量导出 PPT的备注到一个txt文本中
使用宏(Macro)功能(适用于 Windows 平台) 打开 PowerPoint 幻灯片,并确保每个幻灯片上都添加了备注。 启用"开发人员"选项卡: 如果您已经看到 PowerPoint 的"开发人员"选项卡&#x…...
文本内容转换成语音播放的工具:Speech Mac
Speech Mac版是一款适用于Mac电脑的语音合成工具。它将macOS语音合成器的所有功能整合到一个易于使用的界面中。通过Speech Mac版,用户可以选择40多种声音和语言,方便地将文本转换为语音。用户可以将文本拖放或粘贴到Speech中,并随时更改语音…...
运维知识点-MySQL从小白到入土
MySQL从小白到入土 mysql 服务器安装windows mysql 服务漏洞复现-mysql jdbc反序列化-权限绕过 mysql 服务器安装 https://dev.mysql.com/downloads/mysql/https://www.cnblogs.com/xiaostudy/p/12262804.html 点餐小程序腾讯云服务器安装mysql8 windows mysql 服务 net sta…...
【蓝桥杯基础题】门牌制作
👑专栏内容:蓝桥杯刷题⛪个人主页:子夜的星的主页💕座右铭:前路未远,步履不停目录 一、题目描述二、题目分析三、代码汇总1、C++代码2、Java 代码四、总结1、枚举思想2、取余判断每位数字一、题目描述 题目链接:门牌制作 小蓝要为一条街的住户制作门牌号。这条街一共…...
MyBatis底层原理(小白版本)
!特别声明!:这篇文章只是单纯用来应对面试,并不能用来当作深度解析的文章来看。本人才疏学浅,文章也可能有不对的地方,望指正。 此源码分析使用的是Java11 基本使用流程: String resource &q…...
水经微图Web版从入门到精通
我们在《47GB水经微图从入门到精通视频教程》和《163M水经微图从入门到精通文档教程》中,为大家分享了水经微图PC版的教程。 这里,我们再为大家分享水经微图Web版的文档教程。 水经微图Web版教程 水经微图Web版的教程,主要包括基础名词、…...
IntelliJ IDEA 2023 最新版如何试用?IntelliJ IDEA 2023最新版试用方法及验证ja-netfilter配置成功提示
🌷🍁 博主猫头虎 带您 Go to New World.✨🍁 🦄 博客首页——猫头虎的博客🎐 🐳《面试题大全专栏》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 &a…...
LeetCode541. Reverse String II
文章目录 一、题目二、题解 一、题目 541. Reverse String II Given a string s and an integer k, reverse the first k characters for every 2k characters counting from the start of the string. If there are fewer than k characters left, reverse all of them. If…...
ios原生分享
什么是 ios 系统的原生分享呢,如下图所示 具体使用系统UIActivityViewController,完整代码如下: -(void)shareAny:(NSString *)text url:(NSString *)_url imagePath:(NSString *)_imagePath {NSLog("shareAny, text:%, url:%, imagePa…...
【Ubuntu】安装chrome之后无法启动
【Ubuntu】安装chrome之后无法启动 文章目录 【Ubuntu】安装chrome之后无法启动1. 问题描述2.解决方法Reference 1. 问题描述 命令行运行 google-chrome报错 [5901:5901:0610/183033:ERROR:process_singleton_linux.cc(309)] 其他计算机 (money-Latitude-E5430-non-vPro) 的…...
顺序栈练习
顺序栈练习 相关内容: 1.判断顺序栈栈满的两种方式 2.一张图理解栈顶指针加加减减的问题 3.栈的顺序存储结构(顺序栈) //顺序栈的初始化、判空、入栈、出栈、读取栈顶元素 //顺序栈的结构:数组、栈顶指针(本质是下标) #include&…...
终极音乐歌词获取指南:163MusicLyrics让你的每首歌都有完美字幕
终极音乐歌词获取指南:163MusicLyrics让你的每首歌都有完美字幕 【免费下载链接】163MusicLyrics 云音乐歌词获取处理工具【网易云、QQ音乐】 项目地址: https://gitcode.com/GitHub_Trending/16/163MusicLyrics 还在为音乐播放器缺少歌词而烦恼?…...
精准定位无版权音乐,快速获取商用授权源,Perplexity音乐搜索避坑全手册,深度拆解7类常见误判场景
更多请点击: https://codechina.net 第一章:Perplexity音乐资源搜索的核心价值与定位 Perplexity 音乐资源搜索并非传统意义上的音频播放器或流媒体平台,而是一个面向开发者、音乐学者与内容创作者的语义化音乐元数据发现引擎。其核心价值在…...
对比直接使用厂商API与通过Taotoken聚合调用的费用观感
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 对比直接使用厂商API与通过Taotoken聚合调用的费用观感 1. 引言:成本感知的演变 在构建基于大模型的应用时࿰…...
Perplexity教育信息检索效率提升70%:从零到精通的4步优化法(附实测数据)
更多请点击: https://kaifayun.com 第一章:Perplexity教育信息检索效率提升70%:从零到精通的4步优化法(附实测数据) Perplexity 作为面向研究与教育场景的AI原生搜索引擎,其语义理解深度与引用溯源能力显著…...
告别‘涂抹感’:深入浅出聊聊Chromatix ISP里ABF模块的‘边缘保留’与‘噪声消除’如何平衡
告别‘涂抹感’:深入浅出聊聊Chromatix ISP里ABF模块的‘边缘保留’与‘噪声消除’如何平衡 在手机摄影普及的今天,我们常常会遇到这样的困扰:夜间拍摄的照片要么噪点明显,要么经过降噪处理后变得模糊不清,丢失了细节…...
3步搞定Football Manager面部包管理:NewGAN-Manager完全指南
3步搞定Football Manager面部包管理:NewGAN-Manager完全指南 【免费下载链接】NewGAN-Manager A tool to generate and manage xml configs for the Newgen Facepack. 项目地址: https://gitcode.com/gh_mirrors/ne/NewGAN-Manager 你是否厌倦了在Football M…...
别再只用Leaflet了!Mapbox GL JS加载本地MVT矢量瓦片保姆级教程(附避坑点)
从Leaflet到Mapbox GL JS:解锁MVT矢量瓦片的进阶玩法 当传统WebGIS开发者第一次看到Mapbox GL JS渲染的矢量瓦片地图时,那种震撼感不亚于从黑白电视切换到4K HDR。Leaflet就像一把可靠的瑞士军刀,而Mapbox GL JS则像一套专业厨房设备——当你…...
npm publish前必看:如何用命令行优雅搞定2FA,避免发布包时卡壳
npm publish前必看:如何用命令行优雅搞定2FA,避免发布包时卡壳 在npm生态中,发布包是开发者日常工作中不可或缺的一环。然而,随着安全要求的提高,双因素身份验证(2FA)已成为保护账户安全的重要措…...
Haneke与AFNetworking集成实战:构建强大的iOS图片加载系统
Haneke与AFNetworking集成实战:构建强大的iOS图片加载系统 【免费下载链接】Haneke A lightweight zero-config image cache for iOS, in Objective-C. 项目地址: https://gitcode.com/gh_mirrors/ha/Haneke 在iOS应用开发中,图片加载与缓存是影响…...
FPGA资源省一半?揭秘多相滤波器在抽取/内插中的高效实现结构与Xilinx IP核配置要点
FPGA资源优化实战:多相滤波器在采样率转换中的高效架构与Xilinx IP核深度配置 当信号处理系统面临严苛的资源约束时,工程师们常常需要在性能与成本之间走钢丝。多相滤波器结构就像一位精明的财务顾问,能帮你在FPGA资源预算紧张的情况下&#…...
