2009-08-27 4 views
3

У меня есть сканер штрих-кодов от Metro Technologies, и я использую Microsoft POS для обнаружения ввода со сканера. Он подключен к моей системе, используя порт USB . Но сканер не распознается POS.Сканер не распознан Microsoft 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"); 
} 
} 
+1

Я предполагаю, что «Microsoft POS» не означает, что это обычно означает, когда я вижу этот термин в Интернете. :-) –

+0

Я действительно надеюсь, что POS означает пункт продажи ... и не ... что T.E.D. думает. –

ответ

0

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

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

Возможен ли пожар explorer_DeviceAddedEvent?

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

[EDIT]

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

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

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

+0

Событие explorer_DeviceAddedEvent не запускается. Поэтому он никогда не достигает кода, в котором создается объект сканера. Необходимо ли настроить сканер определенным образом для работы с Microsoft POS? – RRR

+0

опубликуйте остальную часть кода, пожалуйста, даже с использованием утверждений – curtisk

+0

Опубликовано весь код ниже – RRR

0

Вот весь код

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

обновленный основной ответ с дополнительной информацией, чтобы попробовать – curtisk

2

с некоторых форумах, а также в 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

Спасибо, что это работает, а также добавление для этого набора ответов имя файла Configuration.xml – Jamaxack

-1

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

C: \ Documents и Settings \ All Users \ Application Data \ Microsoft \ Point Of Service \ Configuration \ configuration.xml