Пример считывания штрих кода с помощью web/usb камеры


Компонент работы с веб-камерой представлен ActiveX-объектом, выполненным для работы в среде CLR (Microsoft Framework v2.0.50727) x32. В основе работы с видеопотоком лежит библиотека AForge, а за распознавание qr-кодов отвечает библиотека ZXing. Пример представлен вместе с исходными кодами проекта для MS Visual Studio 2010

За основу были взяты материалы из публикации //infostart.ru/public/177082/

Изменения в компоненте были сделаны для того что бы можно было удобно напрямую из 1С управлять списком активных камер и их возможным разрешением работы.

Добавлена переменная CamList, массив текстовых значений, заполняется при включении камеры. Формат строки: Наименование камеры;КоординатаХ;КоординатаУ

Добавлена Процедура CamON (НаименованиеКамеры, КоординатаХ,КоординанаУ) Процедура включает камеру в выбранно режиме работы. Если не передавать значения разрешения, включается в максимально возможном.

Изменения в компоненте:

public FilterInfoCollection videoDevices;

public Object CamList;

 

public void GetCamList()

        {

            String temp;

            ListMassCamString = new List();

            videoDevices = new FilterInfoCollection(FilterCategory.VideoInputDevice);

            for (int vid_count = 0; vid_count < videoDevices.Count; vid_count++)

            {

             VideoCaptureDevice videoSource = new VideoCaptureDevice(videoDevices[vid_count].MonikerString);

                for (int cid_count = 0; cid_count < videoSource.VideoCapabilities.Length; cid_count++)

                {

                 temp = «» + videoDevices[vid_count].Name + «;» + videoSource.VideoCapabilities[cid_count].FrameSize.Width + «;» + videoSource.VideoCapabilities[cid_count].FrameSize.Height + «»;

                 MassCamString.Add(temp);

                }

            }

            CamList = MassCamString.ToArray();

        }

 

public void CamON(String CamName, int X = 0, int Y = 0)

        {

            videoDevices = new FilterInfoCollection(FilterCategory.VideoInputDevice);

            for (int vid_count = 0; vid_count

            {

                if (videoDevices[vid_count].Name == CamName)

                {

                    VideoCaptureDevice videoSource = new VideoCaptureDevice(videoDevices[vid_count].MonikerString);

                    if (X != 0 & Y != 0)

                    {

                        videoSource.DesiredFrameSize = new Size(X, Y);

                    }

                    OpenVideoSource(videoSource);

                    break;

                }

            }

 

        }

3 Comments

  1. KliMich

    Спасибо! Пригодиться.

    Reply
  2. dave2000

    Под Win7 х64 будет работать?

    Reply
  3. fanis2005@ya.ru

    {Форма.Форма.Форма(4)}: Поле объекта не обнаружено (CamList)

    CamList = ЭлементыФормы.ЭлементУправления1.CamList;

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *