一. sim --SIM卡模块
1import sim
1. 获取sim卡的imsi
1sim.getImsi()
参数
无返回值
成功返回string类型的imsi,失败返回整型-1。
2. 获取sim卡的iccid
1sim.getIccid()
参数
无返回值
成功返回string类型的iccid,失败返回整型-1。
3. 获取sim卡的电话号
1sim.getPhoneNumber()
参数
无返回值
成功返回string类型的phone number,失败返回整型-1。
4. 获取sim卡的状态
1sim.getStatus()

5. 启用sim卡PIN码验证
启用sim卡PIN码验证,开启后需要输入正确的PIN验证成功后,sim卡才能正常使用。只有3次输入PIN码机会,3次都错误,sim卡被锁定,需要PUK来解锁。
1sim.enablePin(pin)
成功返回整型0,失败返回整型-1。
6. 关闭sim卡PIN码验证
1sim.disablePin(pin)

7. sim卡PIN码验证
1sim.verifyPin(pin)

8. sim卡解锁
sim卡解锁。当多次错误输入 PIN/PIN2 码后,SIM 卡状态为请求 PUK/PUK2 时,输入 PUK/PUK2 码和新的 PIN/PIN2 码进行解锁,puk码输入10次错误,SIM卡将被永久锁定自动报废。
1sim.unblockPin(puk, newPin)

9. 更改sim卡PIN码
1sim.changePin(oldPin, newPin)

10. 获取 SIM 卡上指定电话本中的一条或多条电话号码记录
1sim.readPhonebook(storage, start, end, username)

11. 写入一条电话号码记录
1sim. writePhonebook(storage, index, username, number)

二. dataCall - 数据拨号
模块功能:提供数据拨号相关接口。
1import dataCall
1. 启动拨号,进行数据链路激活
我的模块是自动拨号上网的, 我也不知道中国电信的apn该怎么设????????????
1dataCall.start(profileIdx, ipType, apn, username, password, authType)

1
2#举例: dataCall.start(1, 0, "3gnet.mnc001.mcc460.gprs", "", "", 0)
2. 获取数据拨号信息
1dataCall.getInfo(profileIdx, ipType)

返回值
错误返回整型-1,成功返回拨号信息,返回格式根据ipType的不同而有所区别:
-
ipType =0,返回值格式如下:
(profileIdx, ipType, [nwState, reconnect, ipv4Addr, priDns, secDns])- profileIdx:PDP索引,取值1-8
- ipType:IP类型,0-IPV4,1-IPV6,2-IPV4和IPV6
- nwState:拨号结果,0-失败,1-成功
- reconnect:重拨标志
- ipv4Addr:ipv4地址
- priDns:dns信息
- secDns:dns信息
-
ipType =1,返回值格式如下:
(profileIdx, ipType, [nwState, reconnect, ipv6Addr, priDns, secDns])
- profileIdx:PDP索引,取值1-8
- ipType:IP类型,0-IPV4,1-IPV6,2-IPV4和IPV6
- nwState:拨号结果,0-失败,1-成功
- reconnect:重拨标志
- ipv6Addr:ipv6地址
- priDns:dns信息
- secDns:dns信息
-
ipType =2,返回值格式如下:
(profileIdx, ipType, [nwState, reconnect, ipv4Addr, priDns, secDns], [nwState, reconnect, ipv6Addr, priDns, secDns])

3. apn信息配置接口
1dataCall.setApn(profileIdx, ipType, apn, username, password, authType)
用户apn信息配置接口,用户调用该接口后,会在用户分区目录下创建user_apn.json文件,用于保存用户apn信息,并使用该apn信息启动拨号,进行数据链路激活

