C/Visual C - Como conocer qué puertos COM hay disponibles

 
Vista:

Como conocer qué puertos COM hay disponibles

Publicado por emili (1 intervención) el 09/06/2006 11:03:05
Hola,

Me gustaria saber si existe alguna función o API de windows que me indique qué puertos COM hay disponibles en el ordenador. Hasta ahora lo que hago es preguntarle directamente al usuario que puerto quiere utilizar pero veo que muchos programas ofrecen ya una lista de los puertos disponibles y así hay menos errores.

Si alguien lo sabe le estaré agradecido si me responde

Saludos
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Como conocer qué puertos COM hay disponibles

Publicado por Emili (2 intervenciones) el 09/06/2006 13:19:36
Al final he encontrado una forma de hacerlo. Hay que probar de abrirlos y si recibimos el error ERROR_FILE_NOT_FOUND significa que no existe el puerto. Lo que hay que hacer entonces es llamar a una funcion como la que sigue para todos los puertos (por ejemplo, un for de 1 a 12)

//Funcio per saber quins ports hi ha disponibles
//Emili http://www.moltheavy.com
BOOL CSerial::IsAvailable( int nPort )
{
HANDLE handleCom;
char szPort[15];

wsprintf( szPort, "COM%d", nPort );
handleCom = CreateFile( szPort, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED, NULL );
if ((handleCom == NULL) || (handleCom == INVALID_HANDLE_VALUE)) {
if (GetLastError() == ERROR_FILE_NOT_FOUND)
return( FALSE );
}
else
CloseHandle( handleCom );

return ( TRUE );
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar