嵌入式Java读取给定时间段的串行数据。
我有一个从嵌入式设备读取串行数据的功能。我的程序显示一张图片和一个标题,基本上这个设备就像一个游戏的蜂鸣器。有没有办法检查串行数据5秒钟,如果没有收到任何数据,继续代码(转到下一张图片和标题)。我当前的函数如下所示
public String getUARTLine(){
String inputLine = null;
try{
BufferedReader input = new BufferedReader(new InputStreamReader(serialPort.getInputStream()));
inputLine = input.readLine();
if (inputLine.length() == 0)
return null;
} catch (IOException e){
//System.out.println("IOException: " + e);
return null;
}
return inputLine;
}
# 1 楼答案
您可以开始从serialPort读取数据,并在其他线程中启动计时器。比如:
所以你可以从你的代码中调用它:
这段代码没有越位处理,所以需要一些定稿工作
# 2 楼答案
是的,你可以。您可以使用一个单独的计时器线程来触发关闭输入流的超时(这将导致input.readLine()返回IOException)。或者你可以使用java.nio。然而,我个人更喜欢第一种方法