示例#1
0
 def LeerBufferSMS(self):
     time.sleep(0.2)
     todalarespuesta = []
     while self.MODEM.inWaiting() >= 1:
         respuesta = self.MODEM.readline()
         if respuesta == "\r\n":
             pass
         elif re.match("\+CMTI", respuesta):
             pass
         elif re.match("\%", respuesta):
             GuardarTXTObjeto.GuardarErrorLog(self.NumPuerto, respuesta)
         elif re.match("RING", respuesta):
             GuardarTXTObjeto.GuardarErrorLog(self.NumPuerto, respuesta)
         else:
             respuesta = respuesta.replace("\r", "")
             respuesta = respuesta.replace("\n", "")
             todalarespuesta.append(respuesta)
         time.sleep(0.5)
     return todalarespuesta
示例#2
0
 def Validar(self, numero):
     self.numero = numero
     #len(self.numero) == int(self.largo)
     if True:
         for i in self.formatos:
             if re.match(i, self.numero):
                 return "Ok"
                 break
     else:
         GuardarTXTObjeto.GuardarErrorLog("Movil Len Max..",
                                          str(self.numero))
         return "Ok"  #None
示例#3
0
	def AddMensajeRecibido(self,telefono,mensaje,smsrecibidos):
		try:
			datos = [str(telefono),str(mensaje),str(LaFecha.damefechaJerm())]
			fila = 0
			columna = 0
			self.MainWindow.tableWidget_Recibidos.insertRow(0)
			for item in datos:
				texto = QtGui.QTableWidgetItem(item)
				self.MainWindow.tableWidget_Recibidos.setItem(fila,columna,texto)
				columna = columna + 1
				#Contamos la cantidad de columnas en la tabla
				if self.MainWindow.tableWidget_Recibidos.rowCount() > 100:
					self.MainWindow.tableWidget_Recibidos.removeRow(101)
			#Cambiamos el label de Contador
			self.MainWindow.label_MensajesRecibidos.setText("SMS Incoming ("+str(smsrecibidos)+")")
		except Exception as exc:
			GuardarTXTObjeto.GuardarErrorLog(0,str(traceback.format_exc()))		
示例#4
0
	def AddMensajeCola(self,telefono=None,mensaje=None,pk=None):
		try:
			#Variables para Insertar
			if telefono != None:
				datos = ["1",str(pk),str(telefono),str(mensaje),str(LaFecha.damefechaJerm())]
				fila = 0
				columna = 0
				self.MainWindow.tableWidget_Cola.insertRow(0)
				for item in datos:
					texto = QtGui.QTableWidgetItem(item)
					self.MainWindow.tableWidget_Cola.setItem(fila,columna,texto)
					columna = columna + 1
					#Contamos la cantidad de columnas en la tabla
					if self.MainWindow.tableWidget_Cola.rowCount() > 100:
						self.MainWindow.tableWidget_Cola.removeRow(101)
			#Cambiamos el label de Contador
			filas = self.MainWindow.tableWidget_Cola.rowCount()
			self.MainWindow.label_TotalCola.setText(str(filas))
		except Exception as exc:
			GuardarTXTObjeto.GuardarErrorLog(0,str(traceback.format_exc()))
示例#5
0
 def Iniciar(self):
     #Esta funcion iniciar la creo porque no se puede llamar a run directamente.
     self.ConectarBD()
     while True:
         try:
             #Solo si es Master busca mensajes en la Base de datos
             if self.master == True:
                 self.BuscarMensajes()
             else:
                 pass
             #Pero igualmente al ser Slave Actualiza sus propios Mensajes en BD
             self.ActualizarEnviados()
             self.ActualizarFallidos()
             self.InsertarRecibidos()
             time.sleep(1)
         except Exception as exc:
             GuardarTXTObjeto.GuardarErrorLog('GETSMS Error...',
                                              str(traceback.format_exc()))
             print 'NO DATA BASE CONECTION...'
             time.sleep(10)
             self.Iniciar()
