haas506开发教程-高级组件库-modem
1.获取与设备相关的信息
- 案例说明
使用modem、network、net模块获取与设备有关的信息 - main.py
# -*- coding: UTF-8 -*-
import network
import modem
import net
import utime as time
g_connect_status = False
def on_4g_cb(args):
global g_connect_status
pdp = args[0]
netwk_sta = args[1]
if netwk_sta == 1:
g_connect_status = True
else:
g_connect_status = False
def connect_network():
global Net,on_4g_cb,g_connect_status
Net = network.NetWorkClient()
g_register_network = False
if Net._stagecode is not None and Net._stagecode == 3 and Net._subcode == 1:
g_register_network = True
else:
g_register_network = False
if g_register_network:
Net.on(1,on_4g_cb)
Net.connect(None)
else:
print('网络注册失败')
while True:
if g_connect_status:
print('网络连接成功')
break
time.sleep_ms(20)
if __name__=="__main__":
#连接网络
connect_network()
#network模块
print('网络连接状态:',g_connect_status)
print("获取当前网络状态(3代表连接成功):",Net.getStatus())
print("_stagecode(3代表成功):",Net._stagecode)
print("_subcode(1代表成功):",Net._subcode)
print("网络类型(0:wifi,1:蜂窝网,2:以太网,3:未知):",Net.getType())
#modem模块
print('设备IMEI:',modem.getDevImei())
print("设备模组:",modem.getDevModel())
print("设备固件版本",modem.getDevFwVersion())
print("设备id:",modem.getDevProductId())
print("ICCID:",modem.sim.getIccid())
print("IMSI:",modem.sim.getImsi())
#net模块
print("信号强度:",net.csqQueryPoll())
- 日志输出
网络连接状态: True
获取当前网络状态(3代表连接成功): 3
_stagecode(3代表成功): 3
_subcode(1代表成功): 1
网络类型(0:wifi,1:蜂窝网,2:以太网,3:未知): 1
设备IMEI: 867082058707142
设备模组: M601
设备固件版本 amp-v1.16 build on 2021-11-17, 15:18:23
设备id: HaaS506
ICCID: 89860440112170090087
IMSI: 460046042210087
信号强度: 31
2.发短信
- main.py
# -*- coding: UTF-8 -*-
from modem import sms
#暂不支持电信发送短信
def sms_cb(args):
#字符串
ind_flag = args[0]
mes_buf = args[1]
mes_num = args[2]
# print("type of mes_buf:",type(mes_buf))
print('new message:ind_flag:{},mes_buf:{},mes_num:{}'.format(ind_flag,mes_buf,mes_num))
if __name__ == '__main__':
#实例化
smss = sms()
#接收短信回调
smss.setCallback(sms_cb)
smss.sendTextMsg('yourPhoneNumber','welcome to use haas506','GSM')
smss.sendTextMsg('yourPhoneNumber','欢迎使用haas506','UCS2')
# GSM 只支持英文内容
# UCS2 支持中英文,且发送时文件格式保存位utf-8
-
效果图-发送
-
效果图-接收
注意:用手机给haas506发短信时,串口助手不一定能显示中文,此时有两种解决方法:(1)换一个可以设置中文显示的串口助手。(2)将串口日志保存一下,打开日志文件,就会显示中文字符。
3. 打电话
- main.py
from modem import voiceCall
from audio import Audio
#赞不支持电信拨打电话
def voice_callback(args):
if args[0] == 10:
print('voicecall incoming call, PhoneNO.: ', args[6])
elif args[0] == 11:
print('voicecall connected, PhoneNO.: ', args[6])
elif args[0] == 12:
print('voicecall disconnect')
elif args[0] == 13:
print('voicecall is waiting, PhoneNO.: ', args[6])
elif args[0] == 14:
print('voicecall dialing, PhoneNO.: ', args[6])
elif args[0] == 15:
print('voicecall alerting, PhoneNO.: ', args[6])
elif args[0] == 16:
print('voicecall holding, PhoneNO.: ', args[6])
if __name__ == '__main__':
#实例化
vc = voiceCall()
ad = Audio()
#电话功能需要预先开启功放
ad.set_pa()
#设置音量
ad.setVolume(10)
# 设置监听回调函数
vc.setCallback(voice_callback)
# 设置自动应答时间 ms
#(1)自动应答
vc.setAutoAnswer(5000)
# 拨打电话
vc.callStart('phonenumber')
#(2)非自动接听,挂断
# # 当电话来时接听电话
# vc.callAnswer()
# #挂断电话
# vc.callEnd()
4.Class-modem
- modem
- modem.getDevImei()
- 作用:获取设备的IMEI(国际移动设备识别码)
- 返回:IMEI
- modem.getDevModel()
- 作用:获取设备model
- 返回:设备model
- modem.getDevProductId()
- 作用:获取设备id
- 返回:设备id
- modem.getDevFwVersion()
- 作用:获取设备固件版本号
- 返回:固件版本号
- modem.reboot()
- 作用:设备重启
- modem.sim()
- 实例化:s=modem.sim()
- s.getImsi()
- 作用:获取IMSI(国际移动用户识别码)
- 返回:IMSI
- s.getIccid()
- 作用:获取ICCID(集成电路卡识别码)
- 返回:ICCID
- s.setSimDet(detenable, insertlevel)
- 作用: 设置SIM卡热插拔相关配置
- 参数: detenable-开启或者关闭SIM卡热插拔功能,0:关闭 1:打开;insertlevel-高低电平配置(0/1)
- 返回:0成功
- s.getSimDet()
- 作用: 获取SIM卡热插拔相关配置
- 返回:一个元组数据,即(detenable,detenable)
- modem.sms()
- 实例化:smss=modem.sms()
- smss.setCallbacks()
- 作用: 实现接收短信功能
- smss.sendTextMsg()
- 作用: 实现短信发送功能
- modem.voiceCall()
- 实例化:vc=modem.voiceCall()
- vc.setCallback()
- 作用: 设置监听回调函数
- vc.setAutoAnswer(ms)
- 作用: 设置自动应答时间
- 参数: 自动应答时间,单位ms
- vc.callStart()
- 作用: 拨打电话
- vc.callAnswer()
- 作用: 打电话来时接听电话
- vc.callEnd()
- 作用: 挂断电话
- modem.getDevImei()
5.总结
本节介绍了如何使用haas506高级组件库中的sms、voiceCall、sim模块,实现了获取设备信息、发送短信、拨打电话功能。当前版本不支持sim卡的热插拔功能。