I have a byte array which is filled by a serial port event and code is shown below:
private InputStream input = null;
......
......
public void SerialEvent(SerialEvent se){
if(se.getEventType == SerialPortEvent.DATA_AVAILABLE){
int length = input.available();
if(length > 0){
byte[] array = new byte[length];
int numBytes = input.read(array);
String text = new String(array);
}
}
}
The variable text contains the below characters,
"\033[K", "\033[m", "\033[H2J", "\033[6;1H" ,"\033[?12l", "\033[?25h", "\033[5i", "\033[4i", "\033i" and similar types..
As of now, I use String.replace to remove all these characters from the string.
I have tried new String(array , 'CharSet'); //Tried with all CharSet options but I couldn't able to remove those.
Is there any way where I can remove those characters without using replace method?
input.available()is not a reliable way to check the number of bytes really available in the input stream, you should replace that part of code with the proper cycle overInputStream.read(byte[],int,int), otherwise you are reading incomplete chunks of data of random length.input.read(array)is not guaranteed to read the full array, so your current code first fails to determine the number of bytes really available in the stream and then fail to read even that wrongly-determined amount of bytes.