Programación General > Visual Basic 6.0 e inferiores

 Averiguar El Puerto Com Del Modem Activo

(1/1)

Piter:
Necesito averiguar en que puerto está instalado el modem (si es que existe), para hacer un tipo DIALER. EL tema es que el modem puede estar en varios puertos, en diferentes maquinas, y deberia setearse automaticamente.

Por el momento no encontrre nada util, si alguien tiene un ejemplo o alguna solucion (me parece que por las API puedo recuperar el valor), se los agradecería.

Saludos

Pit

piter_suscripciones@yahoo.es

Brroz:
Hola Piter.

Puedes echarle un vistazo al api, en concreto puedes necesitar las funciones CreateFile para obtener un handle al puerto comm, GetCommModemStatus para obtener el estado de un supuesto modem y/o WaitCommEvent.

Suerte.

Piter:
Si tienes algun ejemplo como para implementar y probar me lo podrias enviar?
No conozco el manejo de las API, y me tardaria bastante en aprenderlo.

Gracias por responder

Brroz:
Hola Piter.

Dejando a un lado las funciones api,  creo que con esto podrías encontrar una solución más sencilla:

Añade a tu proyecto un componente Microsoft Comm Control.

Esta función devolvería el número de puerto com más alto:

--- 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  
Otro método controlaría el estado del puerto:

--- Código: Text --- Private Sub ChkPortSts()     On Error GoTo Err_Chk    Dim int1 As Integer    For int1 = 1 To MaxComPort()        MSComm1.CommPort = int1        MsComm1.PortOpen = True        Select Case MsComn1.CommEvent              Case 1               .               .               .              Case 2               .               .               .              Case 3               .               .               .        End Select                MsComm1.PortOpen = False    Next int1     Exit Sub    Err_Chk:        MsgBox Err.Description End Sub  
Los valores que tendrías que controlar para la propiedad CommEvent serían:
Los errores de comunicación incluyen los siguientes valores:
Constante                  Valor           Descripción
comEventBreak        1001          Se ha recibido una señal de interrupción.
comEventFrame       1004           Error de trama. El hardware ha detectado un error de trama.
comEventOverrun     1006          Pérdida de información en puerto. El hardware no ha terminado de leer un carácter antes de llegar el siguiente y lo ha perdido.
comEventRxOver      1008           Desbordamiento del búfer de recepción. No hay espacio para más datos en el búfer de recepción.
comEventRxParity    1009          Error de paridad. El hardware ha detectado un error de paridad.
comEventTxFull         1010         Búfer de transmisión lleno. El búfer de transmisión estaba lleno cuando se ha intentado agregar un carácter a la cola de transmisión.
comEventDCB          1011           Error inesperado al recuperar el Bloque de control de dispositivos (DCB) para el puerto.

Los eventos de comunicación incluyen los valores siguientes:

Constante             Valor          Descripción
comEvSend            1               Hay menos caracteres en el búfer de transmisión de los que indica el número SThreshold.
comEvReceive       2                Número de caracteres RThreshold recibido. Este evento se genera continuamente hasta que se usa la propiedad Input para quitar datos del búfer de recepción.
comEvCTS             3                Cambio en la línea Preparado para enviar.
comEvDSR             4                Cambio en la línea Equipo de datos preparado. Este evento sólo se desencadena cuando la línea DSR cambia de 1 a 0.
comEvCD               5                Cambio en la línea Detección de portadora.
comEvRing             6                Detectada llamada. Algunos UART (transmisores-receptores asíncronos universales) no aceptan este evento.
comEvEOF            7                Carácter de fin de archivo (carácter ASCII 26) recibido.


Poco más te puedo decir porque no he realizado ningún tipo de prueba con estas historias (entre otras cosas porque no tengo un  modem a mano con que probar, ni tengo ganas ni tiempo de buscarlo).

A ver si tu investigando en esta línea consigues lo que quieres...

Suerte.

Piter:
Que mas decir, Infinitas gracias y espero poder ayudarte para devolver el favor.

Un abrazo

Pit

Navegación

[0] Índice de Mensajes

Ir a la versión completa