4. 用户回调函数
1dataCall.setCallback(usrFun)
注册用户回调函数,当网络状态发生变化,比如断线、上线时,会通过该回调函数通知用户
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19>>> import dataCall >>> import net >>> def nw_cb(args): pdp = args[0] nw_sta = args[1] if nw_sta == 1: print("*** network %d connected! ***" % pdp) else: print("*** network %d not connected! ***" % pdp) >>> dataCall.setCallback(nw_cb) 0 >>> net.setModemFun(4) # 进入飞行模式 0 >>> *** network 1 not connected! *** # 进入飞行模式导致断网,通过回调告知用户 >>> net.setModemFun(1) # 退出飞行模式 0 >>> *** network 1 connected! *** # 退出飞行模式,自动拨号,等待联网成功,通过回调告知用户
三. net - 网络相关功能
1. 获取csq信号强度
1net.csqQueryPoll()
成功返回整型的csq信号强度值,失败返回整型值-1,返回值为99表示异常;
信号强度值范围0~31,值越大表示信号强度越好。
2. 获取详细信号强度
1net.getSignal()
失败返回整型值-1,成功返回一个元组,包含两个List(GW 、LTE),返回值格式如下:
([rssi, bitErrorRate, rscp, ecno], [rssi, rsrp, rsrq, cqi])
返回值参数说明:
- GW list:
- rssi :接收的信号强度
- bitErrorRate :误码率
- rscp :接收信号码功率
- ecno :导频信道
- LTE list:
- rssi :接收的信号强度
- rsrp :下行参考信号的接收功率
- rsrq :下行特定小区参考信号的接收质量
- cqi :信道质量

3. 获取当前工作模式模式
1net.getModemFun()
成功返回当前SIM模式:
0 :全功能关闭
1 :全功能开启(默认)
4 :飞行模式
失败返回整型值-1。
4. 设置当前SIM模式
1net.setModemFun(function, rst)

5. 获取当前基站时间
1net.nitzTime()
失败返回整型值-1,成功返回一个元组,包含基站时间与对应时间戳与闰秒数(0表示不可用)
6. 获取当前注网的运营商信息
1net.operatorName()

格式为:
(long_eons, short_eons, mcc, mnc)
- long_eons :运营商信息全称,string类型
- short_eons :运营商信息简称,string类型
- mcc :移动设备国家代码,string类型
- mnc :移动设备网络代码,string类型
7. 获取当前网络注册信息
1net.getState()
失败返回整型值-1,成功返回一个元组,包含注网的网络注册信息. 格式为:
([voice_state, voice_lac, voice_cid, voice_rat, voice_reject_cause, voice_psc], [data_state, data _lac, data _cid, data _rat, data _reject_cause, data _psc])

state :网络注册状态
lac :位置区码
cid :int类型id信息
rat :注网制式
reject_cause :注册被拒绝的原因
psc :Primary Scrambling Code

8. 获取附近小区ID
1net.getCi()
成功返回一个list类型的数组,包含小区id,格式为:[id, ……, id]。数组成员数量并非固定不变,位置不同、信号强弱不同等都可能导致获取的结果不一样。
失败返回整型值-1。
9. 获取附近小区的mnc
1net.getMnc()
成功返回一个list类型的数组,包含小区mnc,格式为:[mnc, ……, mnc]。数组成员数量并非固定不变,位置不同、信号强弱不同等都可能导致获取的结果不一样。
失败返回整型值-1
10. 获取附近小区的mcc
1net.getMcc()
成功返回一个list类型的数组,包含小区mcc,格式为:[mcc, ……, mcc]。数组成员数量并非固定不变,位置不同、信号强弱不同等都可能导致获取的结果不一样。
失败返回整型值-1
11. 获取附近小区的Lac
1net.getLac()
成功返回一个list类型的数组,包含小区lac,格式为:[lac, ……, lac]。数组成员数量并非固定不变,位置不同、信号强弱不同等都可能导致获取的结果不一样。
失败返回整型值-1
12. 获取邻近基站的信息
1net.getCellInfo()
失败返回整型值-1,成功返回包含三种网络系统(GSM、UMTS、LTE)的信息的list,如果对应网络系统信息为空,则返回空的List。返回值格式如下:([(flag, cid, mcc, mnc, lac, arfcn, bsic, rssi)], [(flag, cid, licd, mcc, mnc, lac, arfcn, bsic, rssi)], [(flag, cid, mcc, mnc, pci, tac, earfcn, rssi),...])


