Чтение медполиса на киоске

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Андрей
Старожил
Сообщения: 263
Зарегистрирован: 30 Октябрь 2005, 3:58

Чтение медполиса на киоске

Сообщение Андрей » 08 Август 2019, 3:31

Взялся вот за реализацию инфокиоска, а сам не имел дела ни с сенсорными киосками, ни со считывателями. Не знаю, что выйдет из всей этой затеи...
Вот скажем такой вопрос - как считать полис с ШК ?
Сам то ШК полиса не понял - что это ? Вроде и не одномерный и не QR ?
Polis.jpg

Взял сканер с поддержкой 2D, начал тренироваться. Для контроля платежку энергосбыта параллельно сканирую. При работе как родное USB устройство, платежка нормально считывается, только кодировка не русская (как это поправить ?) При считывании полиса читается строка кракозябр. Ежели переключаюсь на эмуляцию COM устройства, дело становится хуже: из платежки считывается только начало, а при попытке считать полис вообще происходит хрень какая то - система нервно реагирует, открывая несколько левых окон, включая режим поиска и т.д.

Запросить информацию из страховой копании о структуре ? А что спросить то ?

И еще вопрос - это у меня сейчас ручное устройство, а в киоске как сканер включать в нужный момент ?
Есть еще устройство считывания смарт-карт, но что то он вообще не читает этого полиса... может и не должен ? С чипом он или нет ?

Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 4295
Зарегистрирован: 07 Июль 2005, 9:19
Откуда: г. Ростов-на-Дону

Чтение медполиса на киоске

Сообщение Игорь Столяров » 08 Август 2019, 4:46

Насколько я вижу по смутному изображению Вашего кода - он в формате PDF-417.
А значит полученная со сканера строка будет в кодировке UTF8, и после считывания её нужно конвертировать в ANSI.
«V» значит Вендетта !

Андрей
Старожил
Сообщения: 263
Зарегистрирован: 30 Октябрь 2005, 3:58

Чтение медполиса на киоске

Сообщение Андрей » 08 Август 2019, 10:29

Игорь Столяров писал(а):
08 Август 2019, 4:46
Насколько я вижу по смутному изображению Вашего кода - он в формате PDF-417.
А значит полученная со сканера строка будет в кодировке UTF8, и после считывания её нужно конвертировать в ANSI.
Перекодирование, это типа как у Kreator нашел кусок кода

Код: Выделить всё

LOC:TempString = 'Кларион велик' 
len# = len(clip(LOC:TempString))
LOC:String1 &= new(cstring(len# * 2))
LOC:String2 &= new(cstring(len# * 2))
i# = MultiByteToWideChar(CP_ACP, 0, address(LOC:TempString), len#, address(LOC:String2), len#*2)
if i#
  i# = WideCharToMultiByte(CP_UTF8, 0, address(LOC:String2), i#, address(LOC:String1), len#*2, 0, 0)
  LOC:QRCode = GetQRCode(LOC:String1)
end  
?
Смущает, что в этой получееной строке кракозябр не вижу главного - так называемого ЕНП (единого номера полиса) - 16 разр. числа, он то должен без перекодировки виден ?

Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 4295
Зарегистрирован: 07 Июль 2005, 9:19
Откуда: г. Ростов-на-Дону

Чтение медполиса на киоске

Сообщение Игорь Столяров » 08 Август 2019, 11:02

Андрей писал(а):
08 Август 2019, 10:29
Перекодирование, это типа как у Kreator нашел кусок кода
1. Наоборот. Указанный пример перекодирует ANSI строку в UTF8 для генерации из неё QRCode. :)

2. Абсолютно верно, числа и латинские символы должны быть видны в UTF8 и без перекодировки.
Здесь нужно смотреть документацию, что именно и в каком виде закодировано в замыленном Вами коде.
Иногда бывает, например, ещё и кодировка в BASE64 - тогда будет потоковая строка латино-цифровых символов,
или информация в строке может быть упакована в ZIP формат или зашифрована ключом с ЭЦП и т.д.
«V» значит Вендетта !

kreator
✯ Ветеран ✯
Сообщения: 3455
Зарегистрирован: 28 Май 2009, 14:54
Откуда: Москва

Чтение медполиса на киоске

Сообщение kreator » 08 Август 2019, 11:26

Я как раз с инфокиосками и считывателями работал. Надо начать с простого. Где-то тут была либа для создания кода в PDF-417. Самому посоздавать и посчитывать. Числа в UTF8 не надо перекодировать. Впрочем как и латиницу. Есть ещё вариант, что сама информация в коде зашифрована. Но это маловероятно.
Вообще, со считывателем (в т.ч. с бесконтактным) я начинал работать так. Подключал его как клавиатуру (обычно в драйвере есть такая опция, некоторые устройства на автомате как клавиатуры встают). В Винворде пытался считывать инфу и смотрел, на что похоже.
Работа "через клавиатуру" проще. Но есть нюансы. Через com вроде тоже проблем нет, непонятно поведение Вашей проги. Надо смотреть Com-класс, или что там у Вас.
Как включать сканер? Не скажу. Имел дело с постоянно работающими. В определённый момент начинаем слушать порт и всё. С "клавиатурным" отдельный разговор. На некоторых устройствах есть такое, в определённый момент начинает мигать считыватель денег, или карточек. Но считыватель штрих-кода работает всегда. Могу ошибаться. В принципе, в com-порт можно писать. И наверняка есть команды, которые приводят эти устройства в рабочее состояние.
We are hard at work… for you. :)

gopstop2007
✯ Ветеран ✯
Сообщения: 1287
Зарегистрирован: 25 Март 2009, 21:55

Чтение медполиса на киоске

Сообщение gopstop2007 » 08 Август 2019, 15:19

kreator писал(а):
08 Август 2019, 11:26
Подключал его как клавиатуру
может поможет https://habr.com/ru/company/scanport/blog/351374/
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп

kreator
✯ Ветеран ✯
Сообщения: 3455
Зарегистрирован: 28 Май 2009, 14:54
Откуда: Москва

Чтение медполиса на киоске

Сообщение kreator » 08 Август 2019, 18:02

gopstop2007 писал(а):
08 Август 2019, 15:19
kreator писал(а):
08 Август 2019, 11:26
Подключал его как клавиатуру
может поможет https://habr.com/ru/company/scanport/blog/351374/
Наверняка с оборудованием ТС определился. Мой опыт - Киоск со стационарным сканером штрих-кодов (USB с эмуляцией com-порта) и с нестационарным бесконтактным считывателем магнитных карт (USB с эмуляцией клавиатуры). Так решил заказчик. Почему? ХЗ. Бесконтактный считыватель автоматически встаёт как клавиатура. Боюсь даже изменить в драйвере это нельзя. Решение заказчика. Зато теперь есть опыт работы и с com-портом и с клавой.
We are hard at work… for you. :)

Аватара пользователя
Дед Пахом
Старичок
Сообщения: 2314
Зарегистрирован: 07 Июль 2005, 15:51
Откуда: Москва, Россия

Чтение медполиса на киоске

Сообщение Дед Пахом » 08 Август 2019, 18:17

kreator писал(а):
08 Август 2019, 18:02
Зато теперь есть опыт работы и с com-портом и с клавой.
И для резюме сгодится: "имею опыт работы с клавиатурой".
С уважением, ДП

Андрей
Старожил
Сообщения: 263
Зарегистрирован: 30 Октябрь 2005, 3:58

Чтение медполиса на киоске

Сообщение Андрей » 09 Август 2019, 1:43

А это, что то не понял...
В хелпе есть функция TOANSI... Она чтоль не работает еще ?
Зачем в хелпе тогда людей путать... хм...

Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 4295
Зарегистрирован: 07 Июль 2005, 9:19
Откуда: г. Ростов-на-Дону

Чтение медполиса на киоске

Сообщение Игорь Столяров » 09 Август 2019, 6:23

Андрей писал(а):
09 Август 2019, 1:43
В хелпе есть функция TOANSI... Она чтоль не работает еще ?
Работает. Но редко используется УЖЕ.
Потому, что полное название функции CONVERTOEMTOANSI и предназначена она для смены кодировки DOS на Windows(-1251).
Лет, этак 15-20 назад постоянно ею гоняли данные из старых файлов обмена … :)
«V» значит Вендетта !

