C++' da bir COM bağlantı noktasını kullanıyorum. I Örnek 10. COM portu tespiti için kullanılan Bu işlev için, 9 daha yüksek bir sayı ile COM portu açamaz: örneğin COM10 için, hPort KOLU geri FFFFFFFF atar neden anlayamıyorumC++ 'da bir COM bağlantı noktası açın, bu sayı 9
WCHAR port_name[7];
WCHAR num_port[4];
for (i=1; i<256; i++)
{
bool bSuccess = false;
wcscpy(port_name,L"COM");
wcscat(port_name,_itow(i,num_port,10));
HANDLE hPort;
//Try to open the port
hPort = CreateFile(L"COM10", GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING, 0, 0);
//hPort = CreateFile(port_name, GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING, 0, 0);
if (hPort == INVALID_HANDLE_VALUE)
{
DWORD dwError = GetLastError();
//Check to see if the error was because some other application had the port open
if (dwError == ERROR_ACCESS_DENIED)
{
bSuccess = TRUE;
j=j+1;
}
}
else //The port was opened successfully
{
bSuccess = TRUE;
j=j+1;
CloseHandle(hPort); //closing the port
}
if (bSuccess)array_ports[j]=i;
}
. vb COM9, COM8 COM7, gayet iyi çalışıyor
hPort = CreateFile(L"COM10", GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING, 0, 0);
, bu sorun için
hPort = CreateFile(L"COM9", GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING, 0, 0);
Orada bir çözüm?
Bu arada, seri bağlantı noktası algılama için karmaşık bir yol. Sistemde bulunan seri bağlantı noktaları için Windows Kayıt Defteri'nde HKEY_LOCAL_MACHINE \ HARDWARE \ DEVICEMAP \ SERIALCOMM anahtar bulunmaktadır. – pmed