13. 获取当前网络模式、漫游配置
1net.getConfig()
失败返回整型值-1,成功返回一个元组,包含当前首选的网络制式与漫游打开状态。


14. 设置网络模式、漫游配置
1net.setConfig(mode, roaming)

15. 获取网络配置模式
1net.getNetMode()
失败返回整型值-1,成功返回一个元组,格式为:(selection_mode, mcc, mnc, act)
返回值参数说明: selection_mode :方式,0 - 自动,1 - 手动 mcc :移动设备国家代码 mnc :移动设备网络代码 act :首选网络的ACT模式

四. checkNet - 等待网络就绪
模块功能:checkNet模块主要用于【开机自动运行】的用户脚本程序,该模块提供API用来阻塞等待网络就绪,如果超时或者其他异常退出会返回错误码,所以如果用户的程序中有涉及网络相关的操作,那么在用户程序的开始应该调用 checkNet 模块中的方法以等待网络就绪。
1import checkNet
1. 创建checkNet.CheckNetwork 对象
1
2
3
4
5import checkNet PROJECT_NAME = "QuecPython_Math_example" PROJECT_VERSION = "1.0.0" checknet = checkNet.CheckNetwork(PROJECT_NAME, PROJECT_VERSION)
创建checkNet对象。PROJECT_NAME 和 PROJECT_VERSION 是必须有的两个全局变量,用户可以根据自己的需要修改这两个变量的值。

2.开机时打印一些信息
1checknet.poweron_print_once()
开机时打印一些信息,主要用于提示用户。打印内容如下:
PROJECT_NAME : 用户项目名称 PROJECT_VERSION : 用户项目版本号 FIRMWARE_VERSION : 固件版本号 POWERON_REASON : 开机原因 SIM_CARD_STATUS : SIM卡状态
3. 阻塞等待网络就绪
1checknet.wait_network_connected(timeout)
阻塞等待网络就绪。超时时间内,只要检测到拨号成功,则会立即返回,否则阻塞到超时时间到才会退出。

4. 举例: 开机注网耗时统计
我们把下面的代码写入main.py
, 使其开机运行
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15import checkNet import utime PROJECT_NAME = "熊爸的quecpython联网测试" PROJECT_VERSION = "1.0.0" checknet = checkNet.CheckNetwork(PROJECT_NAME, PROJECT_VERSION) time_spot1=utime.ticks_ms() stagecode, subcode = checknet.wait_network_connected(30) checknet.poweron_print_once() if stagecode == 3: time_spot2=utime.ticks_ms() time_span = utime.ticks_diff(time_spot2, time_spot1) print('开机注网耗时:',time_span) else: print('联网失败')

五. cellLocator - 基站定位
提供基站定位接口,获取坐标信息
注意: 此功能是收费功能
1cellLocator.getLocation(serverAddr, port, token, timeout, profileID)

1
2
3import cellLocator cellLocator.getLocation("www.queclocator.com", 80, "1111111122222222", 8, 1) # 上面使用的密钥仅为测试密钥

最后
以上就是感动裙子最近收集整理的关于移远QuecPython(基于EC600s)开发物联网应用(七) QuecPython通讯相关模块一. sim --SIM卡模块二. dataCall - 数据拨号三. net - 网络相关功能四. checkNet - 等待网络就绪五. cellLocator - 基站定位的全部内容,更多相关移远QuecPython(基于EC600s)开发物联网应用(七)内容请搜索靠谱客的其他文章。
发表评论 取消回复