示例#6
0
	def AddMensajeFallido(self,telefono,mensaje,pk,smsfallidos):
		try:
			#Variables para Insertar
			datos = ["1",str(pk),str(telefono),str(mensaje),str(LaFecha.damefechaJerm())]
			fila = 0
			columna = 0
			self.MainWindow.tableWidget_Fallidos.insertRow(0)
			for item in datos:
				texto = QtGui.QTableWidgetItem(item)
				self.MainWindow.tableWidget_Fallidos.setItem(fila,columna,texto)
				columna = columna + 1
			#Eliminamor el primero de la cola
			self.MainWindow.tableWidget_Cola.removeRow(0)
			#Contamos la cantidad de columnas en la tabla
			if self.MainWindow.tableWidget_Fallidos.rowCount() > 100:
				self.MainWindow.tableWidget_Fallidos.removeRow(101)
			#Sumo el numero al Label Contador
			self.MainWindow.label_MensajesFallidos.setText("SMS Fail ("+str(smsfallidos)+")")

			#Actualizar el Label de la Cola
			self.AddMensajeCola()
		except Exception as exc:
			GuardarTXTObjeto.GuardarErrorLog(0,str(traceback.format_exc()))
示例#7
0
 def proceso(self):
     try:
         #Enviamos CTRLZ por quedo enviando SMS, Manual con un TimeSleep para Esperar una respuesta mas tiempo
         self.MODEM.write(chr(26) + "\r\n")
         time.sleep(5)
         #Si hay algo en el Buffer, lo leemos
         if self.MODEM.inWaiting() >= 1:
             self.LeerBuffer()
         else:
             pass
         #Verificamos que quitamos el ECHO
         if self.QuitarEcho() == "OK":
             #Colocamos los Errores Completos
             self.ActivarTextoErrores()
             #Verificamos el Estado de la SIM en el Equipo
             if self.DameEstadoSIM() == "OK":
                 #Verificamos si estamos Conectados a la Operadora
                 if self.EstasRegistrado() == "OK":
                     #Verificamos a que Operador estamos registrados
                     self.DameOperadora()
                     #Verificamos el nivel de señal del equipo
                     if self.DameSenal() == "OK":
                         #Activamos el Modo Texto
                         if self.ActivarSMSTexto() == "OK":
                             self.DameMarca()
                             self.DameModelo()
                             self.DameVersion()
                             self.DameIMEI()
                             self.DameBateria()
                             #Envio la informacion para la StatusBar
                             self.AddInfoStatusBar(self.Marca, self.Modelo,
                                                   self.Version,
                                                   self.OPERADORA,
                                                   self.IMEI)
                             #Vacio la Memoria de SMS
                             #self.VaciarMemoriaSMS()
                             #Coloco el Modem en Status OK
                             self.Status = "OK"
                             #Colocamos el Status en el Label
                             self.StatusToLabel("OK")
                             self.emit(QtCore.SIGNAL("signalCrearServer"))
                             cont = 0
                             while True:
                                 cont = cont + 1
                                 if self.Status == "OK":
                                     if len(globalvars.ColaparaEnviar) >= 1:
                                         #Enviamos Mensajes
                                         self.EnviarSMS()
                                     else:
                                         if len(globalvars.ColaGeneral
                                                ) >= 1:
                                             #if self.Master == True:
                                             if len(globalvars.ColaGeneral
                                                    ) >= 10:
                                                 for i in range(5):
                                                     globalvars.ColaparaEnviar.append(
                                                         globalvars.
                                                         ColaGeneral.pop(0))
                                             else:
                                                 globalvars.ColaparaEnviar.append(
                                                     globalvars.ColaGeneral.
                                                     pop(0))
                                             self.AddTabMensajeCola()
                                             #Para que de tiempo de colocar la cola en la interfaz
                                             time.sleep(1)
                                         else:
                                             self.Imprimir("Read SMS....OK")
                                             self.LeerSMS()
                                             if cont == 1:
                                                 self.AddInfoStatusBar(
                                                     self.Marca,
                                                     self.Modelo,
                                                     self.Version,
                                                     self.OPERADORA,
                                                     self.IMEI)
                                             #Pedimos la senal para comprobar que tengamos
                                             while True:
                                                 senal = self.DameSenal()
                                                 if senal == "OK":
                                                     break
                                                 else:
                                                     self.Imprimir(
                                                         "Not signal operator"
                                                     )
                                                     pass
                                                     time.sleep(1)
                                         #time.sleep(4)
                                 elif self.Status == "ERROR":
                                     #Solo detiene el Cliente si es Tipo Cliente, si es Server sigue corriendo
                                     #Asi no pueda enviar mensajes.
                                     if self.Master == False:
                                         self.emit(
                                             QtCore.SIGNAL(
                                                 "signalDetenerCliente"))
                                     self.Imprimir(
                                         "Notificate Error Send Email...")
                                     break
                         else:
                             #No se pudo activar Modo Texto
                             self.Imprimir("Error 1521")
                     else:
                         #No tiene Senal el Modem
                         self.Imprimir("Error 1522")
                 else:
                     #Problema con la Operadora, No la Consigue
                     self.Imprimir("Error 1523")
             else:
                 #Problema con la SIMCARD
                 self.Imprimir("Error 1524")
         else:
             #No se pudo eliminar el ECHO
             self.Imprimir("Error 1525")
     except Exception as exc:
         excepcion = str(exc)
         GuardarTXTObjeto.GuardarErrorLog(
             self.NumPuerto,
             "Not Comunicate Device... " + str(traceback.format_exc()))
         self.Imprimir("Not Comunicate Device...")
