Académique Documents
Professionnel Documents
Culture Documents
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
SerialPort serialPort = new SerialPort(); List<String> portsFree = serialPort.getFreeSerialPort(); for (String free : portsFree) { System.out.println(free); }
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".
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();
int ack = 6 / / The integer representation of ACK in ASCII code is 6. data = com1.sendSingleData (ack); ) com1.close ();
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.