0% encontró este documento útil (0 votos)
117 vistas165 páginas

App Inventor

Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PPTX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
117 vistas165 páginas

App Inventor

Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PPTX, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 165

Procesadores Clase Viernes 15

de septiembre 2023
App Inventor: Google se la compro
al MIT
1. Google no regala nada
Plataforma. On Line para hacer aplicaciones en
sistema Android.
Se requiere cuenta Gmail. unal.edu.co ..sirve!
E ingresar a: http://appinventor.mit.edu/
Las aplicaciones que nos interesas serán de conectividad
simple. (BLUETOOTH)
Para trabajar en la virtualidad toca configurar su
computadora para que virtualice el canal inalámbrico
bluetooth en un puerto com. Quiere decir que al Windows
reconoce el canal bluetooth vivo; le asigna un puerto com.
Ahora puede enrutar datos de proteus por ejemplo, o de
algún programa de consola. O una combinación de los
mismos. Pueden presentarse problemas de conectividad con
algunas actualizaciones para los Samsung y toca consultar la
solución.
En este curso vamos a conectar los procesadores a una
aplicación en App Inventor usando el canal Bluetooth. Hacer
esto requiere manejo de cadenas o manejo de caracteres
tanto enviando como recibiendo, sea el procesador o sea el
dispositivo Android.
• Introducción al uso de la plataforma.
• Como Probar la aplicación.
• Como generar código fuente (.AiA) y archivo
ejecutable .apk.
• Algunas recetas de cocina obligadas.
Ordenes de diagramación
Ordenes de inclusión de objetos virtuales
Modo bloques
Modo diagramación.
Ejemplos prácticos:
Lanzar caracteres desde APP Inventor y
capturarlos con el procesador para realizar un
accionamiento digital.

Estos ejemplos tienen código para el PIC y código


para el dispositivo Android. Hay muchos
ejemplos en la nube como YouTube. Inicialmente
con Arduino bastantes.
Prender dos leds con App Inventor y un pic por bluetooth.
PiC 16F877A
Dos leds en D0 y D1
Una usart
A 20 Mhz
Programa app01.c
#include <app01.h>

#include <string.h>
char valor;
void main()
{
set_tris_d(0b00000000);
output_low(led_verde);
output_low(led_Azul);
while(TRUE)
{
valor=getc();
switch(valor){
case 'A':
output_high(led_Verde);
break;
case 'B':
output_low(led_Verde);
break;

case 'C':
output_high(led_Azul);
break;

case 'D':
output_low(led_Azul);
break;
}
}
}
Ojo con las últimas actualizaciones
al sistema Android este exige que
usted otorgue permiso a las
aplicaciones instaladas sobre el
celular, si no lo hace nada va a
funcionar (esto es nuevo)
Cuando por ningún motivo se logra conectar a
la red bluetooth se debe desinstalar y volver a
instalar el dispositivo
Otra forma de ayudar a que se de una
conexión es borrar la memoria cache tanto de
la aplicación como las aplicaciones de Google.
Antes de probar con bluetooth. Se
puede probar con consola.
Segundo ejemplo de hoy.

Enviar Valores analógicos a una aplicación App


Inventor, desde el microcontrolador
Voltímetro.
En la Tablet voltímetro
En ccs voltimetro7
D:\clasevirtual\clase2021_2\procesadores\Voltimetro7
En proteus voltimetro7
D:\clasevirtual\clase2021_2\procesadores\Voltimetro7
El código CCS Correspondiente es este:
//programa para enviar valores analogos y probarlos con app inventor
//el programa en esta oportunidad manda valores provenientes del puerto
analógico en
//enteros HEX (xxxx) entre 0 y 1023
//se prueba con voltimetro1 .apk APPINVENTOR.

