我通过串口与设备通信。
我设法获取InputStream并读取设备发送的内容。
但问题是,我根本不知道何时停止阅读并继续执行其他任务。
以下是简化代码:
inputStream = serialPort.getInputStream();
try
{
int step = 0;
while ( (len = inputStream.read(buffer)) > -1 )
{
//do something
}
System.out.println("END");
}
catch ( IOException e )
{
throw new Exception("IO Error");
}
它从未设法达到“结束”。即使设备什么也没发送,它仍然继续循环。如何在设备停止发送时停止循环。
答案 0 :(得分:1)
inputStream = serialPort.getInputStream();
int available = inputStream .available();
if (available > 0) {
byte data[] = new byte[available];
inputStream .read(data);
}else{
logger.info("data is not avilable");
}
答案 1 :(得分:1)
来自How to identify end of InputStream in java
它正在寻找更多数据,因为没有人告诉它不会有更多数据。网络的另一端可以随时发送更多数据。
目前尚不清楚您是在设计客户端/服务器协议还是只是尝试实现它,但通常有三种常见的方法来检测消息的结束: