Управляемый Android Service перехвата сообщений Broadcast со сканера штрих-кодов в 1С (ver. 1.2.1)

Программирование - Мобильные приложения

42
Service перехвата сообщений Broadcast со сканера штрих-кодов в мобильную платформу 1С (эмуляция внешнего события). Позволяет получать и обрабатывать Штрих-коды не в разрыв клавиатуры (определенное активное окно), а "под капотом". Поддержка запуска/остановки из программного кода 1С.

ВНИМАНИЕ! Компонента не имеет видимого интерфейса. При попытке запустить через иконку ничего происходить не будет!

Предыстория создания //xn--80appelehcm.xn--p1ai/public/586539/ (сначала ознакомиться)

На том этапе был создан сервис, который "жил сам по себе", запускался при старте системы, имел интерфейс и ручные настройки. Мне это показалось не достаточно удобным. Родилась идея отдельной компоненты. Она похожа на предыдущую, но управляется из 1С, не имеет интерфейса с настройками.

В модуль управляемого приложения прописываем:

Процедура ПриНачалеРаботыСистемы()
	
	ОбщегоНазначенияКлиент.ПодключитьГлобальноеСобытиеОповещения();
	ОбщегоНазначенияКлиент.ЗапуститьКомпонентуСканирования();
	
КонецПроцедуры

Процедура ПриЗавершенииРаботыСистемы()
	ОбщегоНазначенияКлиент.ОстановитьКомпонентуСканирования();
КонецПроцедуры

В модуль ОбщегоНазначенияКлиент

Процедура ПодключитьГлобальноеСобытиеОповещения() Экспорт
	#Если МобильноеПриложениеКлиент Тогда
		Оп = Новый ОписаниеОповещения("ОбработчикЛокальныхУведомлений", ЭтотОбъект);
		ДоставляемыеУведомления.ПодключитьОбработчикУведомлений(Оп);  
	#КонецЕсли
КонецПроцедуры

Процедура ГлобальноеСобытиеОповещения(Сообщение, ЧтоТоЕще = "") Экспорт

	Попытка
		Отправитель = Число(Сообщение.Отправитель);
	Исключение
		Возврат
	КонецПопытки;
	Если Отправитель = 1 Тогда
		Оповестить(Формат(Отправитель,"ЧГ="),Сообщение.Текст, "Сканирование ШК");
	Иначе 
		Возврат
	КонецЕсли;
КонецПроцедуры

Процедура ОбработчикЛокальныхУведомлений(Уведомление,Локальное,Показано, ЧтоТоЕще) Экспорт
	ГлобальноеСобытиеОповещения(Новый Структура("Отправитель,Текст",Уведомление.Текст,Уведомление.Данные));
КонецПроцедуры

&НаКлиенте
Процедура ЗапуститьКомпонентуСканирования() Экспорт
	#Если МобильноеПриложениеКлиент Тогда
		НовЗП = Новый ЗапускПриложенияМобильногоУстройства();
		НовЗП.Действие = "com.barcodeto1c.action";
		НовЗП.ДополнительныеДанные.Добавить("ServiceState","Start"); //что сделать: Старт/Стоп
		НовЗП.ДополнительныеДанные.Добавить("ServiceSCAN_MESSAGE","scan.rcv.message"); //чей бродкаст ловить
        НовЗП.ДополнительныеДанные.Добавить("ServiceBarCodeField","barocode"); //в каком поле сканер возвращает штрих-код (если не задавать - по умолчанию barocode, что в большинстве случаев оно так)
		НовЗП.ДополнительныеДанные.Добавить("ServiceEventID","1"); //категория сообщение для 1С
		НовЗП.ДополнительныеДанные.Добавить("ServiceToast","Service STARTED!");//(не обязательно) просто покажет Тост при успехе
		НовЗП.ДополнительныеДанные.Добавить("ServiceBase_Name",ОбщегоНазначенияСервер.ПолучитьИДБазы());//если одна база - можно поставить ""
		Результат = НовЗП.Запустить(Истина);
		
		Если НЕ Результат = 77 Тогда
             //тут можно отловить что что-то не так. Возможно апк не установлена или что-то не сработало
		КонецЕсли;
	#КонецЕсли
	
КонецПроцедуры

&НаКлиенте
Процедура ОстановитьКомпонентуСканирования() Экспорт
	#Если МобильноеПриложениеКлиент Тогда
		НовЗП = Новый ЗапускПриложенияМобильногоУстройства();
		НовЗП.Действие = "com.barcodeto1c.action";
		НовЗП.ДополнительныеДанные.Добавить("ServiceState","Stop");
		НовЗП.ДополнительныеДанные.Добавить("ServiceToast","Service STOPED!");
		Результат = НовЗП.Запустить(Истина);
	#КонецЕсли

КонецПроцедуры

ПолучитьИДБазы() можно разными способами. Я её прописал в константы.

Успешный результат всегда равен 77 (просто число, мне так захотелось)

У формы должно быть прописано ОбработкаОповещения приблизительно так:

&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
	Если ИмяСобытия = "1" И ВводДоступен() Тогда
		ПолученШтрихКод(Параметр); //процедура для обработки ШК
	КонецЕсли;
КонецПроцедуры

 

Теперь мы можем стартовать сервис только по необходимости. Если у нас несколько баз - то ловить события только той базой, что запущена.

Распространяется "как есть". Надеюсь будет полезным.

Добавлено в версии 1.1

1) сервис может работать с некоторыми bluetooth-сканерами (у которых для настройки используется утилита DataWedge со строкой "посылки" com.hht.emdk.datawedge.data_string)

2) добавлена возможность самостоятельно указывать поле, в котором возвращается набор байт со сканера. По-умолчанию это "barocode". Если сервису передать строку НовЗП.ДополнительныеДанные.Добавить("ServiceBarCodeField","svoe_pole") - то информация будет читаться из него

Оптимизация по размеру файла. А то жрала много памяти предыдущая ;)

Добавлено в версии 1.2.1

- Поддержка устройства CipherLab 9700A (ну и наверное его подобными)

28/03/18 Добавлены исходники

 

Добавлено в версии 1.2.2

- Поддержка устройств, которые возвращают штрих-код как строку, а не массив байт.

42

Скачать файлы

Наименование Файл Версия Размер
BarCodeComponent_ver_1_2_2.apk
.apk 49,75Kb
06.07.18
91
.apk 1.2.2 49,75Kb 91 Скачать
BC2OneC_sources.zip
.zip 47,62Kb
06.07.18
35
.zip 1.2.1 47,62Kb 35 Скачать

См. также

