Changement de Port COM

cs_billybob13 Messages postés 10 Date d'inscription lundi 30 mai 2005 Statut Membre Dernière intervention 27 septembre 2005 - 30 mai 2005 à 11:39
ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 - 31 mai 2005 à 09:01
Dans mon programme, je veux changer de port COM (j'utilse mscomm32). Je suppose que plus tard j'aurai deux ports COm. Actuellement j'en ai qu'un.
Mon probleme :
Comment faire pour savoir si le port 2 existe?
Est ce que je traite avec les exceptions, et comment ? ou je peux faire autrement?

5 réponses

ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
30 mai 2005 à 14:44
//***************************************************************************************
// OpenCommDevice : tente d'ouvrir un port afin de récupérer son handle.
// entrée : lpszName : nom du port à ouvrir.
// retour : handle du port s'il a pu être ouvert, NULL sinon.
//***************************************************************************************
HANDLE OpenCommDevice(LPCTSTR lpszName)
{
// tentative d'ouverture (si échec, on tente l'accès direct en insérant "[file://./ \\.\]" au début du nom)
HANDLE hComm = CreateFile(lpszName, GENERIC_READ|GENERIC_WRITE, 0, NULL,
OPEN_EXISTING, FILE_ATTRIBUTE_SYSTEM, NULL); if(hComm INVALID_HANDLE_VALUE && GetLastError() ERROR_FILE_NOT_FOUND)
{
UINT nLength = strlen(lpszName);
LPTSTR lpszAltName = new char[nLength+5];
strcpy(lpszAltName, nLength+5, _T("\\\\.\"));
strcpy(lpszAltName+4, nLength+1, lpszName);
hComm = CreateFile(lpszAltName, GENERIC_READ|GENERIC_WRITE, 0, NULL,
OPEN_EXISTING, FILE_ATTRIBUTE_SYSTEM, NULL);
delete[] lpszAltName;
}
return hComm;
}

//***************************************************************************************
// HasHardware : vérifie si un port est présent sur l'ordinateur.
// entrée : lpszName : nom du port à vérifier.
// retour : vrai si le port existe, faux sinon.
//***************************************************************************************
BOOL HasHardware(LPCTSTR lpszName)
{
// tentative d'ouverture
HANDLE hComm = OpenCommDevice(lpszName); if(hComm INVALID_HANDLE_VALUE && GetLastError() ERROR_FILE_NOT_FOUND)
return FALSE;
else
{
// on ferme le port si on a réussi à l'ouvrir
if(hComm != INVALID_HANDLE_VALUE)
CloseHandle(hComm);
return TRUE;
}
}
0
cs_billybob13 Messages postés 10 Date d'inscription lundi 30 mai 2005 Statut Membre Dernière intervention 27 septembre 2005
30 mai 2005 à 17:09
Tu as mis quoi en librairie; STp
Merci de ta réponse
0
ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
30 mai 2005 à 18:18
Uniquement l'API windows :
#include <windows.h>
0
cs_billybob13 Messages postés 10 Date d'inscription lundi 30 mai 2005 Statut Membre Dernière intervention 27 septembre 2005
31 mai 2005 à 08:42
'strcpy' : la fonction ne prend pas 3 arguments
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
31 mai 2005 à 09:01
Désolé j'ai fait un copier collé d'une source dans laquelle j'utilisé une version "safe" de strcpy qui prend en plus la taille de la chaîne destination. Il suffir de virer la longueur en param 2.
0
Rejoignez-nous