
Давно хотел написать такое руководство к действию, но как-то всё руки не доходили, и вот наконец написал, всего делов то было…
Любители впихнуть везде и всюду 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
P.S. Ещё один нюанс, может кому-то пригодится. Создавая приложения для ТСД (Motorola точно, за другие не ручаюсь) лучше делать белый шрифт на черном фоне, опытным путем установлена экономия аккумуляторов примерно процентов на 25-30.
Комментарии (10)
RSS свернуть / развернутьНаучиться бы еще эмулировать терминал сбора данных на компьютере, а то при попытке запустить ругается на сроку
private Symbol.Barcode.BarcodeReader barcode_reader = new Symbol.Barcode.BarcodeReader();
пишет NullReferenceException
неверно сканера штрих кода не видит
didim
И блок кода работающий со считывателем включать только в сборку для ТСД. Для эмулятора просто делать без этого куска кода.
Roman
Решил попробовать запустить MotorolaSDKTest на КПК Motorola Symbol MC70.
Появилась форма с кнопкой «закрыть форму» внизу и textboxом наверху.
Нашел штрихкод на бутылочке с гелем для рук :), пытаюсь его просканировать, но на форме ничего не происходит.
Я просто скопировал проект MotorolaSDKTest (со всеми библиотеками) в КПК и установил Compact Framework 3.5. Запускаю exe фаил из папки bin\release
djnik
2. Версия операционки на устройстве какая?
Для той библиотеки, что использована в примере, использован EMDK с поддержкой MC70 — c Windows Mobile 5.0/6.0/6.1
Roman
2. Windows Mobile 5.0
попробовал запустить exe из папки Debug:
— Не найдено имя файла или сборки «Symbol.Barcode, Version = 1.6.1.3, Culture = neutral,
PublicKeyToken =… или одна из их зависимостей.
djnik
Ещё один вопрос, а без программы — сканер светится если на кнопку считывателя жать, до запуска программы?
Может просто сканер занят — подключиться не может? (Хотя тогда бы скорее всего ошибку выдал)
И ещё Пикает сканер? Если не пикает то ШК — сам возможно не читается.
Попробуй другой — какой нибудь продуктовый обычный (с ёгурта например).
Если с выключенной программой сканер не активен, а при включенной программе не читает никакие ШК, то я бы посмотрел настройки сканера, ато может просто чтение определённых типов ШК отключено.
Roman
все получилось с коробкой от принтерного картриджа, на которой этих кодов целая уйма, причем разных типов…
с гелем не срабатывало, наверное, из-за формы или прозрачности бутылки…
еще раз спасибо
djnik
volodya82
Потому что если на сервере — то лучше работать с какой либо из баз данных.
Roman
volodya82
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.