Чтение данных из нескольких сканеров штрих-кода в приложение C # - PullRequest
0 голосов
/ 16 марта 2011

я занимаюсь разработкой приложения для Windows, в котором мне нужно читать данные со сканеров ... я знаю о клиновых сканерах kyeboards, которые должны фокусироваться на текстовом поле ... но это для одного пользователя, если я хочу работать с несколькими сканерами, то как я читаю ??

Ответы [ 3 ]

1 голос
/ 16 марта 2011

Если сканеры выступают в роли HID-устройства, что означает, что они просто отправляют символы так, как они были набраны на клавиатуре, тогда вы не сможете понять, откуда у сканера появился этот символ.Более того, вы даже не сможете понять, набрал ли пользователь что-нибудь на клавиатуре или сканере, отправил ли вам какой-либо символ, он просто появляется.

Почти каждый сканер штрих-кода имеет свой собственный протокол, обычно он довольно прост и позволяетобщаться через последовательный порт.Вы просто должны реализовать этот протокол.Иногда несколько сканеров (от разных поставщиков) используют один и тот же протокол, в этом случае их будет проще поддерживать.

Некоторые сканеры штрих-кода поддерживают разные режимы связи с хостом, то есть они могут связываться через последовательный порт (то естьпредпочтительным способом в вашем случае), или они могут выступать в роли HID-устройства (что не подходит для вашего случая), и существуют некоторые другие варианты.Режимы могут быть изменены программно или с помощью специальных штрих-кодов, поставляемых с руководством по штрих-кодам.Обратитесь к руководству по штрих-коду, чтобы уточнить это.

1 голос
/ 19 мая 2015

Вы можете использовать Microsoft POS для .NET, предоставляя приложения .NET с простыми и согласованными интерфейсами для связи с более чем тридцатью периферийными устройствами POS.Список устройств включает в себя сканеры штрих-кода, считыватели магнитных полос (MSR), линейные дисплеи, PIN-коды, считыватели RFID, биометрические считыватели, принтеры чеков, кассовые аппараты и многие другие.POS для .NET - это реализация Microsoft отраслевого стандарта унифицированных точек обслуживания (UPOS).POS для .NET позволяет как Независимым поставщикам программного обеспечения, так и Независимым поставщикам оборудования поддерживать широкий спектр периферийных устройств с использованием Microsoft .NET.Кроме того, Microsoft POS для .NET предоставляет множество преимуществ для независимых поставщиков ПО и конечных пользователей, помимо Unified POS

. Точка обслуживания Microsoft для .NET доступна для бесплатной загрузки от Microsoft .

Сборка Microsoft.PointOfService определяет контракты интерфейса программирования между приложениями POS и сервисными объектами, используемыми для взаимодействия и управления многими устройствами, поддерживаемыми POS для .NET.Добавьте ссылку на эту сборку в проект:

  1. Щелкните правой кнопкой мыши «Ссылки» в обозревателе решений и выберите «Добавить ссылку…»

  2. В открывшемся диалоговом окне выберите вкладку «Обзор».

  3. Выберите справочный файл «Microsoft.PointOfService.dll», перейдя в папку «% ProgramFiles% \».Microsoft Point Of Service \ SDK », где он содержится. Нажмите« OK », чтобы добавить ссылку.

, затем добавьте оператор using в свой класс, например,

using Microsoft.PointOfService;
using System.Collections;

тогда вы можете написать свои методы так:

private void ActivateScanner(DeviceInfo selectedScanner)
{
    //Verify that the selectedScanner is not null
    // and that it is not the same scanner already selected
    if (selectedScanner != null && !selectedScanner.IsDeviceInfoOf(activeScanner))
    { 
        // Configure the new scanner
        DeactivateScanner();

        // Activate the new scanner
        UpdateEventHistory(string.Format(Activate Scanner: {0}",
            selectedScanner.ServiceObjectName));
        try
        {
            activeScanner = (Scanner)explorer.CreateInstance(selectedScanner);
            activeScanner.Open();
            activeScanner.Claim(1000);
            activeScanner.DeviceEnabled = true;
            activeScanner.DataEvent += newDataEventHandler(activeScanner_DataEvent);
            activeScanner.ErrorEvent += new DeviceErrorEventHandler(
                activeScanner_ErrorEvent);
            activeScanner.DecodeData = true;
            activeScanner.DataEventEnabled = true;
        }
        catch (PosControlException)
        {
            // Log error and set the active scanner to none
            UpdateEventHistory(string.Format(Activation Failed: {0}",
                selectedScanner.ServiceObjectName));
            activeScanner = null;
        }
    }

NB Вы можете найти хорошо написанный учебник по POS для .NET здесь

надеюсь, это поможет:)

0 голосов
/ 16 марта 2011

зависит от сканера и его API.Если он просто эмулирует клавиатуру, вам будет трудно.Попробуйте проверить API, чтобы увидеть, поддерживает ли он открытие потока, например, последовательный порт или что-то в этом роде.Таким образом, вы можете открывать каждый сканер отдельно и при необходимости читать с каждого.

Будем надеяться, что ваши сканеры могут быть открыты как отдельные входные потоки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...