我正在不断从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是完整数据 如何确保获得单读的完整数据。
答案 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;
}
}