Vous êtes sur la page 1sur 9

www.giovynet.com Giovynet Driver Ver 1.1. Cmo saber que puertos serie hay libres?

Cmo configurar el puerto serie? Cmo enviar datos? mtodo sendArrayChar .(char[] data) : void. mtodo sendSingleData (overloaded) : void. SOLO WINDOWS . mtodo sendString (String data) : void. Cmo recibir datos? mtodo receiveSingleChar () : char. mtodo receiveSingleDataInt() : int. mtodo receiveSingleString () : String. mtodo receiveToString(int amount ) : String. mtodo receiveToStringBuilder (int untilAmount , StringBuilder stringBuilder) : void. Cmo enviar caracteres de control ? Cmo recibir caracteres de control ? SOLO WINDOWS . Configurar ActionListenerReadPort (evento oyente para lectura de puerto). Configurar Thread ("hilo"), para recibir datos de forma independiente al Thread main.

www.giovynet.com

Giovynet Driver Ver 1.1.

Cmo saber que puertos serie hay libres?


Primero se instancia un objeto de tipo giovynet.nativelink.SerialPort, seguidamente se utiliza el mtodo getFreeSerialPort() para obtener una lista String de puertos libres:

SerialPort serialPort = new SerialPort(); List<String> portsFree = serialPort.getFreeSerialPort(); for (String free : portsFree) { System.out.println(free); }

Cmo configurar el puerto serie?


Primero se crea un objeto de tipo giovynet.serial.Parameter, el cual presenta por "default" la siguiente configuracin: port = COM1 baudRate = 9600 byteSize = 8 stopBits = 1 parity = N (no) Para trabajar con la anterior configuracin, solo resta instanciar un objeto de tipo giovynet.serial.Com, pasandole como constructor el objeto parameter. de esta manera se abre el puerto serie "COM1" y que listo para trabajar. Parameters parameter = new Parameters(); Com com = new Com(parameter); Para cambiar lo parmetros por "default", se utilizan los mtodos set del objeto parameter, antes de instanciar la clase giovynet.serial.Com. Por ejemplo; para configurar el puerto COM2 a una velocidad de 460800 bps, se utiliazan las siguientes instrucciones: Parameters param = new Parameters(); param.setPort("COM2"); param.setBaudRate(Baud._460800); Com com = new Com(param);

Cmo enviar datos?


Para realizar este trabajo Giovynet Driver utiliza la clase giovynet.serial.Com, que dispone de tres mtodos que se presentan a continuacin: mtodo sendArrayChar.(char[] data) : void. Este mtodo es usado para enviar elementos de un " array de tipo char". El intervalo de tiempo con que se envia cada elemento esta determinado por el mtodo setMinDelayWrite( int milisegundos) de la clase giovynet.serial.Parameters, por "default" el tiempo establecido para Windows es 0 milisegundos, y para Linux es de 10 milisegundos. Por ejemplo, el siguiente cdigo, se utiliza para enviar los elementos char alamacenados en un array, cada 100 milisegundos: public static void main(String[] args)throws Exception{ Parameters param = new Parameters(); param.setPort("COM1"); param.setBaudRate(Baud._9600); param.setMinDelayWrite(100); Com com1 = new Com(param); char[] data = {'1','A','2','B'};

com1.sendArrayChar(data); com1.close(); } La ejecucin de este cdigo, luego de 100 milisegundos enviar el char '1', luego de otros 100 milisegundos se enviar el char 'A', luego de otros 100 milisegundos se enviar el char '2', asi sucecivamente hasta que se envie el ltimo char almacenado en el array data. mtodo sendSingleData (overloaded) : void. Este mtodo es usado para enviar un elemento de tipo char, o de tipo String o de tipo Hex. El elemento se enviar transcurrido el tiempo determinado en el mtodo setMinDelayWrite( int milisegundos) de la clase giovynet.serial.Parameters, por "default" el tiempo establecido para Windows es 0 milisegundos, y para Linux es de 10 milisegundos. Por ejemplo, el siguinte cdigo muestra como enviar los datos 'a', 41, "S", en intervalos de 100 milisegundos : public static void main(String[] args)throws Exception{ Parameters param = new Parameters(); param.setPort("COM1"); param.setBaudRate(Baud._9600); param.setMinDelayWrite(100); Com com1 = new Com(param); com1.sendSingleData('a'); com1.sendSingleData(41); com1.sendSingleData("S"); com1.sendSingleData(0xff); com1.close(); }

