private void getRidOfResidueData() throws FTDWrapperNotOpenException, FTDWrapperProcessNullException, FTDWrapperBadQueueStatusException, FTDWrapperBadReadStatusException { /* Get rid of residue data*/ byte[] data; int residueData = ft_device.getQueueStatus(); // Logger.log("Residue = %d", residueData); while (residueData > 0) { data = new byte[residueData]; ft_device.read(data); residueData = ft_device.getQueueStatus(); } }
public String send(String command, boolean expectAnswer, long timeout) throws FTDWrapperException { ft_device.write(command.getBytes()); // Logger.log("%s sent", command); // ft_device.write("W".getBytes(StandardCharsets.US_ASCII)); if (!expectAnswer) return null; if (timeout > 0) { /* Try to wait for timeout. Continue silently if unsuccessful. */ try { Thread.sleep(timeout); } catch (InterruptedException e) { e.printStackTrace(); } } // TODO: Change to StringBuilder String out = new String(""); while (true) { int expectedDataSize = ft_device.getQueueStatus(); // Logger.log("Expected = %d", expectedDataSize); if (expectedDataSize > 0) { byte[] receivedData = new byte[expectedDataSize]; // Logger.log("Expected = %d", expectedDataSize); int readSize = ft_device.read(receivedData); if (readSize < expectedDataSize) throw new FTDWrapperException( "Could not read all data. Expected " + Integer.toString(expectedDataSize) + " bytes, read " + Integer.toString(readSize) + " bytes."); out += new String(receivedData); } else break; /*throw new IOException("Could not read any data. Waited for " + Long.getCSVString(timeout) + " but received no data. Check the connection or increase readWait."); */ } // Logger.log("recv = %s", out); return out; }