Вознаграждение за ответ
Показать полностью
Комментарии
Сортировка: Древо
1. ViperGSV 15.02.17 11:12 Сейчас в теме
Совместимость с какими версиями Android? Интересует работа на старых версиях 2.3.х
2. DMon 72 15.02.17 15:27 Сейчас в теме
(1) Я писал под 4.0.3. Если нужно - могу понизить версию.
3. DMon 72 15.02.17 18:53 Сейчас в теме


(1) добавил, можно попробовать. Но работу не гарантирую, так как девайса с 2.3 нету
4. Batman 136 15.02.17 23:08 Сейчас в теме
Небольшое замечание. Там в описании (жирным шрифтом) - опечатка - "Поддержка заКуска/"
5. aspirator23 358 18.02.17 16:23 Сейчас в теме
(4) Автор ушел за остальным к закуске. Вернется - исправит. :)
6. DMon 72 18.02.17 21:39 Сейчас в теме
(5)очень остроумно, спасибо)
7. ASK7 02.03.17 23:03 Сейчас в теме
Добрый день коллеги! В поисках решения своей проблемы наткнулся на вашу статью, за что автору огромное спасибо. Я правильно понимаю, чтобы работала данная утилита НЕ НУЖНО! "потрашить, допиливать" платформу как это делал dewersia http://infostart.blog-buh.ru/public/547851. Утилита работает на типовой мобильной платформе 1с?
9. DMon 72 03.03.17 08:10 Сейчас в теме
(7) Привет! правильно, в платформе ничего менять не нужно. Сервис живёт сам по себе, управляется из кода 1С. А можно Вашу проблему в ЛС? Может я подобное уже решал)
8. flyer 204 03.03.17 07:55 Сейчас в теме
я вот на еще один способ наткнулся можно сразу с dev0 читать т.е. с потока. щас работаю над этим если все получиться то выложу тут исходники глянете как сделал.
10. lion-killer 22 03.03.17 17:50 Сейчас в теме
Здравствуйте, коллеги. Можно ли подключить USB сканер к планшету на Android с помощью этого приложения. Если да, то какова последовательность действий. Объясните чайнику )))
11. DMon 72 04.03.17 12:04 Сейчас в теме
(10) С таким не сталкивался на практике, но думаю что реально. Нужно только знать какое сообщение бродкастом рассылается от подключенного сканера. Как узнать? Да много вариантов. Самый простой - анализ logcat к примеру.
12. lion-killer 22 09.03.17 18:03 Сейчас в теме
(11) Если переключить сканер в режим эмуляции клавиатуры - видна посылка штрих кода посимвольно (во вложении), в других режимах никаких событий нет ((
Прикрепленные файлы:
20. pri_hod 88 06.05.17 13:51 Сейчас в теме
(12) Удалось отловить событие?
22. Davidmad777 08.05.17 00:51 Сейчас в теме
Удалось отловить событие

(20)
Удалось отловить событие?
да
23. pri_hod 88 08.05.17 13:03 Сейчас в теме
(22) как ? Я уже все перепробывал...
51. andrey314 10 11.10.17 07:56 Сейчас в теме
(22) Присоединяюсь к вопросу
13. LiolickGG 13.04.17 06:22 Сейчас в теме
Спасибо очень помогло, ТСД зажил новой жизнью.
14. DMon 72 13.04.17 09:00 Сейчас в теме
(13) Рад за полезность :)
Какое именно у Вас устройство ТСД?
15. 1c-kt 24.04.17 02:00 Сейчас в теме
Спасибо, то что нужно. Возможно ли еще получать оповещения от нажатия клавиатурных клавиш?
18. DMon 72 24.04.17 14:53 Сейчас в теме
(15) Попробую реализовать и данный механизм когда будет посвободнее время. Спасибо за идею)
32. demONx7 29.06.17 04:18 Сейчас в теме
(18) Дмитрий, ну что, получилось реализовать? В данный момент занимаюсь аналогичной задачей. Думаю многим будет интересно посмотреть на реализацию данного действия. Информации в интернете по этому поводу - NULL.
33. DMon 72 30.06.17 07:25 Сейчас в теме
(32) нет, не занимался этим. Свободного времени нет пока. Да и практических задач тоже.
16. fr13 24.04.17 11:26 Сейчас в теме
Добрый день, скачал оба файла и ни один не запустился. Версия API 18. Ошибка следующего характера
There was a problem parsing the package

флажок на установку из неизвестных источник стоит, флажок Проверять приложения - снят. Устройство - ТСД Urovo sq42. Другие apk не из маркета ставятся без проблем
17. fr13 24.04.17 12:03 Сейчас в теме
(16) проблему решил, передал apk с пк на тсд, все установилось. До этого качал апк с почты. Странное поведение ОС )
19. fr13 24.04.17 15:57 Сейчас в теме
Поделюсь своим опытом работы с опубликованным выше сервисом и ТСД Urovo sq42:
1. обязательно нужно указывать верный источник броадкаста (как посмотреть автор написал)
2. сканер должен быть настроен не в разрыв клавиатуры, в моем случае в стандартных настройках были настройки сканера, там есть возможность указать режим.
После этого все взлетело, автору спасибо!
21. Davidmad777 08.05.17 00:50 Сейчас в теме
Поделюсь своим опытом работы с опубликованным выше сервисом наТСД Newland:
Все норм работает
Даже на других конфигурациях пробовал
34. user651504_anah0ret 07.07.17 16:50 Сейчас в теме
(21) А у Вас на Newland имя бродкаст сообщения какое, "scan.rcv.message"?
24. Davidmad777 08.05.17 16:12 Сейчас в теме
У тебя Есть Пример конфигурации с работы Acode?
25. pri_hod 88 08.05.17 23:25 Сейчас в теме
46. Dimitrij 26.09.17 11:11 Сейчас в теме
(26) Добрый день,

Не сталкивались с проблемой что при установки приложения на ТСД выскакивает "Cannot call synchronous methods on the client"?

Заранее спасибо!
27. Davidmad777 10.05.17 10:04 Сейчас в теме
Это пример Конфи там в макете есть и Acode tools apk и Примеры использования
28. Davidmad777 10.05.17 10:07 Сейчас в теме
29. pri_hod 88 13.05.17 00:32 Сейчас в теме
(28) Спасибо за конфигурацию, поставил, но так сканер и не получилось заставить работать. У меня сканер подключен к телефону через USB otg host, в блокнот сканирует без проблем, так вот заставить работать через уведомления так как в этой статье так и не получается, куда копать? как перевести "не в разрыв клавиатуры", нигде настроек нет никаких.
30. DMon 72 13.05.17 09:16 Сейчас в теме
(29) Боюсь что никак. Для телефона он просто OTG клавиатура.
По крайне мере мне не известны случаи успешного применения USB не в разрыв клавиатуры
31. Davidmad777 13.05.17 10:23 Сейчас в теме
35. Dream_kz 77 03.08.17 18:54 Сейчас в теме
А как узнать "ServiceBarCodeField" и "ServiceSCAN_MESSAGE"?
Попался на руки китайский ТСД qunsuo pda401, в родное демо приложение сканирует, а сюда не хочет. Декомпилировал приложение, но не могу найти какой броадкаст он ловит.
36. DMon 72 03.08.17 23:14 Сейчас в теме
(35) А чем декомпилировали? Может не всё разложилось?

