Pues eso tengo la siguiente clase de giovynet y va todo bien.. pero no sé como hacer-lo , una vez voy a leer del puerto "sino hay nada" que me mande un mensaje diciendo "no hay datos!" o no lea directamente. He provado con comException pero da el mismo error :S
Código Javascript:
Ver original
/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package ProjecteSintesi.Model; import ProjecteSintesi.Vista.Excepcions.NoFreePorts; import giovynet.serial.Baud; import giovynet.serial.Com; import giovynet.serial.Parameters; import java.lang.reflect.Array; /** * * @author Administrador * Aquesta clase es la encarregada de la comunicació amb el port serie on estigui el aparell ZigBee */ public class Comunicacio { private String PortSerie; private Com com; private char rebut[] = new char[6]; /** * * @author Administrador * Aqui es pot cambiar el port per on parlara amb el receptor ZigBee */ public Comunicacio()throws Throwable { PortSerie = "COM4"; com=AbrirPuerto(); } public Com AbrirPuerto() throws Throwable { System.out.println("Abrete puerto"); try{Parameters Settings = new Parameters(); Settings.setPort(PortSerie); Settings.setBaudRate(Baud._9600); com = new Com(Settings); } catch (NoFreePorts error){ System.out.println(error); } return com; } public void EnviarSenyal(byte orden[]) throws Throwable { // Enviu byte a byte del array donada for (int i = 0; i < orden.length; i++) { com.sendSingleData(orden[i]); System.out.println(orden[i]); } } /** * Pregunta una de les següents coses; * RMN => pregunta per l'increment * RBN => pregunta per l'angle * RSN => pregunta per els sensors * RVN => Pregunta per el voltatge(batería) * @param orden * @throws Throwable */ public void Preguntar(byte orden[]) throws Throwable { // Enviu byte a byte del array donada for (int i = 0; i < orden.length; i++) { com.sendSingleData(orden[i]); System.out.println(orden[i]); } } /** * Retorna el següent en funció de la pregunta; * RMN => Retorna en ascii l'increment(5 bytes) => exemple 0,0,9,8,N(final d'instrucció) * RBN => Retorna en ascii l'angle(5 bytes) => exemple 0,0,9,8,N(final d'instrucció) * RSN => pregunta per els sensors(5 bytes) => exemple 0,1,0,0,N(final d'instrucció) * RVN => Pregunta per el voltatge(batería)(5 bytes) => exemple 1,2,5,N(final d'instrucció) * @return * @throws Throwable */ public char[] Rebre() throws Throwable { char caracter = 0; int i=0; while (caracter != 'N'){ try{ caracter = com.receiveSingleChar(); } catch(Com.ComException e){ System.out.println("No se recibio nada");} rebut[i] = caracter; i++; } return rebut; } public void CerrarPuerto(Com com) throws Throwable { com.close(); } }
He provado con; meterle un sout para ver lo que sacaba y me escribe esto;
leido: ( escribe un cuadrado)
leido: ( escribe un cuadrado)
etc.. no me deja copiar ese cuadrado aquí por eso lo pongo en letras xd
hasta que peta el array, que es eso? es un null? podría meter otra condicion al while pero no sé que es eso xd