public int read(byte[] bytes) throws RemoteException {
try {
int recvLen = bytes.length; // 期望接收的数据长度
Logs.d("recvLen="+recvLen);
int timeout = 1000; // 超时时间(毫秒)
byte[] receivedData = portManager.portRecvs(PORT, recvLen, timeout);
// 将接收到的数据复制到传入的字节数组中
System.arraycopy(receivedData, 0, bytes, 0, receivedData.length);
return receivedData.length; // 返回实际接收的字节数
} catch (PortException e) {
throw new RuntimeException(e);
}
}
超时的时候返回-1.其他就抛出异常。
@Override
public int read(final byte[] bytes) throws RemoteException {
final int recvLen = bytes.length;
Logs.d("recvLen=" + recvLen);
final int timeout = 1000;
try {
Future<byte[]> future = executor.submit(() -> portManager.portRecvs(PORT, recvLen, timeout));
byte[] receivedData = future.get(timeout, TimeUnit.MILLISECONDS);
System.arraycopy(receivedData, 0, bytes, 0, receivedData.length);
return receivedData.length;
} catch (TimeoutException e) {
return -1; // Return -1 on timeout
} catch (InterruptedException | ExecutionException e) {
throw new RuntimeException(e);
}
}