Выложите где-то на шару это приложение и скиньте ссылку. Я посмотрю.
37. Dream_kz 77 04.08.17 11:15 Сейчас в теме
(36)Да вроде все. В манифесте посмотрел интент фильтр, попробовал по нему, и по другим событиям, но мне кажется я не то поле указал, в котором лежит штрихкод.

Здесь и само приложение, и исходники к нему (нашел на сайте производителя)

http://dropmefiles.com/JGlaf

Попробовал события:
ismart.intent.scandown
com.qs.scancode
com.zkc.scancode
с полем code, и barocode

Но безрезультатно.
38. as.kharlov 21.08.17 19:59 Сейчас в теме
У меня ТСД Motorola Symbol MC3200. Сканер штрихкода в разрыв клавиатуры. Acode не взлетели. Эта утилита может работать?
И как узнать какой бродкаст прописывать для моей модели? Гугл в ответе не помог.
Спасибо!
39. as.kharlov 21.08.17 20:03 Сейчас в теме
Прошу прощения, не заметил сразу сообщения про logcat. Завтра попробую
40. nkroshko 25.08.17 16:28 Сейчас в теме
Спасибо за программу! Удалось установить взаимодействие с 1С на ТСД Атол Smart Droid.
заработало с такими установками:
ServiceSCAN_MESSAGE = DATA_SCAN
что странно независимо от того, что указываешь в ServiceBarCodeField все равно вызывает событие в 1С :)
Shef_zeon; gorevg; perpleks; +3 Ответить
61. gorevg 8 06.11.17 22:19 Сейчас в теме
(40)
Спасибо!
Заработало.
Вот так нужно сделать:
НовЗП.ДополнительныеДанные.Добавить("ServiceSCAN_MESSAGE","DATA_SCAN");
41. /// ANTONIO 29.08.17 16:43 Сейчас в теме
Дмитрий, спасибо за компоненту! Шикарная вещь.
Успешно работает с линейными 1D сканерами Urovo i6200s.
Но вот на сканере 2D Urovo i6200s перестает работать сканирующее устройство через некоторое время использования.
Вместе со службой поддержки перепробовали различные варианты прошивки, ничего не помогает.
Луч сканера есть, но ничего не происходит, даже в родном приложении.
Помогает отключение сканирующего модуля и его включение в настройках Android.
Служба поддержки предполагает, что компонента вешает "камеру" сканера 2D и происходит Crash.
Строки Permission Denial повторяются постоянно, видимо, на каждое сканирование.

В логах при этом такой текст, повторяется
Лог с устройства

Дмитрий, есть мысли, в чем может быть проблема?
Был бы благодарен за помощь.
42. as.kharlov 30.08.17 12:21 Сейчас в теме
Dmitry Po.
Вопрос:
Пользуюсь ТСД Motorola Symbol MC9200
Настроил при сканировании штрих-кода отсылать его как эммуляцию ввода с клавиатуры и broadcast intent
подключил adb. Смотрю logcat чтоб понять какой бродкаст ловить. Вот изменения logcatа после сканирования штрихкода:
W/SoundPool(  730):   sample -1 not READY
E/ImagerAdapter(  730): Guard passed
E/NotificationService(  454): Not posting notification with icon==0: Notificatio
n(pri=0 contentView=com.symbol.datawedge/0x1090064 vibrate=null sound=null defau
lts=0x0 flags=0x11 kind=[null])
E/NotificationService(  454): WARNING: In a future release this will crash the a
pp: com.symbol.datawedge
E/TIAdapter(  730): ID-VIDIOC_SIZEDQBUF Acquistion Stopped mMaxFrameSkip = 0
D/dalvikvm(  730): GC_CONCURRENT freed 914K, 17% free 5774K/6884K, paused 6ms+5m
s, total 54ms
D/InputMethodService(  587): Params passed to SoftKeyboard android.util.MapColle
ctions$KeySet@bc86db18
D/InputMethodService(  587): keystroke_action_char -1
D/InputMethodService(  587): ime_output_enabled true
D/InputMethodService(  587): running Injector
D/InputMethodService(  587): Injector: doInject
E/NotificationService(  454): Not posting notification with icon==0: Notificatio
n(pri=0 contentView=com.symbol.datawedge/0x1090064 vibrate=null sound=null defau
lts=0x0 flags=0x11 kind=[null])
E/NotificationService(  454): WARNING: In a future release this will crash the a
pp: com.symbol.datawedge
I/wpa_supplicant(  572): signalpoll buffer: RSSI=-47
I/wpa_supplicant(  572): LINKSPEED=65
I/wpa_supplicant(  572): NOISE=-71
I/wpa_supplicant(  572): FREQUENCY=5220
E/NotificationService(  454): Not posting notification with icon==0: Notificatio
n(pri=0 contentView=com.symbol.datawedge/0x1090064 vibrate=null sound=null defau
lts=0x0 flags=0x11 kind=[null])
E/NotificationService(  454): WARNING: In a future release this will crash the a
pp: com.symbol.datawedge
I/wpa_supplicant(  572): signalpoll buffer: RSSI=-46
I/wpa_supplicant(  572): LINKSPEED=65
I/wpa_supplicant(  572): NOISE=-70
I/wpa_supplicant(  572): FREQUENCY=5220
Показать


Отсканированный штрихкод 120717109704 (EAN13)
Не вижу в логкате ни имени бродкаста, ни чего-либо похожего на отсканированный штрихкод.
Подскажите куда копать? Как определить имя бродкаста?
Заранее большое спасибо!
43. DMon 72 30.08.17 12:40 Сейчас в теме
(42) Это блютуз сканер? "com.hht.emdk.datawedge.data_string" не подходит?
Есть ли утилита внутренняя для настройки сканера? Я обычно разбираю её чтоб глянуть.
44. as.kharlov 30.08.17 14:19 Сейчас в теме
(43) Dmitry Po,
Спасибо за ответ!
сканер встроенный в терминал сбора данных
В настройках есть "Scanner selection". В этом меню есть пункт "Bluetooth Scanner disconnected". Если выбрать его, то при запуске 1С ругается что блютуз сканер не подключен.
у меня выбран пункт "Scanner selection" = "Auto (2D Barcode Imager)".
Из моего ответа можно понять блютуз сканер или нет?

прописал бродкаст "com.hht.emdk.datawedge.data_string"
ОбработкаОповещения не возникла.

