?
//-------------------------------------------------------------------------
// Zählt die freien (ungeöffneten) COM-Ports und schreibt sie in ein
// globales Array:
// bool port[MAX_COM] = {false};
// Zuordnung:
// port[0] = false bedeutet COM-Port 1 ist nicht verfügbar
// port[1] = true bedeutet COM-Port 2 ist verfügbar
// port[2] = false bedeutet COM-Port 3 ist nicht verfügbar
// ...
//-------------------------------------------------------------------------
void CountPorts (void)
{
char comport[11] = "\\\\.\\COM";
for (int i = 1; i <= MAX_COM; ++i)
{
itoa (i, comport + 7, 10);
HANDLE com = CreateFile (comport, 0, 0, 0, OPEN_EXISTING, 0, 0);
if (com != INVALID_HANDLE_VALUE)
{
CloseHandle (com);
port[i - 1] = true;
}
else
port[i - 1] = (GetLastError() != ERROR_FILE_NOT_FOUND);
}
return;
}
Wird einmal nach dem Start aufgerufen.
Das Array wird (in meiner Anwendung) in eine Combobox ausgegeben und in das Menue eingetragen (da aber nur die vorhandenen Ports).
Blackbird