View Single Post
Old 25-07-2007, 10:35 AM   #23
ngohaibac
Đệ tử 9 túi
 
ngohaibac's Avatar
 
Tham gia ngày: Oct 2005
Nơi Cư Ngụ: BKHN
Bài gửi: 231
:
Send a message via Yahoo to ngohaibac
Chào bạn.

Đâ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.
ngohaibac vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn