Đây là code để test xem một port có tồn tại hay là không tồn tại hoặc đang bị ứng dụng khác chiếm giữ bằng cách dùng hàm API là CreatFile. Bạn dễ dàng tra đối số của nó trong MSDN.
Visual C++ hoặc Visual C++.Net
Code:
bool CRS232Dlg::COMAvailable(int COMNum)
{
HANDLE hCOM;
CString portName;
portName.Format(_T("COM%d "),COMNum);
hCOM = CreateFile(portName, // Specify port device: default "COM1"
GENERIC_READ | GENERIC_WRITE, // Specify mode that open device.
0, // the devide isn't shared.
NULL, // the object gets a default security.
OPEN_EXISTING, // Specify which action to take on file.
FILE_ATTRIBUTE_NORMAL, // default.
NULL); // default.
if (hCOM == INVALID_HANDLE_VALUE){
return false;
}
else{
BOOL ret = CloseHandle(hCOM);
return true;
};
}
Visual Basic:
Code:
'// Return TRUE if the COM exists, FALSE if the COM does not exist
Public Function COMAvailable(COMNum As Integer) As Boolean
Dim hCOM As Long
Dim ret As Long
Dim sec As SECURITY_ATTRIBUTES
'// try to open the COM port
hCOM = CreateFile("\.\COM" & COMNum & "", 0, FILE_SHARE_READ + _
FILE_SHARE_WRITE, sec, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0)
If hCOM = -1 Then
COMAvailable = False
Else
COMAvailable = True
'// close the COM port
ret = CloseHandle(hCOM)
End If
End Function
Tham khảo:
http://www.developerfusion.co.uk/show/21/2/
Chúc bạn thành công.