示例#8
0
    def EnviarSMS(self):
        mensajeytelefono = globalvars.ColaparaEnviar.pop(0)
        self.Imprimir("SENDING SMS: " + str(mensajeytelefono))
        mensajeytelefono = mensajeytelefono.split("|")
        telefono = mensajeytelefono[0]
        mensaje = mensajeytelefono[1]
        pk = mensajeytelefono[2]
        intento = 1
        while intento <= 3:
            self.MODEM.write('AT+CMGS="%s"\r\n' % str(telefono))
            time.sleep(1)
            self.MODEM.readline()
            completo = ""
            while True:
                caracter = self.MODEM.read()
                completo = completo + caracter
                if caracter == "\x20":
                    break
            self.Imprimir(completo)
            self.MODEM.write(str(mensaje) + chr(26) + "\r\n")
            while self.MODEM.inWaiting() <= 6:
                time.sleep(0.1)
                pass
            respuesta = self.LeerBuffer()
            self.Imprimir(str(respuesta))
            for i in respuesta:
                if re.match("\+CMS ERROR", i):
                    enviado = False
                    intento = intento + 1
                    GuardarTXTObjeto.GuardarErrorLog(
                        self.NumPuerto,
                        str(respuesta) + " IntentoSMS = " + str(intento),
                        mensaje)

                    #Si van 3 intentos fallidos, se suma a fallidosseguidos
                    if intento == 4:
                        self.FallidosSeguidos = self.FallidosSeguidos + 1
                        #Verificamos si van 10 Fallidos Seguidos para cambiar Status Modem
                        if self.FallidosSeguidos == 10:
                            #Enviamos el Status al Label
                            self.StatusToLabel("ERROR")
                            #Cambiamos el Status para Detener
                            self.Status = "ERROR"
                        break

                    self.Imprimir(
                        "Error Sending SMS...Notificate Email Administrator..."
                    )
                    self.Imprimir("Waiting...")
                    time.sleep(4)

                elif re.match("\+CMGS", i):
                    enviado = True
                    intento = 4
                    #En caso de enviar un SMS, se coloca en 0 fallidosseguidos
                    self.FallidosSeguidos = 0
                    break
                else:
                    #En caso de que no responda algo esperado
                    enviado = False
                    intento = intento + 1
                    #Si van 3 intentos fallidos, se suma a fallidosseguidos
                    if intento == 4:
                        self.FallidosSeguidos = self.FallidosSeguidos + 1
                        #Verificamos si van 10 Fallidos Seguidos para cambiar Status Modem
                        if self.FallidosSeguidos == 10:
                            #Enviamos el Status al Label
                            self.StatusToLabel("ERROR")
                            #Cambiamos el Status para Detener
                            self.Status = "ERROR"
        #Si el PK es simulado es un mensaje simulado que no se guarda. Solo se envia
        if enviado == True and pk != "Simulado":
            self.AddTabMensajeEnviado(telefono, mensaje, pk)
            globalvars.ColaEnviados.append(str(mensajeytelefono[2]))
        elif enviado == False and pk != "Simulado":
            self.AddTabMensajeFallido(telefono, mensaje, pk)
            globalvars.ColaFallidos.append(str(mensajeytelefono[2]))
