** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Tus Funciones Favoritas & Aportaciones & Artí­culos
  Mensajes nuevos Mensajes nuevos RSS - Webcam - Workaround a falla avicap en W7
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradoWebcam - Workaround a falla avicap en W7

 Responder Responder
Autor
Mensaje
*raul* Ver desplegable
Asiduo
Asiduo
Avatar

Unido: 05/Octubre/2005
Localización: Chile
Estado: Sin conexión
Puntos: 242
Enlace directo a este mensaje Tema: Webcam - Workaround a falla avicap en W7
    Enviado: 29/Mayo/2014 a las 05:00
Si les pasa lo mismo puede servirles.

Uso el código para webcam de los ejemplos de la web del Búho, y recién he advertido que fallan en Windows 7. A la segunda conexión se abre el diálogo de selección de origen de video, al Aceptar no reconecta la cámara, y levanta un error 418.

Este tema es antiguo, lo encontré expuesto en este foro de hace 2 años (sin resolver) ver aquí. No he encontrado solución real para esto, se le describe como un bug de avicap en W7. El workaround -disculpar el anglicismo- que encontré sugerido era simplemente reintentar la conexión desde código (!).

Adapté la sugerencia a VBA. Efectivamente, ahora levanta el diálogo igual (kuek!) pero al segundo intento (rara vez al tercero) me conecta. Con lo que salvo el impasse, en tanto no encuentre un enfoque/código de captura de webcam que funcione bien en W7 (y W8, alguna sugerencia?).

Es muy simple, en el módulo del código:

Declarar una variable
'Para retry (W7)
Private retryConnect As Integer

Y reemplazar el código de la siguiente función por éste (que añade los reintentos)

Function MyErrorCallback(ByVal lwnd As Long, ByVal IID As Long, ByVal ipstrStatusText As Long) As Long
'avicap workaround W7
If IID = 418 Then
'Reintentos
    While retryConnect < 10
        Call capDriverConnect(lwnd, i)
        retryConnect = retryConnect + 1
        Exit Function
    Wend
End If
If IID = 0 Then Exit Function
    Dim sStatusText As String
    Dim usStatusText As String
    lStrCpy StrPtr(sStatusText), ipstrStatusText
    LogError usStatusText, IID
End Function

Tal vez se pueda interceptar la ventana del mensaje y cerrarla. Con mi poco conocimiento de API no pude a la primera.
Favor contar si hay mejor solución u otro enfoque/código más actualizado disponible.
Gracias.
Raúl Vargas - Santiago, Chile.
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable