2014-09-09 2 views
0

Используя Android, я читаю данные (подписанный массив байтов) с микроконтроллера. Я понимаю, что BufferedReader имеет размер буфера 8192 байта. Я отправляю около 200-300 байт в секунду, это означает, что в данный момент мне нужно подождать около 25-30 секунд (8192/300), прежде чем отладчик будет читать массив байтов.Как читать буферизованные данные по мере поступления, а не когда буфер заполнен?

Я хочу читать это каждый раз, когда Android получает массив 200-300 байт (каждый полный пакет TCP), есть способ изменить максимальный размер байта BufferedReader, или есть альтернативный способ сделать это ?

private BufferedReader input; 
    input = new BufferedReader(new InputStreamReader(
     this.clientSocket.getInputStream())); 
    ... 
    ... 
    while(true) 
    { 
    try 
    { 
     Log.i("WaitingForSomeData",""); 
     String read = input.readLine(); 
     byte[] bytes = read.getBytes(); 
    } 

ответ

1

Читаю данные (подписанная массив байт) от микроконтроллера

Вы должны использовать BufferedInputStream, если вы хотите, чтобы буфер двоичные данные.

В настоящее время вы пытаетесь прочитать поток символов. Ваш метод readLine() будет блокироваться до тех пор, пока не будут получены \r, \n или \r\n. Я предполагаю, что это задерживает вашу задержку, так как вы ожидаете прибытия байта 0x0A или 0x0D.

+0

Я попробую! :), что имеет смысл, спасибо большое! –

+0

Спасибо за редактирование тоже! :) –

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