SOLO WINDOWS. mtodo sendString(String data) : void. Este mtodo es usado para enviar elementos de una cadena String, el intervalo de tiempo con que se envia cada elemento esta determinado por el mtodo setMinDelayWrite( int milisegundos) de la clase giovynet.serial.Parameters, por "default" el tiempo establecido para Windows es 0 milisegundos, y para Linux es de 10 milisegundos. Por ejemplo, el siguiente cdigo muestra como enviar los elementos de la cadena "hello" cada 50 milisegundos: public static void main(String[] args)throws Exception{ Parameters param = new Parameters(); param.setPort("COM1"); param.setBaudRate(Baud._9600); param.setMinDelayWrite(50); Com com1 = new Com(param); com1.sendString("hello"); com1.close();

} La ejecucin del anterior cdigo, enviar luego de transcurridos 50 milisegundos, el elemento "h", seguidos otros 50 milisegundos, se enviar el elemento "e", luego de otros 50 milisegundos, se enviar el elemento "l", y asi sucesivamente hasta completar la palabra "hello".

Cmo recibir datos?


Para realizar esta tarea Giovynet Driver utiliza la clase giovynet.serial.Com, que dispone de cinco mtodos que se presentan a continuacin:

mtodo receiveSingleChar() : char. Este mtodo es usado para recibir un dato tipo char, luego del tiempo establecido por el mtodo setMinDelayWrite(int milisegundos) de la clase giovynet.serial.Parameters, por "default" el tiempo establecido para Windows es 0 milisegundos, y para Linux es de 10 milisegundos. No se recomienda para recibir caracteres de control, tales como <ACK>, <NACK>,<LF>,...etc. Por ejemplo el siguiente cdigo se utiliza para recibir 10 elementos tipo char, cada 50 milisegundos, e imprimirlos por consola: public static void main(String[] args){ Parameters param = new Parameters(); param.setPort("COM1"); param.setBaudRate(Baud._9600); param.setMinDelayWrite(50); Com com1 = new Com(param); char data; for(int x=0; x<10; x++){ data=com1.receiveSingleChar(); System.out.println(data); } com1.close(); }

mtodo receiveSingleDataInt() : int. Este mtodo es usado para recibir un dato tipo Int, luego del tiempo establecido por el mtodo setMinDelayWrite( int milisegundos), de la clase giovynet.serial.Parameters, por "default" el tiempo establecido para Windows es 0 milisegundos, y para Linux es de 10 milisegundos. Este mtodo es recomendado para recibir caracteres de control tales como, <ACK>, <NACK>,<LF>,...etc. Por ejemplo, el siguiente cdigo recibe 10 datos tipo Int, cada 50 milisegundos, y los imprime por consola:

public static void main(String[] args)throws Exception{ Parameters param = new Parameters(); param.setPort("COM1"); param.setBaudRate(Baud._9600); param.setMinDelayWrite(50); Com com1 = new Com(param); int data; for(int x=0; x<10; x++){ data=com1.receiveSingleDataInt(); System.out.println(data); } com1.close(); }

mtodo receiveSingleString() : String. Este mtodo es usado para recibir un dato de tipo String, luego del tiempo establecido por el mtodo setMinDelayWrite( int milisegundos), de la clase giovynet.serial.Parameters, por "default" el tiempo establecido para Windows es 0 milisegundos, y para Linux es de 10 milisegundos. Por ejemplo, el siguiente cdigo, lee un dato transcurridos 50 milisegundos, y lo muestra por consola: public static void main(String[] args)throws Exception{ Parameters param = new Parameters(); param.setPort("COM1"); param.setBaudRate(Baud._9600); param.setMinDelayWrite(50); Com com1 = new Com(param); String data; data=com1.receiveSingleString(); System.out.println(data); com1.close(); }

mtodo receiveToString(int amount) : String. Este mtodo se utiliza para recibir varios elementos de tipo String, y retornarlos en una cadena tipo String. La recepcin de cada elemento se realiza luego del tiempo establecido por el mtodo setMinDelayWrite( int milisegundos), de la clase giovynet.serial.Parameters, por "default" el tiempo establecido para Windows es 0 milisegundos, y para Linux es de 10 milisegundos. Por ejemplo, el siguiente cdigo se utiliza para recibir 10 elementos tipo String cada 50 milisegundos, almacenarlos en una variable y luego de esto, imprimir la vaiable por consola.

public static void main(String[] args)throws Exception{ Parameters param = new Parameters(); param.setPort("COM1"); param.setBaudRate(Baud._9600); param.setMinDelayWrite(50); Com com1 = new Com(param); String data; data=com1.receiveToString(10); System.out.println(data); com1.close(); } mtodo receiveToStringBuilder(int untilAmount, StringBuilder stringBuilder) : void. Este mtodo se utiliza para recibir varios elementos de tipo "String" y almacenarlos en un objeto de tipo StringBuilder. La cantidad de objetos a recibir y el "StringBuilder", se pasan como parmetros. La recepcin de cada elemento se realiza luego del tiempo establecido por el mtodo setMinDelayWrite( int milisegundos), de la clase giovynet.serial.Parameters, por "default" el tiempo establecido para Windows es 0 milisegundos, y para Linux es de 10 milisegundos. Por ejemplo, el siguiente cdigo lee 20 datos String cada 30 milisegundos y los almacena en un objeto de la clase StringBuilder. public static void main(String[] args)throws Exception{ Parameters param = new Parameters(); param.setPort("COM1"); param.setBaudRate(Baud._9600); param.setMinDelayWrite(30); Com com1 = new Com(param); StringBuilder stringBuilder = new StringBuilder; com1.receiveToStringBuilder(20,stringBuilder); com1.close();

Cmo enviar caracteres de control?


Para enviar caracteres de control se recomienda utilizar su representacion decimal o hexadecimal con el mtodo sendSingleData(), de la clase giovynet.serial.Com. Por ejemplo el siguiente cdigo envia el simbolo ACK (acknowledge): public static void main (String [] args) throws Exception ( Parameters param = new Parameters (); param.setPort ("COM1"); param. setBaudRate (Baud._9600) Com1 = new Com Com (param);

int ack = 6 / / The integer representation of ACK in ASCII code is 6. data = com1.sendSingleData (ack); ) com1.close ();

Cmo recibir caracteres de control?


Para recibir caracteres de control se recomienda obtenerlos en representacion decimal o hexadecimal, usando el mtodo receiveSingleDataInt(), de la clase giovynet.serial.Com. Por ejemplo, el siguiente cdigo imprime en pantalla "OK" cuando recibe el simbolo ACK. public static void main(String[] args)throws Exception{ Parameters param = new Parameters(); param.setPort("COM1"); param.setBaudRate(Baud._9600); Com com1 = new Com(param); is 06. int ack=06; //The integer representation of ACK in ASCII code int data=0; while(true){ data=com1.receiveSingleDataInt(); if (data==ack){ System.out.println("OK"); break; } } com1.close(); }

SOLO WINDOWS. Configurar ActionListenerReadPort (evento oyente para lectura de puerto).


En sistemas operativos Windows es posible agregar a una instancia de la clase giovynet.serial.Com un "evento oyente" para lectura de puerto mediente el mtodo addActionListenerReadPort(ActionListenerReadPort actionListenerReadPort), el parmetro actionListenerReadPort, debe ser un objeto que implemente la interfaz ActionListenerReadPort. La interfaz ActionListenerReadPort tiene dos mtodos que se deben implementar. El primero es tryActionPerformed(Buffer buffer), este se ejecuta si los datos son recibidos correctamente, si es as, los datos se almacenan en un objeto de tipo giovynet.serial.Buffer que permite tratarlos como objetos Array char, Array int, List int, o StringBuffer, segn se requiera. El segundo mtodo es catchActionPerformed(Exception e), se ejecuta si ocurre algn problema en la lectura del puerto.

Por ejemplo, el siguiente cdigo configura un ActionListenerReadPort, en el puerto COM1, para imprimir (como "Integer") en pantalla todos los datos recibidos; si ocurre algn error en la recepcin se imprime el volcado de pila por consola y se cierra el puerto. public class ListenerRead { private Com com1; public static void main(String[] args)throws Exception { Parameters param = new Parameters(); param.setPort("COM1"); param.setBaudRate(Baud._9600); com1 = new Com(param); com1.addActionListenerReadPort(new ActionListenerReadPort() { public void tryActionPerformed(Buffer for (int i = 0; i < buffer.getBufferInIntegerList().size(); i+ +) { System.out.print(buffer.getBufferInIntegerList().get(i)); } buffer.bufferClear(); } public void catchActionPerformed(Exception e) { com1.close(); } }); /** Other Routines Thread Main ... ... ... **/

} }

Configurar Thread ("hilo"), para recibir datos de forma independiente al Thread main.
En Java hay dos maneras de implementar un "thread", una manera es heredar la clase Thread y la otra manera es implementar la interfaz Runnable, en ambos casos se implementa el mtodo run() con las tareas que se quieren ejecutar, que son independientes a la tarea principal o "hilo main" . Por ejemplo, el siguiente cdigo implementa la interfaz Runnable para crear una tarea independiente que imprima en pantalla todos los caracteres recibidos en el puerto COM2, si ocurre algn error se imprime el volcado de pila por pantalla y se cierra el puerto.

public class ReceiveThread implements Runnable { private Com com2; public static void main(String[] args)throws Exception{ Parameters param = new Parameters(); param.setBaudRate(Baud._460800); param.setPort("COM2"); com2 = new Com(param); Thread threadReadPort = new Thread(ReceiveThread.this); threadReadPort.start(); /** Other Routines Thread Main ... ... ... **/ } /** Routines threadReadPort, independent from Thread Main **/ public void run() { try { int data = 0; while (true) { Thread.sleep(250); data = com2.receiveSingleDataInt(); if (data != do { System.out.println(data); Thread.sleep(50); data = com2.receiveSingleDataInt(); } while (data != 0); } } } catch (Exception e) { com2.close(); } } S.D.G.

Vous aimerez peut-être aussi