Over the last few months I have been getting a number of programming examples for gprs Siemens modems (TC65 and XT65) and for terminals  (TC65T, MTX65 and MTX65+G) both distributed by Matrix in Spain.

Today it’s Saturday and I’m going to give you a set of examples from these modems so that they are there when you need them. The majority of them can be found in previous posts although there are a few new ones.

They are quick examples i.e. I don’t completely run all of the exceptions or anything but if you are just starting out with these modems, I think this may be a good guide. You will see that the vast majority of applications that you can get for real projects are based on small tasks, which is what the following examples show:

Programación java Siemens

Here we go; these are the examples that are in the blog:

EXAMPLE_HelloWorld (Download)

Description: All this basic application does is take information from the modem’s standard output. First you have to configure the standard output with the command AT^SCFG for example AT^SCF=”Userware/Stdout”,””,”ASC0″

Valid for modems: TC65, XT65, TC65T, MTX65 and MTX65+G

EXAMPLE_SMS (Download)

Description: Basically what this example does is send an SMS to a specific phone number every minute.

Valid for modems: TC65, XT65, TC65T, MTX65 and MTX65+G

EXAMPLE_Thread (Download)

Description: The program launches a thread, what this does is count up to 5 taking the result from the standard output. The program waits for the end of the thread before finishing.

Valid for modems: TC65, XT65, TC65T, MTX65 and MTX65+G

EXAMPLE_Timer (Download)

Description: This example creates a 5 second timer i.e. every 5 seconds it runs task, what it does is take data from the modem’s standard output.

Valid for modems: TC65, XT65, TC65T, MTX65 and MTX65+G

EXAMPLE_GPIO (Download)

Description: It shows how to configure a GPIO input and output with Java, e.g. changing the GPIO output status or how to read the input.

Valid for modems: TC65, XT65, TC65T, MTX65 and MTX65+G

EXAMPLE_TCPConnection (Download)

Description: This shows how to create a TCP/IP connection with the AT command class. The example creates a connection with a socket that connects to Google’s IP; it sends a frame through the socket and receives a string through the socket which shows the standard output.

Valid for modems: TC65, XT65, TC65T, MTX65 and MTX65+G

EXAMPLE_TCPConnection2 (Download)

Description: It shows how to create a TCP/IP connection using Java classes themselves. The example creates a connection with a socket that connects to Google’s IP. It sends a frame through the socket and receives a string through the socket which shows the standard output.

Valid for modems: TC65, XT65, TC65T, MTX65 and MTX65+G

EXAMPLE_Files (Download)

Description: This shows how to create a file in the modem’s flash memory, how to write data in it and read the data too.

Valid for modems: TC65, XT65, TC65T, MTX65 and MTX65+G

EXAMPLE_GPS (Download)

Description: This shows how to use GPS with the AT command class. The boot up program activates the GPS and it programs it to receive a URC with the position every 5 seconds. This position is stored in a variable and it also shows the standard output.

Valid for modems: XT65 and MTX65+G

EXAMPLE_GPS_JSR179 (Download)

Description:

This example briefly shows how to capture a GPS position without using the AT commands class i.e. using the JSR179’s Location class.

Valid for modems: XT65 and MTX65+G

EXAMPLE_HTTP (Download)

Description: This example creates a GPRS connection and uses the Java class HttpConnection that is downloaded and shown through Google homepage’s standard output

Valid for modems: TC65, XT65, TC65T, MTX65 and MTX65+G

EXAMPLE_SerialPort (Download)

Description: This shows how to use the modem’s serial port/s with Java. It opens the two serial ports ASC0 and ASC1 and whatever it receives at ASC0 at 115200 bauds is retransmitted by the ASC1 at 57600 and vice versa. It’s designed for the TC65 but it is used to see how to operate the XT65’s ASC0 port.

Valid for modems: TC65, TC65T and MTX65 (XT65 and MTX65+G only 1 serial port).

EXAMPLE_Watchdog (Download)

Description: This shows how to use the TC65v3’s new Watchdog. The program has up to 25000. After 10000 the program stops refreshing Watchdog so that you see how to reset it after 15 seconds.

Valid for modems: TC65, TC65T and MTX65 (with version 3.0 de firmware)

I hope that you find these examples useful. I will try to put more on soon related to low power modes and FTP.

So congratulations to those of you who are on holiday and to those who aren’t like me, cheer up we’re almost there! ;) See you next time!


Post relacionados:

  1. FTP Java Example for Siemens Modems Today I am going to write a small post with...
  2. Java Email Example for Siemens/Cinterion Modems This morning I spent a while testing sending emails through...
  3. Java Application Autostart in Siemens Modems Today I am writing a small post to do with...
  4. Adding Data to Files from Java with Siemens-Cinterion Modems On several occasions I have been asked how to add...
  5. InPort and OutPort Java Classes for Cinterion GPRS Modems and MTX Terminals As we saw some time ago, new Java classes have...








