problema comandando modem GSM industrial

Oct 28, 2004 14 Replies
¡hola!

Creí que esto de las comunicaciones con el modem sería cosa fácil pero nada mas empezar me he dado en los morros... me explico:



tengo mi modem perfectamente registrado en la red, lo conecto el cable datos al hyperterminal y doy la orden:



atdxxxxxxxx;



siendo xxxxxxxxxx un número de tlf.....



e inmediatamente comienza a sonar el número xxxxxxxxxxxx, osea, que funciona


sin embargo doy la orden desde el pic:



printf ("atdxxxxxxx;\r\n");


pero nada, el (punto y coma) es para que la llamada sea de voz, no es un error, envio el retorno de carro también (\r\n) pero nada,,, no hace nada


¿se os ocurre alguna idea del porque no reconoce la orden?....

Es que me parece muy estraño, que solo desconecto el cable serie, la alimentación sigue activa para que no pierda el registro de la señal GSM, lo unico que hago es darle la orden desde el pic o bien desde hyperterminal. He probado conectar el pic al hyperterminal y la orden aparece bien.



ayuda porfavor!


Conecta el PIc, al Pc, con un MAX232, y mira que estás enviando realmente. Así debugeaba, yo, mis inventos con PIC y modems GSM.

Evidentemente, NO estás enviando lo mismo desde el hyperterminal y desde el PIC. Tal vez te falta un salto de carro, al final de la instrucción.

¿ baja linea en el hyperterminal, cuando recibe la secuencia del PIC ?

Conecta la salida del MAX232, tanto al modem, como al hyperterminal (a los 2 a la vez). Si el comando AT del PIC es erroneo, el modem te devolverá una repuesta de ERROR, que ahora mismo no estás viendo, pero que el hyperterminal, si que mostrará.

hola!

¿que es eso de baja linea el hyperterminal?....

gracias!

El salto de carro. Si envías varias veces el comando AT que hayas programado en el PIC, cada instrucción debe provocar un salto de linea. Es para verificar que estás enviando un salto de carro, al final de cada comando.

De todas formas, conecta ambos en paralelo (modem e hyperterminal), y el modem te mostrará en el hyperterminal un ERROR, si el comando AT del PIC es incorrecto.

Carmelo J. Morales Muñoz expuso:

Yo no tengo mucha idea de módems GSM, pero lo que has escrito no tiene muy buena pinta. Yo probaría con: printf ("atdxxxxxxx;\n"); printf ("atdxxxxxxx;\n\r");

Más que nada que \n es el retorno de carro por excelencia. El \r se añade a los textos de Windows pero creo que podría ser que el módem no lo interpretara como retorno de carro o interfiriera con la sintaxis del comando. De hecho creo recordar que si envías algún otro carácter mientras está llamando y conectando (ATD), se cancela la conexión, de eso no estoy seguro porque tengo muy mala memoria, pero creo recordar que al pulsar alguna tecla en hiperterminal mientras está llamando se cancela.

ah!... ahora lo entiendo... muchas gracias....

lo probaré.... me parece muy buen truco para verificar... te comentaré lo que saque en claro!

"Carmelo J. Morales Muñoz" schreef in bericht news:00cgd.167079$ snipped-for-privacy@news-reader.eresmas.com...

Line feed, o sea \n. El caracter \r es retorno de carro. Podrias probar enviando solo \n al final. o enviando solo \r. No se exactamente cual de los caracteres indica al modem ejecutar el comando. Seguro es un donde estan LF y CR. Aunque dudo que un modem necesite de los dos comandos. Tambnien hay compiladores que \n lo compilan como LF CR. Probablemente ande por ahi el problema.

Saludos,

Ya nos contarás.

Así lo hice yo, cuando estuve trasteando con GSM y los PIC. También mis primeros desarrollos no iban ni a tiros, y me llevaron loco unos días.