Внутренняя утилита для настройки сканера есть. Называется DataWedge. В ней редактирую профили сканирования. Об этой утилите Вы спрашивали? Как ее можно разобрать?

Кстати, база 1с у меня не скомпилированный apk, а запускается как конфигурация из мобильной платформы, установленной на терминале. Это может влиять на результат?
Конфигурация у меня одна поэтому в параметре "ServiceBase_Name" оставил "".
45. as.kharlov 30.08.17 14:41 Сейчас в теме
Dmitry Po,
И еще:
НовЗП.ДополнительныеДанные.Добавить("ServiceBarCodeField","barocode")
у Вас написано: //в каком поле сканер возвращает штрих-код (если не задавать - по умолчанию barocode, что в большинстве случаев оно так)
"в большинстве случаев так, а в моем конкретном случае это не может отличаться?
47. andrey314 10 10.10.17 13:42 Сейчас в теме
Блютуз сканер Zebra DS6878-SR будет работать? В режиме HID ?
48. DMon 72 10.10.17 17:19 Сейчас в теме
(47) Если есть в устройстве утилита от сканера, которая генерит бродкас сообщения - теоретически возможно. На практике таким не занимался.
49. andrey314 10 10.10.17 17:53 Сейчас в теме
Подскажите, вы какие-нибудь другие блютус сканеры подключали? И в каком режиме?
50. DMon 72 10.10.17 21:34 Сейчас в теме
(49) Внизу публикации указано что добавлено в версию 1.1. Делал это вспелую для коллеги по инфостарту. По его словам всё заработало. Сканер должен быть НЕ в разрыв клавиатуры.
52. Lupeykin 16.10.17 06:51 Сейчас в теме
нет внешнего события, только зря потратил деньги, исходников APK автор не выложил неизвестно почему не работает.
53. DMon 72 16.10.17 10:59 Сейчас в теме
(52) и Вы думаете, что у всех кто скачал тоже нет внешнего события?... и даже те, кто выражал благодарность в комментариях - фейковые? А может нужно причину поискать у Вас на стороне, а не сразу жалеть потраченные копейки? И автор не обязан выкладывать исходники для утилиты за 1 стармани в статусе "как есть". Не нравится - сделайте свою и лучше, выложите на Инфостарт и вернете "зря потраченные деньги"! Хорошего дня!
55. user847620 24.10.17 11:38 Сейчас в теме
Добрый день!
Подскажите, пожалуйста, какое значение нужно задавать для ServiceSCAN_MESSAGE? Пробовал те, что указаны в настройках сканера (на фото), уведомление в 1с не приходит. Logcat тоже прикрепил. Нажатие кнопки сканера в строках 10117-10229 (первые строки тоже оставил, вдруг там какая-то нужная информация). Сканер DataLogic DL-Axist.
Прикрепленные файлы:
logcat.zip
56. andrey314 10 25.10.17 10:27 Сейчас в теме
Подскажите по ПолучитьИДБазы(). Если например у меня в мобильном приложении несколько баз? Что я должен сюда передавать?
57. DMon 72 25.10.17 15:05 Сейчас в теме +10 $m
(56)
Не помню уже где это нашел, но писали очень хорошие люди, им спасибо!
Я получаю и записываю значение в константу.
На форме с константой, в НачалоВыбора пишем:

&НаКлиенте
Процедура ИдентификаторБазыНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
	
	СтандартнаяОбработка = Ложь;
	
	#Если МобильноеПриложениеКлиент Тогда
	СЗ = Новый СписокЗначений;
	
	Базы = Новый ЧтениеТекста ("/data/data/com.e1c.mobile/files/1C/1cem/ibases.v8i");
	Стр = Базы.ПрочитатьСтроку();
	_Имя = ""; _ИД = "";
	Пока Стр <> Неопределено Цикл 
		Если Лев(Стр, 1) = "[" Тогда
			_Имя = Стр;
		КонецЕсли;
		Если Лев(Стр, 3) = "ID=" Тогда
			_ИД = СтрЗаменить(Стр,"ID=","");
			СЗ.Добавить(_ИД,_Имя);
		КонецЕсли;
		Стр = Базы.ПрочитатьСтроку();	
	КонецЦикла;
	
	Эл = СЗ.ВыбратьЭлемент();
	НаборКонстант.ИдентификаторБазы = Эл.Значение;
	
	#КонецЕсли
КонецПроцедуры

Показать
savinsva; evgeny43; andrey314; +3 Ответить
58. andrey314 10 25.10.17 16:51 Сейчас в теме
59. gorevg 8 03.11.17 15:01 Сейчас в теме
А кто-нибудь на АТОЛ Smart.Droid смог запустить? Уже несколько дней вожусь. Функция ЗапуститьКомпонентуСканирования отрабатывает. Ошибок нет. Результат =77. Сканер пищит, что отсканировал, но до 1с не доходит...
60. DMon 72 03.11.17 17:05 Сейчас в теме
(59)
У формы
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
	Если ИмяСобытия = "1" И ВводДоступен() И НЕ флВводСН Тогда
		ПолученШтрихКод(Параметр);
	КонецЕсли;
КонецПроцедуры

Показать

что-то подобное прописано?

И ПриНачалеРаботыСистемы всё ли правильно описано?
проверьте ещё раз
62. Igel 6 09.11.17 13:22 Сейчас в теме
День добрый.
Кто может подсказать, а какой Broadcast ServiceSCAN_MESSAGE у ТСД CipherLab RS30 / RS50?
63. DMon 72 10.11.17 11:05 Сейчас в теме
(62) Есть встроенная утилита для управления сканером?
Если да - то в ней должно быть какое-то поле для тестирования что сканер работает.
Если да - то эта утилита является слушателем бродкаста и соответственно в ней прописано какой именно слушается.
Остается только достать эту утилиту с устройства (apk-файл), разобрать его и посмотреть.

З.Ы. Как разобрать - это уже другая тема.
65. VladimirMelnychenko 20.11.17 19:35 Сейчас в теме
(63)
утилиту

Добрый день.
Подскажите пожалуйста, как можно определить параметры "ServiceSCAN_MESSAGE" И "scan.rcv.message".
Разобрал apk родной утилиты (http://dropmefiles.com/gnrhx) не могу разобраться что именно искать.
Терминал SunLux XL-868.
118. user667563_kostix911 01.08.18 14:44 Сейчас в теме
(63)А можно по подробнее об этой теме, есть какой то мануал?
119. DMon 72 01.08.18 18:41 Сейчас в теме
(118) У гугла спросить как разобрать apk )
120. user667563_kostix911 05.08.18 15:57 Сейчас в теме
(119)APK то разобрал, но как определить ServiceSCAN_MESSAGE в исходных файлах? Смотрел манифест, думал брать имя receiver . Но так и не получилось.
64. Igel 6 10.11.17 12:56 Сейчас в теме
66. evgeny43 5 18.12.17 20:24 Сейчас в теме
Добрый вечер коллеги .

