Proyecto de Programación de Sistemas “Uso de Java Native Interface para envío y recepción de datos por puerto paralelo” Nombre: Ignacio Zamora R. Profesor:

Slides:



Advertisements
Presentaciones similares
2. Manejo de memoria Manejo de memoria estática
Advertisements

Curso de java básico (scjp)
Introducción a C#.
Sun Microsystems desarrolló, en 1991, el lenguaje de programación orientado a objetos que se conoce como Java. La intención de Sun era crear un lenguaje.
Curso de Java Capitulo 1: Introducción a Java Profesor:
Lenguaje de programación Java
INTRODUCCIÓN A JAVA.
INSTITUTO TECNOLOGICO DE MINATITLAN
Temas Operaciones básicas Instalando el compilador
“Programación orientada a Objetos II”
Informática II Prof. Dr. Gustavo Patiño MJ
1.3 Programación modular. Subprogramas.
Informática II 1 Diego Fernando Serna RestrepoSemestre 2011/2.
PROGRAMACION ORIENTADA
Programación Orientada a Objetos en Java
Herramientas para el acceso directo a memoria en C++
Primer Programa en JAVA
CGI.   Cuando el World Wide Web inició su funcionamiento como lo conocemos, empezando a tomar popularidad aproximadamente en 1993, solo se podía apreciar.
Tema 7: Polimorfismo Antonio J. Sierra. Índice Introducción. Sobrecarga de métodos. Objetos como parámetros. Paso de argumentos. Devolución de objetos.
El lenguaje de programación C - Funciones -
Material de apoyo Unidad 2 Estructura de datos
Modificadores.
Lic. Rosemary Torrico Bascopé
Java Mayra M. Méndez Anota.
Clases y objetos La unidad fundamental de programación OO son las clases. Conjunto de métodos y semántica Qué se va a hacer POO Clase: que define la implementación.
Tema 6: Clases Antonio J. Sierra.
Tema 10: Interfaces Antonio J. Sierra.
HILOS Y COMUNICACIÓN ENTRE PROCESOS
Nombre, Alcance y Asociaciones (Bindings). Agenda Definición Nombre y Bindings Binding Time Importancia del Binding Time Eventos relacionados a la Asociación.
SCJP Sun Certified Programmer for Java 6
UNIDAD 2 CLASES Y OBJETOS. CLASE Elementos cabecera y cuerpo de la clase. Cabecera: aporta información fundamental sobre la clase en sí y constituye de.
Programación III Clase 07 Funciones.
El lenguaje de programación Java
Introducción a la Programación. Lenguaje de Máquina.
ASP.NET es una nueva y potente tecnología para escribir páginas web dinámica. Es una importante evolución respecto a las antiguas páginas ASP de Microsoft.
Streams. / En casi todo programa se necesita traer o enviar información a una fuente externa. / Dicha información puede estar en un archivo en el disco.
Un programa no es nada mas que una serie de instrucciones dadas al ordenador en un lenguaje entendido por el, para decirle exactamente lo que queremos.
RMI Remote Method Invocation 2da. Clase del 19 de Junio
OBJETOS DISTRIBUIDOS E INVOCACIÓN REMOTA ING. MARISCAL.
1 Objetos y Clases en Java ELO-329: Diseño y Programación Orientados a Objetos.
Curso de Java La tecnología Java
José Estay A Elementos de Estructura de computadores.
INTRODUCCIÓN A JAVA. Índice ¿Qué es Java? La plataforma Java 2 La Máquina Virtual de Java Características principales ¿Qué ventajas tengo como desarrollador?
Ejecución de un programa escrito en Java Java es un lenguaje que se ejecuta con un intérprete a diferencia de Pascal o C que se compilan para producir.
SCJP SUN CERTIFIED PROGRAMMER FOR JAVA 6
Constructor  Un constructor es un método que inicia un objeto inmediatamente después de su creación. De esta forma nos evitamos el tener que iniciar.
MBA. LIDA LOOR MACIAS 1. 3 martes, 13 de octubre de 2014 OBJETIVO: El estudiante adquirirá los fundamentos básicos de la programación orientada a objeto.
Programación de Dispositivos Móviles “Conceptos de J2ME” Rogelio Ferreira Escutia.
1 Herencia en Java Agustín J. González Diseño y Programación Orientados a Objetos.
Java Native Interface ELO326: Agustín J. González Basado en material de Universidad de Burgos, España.
Clases y Objetos en Java ELO329: Diseño y Programación Orientados a Objetos.
Programación Orientada a Objetos
Punteros Recomendado: 1. Nivelación Funciones
Funciones y Clases Amigas (Friend)‏ Miembros Estáticos (Static)
Asignatura: Computadores Profesor: José Estay Araya Sitio de la asignatura: User: cpu2014 psw: cpu#X86.
CARACTERÍSTICAS Es un lenguaje de programación estructurado de propósito general. Está estrechamente asociado al sistema operativo UNIX, ya que el propio.
LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) LENGUAJES DE PROGRAMACIÓN PARA EL DESARROLLO DE INTERFACES.
6. Clases y Métodos..  6.1 Structs  6.2 Funciones  6.3 Namespaces  6.4 Clases.
UNIDAD 4: Introducción a la Lógica Computacional Objetivo : Interpretar y aplicar adecuadamente los fundamentos básicos de la estructura y funcionamiento.
Programación Orientada a Objetos: CLASES Y OBJETOS
MEMORIA DINÁMICA.
Entorno de Trabajo e Introducción a Java Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión Práctica 1.
Prof. Manuel B. Sánchez. Declaración de Objetos Una vez que la clase ha sido implementada se pueden declarar objetos como variables locales de métodos.
Reutilización de código Elementos básicos del lenguaje Java Definición de variables, expresiones y asignaciones Fundamentos de Programación Departamento.
Introducción a Netbeans Programación 2 – Curso 2011/2012 Juan Manuel Gimeno José Luis González.
Métodos en Java. Estructura de un programa en Java ► La relación con la vida misma la podemos ver en el siguiente comentario: Imaginemos que dos clases.
Programación en Java Introducción a Java. Reseña histórica Surge en 1991 por Sun Microsystems Desarrollado para electrodomésticos Se buscaba un código.
Diseño de tipos: clase PolinomioEntero Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Práctica 8 Versión
Lenguaje Java  Todo programa Java es compilado y después interpretado  Independencia de la plataforma Programa Java fichero.java Byte code fichero.class.
Programación en Java Introducción a Java. Reseña histórica Surge en 1991 por Sun Microsystems Desarrollado para electrodomésticos Se buscaba un código.
Transcripción de la presentación:

