Сканер не распознается Microsoft POS - PullRequest
3 голосов
/ 27 августа 2009

У меня есть сканер штрих-кода от Metro Technologies, и я использую Microsoft POS обнаружить вход со сканера. Он подключен к моей системе через USB порт. Но сканер не идентифицируется через POS.

public Form1()
{
InitializeComponent();
explorer = new PosExplorer(this);
explorer.DeviceAddedEvent += new
DeviceChangedEventHandler(explorer_DeviceAddedEvent);
}


void explorer_DeviceAddedEvent(object sender, DeviceChangedEventArgs e)
{
if (e.Device.Type == "Scanner")
{
scanner = (Scanner)explorer.CreateInstance(e.Device);
scanner.Open();
scanner.Claim(1000);
scanner.DeviceEnabled = true;
scanner.DataEvent += new
DataEventHandler(activeScanner_DataEvent);
scanner.DataEventEnabled = true;
scanner.DecodeData = true;
}
}

void activeScanner_DataEvent(object sender, DataEventArgs e)
{
UpdateEventHistory("Data Event");
ASCIIEncoding encoder = new ASCIIEncoding();
try
{
// Display the ASCII encoded label text
txtbScanDataLabel.Text =
encoder.GetString(activeScanner.ScanDataLabel);
// Display the encoding type
txtbScanDataType.Text = activeScanner.ScanDataType.ToString();

// re-enable the data event for subsequent scans
activeScanner.DataEventEnabled = true;
}
catch (PosControlException)
{
// Log any errors
UpdateEventHistory("DataEvent Operation Failed");
}
}

Ответы [ 4 ]

2 голосов
/ 14 декабря 2010

С некоторых форумов, а также в документации POS SDK:

Вы должны добавить это в XML-файл в каталоге:

C:\Program Files\Common Files\microsoft shared\Point Of Service\Control Configurations\


<PointOfServiceConfig Version="1.0">
 <ServiceObject Type="Scanner" Name="Example scanner">
  <HardwareId From="HID\VID_04B4&amp;PID_0100&amp;REV_0001" To="HID\VID_04B4&amp;PID_0100&amp;REV_0001" />
 </ServiceObject>
</PointOfServiceConfig>

Вы должны проверить аппаратный идентификатор вашего устройства и заменить его внутри тега <HardwareId>

Это конфигурация "включай и работай".

0 голосов
/ 15 февраля 2012

Я нашел конфигурацию здесь (платформа Windows 7):

C: \ Documents and Settings \ Все пользователи \ Данные приложения \ Microsoft \ Точка обслуживания \ Configuration \ Configuration.xml

0 голосов
/ 28 августа 2009

Вот весь код

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 Microsoft.PointOfService;
using System.Collections;

namespace MicrosoftPOSScannerSample
{
    public partial class Form1 : Form
    {
        private PosExplorer explorer;
        private Scanner scanner;

        public Form1()
        {
            InitializeComponent();
            explorer = new PosExplorer(this);
            explorer.DeviceAddedEvent += new DeviceChangedEventHandler(explorer_DeviceAddedEvent);
        }

        private void Form1_Load(object sender, EventArgs e)
        {
        }

        private void UpdateEventHistory(string newEvent)
        {
            txtbEventHistory.Text = newEvent + System.Environment.NewLine + txtbEventHistory.Text;
        }

        void explorer_DeviceAddedEvent(object sender, DeviceChangedEventArgs e)
        {
            if (e.Device.Type == "Scanner")
            {
                scanner = (Scanner)explorer.CreateInstance(e.Device);
                scanner.Open();
                scanner.Claim(1000);
                scanner.DeviceEnabled = true;
                scanner.DataEvent += new DataEventHandler(scanner_DataEvent);
                scanner.DataEventEnabled = true;
                scanner.DecodeData = true;
            }
        }

        void scanner_DataEvent(object sender, DataEventArgs e)
        {
            UpdateEventHistory("Data Event");
            ASCIIEncoding encoder = new ASCIIEncoding();
            try
            {
                // Display the ASCII encoded label text
                txtbScanDataLabel.Text = encoder.GetString(scanner.ScanDataLabel);
                // Display the encoding type
                txtbScanDataType.Text = scanner.ScanDataType.ToString();

                // re-enable the data event for subsequent scans
                scanner.DataEventEnabled = true;
            }
            catch (PosControlException)
            {
                // Log any errors
                UpdateEventHistory("DataEvent Operation Failed");
            }
        }

    }
}
0 голосов
/ 27 августа 2009

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

Если ничего другого, вы можете исключить проблему с конфигурацией оборудования, в отличие от вашего кода.

explorer_DeviceAddedEvent когда-нибудь срабатывает?

Где scanner и activeScanner инициализирован?

[EDIT]

Проверьте сам сканер или документы, поставляемые с ним, на наличие идентификатора оборудования (HID), попробуйте добавить следующую строку в ваш код.

[HardwareId(@"this is where the HID goes")]

Посмотрите, поможет ли это вам дальше ... см. здесь , чтобы узнать больше, вы можете предоставить HID или добавить эту информацию в XML-файл конфигурации

...