Скачал данное ПО .
Возникло несколько вопросов :
1) мобильное приложение в апк файл конвертировать не обязательно?
2)ни кто не знает какой бродкаст и поле со штрих кодом у Honeywell ScanPal EDA50K ?
Прикрепленные файлы:
67. evgeny43 5 18.12.17 22:15 Сейчас в теме
(66) хотя с 1 вопросом чет не подумал, отпадает, в противном случае нафиг идентификатор базы)
68. evgeny43 5 19.12.17 11:51 Сейчас в теме
(66) По второму вопросы , нашел часть информации, однако по прежнему не получается отловить бродкаст при помощи ПО

API GUID :
package sample.honeywell.com.intentapisample;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.view.menu.ActionMenuItemView;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {
    private static final String TAG = "IntentApiSample";
    private static final String ACTION_BARCODE_DATA = "com.honeywell.sample.action.BARCODE_DATA";
    /**
     * Honeywell DataCollection Intent API
     * Claim scanner
     * Package Permissions:
     * "com.honeywell.decode.permission.DECODE"
     */
    private static final String ACTION_CLAIM_SCANNER = "com.honeywell.aidc.action.ACTION_CLAIM_SCANNER";
    /**
     * Honeywell DataCollection Intent API
     * Release scanner claim
     * Permissions:
     * "com.honeywell.decode.permission.DECODE"
     */
    private static final String ACTION_RELEASE_SCANNER = "com.honeywell.aidc.action.ACTION_RELEASE_SCANNER";
    /**
     * Honeywell DataCollection Intent API
     * Optional. Sets the scanner to claim. If scanner is not available or if extra is not used,
     * DataCollection will choose an available scanner.
     * Values : String
     * "dcs.scanner.imager" : Uses the internal scanner
     * "dcs.scanner.ring" : Uses the external ring scanner
     */
    private static final String EXTRA_SCANNER = "com.honeywell.aidc.extra.EXTRA_SCANNER";
    /**
     * Honeywell DataCollection Intent API
     * Optional. Sets the profile to use. If profile is not available or if extra is not used,
     * the scanner will use factory default properties (not "DEFAULT" profile properties).
     * Values : String
     */
    private static final String EXTRA_PROFILE = "com.honeywell.aidc.extra.EXTRA_PROFILE";
    /**
     * Honeywell DataCollection Intent API
     * Optional. Overrides the profile properties (non-persistent) until the next scanner claim.
     * Values : Bundle
     */
    private static final String EXTRA_PROPERTIES = "com.honeywell.aidc.extra.EXTRA_PROPERTIES";

    private static final String EXTRA_CONTROL = "com.honeywell.aidc.action.ACTION_CONTROL_SCANNER";
    /*
        Extras
        "com.honeywell.aidc.extra.EXTRA_SCAN" (boolean): Set to true to start or continue scanning. Set to false to stop scanning. Most 

scenarios only need this extra, however the scanner can be put into other states by adding from the following extras.
        "com.honeywell.aidc.extra.EXTRA_AIM" (boolean): Specify whether to turn the scanner aimer on or off. This is optional; the default value 

is the value of EXTRA_SCAN.
        "com.honeywell.aidc.extra.EXTRA_LIGHT" (boolean): Specify whether to turn the scanner illumination on or off. This is optional; the 

default value is the value of EXTRA_SCAN.
        "com.honeywell.aidc.extra.EXTRA_DECODE" (boolean): Specify whether to turn the decoding operation on or off. This is optional; the 

default value is the value of EXTRA_SCAN
    */
    private static final String EXTRA_SCAN = "com.honeywell.aidc.extra.EXTRA_SCAN";

    private TextView textView;
    Button button;



    private BroadcastReceiver barcodeDataReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            Log.d("IntentApiSample: ","onReceive");
            if (ACTION_BARCODE_DATA.equals(intent.getAction())) {
/*
These extras are available:
"version" (int) = Data Intent Api version
"aimId" (String) = The AIM Identifier
"charset" (String) = The charset used to convert "dataBytes" to "data" string
"codeId" (String) = The Honeywell Symbology Identifier
"data" (String) = The barcode data as a string
"dataBytes" (byte[]) = The barcode data as a byte array
"timestamp" (String) = The barcode timestamp
*/
                int version = intent.getIntExtra("version", 0);
                if (version >= 1) {
                    String aimId = intent.getStringExtra("aimId");
                    String charset = intent.getStringExtra("charset");
                    String codeId = intent.getStringExtra("codeId");
                    String data = intent.getStringExtra("data");
                    byte[] dataBytes = intent.getByteArrayExtra("dataBytes");
                    String dataBytesStr="";
                    if(dataBytes!=null && dataBytes.length>0)
                        dataBytesStr = bytesToHexString(dataBytes);
                    String timestamp = intent.getStringExtra("timestamp");
                    String text = String.format(
                            "Dat a:%s\n" +
                                    "Charset:%s\n" +
                                    "Bytes:%s\n" +
                                    "AimId:%s\n" +
                                    "CodeId:%s\n" +
                                    "Timestamp:%s\n",
                            data, charset, dataBytesStr, aimId, codeId, timestamp);
                    setText(text);
                }
            }
        }
    };
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        textView = (TextView) findViewById(R.id.textView);
        button = (Button)findViewById(R.id.button);
        button.setText("Start Scan");
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                sendBroadcast(new Intent(EXTRA_CONTROL)
                    .putExtra(EXTRA_SCAN, true)
                );
            }
        });
        Log.d("IntentApiSample: ", "onCreate");
    }
    @Override
    protected void onResume() {
        super.onResume();
//        IntentFilter intentFilter = new IntentFilter("hsm.RECVRBI");
        registerReceiver(barcodeDataReceiver, new IntentFilter(ACTION_BARCODE_DATA));
        claimScanner();
        Log.d("IntentApiSample: ", "onResume");
    }
    @Override
    protected void onPause() {
        super.onPause();
        unregisterReceiver(barcodeDataReceiver);
        releaseScanner();
        Log.d("IntentApiSample: ", "onPause");
    }
    private void claimScanner() {
        Log.d("IntentApiSample: ", "claimScanner");
        Bundle properties = new Bundle();
        properties.putBoolean("DPR_DATA_INTENT", true);
        properties.putString("DPR_DATA_INTENT_ACTION", ACTION_BARCODE_DATA);
        sendBroadcast(new Intent(ACTION_CLAIM_SCANNER)
                .putExtra(EXTRA_SCANNER, "dcs.scanner.imager")
                .putExtra(EXTRA_PROFILE, "DEFAULT")// "MyProfile1")
                .putExtra(EXTRA_PROPERTIES, properties)
        );
    }
    private void releaseScanner() {
        Log.d("IntentApiSample: ", "releaseScanner");
        sendBroadcast(new Intent(ACTION_RELEASE_SCANNER));
    }
    private void setText(final String text) {
        if (textView != null) {
            runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    textView.setText(text);
                }
            });
        }
    }
    private String bytesToHexString(byte[] arr) {
        String s = "[]";
        if (arr != null) {
            s = "[";
            for (int i = 0; i < arr.length; i++) {
                s += "0x" + Integer.toHexString(arr[i]) + ", ";
            }
            s = s.substring(0, s.length() - 2) + "]";
        }
        return s;
    }
}

