当前位置: 首页 > 知识库问答 >
问题:

Windows上的Java Comm端口-端口自动检测

孙书
2023-03-14

我正在开发一个应用程序,需要能够在Windows OS上通过串行通信与设备进行通信。应用程序是用Java编写的。我正在使用jSSC库。(javax.comm有问题,RxTx不支持Java8,除了一个非官方的更新)这些设备可以使用串行端口直接连接到PC,或者使用USB到串行转换器。

我的问题是:windows上的COM端口是动态的。这引发了一个定义要连接到哪个通信端口的问题。是否有一种方法可以自动找出要连接到哪个COM端口?

或者,设备将响应特定的“标识”数据包:我可以打开每个COM端口并发送此数据包,然后评估响应。这有其他设备在短时间内被劫持的风险,这是不理想的。

共有1个答案

龚奕
2023-03-14

为了动态地检测端口,需要调用操作系统的特定函数。单片机库提供了动态检测端口的API。

try {
    scm.registerUSBHotPlugEventListener(this, PRODUCT_VID, PRODUCT_PID, null);
    if(scm.isUSBDevConnected(PRODUCT_VID, PRODUCT_PID, null)) {
        USBhotplugEventQueue.offer(SerialComUSB.DEV_ADDED);
    }
} catch (Exception e) {
    e.printStackTrace();
}
 类似资料:
  • 问题内容: 我正在寻找一种可靠的方法来列出Windows计算机上的可用串行(COM)端口。有一篇关于使用WMI的文章,但我想讲的不是.NET特有的-我想获取没有.NET的Python或C ++程序中的端口列表。 我目前知道另外两种方法: 读取注册表项中的信息。这看起来是一个不错的选择,但是否 可靠 ?我无法在线或在MSDN中找到保证,此注册表单元确实始终拥有可用端口的完整列表。 Tryint调用上

  • 来宾计算机被配置为NAT,并且为主机端口2222到来宾端口22的启用端口转发。 guest上的的输出: guest上的的输出: null 任何帮助都将不胜感激。在我的Mac Book上使用OS-X很好。

  • 我想隐藏我的健康检查并将其放在其他端口上。默认情况下,为入口创建的google kubernetes负载平衡器使用就绪探测进行外部健康检查。 我可以告诉入口使用我的替代端口而不必将其公开为入口上的服务吗? 我可以为入口配置不同的健康检查吗? 有没有更好的方法在不使用授权的情况下隐藏我的健康检查?

  • 我在android studio中运行我的第一个应用程序“Hi World”时出错。我正在学习过程中,刚刚开始学习android开发。请帮忙,我将非常感谢你。这是错误代码:C:\Android\sdk1\tools\emulator。exe-netdelay none-netspeed full-avd Nexus\u 5\u API\u 23 Hax已启用 Hax ram\U尺寸0x400000

  • 系统:win11专业版 wsl2:ubuntu20.04.6 LTS 问题: 第一次安装docker后,创建镜像,创建容器都挺正常,端口映射也正常。 今天就出问题,创建容器时,配置端口映射,正常,但是宿主机访问映射端口没有响应. 假设端口映射18080:8080,我还在容器内部使用 curl http://localhost:8080有响应,使用在内部是正常,但是宿主机浏览器访问http://lo

  • 边的起点和终点 在我们继续讨论布局的相对方向和绝对方向之前,我们先来看一看节点的端口数目和边的条数; .................................................. : : : : : : : : : 0,0 :north,0:north,1: 3,0 : 4,0 : 5,0 : 6,