#include <voltimetro7.h>
#include <stdlib.h>
#include <string.h>
void main()
{
int16 num ,j ,k;
setup_adc_ports(AN0);
setup_adc(ADC_CLOCK_INTERNAL);

while(TRUE)
{
delay_ms(500);
set_adc_channel(0);
delay_us(20);
num = read_adc(); //agrando el numero de cero a mil
if(num<256){ //debo generar dos casos a APP inventor solo me recibe hex asi: 0xhhhh (4
cifras)
putc(0); //si el numero es hasta 255 se le ponen dos ceros adelante a la secuencia de
bits
putc(num); //luego la cifra menos significativa
}
if(num>255){ //pero si es mayor a 255 las cifras deben ser convertidas a un hex de
dos bytes de la siguiente forma
j=num/256; //calculo la cifra mas significativa
k=num-j*256; //calculo la cifra menos significativa
putc(j); //las envio a la usart para que se las ponga al modulo bluetooth y la lleve al
android
putc(k); //mas significativa primero, menos despues si no no funciona!!! y con la orden
PUTC solo asi le envia binarios
}
}
}
Leer códigos QR
La conexión Bletooth
https://goqr.me/
Ver: clases de appinventor.doc
Usar random.org

https://www.random.org/strings/

Mu9HAzz5xa2eO2Gm9nRXI42e7ZK39e2oAH034gG0 la que envío


El código QR
http://www.unrobotica.com
Se necesita ahora un programa que detecte la cadena:
procesadores 2021
#include <16F877A.h>
#device ICD=TRUE
#use delay(crystal=20000000)
#use FIXED_IO( D_outputs=PIN_D1,PIN_D0 )
#define led PIN_D0
#use
rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8,stream=PORT1,restart_wdt)
#include <stdio.h> // Incluimos las librerias stdio.h y string.h
#include <string.h>
char string[20]; // Variable donde se almacena la cadena de caracteres
char *encriptada = “procesadores2021";
void main()
{
set_tris_d(0b00000000);
output_low(led);
while(true)
{
if(kbhit(PORT1)) // Verificación si ha llegado un dato por el puerto serial
{
fgets(string, PORT1); // Lee la cadena de caracteres
printf(" Cadena Recibida: %s\n",&string); // Imprime la cadena recibida
a = strcmp (string, encriptada);
if(a==0)
output_high(led); //pulso cantonera electrica
delay_ms(2000);
output_low(led);
}
}
}
Ordenes con la voz
Para que funcione el
reconocedor de habla a
texto Google exige que
se tenga una conexión
viva a internet y que se
le hable con acento
español para buenos
resultados.
Diga usted enciende o diga apaga
Codigo en CCS
Seria un programa que detecte las cadenas “on” y “of” y
accione una salida digital.
ORDENES CON CADENAS
D:\clasevirtual\clase2021_2\procesadores\RECEPCION STRINGS PIC\RECEPCION STRINGS PIC\CODIGOS\STRING RX

EN APPINVENTOR
Ordenes13

En proteus
D:\clasevirtual\clase2021_2\procesadores\RECEPCION STRINGS PIC\RECEPCION STRINGS PIC\SIMULACIONES
READ STRING.pdsprj
Enlaces de Consulta
VER CORREOS DESDE UNA APLICACIÓN
http://www.youtube.com/watch?v=sRrALcchW7c
ORGANIZAR ELEMENTOS DE PANTALLA
http://www.youtube.com/watch?v=HKfhwH5nua4
ABRIENDO ENLCES WEBB
http://www.youtube.com/watch?v=g0LnmA6hdic
REALIZAR LLAMADAS TELEFONICAS
http://www.youtube.com/watch?v=is6jfhri_-w
DISTRIBUIR APLICACIONES
http://www.youtube.com/watch?v=iclsJzsY5hs
MENUS LATERALES
https://www.youtube.com/watch?v=wXsD-VgxMos
https://www.youtube.com/watch?v=GjlZ8JvgR3E
https://www.youtube.com/watch?v=a7eUrhNwtGs
PUBLICAR APLICACIONES EN GOOGLE PLAY
http://www.youtube.com/watch?v=WnKmyyJM7aM
PROMOCION DE APLICACIONES
http://www.youtube.com/watch?v=JQhij9I8aKw
PRIMEROS PASOS
http://www.youtube.com/watch?v=ILTktsIvq2w
CONEXIÓN BLUETHOO
http://www.youtube.com/watch?v=6JpJKTPzGWk
http://www.youtube.com/watch?v=H6STRDYPO6U
neoteo
http://www.neoteo.com/iluminacion-led-con-android-ii/
http://www.neoteo.com/iluminacion-led-controlada-con-android/
termómetro con android
http://www.neoteo.com/termometro-lm92-android/
oscilloscope
http://www.youtube.com/watch?v=DIDy3PAReXo
motodef studio for android, no baja de su webb..
http://www.youtube.com/watch?v=CofAYNK9RsA
http://www.youtube.com/watch?v=m_VYCGH3Sn8
encender led michel navarro
http://www.youtube.com/watch?v=mH2Q0KUMAI8
matriz leds
http://www.youtube.com/watch?v=i1cdvqvBBTc
Bases de datos en App Inventor