Код с сайта honeywell .

Информация по EDA50K
Yes, EDA50 supports broadcast mode and it need configure Settings->Scanning -> Internal Scanner -> Default Profile -> Data Processing Settings -> Data Editing Plugin->com.honeywell.sample.scanresultreceiver/.DataEditingPlugin, then customer application can receive scanned data via broadcast intent.


Общая информация по версиям андроид
How to use the Barcode Data Intent?
02.11.2017•HSM Article
ARTICLE NUMBER
000058703
QUESTION/PROBLEM
How to use the Barcode Data Intent?
APPLIES TO
Android 4.x, Android 6.x, Android 7.x
RESOLUTION
The Barcode Data Intent enables the reception and processing of barcode data without using an SDK or library.

The document DataCollectionIntentAPI_Guide.pdf has all the informations to use the Barcode Data Intent.

The attached sample code IntentApiSample shows the code usage for an Android application.

The lines
    ...
    private void claimScanner() {
        Log.d("IntentApiSample: ", "claimScanner");
        Bundle properties = new Bundle();
        properties.putBoolean("DPR_DATA_INTENT", true);
        properties.putString("DPR_DATA_INTENT_ACTION", ACTION_BARCODE_DATA);
        sendBroadcast(new Intent(ACTION_CLAIM_SCANNER)
                .putExtra(EXTRA_SCANNER, "dcs.scanner.imager")
                .putExtra(EXTRA_PROFILE, "DEFAULT")// "MyProfile1")
                .putExtra(EXTRA_PROPERTIES, properties)
        );
    }
...

will change the Internal Scanner settings to enable the Data Intent (properties.putBoolean("DPR_DATA_INTENT", true);) and set the Action to the registered Broadcast Receiver (properties.putString("DPR_DATA_INTENT_ACTION", ACTION_BARCODE_DATA);).
 
...
private static final String ACTION_BARCODE_DATA = "com.honeywell.sample.action.BARCODE_DATA";
...
    @Override
    protected void onResume() {
        super.onResume();
        registerReceiver(barcodeDataReceiver, new IntentFilter(ACTION_BARCODE_DATA));
        claimScanner();
        Log.d("IntentApiSample: ", "onResume");
    }

Depending on the device and CommonES installed, the Action value may have to be set manually. See "Settings" > "Scanning" > "Internal Scanner" > "Default profile" > "Data Processing Settings" > "Data Intent":
Показать
69. evgeny43 5 19.12.17 17:25 Сейчас в теме
(68) (66) наконец разобрался, что к чему , поле с байтовым значением кода "dataBytes" , а интент в данном случае, я задаю сам в настройках сканера,
и я указал scan.rcv.message, т.о сканер перестал сканировать в разрыв клавиатура и посылает сообщение по данному интенту , однако ПО по какой-то причине не перехватывает его.
 НовЗП = Новый ЗапускПриложенияМобильногоУстройства();
		НовЗП.Действие = "com.barcodeto1c.action";
		НовЗП.ДополнительныеДанные.Добавить("ServiceState","Start"); //что сделать: Старт/Стоп
		НовЗП.ДополнительныеДанные.Добавить("ServiceSCAN_MESSAGE","scan.rcv.message"); //чей бродкаст ловить
        НовЗП.ДополнительныеДанные.Добавить("ServiceBarCodeField","dataBytes"); //в каком поле сканер возвращает штрих-код (если не задавать - по умолчанию barocode, что в большинстве случаев оно так)
		НовЗП.ДополнительныеДанные.Добавить("ServiceEventID","1"); //категория сообщение для 1С
		НовЗП.ДополнительныеДанные.Добавить("ServiceToast","Service STARTED!");//(не обязательно) просто покажет Тост при успехе
		НовЗП.ДополнительныеДанные.Добавить("ServiceBase_Name","");//если одна база - можно поставить ""
		Результат = НовЗП.Запустить(Истина);
		
		Если НЕ Результат = 77 Тогда
             //тут можно отловить что что-то не так. Возможно апк не установлена или что-то не сработало
		КонецЕсли;
Показать

в чем может быть дело?

Версия мобильной платформы 8.3.9.74 ----- программа запускается через типовую мобильной платформу 1с(т.е не apk файл) .
Danil.Potapov; +1 Ответить
70. evgeny43 5 21.12.17 09:31 Сейчас в теме
Вопрос решился. данная модель , хотя и передает байтовое поле "dataBytes", но по какой то причине оно не преобразует его в строку для отправки в 1с.
Решался вопрос следующим образом: обработка была переписана на прием поле data в котором передается уже строковое представление штрих кода.
Для работы сканера данного устройства необходимы следующие настройки:
Меню Настройки->scanning->Internal Scanner-> тут либо в "default profile" делаете настройки, либо создаете новый профиль для 1с -> data processing settings-> тут нас интересуют следующие поля:
1)Scan to intent ставим галочку
2)Data intent ставим галочку , и проваливаемся в настройки данного поля.
настройки Data intent :
Action(поле отвечающие за наименование интента которое отправит сканер ) - тут я прописал scan.rcv.message .
остальные поля я не заполнял.



если кому интересно в коде андроид приложения я замел следующую строку :
public void onReceive(Context context, Intent intent) {
byte[] barcode = intent.getByteArrayExtra("barocode");-------->String barcode=intent.getStringExtra("data");
int lng = intent.getIntExtra("length", 0);
this.barcodeStr = new String(barcode, 0, lng);------> this.barcodeStr =barcode;
if (lng > 0) { /// данное условие в принципе должно работать, но у себя я его убрал, т.к сканер либо передает данные если считал все хорошо, либо нет.
Intent intentFor1C = new Intent("com.google.android.c2dm.intent.RECEIVE");
intentFor1C.putExtra("text", BCService.EventID);
intentFor1C.putExtra("title", "1C");
intentFor1C.putExtra("data", this.barcodeStr);
if (BCService.BaseName != null || BCService.BaseName != "") {
intentFor1C.putExtra("base", BCService.BaseName);
}
context.sendBroadcast(intentFor1C);
}
}
temsan; Danil.Potapov; +2 Ответить
98. s.neumyvakin_2015 09.06.18 09:11 Сейчас в теме
(70) Добрый день!
Нам тоже привезли ТСД Honeywell. Не могли бы вы прислать переделанное андроид приложение?
99. evgeny43 5 09.06.18 18:02 Сейчас в теме
(98) Добрый вечер. оно есть в этой теме в 76 сообщении
102. Lupeykin 29.06.18 10:18 Сейчас в теме
8.3.10.51 это работало
на 8.3.12.67 больше не прокатывает
Intent intentFor1C = new Intent("com.google.android.c2dm.intent.RECEIVE");
intentFor1C.putExtra("text", BCService.EventID);
intentFor1C.putExtra("title", "1C");
intentFor1C.putExtra("data", this.barcodeStr);