Es cuando se me ocurrió monitorizar lo que enviaba el PIC al modem, conectándolo, a la vez al PC, para visualizar los comandos en el hyperterminal. Mano de santo, fué un sistema de "debug", que me ahorró muchos quebraderos de cabeza.

Normalmente, si a un modem GSM le envías un comando que no existe o con una parametrización incorrecta, te devuelve un ERROR, y a veces, acompañado de alguna indicación del motivo que ha causado el error (aunque es muy parco en ese sentido).

El problema parece mas grave..... me explico....

Resulta que si llamo al modem por tlf desde el movil, debería de enviar RING a cada tono de llama........

pues ni eso, no recibo nada, de nada, ya que hay un led que parpadea cuando recibe algo.

El caso es que he realizado un programa para capturar lo que tecleo en hyperterminal, que lo lee el pic y lo devuelve nuevamente y va bien.

Esto es de lo mas raro que he visto,

he probado a poner otras velocidades, 2400,4800,9600... pero todo igual...

Haré lo del doble puerto a ver que veo...

"Carmelo J. Morales Muñoz" escribió en el mensaje news:Dwbgd.167075$ snipped-for-privacy@news-reader.eresmas.com...

nada

datos

funciona

es

nada

lo

He

Eso creo recordar que hay que activarlo con un comando AT. Además, si abres el Audiotel, el modem de Siemens que incorpora (creo que es un TC35), tiene una patilla que se pone a nivel alto cuando recibe tono de llamada, puedes usarla también, para despertar al PIC.

¡Hola!

Supongo que debe de estar activado, porque conectando el modem al hyperterminal, cuando llamo a éste aparece RING

Tengo una sospecha, que el modem no esté configurado o no detecte la velocidad de transmisión a la que le habla el pic, y que con el terminal si la detecte bien.

Voy a mirar la documentación a ver si existe algún comando mediante el cual pueda indicar directamente la velocidad del puerto, no la de conexión, es decir, poder decirle que en db9 vaya a 9600 sin que tenga que averiguarlo él, ahi puede estar el problema.. ¿que opinas?.

bye!

¡ quieto parao !

Los comandos que se envian al modem se envian con *solo* el retorno de carro, es decir el asci 13, representado por "\r" en C, no añadas el avance de linea "\n", porque eso puede abortar la ejeccion del comando.

El particular con ATDT, este comando tarda un rato en ejecutarse, si se reciebe mientras tanto un avance de linea o cualquier otro caracter, se corta la llamada.

Es posible que tengas además un problema físico de conexion, el problema puede estar en tantos sitios que así a ojo es deficil de decir lo que pasa.

El RING en principio debe aparecer siempre, no se activa de ninguna manera, está activado siempre.

De todas formas es conveniente que nada más arrancar el programa mandes un "AT\r" y compruebes que devuelve "OK" (o "AT\r\r\nOK\r\n"), el modem ha de saber de algun modo cual es la velocidad del interface serie, y generalmente se autoconfiguran al recibir un comando AT.

Tampoco estaria mal saber que clase de modem es, es un modem fijo, un gsm, lleva interface serie, o un conector propietario, etc....

Si puedes conectar el modem al PC y prtacticar un poco antes de conectarlo el PIC, mucho mejor.

Bueno la velocidad no la detecta automaticamente el modem, deben de coincidir en ambos dispositivos, además de la configuración de la trama.

No se que entiendes por velocidad del puerto y por velocidad de la conexión, yo creo que es lo mismo. Si configuras ambos a 9600, con la misma configuración del bit de start, stop, etc... deben entenderse sin problemas.

De todas formas, prueba lo que te dije, verás de inmediato, si el modem rechaza el comando AT, que le envía el PIC. Y en caso de rechazarlo, puede darte una pista del ERROR (no siempre).

RooT expuso:

Sí, ya sé que va al revés, pero para probar que no quede. Mejor hubiera puesto la \r sola en vez de ponerlo al revés, así:

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required