Está en la página 1de 4

<?

Php / / SMS a travs de mdem GSM - Una clase PHP para enviar mensajes SMS a travs de un mdem GSM conectado al puerto serie del ordenador. / / Slo para Windows (probado en XP con PHP 5.2.6) / / Probado con la EZ863 (Telit GE863) mdem GSM / / Requiere que PHP tiene permisos para acceder a "COM" de dispositivos del sis tema, y ??sistema de comando de "modo" error_reporting (E_ALL); / / Ejemplo $ $ $ $ $ Gsm_send_sms = Gsm_send_sms-> Gsm_send_sms-> Gsm_send_sms-> Gsm_send_sms-> new gsm_send_sms (); debug = false; port = "COM1"; baud = 115200; init ();

$ Status = $ gsm_send_sms-> enviar ('+44123456789', "prueba de 123'); if ($ estado) { echo "Mensaje enviado \ n"; } Else { echo "Mensaje no enviado \ n"; } $ Status = $ gsm_send_sms-> enviar ('+44123456789', "prueba de 456'); if ($ estado) { echo "Mensaje enviado \ n"; } Else { echo "Mensaje no enviado \ n"; } $ Gsm_send_sms-> Close ();

/ / Enviar SMS a travs de un mdem de serie SMS clase gsm_send_sms { pblica $ port = "COM1"; pblica $ baud = 115200; pblica $ debug = false; privado $ fp; privado $ buffer; / / Configuracin de puerto COM funcin pblica init () { $ This-> debugmsg ("Configuracin de puerto: \" {$ this-> puerto} @ \ "{$ this-> b audios} \" transmisin "); exec ("MODO {$ this-> puerto}: Baud = {$ this-> baudios} PARIDAD = N = 8 STOP =

1", $ salida, $ retval); if ($ retval! = 0) { throw new Exception ('No se puede configurar el puerto COM, compruebe que es cor recta'); } $ This-> debugmsg (implode ("\ n", $ salida)); $ This-> debugmsg ("Abriendo el puerto"); / / Abrir puerto COM $ This-> fp = fopen ($ this-> puerto ':'. 'R +'); / / Comprobacin de Puertos abiertos if ($ this-> fp) { throw new Exception ("No se puede abrir el puerto \" {$ this-> puerto} \ ""); } $ This-> debugmsg ("puerto abierto"); $ This-> debugmsg ("Comprobacin de la respuesta del mdem"); / / Comprobar mdem conectado fputs ($ this-> fp, "AT \ r"); / / Espera a que se puede $ Status = $ this-> wait_reply ("OK \ r \ n", 5); if ($ estado) { throw new Exception ('No recibi respuesta del mdem'); } $ This-> debugmsg ('mdem conectado "); / / Establecer el mdem al modo de texto SMS $ This-> debugmsg ("Configuracin de modo de texto '); fputs ($ this-> fp, "AT + CMGF = 1 \ r"); $ Status = $ this-> wait_reply ("OK \ r \ n", 5); if ($ estado) { throw new Exception ('No se puede establecer el modo de texto'); } $ This-> debugmsg ("establecer el modo de texto"); } / / Espera para la respuesta desde el mdem wait_reply funcin privada ($ resultado_esperado, $ timeout) { $ This-> debugmsg ("Esperando {$ timeout} segundos para el resultado esperado"); / / Borrar buffer $ This-> buffer =''; / / Establecer el tiempo de espera $ Timeoutat = time () + $ tiempo de espera; / / Bucle de tiempo de espera hasta que lleg (o resultado que se espera encontrar

) do { $ This-> debugmsg ('Ahora:' time () ", Tiempo de espera en: {$ timeoutat}"..); $ Buffer = fread ($ this-> fp, 1024); $ This-> buffer .= $ buffer; usleep (200000) / / 0,2 segundos $ This-> debugmsg ("Recibido: {$ buffer}"); / / Comprobar si se ha recibido la respuesta esperada if (preg_match ('/'. preg_quote ($ resultado_esperado,'/').'$/', $ this-> buffer )) { $ This-> debugmsg ("Encontrado coinciden '); return true; / / Break; } Else if (preg_match ('/ \ + ERROR CMS \ \ \ d {1,3} \ r \ n $ /', $ this-> buf fer)) { return false; } } While ($ timeoutat> time ()); $ This-> debugmsg ('Tiempo de espera agotado "); return false; } / / Muestra los mensajes de depuracin debugmsg funcin privada ($ mensaje) { if ($ this-> debug == true) { $ Message = preg_replace ("%[^ \ 040 - \ 176 \ n \ t]% ",'', $ mensaje); echo $ mensaje. "\ N"; } } / / Cerrar el puerto public function close () { $ This-> debugmsg ("puerto de cierre '); fclose ($ this-> fp); } / / Enviar mensaje funcin pblica de envo ($ tel, $ mensaje) { / / Filtro tel $ Tel = preg_replace ("%[^ 0-9 \ +]%",'', $ tel); / / Mensaje de texto del filtro $ Message = preg_replace ("%[^ \ 040 - \ 176 \ r \ n \ t]% ",'', $ mensaje); $ This-> debugmsg ("Enviando mensaje \" {$ mensaje} \ "a \" {$ tel} \ "");

/ / Comienza el envo del mensaje fputs ($ this-> fp, "AT + CMGS = \" $ {tel} \ "\ r"); / / Espera para la confirmacin $ Status = $ this-> wait_reply ("\ r \ n>", 5); if ($ estado) { / / Throw new Exception ("No recibi la confirmacin de mdem '); $ This-> debugmsg (no han recibido la confirmacin de mdem '); return false; } / / Enviar mensajes de texto fputs ($ this-> fp, $ mensaje); / / Enva el indicador de mensaje terminado fputs ($ this-> fp, chr (26)); / / Espera para la confirmacin $ Status = $ this-> wait_reply ("OK \ r \ n", 180); if ($ estado) { / / Throw new Exception ("No recibi la confirmacin de messgage enviado '); $ This-> debugmsg (no han recibido la confirmacin de messgage enviado '); return false; } $ This-> debugmsg ("Mensaje enviado"); return true; } } >