如何接收通知并将短信收入保存到SIM卡?

问题描述 投票:-3回答:1

我需要获得通知成功发送。我读了很多,然后尝试了。我有GSM调制解调器ZTE K4510Z。我没有收到任何通知或保存到SIM卡。在我的考验中。虽然我的SIM卡坏了。因此,我尝试AT + CMGW将临时消息写入simcard。它成功并存在。所以最后我认为,这是命令而不是Simcard。我尝试了很多来自AT + CNMIAT + CPMS的想法。发送邮件后得到的无应答缓冲区。发送邮件后,我也用AT + CPMS?进行了检查。如果有消息,它会在没有通知的情况下写入simcard。但是什么也没有,没有通知,也没有消息写入到SIM卡存储中。

import serial
import time

modem = serial.Serial('COM35', 9600, timeout=0)

modem.write(b'AT\r')

while True:
    buffer = modem.readline()

    if buffer == b'OK\r\n':
        print('OK')
        break

# Set SMS MODE
modem.write(b'AT+CMGF=1\r')

while True:
    buffer = modem.readline()

    if buffer == b'OK\r\n':
        print('OK')
        break

# Set Preffered Storage
modem.write(b'AT+CPMS="SM","SM","SM"\r')

while True:
    buffer = modem.readline()

    if buffer == b'OK\r\n':
        print('OK')
        break

# Set how a notification    
modem.write(b'AT+CNMI=2,2,0,0,0\r')

while True:
    buffer = modem.readline()

    if buffer == b'OK\r\n':
        print('OK')
        break

recipient = "Phone_number"
message = 'Message'

# Set Recipient
modem.write(b'AT+CMGS="' + recipient.encode('UTF-8') + b'"\r')

while True:
    buffer = modem.read(1)

    if buffer == b'>':
        break

# Set Message
modem.write(message.encode('UTF-8') + b'\r')

# Input CTRL+Z  
modem.write(bytes([26]))

# Waiting any buffer
while True:
    buffer = modem.readline()

    print(buffer)

    time.sleep(1)

modem.close()
language-agnostic sms at-command
1个回答
0
投票

您正在发送AT+CNMI=2,2,0,0,0命令,目标是在SM中包含传入的SMS或SMS传递报告,以及针对它们的URC通知。我将尝试说明如何启用这两个功能。

根据规范,该命令的语法是:

AT + CNMI = [mode [,mt [,bm [,ds [,bfr]]]]]]

  • 模式:主动提供的结果代码缓冲选项。 mode=2表示在调制解调器繁忙时缓冲URC。
  • mt:SMS-DELIVER的结果代码指示报告。 mt=2表示直接使用+CMT: ... URC显示传入的消息。没有存储!!
  • bm
  • :广播报告选项。 与我们无关。
  • ds
  • :SMS-STATUS-REPORTs报告选项。 ds=0表示不报告和不存储状态报告!那不是你想要的!
  • bfr
  • :缓冲的结果代码处理方法。 与我们无关。

    相反,您可能想要:

  • mt = 2,表示已存储传入的SMS,并显示了+CMTI: <mem>,<idx> URC,表明已将其存储在index = idx的memory = mem中。
  • ds = 2
  • ,表示如果已存储状态报告,则显示+CDSI: <mem>,<idx> URC,表明已存储在index = idx处的memory = mem中。

    这可能会对您有所帮助,但请注意

  1. 您必须确保您的调制解调器型号确实支持这些功能(请在其AT用户指南中进行验证,并且它们不是虚拟的。
  2. 您必须确保您的操作员支持状态传送报告,并且已经为您的SIM启用了它们。
  3. SMS存储类会影响调制解调器执行的存储操作,这对于状态传送报告而言尤其如此。在这种情况下,您可以使用ds = 1
  4. 设置,这至少使调制解调器使用URC +CDS: ...显示报告。

    注意:也请注意+ CNMI设置是易失的,因此,如果重新启动,除非将其保存在默认配置文件中(通过发出AT&W&P),否则它们会丢失。

© www.soinside.com 2019 - 2024. All rights reserved.