Получение ошибки "no CARRIER" во время tring для вызова с помощью GSM-модема в Python

Я хочу позвонить через мой модем. Поэтому я написал следующую программу:

import time
import serial

recipient = "+98xxxxxxxxxx"

phone = serial.Serial("COM10",  115200, timeout=5)
try:
    time.sleep(0.5)
    phone.write(b'ATZr')
    time.sleep(1)
    phone.write(b'ATD"'+recipient.encode() +b'"r')
    while(1):
        print(phone.readline())
    time.sleep(0.5)
finally:
    phone.close()

но когда я запускаю его, я получаю этот выход:

>>> ================================ RESTART ================================
>>> 
b'ATZrrn'
b'OKrn'
b'ATDxxxxxxxxxxrrn'
b'NO CARRIERrn'

что означает эта ошибка" без носителя"?

обратите внимание, что я могу отправить SMS успешно.


Это программа, которую я использую для отправки SMS:

import time
import serial

recipient = "+98xxxxxxxxxx"
message = "Test"

phone = serial.Serial("COM10",  115200, timeout=5)


try:
    time.sleep(0.5)
    phone.write(b'ATZr')
    time.sleep(0.5)
    phone.write(b'AT+CMGF=1r')
    time.sleep(0.5)
    phone.write(b'AT+CMGS="' + recipient.encode() + b'"r')
    time.sleep(0.5)
    phone.write(message.encode() + b"r")
    time.sleep(0.5)
    phone.write(bytes([26]))
    time.sleep(0.5)
finally:
    phone.close()

1 ответов


Я нашел источник ошибки :

синтаксис ATD+98xxxxxxxxxx; с последующим завершением строки. Я забыл поставить точку с запятой в конце после номера.

поэтому я заменяю

phone.write(b'ATD"'+recipient.encode() +b'"\r')

С

phone.write(b'ATD"'+recipient.encode() +b';"\r')

и теперь он отлично работает.


на основе скобки этой документы, я думал, что через ";" необязательно. Но, похоже, я ошибался. enter image description here