Программируем лазерный считыватель на терминалах сбора данных Motorola (Symbol) C#
Давно хотел написать такое руководство к действию, но как-то всё руки не доходили, и вот наконец написал, всего делов то было…
Любители впихнуть везде и всюду 1С-ку (даже на терминал) с использованием DataWedge (это такая утилита для отправки того что считал сканер в буфер клавиатуры только специализированная для ТСД Symbol) могут дальше не читать, а заниматься и дальше тем что больше нравится. Обращать в свою веру никого не буду :).
Итак, что же я здесь продемонстрирую?.. Я приведу маленький пример того, как задействовать считывающее устройство на терминале сбора данных (Symbol Motorola) из вашего приложения, расскажу что для этого необходимо и приведу пример кода.
Приступаем к делу.
Первое что вам понадобится это Visual Studio 2008 (не ниже Prof) — в ней есть поддержка Smart Devices (проще говоря разработки для мобильных устройств).
Второе что понадобится это SDK от Motorolla (оно у них называется EMDK — Enterprise Mobility Developer Kit, старая версия называлась SMDK — Symbol Mobility Developer Kit), находим последнюю версию на их сайте сейчас это EMDK for .NET v2.4, скачиваем, устанавливаем. После установки сможем выбрать в References — Symbol и Symbol.Barcode, они то и нужны. Можно просто добавить через поиск эти библиотеки в проект и этого будет достаточно.
Последняя версия EMDK — необходима если вы хотите чтобы ваше приложение работало на новых устройствах (таких как MC3190), однако следует учесть, что последние версии библиотек не будут работать на старых устройствах с Win CE 4.2, для их программирования придется выбрать более старую SDK.
EMDK — позволяет делать много разных вещей, в том числе и настраивать сканер, читать или не читать различные типы ШК и каким образом это делать, однако не вижу особого смысла в этом разбираться для большинства нужд достаточны настройки по умолчанию. А если и необходимы какие либо специфичные настройки, то с каждым ТСД Motorola (Symbol) идет утилита для настройки считывателя, проще воспользоваться ею чем писать свою и тратить драгоценное время.
Третье — создаем свое приложение считывающее штриховой код.
В студии создаем «Smart Device Project», добавляем как ранее сказано в ено библиотеки Symbol и Symbol.Barcode.
Кидаем текстовое поле на форму и кнопку (по ней будем выключать сканер и выходить из приложения), включать сканер будем при загрузке приложения.
Исходный код:
//Читает ШК SYMBOL.
private Symbol.Barcode.BarcodeReader barcode_reader = new Symbol.Barcode.BarcodeReader();
//Процедура работает при получении новых данных со считывателя.
void reader_ListChanged(object sender, ListChangedEventArgs e)
{
Symbol.Barcode.ReaderData nextReaderData = barcode_reader.ReaderData;
if (nextReaderData.Result == Symbol.Results.SUCCESS)
{
//Помещаем полученное значение в текстовое поле
textBox1.Text = nextReaderData.Text;
}
else
{
textBox1.Text = "Формат считанного Штрихового Кода - не распознан!";
//Проигрываем звук - ненайденного ШК
System.Media.SystemSounds.Exclamation.Play();
System.Media.SystemSounds.Asterisk.Play();
System.Media.SystemSounds.Exclamation.Play();
System.Media.SystemSounds.Asterisk.Play();
}
}
//При загрузке формы.
private void Form1_Load(object sender, EventArgs e)
{
//Создаем событие на чтение ШК сканером...
barcode_reader.ListChanged += new ListChangedEventHandler(reader_ListChanged);
barcode_reader.Start();
}
//Закрываем приложение.
private void button1_Click(object sender, EventArgs e)
{
//При закрытии не забыть остановить и очистить, иначе повиснет.
barcode_reader.Stop();
barcode_reader.Dispose();
this.Dispose();
Application.Exit();
}
!!! Очень важно при закрытии приложения останавливать считыватель и очищать память.
На новых устройствах, под управлением Windows CE 6.0 особенно, даже простой выход из приложения Application.Exit() без this.Dispoce() может привести к зависанию устройства.
Вот и все.
Скачать исходник примера:
Скачать файл: motorolasdktest.rar [250.31 Kb] (cкачиваний: 8)
P.S. Ещё один нюанс, может кому-то пригодится. Создавая приложения для ТСД (Motorola точно, за другие не ручаюсь) лучше делать белый шрифт на черном фоне, опытным путем установлена экономия аккумуляторов примерно процентов на 25-30.