C++ 确定串行端口使用情况

C++ 确定串行端口使用情况,c++,winapi,mfc,C++,Winapi,Mfc,我想通过编程检查未与任何设备连接的可用串行端口 我尝试了以下代码,并能够获得可用的com端口,但不知道它是否被使用。如何确定 TCHAR szComPort[8]; HANDLE hCom = NULL; for (int i = 1; i <= 10; ++i) { if (i < 10) wsprintf(szComPort, _T("COM%d"), i); else wsprintf(szComPort, _T("\\

我想通过编程检查未与任何设备连接的可用串行端口

我尝试了以下代码,并能够获得可用的com端口,但不知道它是否被使用。如何确定

TCHAR szComPort[8];  
HANDLE hCom = NULL;  

for (int i = 1; i <= 10; ++i)  
{  
    if (i < 10)
      wsprintf(szComPort, _T("COM%d"), i);
    else
      wsprintf(szComPort, _T("\\\\.\\COM%d"), i); 

    hCom = CreateFile(szComPort,  
        GENERIC_READ|GENERIC_WRITE, // desired access should be read&write  
        0,                          // COM port must be opened in non-sharing mode  
        NULL,                       // don't care about the security  
        OPEN_EXISTING,              // IMPORTANT: must use OPEN_EXISTING for a COM port  
        0,                          // usually overlapped but non-overlapped for existance test  
        NULL);                      // always NULL for a general purpose COM port  

   }  
TCHAR-szComPort[8];
句柄hCom=NULL;

对于(int i=1;i与USB不同,没有可靠的方法来检查串行(RS232)端口是否连接。通常只使用TD、RD和接地(发送/接收)。即使连接了其他引脚,它们的使用也没有很好的标准化。

您有两个问题需要解决:1)您将使用什么方法来判断串行端口是否连接到设备?2) 您将使用什么代码来实现该方法?第一个问题没有一个正确的答案,这取决于你的外部问题,你没有提到。它不会在10点停止。寻找未连接的端口是毫无意义的。他们永远不会做任何有用的事。