继续读取Inputstream(serialport / tty)

时间:2019-01-14 23:05:25

标签: java android serial-port

我正在不断从serialport / tty读取数据。串行端口每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 :(得分:0)

这是串行端口规范。

您必须在设计和编程时考虑到可以分别通知一个数据,并且有可能一次通知多个数据。

答案 1 :(得分:0)

我用InputStream阅读器的BufferReader instread解决了这个问题。

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

                        }
                    }

                } catch (IOException e)
                {
                    e.printStackTrace();
                    return;
                }
            }