изминили манифест разработчики, 1с, непонятно теперь как отдать платформе ШК
121. arcadics 7 21.08.18 01:22 Сейчас в теме
(70)
dataBytes


что если перебрать поля вот этим кодом:

Bundle extras = intent.getExtras();
Set<String> ks = extras.keySet();
Iterator<String> iterator = ks.iterator();
while (iterator.hasNext()) {
Log.d("MyActivity", iterator.next());
}

у меня результат:
dataBytes -- > необходимый массив
data --> штрих код в String
timestamp
aimId
version
charset
scanner

int lng = intent.getIntExtra("length", 0); //работать не будет т.к. поля нет
использовать int barocodelen = barocode.length;

если вычислить имя массива dataBytes останиться только указать в настройках имя интента "scan.rcv.message" и должно работать на всех ТСД
evgeny43; +1 Ответить
122. evgeny43 5 21.08.18 09:56 Сейчас в теме
(121)
dataBytes

Спасибо, полезная информация, когда то до этого сам доходил, но уже забыл.
Как раз собирался вспомнить как получить все поля интента )
71. Just_J 11.01.18 12:06 Сейчас в теме
Добрый день.

При запуске приложения перехвата из 1С оно возвращает 0, не подскажите что означает код возврата 0?
72. DMon 72 11.01.18 19:58 Сейчас в теме
(71) Значит не запустилось. Проверьте правильность запуска.
Корректный старт делает выход по инструкции

setResult(77);

иначе - всё что угодно, но не 77
73. Just_J 12.01.18 08:33 Сейчас в теме
(72) Это может быть связано с неправильными передаваемыми параметрами в сервис? или же это проблема моего устройства?
74. DMon 72 12.01.18 12:06 Сейчас в теме
(73) Напишите как вы передаете параметры, какое устройство, версия Android?
Поподробнее пожалуйста)
75. Just_J 15.01.18 08:43 Сейчас в теме
(74)ТСД:

zebra tc700h
android 4.4.3
На устройстве есть предустановленное приложение datawedge в нем можно настроить имя и категорию интента.

1С мобильная платформа 8.3.11.57.

Запускаю ваше приложение кодом взятым из этой темы. При запуске без ИД базы т.е. параметр ServiceBase_Name = "" приложение возвращает 0, если же указать ИД базы то оно запускается возвращает 77, но сообщения сканера не ловит.
76. evgeny43 5 15.01.18 10:40 Сейчас в теме
Попробуй для чипер лаба эту прогу.
просто для работы чип. лаба. мне пришлось вшивать в проект драйвер , который я нашел на самом тсд.
тролько она не работает как сервис после установки , как в этой теме , необходимо 1 раз зарегестрировать и все .
на код не обращай внимаения, просто писал под несколько разных тсд и решил все действия назвать com.HoneywellScan.action.

Процедура РегистрацияБазыВСканереHoneyWell()
	#Если МобильноеПриложениеКлиент  тогда
        НовЗП = Новый ЗапускПриложенияМобильногоУстройства();
		НовЗП.Действие="com.HoneywellScan.action";
		НовЗП.ДополнительныеДанные.Добавить("IdBase",ИдентификаторБазыНачалоВыбора()); //что сделать: Старт/Стоп
		Результат = НовЗП.Запустить(Истина);
	#КонецЕсли	
КонецПроцедуры

данная разработка так же подходит для тсд который я описал выше .









////////////////////////////////////////////////////////////­////
весь код с утановкой 
&НаКлиенте
Процедура УстановкаДрайверовШтрихКода()Экспорт 
	Если СлужебныеФункцииИПроцедурыКлиентСервер.КомпанентаСканированияУстановлена() тогда
		Возврат
	КонецЕсли;	
	
	МассивДрайверов=новый Массив;
	МассивДрайверов.Добавить("BarcodeHoneywell");
	

	 для Каждого ИмяМакета из  МассивДрайверов цикл
	//Если ДанныеДрайвера.ИнтеграционноеПриложение Тогда
	//	// Получение макета с сервера
	СсылкаНаФайл = СлужебныеФункцииИПроцедурыКлиентСервер.ПолучитьМакетДрайвера(ИмяМакета);
	ИмяФайлаВрем = ИмяМакета + ".apk";
	ВременныйКаталог = КаталогВременныхФайлов();
	Если ПолучитьФайл(СсылкаНаФайл, ВременныйКаталог + ИмяФайлаВрем, Ложь) Тогда
		ЗапуститьПриложение(ВременныйКаталог + ИмяФайлаВрем, , Истина);
		СлужебныеФункцииИПроцедурыКлиентСервер.ПодтвердитьУстановкуКомпаненты();
	Иначе
		ТекстОшибки = НСтр("ru='Ошибка установки драйвера.'");
		Сообщить(ТекстОшибки); 
	КонецЕсли;
	КонецЦикла;
////// до этого момента происходит установка
РегистрацияБазыВСканереHoneyWell();////// разовая регистрация (если база для которой используется драйвер меняется, то 
  ///регистрацию надо перезапускать от другой базы.
КонецПроцедуры
	
Функция ПолучитьМакетДрайвера(ИмяМакета) Экспорт
	
	Возврат ПоместитьВоВременноеХранилище(ПолучитьОбщийМакет(ИмяМакета));
	
КонецФункции

	
	
Процедура РегистрацияБазыВСканереHoneyWell()
	#Если МобильноеПриложениеКлиент  тогда
        НовЗП = Новый ЗапускПриложенияМобильногоУстройства();
		НовЗП.Действие="com.HoneywellScan.action";
		НовЗП.ДополнительныеДанные.Добавить("IdBase",ИдентификаторБазыНачалоВыбора()); //что сделать: Старт/Стоп
		Результат = НовЗП.Запустить(Истина);
	#КонецЕсли	
КонецПроцедуры
Показать



