Enumeration des ports

Résolu
ricky78 Messages postés 126 Date d'inscription jeudi 5 juin 2003 Statut Membre Dernière intervention 11 juillet 2006 - 25 août 2004 à 09:14
ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 - 1 sept. 2004 à 16:46
bonjour

je recherche une fonction en visual c++ capable d'identifier l'ensemble des ports séries et paralléles afin de tester leur présence et de les énumérer dans un combo box et d'en choisir un pour effectuer une communication.

merci beaucoup.

1 réponse

ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
1 sept. 2004 à 16:46
tenter de les ouvrir avec CreateFile (COM1 à COM9 et LPT1 à LPT9)
-> si ouverture a réussi, le port existe, le refermer
-> si echec, faire GetLastError(), si ERROR_FILE_NOR_FOUND, le port n'existe pas sinon il est déjà utilisé.

cf mon prog de comm RS232 serial :

BOOL TComm::HasHardware(int Id)
{
// construction du nom
TCHAR szComm[16];
wsprintf(szComm, _T("COM%d"), Id);

// tentative d'ouverture
HANDLE hComm = CreateFile(szComm, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_SYSTEM, NULL);

// si l'ouverture a réussie, on referme le port et on renvoie vrai
if(hComm != INVALID_HANDLE_VALUE)
{
CloseHandle(hComm);
return TRUE;
}

// si l'ouverture a échoué, on récupère le code de l'erreur et on retourne
DWORD dwError = GetLastError();
return (dwError != ERROR_FILE_NOT_FOUND);
}
3
Rejoignez-nous