Proyecto de Programación de Sistemas “Uso de Java Native Interface para envío y recepción de datos por puerto paralelo” Nombre: Ignacio Zamora R. Profesor: Agustín González V. Valparaíso, 19 de Noviembre. 2004

INTRODUCCIÓN Aunque las API’s de Java son poderosas para todo tipo de aplicaciones, se necesita utilizar la potencia específica de una plataforma en concreto. Java desde un principio incluyo una forma de hacer llamadas nativas desde la maquina virtual, pero tenia 2 problemas:

1. Las llamada a código nativo desde Java accedían a estructuras C, pero no estaba definida la posición exacta que debían ocupar estos campos en memoria con lo que una llamada nativa en una maquina virtual no coincidían con las llamadas en otra maquina virtual. 2. Las llamada nativas en versiones anteriores a JSDK 1.1 se basaban en el uso de un recolector de basura conservativo, este recolector recogía el puntero nativo que apuntaba a un objeto Java, por lo tanto cuando se apuntaba a un objeto Java desde el método nativo éste no se liberaba nunca más.

Debido a los problemas que se presentaron al invocar métodos nativos se implemento una nueva forma de acceder a estos métodos nativos a la que se llamo JNI. JNI es un entorno el cual nos permite ejecutar código nativo de la maquina en la cual se esta corriendo desde Java y viceversa. Código Nativo son funciones escritas en algún leguaje de programación como C o C++, donde se ejecuta la maquina virtual.