https://www.youtube.com/watch?v=
d28MlTrRVw8

https://www.youtube.com/watch?v=
9zfU7Hvvgjk&t=0s
Ver los dos videos muy bien
Consultar como hacer llamadas telefónicas en
App Inventor
TAREA # 1
Reto o tarea para completar la nota de
seguimiento
Basándose en bases de datos y llamadas telefónicas hacer la
siguiente aplicación en App Inventor.

Hacer una aplicación para porterías de urbanizaciones.

En la aplicación se almacena:
1. Propietario del apartamento, Nombre y apellido.
2. Bloque del edificio.
3. Apartamento.
4. Numero de teléfono.
Cuando llegue algo o alguien a portería, el portero debe
llamar al apartamento solicitado.

Pero el no digita el numero telefónico eso lo hace la


aplicación.

El digita # de bloque y # de apartamento y el sistema le


muestra el nombre del propietario y sin mostrarle el
numero telefónico este le marca al propietario. Y los
conecta telefónicamente.
El programa debe permitir llenar la base de datos de cada
propietario, inclusive editarla y corregirla asi como crearla.
Regulacion PID
Ejemplo del libro
La web
DESCARGAR ARCHIVOS DE PICC Y PROTEUS 8
TAREA # 2
Reto o tarea para completar la nota de
seguimiento
Control Por lógica difusa
Fuzzy Logic
Consulte las definiciones
Consulte como hacer El controlador.
https://www.youtube.com/watch?v=q0Q4whGLIVs
http://www2.imse-cnm.csic.es/Xfuzzy/Xfuzzy_3.0/download_sp.html
TAREA#2 Péndulo invertido.
Podemos Implementar el clásico
control de un péndulo invertido

Que tiene dos variables de entrada:


Error.
Derivada del error.
Aprendemos como hacer un controlador Fuzzy

• Programa que lo diseña y Genera código en C o C++


• Incrustamos el código en un programa para
embebidos CCS u otro
• Probar el sistema
• Real o en simulación (Proteus)
TAREA#3
Podemos Implementar el clásico
control de un Motor eléctrico.

Que tiene dos variables de entrada:


Error.
Derivada del error.
Control por mensajería de texto SMS.
La telefonía celular es una técnica compleja de comunicación basada en una
configuración de antenas que cubren una secuencia de celdas.

La G1 fue la primer generación y era analógica.


Los SMS funcionan desde la G2 de telefonía celular
Al día de hoy llegamos al G5 que es la mas avanzada en velocidad y desempeño.
Las redes de telefonía móvil se basan en el concepto de celdas, es decir
zonas circulares que se superponen para cubrir un área geográfica.
Las redes celulares se basan en el uso de un transmisor-receptor
central en cada celda, denominado estación base (o Estación base
transceptora, BTS). Cuanto menor sea el radio de una celda, mayor
será el ancho de banda disponible. Por lo tanto, en zonas urbanas muy
pobladas, hay celdas con un radio de unos cientos de metros mientras
que en zonas rurales hay celdas enormes de hasta 30 kilómetros que
proporcionan cobertura.
En una red celular, cada celda está rodeada por 6 celdas contiguas
(por esto las celdas generalmente se dibujan como un hexágono).
Para evitar interferencia, las celdas adyacentes no pueden usar la
misma frecuencia. En la práctica, dos celdas que usan el mismo
rango de frecuencia deben estar separadas por una distancia
equivalente a dos o tres veces el diámetro de la celda.
En una red GSM, el terminal del usuario se llama estación móvil. Una
estación móvil está constituida por una tarjeta SIM (Módulo de
identificación de abonado), que permite identificar de manera única al
usuario y al terminal móvil, o sea, al dispositivo del usuario
(normalmente un teléfono portátil).

Los terminales (dispositivos) se identifican por medio de un número


