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

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

import time
import serial

recipient = "+98xxxxxxxxxx"

phone = serial.Serial("COM10",  115200, timeout=5)
try:
    time.sleep(0.5)
    phone.write(b'ATZ\r')
    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'ATZ\r\r\n'
b'OK\r\n'
b'ATDxxxxxxxxxx\r\r\n'
b'NO CARRIER\r\n'

Что означает эта ошибка "NO CARRIER"?

Обратите внимание, что я могу успешно отправлять 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'ATZ\r')
    time.sleep(0.5)
    phone.write(b'AT+CMGF=1\r')
    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

Ответ 2

я не получаю несущей, пока на вызов не ответили, почему мы не получаем команду под названием call, не отвечаем