Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Чтение данных из COM порта


Автор: zheltovodets 6.7.2013, 00:58
Считываю данные с com порта. 
 
Код

int numByte=0;
            try {
               
                byte[] readBuffer = new byte[20];
                 while (inputStream.available() > 0) {
                    numByte = inputStream.read(readBuffer);
                    
                            }
                 for (int i=0; i< readBuffer.length; i++) {
                     System.out.print(Integer.toHexString(readBuffer[i]));
                 }
                 
                 
                 } catch (IOException e) {}



По протоколу устройство отдает 20 байт, но отдает максимум по 8 байт. То есть цикл проходит 3 раза по 8, 8 и 4.
И я получаю 4042d3030302e320000000000003438d553132332e0000000000003435da000000000000000.
Как мне объединить, что бы можно было выхватывать значения???? 

Автор: a0730 7.7.2013, 22:29
Используй другой вариант метода read: read(byte[] b, int off, int len)

for (int off=0;inputStream.available() > 0;) {
   numByte = inputStream.read(readBuffer, off, readBuffer.length-off);
   if( numByte > 0 ) {
      off += numByte;
   }
   else {
      break;
   }
}


Этот ответ добавлен с нового Винграда - http://ru.vingrad.com//object-id51d741e76ccc191a61000003#findElement_E7045_51d9c19d6ccc19f67e000443_0

Автор: LSD 8.7.2013, 10:51
Модератор: Название темы должно отражать ее суть!


http://docs.oracle.com/javase/6/docs/api/java/io/DataInputStream.html#readFully(byte%5B

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)