【问题标题】:Java Serial Communication PortInUseExceptionJava 串行通信 PortInUseException
【发布时间】:2013-01-28 08:05:14
【问题描述】:

我有一个基于 SMS 的 Java 应用程序,它使用 CommV3 驱动程序与 GSM 调制解调器进行串行通信。我有两个单独的代码,一个用于发送消息,一个用于接收消息。每个代码在单独执行时都能完美运行。

现在,当我想整合这两个代码时,我得到一个PortInUseException,这可能很明显。但是,我不确定从哪里开始。

我能否获得可以开始解决问题的指针/链接/教程。我不知道应该从哪里开始。

提前致谢!

【问题讨论】:

    标签: java sms gsm modem serial-communication


    【解决方案1】:

    确保您的代码使用一个 SerialPort 而不是两个。那么读取或写入这个端口就没有问题了。

    SerialPort serialPort;
    InputStream inStream;
    OutputStream outStream;
    
    serialPort = (SerialPort) portId.open(...);
    serialPort.setFlowControlMode(...);
    serialPort.setSerialPortParams(...);
    
    inStream = serialPort.getInputStream ();
    outStream = serialPort.getOutputStream ();
    

    PS:SMSLib 是一个出色的 Java 库(也移植到 .NET Framework),它允许您通过兼容的 GSM 调制解调器或 GSM 手机发送/接收 SMS 消息。 SMSLib 还支持一些批量 SMS 运营商。它是免费的并且非常稳定。

    【讨论】:

    • 看不懂portId.open(...)的参数。 API 说 appname 和 timeout... 我想我会看看这些行。
    • 有两个参数:应用程序的名称和超时时间(以毫秒为单位)。示例:portId.open("MySMSApp", 5000);
    • 我已经使用了 Javax Comm 库,所以对迁移到 SMSLib 犹豫不决。但是,如果一切都失败了,我会采纳你的建议。谢谢!
    • 我确信一切都不会失败。 SMSLib 仍然提供了很多便利。
    • 感谢鼓励!我也一定会看看 SMSLib。
    【解决方案2】:

    也许您可以将侦听器代码(绑定到端口)从 2 个代码中分离出来。 并根据发送/接收专用于适当的代码段。

    【讨论】:

    • 这正是我无法弄清楚的......这是我第一次使用串行通信进行编程......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多