识别 USB 转 RS422 连接器所连接的 COM 端口名称的逻辑(适用于 Windows 应用程序)
Posted
技术标签:
【中文标题】识别 USB 转 RS422 连接器所连接的 COM 端口名称的逻辑(适用于 Windows 应用程序)【英文标题】:Logic to recognize the name of the COM port to which a USB to RS422 connector is connected (for Windows application)) 【发布时间】:2013-04-09 07:20:23 【问题描述】:我有一个应用程序,我通过 USB 到 RS422 转换器将数据写入串行端口。此转换器电缆通过 USB 集线器连接到我的 PC。我面临的问题是,每次更改运行应用程序的 PC 时,COM 端口的名称都会更改。所以我将不得不在我的代码中更改它并重新编译代码以运行应用程序。 目前以下是我用来初始化串口的代码:
if ((comport = CreateFile("\\\\.\\COM7", GENERIC_WRITE, 0,
NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL)) == INVALID_HANDLE_VALUE)
return false;
这里我只提到 COM 端口的名称。我想知道是否有 API 可以知道 COM 端口的状态并即时识别我的转换器所连接的 COM 端口?
【问题讨论】:
你不能在某种配置文件中保留端口名称吗?这样您就不必重新编译程序,只需更改配置文件中的一些文本即可。 可以这样做,但我希望这是自动的,并且在应用程序的初始化过程中发生。 【参考方案1】:What is proper way to detect all available serial ports on Windows? 这个问题至少可以帮到你一点。因此,正如第二个答案所暗示的那样,使用 API 可能是不可能的。串行端口不是即插即用的。
因此可以列出所有端口。 我想到的唯一可能的方法是轮询列表中的每个设备。等到你得到你所期待的回应。这不是很好。
编辑: 如果这是您想要的,也许可以获得友好的名称。 How do I get the friendly name of a COM port in Windows?
【讨论】:
【参考方案2】:在您的应用程序中更改 COM 端口,您可以从
设置电缆的 COM 端口设备管理器 -> 端口 -> 右键单击您的电缆名称 -> 属性 -> 端口设置 -> 高级 -> Com 端口号(您可以根据应用选择端口号)
无需更改应用程序中的任何内容。
【讨论】:
以上是关于识别 USB 转 RS422 连接器所连接的 COM 端口名称的逻辑(适用于 Windows 应用程序)的主要内容,如果未能解决你的问题,请参考以下文章