СлужебныеФункцииИПроцедурыКлиентСервер.КомпанентаСканированияУстановлена() и СлужебныеФункцииИПроцедурыКлиентСервер.ПодтвердитьУстановкуКомпаненты(); запись чтение константы в базе, о том что я уже установил драйвер и больше этого делать не надо.
Прикрепленные файлы:
BarcodeAndroid_1.3.apk
107. hobi 523 13.07.18 10:06 Сейчас в теме
(76)
Добрый день.
При запуске компоненты сканирования (BarcodeAndroid_1.3.apk)
отображается картинка с роботом и заголовком "BarcodeAndroid"
Как её убрать ?
108. evgeny43 5 13.07.18 14:05 Сейчас в теме
(107)
Нажать на клавиатуре андроид(Navigation bar) назад, или закрыть как обычное приложение, на работу повлиять не должно, т.к оно работает и в офф-лайн режиме .
в моем случае мне необходимо его установить 1 раз для 1 базы(иногда переключить на другую, но редко), поэтому я особо не заморачивался с серверной регистрацией в по (другими словами с регистрацией без вызова интерфейса ).
109. hobi 523 13.07.18 16:35 Сейчас в теме
(108)
Да, на работу не влияет.
Только на нервы действует )
110. evgeny43 5 13.07.18 17:55 Сейчас в теме
(109)
Ну если часто переключаться между базами, то да)) тут лучше подойдет решение DMon , если просто то в андроид студии , есть механизмы похожие на 1с в упр. приложении , где ты можешь поместить во временное хранилище данные под уникальный идентификатор формы - делаю приблизительно тоже самое , только данные не исчезают после закрытия формы . Влом было разбираться как сохранить по другому и так андроид программирование с 0 изучал под текущую задачу) мб, когда появится время или перейду на стадию модернизации приложения, которое пишу, улучшу и драйвер до более юзабильного вида)
77. evgeny43 5 15.01.18 11:12 Сейчас в теме
&НаКлиенте
Функция  ИдентификаторБазыНачалоВыбора()
	
	СтандартнаяОбработка = Ложь;
	
	#Если МобильноеПриложениеКлиент Тогда
		СЗ = Новый СписокЗначений;
		
		Базы = Новый ЧтениеТекста ("/data/data/com.e1c.mobile/files/1C/1cem/ibases.v8i");
		Стр = Базы.ПрочитатьСтроку();
		_Имя = ""; _ИД = "";
		Пока Стр <> Неопределено Цикл 
			Если Лев(Стр, 1) = "[" Тогда
				_Имя = Стр;
			КонецЕсли;
			Если Лев(Стр, 3) = "ID=" Тогда
				_ИД = СтрЗаменить(Стр,"ID=","");
				СЗ.Добавить(_ИД,_Имя);
			КонецЕсли;
			Стр = Базы.ПрочитатьСтроку();    
		КонецЦикла;
		Эл = СЗ.ВыбратьЭлемент();
		Возврат Эл.Значение;
		
	#КонецЕсли
КонецФункции 
Показать

это уже было описанно в данной теме Dmitry Po (DMon) ( за что ему спасибо)
78. Shef_zeon 7 15.01.18 14:55 Сейчас в теме
Подскажите что делать если сканер возвращает
(String)intent.getStringExtra("EXTRA_BARCODE_DECODED_DATA")
79. DMon 72 16.01.18 12:47 Сейчас в теме
(78) по идее это будет ServiceBarCodeField

НовЗП.ДополнительныеДанные.Добавить("ServiceBarCodeField","EXTRA_BARCODE_DECODED_DATA"); //в каком поле сканер возвращает штрих-код
80. evgeny43 5 18.01.18 13:59 Сейчас в теме
(78)
попробуй мою обработку
это у мобил байза такой интент и у хоновела похожий маунал, однако в итоге оказалось, что сам интент настраивается в настройках , а поле которое возвращается data типа srting

собери всю информацию что я писал выше и попробуй, или просто попробуй установить обработку в комментариях мою
81. Shef_zeon 7 22.01.18 14:50 Сейчас в теме
Спасибо
получилась такая модификация

if (BCService.TypeBarCodeField.equalsIgnoreCase("string"))
{
barcodeStr=paramIntent.getStringExtra(BCService.BarCodeField);
//"EXTRA_BARCODE_DECODED_DATA"
lng = paramIntent.getIntExtra("EXTRA_BARCODE_DECODED_SYMBOLE", -1)+1; }
else
{
byte[] barcode = paramIntent.getByteArrayExtra(BCService.BarCodeField);
lng = paramIntent.getIntExtra("length", 0);
barcodeStr = new String(barcode, 0, lng);
}
82. ludmirsky 23.01.18 17:17 Сейчас в теме
Дмитрий,

спасибо за проделанную работу, но мы пока так и не смогли заставить работать сканер.

Вот в документации от Zebra написано о параметрах в Intent: http://techdocs.zebra.com/datawedge/6-2/guide/setup/#decoderelateddata

Можно ли что-то сделать, чтобы сервис заработал?

Пробовали:
НовЗП.ДополнительныеДанные.Добавить("ServiceBarCodeField","data_string");
и
НовЗП.ДополнительныеДанные.Добавить("ServiceBarCodeField","com.symbol.datawedge.data_string");
83. Rokstedi 17 05.02.18 10:29 Сейчас в теме
Добрый день коллеги. Подскажите, все таки сканер должен работать в режиме эмуляции клавиатуры или в режиме эмуляции COM?
84. DMon 72 05.02.18 18:15 Сейчас в теме
(83) в режиме эмуляции COM
Rokstedi; +1 Ответить
85. Rokstedi 17 11.02.18 22:59 Сейчас в теме
(84)Сканер symbol ls2208. Подключаю к планшету через usb otg переходник. Сканер настроен в режиме cdc. Logcat молчит как партизан. Что делать?
86. DMon 72 15.02.18 12:54 Сейчас в теме
(85) Сложно сказать не имея оборудование под рукой. Компонента для ТСД, а не внешних сканеров.
Надо только экспериментировать.
87. hobi 523 06.03.18 15:51 Сейчас в теме
Добрый день.
При работе с ТСД Honeywall EDA50 (Android 7.1.1) сервис вылетает с ошибкой:
'В работе приложения BarCode_to_1C' by DMondi произошел сбой.

В настройках ТСД установлены флаги:
- Scan To Intent
- Data Intent
Для Data Intent в поле Action указано: scan.rcv.message , остальные поля не заполнены
88. DMon 72 06.03.18 20:32 Сейчас в теме
(87) Александр, на 7.1.1 не тестировалось приложение.
Чтоб отладить (или хотя бы просмотреть logcat), подходящего устройства нет, а эмулятор - совсем не вариант.

При всем желании ничем помочь не могу.
В будущем компания планирует закупить ТСД с андроид 7, но когда это будет пока не известно.
Оставьте свое сообщение