• Viernes 15 de Noviembre de 2024, 06:57

Autor Tema:  Averiguar El Puerto Com Del Modem Activo  (Leído 3170 veces)

Piter

  • Nuevo Miembro
  • *
  • Mensajes: 7
    • Ver Perfil
Averiguar El Puerto Com Del Modem Activo
« en: Jueves 5 de Febrero de 2004, 18:14 »
0
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

  • Miembro de PLATA
  • *****
  • Mensajes: 1058
    • Ver Perfil
Re: Averiguar El Puerto Com Del Modem Activo
« Respuesta #1 en: Viernes 6 de Febrero de 2004, 11:47 »
0
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

  • Nuevo Miembro
  • *
  • Mensajes: 7
    • Ver Perfil
Re: Averiguar El Puerto Com Del Modem Activo
« Respuesta #2 en: Lunes 9 de Febrero de 2004, 16:49 »
0
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

  • Miembro de PLATA
  • *****
  • Mensajes: 1058
    • Ver Perfil
Re: Averiguar El Puerto Com Del Modem Activo
« Respuesta #3 en: Lunes 9 de Febrero de 2004, 18:01 »
0
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
  1.  
  2. Private Function MaxComPort() As Integer
  3.  
  4.     On Error GoTo Err_Chk
  5.     Dim int1 As Integer
  6.     For int1 = 1 To 16
  7.         MSComm1.CommPort = int1
  8.         MSComm1.PortOpen = True
  9.         MSComm1.PortOpen = False
  10.     Next int1
  11.  
  12. Exit_Chk:    
  13.     MaxComPort = int1
  14.     Exit Function
  15.    
  16. Err_Chk:
  17.     If Err.Number = 8002 Then
  18.         int1 = int1 - 1
  19.         Resume Exit_Cont
  20.     Else
  21.         MsgBox Err.Description
  22.     End If
  23.  
  24. End Function
  25.  
  26.  

Otro método controlaría el estado del puerto:
Código: Text
  1.  
  2. Private Sub ChkPortSts()
  3.  
  4.     On Error GoTo Err_Chk
  5.     Dim int1 As Integer
  6.     For int1 = 1 To MaxComPort()
  7.         MSComm1.CommPort = int1
  8.         MsComm1.PortOpen = True
  9.         Select Case MsComn1.CommEvent
  10.               Case 1
  11.                .
  12.                .
  13.                .
  14.               Case 2
  15.                .
  16.                .
  17.                .
  18.               Case 3
  19.                .
  20.                .
  21.                .
  22.         End Select        
  23.         MsComm1.PortOpen = False
  24.     Next int1
  25.  
  26.     Exit Sub
  27.    
  28. Err_Chk:
  29.         MsgBox Err.Description
  30.  
  31. End Sub
  32.  
  33.  

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

  • Nuevo Miembro
  • *
  • Mensajes: 7
    • Ver Perfil
Re: Averiguar El Puerto Com Del Modem Activo
« Respuesta #4 en: Lunes 9 de Febrero de 2004, 19:05 »
0
Que mas decir, Infinitas gracias y espero poder ayudarte para devolver el favor.

Un abrazo

Pit