Продолжает чтение Inputstream (serialport / tty) - PullRequest
0 голосов
/ 15 января 2019

Я постоянно читаю данные из serialport / tty. Serialport выкладывает данные каждые 40 миллисекунд. Я использую java InputStream для чтения данных.

    static final int buffersize = 208;
 buffer = new byte[buffersize];
    int dataSize = mInputStream.read(buffer);
                if (dataSize > 0)
                {
                    fpgaData = new String(buffer, 0, buffer.length);
                }

Но большую часть времени я не получаю полные данные за одно чтение. Например. 0000001 0000044 0001BF7 0000091 0000210 0000000 00000FF - полные данные. Как сделать так, чтобы я получил полное желание данных однократного чтения.

Ответы [ 2 ]

0 голосов
/ 01 февраля 2019

Я решил это с помощью экземпляра BufferReader считывателя InputStream.

try
                {
                    BufferedReader bufferedReader = serialPort.GetBufferStream();
                    if (bufferedReader != null)
                    {
                        String contents = bufferedReader.readLine();
                        while (contents != null)
                        {   
                            contents = bufferedReader.readLine();

                        }
                    }

                } catch (IOException e)
                {
                    e.printStackTrace();
                    return;
                }
            }
0 голосов
/ 15 января 2019

Это спецификация последовательного порта.

Вы должны разрабатывать и программировать с учетом того, что одни данные могут быть уведомлены отдельно, и может случиться так, что несколько данных будут уведомлены одновременно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...