Получение ошибки "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, не отвечаем