Fecha de inscripción : 31/12/1969
| Tema: Utilizando el polling con los GPIOs en los módems gprs Cinterion Miér Ago 04, 2010 11:52 am | |
| Si has trabajado alguna vez con los GPIO de los módems Cinterion TC65 o XT65 ( o sus terminales MTX) habrás comprobado que hay varias formas de trabajar con ellos. Hay comandos AT que nos permiten configurar un determinado GPIO como entrada o como salida y hay otros comandos AT que nos permiten saber el estado de un GPIO configurado como entrada (si hay un 1 ó un 0) o bien nos permiten cambiar el estado de una salida. En uno de los ejemplos java que he ido poniendo por este blog, concretamente en el EJEMPLO_GPIO, utilizaba simplemente el comando AT^SGIO que devuelve el estado del pin en ese momento. Depende de la aplicación que queramos llevar a cabo puede ser suficiente con este comando AT, pero lo normal no es utilizar este sistema ya que la “frecuencia de barrido” que podemos conseguir es muy baja (además de cargar el sistema) y por tanto resulta muy complicado detectar cambios muy pequeños en el estado de un pin de entrada, es decir, que si por ejemplo tienes que detectar el pulso de detección de un volumétrico a lo mejor no lo cazas [img] [Tienes que estar registrado y conectado para ver este vínculo][/img] Lo mejor que puedes hacer para detectar los cambios de estado de las GPIOs es utilizar el polling. De esta manera el módem te devuelve un mensaje URC cada vez que se detecta el cambio en uno de sus GPIOs. Veámoslo con un ejemplo. Imagina que quieres controlar las entradas GPIO1, GPIO2, GPIO3 y GPIO4 ¿Cómo lo hacemos? Pues lo primero es habilitar los GPIOs, para ello enviamos: AT^SPIO=1 Después configuramos los pines GPIO1, GPIO2, GPIO3 y GPIO4 como entradas, para ello: AT^SCPIN=1,0,0 AT^SCPIN=1,1,0 AT^SCPIN=1,2,0 AT^SCPIN=1,3,0 Tras ello creamos un puerto, es decir, un puerto con todos aquellos GPIO que queramos involucrar en el polling: AT^SCPORT=0,1,2,3 Al enviar este comando el comando AT nos devolverá un IDPort (un identificador de puerto), por ejemplo nos devuelve IDPort = 112 Y ya lo tenemos todo listo para activar el polling. Lo activamos haciendo: AT^SCPOL=1,112 De esta manera cada vez que haya un cambio en una de las GPIO, el módem nos enviará un URC del estilo: ^SCPOL: 112, x donde x puede valer de 0 a 1024, es decir, devuelve el estado de los 10 posibles GPIO que puedes controlar con el módem TC65. | |
|