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
Ir a la versión completa