Tutoriales gratuitos para el aprendizaje de la programacion informatica! Recuerda que si lo puedes imaginar... lo puedes programar!

LECTURA DE CÓDIGO QR DESDE WEBCAM EN C#

APLICACIÓN DESARROLLADA EN LENGUAJE C# QUE PERMITE LA LECTURA DE CÓDIGOS QR CAPTURADOS DESDE UNA WEBCAM




DESCARGAR LAS DOS LIBRERIAS NECESARIAS:


 CODIFICACION: VER CODIGOS EN .NET

USING SYSTEM;
USING SYSTEM.COLLECTIONS.GENERIC;
USING SYSTEM.COMPONENTMODEL;
USING SYSTEM.DATA;
USING SYSTEM.DRAWING;
USING SYSTEM;
USING SYSTEM.COLLECTIONS.GENERIC;
USING SYSTEM.COMPONENTMODEL;
USING SYSTEM.DATA;
USING SYSTEM.DRAWING;
USING SYSTEM.LINQ;
USING SYSTEM.TEXT;
USING SYSTEM.WINDOWS.FORMS;
USING AFORGE.VIDEO.DIRECTSHOW;
USING BARCODELIB.BARCODEREADER;

NAMESPACE LECTORQR
{
    PUBLIC PARTIAL CLASS FORM1 : FORM
    {
        PUBLIC FORM1()
        {
            INITIALIZECOMPONENT();
        }
        //VARIABLE PARA LISTA DE DISPOSITIVOS
        PRIVATE FILTERINFOCOLLECTION DISPOSITIVOS;
        //VARIABLE PARA FUENTE DE VIDEO
        PRIVATE VIDEOCAPTUREDEVICE FUENTEDEVIDEO;
        PRIVATE VOID FORM1_LOAD(OBJECT SENDER, EVENTARGS E)
        {
            //LISTAR DISPOSITIVOS DE ENTRADA DE VIDEO
            DISPOSITIVOS = NEW FILTERINFOCOLLECTION(FILTERCATEGORY.VIDEOINPUTDEVICE);
            //CARGAR TODOS LOS DISPOSITIVOS AL COMBO
            FOREACH(FILTERINFO X IN DISPOSITIVOS)
            {
                COMBOBOX1.ITEMS.ADD(X.NAME);
            }
            COMBOBOX1.SELECTEDINDEX = 0;
        }
        //BOTON DE INICIAR LECTURA
        PRIVATE VOID BUTTON1_CLICK(OBJECT SENDER, SYSTEM.EVENTARGS E)
        {
            //EMPEZAR A LEER
            TIMER1.ENABLED = TRUE;
            //ESTABLECER EL DISPOSITIVO SELECCIONADO COMO FUENTE DE VIDEO
            FUENTEDEVIDEO = NEW VIDEOCAPTUREDEVICE(DISPOSITIVOS[COMBOBOX1.SELECTEDINDEX].MONIKERSTRING);
            //INICIALIZAR EL CONTROL
            VIDEOSOURCEPLAYER1.VIDEOSOURCE = FUENTEDEVIDEO;
            //INICIAR RECEPCION DE IMAGENES
            VIDEOSOURCEPLAYER1.START();
        }
            //BOTON DE DETENER LECTURA
        PRIVATE VOID BUTTON2_CLICK(OBJECT SENDER, SYSTEM.EVENTARGS E)
        {
            //DEJAR DE LEER
            TIMER1.ENABLED = FALSE;

            //DETENER RECEPCION DE IMAGENES
            VIDEOSOURCEPLAYER1.SIGNALTOSTOP();
        }
           //EVENTO TICK DE TIMER
        PRIVATE VOID TIMER1_TICK(OBJECT SENDER, SYSTEM.EVENTARGS E)
        {
            //ESTAR SEGUROS QUE HAY UNA IMAGEN DESDE LA WEBCAM
            IF(VIDEOSOURCEPLAYER1.GETCURRENTVIDEOFRAME() != NULL)
            {
                //IBTENER IMAGEN DE LA WEBCAM
                BITMAP IMG = NEW BITMAP(VIDEOSOURCEPLAYER1.GETCURRENTVIDEOFRAME());
                //UTILIZAR LA LIBRERIA Y LEER EL CÓDIGO
                STRING[] RESULTADOS = BARCODEREADER.READ(IMG, BARCODEREADER.QRCODE);
                //QUITAR LA IMAGEN DE MEMORIA
                IMG.DISPOSE();
                //OBTENER LAS LECTURAS CUANDO SE LEA ALGO

                IF(RESULTADOS != NULL && RESULTADOS.COUNT() > 0)
                {
                    //AGREGAR EL TEXTO OBTENIDO A LA LISTA
                    LISTBOX1.ITEMS.ADD(RESULTADOS[0]);
                }
            }
        }
    }
}

1 comentario:

  1. Como le hago para que solo escaneeé una vez y lo muestre en un TextBox ? Me urge pls ):

    ResponderEliminar