kreator
✯ Ветеран ✯
Сообщения: 3455
Зарегистрирован: 28 Май 2009, 14:54
Откуда: Москва

Чтение медполиса на киоске

Сообщение kreator » 09 Август 2019, 10:54

Нет, Игорь, это не то. Это похоже новые функции. TOANSI и TOUNICODE. Именно для конвертации в Юникод и обратно. Андрей, попробуйте, результат расскажите. Может, действительно, больше не надо заниматься проктостоматологией.
We are hard at work… for you. :)

Аватара пользователя
Дед Пахом
Старичок
Сообщения: 2314
Зарегистрирован: 07 Июль 2005, 15:51
Откуда: Москва, Россия

Чтение медполиса на киоске

Сообщение Дед Пахом » 09 Август 2019, 11:02

kreator писал(а):
09 Август 2019, 10:54
Это похоже новые функции. TOANSI и TOUNICODE.
Пока они есть только в хелпе.
С уважением, ДП

kreator
✯ Ветеран ✯
Сообщения: 3455
Зарегистрирован: 28 Май 2009, 14:54
Откуда: Москва

Чтение медполиса на киоске

Сообщение kreator » 09 Август 2019, 11:05

В десятке их нет.
Дед Пахом писал(а):
09 Август 2019, 11:02
Пока они есть только в хелпе.
Следовало ожидать!
We are hard at work… for you. :)

Андрей
Старожил
Сообщения: 263
Зарегистрирован: 30 Октябрь 2005, 3:58

Чтение медполиса на киоске

Сообщение Андрей » 14 Август 2019, 9:21

Отступился пока от сканера, странный какой то ШК - сканер начинает получает какие то управляющие символы что ли - начинают окна новые открываться и прочая самостоятельная жизни при попытке чтения....
Подключился к считывателю, раздобыл пластиковый полис с чипом (то что было у меня оказывается "сервисная карта" - просто аналог бумажки). Прверяю этот полис на таком же считывателе в МИС (мед. инф. система) в регистратуре Advanced Card Systems ACR 38U, думаю весьма популярном. Там все работает, начинает мигать зел. светодиодом, идентификация пациента происходит. У меня что-то не читает - должен ли так же считавать напрямую в текстовом редакторе, ка и сканер ШК ? Драйвер что ли криво встает - в руководстве есть по настройке
ACR38.jpg
однако у меня нет никакой закладки "Reader". Как перевести его в режим эмуляции клавиатуры ? Отключил режим цифровой подписи, однако все равно "Не удается проверить цифровую подпись" в драйвере - или это не критично ?

kreator
✯ Ветеран ✯
Сообщения: 3455
Зарегистрирован: 28 Май 2009, 14:54
Откуда: Москва

Чтение медполиса на киоске

Сообщение kreator » 14 Август 2019, 10:40

Если не встаёт как клавиатура, читайте через порт. Можно же узнать что считывается? Не важно, сканер ли, считыватель ли.
Мне непонятно, окна в Вашей программе открываются? Или Винда так работает?
We are hard at work… for you. :)

Ответить