Как работать с Bluetooth сканером штрихкода с Windows Phone 8

Для реализации проекта по модернизации системы складского хранения нужно было подобрать недорогую, но достаточно удобную и надежную связку считывателя штрихкодов (barcode reader) и мобильного устройства с которыми будут работать сотрудники склада.

В качестве мобильного устройства планировалось использовать недорогой смартфон. iOS устройства отпадали сразу из-за высокой цены. Android девайсы подходили по цене, но меня несколько настораживали регулярные проблемы с безопасностью этой ОС. Кроме того управлять ими в корпоративной среде довольно непросто, поскольку устройства разных производителей даже с одной и той-же версией операционной системы работают по разному. Подбирать настройки — дело неблагодарное. Кроме того писать софт под Android и iOS для разработчиков занимающихся разработкой под .NET — штука непривычная. Учитывая все вышесказанное обратил свой взор на смартфоны под Windows Phone 8.

Перспективы этих девайсов, на мой взгляд, неплохие:

  • Visual Studio 2012 — весьма удобная среда разработки. Разработчик писавший софт под .NET без труда разберется с основами программирования под Windows Phone 7/8.
  • Адаптация кода .NET приложений написанных под Windows относительно несложная. Разработка приложения работающего с web сервисами под Windows Phone у меня заняло немного времени. Я без особых сложностей написал приложение, которое работает с опубликованным на 1С web сервисом.
  • Интерфейс достаточно прост и лаконичен, что упрощает освоение устройства.
  • Батарея расходуется куда экономнее, чем Android устройствами.
  • и т.п.

Устройства для тестирования

41RF7w53L-LПоскольку Windows Phone аппаратов со встроенным лазерным считывателем штрихкодов пока на рынке не появилось, а когда они и появятся, скорее всего поначалу будут стоить недешево, остановился на использовании Bluetooth сканера. В качестве тестового смартфона был выбран Nokia Lumia 620. Девайс достаточно компактен, хорошо лежит как в мужской, так и женской руке, корпуса «ухватистые». Чтобы выпустить из рук нужно постараться. Батарея в режиме ожидания держит до трех дней. Экран весьма качественный для своей цены. Цена на «серые» аппараты опустилась ниже 8 тыс. руб., т.е. даже если кладовщик нечаянно разобьет — не так страшно.

У меня был опыт приобретения для производственников «неубиваемых» дорогущих телефонов Samsung, защищенных по IP 54, которые сдохли своей смертью спустя год, как только закончилась гарантия, при том, что дешевые телефоны «Билайна» A100, вполне себе неплохо работают уже несколько лет в тех-же самых условиях.

Кроме того для Nokia 620 есть спортивные чехлы на руку, а также недорогая задняя крышка, защищенная по IP54, т.е. можно нормально экипировать кладовщика. 🙂

FingerTriggerGloveВ качестве сканера штрихкода был выбран недорогой компактный сканер http://www.koamtac.com/kdc200.html производства корейской KoamTac. Для него также доступен набор аксессуаров вроде перчатки для ношения сканера штрихкода, что исключает падение устройства. Корпус устройства достаточно прочный с резиновым чехлом. Поскольку устройство очень легкое, падение ему явно не страшно. Пользоваться устройством просто — одна кнопка для сканирования, запомнит любой.

При выборе беспроводного сканера штрихкода нужно выбирать среди устройств поддерживающих Bluetooth профиль SPP. Таких устройств нынче не мало, есть из чего выбрать.

Windows Phone 8 и Bluetooth сканер

При выборе Windows Phone 8 устройства в качестве устройства для работы с Bluetooth сканером мне и в голову не могло прийти, что Windows Phone 8 не поддерживает штатно широко распространенные Bluetooth профили HID и SPP. Собственно узнал я об этом лишь после того, как «спарил» Lumia 620 и KDC 200. Устройства «спарились» нормально, однако после нескольких секунд сканер выдавал, что «connection failed!!!» и отваливался. Также негуманно поступала Lumia 620. Занявшись выяснением причин проблемы я и наткнулся на список профилей поддерживаемых Windows Phone 8. К моему глубокому разочарованию ни HID ни SPP в списке не значилось.

Итак, любители гаджетов, вроде Bluetooth клавиатур и мышей будут несколько разочарованы отсутствием поддержи HID. Я же был разочарован поддержкой обеих профилей с которым можно было общаться с Bluetooth сканером. Поэтому начал искать выход из положения. Покопав в Интернете я нашел, что Windows Phone 8 поддерживает Radio Frequency Communication (RFCOMM) протокол, который является базовым протоколом для профиля Serial Port Profile (SPP). Поэтому затеплилась надежда, что все-же удастся «спарить» два устройства. Благо задача существенно упростилась, когда я наткнулся на библиотеку 32FEET.NET. Общение с гуру на местном форуме принесло свои плоды, удалось «спарить» устройства.

Моей основной ошибкой, когда я пытался «спарить» устройства, которые не имеют общих поддерживаемых профилей, было ожидание, что устройства как-то договорятся и смогут соединиться. Сказывался стереотип от перманентного использования Bluetooth гарнитур/наушников Jabra/AKG. В данном случае так не работает, т.е. при попытке соединения Bluetooth сканера с Windows Phone 8 нажатием на соответствующий пункт в списке Bluetooth девайсов смартфона, соединение начинается и заканчивается. Действовать нужно по-другому.

Соединятся c Bluetooth устройством из соответствующего раздела настроек Windows Phone 8 не нужно. Вместо этого следует:

  1. Запустить приложение для работы со сканером штрихкода  на Windows Phone 8.
  2. Выбрать в приложении Bluetooth устройство с которым ранее уже было произведено «спаривание». В моем случае KDC200.
  3. На Bluetooth сканере штрихкода нажать кнопку соединения. В случае с KDC 200 она на корпусе слева сверху.
  4. После этого Bluetooth устройство радостно сообщит, что соединение успешно установлено.
  5. Соединение будет поддерживаться до тех пор, пока не будет принудительно разорвано программно, либо при закрытии Windows Phone приложения.

Подготовка Windows Phone 8 приложения для работы с Bluetooth устройством

После создания Windows Phone приложения необходимо зайти в Properties проекта, открыть WMAppManfest.xml и убедиться, что флаги возле ID_CAP_PROXIMITY и ID_CAP_NETWORKING выставлены. В противном случае при выполнении PeerFinder.Start() будет выдано сообщение об ошибке отсутствия доступа: «Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED))».

Пример кода для Windows Phone 8 прилагается.

Spread the love
Запись опубликована в рубрике IT рецепты с метками , . Добавьте в закладки постоянную ссылку.