【问题标题】:Java error when unpluggin device from COM port从 COM 端口拔出设备时出现 Java 错误
【发布时间】:2016-10-28 06:10:39
【问题描述】:

我正在使用 rxtx 连接到串行端口。一切正常,但有一个我无法解决的问题。

一旦连接并阅读,用户就有可能拔掉设备(是的......用户......)。如果发生这种情况,我会收到以下错误:

我没有遇到异常,它只是杀死了 java se (java.exe)。如果我遇到异常,我会采取相应的行动,但在这种情况下,我的应用会停止工作并关闭。

我使用 InputStream 从串行端口读取数据。 InputStream 输入 = serialPort.getInputStream();

我认为问题在于流是打开的,并且它没有检测到设备何时关闭。当我通过这一行阅读时会发生这种情况:
byte singleData = (byte) input.read();

我找不到任何可以帮助我测试之前阅读状态的方法。 即使我不阅读(或使用 InputStream),几秒钟后仍然会出现错误(我认为有人试图关闭输入或其他东西)。

如何获取此事件(设备已拔出)?我应该如何关闭端口和输入流?

提前致谢。

【问题讨论】:

  • 请不要发布指向外部信息的链接。链接坏了。您的问题应该是独立的,因此它在未来保持其价值。您看到的错误可能出现在作为 Java 库基础的 C 代码中(通过 JNI)。这可能是 RXTX 中的一个错误,因此获得帮助的最佳位置可能是RXTX Github Site
  • 吉姆,感谢您的回复。 Stackoverflow 没有让我发布图片,只是给了我这个选项。我会搜索你的链接。无论如何我留下这个问题,希望有人可以帮助我。

标签: java serial-port inputstream rxtx


【解决方案1】:

我更喜欢 jssc 库而不是 rxtx。您可以使用 try...catch 块来避免迷恋。

【讨论】:

  • 尝试/捕捉到什么?
  • 使用 try/catch 块,您可以执行串行端口事件任务,以便从端口读取数据或将数据写入端口。 try 块将包含用于读取或写入数据的代码。并且catch块将处理诸如中断读取或写入数据等异常,以使程序不会崩溃。此外,您可以通过使用线程和 try/catch 来提高程序效率,该线程将监视串行端口是否连接,是否由于某些原因断开连接。它不会让程序崩溃。 (为迟到的回复寻求道歉,因为我没有联系)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-02-16
  • 1970-01-01
  • 2019-10-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多