Programación General > Visual Basic 6.0 e inferiores

 Detectar Dispositivos

(1/2) > >>

scorpion25acv:
Salu2, Mi consulta es para saber si alguien conoce cómo saber a cual puerto está conectado un dispositivo (En este caso un Modem) por medio de Visual Basic.

Deseo saber si existe alguna funcion de Windows que lo realice, (consultando talvez el mismo registro de windows,) para que me diga, por Ejemplo en cual puerto serie existe conectado un Modem.

Infinitas gracias por su ayuda de antemano ;)

Brroz:
Hola scorpion25acv.

Échale un vistazo a esto http://foros.solocodigo.com/index.php?showtopic=6517

Supongo que te servirá.

Abur.

scorpion25acv:
Salu2, nuevamente.

Brroz, tu ejemplo esta muy interesante, Ahora la duda que tengo es la siguiente:

La funcion: "Private Function MaxComPort() As Integer", si bien analizo, devuelve el numero de puerto mayor que encuentra abriendolo y cerrandolo una vez asignado en la propiedad CommPort durante el ciclo, se genera el error # 8002, por que el puerto no existe,  pero que pasa si mi modem esta en el COM4, o el COM5, que fuera, al llegar al COM3, sale porque el ultimo puerto valido fue el 2, (COM1 y COM2 estan por default, para aquellos visitantes que lean esto y talvez no lo saben).

Tambien esta la situacion en donde el modem que tengo puede ser externo,  conectado al COM1 y/ o talvez un mouse en el COM2 o viceversa, estas situaciones tambien se deben analizar, porque se generan errores como el # 8005, informando que el puerto ya está abierto (a la primera vez del ciclo se sale al probar el com1, y si no hay nada en el com1, se sale en el com2 por l mouse), y si me salto el error, al decirle MSComm1.PortOpen = False, me genera el error # 8012, que dice que no se puede cerrar algo que obviamente no esta abierto, lo anterior lo escribo, por que intenté saltar el error 8005, pensando que habia encontrado al mouse, y que prosiguiera, pero bueno.

Talves me puedas platicar acerca  de las API's que le mencionabas a Piter en la otra ocasion, porque de los casos expuestos anteriormente , me suceden y en el proyecto que realizo, los usuarios no deben de escoger, como se hace usualmente (desde un combo, textbox, etc) el puerto  donde se ubica el modem, que posteriormente paso a la propiedad  "CommPort" > MsComm.CommPort = ?

Asi que las sugerencias, ayudas q me puedan brindar bienvenidas y Brroz, te agradesco que me tomes en cuenta. :hola:

Adjunto el Ejemplo que proporcionaste...

--- Código: Text ---  Private Function MaxComPort() As Integer    On Error GoTo Err_Chk   Dim int1 As Integer   For int1 = 1 To 16       MSComm1.CommPort = int1       MSComm1.PortOpen = True       MSComm1.PortOpen = False   Next int1 Exit_Chk:        MaxComPort = int1   Exit Function   Err_Chk:   If Err.Number = 8002 Then       int1 = int1 - 1       Resume Exit_Cont   Else       MsgBox Err.Description   End If End Function   

Brroz:
Hola.

A ver si a lo largo de la tarde puedo probar estas cosas que me comentas y te digo algo...

Sobre las apis puedes buscar información en el MSDN. Personalmente no las he utilizado nunca y para poder decirte algo con fundamento tendría que informarme y probarlo.

Chao.

Brroz:
Hola scorpion25acv.

Tal vez unas pequeñas modificaciones en el código, obviando el control Comm sirvan para hayar el puerto COM más alto. Yo no tengo módem ni ratón serial para hacer pruebas, pero puedes probarlo tú y contar como te fué... No las tengo todas conmigo de que funcione, pues a pesar de no conocer como funciona internamente el control, supongo que hace algo parecido, abriéndolo como un archivo.

--- Código: Text --- Public Function MaxComPort() As Integer     On Error GoTo Err_Chk    Dim i1 As Integer, iCanal As Integer    For i1 = 1 To 16        iCanal = FreeFile        Open "COM" & i1 For Binary As #iCanal        Close #iCanal    Next i1 Exit_Chk:    On Error Resume Next    Close #iCanal    MaxComPort = i1    Exit Function   Err_Chk:    If Err.Number = 53 Then ' (53 el archivo no existe)        i1 = i1 - 1        Resume Exit_Chk    Else        MsgBox Err.Description    End If End Function  
Ahora una cuestión que surge es: ¿qúe ocurre con los puertos USB?

Tal vez al final la mejor solución pueda estar recuperando valores del registro de windows. Échale un vistazo a esta clave (w98):
HKEY_LOCAL_MACHINE/System/CurrentControlSet/Services/Class/Modem
Contendrá una subclave para cada uno de los módems instalados. Uno de sus valores será "AtachedTo" que te indicará el puerto.

Espero que esto pueda ayudar. Abur.

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa