maximus4
Messages postés19Date d'inscriptionmercredi 5 mars 2003StatutMembreDernière intervention23 août 2010
-
10 juil. 2009 à 12:04
maximus4
Messages postés19Date d'inscriptionmercredi 5 mars 2003StatutMembreDernière intervention23 août 2010
-
10 juil. 2009 à 17:22
Bonjour,
j'utilise un code que j'ai trouvé sur le site pour lister les ports RS232.
J'ai 4 ports com le résultat m'affiche 4 com1
code :
void SonarFrm::listeRS232()
{
HKEY Retour;
char * NomVal; //variable nécessaire pour l'ouverture des clés de la base de registre
NomVal = new char[25];
char * Valeur;
Valeur = new char[25];
unsigned long NNom=25;
unsigned long NVal=25;
unsigned long Ty=0;
wxString PortCom; //stock les infos sur les ports COM
wxString temp;
HANDLE hSer; //creation objet com
int n=1; //incrementation du registre
long Ret;//valeur de retour d'erreur
do
{
//Valeur = NULL;
Ret = RegEnumValue( Retour,n,(char *)NomVal,&NNom,0,&Ty,(unsigned char *)Valeur,&NVal );
temp="";
if (Ret != ERROR_NO_MORE_ITEMS)
{
PortCom="";
//1)---> valeur : com1 , com2...
PortCom = Valeur;
temp=NomVal;
if (temp.Find("VSerial")!=-1)
PortCom=PortCom+" | Emu";
else if (temp.Find("USB")!=-1)
PortCom=PortCom+" | USB";
else if (temp.Find("Serial") !=-1)
PortCom=PortCom+" | RS232";
else
PortCom=PortCom+" | Inconue";
/*temp=Valeur; //Recupe numero de port
temp=temp.Right(temp.Length()-3);
PortCom =PortCom+" | "+temp;*/
//ouverture du port
hSer = CreateFile(Valeur,GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL|FILE_FLAG_OVERLAPPED,NULL);
//vérifie que le port série est bien ouvert!
if(hSer == INVALID_HANDLE_VALUE)
{ // systeme ocuuper
PortCom=PortCom+" | Occuper";
}
else
{ // system libre
PortCom=PortCom+" | Libre";
//c)- fermeture du port com
if(hSer!=NULL)
CloseHandle(hSer);
}
portcom->Insert(PortCom,n);//ecrit dans la liste
}
n++;
}while(Ret != ERROR_NO_MORE_ITEMS);
}
maximus4
Messages postés19Date d'inscriptionmercredi 5 mars 2003StatutMembreDernière intervention23 août 2010 10 juil. 2009 à 14:40
Programme minimal :
#include
#include <windows.h>
#include <string>
using namespace std;
int main()
{
HKEY Retour;
char * NomVal; //variable nécessaire pour l'ouverture des clés de la base de registre
NomVal = new char[25];
char * Valeur = NULL;
Valeur = new char[25];
unsigned long NNom=25;
unsigned long NVal=25;
unsigned long Ty=0;
string PortCom; //stock les infos sur les ports COM
string temp;
int n=1; //incrementation du registre
long Ret;//valeur de retour d'erreur