begin process at 2010 02 10 11:59:14
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Réseau / Internet

 > 

Port série ???


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Port série ???

mardi 25 janvier 2005 à 17:59:19 | Port série ???

DeAtHCrAsH

Salut,

Existe t'il un moyen de connaitre la liste des port COM d'un PC ?
Merci par avance pour vos réponses.

Shell
mardi 25 janvier 2005 à 18:22:53 | Re : Port série ???

ymca2003

Réponse acceptée !
Une des méthodes est de tenter de les ouvrir :
- Si ca marche, le port existe.
- si ca marche pas, vérifier avec GetLastError si on a ERROR_FILE_NOT_FOUND.

//***************************************************************************************
// HasHardware :
//***************************************************************************************
BOOL TCommDevice::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;
 }
}

//***************************************************************************************
// OpenCommDevice :
//***************************************************************************************
HANDLE TCommDevice::OpenCommDevice(LPCTSTR lpszName)
{
 // tentative d'ouverture (si échec, on tente l'accès direct en insérant "\\.\"
 // au début du nom)
 ASSERT(lpszName != NULL);
 HANDLE hComm = CreateFile(lpszName, GENERIC_READ|GENERIC_WRITE, 0, NULL,
   OPEN_EXISTING, FILE_ATTRIBUTE_SYSTEM|FILE_FLAG_OVERLAPPED, NULL);
 if(hComm == INVALID_HANDLE_VALUE && GetLastError() == ERROR_FILE_NOT_FOUND)
 {
  LPTSTR lpszAltName = new TCHAR[_tcslen(lpszName)+5];
  _tcscpy(lpszAltName, _T("\\\\.\\"));
  _tcscpy(lpszAltName+4, lpszName);
  hComm = CreateFile(lpszAltName, GENERIC_READ|GENERIC_WRITE, 0, NULL,
   OPEN_EXISTING, FILE_ATTRIBUTE_SYSTEM|FILE_FLAG_OVERLAPPED, NULL);
  delete[] lpszAltName;
 }
 return hComm;
}
mardi 25 janvier 2005 à 21:25:34 | Re : Port série ???

DeAtHCrAsH

Yep,

Niquel ta solution.
Seulement maintenant comment est-ce que peux faire pour savoir si mon port est connecté ou non ?

Peut etre que l'ouverture de mon port se fait en exclusif non ?

Shell

P.S : Faudrait que ca reste en API car je vais porter le code sous delphi ensuite.
mercredi 26 janvier 2005 à 08:59:45 | Re : Port série ???

ymca2003

Réponse acceptée !
L'ouverture d'un port COM est en mode exclusif (0 pour le dwShare). Pour savoir si un port existe et est ouvert c'est justement un teste de l'existence. Tester avec CreateFile puis si renvoi INVALID_HANDLE_VALUE, bérifier avec GetLastError (ERROR_FILE_NOT_FOUND  ou autre code d'erreur comme pour les fichiers).
mercredi 26 janvier 2005 à 09:22:15 | Re : Port série ???

DeAtHCrAsH

Nickel de chez nickel, ca rulz impec.

Merci pour tout.

Shell
vendredi 12 août 2005 à 17:34:29 | Re : Port série ???

Ayato

slt
je suis tomber sur cette source  par hasard et comme il s'avère que j'ai réalisée une source sur le sujet que j'ose croie plus propre
- Détecter tous les ports COM existant série et USB via la base de registre.
- tester si les ports COM sont occuper.

 
je la propose : source : http://www.cppfrance.com/code.aspx?ID=30473







Cette discussion est classée dans : port, série


Répondre à ce message

Sujets en rapport avec ce message

port série C++ [ par kinder ] J'arrive à relier des appareils "compliqués" (avec parité, bauds, bits stop, ascii, ...), mais je merde sur une espèce de grosse souris : un bouton un Port série avec VISUAL C++ [ par Foof ] On a du mal a réceptionner les octets sur le port sérieOn a le programme mais il nous manque les définitions deUnion REGSSi qq a un exemple de prog qu Outp()->Port série sous Visual C++ [ par Manson ] 'lut tout le monde,kk'un sait comment on utilise outp() sous Visual C ?Paske j'aimerais faire un control pour le port série. Mais je n'arrive pas à ut ecriture/lecture Port série [ par bryg ] Salu, Voila je dois exploiter le port série de mon Pc sous win 2000 pour recevoir et envoyer des données comment faire ?Si quelqu'un aurai un program ecriture/lecture Port série VC++ [ par bryg ] Salut,La prog c pas mon fort je recherche desésperement un exemple de programme pour ecrire et lire sur mon port série sous windows 2000 avec VC++.Mer ecriture/lecture Port série VC++ [ par bryg ] Salut,La prog c pas mon fort je recherche desésperement un exemple de programme pour ecrire et lire sur mon port série sous windows 2000 avec VC++.Mer port série .... help [ par hotrod1 ] Salut,Comment on fait pour lire et ecrire sur un port série sous visual c++ 6 ?merci VC++6 MFC et port série [ par nsimard ] Bonjour à tous...Je suis du genre très nouveau en prog et je recherche à savoir comment initialliser un port série en C++ avec un joli interface opéra port série VisualC++ [ par matthieuleviking ] Bonjour, je vourais envoyer et recevoir des données par RS232. J'utilise VisualC++6 et windows2000. Comment faire?Merci. port série et WriteFile ! [ par nanalye ] Bonjour tout le monde !Voilà mon pb : je veux envoyer des entiers par le port série avec WriteFile.Voici le programme que je lance ://ouverture du por


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,296 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales