确定串口使用情况

时间:2012-02-17 09:47:41

标签: 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%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  

   }  

1 个答案:

答案 0 :(得分:0)

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