Laboratorio de aplicaciones en Android 2016Descripción completa
Descripción completa
Descripción completa
Mobile Transport Layer: Traditional TCP ,Indirect TCP ,Snooping TCP ,Mobile TCP, Fast retransmit/fast recovery ,Transmission /time-out freezing ,Selective retransmission, Transaction oriente…Full description
Natalio Oswaldo Salinas Ponce Jhonathan Noe Suarez ChavezDescripción completa
Descripción completa
Descripción completa
descripcion del so androidDescripción completa
Descripción completa
Communication entre processus : un client, l’autre serveur, qui coopèrent. Cette coopération s’effectue sous la forme d’un échange de données. Le client reçoit les résultats finaux délivrés par l...
Inspect and Protect with ATLAS Client Checklist for Lightning Protection SystemsFull description
androidDescripción completa
anDescripción completa
Criando aplicações em android
Descrição completa
Descripción completa
Criando aplicações em android
Sistema AndroidDescripción completa
android punoDescripción completa
Client TCP en Android – Android – Control Control sobre Leds mayo 12, 2011 | Posted in Varios | Comentarios desactivados
Presento una de mis primeras aplicaciones realizada en android (El primero primero es el !Hola mundo! ). Se trata en crear c rear una interfaz visual donde es posible ingresar una dirección IP y un puerto TCP para poder controlar 3 leds que se encuentran en la placa PIC32 Ethernet Starter Kit la cual implementa un server TCP.
El server TCP implementado en el microcontrolador es bastante sencillo: Tenemos una función que inicializa el server creando un socket server al puerto asignado:
void vInitTCPServerControlLeds(void){
myTCPServer.TCPSocket=TCP_Open(0,TCP_OPEN_SERVER,TCP_LEDS_PORT,TCP_PURPOSE_LEDS_T CP_SERVER); } Luego tenemos otra función que es llamada cada cierto tiempo que se encarga de recibir los datos enviados al server y trabajarlos para determinar si es un comando adecuado:
void vTCPServerControlLeds(void){ WORD wMaxGet,wMaxPut; BYTE Buffer[10];
// Hay alguien conectado? if(!TCPIsConnected(myTCPServer.TCPSocket))return;
wMaxGet=TCPIsGetReady(myTCPServer.TCPSocket); if(wMaxGet!=0){ // Leemos data TCPGetArray(myTCPServer.TCPSocket,&Buffer[0],wMaxGet); if(Buffer[0]==100){ switch(Buffer[1]){ case 1: LED0_IO=Buffer[2]; break; case 2: LED1_IO=Buffer[2]; break; case 3: LED2_IO=Buffer[2]; break; } } } } Para la aplicación en android recomiendo las siguientes fuentes de información:
Introducción a programar en android. Lo que hay que instalar y los pasos a seguir. Primera aplicación de ejemplo. Un ejemplo explicado paso a paso. Creación de la interfaz visual. Para ello vamos a res/layout/main.xml donde podemos ir realizando el diseño que nos parezca adecuado. En este caso el código es el siguiente:
Se crean 2 líneas para ubicar en cada una de ellas un tex tView y un EditText:
Dirección IP: _______
Puerto TCP: _______
Luego se colocan 3 Checkbox (Igualmente podrían reuinirse en una linea) y un TextView como para indicar si hay conexión con el Server TCP.
El resultado es el siguiente:
Código fuente: En el archivo *.java ubicado en /scr/… comenzamos a esc ribir el código que realizará las tareas según las acciones en la interfaz de usuario. Primero que nada debemos referenciar en variables los elementos creados en main.xml como para controlarlos:
final CheckBox _cb_led1=(CheckBox)findViewById(R.id.cb_led1); final CheckBox _cb_led2=(CheckBox)findViewById(R.id.cb_led2); final CheckBox _cb_led3=(CheckBox)findViewById(R.id.cb_led3); final TextView _tv_estado=(TextView)findViewById(R.id.tv_estado); final EditText _et_ip=(EditText)findViewById(R.id.et_ip); final EditText _et_port=(EditText)findViewById(R.id.et_port); Luego generamos una acción al realizar un click sobre cada CheckBox, de manera de establecer comunicación con el Server TCP al cual se necesita acceder, indicado mediante la dirección IP y el puerto TCP colocado en los EditText, y e nviar el comando según el CheckBox seleccionado junto a su estado.
El protocolo usado para establecer el comando es sencillo, un primer byte para indicar que se trata de control sobre Leds (100d), un segundo byte para indicar sobre que led actuar y un tercer byte para indicar el valor a setear al led seleccionado:
CMD LEDS Nº LED ESTADO final byte[] Buffer = {100,0,0}; _cb_led1.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { try { String myIP=_et_ip.getText().toString(); int myPort= Integer.parseInt(_et_port.getText().toString()); Socket mySocket = new Socket(myIP,myPort); OutputStream Data_Out = mySocket.getOutputStream(); _tv_estado.setText("Estado: Conectado"); Buffer[1]=1; if(_cb_led1.isChecked()==true){ Buffer[2]=1; }else{ Buffer[2]=0; } Data_Out.write(Buffer, 0, 3); mySocket.close(); } catch (UnknownHostException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } catch (IOException e1) {
// TODO Auto-generated catch block e1.printStackTrace(); } } }); Con la siguiente linea leemos la direccion IP y la guardamos en un String:
String myIP=_et_ip.getText().toString();
La siguiente lee el número de Puerto TCP y lo convierte a un valor entero:
int myPort= Integer.parseInt(_et_port.getText().toString());