C – 获取特定设备的COM端口号

有没有办法自动检测到我的设备连接到Windows上的哪个COM端口? 这是一个特定的设备,所以我知道它的名字或任何我需要这个。

现在我有一个C程序,我必须在控制台inputCOM端口号,例如:

printf("COM port number?\n"); scanf("%d",&port_no); do_stuff_with_COM_port(port_no); 

每次在Windows设备pipe理器中检查我的设备连接到哪个号码是烦人的,我希望我的程序自动检测端口号。 我怎样才能做到这一点?

谢谢。

机器上的每个物理端口都有一个不会改变的数字。 所以如果你每次不需要这个连接你的设备在同一个端口上。

但是,如果您每次都可能更改端口,那么可能有效的解决方案是:

  1. 尝试打开COM 1

    • 如果您有错误,端口已被其他人打开,请转到步骤3
    • 如果端口打开,请转到步骤2
  2. 尝试发送将被您的设备识别的消息

    • 如果你收到预期的答案,你知道这是正确的端口。
    • 如果你没有收到任何东西(或者什么废话),你知道这不是正确的COM端口。
  3. 移到下一个可用的COM端口并重复,直到找到它,或者您列举了所有的COM端口