2013-02-16 2 views
2

InputStream inputFromPort;Как узнать, какая длина полученного сообщения на последовательном порту?

try { 
     inputFromPort = serial.getInputStream(); //SerialPort 

     b=new byte[20]; 

     inputFromPort.read(b); 

     reading=new String(b,"UTF-8"); 

     System.out.println(reading.length()); 

     System.out.println("new message: " + reading); 

     inputFromPort.close(); 

     serial.close();   
    } 

РЕЗУЛЬТАТ: новое сообщение: Hello, world! -> OK шесть символов ящиков -> (которые я не могу копировать здесь) Я знаю, что они появляются, потому что длина b больше, чем «Привет, мир!», было бы здорово, если бы я знал размер из за полученный сообщение таким образом я могу инициализировать массив байтов б на том, что размер

ответ

2

Проверьте возвращаемое значение inputFromPort.read(b);:

int readLength = inputFromPort.read(b); 

Затем вы должны создать строку с полученной только байт, что является частью байт, который был фактически записан по вызову read():

String reading = new String(b, 0, readLength, "UTF-8"); 

Таким образом, у вас не будет «символов ящиков» после «Привет, мир!».

Смежные вопросы