Interacción desde un programa C a un programa en Java

Interacción desde un programa Java a un programa C

IMPLEMENTACIÓN DE JNI Para implementar JNI se debe seguir los siguientes pasos: Escribir el código en java Compilar el Código Java Crear el fichero. Escribir la implementación del Método Nativo. Crear una librería Compartida. Ejecutar el programa.

ESCRIBIR EL CÓDIGO EN JAVA Se deben definir dentro de una clase Java todos los métodos Java, como los métodos nativos. Para la implementación de un método en un lenguaje de programación distinto de Java, se debe incluir la palabra clave native.

package parport; public class ParallelPort { public ParallelPort (int portBase) { this.portBase = portBase; } public int read () { return ParallelPort.readOneByte (this.portBase+1); } public void write (int oneByte) { ParallelPort.writeOneByte(this.portBase, oneByte); } public static native int readOneByte (int address); public static native void writeOneByte(int address, int oneByte); static { System.loadLibrary("parport"); }

Para llamar a métodos nativos se hace de la misma forma que la llamada a un método normal. ParallelPort lpt1 = new ParallelPort(0x378); lpt1.write(bit); lpt1.read();

COMPILAR EL CÓDIGO JAVA Ahora se debe a compilar la clase Java anterior creada de la forma convencional. javac ParallelPort.java

CREAR EL FICHERO.H La creación del fichero.h es para proporcionar un prototipo de función para la implementación de los métodos nativos write() y read() definidos en la clase ParallelPort(). Para crear este fichero se ejecuta el comando: javah ParallelPort

Si miramos dentro del fichero.h creado nos encontramos con lo siguiente: JNIEXPORT jint JNICALL Java_parport_ParallelPort_readOneByte (JNIEnv *, jclass, jint); JNIEXPORT void JNICALL Java_parport_ParallelPort_writeOneByte (JNIEnv *, jclass, jint, jint);

ESCRIBIR LA IMPLEMENTACIÓN DEL MÉTODO NATIVO. Se debe escribir ahora la implementación del método nativo en C. En el proyecto se incluyen los siguientes ficheros de cabecera: #include #include "parport_ParalellPort.h"

Dentro del programa C se deben escribir las funciones con las mismas firmas de las funciones que se generaron en el fichero.h Esta función lee en el puerto paralelo y retorna el valor leído (status) a la acción que lo invoco en Java. JNIEXPORT jint JNICALL Java_parport_ParallelPort_readOneByte (JNIEnv * algo, jclass otro, jint portStatus) { unsigned short status; status = (unsigned short)portStatus; return _inp(status); }

Por otro lado esta función envía un Byte al puerto paralelo que fue enviado por una acción en el programa Java que lo invoca. JNIEXPORT void JNICALL Java_parport_ParallelPort_writeOneByte (JNIEnv * algo, jclass otro, jint portData, jint oneByte) { unsigned short data; int aByte; data = (unsigned short)portData; aByte = (int)oneByte; _outp(data,aByte); }

CREAR UNA LIBRERÍA COMPARTIDA Las librerías son ficheros que almacenan las funciones, clases y variables globales y sirve para enlazar los lenguajes. Se pueden crear librerías de enlace estático o enlace dinámico. Para el proyecto esta librería será parport.dll donde es ligada en la clase ParallelPort. System.loadLibrary("parport") Hay varias formas de crear una librería, cada compilador y sistema operativo tienen formas distintas de llevar a cabo esta acción.

EJECUTAR EL PROGRAMA Ahora queda solo ejecutar el programa Proyecto.java, pero antes hay que guardar en la carpeta classes del compilador java la carpeta con nombre parport con los archivos: parport.dll y la clase ParallelPort.java.ParallelPort.java

Al momento de ejecutar el programa de envío muestra inmediatamente un panel con cuatro botones los cuales controlan independientemente cada led.

Al ejecutar el programa de recepción de datos se mostrara una ventana que cambiara el fondo de esta al accionar el botón que se encuentra conectado al Puerto Paralelo. El fondo será azul cuando no hay pulsación del botón y rojo cuando se pulsa.