2.7 haas506 2.0开发教程-高级组件库-modem(2.2版本接口有更新)

最新2.2版本modem相关接口:
modem.info(仅支持2.2以上版本)
modem.net(仅支持2.2以上版本)
modem.sim(仅支持2.2以上版本)
modem.sms(仅支持2.2以上版本)
modem.voiceCall(仅支持2.2以上版本)

1.获取与设备相关的信息

案例说明:

  • 使用modem、network、net模块获取与设备有关的信息(插入SIM卡)

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.发短信

案例说明:

  • 使用开发板与手机通信,进行短信收发
  • 需要插入SIM卡
  • 注意: ‘yourPhoneNumber’ 需要改成通话号码(str格式)

main.py

# -*- coding: UTF-8 -*-
from modem import sms
import utime as time


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()
    #接收短信回调
    time.sleep(5)
    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. 打电话

案例说明:

  • 使用开发板与手机通话。
  • 需要插入SIM卡
  • 注意: ‘phonenumber’ 需要改成通话号码(str格式)

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

getDevImeigetDevModelgetDevProductIDgetDevFwVersionrebootsimvoiceCallsms
获取设备的IMEI获取设备model获取设备id获取设备固件版本号设备重启打电话实现短信发送功能

modem.sim()

getImsigetIccidsetSimDetgetSimDet
获取IMSI获取ICCID配置SIM卡热插拔相关参数获取SIM卡热插拔相关配置参数

modem.voiceCall()

setAutoAnswecallStartcallAnswercallEndsetCallback
设置自动应答时间拨打电话接听电话挂断电话设置监听回调函数

modem.sms()

setCallbackssendTextMsg
设置接收短信回调函数实现短信发送功能

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()

作用: 挂断电话

5.总结

本节介绍了如何使用haas506高级组件库中的sms、voiceCall、sim模块,实现了获取设备信息、发送短信、拨打电话功能。当前版本不支持sim卡的热插拔功能。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值