único de identificación de 15 dígitos denominado IMEI (Identificador
internacional de equipos móviles). Cada tarjeta SIM posee un número
de identificación único (y secreto) denominado IMSI (Identificador
internacional de abonados móviles). Este código se puede proteger
con una clave de 4 dígitos llamada código PIN.
Por lo tanto, la tarjeta SIM permite identificar a cada usuario
independientemente del terminal utilizada durante la comunicación
con la estación base. Las comunicaciones entre una estación móvil y
una estación base se producen a través de un vínculo de radio, por lo
general denominado interfaz de aire (o en raras ocasiones, interfaz
Um).
Todas las estaciones base de una red celular están conectadas a
un controlador de estaciones base (o BSC), que administra la
distribución de los recursos. El sistema compuesto del controlador
de estaciones base y sus estaciones base conectadas es
el Subsistema de estaciones base(BSS). Por último, los
controladores de estaciones base están físicamente conectados
al Centro de conmutación móvil (MSC) que los conecta con la red
de telefonía pública y con Internet; lo administra el operador de la
red telefónica. El MSC pertenece a un Subsistema de conmutación
de red (NSS) que gestiona las identidades de los usuarios, su
ubicación y el establecimiento de comunicaciones con otros
usuarios.
Generalmente, el MSC se conecta a bases de datos que proporcionan
funciones adicionales, como el Registro de ubicación de
origen (HLR), una base de datos que contiene información (posición
geográfica, información administrativa, etc.) de los abonados
registrados dentro de la zona del conmutador (MSC); el Registro de
ubicación de visitante (VLR), una base de datos que contiene
información de usuarios que no son abonados locales. El VLR
recupera los datos de un usuario nuevo del HLR de la zona de
abonado del usuario.
Los datos se conservan mientras el usuario está dentro de la zona y se
eliminan en cuanto abandona la zona o después de un período de
inactividad prolongado (terminal apagado); el Registro de
identificación del equipo (EIR), una base de datos que contiene la
lista de terminales móviles; el Centro de autenticación (AUC), que
verifica las identidades de los usuarios.
La red celular compuesta de esta manera está diseñada para admitir
movilidad a través de la gestión de traspasos (movimientos que se
realizan de una celda a otra).

Finalmente, las redes GSM admiten el concepto de roaming: el


movimiento desde la red de un operador a otra.
Una tarjeta SIM contiene la siguiente información: el número
telefónico del abonado (MSISDN); el número internacional de
abonado (IMSI, Identificación internacional de abonados móviles), el
estado de la tarjeta SIM; el código de servicio (operador); la clave de
autenticación; el PIN (Código de identificación personal); el PUK
(Código personal de desbloqueo)
El servicio de mensajes cortos o servicio de mensajes
simples, más conocido como SMS (por las siglas del
inglés Short Message Service), es un servicio disponible en
los teléfonos móviles que permite el envío de mensajes cortos
(con un límite de caracteres) entre teléfonos móviles. Por lo
general las operadoras telefónicas cobran por cada mensaje
enviado.
Este servicio fue inventado en 1985 por Matti Makkonen, junto
al sistema global para las comunicaciones móviles (Global
System for Mobile communications, GSM). El SMS se diseñó
originalmente como parte del estándar GSM de telefonía móvil
digital, y actualmente está disponible en una amplia variedad
de redes, incluidas las redes 4G.
El SMS sirve para teléfonos fijos y otros dispositivos de mano.
El primer mensaje SMS fue enviado por la red GSM de
Vodafone en el Reino Unido el 3 de diciembre de 1992, Neil
Papworth de Sema Group (ahora Mavenir Systems) utilizando
una computadora personal a Richard Jarvis de Vodafone. El
texto del mensaje fue «Feliz Navidad».1​
Los dispositivos capaces de enviar y recibir SMS reemplazaron
a los teléfonos celulares analógicos y beepers hacia finales de
los años 1990, siendo muy populares en la década de 2000. Sin
embargo, con el auge de las aplicaciones de mensajería
instantánea de los teléfonos inteligentes vía Internet en los años
2010 (como WhatsApp, Telegram o Facebook Messenger), los
SMS han caído en un considerable desuso.
Para nosotros el SMS lo usaremos para accionar sistemas de forma
remota o para captar sensores. Aun si los SMS caen completamente
en desuso seguiríamos con el IoT. o las redes GPRS, que por ahora les
falta para entrar en desuso.
Antes de proponer los SMS como un recurso para enviar datos por
una red GSM. Comentemos un poco del procedimiento para acceder
a la red GSM. Además los protocolos de comunicación que debemos
implementar en los microcontroladores.
El mensaje a enviar debe cumplir con el formato PDU , como prueba
enviaremos "Hola Mundo" al número ficticio 123456789. Lo
primero de debemos hacer es codificar el mensaje siguiendo el
formato por defecto de 7 bits definido por GSM 03.38. y realizar las
transformaciones necesarias para convertir los septetos en octetos.
Una vez codificado el texto pasamos a formar el mensaje PDU, según
la especificación.
Antes de enviar un mensaje real quizás sea interesante
comprobar que está correctamente construido.
Por fin podemos enviar el SMS, desde el HiperTerminal tecleamos los
siguientes comandos AT:

