Формирование штрих-кода льготного рецепта
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Формирование штрих-кода льготного рецепта
Добрый день
Помогите пожалуйста решить проблему
Для печать штрих-кода необходимо в соответствии с алгоритмом
Перевести все данные включаемые в штрих-код в битовую последовательность
например:
ОГРН ЛПУ 1022402655159 необходимо перевести в битовую последовательность длиной 50 бит
Источник финансирования 1 в битовую последовательность длиной 2 бита
и так далее
Если кто делал это подскажите пожалуйста как это можно сделать?
Стандартными средствами или сторонними шаблонами или библиотеками?
Clarion 5.5
Помогите пожалуйста решить проблему
Для печать штрих-кода необходимо в соответствии с алгоритмом
Перевести все данные включаемые в штрих-код в битовую последовательность
например:
ОГРН ЛПУ 1022402655159 необходимо перевести в битовую последовательность длиной 50 бит
Источник финансирования 1 в битовую последовательность длиной 2 бита
и так далее
Если кто делал это подскажите пожалуйста как это можно сделать?
Стандартными средствами или сторонними шаблонами или библиотеками?
Clarion 5.5
- Admin
- Администратор
- Сообщения: 3959
- Зарегистрирован: 05 Июль 2005, 15:59
- Откуда: Хабаровск
- Благодарил (а): 25 раз
- Поблагодарили: 22 раза
- Контактная информация:
Формирование штрих-кода льготного рецепта
Очень интересен код который 24 байта в 50 бит закодирует
Может все таки ID нужно кодировать а не название?
О каком штрихкоде идет речь, агоритм какой?
И вообще немного задачу опишите.
Может все таки ID нужно кодировать а не название?
О каком штрихкоде идет речь, агоритм какой?
И вообще немного задачу опишите.
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
Формирование штрих-кода льготного рецепта
Кодировать надо только цифры конечно
Необходимо печатать из программы на Clarione бланк льготного рецепта
в нем есть штрих-код в PDF-417
Описание алгоритма формирования во вложенном файле
Как напечатать и закодировать в base64 я знаю не получается создать правильную по битам последовательность
Необходимо печатать из программы на Clarione бланк льготного рецепта
в нем есть штрих-код в PDF-417
Описание алгоритма формирования во вложенном файле
Как напечатать и закодировать в base64 я знаю не получается создать правильную по битам последовательность
- Вложения
-
- shtrih.pdf
- (155.38 КБ) 840 скачиваний
- Admin
- Администратор
- Сообщения: 3959
- Зарегистрирован: 05 Июль 2005, 15:59
- Откуда: Хабаровск
- Благодарил (а): 25 раз
- Поблагодарили: 22 раза
- Контактная информация:
Формирование штрих-кода льготного рецепта
Ну если двоичный вид то наверное...
Код: Выделить всё
PROGRAM
MAP
IntToBin(LONG N, LONG Extend),STRING
END
CODE
! N число для преобразования в биты
! Extend - расширить число до Extend бит (дописать нули в начало)
MESSAGE(IntToBin(32768,50))
IntToBin FUNCTION(LONG N, LONG Extend)!,STRING
Result STRING(1024)
P LONG
CODE
P = N
Result = ''
LOOP WHILE P > 0
Result = P % 2 & CLIP(Result)
P = P / 2
END
Result = ALL('0', Extend-LEN(CLIP(Result))) & CLIP(Result)
RETURN CLIP(Result)
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
-
- ✯ Ветеран ✯
- Сообщения: 4982
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 7 раз
- Поблагодарили: 20 раз
Формирование штрих-кода льготного рецепта
Вот здесь внешняя библиотека для формирования pdf-417 - http://forum.clarionlife.net/phpbb/view ... f=1&t=2969. Всё делает сама.
We are hard at work… for you.
Формирование штрих-кода льготного рецепта
Добрый день
Предложенные варианты не совсем подходят т. к.
в переменную LONG для преобразования можно записать только 10 цифр
а код ОГРН и СНИЛС содержат 13 и 11 цифр
если согласно алгоритма преобразовать дозировку из символов в код ASCII то получается очень длинное число
например гранулы пролонг.п/о кш/раств.1000мг N50
получается 208 179 209 128 208 176 208 189 209 131 208 187 209 139 32 208 191 209 128 208 190 208 187 208 190 208 189 208 179 46 208 191 47 208 190 32 208 186 209 136 47 209 128 208 176 209 129 209 130 208 178 46 49 48 48 48 208 188 208 179 32 78 53 48
Если в функции IntToBin(LONG N , LONG Extend),STRING заменить на IntToBin(DECIMAL N, DECIMAL Extend),STRING
то при компиляции выходит ошибка invalid dta type for value parameter
Предложенные варианты не совсем подходят т. к.
в переменную LONG для преобразования можно записать только 10 цифр
а код ОГРН и СНИЛС содержат 13 и 11 цифр
если согласно алгоритма преобразовать дозировку из символов в код ASCII то получается очень длинное число
например гранулы пролонг.п/о кш/раств.1000мг N50
получается 208 179 209 128 208 176 208 189 209 131 208 187 209 139 32 208 191 209 128 208 190 208 187 208 190 208 189 208 179 46 208 191 47 208 190 32 208 186 209 136 47 209 128 208 176 209 129 209 130 208 178 46 49 48 48 48 208 188 208 179 32 78 53 48
Если в функции IntToBin(LONG N , LONG Extend),STRING заменить на IntToBin(DECIMAL N, DECIMAL Extend),STRING
то при компиляции выходит ошибка invalid dta type for value parameter
- Admin
- Администратор
- Сообщения: 3959
- Зарегистрирован: 05 Июль 2005, 15:59
- Откуда: Хабаровск
- Благодарил (а): 25 раз
- Поблагодарили: 22 раза
- Контактная информация:
Формирование штрих-кода льготного рецепта
Да. Чисто под LONG написал.
Для STRING и соответственно больших чисел нужно по другому писать.
Гуглить string to bin и разбираться.
Для STRING и соответственно больших чисел нужно по другому писать.
Гуглить string to bin и разбираться.
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
- Admin
- Администратор
- Сообщения: 3959
- Зарегистрирован: 05 Июль 2005, 15:59
- Откуда: Хабаровск
- Благодарил (а): 25 раз
- Поблагодарили: 22 раза
- Контактная информация:
Формирование штрих-кода льготного рецепта
На самом деле нужно функцию BSHIFT для строки.
Но в Clarion она работает только с LONG.
Но в Clarion она работает только с LONG.
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
Формирование штрих-кода льготного рецепта
Добрый день.
Может это из другой оперы, но могу поделиться – совсем недавно занимался штрих-кодом pdf 417 и тоже из области медицины (штрих код на бумажных полисах обязательного медицинского страхования).
По спецификации shtrih.pdf СНИЛС - 37 бит. В строку включаются только цифры СНИЛС.
Если делать по аналогии с полисом, то СНИЛС – например 166-378-589 22 (последние две цифры это его контрольная сумма) преобразовывается в большое число 16637858922 которое в шестнадцатеричном виде выглядит как 03 DF B1 94 6A соответственно занимает всего 5 байт и если проверить 1111011111101100011001010001101010 – 34 бита.
Буквы в полисе, ф.и.о. например, вообще кодируются 6 битными сегментами по специальной таблице.
Может это из другой оперы, но могу поделиться – совсем недавно занимался штрих-кодом pdf 417 и тоже из области медицины (штрих код на бумажных полисах обязательного медицинского страхования).
По спецификации shtrih.pdf СНИЛС - 37 бит. В строку включаются только цифры СНИЛС.
Если делать по аналогии с полисом, то СНИЛС – например 166-378-589 22 (последние две цифры это его контрольная сумма) преобразовывается в большое число 16637858922 которое в шестнадцатеричном виде выглядит как 03 DF B1 94 6A соответственно занимает всего 5 байт и если проверить 1111011111101100011001010001101010 – 34 бита.
Буквы в полисе, ф.и.о. например, вообще кодируются 6 битными сегментами по специальной таблице.
в стране слепых правит одноглазый король (c) ...
Формирование штрих-кода льготного рецепта
Если не трудно пришлите исходники можно в личку.AlesDales писал(а):Добрый день.
Может это из другой оперы, но могу поделиться – совсем недавно занимался штрих-кодом pdf 417 и тоже из области медицины (штрих код на бумажных полисах обязательного медицинского страхования).
По спецификации shtrih.pdf СНИЛС - 37 бит. В строку включаются только цифры СНИЛС.
Если делать по аналогии с полисом, то СНИЛС – например 166-378-589 22 (последние две цифры это его контрольная сумма) преобразовывается в большое число 16637858922 которое в шестнадцатеричном виде выглядит как 03 DF B1 94 6A соответственно занимает всего 5 байт и если проверить 1111011111101100011001010001101010 – 34 бита.
Буквы в полисе, ф.и.о. например, вообще кодируются 6 битными сегментами по специальной таблице.
Спасибо за помощь
Формирование штрих-кода льготного рецепта
Admin писал(а):На самом деле нужно функцию BSHIFT для строки.
Но в Clarion она работает только с LONG.
Если не затруднит объясните пожалуйста, как с помощью функции BSHIFT получить из числа определённое количество бит
Например число 456789 перевести в двоичный вид длинной 25 бит дополнив слева 0 до необходимого размера.
- Admin
- Администратор
- Сообщения: 3959
- Зарегистрирован: 05 Июль 2005, 15:59
- Откуда: Хабаровск
- Благодарил (а): 25 раз
- Поблагодарили: 22 раза
- Контактная информация:
Формирование штрих-кода льготного рецепта
Ну вот вам пример с BSHIFT
Код: Выделить всё
PROGRAM
MAP
IntToBin(LONG N, LONG Extend),STRING
END
LOC:Str STRING(10)
S LONG
CODE
! N число для преобразования в биты
! Extend - до скольки бит расширить число
MESSAGE(IntToBin(456789,25),,,,,0)
IntToBin FUNCTION(LONG N, LONG Extend)!,STRING
Result STRING(1024)
P LONG
CODE
P = N
LOOP WHILE P > 0
Result = P % 2 & CLIP(Result)
P = BSHIFT(P, -1)
END
Result = ALL('0', Extend-LEN(CLIP(Result))) & CLIP(Result)
RETURN CLIP(Result)
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
- Admin
- Администратор
- Сообщения: 3959
- Зарегистрирован: 05 Июль 2005, 15:59
- Откуда: Хабаровск
- Благодарил (а): 25 раз
- Поблагодарили: 22 раза
- Контактная информация:
Формирование штрих-кода льготного рецепта
Код: Выделить всё
S LONG(33)
CODE
MESSAGE(BSHIFT(S, -1))
S = S / 2 ! аналогично BSHIFT(S, -1) с учетом того что дробная часть в LONG отбрасывается
MESSAGE(S)
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса