Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/124.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 识别USB至RS422连接器所连接的COM端口名称的逻辑(适用于Windows应用程序))_C++_Windows_Serial Port_Initialization_Usbserial - Fatal编程技术网

C++ 识别USB至RS422连接器所连接的COM端口名称的逻辑(适用于Windows应用程序))

C++ 识别USB至RS422连接器所连接的COM端口名称的逻辑(适用于Windows应用程序)),c++,windows,serial-port,initialization,usbserial,C++,Windows,Serial Port,Initialization,Usbserial,我有一个应用程序,通过USB到RS422转换器将数据写入串行端口。此转换器电缆通过USB集线器连接到我的电脑。我面临的问题是,每次我更改运行应用程序的PC时,COM端口的名称都会更改。因此,我必须在代码中对此进行更改,并重新编译代码以运行应用程序。 目前,以下是我用来初始化串行端口的代码: if ((comport = CreateFile("\\\\.\\COM7", GENERIC_WRITE, 0, NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NO

我有一个应用程序,通过USB到RS422转换器将数据写入串行端口。此转换器电缆通过USB集线器连接到我的电脑。我面临的问题是,每次我更改运行应用程序的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端口?

这个问题可能对你有所帮助,至少有一点。因此,正如第二个答案所暗示的,使用API可能是不可能的。串行端口不是即插即用的

因此,可以列出所有端口。 我认为唯一可行的方法是轮询列表中的每个设备。等到你得到你期待的回应。没那么好

编辑: 如果你想要的话,可能会得到一个友好的名字。

您可以通过更改应用程序中的COM端口来设置电缆的COM端口

设备管理器->端口->右键单击电缆名称->属性->端口设置->高级->Com端口号(您可以根据应用程序选择端口号)


无需更改应用程序中的任何内容。

您不能将端口名保存在某种配置文件中吗?这样你就不必重新编译你的程序了,只需在配置文件中修改一些文本即可。这是可能的,但我希望这是自动的,并在应用程序的初始化过程中发生。