AT+CMGF=0 //Activar modo PDU


AT+CMGS=22 //Enviar mensaje de 22 octetos, se excluye el campo SCA
(Service Center address), en este ejemplo los primeros ceros.
>001100098121436587F90000A70AC8373B0C6AD6DDE437 // Para enviar el
mensaje pulsar +Z

El envío de un mensaje SMS en modo PDU no es nada trivial ya que requiere


realizar operaciones antes de poder proceder al envío, el modo texto es mucho
mas sencillo pero no esta soportado por los teléfonos mas antiguos.
Modem GSM/GPRS
Es el equipo para comunicarse con la red de celulares y
poder enviar y recibir mensajes de Texto.

Pueden ser independientes o hacer parte de un teléfono


celular. A nosotros solo nos interesan modem que tengan
un puerto de comunicación serial activo para aplicar
ordenes tipo AT

Algunos Módulos GSM/GPRS


Consultar su respectivo manual y listas de mandos AT
Ojo Cuando lo compre
verifique la compatibilidad en su
país y que sea forzosamente
Cuatribanda.
Descripción Protocolo PDU HEX

Ejemplo de software de hacer una comunicación PIC - MODEM


PROCESADORES.
CLASE MARTES 11 DE ENERO DEL AÑO 2022
Continuamos con los mensajes de texto
Vamos a trabajar con un modem GSM y le vamos a ver
su respuesta a diversos mensajes de texto

Vamos a insertarle una tarjeta SIM

Usaremos Docklight y un programa para módems


MOVILON (ambos son útiles según la intensión)
Antes de usar un modem GSM como dispositivo de control
usted debe conocer los siguientes datos:
Conocer las ordenes AT compatibles apegándose a su hoja de datos
Configurar el modem para que pueda enviar y recibir mensajes de texto.
Conocer Los protocolos de transmisión y recepción de los mensajes de texto

Debemos asimilar el procesador como un operador según este este


ejecutando envió de mensajes como recepción de mensajes.
Seguido a la recepción por el lado del procesador. Las cadenas de texto se
transforman en ordenes para hacer accionamiento digital.
Si quiero accionar el led desde el móvil, se debe
hacer un programa que haga lo siguiente:

• Detecte cuando llega un mensaje de texto al modem


• Ejecute una orden AT, que permita leer el mensaje
• Extraer de la trama de recepción el mensaje con
decodificación o sin decodificación.
• Discriminar el mensaje de interés y ejecutar la acción.
Si quiero reportar al celular el accionamiento de
un pulsador, se debe hacer un programa que
haga lo siguiente:

• Detectar el evento ojala por interrupción.


• Ejecute el protocolo de transmisión de mensajes de texto
deseado.

• Los mensajes si no son codificados se pueden diseñar


usando un programa especializado como MOVILON
Primer paso es estructurar el programa en el PIC.
Configurar el PIC.
Configurar el modem.
Escribir una rutina de interrupción por puerto
digital que desencadene el envió de un mensaje
de texto.
El programa principal espera la secuencia de
indicadora de mensaje entrante y a partir de ahí
ejecuta el accionamiento requerido
Podemos probar esta comunicación lanzando scripts con
docklight

Para esto lo primero seria configurar el modem. Esto


requiere escribir en el Modem una serie de ordenes At, que
retornen respuesta OK

Debemos escoger un PIC