Tags: , , , , , , ,
157 Responses to “(Español) Ejemplos Java para módems de Siemens”
  1. borjaga says:

    Muy interesante este artículo, sobre todo para los que estamos empezando a hacer aplicaciones en J2ME con estos modems! ¿Sabes si existe algún tipo de emulador para estos modems de Siemens?
    Por cierto ya me funciona el MES :D , era cuestión de permisos a la hora de instalarlo!

    Salu2,

    Borja.

  2. blogElectronica says:

    Muy buenas borjaga,

    me alegra que te sean de utilidad los ejemplos y que te funcione el MES. Era muy extraño ese error que te daba, de hecho nunca lo había visto antes. El hecho de que te ocurriera el error incluso sin tener conectado el módem, apuntaba tema soft …

    Y respecto a los emuladores, no conozco ninguno. Si no es indiscrección ¿para qué estás interesado en un emulador?

    Salu2.

  3. borja says:

    Hola,

    Estoy interesado en un emulador para no tener que pagar una conexión GPRS, mientras desarrollo aplicaciones en mi tiempo libre. Por cierto estaría muy bien un artículo de cómo se debuga con los modems GPRS de Siemens :D .

    Salu2

  4. Jose says:

    Muy muy interesantes estos articulos, sobre todo para alguien que empieza con los modems de siemens que es mi caso.

    Sobre los ejemplos, que es mejor para crear una conexion gprs, usar comandos AT o crearla con las clases del WTK? y para mandar y leer datos, los comandos AT SISW y SISR o utilizar metodos de java? Desde mi punto de vista es mas facil usar AT y gestionar la lectura de datos con URC, pero no se si es lo mas correcto o lo mas rapido. Agradeceria muchisimo una respuesta.

    Un saludo

  5. blogElectronica says:

    Muy buenas Jose,

    a ver, en principio sería mejor hacerlo con las clases de Java, pues creo que la clase ATCommand hace uso de estas. De todas maneras conozco empresas que utilizan un tipo y el otro tipo, y ambas van bien. A mi la clase ATCommand me gusta por la sencillez, y pq me resulta más cómodo, pero utilizar las clases de java debería ser más rápido, para transmisiones largas.

    Salu2

  6. Carlos says:

    ¿Se puede lanzar un *.jar desde otro *.jar?
    Si es posible, se dejaría de correr el primer programa para correr el segundo o correría el segundo anidado dentro del primero?

    Saludos

  7. blogElectronica says:

    Hola Carlos,

    no se puede. Como mucho puedes configurar el autoexec del comando AT^SCFG para que al finalizar una aplicación se arranque la otra.

    Salu2

  8. Luis says:

    Hola,

    hay alguna manera de enviar archivos a traves del puerto com y comandos AT?

    Salu2

  9. blogElectronica says:

    Hola Luis,

    no se si te entiendo. Si te refieres por FTP, sí, puedes hacerlo. En el manual de comandos AT tienes un ejemplo.

    Salu2.

  10. Luis says:

    Hola,

    Gracias por tu respuesta.

    Por ftp me imagino que sera como con OTAP?.

    Lo que yo quiero saber es si conecto el modulo al ordenador es posible enviar archivos al modulo sin necesidad de ir a mi pc, module…. y luego pegar el archivo.

    Gracias y saludos!

  11. blogElectronica says:

    Hola Luis,

    mírate uno de los últimos comentarios de Pua en:
    http://www.blogelectronica.com/otap-siemens-tc65/

    puedes utilizar el protocolo Obex, pero no lo he utilizado nunca para nada distinto a lo del bluetooth, por lo que aquí no te puedo ayudar.

    Salu2.

  12. faru says:

    Muy buenos los ejemplos, tenes alguno enviando datos por HTTP con POST?

    Desde ya muchas gracias.

  13. Pua says:

    hola Luis,

    si tienes instalado el MES, puedes utilizar los comados y hacerte un bath que copie/borre/reemplace los ficheros.
    En el directorio de instalación del MES podrás encontrar estos ficheros ejecutables

    Salu2

    Pua

  14. davidgamo says:

    Hola Jose,

    Muchas gracias por los ejemplos y la dedicación a este blog.

    estoy probando el ejemplo del uso de los puertos serie ASC0 y ASC1 en un MTX-65 v2.0.

    Desde ambos puertos serie puedo enviarle comandos AT al dispositivo y me responde correctamente. Cuando programo el ASC1 para que envíe una secuencia de bytes y monitorizarlo en un PC, funciona correctamente.
    Cuando programo el ASC0 para que envíe una secuencia de bytes y monitorizarlo en un PC, no envía nada.

    ¿Que está ocurriendo? ¿Debo configurar algo?

    Saludos.

  15. blogElectronica says:

    Hola Faru,

    pues por el momento no tengo ninguno. Intentaré hacer algún ejemplo y colgarlo cuando tenga un rato.

    Salu2

  16. blogElectronica says:

    Hola davidgamo,

    pues muchas cosas no deberían poder pasar. Bien que no utilices un cable correcto (debe ser un DTE-DCE), bien que no esté bien configurado el puerto serie del PC a los baudios adecuados, o bien que tengas activado el control de flujo en un lado y el otro no. Haz una prueba rápida desactivando el control de flujo en ambos equipos. En el MTX hazlo poniendo a off el autocts y autorts que puedes ver en los ejemplos.

    Salu2.

  17. David says:

    Hola Jose,

    poniendo a off autocts y autorts funiona correctamente!!!

    Muchas gracias.

    Saludos.

  18. Sergi says:

    Hola,

    Estoy utilizando un XT75(MTX-65+) y creando una aplicación java para ello. Sé que ya se ha hablado de esto en algun otro post pero sigo sin conseguir que me funcione. Mis preguntas son las siguientes:

    - Se puede visualizar los System.out por la Consola de Eclipse cuando se ejecuta un jar?
    - Qué hay que configurar para poder debugar una aplicación? Tengo el la conexión de red “Ip for remote debugging” pero no consigo conectarme con el modem. Consigo descargar los ficheros pero cuando quiere inicializar el debug me dice “Wrong initialization response received from the module”.

    Alguna sugerencia?

    Sergi

  19. Rogelio says:

    Hola,

    ¿Es posible correr en el siemens un servidor http que acepte conexiones?

    Muy bueno el blog.

    Saludos,
    Gracias,
    Rogelio

  20. blogElectronica says:

    Hola Sergi,

    Respecto a la primera pregunta creo que la respuesta es no, o al menos yo siempre la saco por procom (hyperterminal). Respecto a tu segunda cuestión ¿Tienes la guia de debugging del TC65? Si no la tienes te la puedo hacer llegar, ya que hay varias cosas a tener encuenta a la hora de debuggar.

    Salu2.

  21. blogElectronica says:

    Hola Rogelio,

    Pues un servidor muy simplón http currado por ti entero sí, no veo inconvenientes. Hoy mismo se lo he comentado a Netflanders:
    http://www.blogelectronica.com/que-es-la-tenologia-gprs/#2824

    Tal vez haga un ejemplo muy simple y lo cuelgue en el blog.

    Salu2

  22. Sergi says:

    Hola BlogElectronica,

    Muchas gracias por tu respuesta. No lo hice en mi otro comentario pero debo agradecerte por la info que pones en este blog pq realmente es de mucha ayuda. Respecto a la guia de debug ya la tengo pero no he conseguido hacer funcionar el debugging. Los pasos que he seguido son:

    1) Instalar el WTK en mi ordenador (se crea una conexión telefonica en Conexiones de Red)

    2) Instalar Eclipse, el plug-in EclipseME

    3) Crear una aplicación del estilo “Hello world”, compilarla y debugar.

    Me parece que hay que entrar el PIN antes de debugar

    He conseguido ejecutarla y “debugar” viendo el resultado en el HyperTerminal. ;) El problema es que me gustaría conectar el módem con un microcontrolador via RS-232 y necesito saber lo que corre en el bus. Para ello he preparado un programa que podría hacer de “bridge” entre ambos pero me gustaría debugar para poder conocer que es lo que recibe el modem.

    La secuencia de inicialización que obtengo de Eclipse es la siguiente:

    ================================
    Starting XT75 emulator for debugging application. Please wait …
    ================================

    COM port used for “emulator session”: COM4

    Configure USB port..
    >>> Starting Download of Jar and Jad file… >> Establishing TCP/IP connection “IP connection for remote debugging”…

  23. Sergi says:

    Parece que no ha entrado todo el comentario. Quería agradecerte este blog porque es de mucha ayuda. Está muy bien explicado.

    Muchas gracias

    Sergi

  24. Grande says:

    Hola, ante todo enhorabuena por el blog, es completisimo, pero aún así no he encontrado nadie que le suceda algo parecido a lo que me sucede a mi:
    Estoy trabajando con el MTX65, mi aplicacion debe mandar mensajes de unos 400 bytes via GPRS, un mensaje cada 2 segundos, y en esos mensajes debe aparecer la regerencia geoestacionaria (coordenadas GPS+hora) entre otros datos que recibo por el puerto serie, pues funciona muy bien, hasta que llega un momento que me salta un error en la funcion sendAT del tipo ‘IllegalStateException’ de la clase ATcommand. No se si tendrás idea de a qué puede deberse esto.

    Muchas gracias de antemano.

    Nota post post: Perdona si te he duplicado el comentario pero la otra entrada me he dado cuenta que era más antigua que esta.

  25. blogElectronica says:

    Hola Grande,

    es muy complejo saber lo que te ocurre sin ver el programa. ¿Has establecido alguna pauta para que te aparezca el error? ¿Estás utilizando la clase ATCommand para enviar datos GPRS o la clase SocketConnection? ¿Para la lectura del GPS utilizas ATCommand o la JSR179? ¿Al hacer qué con la clase ATCommand te devuelve el error (enviar datos, leer GPS, …)?

    Salu2.

  26. Grande says:

    Hola de nuevo, tanto para GPS como para GPRS utilizo la clase ATcommand. El error se produce al intentar enviar con ‘at^sisw’. He intentado usar la clase SocketConnection pero no logro enviar nada a mi servidor.. he usado tu ejemplo tal cual, cambiendo solo la direccion del servidor y el puerto. La lectura del GPS la hago con ‘at^sgpsp=2′ y la capturo con la clase ATevent. Espero haberte podido prorporcionar mas datos para que puedas echarme una mano. Gracias por tu interes.

  27. Grande says:

    Creia que el error podia deberse a que ejecutaba un comando at antes de que se terminara de ejecutar otro comando ( necesito mandar muchos mensajes GPRS, uno cada 2 segundos aproximadamente), pero he puesto todas las llamadas a la clase ATcommand en el mismo hilo, asi que no deberia pasar y sin embargo me sigue saliendo el error. Me sucede cuando el equipo lleva un tiempo funcionando, rara vez salta el error al principio. Pero no me aparece ningun error de desbordamiento de pila ni nada por estilo.

  28. blogElectronica says:

    Hola grande,

    según leo en los manuales:

    “IllegalStateException”

    Signals that a method has been invoked at an illegal or inappropriate time. In other words, the Java environment or Java application is not in an appropriate state for the requested operation.

    Por lo que en algún instante estás enviando un comando AT con la clase ATCommand en un mal momento. ¿No estarás enviando algún comando AT de forma asíncrona aunque lo tengas todo en el mismo hilo? Es decir, no estarás también enviado comandos AT en un timer o en la clase ATevent? ¿Enviando qué comando te falla y cual es el comando previo?

    Salu2

  29. Grande says:

    Inicialmemte si enviaba AT en la clase ATevent, pero lo quite, y en el TImer no uso ATcommand. Lo que si tengo abierto es el puerto serie pues necesito mandar por GPRS lo datos que recibo por dicho puerto. Tengo pues un hilo dedicado exclusivamente a la recepcion por el puerto serie, pero no uso ATcommand en ese hilo, solo lo uso en la clase principal. Los comandos que ejecuto son tres principalmente, ‘at^siso’ para comprobar la conexion, ‘at^sisw’ para enviar el mensaje y ‘at^sisr’ para leer el buffer. El error siempre se produce en torno al uso de AT^SISR, osea el ejecutar el propio comando o al ejecutar el comando posterior. Se me ha ocurrido parar el hilo del RS232 durante el envio y recepcion GPRS, y parece que va mejor pero esta solucion no me convence porque me ralentiza el programa ya que pierdo datos, (los que no se reciben por el RS232) y debo esperar otra vez que lleguen esos datos para poderlos enviar.
    No se si me habré explicado con claridad para que me puedas echar una mano, no obstante te reitero las gracias por el interes que muestras. Enhorabuena por la idea del Blog y por lo bien que lo llevas.

  30. blogElectronica says:

    Hola Grande,

    te envío por email un ejemplo que puede ser de tu interés. Dale un vistazo. Entiendo tu problema, pero si me dices que sólo tienes 1 hilo con ATCommand …, no se me ocurre decirte otra cosa que uses las clases de java para el socket o controles la excepción. El ejemplo que te envío utiliza la clase socketconnection.

    Salu2

  31. Superlópez says:

    Hola blogelectronica,

    ante todo, enhorabuena por vuestro magnífico blog. Utilizo el TC65 de Siemens y tengo una pregunta sobre el ejemplo de SMS, quizá fácil de responder, pero es que acabo de llegar a esto:
    He cargado el ejemplo en el TC65 y como única respuesta me imprime por pantalla “Recibido otro URC: ^SYSSTART”, ni siquiera se ejecuta la configuración inicial. ¿Cómo puedo solucionarlo? Muchas gracias.

  32. Superlópez says:

    Hola de nuevo,

    con respecto al comentario anterior, no sólo es que aparezca lo del SYSSTART, es que también el hyperterminal queda bloqueado y no puedo introducir ningún comando AT más. Espero vuestra ayuda.

    Un saludo

  33. blogElectronica says:

    Hola Superlópez,

    cuando, desde apagado, enciendes el módem, antes de ejecutar la aplicación java, recibes el ^SYSSTART ? ¿Por casualidad no tendrás configurado el módem en autobauding (AT+IPR=0)? Si lo tienes en autobauding ponlo a AT+IPR=115200. ¿Qué versión de TC65 tienes (comando ATI)?

    Salu2.

  34. Superlópez says:

    Hola,

    Tengo la versión 3 del TC65.

    La señal de ^SYSSTART la recibo correctamente, y el bitrate es de 115200.

    ¿Podría ser que el URC ^SYSSTART bloqueara la salida del programa y por eso en el hyperterminal no se pueda introducir ningún comando más? Gracias.

    Un saludo.

  35. Superlópez says:

    Hola,

    ya se ha solucionado el problema del bloqueo:

    Como los mensajes no se enviaban introduje algunas trazas por el programa y comenté la llamada a destroyApp.

    Sin embargo, los mensajes siguen sin enviarse, no llegan al teléfono. Le echaré un vistazo al post de PDU y revisaré la configuración en los AT.

    Saludos y gracias!!!!!

  36. Pablo says:

    Alguien sabe cómo se envía un mail a traves de un servidor de correo son SSL activado?? Sé enviar mails a través de servidores normales pero si tiene este tipo de seguridad me da error.
    Alguna idea?
    Gracias!

  37. Superlópez says:

    Hola,

    una preguntilla, estoy implementando un método que imprima por pantalla un SMS cuando llega al TC65.

    Al recibir el +CMTI extraigo el índice del mensaje, lo convierto en string y con send (String) lo envío.

    ¿Con el método send (String) es posible obtener respuesta del comando, es decir, si con send (String) envío el comando AT+CMGR y el índice del mensaje se debería imprimir por pantalla? Es que yo sólo consigo cambiar parámetros de comandos.

    Saludos

  38. Oskar Fisco says:

    buen dia,

    excelente blog, se nota que es mantenido por alguien que sabe del tema y muy suelto con su know how.
    Me asalta una duda, ¿cómo apago el gps?, es decir, lo activo, tomo las coordenadas y lo envio a un server via http, y después de eso apagar el gps y desconectar de internet, tengo el XT75.

    Y lo estoy tratando de hacer uniendo los dos ejemplos que tienes publicados, el de http y el de gps.

    Gracias por lo que me puedas ayudar.

    PD:Excerlente blog :P

  39. blogElectronica says:

    Hola Superlópez,

    a ver …

    … “que imprima por pantalla” …
    … “Con el método send” …

    tienes que pensar que quien lee un post no sabe a qué te refieres y hay que ponerlo todo muyyy clarito, pq eso de por pantalla yo no se si estás haciendo el programa para un PC que se quiere comunicar por puerto serie con un módem, o estás haciendo un programa java por un módem y donde dices pantalla quieres decir puerto serie. Lo mismo con lo del método send. Método send ¿de qué clase? ¿de la clase ATCommand?

    Si lo que te refieres es que si por ejemplo al hacer:

    str = atc.send(“AT\r”);

    en str puedes recibir un “OK” la respuesta es sí.

    Si lo que quieres es sacarlo por la salida estandard, puedes hacer un:

    System.out.println(str);

    Salu2.

  40. blogElectronica says:

    Hola Oskar,

    lo puedes apagar con el comando AT^SGPSS, dale un vistazo al manual de comandos AT a ese comando y verás los parámetros para apagarlo.

    Salu2.

  41. Superlópez says:

    Hola blogElectronica,

    gracias por tu aclaración. Lo siento mucho, pero es la primera vez que expongo dudas de programación en un blog y la inexperiencia se nota :(

    El programa en Java lo implemento en un PC (con Eclipse), que se comunica por puerto serie con el módem TC65 versión 3. El SMS lo envío desde un móvil al TC65 para imprimirlo por la pantalla del Hyperterminal, cuya salida está asociada a ASC0.

    Bien, para todo esto utilizo la clase ATCommand. He añadido al código la implementación de la interfaz ATCommandListener y la activación de los URC para SMS (at+cnmi=3,1,2,0,1) que tú proporcionas en este post. He mirado los parámetros de este comando pero creo que la combinación que mejor viene es esta.

    En mi método, para imprimir el SMS por el Hyperterminal, capturo el índice del mensaje, proporcionado por +CMTI. La captura la hago con el método charAt de la clase String. Luego con el método send de la clase ATCommand envío at+cmgr con el índice que he capturado.

    Y luego, al ejecutar y enviar el SMS desde el móvil:

    Llega el +CMTI, pero el mensaje de “Recibido el URC de SMS entrante” que está programado en la implementación de ATCommandListener no se imprime. Tampoco se imprime el SMS recibido.
    El caso es que si llega otro URC que no sea ni RING ni CMTI sí imprime el mensaje asignado, “Recibido otro URC”.

    El método para imprimir el SMS lo he colocado en startApp, dentro de un bucle que cuenta hasta 100 segundos, para que en ese tiempo reciba el SMS y lo imprima, así que no creo que el problema sea porque la aplicación acabe.

    ¿Puede ser que esté haciendo algo mal al capturar el evento? Bueno, por supuesto he creado un objeto ATCommand y con addListener he añadido un objeto de la implementación de ATCommandListener.

    Espero haberme explicado mejor. Muchas gracias y saludos.

  42. Sito says:

    Una pregunta…

    Como leches hago para que me salga el debugging! cuales son los pasos a seguir, por que me he descargado un ejemplo y me funciona el debugging perfectamente, pero en el momento que toco cualquier cosa, luego ya me sale el mensaje de “No debuggin session is started!”.

    no sé ya que hacer chicos!!

    Gracias!
    Sitol.

  43. blogElectronica says:

    Hola Superlópez,

    sí, te has explicado muy bien. El caso es que dices que “llega el +CMTI” y el mensaje no se imprime. No me cuadra mucho que sí recibas el evento y no se muestre en pantalla. ¿Es decir, si realizas una llamada perdida al módem, no te muestra por pantalla el URC de llamada entrante????

    Puedes probar sin tener java corriendo, es decir, con la configuración apropiada y conectado el módem al hyperterminal, llamar al módem y enviar un SMS y comprobar si con el hyperterminal recibes los URCs? ¿Has probado con otra SIM sin pin?

    Salu2

  44. blogElectronica says:

    Hola Sito,

    la verdad es que, y ya es una opinión mía, resulta un tanto tedioso y terriblemente lento trabajar con el debuging del Eclipse. Casi todas las empresas que conozco que desarrollan estas aplicaciones acaban usando el típico debugging por trazas (System.out.println) de toda la vida. Yo mismo rara vez utilizo el debug.

    No comentas que plataforma estás utilizando. Si no estás debugando por USB (si no por serie) te aconsejo que lo hagas.

    Salu2

  45. Jose says:

    Hola,

    He mirado la informacion que has subido, pero aun no logro iniciar el eclipse con el emulador del Xt75, he seguido la instalacion sujerida en el Java User Guide, pero se me pieden las librerias, cuando actualizo desde el sitio de eclipseme, tampoco funciona. Yo se que es muy basico pero, no lo he logrado poner a funcionar con el emulador, por que aun no tengo el Xt75; si me pudieras ayudar te agradeceria mucho, tambien mire los videos basicos que has subido para la configuracion del eclipse.

    No se si por tanto tratar de hacer que funcionara haya dañado el eclipse.

    Muchas gracias.

  46. Pua says:

    Hola Sito,

    Hay una opción, depende de tu IDE, para dar mas tiempo y mas memoria al debugger.

    Con el tiempo que viene por defecto aplicaciones algo mas completas que un HelloWord no darán tiempo a que el debug se inizialize

    Salu2

    Pua

  47. fredy says:

    Cuales seria los pasos para establecer una comunicacion GPRS entre dos modems conectados un microcontrolador-modem y en el otro extremo modem-pc.
    Como configuro cada uno
    si me pudieras dar los pasos,te agadeceria
    manejo transmision de datos via sms,asi que tengo bastante experiencia en comandos at,mi interes es poder transmitir datos de temperatura via gprs y se recibidos por otro modem conectado a un pc,no a pagina web,si no a traves de una aplicacion en VisuAL bASIC.
    He desarrollado todo esto pero via SMS,y me gustaria migrar a GPRS
    gracias
    sOLAMENTE NECESITO EL PROTOCOLO QUE HAY QUE SEGUIR CON LOS COMANDOS A USAR EN CADA PASO
    SALUDOS
    fredy leon
    fraln7@gmail.com

  48. Oskar Fisco says:

    Hola,

    Gracias por la respuesta, es que de verdad soy muy novato jeje.
    Ahora tengo otra duda, la idea es tener el modem XT75 tomando datos por el rs232, por otro lado tener una aplicacion server que reciba estos datos, y ademas de ello un cliente del server en el cual se puedan pedir los datos en linea. Ahora enviarlos desde el modem al server ya lo logre, lo que necesito es que en el momento que se requieran estos datos, hacer la peticion del server al modem, para que este responda, existe alguna forma?

    De antemano te agradezo

  49. blogElectronica says:

    Hola Oskar,

    por supuesto puedes poner hasta 2 sockets listeners (server) en el módem. El problema de tu aplicación reside en descubrir la IP que te ha asignado el operador. Tal vez tengas que montarte algún mecanismo de envío y recepción de la IP por mensajes SMS, o implementar tu mismo DDNS. Si utilizas una SIM con IP fija es mucho más fácil.

    Salu2.

  50. Paul says:

    Algun ejemplo q implemente una conexion serie por el bus I2C ?
    Tendras alguna sugerencia sobre q familia de integrados puedo usar para conectarme a traves de esta interfaz, necesito pasar solo unas pocas palabras de 4 bits a una velocidad aproximada de 5 palabras por segundo.
    Gracias

  51. Oskar Fisco says:

    hola,

    medio entiendo, pero me asaltan dudas, la primera al poner sockets listeners en el modem, constantemente estoy consumiendo el plan de datos???, segundo como se cual es la ip de la sim, se le pide al operador, o existe manera de tomarla desde java??? y por ultimo si en algun momento tienes un poco de tiempo y me pudieras ilustrar con un ejemplo no caeria mal xD :P :P

    Muchisimas gracias hombre

  52. dani says:

    Hola,

    Muchas gracias por tus ejemplos resulta de mucha utilidad.

    Además de para felicitarte escribo para comentar un pequeño problema que he tenido con uno de ellos y no se si soy el único.

    En el EJEMPLO_GPS_JSR179 en el motinor que va controlando si la posición es correcta o no y lo saca por la salida estandar. En este monitor se comprueba si (Location) l.isValid() y se imprime un mensaje o otro dependiendo de si la posición es valida o no. El problema que se me ha presentado es que en la primera ejecución l=null por lo que el monitor se muere y no realiza su función. Este problema se soluciona con un pequeño if que compruebe si l !=null.

    De nuevo muchas gracias.

    Salu2. Y buen fin de semana a todos.

  53. Oskar Fisco says:

    hola,
    ademas de la duda anterior tengo otro problema, intento tomar los datos del RS232 y enviarlos via http y no me funciona, pero si hago las cosas por separado si, es decir, si solo tomo los datos funciona, y si solo envio por http funciona, pero al momento de unirlos me dice Profile could not be activated, si me pudieras ayudar seria sacarme de tremendo lio jaja

    gracias

  54. blogElectronica says:

    Hola Paul,

    dentro de poco colgaré un ejemplo I2C.

    Salu2

  55. blogElectronica says:

    Hola Oskar,

    no, poner los sockets en modo listener no consume el plan de datos (bueno, los planes normales profesionales de datos van por volumen de tráfico, aunque hay algunos que van por tiempo, ojo)

    La IP de la sim te la asigna el operador si es dinámica. Puedes pedir una fija también. En cualquier caso la puedes saber con el comando AT^SICI=0

    ¿¿ejemplos?? pero si tienes muchos por el blog.

    Respecto a tu problema con la simultaneidad de RS232 y http es debido a tu programa, el módem lo permite. Revísalo.

    Salu2.

  56. Marc says:

    Hola,

    En primer lugar, enhorabuena por la web, es genial. Es de gran ayuda para los que, como yo, estamos empezando con los módulos de Siemens.

    Estoy intentando establecer una conexión TCP con el programa de ejemplo a través de los comandos AT, pero al llegar al punto AT^SISO=1, me devuelve error. He probado a cambiar parámetros en AT^SICS y en AT^SISS, pero no logro solucionarlo.

    ¿Cuál puede ser el problema? ¿Es completamente correcto el código del ejemplo? ¿Es necesario hacer alguna cosa más?

    Un saludo, y muchas gracias,
    Marc

  57. blogElectronica says:

    Hola Marc,

    en principio sí, los ejemplos son correctos. Deberías especificar. eso sí, os parámetros adecuados para tu tarjeta SIM (vod, tef o mov), así como disponer de cobertura, etc etc. Sin saber todo eso es muy dificil saber porque te devuelve un error.

    Te aconsejo que realices la operación desde el hyperterminal antes que desde java y compruebes si sigues teniendo el error. Si sigues con el error haz un AT+CMEE=2 para tener un error descriptivo de lo que te ocurre.

    Salu2.

  58. antoniogc says:

    Buenos días, este bloq me parece fantastico, tengo una aplicación en java para un TC65 que realiza una llamada de TLF, pero tengo el problema el eco, como puedo quitar el ECO y que se siga escuchando bien la conversación.

    Muchas gracias.

  59. Pua says:

    Hola Antoniogc,

    Tendrás que jugar con las ganacias y valores de los comandos de audio.
    Esto dependerá de tu entorno de sonido.
    Para evitar ECO, separa el auricular del micrófono 50 cm y ponlos en distinto plano. Para no realimentarlo sella en auricurar, que el sonido no pueda entrar por detrás.
    Selecciona un perfil de audio con reducción de ruido y ECO si está disponible en tu producto

    Salu2

    Pua

  60. Antonio Eligio Perez says:

    Gracias por los ejemplos , te queria comentar una cosita
    Necesito hacer una aplicacion que sea servidora de gps , atraves de gprs es decir que cuando arranque el modem este se conecte a internet , coja una direccion ip la cual yo conozca y me sirva datos para desde una aplicacion cliente yo pedirselos .

    sebes si hay algun ejemplo por ahi que me pueda ayudar a hacer el servidor y a configurar el modem con dns dinamica o algo asi .

    muchas gracias

  61. blogElectronica says:

    Hombre Antonio,

    si el módem actúa como cliente, es decir, si éste se conecta a un servidor de tu oficina sí tienes ejemplos. Los ejemplos TCP que aquí muestro son con el MTX configurado como cliente. Si quieres que actúe como servidor, pues no, actualmente no tengo ninguno, pero no te costará en exceso modificar el de cliente, especialmente el que funciona con la clase ATCommand.

    Tampoco tengo un ejemplo con el, por ejemplo, dyndns implementado. Ese protoclo tendrías que implementarlo tú si quieres utilizar IPs dinámicas y actuar como servidor.

    Salu2.

  62. Gumaro says:

    Disculpa una pregunta nunca e usado el eclipse pero estoy tratando de correr el programa de enviar un SMS cada minuto y no me jala, el archivo main.java no cuenta con un metodo main y pues no se que hacer la verdad, te agradeceria si me pudieras dar una explicacion de como ejecutar dicho programa para verlo funcionando. Muchas gracias.

  63. edlectrico says:

    Hoy he probado la aplicación que envía mensajes SMS y funciona muy bien.

    Gracias por el post (por este y por todos), es de gran ayuda.

  64. blogElectronica says:

    Gracias a ti edlectrico

    por visitar mi blog, me alegra que sea de utilidad.

    Salu2

  65. Antonio Eligio Perez says:

    Muchisimas gracias , realizare el tema del servidor no creo que sea mucho problema , lo que no se es como hacer lo del dyndns ya veremos .
    Pd: seguiremos dando por saco.

    Salu2

  66. edlectrico says:

    Hola, lo primero feliz año a todos.

    Llevo un tiempo (desde el año pasado jeje) intentando comprender y hacer funcionar el EJEMPLO_PuertoSerie, pero no lo consigo. Creo que hay algo que se me escapa…

    Tengo varias dudas, a ver si me podeis ayudar, y si escribo algo erróneo me corregís:

    El MTX65 tiene 2 puertos serie, uno de 9 pines (ASC0, como el típico COM de PC) y otro de 15 (ASC1, como los VGA de PC). Sólo puedo usar el de 9 pines porque no tengo un conversor de 15 a 9 como para capturar nada por ese puerto… ¿Cómo puedo conseguirlo? He visto en un pdf del mtx65 que sí existe ese cable (conector de 15 a 9 pines) pero no lo encuentro por ningún sitio en tiendas ni por internet, pero si en el EJEMPLO_PuertoSerie comentais que “Abre los dos puerto serie ASC0 y ASC1 y lo que recibe por el ASC0 a 115200 baudios lo retransmite por el ASC1 a 57600 y viceversa” entiendo que debe de existir…

    Como no puedo usar ese puerto como salida (el ASC1), lo que estoy intentando es que todo lo que me venga por el puerto de 9 pines (ASC0), volcarlo sobre un fichero interno. El tema es que no me lee lo que llega por el puerto serie…

    Así lo tengo yo en mi applicación:

    com1 = (CommConnection) Connector.open(“comm:com1;” +
    “baudrate=9600;” + …”);

    //Asignamos los streams de salida y entrada del puerto ASC0
    com_os1 = com1.openOutputStream();

    while (true)
    {
    //Si hay datos por leer en el buffer ASC0 …
    if (com_is1.available()>0)
    {
    //Leemos los datos que nos llegan por el puerto ASC0 …
    len = com_is1.read(buffer0);
    //… y escribimos en el fichero
    escribirFichero(buffer0);
    contBytes=contBytes+len;
    }
    else{
    //TODO:
    //Esto es para ver si realmente recibe algo…
    escribirFichero(“NO HAY DATOS EN ASC0″.getBytes());
    }

    El tema es que me salta al else.

    ¿Me podeis echar una mano? Necesito que me funcione este ejemplo para poder avanzar con mi proyecto y estoy muy atascado.

    Un saludo y muchas gracias

    • blogElectronica says:

      Hola edlectrico,

      Este cable se puede adquirir en Matrix, pero te recomiendo que te hagas uno, pues sólo necesitas 3 hilos, TX, RX y GND.

      Respecto a lo que no te llega al puerto serie, tienes:

      com1 = (CommConnection) Connector.open(”comm:com1;” +
      “baudrate=9600;” + …”);

      y deberías tener:

      com1 = (CommConnection) Connector.open(”comm:com0;” +
      “baudrate=9600;” + …”);

      (com0) si quieres usar el ASC0.

      Por eso nunca recibes datos en el ASC0, porque los estás esperando en el ASC1.

      Salu2

  67. edlectrico says:

    Hola blogElectronica,

    gracias de antemano por contestar a las dudas.

    Sigo teniendo el mismo problema, he corregido ese error pero sigo sin capturar absolutamente nada por el puerto serie. Tengo que decir que no envío datos al puerto de forma continua, sino que van llegando de manera muy puntual, ya que mando tramas codificadas en hexadecimal desde otro dispositivo cada ciertos segundos. ¿Es posible que al ser datos hexadecimales el módem no me los reconozca? ¿O que al enviarlos de forma puntual tenga algún tipo de problema?

    Mi aplicación de prueba debería escribir una línea en un fichero si detectase algo por el puerto ASC0. El problema es que no me escribe nada porque no valida como verdadera la condición “if (com_is1.available()>0)”. Tanto en el código Java, como en el Hyperterminal, y con el comando “AT+IPR” configuro los puertos a 9600 bps.

    He simplificado mi código lo máximo posible y sigo sin obtener nada, es el siguiente:

    public class main extends MIDlet {

    private InputStream com_is1;
    CommConnection com1 = null;

    protected void startApp() throws MIDletStateChangeException
    {
    try
    {
    com1 = (CommConnection) Connector.open(“comm:com0;” +
    “baudrate=9600;” +
    “bitsperchar=8;” +
    “stopbits=1;” +
    “parity=none;” +
    “blocking=off;” +
    “autocts=on;” +
    “autorts=on”);
    com_is1 = com1.openInputStream();

    while (true)
    {
    if (com_is1.available()>0)
    {
    escribirFichero(“HAY ALGO”.getBytes());
    }
    }

    }
    catch (Exception e)
    {
    e.printStackTrace();
    }

    }

    protected void escribirFichero(byte[] buff) throws MIDletStateChangeException{
    try
    {
    FileConnection objFileConnection = (FileConnection)
    Connector.open(“file:///a:/pruebas/files/alerts.txt”);

    if (!objFileConnection.exists())
    objFileConnection.create();

    DataOutputStream objDataOutputStream =
    objFileConnection.openDataOutputStream();

    objDataOutputStream.write(buff);

    objDataOutputStream.flush();

    objDataOutputStream.close();
    objFileConnection.close();

    destroyApp(true);
    }

    catch (IOException ioe)
    {
    }

    }

    protected void destroyApp(boolean arg0) throws MIDletStateChangeException
    {
    notifyDestroyed();
    }

    protected void pauseApp() {
    }

    }//Fin de la clase

    Espero que me podais ayudar, ya que no encuentro el fallo por mi mismo. Diría que el código es correcto. No se si podeis probarlo a ver si alguien tiene el mismo problema que yo.

    Un saludo y sobre todo muchas gracias.

  68. edlectrico says:

    Hola blogElectronica,

    he conseguido un cable para probar el Ejemplo_PuertoSerie, con lo que ahora tengo una máquina conectada al puerto ASC1 del MTX65 y otra por USB a la interfaz USB del módem. Además tengo un dispositivo que envía señales cada “x” segundos al terminal por su puerto serie (ASC0).

    El problema me surge cuando al ejecutar el programa, en la otra máquina al instante me sale el siguiente error:

    “JAVA ERROR: One or more MIDDlet class(es) not found: EJEMPLO_PuertoSerie”

    • blogElectronica says:

      hola edlectrico,

      coge el código de ese ejemplo y recompílalo de nuevo para tu plataforma, no importes el proyecto.

      Por otro lado ojo con poner la aplicación el el autostart. Por desgracia cuando hice los ejemplos no caí en que el símbolo _ no podía ponerse en el nombre de una aplicación para que arrancara con autostart (lo digo por el nombre EJEMPLO_PuertoSerie). Si utilizas ese nombre de aplicación (con el _ )deberás arrancarla a mano con AT^SJRA.

      Pero ya te digo, crea un nuevo proyecto y copia el código java. Probablemente tengas algo mal en el fichero JAD.

      Te aseguro que el ejemplo que colgué funciona correctamente con un MTX65.

      Respecto a tus otras cuestiones:

      ¿Es posible que al ser datos hexadecimales el módem no me los reconozca?
      No, debe funcionar.

      ¿O que al enviarlos de forma puntual tenga algún tipo de problema?
      Tampoco.

      • edlectrico says:

        Gracias por contestar tan rápidamente y por la ayuda, siento la insistencia pero es que llevo apenas 1 mes trabajando con el MTX65 y nunca había hecho nada parecido hasta la fecha, por eso me está costando más de lo debido.

        Ya arrancaba con AT^SJRA, así que ese no era el problema. Estoy pensando que si el código está bien, y habiendo recompilado de nuevo el Ejemplo_PuertoSerie, podría estar estableciendo de forma errónea los baudios para la comunicación.

        El dispositivo que tengo conectado al módem por su interfaz ASC0 trabaja a 9600 bps, por lo que he establecido en el código Java esas velocidades tanto para el puerto ASC0 como para el ASC1. Así pues, también lo he hecho mediante comandos AT+IPR para configurar ambos puertos por HyperTerminal. Aún así no he logrado capturar mis tramas, al arrancar me llegan ciertos datos, pero es basura.

        ¿Alguna idea? ¿Cómo puedo probar igual que vosotros el mismo código? ¿Qué mandais y cómo lo haceis por los puertos para que lo repita por el otro? He probado a debuguear con eclipse pero me sale lo siguiente

        Wrong initialization response received from the module.

        No initialization for module debugging is possible!
        Debugging aborted!

        así que no he conseguido obtener nada tampoco.

        Un saludo y gracias.

  69. blogElectronica says:

    edlectrico,

    si yo fuera tú y estuviera atascado intentaría dar la vuelta al problema. Si tu aplicación java no recibe nada por el puerto serie (o recibes caracteres raros) intenta escribir en él (en lugar del leer) y mira si lo recibes en el hyperterminal. Si recibes caracteres raros varía todas las velocidades del hyperterminal, cambia el control de flujo, etc etc.

    Por otro lado antes de enviar nada por el puerto serie con write, comprueba que con un simple System.out.println(“hola”); puedes verlo en el hyperterminal.

    Siempre te será más sencillo enviar tramas desde el módem de forma periódica y ver en el hyperterminal qué ocurre que al revés.

    Salu2

  70. edlectrico says:

    Muchas gracias por la ayuda, seguiré intentándolo.

    Un saludo!

  71. Juan says:

    Hola,

    He probado el cliente ConexionTCP2. Es un ejemplito muy facil de comprender utilizando las clases SocketConnection como lo haria cualquier programa J2SE que trate con sockets.. Es genial! Gracias ;)

    Ahora estoy tratando de convertir este ejemplo en modo servidor usando la clase ServerSocketConnection. La unica duda que se me plantea es a la hora de abrir el socket:

    ServerSocketConnection server_socket = (ServerSocketConnection) Connetor.open(“socket://20010″ + “…”)

    En el argumento he incluido el numero de puerto de escucha y los parametros de conexion a internet (apn, user, pwd…) pero no me funciona. Alguna recomendación?

    Salu2

  72. Laura says:

    Buenos días,

    Primero de todo gracias por la cantidad de ejemplos y por el blog, es de gran utilidad.

    Llevo unos cuantos días intentando realizar un programa para el Siemens TC65 el problema es que cuando comprubo su funcionamiento no me muestra nada por la pantalla del hyperterminal. Para comprobar si era debido a mi programa o a como lo ejecutaba decidí importar el ejemplo de los pines GPIO y tampo veo respuesta por el hyperterminal.

    Los pasos que sigo son:
    1.- Copiar los archivos .jar y .jad en el Module.
    2.- Conectar el equipo al hyperterminal y comprovar su versión.
    3.- Ejecutar la siguiente línea: at^sjra=”a:/EJEMPLO_GPIO.jar”, el comando me lo acepta porque sale un mensaje de Ok, pero ya no me muestra nada más por pantalla.

    Que debo hacer para poder ver los mensajes System.out.println?

    • blogElectronica says:

      Hola Laura,

      asegúrate que has configurado la salida estandard con:

      AT+IPR=115200
      AT^SCFG=”Userware/Stdout”,”ASC0″

      Salu2

  73. Sito says:

    Hola,
    alguien puede poner como sería más o menos el código en vez para enviar SMS, para detectar cuando se ha recibido un mensaje, leerlo, mostrarlo por la consola y luego borrarlo?? Estoy interesado y la verdad estoy un poco perdido y no sé como se puede hacer.

    Muchas gracias!!!!

    Sito.

  74. Laura says:

    Ahora si que veo respuestas en pantalla, muchas gracias!!!!!

  75. ricardo guillen says:

    Hola tengo el mtx65+g v2.0 y lo tengo conectado con un lcd por el puerto serie del dispositivo.

    El lcd solo tiene tres pines: 1-vcc 2-gnd 3-rx , y no lo alimento desde el mtx65+g, sino desde otra fuente.

    Segun he leido por aqui el terminal usa conexion DCE-DCE en el puerto serie.segun esta especificacion he conectado como si de un cable null-modem se tratara:
    (mtx65+g) 2-tx—-conectado con—-3-rx (lcd)
    (mtx65+g) 3-rx—-no conectado
    (mtx65+g) 5-gnd—-no conectado
    (mtx65+g) 7-rts—-conectado con—-8-cts (mtx65+g) // null modem

    He usado el ejemplo de puerto serie de aqui, solo la parte de escritura por OutputStream, pero no consigo que se muestre ningun caracter.

    He usado esta lcd con arduino y si me muetra correctamente los caracteres.

    En arduino escribo en el puerto serie en modo char o en modo byte (son los que aceptan la lcd, ya que le puedes enviar un char y lo muestra ) .

    En el mtx65+g estoy usando DataOutputStream con los metodos write, writeByte,writeChar, pero ninguno consigue mostrar nada. Lcd saca algun caracter raro pero nada legible.

    ¿Sable alguien el modo de enviar char, byte , binario, int… por el puerto serie del mtx-65+g?
    ¿Es correcto este modo de conexion entre el mtx-65+g y el lcd?

    Muchas Gracias

  76. Juan says:

    Hola,

    Para ejecutar el Ejemplo_ConexionTCP2 siempre estoy realizando los siguientes pasos :

    1. Registro el módulo TC65 en la red GSM con AT+CPIN
    2. Hago una llamada al proveedor con ATD*99#
    3. Ejecuto el midlet con AT^SJRA=”A:/Ejemplo_ConexionTCP2 .jar”

    Me ha llamado la antención que a veces la conexion se produce sin pasar por el paso 2.
    * ¿Es imprescindible marcar *99# o es que ya habría llamado antes sin darme cuenta?
    * ¿Que método podría usar para ver que ya se producido con anterioridad?

    Quisiera que cuando se produzca un error, rellamar hasta que se produzca correctamente…
    A ver si me podeis guiar un poco ;)

    Salu2

    • Juan says:

      La llamada ATD*99# solo se tendría que hacer si queremos utilizar una pila TCP/IP externa. Como el modulo MTX65 que utilizo la tiene ya implementada, no haría falta hacer el paso 2 :)

      Salu2

  77. ricardo guillen says:

    Hola añado unos comentarios al post anterior.

    Segun el manual , el modem es un dispositivo DCE, y lo puedes conectar con un dispositivo DTE(ordenador).¿Si quiero conectar el modulo lcd(creo que tambien es DCE(vcc,gnd,rx)), como tengo que conectar los pines de cada dispositivo entresi?

    ¿Ha la hora de enviar un byte(8bits) o un char() por el puerto serie, que tipo de Conector y Connection(CommConection o StreamConnection) hay que usar, asi como que tipo de escritor se usaria(OutputStream,PrintStream,DataOutputStream) ?

    Hay un error en la numeracion de pines en el terminal el pin 2 es rx y el 3 es tx

    Por favor una ayudica, que ya no se que mas probar… :-(
    Muchas Gracias,

  78. AQ says:

    Que tal!
    Intento establecer comunicacion usando el SPI, puedo habilitar el SPI, pero en seguida se pone en modo datos y ya no puedo enviar comandos at. No se como enviar datos desde la aplicacion java por el SPI. He intentado algunas maneras pero me lanza una excepcion. En el manual viene la manera de configurar el SPI, el formato del dato, pero no veo como enviar datos ya dentro de la aplicaion java. Les agradeceria bastantante su ayuda.

    Sauldos…

    • blogElectronica says:

      Hola AQ,

      en breve publicaré cómo programar el bus I2C pues se necesita para el nuevo MTX65-ULP. Utilizar el SPI es lo mismo.

      Te adelanto que es muy similar, básicamente tienes que hacer algo como:


      OutputStream os;
      try
      {
      os = atc.getDataOutputStream();
      os.write(cadena.getBytes());
      }
      catch …

      Como te digo ya pondré un ejemplo más detallado en breve.

      Salu2

  79. currumblera says:

    Nuevas cuestiones para ver si alguien las sabe:

    1.- Mi aplicación me lanza 2 eventos ^SISW=0,1, para decirme que puedo escribir, una cuando abro con AT^SISO, y seguidamente, hago un AT^SISW=0,132,0,0, devolviendome ^SISW=0,132,132, y al escribir con os.write me vuelve a mandar otro ^SISW=0,1. ¿es este procedimiento correcto?

    2.- Si abro y cierro conexion con AT^SISO y AT^SISC, ¿tengo que poner el flag de fin de transmisión (AT^SISW=0,132,1,0)?

    3.- Nunca recibo el URC ^SISW= 0,2. ¿Eso es que no estoy transmitiendo bien?

    4.- Y por último. ¿Alguien sabe de algún conversor CAN/RS232 para acoplar a los MTX?. En este caso concreto un conversor CAN J1939/RS232, para conectar a camiones. Me parece otro tema interesante del que se podía postear quien supiera de este tema.

    Un saludo a todos!

    • currumblera says:

      Lo siento! pensaba que estaba en la sección “Gestión de una conexión TCP/IP desde Java”. Si lo crees oportuno Blogelectronica, muevelo allí.

      Gracias y perdón por el despiste.

    • blogElectronica says:

      Hola Currumbela,

      1) Sí, es correcto. Cuando te devuelve por segunda vez el ^SISW=0,1 te está diciendo que puedes enviar más datos.

      2) Creo que no es necesario, si utilizas el entrenador para conectarte a és desde un socket del módem y no envías el EOT verás como el entrenador se entera, señal que se envía el cierre del socket.

      3) Creo recordar que ese evento es para FTP únicamente.

      4) Te lo miro y te digo.

      Salu2.

  80. Grimpow says:

    Hola,

    Llevo un tiempo probando los ejemplos de conexión http. Al principio funcionaban bien, podía entrar en google, y otras paginas similares. Lo que pasa es que quiero estirar mas la mano y poder enviar parametros en la url. El problema esta en que el servidor solo le llega la primera parte de la url, me explico, solo se envia la url hasta el “;” que utilizo como separador en la trama.

    Agradecería si alguien sabe como solucionar este contratiempo para poder seguir probando más aplicaciones.

    Por si sirve de ayuda, las pruebas utilizan el código del ejemplo sin modificar los parametros de la configuración

    • Dani says:

      Hola que tal, Estoy desarrollando una aplicación en un Módem TC65 y me ha surgido una duda haber si me la pudieses resolver.

      1º ¿Si se está ejecutando un midlet dentro del módem no puedo usar el hyperterminal no? Es decir la aplicación toma el control y no podría enviarle comandos AT al modem desde el hyperterminal. ¿Es esto cierto? Ahora mismo no puedo comprobarlo porque no tengo el módem, pero creo recordar que era así

      2º En caso de que lo anterior sea cierto, se me ha ocurrido si es posible enviar un mensaje vía aplicación en internet, con un Post haciendo uso de un socket en modo Listener en el módem y que este al recibir ese post llame al método notifyDestroy() para acabar el midlet.
      Esto en principio es factible no? Pienso que así después se podría controlar el modem por el hyperterminal nuevamente, ya que la aplicación midlet habría liberado al modem.

      Si me equivoco, o estoy diciendo alguna tontería pues estaría abierto a propuestas más sencillas.

      Un saludo y gracias!

      • blogElectronica says:

        Hola Dani,

        1) Es cierto lo que dices.

        2) Es mucho más sencillo que, por ejemplo detectes si la tarjeta SIM está insertada. Si no lo está aborta la aplicación java, si lo está no lo abortes. Es una manera sencilla de rápidamente abortar una aplicación java.

        Salu2

      • Juan says:

        Hola Dani!

        Pues yo usaría el HW VSP en modo server

        http://www.hw-group.com/products/hw_vsp/index_en.html

        Este soft te creará un COM virtual en tu PC asociado a tu IP y al puerto q tu elijas..
        Todo lo que mandes a esa IP:Puerto se mostrará por la consola y viceversa. Tu midlet podría estar esperando un comando de parada que venga desde “internet” y q sea el desencante de destroyApp. Aunq utilizar POST en la llamada URL también podría valer ;)

        Salu2

    • blogElectronica says:

      Hola Grimpow;

      ¿desde cuando en una URI se le pasa un ; para pasarle parámetros? El separador para parámetros es la &. No todos los caracteres se pueden pasar en una URI.

      Salu2

  81. K-RO says:

    Hola que tal, excelente el blog para empezar. Tengo un problema cuando quiero ejecutar mi aplicacion desde eclipse, me da el siguiente error “Standard modem driver is not installed for “remote debugging connection”!
    Please start Siemens SMTK setup in maintenance mode and select
    “Repair” for reinstallation of “remote debugging connection”!”
    Creo que puede ser porque en la conexion ip for remote debugging en mis sitios de red, aparece desconectado. Será ese el problema? Ya hice programas y los pude probar desde el hyperterminal, pero no asi desde el eclipse y esto me seria muy util. Muchas Gracias!!

  82. Tobal says:

    ¡Hola!

    En los comentarios indicas que vas a poner un ejemplo de comunicación con i2c pero no lo encuentro y no sé si es que todavía no lo has hecho. ¿Está publicado en alguna parte?

    Gracias.

  83. Jordii84 says:

    Hola. Quería agradecerte todo el esfuerzo que le pones al blog y animarte a que sigas así, porque eres de gran ayuda para muchos. Te explico mi caso, estoy desarrollando una aplicación que utilizará el GPS de un terminal MTX-65+g. He probado los dos ejemplos que tienes colgados, y con el primero (Comandos AT) no hay ningún problema. Pero en el 2º (clase Location), la fecha la devuelve mal. En concreto, esta es una lectura de hace 5 minutos: “Fecha :Tue Jan 01 02:52:50 UTC 2002″. En cambio ya te digo, con la clase ATCommand no hay problema y la devuelve correctamente. ¿Sabes a que puede deberse? Saludos!

  84. Richard says:

    Hola blog…jejeje
    Tengo una pregunta, puedo enviar datos desde el modem a una base de datos en Internet??? Si es asi, utilizaría un conexión normal de java??
    Gracias muy amable

    • blogElectronica says:

      Hola Richard,

      lo más sencillo es que hagas la conexión a un servidor ASP o PHP y le pases pot GET o POST los datos que quieras grabar en la BBDD y que sea el propio server el que se encargue de la conexión con la BBDD.

      Lo mismo para la lectura de datos.

      Salu2.

  85. Jordii84 says:

    Hola blog,

    Estoy desarrollando una aplicación que se conectará a un servidor y la idea era que dicha conexión permaneciera abierta mucho tiempo, idealmente para siempre. El problema es que a los 5 o 10 minutos de que la comunicación está sin enviar ni recibir datos, al intentar enviar algo del servidor al módulo, éste resetea la conexion y el servidor escupe “Connection reset by peer: socket write error”. Sabes cual puede ser la causa? Saludos, y gracias!

  86. Pua says:

    hola,

    Los operadorses cierran los sockets sin tráfico en un determinado tiempo. tienen procedimientos de timeout.

    en mi experiencia, dependiendo del operador, pais, tipo de socket TCP/UDP e incluso dento del mismo operador dependiendo de la zona, el tiempo varía nunca es el mismo.

    Posibles soluciones:

    -Reabrir el socket cuando te lo cierre
    -Generar tráfico regularmente desde el módulo.

    Salud2

    Pua

  87. lucianoizquierdo says:

    Profile could not be activated…

    Alguien sabe o tiene una explcaicon logica de porque pasa esto?
    Vi que hay varios que postean pero no dan una razon concreta.
    No es problema de gprs, no es problema decobertura, tampoco es problema de que tan rapido y lento se abren las connecciones… pero aveces anda aveces no, talvez anda un dia seguido y depsue sdeja de andar y empiezar a tirar eso, alguien tiene una explicacion razonable? de cual es el problema?

    Saludos!

  88. Pua says:

    hola,

    LA pila IP se stressa, creo recordar en el manual que tienes que esperar 60 segundos antes de reabrir el socket. es posible que puedas reabrirlos antes alguna veces, pero al final el heap se llenará.

    Prueba a cerrar la conoexion gprs, deattachar el modulo y volver a abrir la conexión si no puedes reabrir el socket o reestablecer la conexión GPRS

    Salu2

    Pua

  89. lucianoizquierdo says:

    Hola gente tengo un problema y los llamo a ver si alguno tiene alguna solucion.

    Tengo una aplicacion que se encarga de leer del puerto serie todo el tiempo, el tema es que si yo desconecto el puerto serie, creo que que la aplicacion se queda colgada en el inputStream.read(), es decir como no tiene nada para leer se queda colgada ahi, el tema es que cuando vulevo a conectar el puerto, esta sigue colgada… no es que arranca denuevo..

    Entonces que puedo hacer para que no se me cuelge la aplicacion ahi?, osea yo pense o pienso que deberia existir algun tipo de timeout para las conexiones serie, pero estuve buscando en la documentacion del puerto com y no veo nada de timeout.. alguein se le ocurre como puedo hacer para solucionar esto?

    Gracias! saludos!

    • blogElectronica says:

      Hola Luciano,

      pues no llames al método read() si no tienes nada para leer, pues es un método blocante. ¿Por qué no consultas antes el método com_is.available() y si tienes datos entonces los lees?

      Salu2.

  90. lucianoizquierdo says:

    Si probe con ese metodo, hice todas las convinaciones posibles… pero no puede hacer que ande la manera correcta, o se saltea datos de lectura, o salen las lecturas corridas, es decir

    Pregunto a mi aparato que esta conectado el serie, por ejemplo que me de la tension, y no me responde nada, y depsues cuando le prgunto la corriente, recien ahi me devuleve la tension, etonces empiezan a correrse todos los valores y asi…

    :S

  91. Artista says:

    Hola a todos,

    estoy empezando a utilizar los TC65, porque estoy interesada en interactuar con el módem mediante mensajes SMS. Estoy buscando una forma de hacer un reset mediante SMS, para ello utilizo el comando AT+CFUN=1,1, pero al enviar el mensaje el módem se me vuelve loco y se me reinicia cada minuto.

    Alguien sabe como podría hacerlo correctamente?

    Muchas gracias.

    • blogelectronica says:

      Hola Artista,

      ¿qué se resetea cada minuto? :)

      Eso es que has hecho algo mal. Asegurate de que tu programa al leer el SMS entrante lo borre de la memoria, no sea que lo estés leyendo cada vez que tienes la aplicación java running y de ahí el reseteo.

      Es lo único que se me ocurre, salvo que tengas algo raro programado en el autoexec (comando AT^SCFG) o que tengas el watchdog activado y te esté saltando.

      Salu2.

  92. SALDE says:

    Me gustaría saber donde puedo encontrar las librerías com.siemens, porque sino no me compila el programa. Como puedo encontrar el SMTK. Muchas Gracias

    • blogElectronica says:

      Hola Salde,

      la única manera es que te las propocione tu distribuidor Siemens/Cinterion. Él te debe proporcionar el soft de forma gratuita.

      Salu2

  93. Nelson Secchi says:

    No sé si este es el post ideal para postear esta pregunta, pero me arriego :) .
    Tengo un problema, yo diria que grande. Realice un programa que tiene un bucle infinito y que lee una entrada y activa o desactiva una salida dependiendo de su estado. Ahora, esto anda muy bien, pero cometí el GRAVE ERROR de probar el Autostart del modem, por lo que ahora la aplicación se inicia automáticamente, y no me permite comunicarme con el módulo a través del ASC0 :( . Habría alguna forma de interrumpir o detener esto?

    Desde ya muchas gracias!

    P.D.: Para la próxima, prometo utilizar una entrada para terminar la aplicación Java.

  94. Gaugan says:

    Hi blogelectronica,

    Had a question on TC65i ! I’m using DSB75 development board with TC65i module which is having SD card interface. But I’m unable to access the SD card for data writing purpose using J2ME code. Basically, Using J2ME coding I’m able to store any file from http in the internal
    flash memory but I’m unable to store it in the SD card. Can you please guide me on how to access, read, write on sd card! Thank you in advance.

    Regards,
    Gaugan

  95. Gen says:

    Hola,
    me gustaria saber si los XT75 o 65 tienen alguna forma de configurarse para seleccionar las tramas correctas de GPS, es decir, que desechen las tramas que no esten en fecha, o que tengas posiciones erroneas (por falta de satelites etc). Si no tienen, como se haria en Java??,

    Un saludo

    • blogElectronica says:

      Hola Gen,

      no tengo ahora delante el manual pero claro que puedes desechar fácilmente las tramas malas. Cuando le pidas los datos GPS al módem (no recuerdo el comando AT ahora mismo) fíjate en el último parámetro devuelto. Si este es 2 ó 3 acepta las tramas si no, no.

      Salu2

  96. Luisa says:

    Hola blogelectronica,

    Primero que todo quiero manifestar que este blog esta excelente.

    Voy a empezar a trabajar con el modem xt75 para transmitir señales a un servidor por medio de GPRS y queria saber si los ejemplos que encuentro en este blog para el xt65 los puedo tomar como base para realizar mi trabajo con xt75.

    Muchas Gracias.

  97. Daniel says:

    Hola,

    Tengo una pregunta acerca del puerto db15(ASC1) del modem MTX65.
    Resulta que tengo una aplicación java desde unos meses funcionando correctamente leyendo por el puerto ASC0. Mi interés es ahora leer por el puerto ASC1 tal y como lo hacía por el puerto ASC0(db9). He mirado el manual de mtx65 pasado por matrix y hemos creado un cable paraenviar datos al db15.

    Mi problema es el siguiente. Dado que no tenemos señal cts rts en el puerto ASC1. He configurado el abrir el puerto serie de diferentes formas con el cts y el rts a on y off pero no hay manera. No recibo datos por este puerto. La configuración es tan sencilla como abrir la conexión y esperar la llegada de datos:

    com1 = (CommConnection) Connector.open(“comm:com1;” +
    “baudrate=9600;” +
    “bitsperchar=8;” +
    “stopbits=1;” +
    “parity=none;” +
    “blocking=off;” +
    “autocts=off;” +
    “autorts=off”);

    com_is1 = com1.openInputStream();

    while (true)
    {

    //Si hay datos por leer en el buffer ASC1 …
    if (com_is1.available()>0)
    {
    //Leemos los datos que nos llegan por el puerto ASC1 …
    len = com_is1.read(buffer1);
    //…Se envían a un fichero de datos
    escribirfichero(buffer1, 0, len);
    contBytes=contBytes+len;
    }

    }

    Al igual tenemos mal creado el cable que envía datos al puerto serie o se me escapa alguna configuración a añadir.

    Cualquier ayuda será bien recibida.

    Gracias.

    • blogElectronica says:

      Hola Daniel,

      quizás tienes mal el cable (ese cable SÓLO tiene que tener 3 hilos, RX, TX y GND). Si los conectas a un PC asegúrate que el pin RX del módem va a RX del PC y el TX del módem va al TX del PC. El resto de hilos NO los conectes al puerto serie de un PC.

      No hay que hacer nada más (eso sí, si lo estás probando con el hyperterminal no actives el control de flujo en él ;) ). Funciona sí o sí tal y como lo tienes en el programa con un cable correcto.

      Salu2.

  98. alex says:

    Hola,

    Estoy desarrollando una aplicación para el MTX65 que por un lado lee mensajes URC con tramas GPS cada 5 segundos y que por otro lado en un thread cada 60 segundos envía datos (a traves de un socket) procesados a partir de los URC anteriores.

    Se me presenta un problema en el envío/recepción de datos a través del socket a partir de determinado tiempo, es decir, abro el socket, a continuación envío datos y todo funciona perfectamente, pero si voy incrementando el tiempo desde que conecto hasta el envío deja de funcionar… si pasa un numero concreto de segundos de “inactividad” (en mi caso a partir de 30-40) ya no envía ni recibe nada. Como si el socket, o la conexion se “congelara”.

    He probado a pasarle al SocketConnection el parametro SocketConnection.KEEPALIVE a 1, pero no parece “afectar” al funcionamiento.

    En teoría todo funciona correctamente (con un tiempo bajo entre paquetes), pero quería aumentar la latencia para ahorrar tráfico. Tampoco es un problema de que al aumentar el tiempo, existan mas datos acumulados para enviar (siempre se envía un paquete de la misma longitud, 33 bytes, da igual que sea cada 30 o cada 60 segundos).

    Estoy usando la API de SocketConnection porque había tenido unos problemas con la apertura del socket al usar los comandos AT. Existe algun tipo de diferencia (es decir, usar comandos AT para manejar los sockets, ¿ es mas eficiente ?)

  99. blogElectronica says:

    Hola Álex,

    te he contestado por otro sitio, pero no me gusta dejar mensajes sin responder, así que te comento lo mismo pero resumido.

    Primero prueba con otro operador que no sea virtual, ni Yoigo ni Symio. Prueba con Movistar, Vodafone u Orange.

    Seguramente se resolverá el problema, sino seguimos analizando el problema.

    Salu2

  100. Ruben says:

    Hola!
    Primero de todo felicitarte una vez mas por el magnifico sitio!
    He adquirido recientemente un MTX65+G de Matrix Electronica.
    Ayer estube instalando Eclipse ME, el CTDK, etc… Cabe decir que estoy utilizando windows 7. No he tenido ningun error de instalacion salvo pequeños problemas puntuales que he solucionado sobre la marcha.
    Puedo ejecutar comandos desde HyperTerminal y he ejecutado diagnosticos, parece que el modem esta instalado correctamente. Desde Eclipse puedo ejecutar aplicaciones en el modem.
    El problema viene cuando intento Debugar. Me sigue apareciendo una y otra vez el irritante mensaje:

    No se abre el puerto especificado.
    Establishment of TCP/IP connection is aborted!

    El firewall esta desactivado en todas las conexiones posibles. He probado con la configuracion del .ini por defecto y no funcionaba asi que me he aventurado a modificarla un poco, aun asi sigo obteniendo el mismo mensaje.
    Mi configuracion es la siguiente:

    AT-Cmd1=S:ATE1
    AT-Cmd2=R:OK
    #AT-Cmd3=S:at+cpin?
    #AT-Cmd4=R:+CPIN: READY
    #AT-Cmd5=R:OK
    AT-Cmd6=S:at^scfg=userware/debuginterface,”192.168.0.2″,”192.168.0.1″,”0″
    AT-CMd7=R:^SCFG: “Userware/DebugInterface”,”192.168.0.2″,”192.168.0.1″,”0″
    AT-Cmd8=R:OK
    AT-Cmd9=S:at^scfg=userware/mode,”debug”,”a:/”,”12345″
    AT-Cmd10=R:^SCFG: “Userware/Mode”,”debug”,”a:/”,”12345″
    AT-Cmd11=R:OK
    AT-Cmd12=S:at^scfg=userware/stdout,”UDP”, “12345″
    AT-Cmd13=R:^SCFG: “Userware/Stdout”,”UDP”,”12345″
    AT-Cmd14=R:OK
    UDPport=12345

    Mi configuracion modificada es la siguiente:

    AT-Cmd1=S:ATE1
    AT-Cmd2=R:OK
    #AT-Cmd3=S:at+cpin?
    #AT-Cmd4=R:+CPIN: READY
    #AT-Cmd5=R:OK
    AT-Cmd6=S:at^scfg=userware/debuginterface,”192.168.0.2″,”192.168.0.1″,”0″
    AT-CMd7=R:^SCFG: “Userware/DebugInterface”,”192.168.0.2″,”192.168.0.1″,”0″
    AT-Cmd8=R:OK
    AT-Cmd9=S:at^scfg=userware/mode,”debug”,”a:/”,”2000″
    AT-Cmd10=R:^SCFG: “Userware/Mode”,”debug”,”a:/”,”2000″
    AT-Cmd11=R:OK
    AT-Cmd12=S:at^scfg=userware/stdout, UDP, “”
    AT-Cmd13=R:^SCFG: “Userware/Stdout”,”UDP”,”"
    AT-Cmd14=R:OK
    UDPport=12345

    No entiendo porque no puede establecer la conexion TCP/IP.
    Todas las conexiones de red y la conexion del modem tienen Ip automatica. Toda la configuracion es la que viene por defecto.

    Alguna sugerencia antes de que me vuelva loco?

    Muchas gracias de antemano!!
    Ruben.

  101. Pua says:

    Hola,

    Prueba acambiarel rango de la red 192.168.0.x si esta la estás usando también por tu tarjeta de red.

    Si tienes dos IP’sdel mismo rango en dos dispositivos dentro del mismo PC(tarjeta de red y el modem) no sabrá por cual enrutar

    Salu2

    Pua

  102. Ruben says:

    Hola Pua,

    Gracias por tu resuesta. Mi red esta en el rango 192.168.1.x, he probado a cambiarlo de rango y nada… sigue sin funcionar. Lo raro es que he probado en otro ordenador con Windows Vista y sigue sin funcionar.
    Voy a probar en un pc con windows xp recien instalado a ver que pasa.

    Gracias!
    Ruben.

    • blogElectronica says:

      Hola Rubén,

      la verdad es que con Windows XP el debug funcina sin problemas. No hace falta cambiar nada del AT^SCFG de como viene el módem por defecto ni cambiar ningún fichero INI. Tan sólo ajustar los tiempos del delay en el propio Eclipse, que dependiendo de la velocidad de tu PC tendrás que modificar. A 50.000 suele funcinar bien.

      Otra cosa es cómo estás debugando el módem. Espero que lo estés haciendo por USB. También espero que en las conexiones de “IP Connection fo remote debugging” tengas especificado el módem de cinterion (asociado al COM virtual creado).

      Si tienes todo así el debug, al menos con XP, debiera funcionar sin problemas.

      Salu2

  103. Ruben says:

    Hola,

    Primero decir que muchisimas gracias por vuestras respuestas, aprecio vuestra ayuda.

    Pues lo he instalado en una maquina con windows xp sp3 recien instalada y sigo sin poder debugar en eclipse. El mensaje que recibo es el siguiente:

    Initialize module for debugging ….
    The module is now initialized for debugging!

    >>> Establishing TCP/IP connection “IP connection for remote debugging”… <<<
    Please wait …
    Debugging is aborted! Please check the COM connection, dial up network parameters
    and restart module and debugging once again!

    End of debugging session. Emulator is closed!
    Error del intento de conexión porque el módem (u otro dispositivo con conexión) en el equipo remoto no funciona.
    Establishment of TCP/IP connection is aborted!

    Parece que se esta quejando de la conexion “IP connection for remote debugging”, aunque la tengo tal y como la crea la instalacion del SDK por defecto.
    Una de las cosas que me extraña es, al hacer doble click sobre el icono de la conexion “IP connection for remote debugging” directamente, me da un error. No se si esto es normal o es que hay algo mal configurado.
    La configuracion es la siguiente:
    Modem: Cinterion USB Modem (COM3)
    Numero de telefono: *88#
    Usar reglas de marcado:off
    —-
    Propiedades del modem:
    Velocidad Maxima:115200
    Protocolo del modem: RLP Analogo
    Habilitar control de flujo por hardware: off
    habilitar control de errores en el modem: off
    habilitar la compresion del modem:off
    Mostrar ventana de terminal: off
    habilitar el altavoz del modem: off

    Opciones
    Mostrar progreso al conectar:on
    pedir el nombre y la contraseña:off
    incluir el dominio de inicio de sesino de windows:off
    pedir el numero de telefono:off
    intentos de marcado:0
    tiempo entre intentos:1 segundo
    tiempo de inactividad antes de colgar:nunca
    volver a marcar si se interrumpe la linea:off
    —-
    X.25
    Red: ninguno
    Todos los campos vacios
    —-
    Seguridad:
    Tipica(configuracion recomendada): on
    Validar mi identidad como sigue: Permitir una contraseña no segura
    Resto de campos vacios

    Funciones de red
    Todo por defecto, ip y dns automatica

    Opciones avanzadas
    Todo por defecto, desactivado

    He probado creando una conexion nueva y nada… Error 777.

    Desde Eclipse puedo ejecutar aplicaciones pero no puedo debugar. Lo que estoy intentando debugar es el ejemplo “Hello World” de esta misma pagina.

    Cualquier ayuda sera bienvenida ya que empiezo a estar desesperado!

    Gracias!!!
    Ruben.

    • blogElectronica says:

      Ruben,

      los tiempos de delay ¿los tienes todos a 50.000 en 3 sitios creo recordar, en las preferencias del Eclipse.

      Salu2.

  104. Ruben says:

    Buenas,

    Si,
    Preferencias/Java/Debug – Debugger Timeout: 50000
    Preferencias/Java/Debug – Launch Timeout: 50000
    Preferencias/J2ME/ Debug-Server-Timeout: 60000 (por defecto)

    El error justo cuando intenta conectar con el modem, no agota el tiempo de espera.

    Sigo probando y no consigo solucionar el tema.

    Cualquier ayuda es bienvenida.

    Gracias,
    Ruben.

  105. Ruben says:

    Hola!

    Pues parece que por fin lo tengo funcionando, y ademas en windows 7 64 bits. La verdad… un cumulo de cosas fueron las causantes.

    Muchisimas gracias por vuestra ayuda.

    Ruben.

    • blogElectronica says:

      Hola Rubén,

      efectivamente, como dice Púa, a ver si nos dedicas unos minutos y nos comentas qué tuviste que hacer para instalarlo en Windows 7 64bits. Es muy interesante.

      Si te encuentras con otras dudas durante la programación no dudes en preguntarlas.

      Salu2

  106. Pua says:

    Hola,

    te agradeceriamos nos contrás lo quehas hecho detalladamente para así otras personas puedan hacerlo.

    en esto consiste un blog

    Salu2

    Pua

  107. Ro says:

    Hola a todos,

    Estoy trabajando con java y estoy realizando una aplicación la cual tiene que enviar sms, en el trabajo me proporcionaron el mtx65 y la verdad que es la primera que que lo uso, estoy muy verde.

  108. Ro says:

    He instalado el sw que proporcionan y no funciona, la conexión IP debuggin… me han dicho que no es necesaria para que el mtx65 funcione correctamente.
    Asi que me baje el programa que manda sms para hacer la prueba y nada, no funciona.
    Y se me insatala el modulo en el ordenador, pongo el jar y jad en el modulo, pero nada.
    ALguien podría decirme o explicarme paso a paso como ejercutar un programa utilizando el mtx65 desde eclipse. Por si cometo error hay.

    Muchas gracias a todo.
    Y el blog es magnifico

    • blogElectronica says:

      Hola Ro,

      a ver, si pones los archivos JAR y JAD en el módulo después tendrás que ejecutarlo. Imagina que el programa se llama “ejemplo.jar”, pues desde el hyperterminal:

      AT^SJRA=”A:/ejemplo.jar”

      recuerda que si tienes que sacar algo por la salida standard debes configurarla previamente con algo como:

      AT^SCFG=”Userware/STDout”,”ASC0″

      Salu2.

      P.D. Ánimo, seguro que le coges enseguida el punto, verás que resulta muy sencillo.

  109. Adrian Ostaiza says:

    Saludos me pueden ayudar con algun ejemplo para poder usar el modulo tc665i en modo server o listener, como modo cliente sale perfecto pero al momento de hacerlo server no contesta ninguna solicitud

    gracias de antemano

  110. sergi says:

    ¿Los ejemplos presentados de MTX65 sirven directamente para el nuevo MTX IND?

    gracias y saludos.

    Por cierto, felicidades por tu blog,

  111. Luciano says:

    Consulta,

    Estoy teniendo problemas para hacer andar el TC65 como server listener.

    Vengo utilizando el tc65 hace ya como 1 año y medio, y utilize miles de funcionalidad, y siempre me anduvo todo bien.
    Pero me encuentro ahora con un problema, y no se como solucionarlo.
    No puedo hacer andar al tc65 como server socket.

    Abro el socket, si obtengo el ip con getLocalAddress(), me da un ip de la RED interna de movistar el cual no me sirve.
    entonces abro una conexion cliente udp, o una conexion cliente tcp, y me conecto con un server en mi pc y obtengo el IP dinamica que me esta asignando la operadora.
    Hasta ahi todo bien, o sea no es un problema de ips.

    Cuestion que depsues intento hacer un telnet al tc65, y nada.. no pasa nada de nada…

    El codigo se que esta bien, lo probe fuera del tc65, osea simulandolo con el toolkit j2me del netbeans en mi pc, y funciona correctamente.

    Tendre que configurar algo en especial en el modem? para que este deje recibir conecciones entrantes?

    Otra cosa a destacar es que en un principio tuve miedo que el chip de GRPS este talvez prohibido para recibir coneciones entrantes, pero sin embargo agarre el chip y lo conecte y lo puse en los modems inalambricos de movistar, y lo conecte a una notebook, y abri un socket con el eclipse en esa notebook, y ahi si anda.. con lo cual el chip de grps si deja recibir conecciones entrantes..

    ALguien tiene alguna idea que puede llegar a seR?

    • blogElectronica says:

      Hola Luciano,

      prueba el ejemplo de Webserver que puse en mi último artículo. Ese utiliza un socketserver. Te tiene que fucionar.

      Salu2.

  112. Luciano says:

    si ahora lo voy a probar…
    pero no creo ke me ande…
    porke es igual al mio… todo igual.. es mas este servidor web es mas complicado todavia..

    el mio es un server socket pelado…
    pero mañana a la mañana lo pruebo y te digo…

    no sabes nadie de aca de argentina que lo haya podido hacer andar un server socket?

  113. Luciano says:

    No tampoco anduvo….
    Ya esta ya probe de todo….
    probe con chip de personal, con chip de movistar.. y ninguno responde.
    Teoricamente podria estar cerrado el servicio para las conexiones entrantes, pero me llama mucho la atencion, porque agarre el chip y lo menti en un modem de movistar wirless, y hice un socket con el eclipse, y ahi si se conecta.
    Con lo cual.. ya no se que mas hacer.,,

    por favor si alguien de ARGENTINA.. logro hacer andar el TC65 como un Server Socket que me de una mano….

    Saludos!

    • Javier says:

      Hola..
      No se si te sirva, pero con este metodo puedo conectarme en Argentina, tanto con CTImovil como con Unifon. Como Server utilizo un ejemplo en VB6.
      (http://www.monografias.com/trabajos30/tutorial-visual-basic/tutorial-visual-basic.shtml)

      //Método para config y conectar el socket
      public String ConfigTCP () throws ATCommandFailedException, InterruptedException
      {
      String r = “\n____ConfigTCP____\n”;
      r = r + ATC.send(“AT^SICS=0,conType,GPRS0\r\n”); // at^sics=1
      r = r + ATC.send(“at^sics=0,apn,” + AccessPointName + “\r\n”); //
      r = r + ATC.send(“at^sics=0,user,” + Usuario + “\r\n”);
      r = r + ATC.send(“at^sics=0,passwd,” + Contraseña + “\r\n”);
      r = r + ATC.send(“AT^SISS=0,alphabet,1\r\n”); //
      r = r + ATC.send(“AT^SISS=0,srvType,socket\r\n”);
      r = r + ATC.send(“AT^SISS=0,conId,0\r\n”); //
      r = r + ATC.send(“AT^SISS=0,address,socktcp://” + direccionIP + “:” + puerto + “\r\n”);
      r = r + ATC.send(“AT^SISO=0\r\n”); //
      Thread.sleep(1000); //

      return (r); //
      }
      Sds.

  114. Lenardo says:

    Buenas tardes, me pregunto donde puedo conseguir el paquete com.siemens.* al programa de la Terminal Siemens TC65? ¿Cuáles son los requisitos de software para programar para este equipo, porque no tengo ese equipo pero no puede encontrar la descarga SMTK (Siemens Movilidad Toolkit). De antemano, gracias.

  115. Javier says:

    Hola.
    Antetodo Gracias por tanta info.
    Quisiera saber si existe una interupcion, o algo similar, cada ves que el TC65 recibe un dato por puerto serie (rs232).

    Muchas Gracias.

  116. antonio says:

    Hola amigos.
    Me estoy iniciando en lo de programar modem en java, y tengo un monton de dudas.
    En primer lugar despues de haber instalado todo el software con la ayuda del video-tutorial dejado por “blogelectronica”, intento crear mi primer proyecto en eclipse que va a ser el ejemplo de HelloWorld, todo bien hasta que tengo que crear los archivos “.jad” y “.jar”.
    ¿Alguien sería tan amable de decirme como se hace en Eclipse para asi poder usar el emulador de este?
    Darle las gracias de antemano a quien me conteste y sobre todo a blogelectronica porque sin su ayuda ni me hubiese atrevido a empezar en esto.

    • blogElectronica says:

      Hola Antonio,

      ¿cual es el problema? ¿no sabes generar el JAR? Si es eso, haz click con el botón derecho del ratón en el proyecto y haz un “J2me>Create Package” y los tendrás automáticamente.

      Si no es eso, concreta algo más la pregunta.

      Salu2

      • antonio says:

        Hola blogelectronica.

        El problema eran dos, uno el que me has comentado que ya consegui resolverlo pero el otro es que me da error al simularlo en eclipse, no se si estos ejemplos se pueden usar en este simulador o solo sirven para introducirlos en el modem.

        El problema es que me dan errores al simularlos, y supongo que algo estoy haciendo mal en eclipse.

        El error al simular el HelloWorld es el siguiente:
        ==== Jar file: “C:\Documents and Settings0\workspace\EJEMPLO_HelloWorld\EJEMPLO_HelloWorld.jar” not found on used PC target directory! ====
        Download of files and Debugging are aborted!

        Soy consciente de que son preguntas obvias pero esque estoy muy verde en este campo.

        1 saludo y muchas gracias.

  117. jmachm says:

    Hola,

    Tengo las siguiente dudas. Cuando ponemos el TC65i en modo SLEEP no cíclico mediante los comandos AT deste la aplicación de java ¿en que punto de la aplicación se queda dormido? ¿Se han de cerrar todos los procesos o threads? Si se activa el modo normal con la linea RTS ¿es necesario tener el puerto configurado para control de flujo mediante CTS/RTS o sin control de flujo también es posible? ¿Hay algún ejemplo?

    Muchas gracias.

    • blogElectronica says:

      Hola Jose,

      aunque lo hemos hablado por teléfono, te contesto por si a otro usuario le interesa.

      Cuando desde java entramos en modo Sleep, las aplicaciones java no se paran, siguen funcionando. Lo de salir de ese modo con la línea RTS si no tienes control de flujo, sinceramente no lo se, no he probado esa combinación, tendrás que probarlo.

      De todas maneras poco vas a ahorrar en modo sleep. Usa el modo Airplane para un mayor ahorro de energía.

      Salu2

  118. Ismael says:

    Saludos Amigo

    Soy de venezuela, compre un modem de estos desde españa para un proyecto de envio y reccion de datos remotamente entre un pc y un computador de un motor diesel.
    AL principio no me queria agarrar ningun sim card, hasta que un dia solo me faltaba probar con sim card de blackberry y funciono perfectamente, se registraba en la red, me daba direccion ip, me enviaba los datos, todo bien.
    Un dia queria hacer pruebas, y no se quiso registrar en la red ( con el mismo chip que estaba utilizando). Probe con otros sim card de amigos que me los prestaban para hacer las pruebas, de las tres compañias que existen en venezuela, y nada.
    Cuando le activo la solicitud de codigo PIN al sim card, en el Hyperterminal me sale error: el codigo pin es incorrecto, pero introduzco el sim card en mi telefono, introduzco el pin y lo acepta.
    Pensando que era el modem que se habia dañado, compre otro…..pero me genera el mismo error, no se registra en la red, y no me da direccion IP.

    Fui a los agentes autorizados de movistar y las otras compañias y me dicen que todo esta bien en los chips que estaba utilizando, que ellos no pueden ayudarme mas porque no me vendieron el modem.

    Cual es el problema que el modem me diga que el codigo PIN es incorrecto, cuando desactivo la solicitud de codigo PIN, el led del modem comienza a titilar las dos veces por segundo indicando que se registro en la red, pero no me da direccion IP cuando le hago la llamada perdida o envio el SMS con la pálabra ON. Aun y cuando le activo esa opcion en la configuracion.

    Que me dices al respecto, cual puede ser el problema?

    por favor responde a mi correo

    Gracias

  119. walter says:

    hola amigo soy nuevo en esto y quiero desarrollar una aplicacion q me arroje las cordenadas de un dispositivo movil vi tus ejemplos y me interesan mi consulta es ¿que tipo de materiales debo usar y que compilador de java se utiliza(netbeans o eclipse) ?¿como puedo ejecutar tus ejemplos y como configuro la pc con el moden? se q son muchas preguntas pero agradeceria su ayuda mi correo es walter_965@hotmail.com

    • blogElectronica says:

      Walter,

      tienes toda una literatura que leer amigo por este blog. Si te tengo que explicar todo eso me paso de aquí hasta navidad escribiendo la respuesta.

      Te recomiendo que si tienes el SDK del TC65i, te leas el documento JavaUserGuide.pdf, donde están las prespuestas a muchas de tus dudas.

      Salu2

  120. TAIAA MOHAMMED says:

    Hola a todos,
    Paso ahora a la palabra cuando abro el hiper terminal y puse el comando AT “AT ^ SJRA=A:/ tmp / EJEMPLO_GPS :/. Jar” programa muestra todo va bien muy bien pero ahora que hago?, es decir, el paso siguiente para iniciar el programa GPS. Por favor ayúdame.

    Debo añadir que he usado el programa que es EJEMPLO_GPS.

  121.  
Leave a Reply

Puedes publicar un comentario aquí si quieres, pero te recomiendo que uses el nuevo foroElectronica.com para introducir comentarios. Te contestaré más rápido. Recuerda que debes registrarte si no lo estás para publicar un comentario.