示例#9
0
	def Iniciar(self):
		print globalvars.Modo
		try:
			if globalvars.Modo == '1':
				self.puertomodem = 23 #sys.argv[1] Es el parametro que llega de afuerta al correo el sistema
				self.BasedeDatos = BasedeDatos()
				self.BasedeDatos.Conectar()
				self.BasedeDatos.SeleccionarUno("""SELECT id_modem,tipo,config FROM t365_Modem WHERE id_modem = ?""", self.puertomodem)
				self.configpuerto = str(self.BasedeDatos.resultado.config).split(',')
				#460800,8,N,1
				self.configmodem = ['23',460800,'8','N','1','1']

			elif globalvars.Modo == '2':
				archivoconfiguracion = open('conf/config.txt','r')
				self.lineaconfig = archivoconfiguracion.readline()
				self.configmodem = self.lineaconfig.split(",")
			
			elif globalvars.Modo == None:
				self.configmodem = 23 #sys.argv[1] Es el parametro que llega de afuerta al correo el sistema
				#Pasando los argumentos a los objetos de PySerial
			self.puerto = 22 #self.configmodem[0]
			self.baudrate = 921600 #self.configmodem[1]
			self.bitesize = 8 #globalvars.nombresPySerial['BiteSize'][self.configmodem[2]]
			self.parity = 'N' #globalvars.nombresPySerial["Parity"][self.configmodem[3]]
			self.stopbits = 1 #globalvars.nombresPySerial["StopBits"][self.configmodem[4]]
			self.modem = 1 #self.configmodem[5].rstrip('\n')

			#Le cambiamos el nombre a la ventana y le colocamos el COM antes del Titulo
			self.setWindowTitle("("+str(self.puerto)+")"+"   .: www.soluciones-sms.com :.")
                        #serial.Serial(int(self.puerto)-1,self.baudrate,eval(self.bitesize),eval(self.parity),eval(self.stopbits))
			self.PuertoCOM = serial.Serial(port='COM22', baudrate=921600, bytesize=8, parity='N', stopbits=1, timeout=None, xonxoff=False, rtscts=False, write_timeout=None, dsrdtr=False, inter_byte_timeout=None)
			#23,460800,8,serial.PARITY_NONE,1)
                             
			print "Modem:"
			print self.modem
			self.modem = '2'
			if self.modem == '1':                                 
				self.modemseleccionado = Modem_EnforaSerial(self.PuertoCOM,self.puerto)
				
				self.modemseleccionado.start()
				self.accionIniciar.setEnabled(True)
				self.accionDetener.setEnabled(True)
				#Creamos el hilo del Server, pero no lo arrancamos si no con una senal desde el mismo Modem cuando compruebe que inicio bien
				self.server = HiloServer()
				#Creamos el hilo del Cliente, pero no lo arrancamos al menos que ya halla server. 
				self.cliente = HiloCliente()
			elif self.modem == '2':
				self.modemseleccionado = Modem_HuaweiUSB(self.PuertoCOM,self.puerto)
				
				self.modemseleccionado.start()
				self.accionIniciar.setEnabled(True)
				self.accionDetener.setEnabled(True)
				#Creamos el hilo del Server, pero no lo arrancamos si no con una senal desde el mismo Modem cuando compruebe que inicio bien
				self.server = HiloServer()
				#Creamos el hilo del Cliente, pero no lo arrancamos al menos que ya halla server. 
				self.cliente = HiloCliente()
			return True

		except Exception as exc:
			GuardarTXTObjeto.GuardarErrorLog(0,str(traceback.format_exc()))
			self.EscribirConsola("Port "+str(self.puerto)+" in use...")
			self.EscribirConsola(str(traceback.format_exc()))
			return False