// Esta funcion de abajo lee todo un bufer hasta encontrar CR o LF y el resto lo rellena de
// $, count es lo que va a leer. Lo leido lo mete en buffer que es una cadena previamente
definida
// incorpora medida de tiempo si se demora mas de tres segundos retorna fracaso con -1
/*
int readBuffer(char *buffer,int count){
int i=0;
Time=0; // start timer
while(1) {
while (kbhit(PORT1)) {
char c = getc(PORT1);
if (c == '\r' || c == '\n') c = '$';
buffer[i++] = c;
if(i > count)break;
}
if(i > count)break;
if(Time > 3) {
//t.stop();
//t.reset();
break;
}
}
delay_ms(500);
while(kbhit(PORT1)){ // display the other thing..
char c = getc(PORT1);
}
return(0);
}
//inicia la recepcion de un mensaje de texto
while(1){
if (GSM.readable()) {
readBuffer(buffer,100);
pc.printf("%s=\r\n",buffer);
for(i=0;i<5;i++)
{
resp[i]=buffer[i];
}
pc.printf("%s=\r\n",resp);
if(strcmp("$$+CM",resp) == 0){ //COMPARA resp con "+CMTI"
pc.printf("llego MSG\r\n");
for(i=0;i<100;i++)
{
resp[i]=buffer[i];
}
cleanBuffer(buffer,100);
wait(1);
GSM.printf("AT+CMGL=0\r\n");//envio comando para leer mensaje
pc.printf("AT+CMGL=0\r\n");
wait(1);
GSM.printf("AT+CMGD=0\r\n");
wait(1);
//leer telefono
for(i=0;i<10;i++){
tel[i]=resp[i+40];
}
pc.printf("%s-\r\n",tel);
//leer tamaño
for(i=0;i<2;i++){
tam[i]=resp[i+68];
}
pc.printf("%s-\r\n",tam);
//leer mensaje
for(i=0;i<14;i++){
msg[i]=resp[i+70];
}
pc.printf("%s-\r\n",msg);
//decodificar mensaje
//comparar mensaje
if(strcmp("417658DE0EC700",msg) == 0){ //COMPARA resp con "417658DE0EC700" que es
Alarma1
LedVerde=1;
LedAzul=0;
wait(15);
LedAzul=1;
LedVerde=0;
}
if(strcmp("417658DE0ECB00",msg) == 0){ //COMPARA resp con "417658DE0ECB00" que es
Alarma2
LedVerde=1;
LedRojo=0;
wait(15);
LedRojo=1;
LedVerde=0;
}
//ejecurar orden //ya se ejecuto
//08-D6379B1E569763 esto es Voltaje1

cleanBuffer(buffer,100);

}
}
//*********************esta funcion inicializa el modem***************
int init()
{
if (0 != sendCmdAndWaitForResp("AT\r\n", "OK", 5)){
return -1;
}
if (0 != sendCmdAndWaitForResp("AT+CNMI=1,1\r\n", "OK", 5)){
return -1;
}
if (0 != sendCmdAndWaitForResp("AT+CMGF=0\r\n", "OK", 5)){
return -1;
}
if (0 != sendCmdAndWaitForResp("AT+CBST=0,0,1\r\n", "OK", 5)){
return -1;
}
return 0;
}
//*******************FUNCIONA BIEN si se demora o no regresa devuelve -1
//******************si la respuesta es la esperada en el tiempo prudencial devuelve 0
int waitForResp(char *resp, int timeout)
{
len = strlen(resp);
sum=0;
Time=0;
t=0;
int8 flag=0;
ini:
if(kbhit(PORT1)){
fgets(cadena, PORT1); // Lee la cadena de caracteres
flag=strncmp(resp, cadena, len);
return(flag);
}//no hay nada mide el cronometro.
t=Time/30;
if(t>timeout){
return (-1);
}
goto ini;
}

void sendCmd(char *cmd)


{
puts(cmd);

}
int sendCmdAndWaitForResp(char *cmd, char *resp, int timeout)
{
sendCmd(cmd);
waitForResp(resp, timeout);
return (flag);
}
/**********se envia la palabra Intrusos en rionegro a cuatro telefonos diferentes....
//******Gustavo
GSM.printf("AT+CMGS=50\n\r");
wait_ms(200);

GSM.printf("0011000A9113223717370000AA2A21970B19CE83926EBABC3E7FCF414537881
90699D3EE7118442E83A4E9B7BB7C96BF5DAE10");
wait_ms(200);
GSM.putc((char)0x1A);
}
}

También podría gustarte