Ограничить количество отправленных SMS - PullRequest
0 голосов
/ 31 марта 2020

Я разработал python скрипт, который отправляет смс с компьютера для отправки смс на набор телефонных номеров. Операция заключается в следующем: каждый дает номер телефона и количество сгенерированного из него номера, затем скрипт выполняет что-то похожее на «подсеть» и отправляет смс, один за другим, на различные сгенерированные номера.

Например, если я дам вам сгенерировать 1000 из 973254509, то он начнет отправлять с 973254000 на 973254999.

Проблема в том, что если я поставлю 10, то работает, 100 работает, но сразу, если я поставлю 1000 он перестает работать (AT-команды продолжают возвращаться нормально, а CMGS: номер), но смс больше не приходит.

Иногда установленная мной утилита сообщает, что SIM-карта заполнена.

Тесты были следующими:

1) Seed 973254509, количество, которое будет сгенерировано 10. .... SMS было отправлено

2) Seed 973254509, количество, чтобы сгенерировать 100. .. .. СМС было отправлено

3) Семя 973254509, количество, которое будет сгенерировано 1000. .... СМС не было отправлено

Теоретически оно должно было получить 3 смс в числах от 0-9, 2 в те из 10-99 и 1 в те из 100-999, но он начинает терпеть неудачу в тех из порядка 1000.

Это часть скрипта, которая отправляет смс

class TextMessage:

def setNumero(self, numero):
    self.numero = numero

def setContenido(self, contenido):
    self.contenido = contenido

def setPuerto(self, puerto):
    self.puerto = puerto

def conectar(self):
    self.ser = serial.Serial(self.puerto, 460800, timeout=5)
    time.sleep(1)
def configurar(self):
    self.ser.write(b'AT\r')
    #time.sleep(1)
    # s = self.ser.read(15)
    # print(s.decode())

    self.ser.write(b'ATZ\r')
    #time.sleep(1)
    # s = self.ser.read(15)
    # print(s.decode())

    self.ser.write(b'AT+CMGF=1\r')
    time.sleep(1)
    # s = self.ser.read(15)
    # print(s.decode())

def enviarMensaje(self):
    self.ser.write(b'AT+CMGS="')
    self.ser.write(self.numero.encode())
    self.ser.write(b'"\r')
    self.ser.write(self.contenido.encode())
    self.ser.write(b'\r')
    time.sleep(1)
    self.ser.write(b'\x1A')
    #time.sleep(1)
    s = self.ser.read(10)
    print(s.decode())

def desconectar(self):
    self.ser.close()
#
def EnviarSMS():
    archivo = ruta + "numeros.txt"
    #contadorSMS.set('0')
    with open(archivo) as f:
        numero = f.readline()
        cnt = 1
        sms = TextMessage()
        sms.setPuerto(puertoAsignado(puerto.get()))
        sms.setContenido(mensaje.get("1.0", "end-1c"))
        sms.conectar()
        sms.configurar()
        while numero:
            sms.setNumero(numero)
            sms.enviarMensaje()
            #contadorSMS.set(str(cnt))
            numero = f.readline()
            cnt += 1
    mensajeEmergente = 'Los SMS fueron enviados'
    mensajeVar = tk.Message(ventana, width=140, text=mensajeEmergente)
    mensajeVar.config(bg='lightgreen')
    mensajeVar.grid(row=2, column=3)
    sms.desconectar()

Спасибо всему сообществу

...