A customer of mine in Colombia has integrated their application with the MCA to embed camera functionality. THey have developed using the MCA SDK. Everything works great, except that the preview times out at random intervals. It is set ot 15 seconds in the MCA Config, but in practice, it is sometimes 15, sometimes 2, or 8. The timeout period experienced does not follow a pattern - that is, iot does not get progressively shorter, for example. It seems wholly random, but not more than 15 seconds.
Is the code below that is used to implement the function flawed?
using System;
using System.Collections.Generic;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using Intel.Healthcare;
using Intel.Healthcare.Device;
using Intel.Healthcare.Exception;
using BaseISA;
namespace InspeccionDeLinea
{
///
/// Esta clase proporciona la interfaz con la camara
///
public class Camara : IDisposable
{
private Camera _laCamara;
//private CameraOptions opcionesCamara;
private bool captura = true;
//Panel que muestra las frames adquiridas por la camara
Panel _picVisualizadorCamara;
//PictureBox destino del frame(fotografia capturada)
PictureBox _panelVisualizadorFoto;
public Camara()
{
_laCamara = new Camera();
}
public void SetCamara(Panel visualizadorCamara, PictureBox visualizadorFoto)
{
_picVisualizadorCamara = visualizadorCamara;
_panelVisualizadorFoto = visualizadorFoto;
}
public void IniciarVistaPrevia()
{
try
{
//reserva el dispositivo
_laCamara.ReserveDevice();// _laCamara.ReserveDevice(11000);
//Prende la camara e inicia la visualizacion en el PictureBox.
_laCamara.StartPreview(_picVisualizadorCamara.Handle);
}
catch (Exception ex)
{
GlobalISA.pdlgMensajeISA.Show("No hay acceso al dispositivo. " + ex.ToString());
_laCamara.ReleaseDevice();
}
}
public void PararVistaPrevia()
{
try
{
if (!captura)
{
//Para de mostrar la vista previa
_laCamara.StopPreview();
}
//Libera el recurso
_laCamara.ReleaseDevice();
}
catch (Exception ex)
{
GlobalISA.pdlgMensajeISA.Show(ex.Message);
_laCamara.ReleaseDevice();
}
_laCamara.ReleaseDevice();
}
public void Capturar()
{
try
{
//Captura una foto con la camara.
_laCamara.CaptureFrame();
//Toma la imagen de la coleccin de imagenes de la camara
Frame frame = _laCamara.Frames[_laCamara.Frames.Count - 1];
//la muestra en el picturebox
_panelVisualizadorFoto.Image = frame.Image;
_laCamara.ReleaseDevice();
}
catch (Exception ex)
{
GlobalISA.pdlgMensajeISA.Show("No hay acceso al dispositivo. " + ex.ToString());
_laCamara.ReleaseDevice();
}
}
public void Close()
{
_laCamara.Dispose();
}
public void Dispose()
{
this.Dispose();
_laCamara.Dispose();
GC.SuppressFinalize(this);
}
}
}


