:: Visual Foxpro, Foxpro for DOS
QR код
Николай из Сызрани

Сообщений: 11
Дата регистрации: 03.05.2005
Доброго времени суток.
Возникла необходимость разместить на квитанциях QR-код по ГОСТу Р 56042-2014.
Нашел FoxBarcodeQR, но там ограничение в длине 256 символов, а надо больше.
StrokeScribe - платная.
Может кто подскажет решение для VFP?
Ratings: 0 negative/0 positive
Re: QR код
ssa

Сообщений: 13008
Откуда: Москва
Дата регистрации: 23.03.2005
Николай из Сызрани
Нашел FoxBarcodeQR, но там ограничение в длине 256 символов
Точно-точно?

------------------
Лень - это неосознанная мудрость.
Ratings: 0 negative/0 positive
Re: QR код
Mitjay

Сообщений: 387
Откуда: Саратов
Дата регистрации: 01.01.2005
Точно-точно...
Ratings: 0 negative/0 positive
Re: QR код
Николай из Сызрани

Сообщений: 11
Дата регистрации: 03.05.2005
точно, проверял несколько раз
Ratings: 0 negative/0 positive
Re: QR код
pasha_usue

Сообщений: 3650
Откуда: Е-бург
Дата регистрации: 06.10.2006
Есть, например qrencode-win32. Правда оформлено как консольное приложение.
code.google.com
Ratings: 0 negative/0 positive
Re: QR код
pasha_usue

Сообщений: 3650
Откуда: Е-бург
Дата регистрации: 06.10.2006
Или вот у этого чувака есть на базе той же библиотеки скомпилированная dll.
perevoznyk.wordpress.com

Где-то 2000 русских символов даёт кодировать. Английских чуть побольше. Я, правда, считывать не пробовал (;Ж
*MyText = REPLICATE("Съешь ещё этих мягких булок и выпей чаю", 50)
MyText = REPLICATE("Eat this french dogs and drink tea", 80)
?LEN(MyText)
DECLARE GeneratePNG IN quricol32.dll STRING @, STRING @, INTEGER, INTEGER, INTEGER
?GeneratePNG("d:\1.png", MyText, 2, 5, 0)
Ratings: 0 negative/1 positive
Re: QR код
Николай из Сызрани

Сообщений: 11
Дата регистрации: 03.05.2005
Проверил - работает.
Если не затруднит, еще бы описание параметров для GeneratePNG
Ratings: 0 negative/0 positive
Re: QR код
pasha_usue

Сообщений: 3650
Откуда: Е-бург
Дата регистрации: 06.10.2006
Николай из Сызрани
Проверил - работает.
Если не затруднит, еще бы описание параметров для GeneratePNG
Там есть delphi-пример и сишный. Кому что роднее.

procedure GeneratePNG(FileName : PChar; Text : PChar; Margin : integer; Size : integer; Level : integer); stdcall;
FileName - имя файла, куда генерить;
Text - текст который кодировать;
Margin - размер рамки в точках QR-кода
Size - размер точки QR-кода (вроде в пикселях)
Level - уровень коррекции ошибок:

QualityLow=0, QualityMedium=1, QualityStandard=2, QualityHigh=3. Кажется так.

Еще есть функция GenerateBMP с теми же параметрами.
Еще можно выставить RGB-цвета:
procedure SetBackgroundColor(Value : COLORREF); stdcall;
procedure SetForegroundColor(Value : COLORREF); stdcall;
Ratings: 0 negative/0 positive
Re: QR код
pasha_usue

Сообщений: 3650
Откуда: Е-бург
Дата регистрации: 06.10.2006
Ещё там же лежат функции:
function GetHBitmap(Text : PChar; Margin : integer; Size : integer; Level : integer) : HBITMAP; stdcall;
procedure GetPNG(Text : PChar; Margin : integer; Size : integer; Level : integer; var BufSize : integer; out ppvBits : PByte); stdcall;

Первая возвращает указатель на HBitMap. Если я правильно помню, HBitMap можно привязать к PictureVal. Если что, меня поправят товарищи.
Ratings: 0 negative/0 positive
Re: QR код
Николай из Сызрани

Сообщений: 11
Дата регистрации: 03.05.2005
Огромное СПАСИБО!
пойду внедрять в тело программы.
Ratings: 0 negative/0 positive
Re: QR код
pasha_usue

Сообщений: 3650
Откуда: Е-бург
Дата регистрации: 06.10.2006
Николай из Сызрани
Огромное СПАСИБО!
пойду внедрять в тело программы.
Вот цветной. Для ценителей. (;Ж
MyText = REPLICATE("Eat this french dogs and drink tea", 80)
DECLARE GeneratePNG IN quricol32.dll STRING @, STRING @, INTEGER, INTEGER, INTEGER
DECLARE SetBackgroundColor IN quricol32.dll INTEGER
DECLARE SetForegroundColor IN quricol32.dll INTEGER
SetForegroundColor(RGB(0,0,255))
SetBackgroundColor(RGB(255,255,0))
?GeneratePNG("d:\1.png", MyText, 2, 5, 0)
Ratings: 0 negative/0 positive
Re: QR код
Николай из Сызрани

Сообщений: 11
Дата регистрации: 03.05.2005
Пришлось использовать GenerateBMP, так как png не вставляется в отчет.
Ratings: 0 negative/0 positive
Re: QR код
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
Чё за фокс то такой антикварный В 9-ке png работает без проблем.


------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: QR код
pasha_usue

Сообщений: 3650
Откуда: Е-бург
Дата регистрации: 06.10.2006
Igor Korolyov
Чё за фокс то такой антикварный В 9-ке png работает без проблем.
Лучше бы напомнил, HBitMap можно напрямую в PictureVal запихивать, или надо всё-таки обёртывать заголовком.
Ratings: 0 negative/0 positive
Re: QR код
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
Поскольку там речь идёт про IPicture интерфейс, то очевидно "просто хендл", который вообще число а никак не object, туда подсунуть никак нельзя.
А используя OleCreatePictureIndirect() и потом подшаманив с SYS(3096) возможно и получится "завернуть хендл" - хотя этой SYS-ке нужен интерфейс производный от IDispatch, а это IPictureDisp, так что хз как это разрулить и выйдет ли что путное из такого варианта... Кстати, для заворачивания HBITMAP нужно ещё и палитру в виде хендла HPALETTE соорудить
Кароче одно могу сказать точно - на фоксе я бы эту хрень точно не стал писать На сях какую fll наверное можно сварганить, но смысл? Тогда уж проще всю логику генерации баркода туда засунуть.


------------------
WBR, Igor
Ratings: 0 negative/1 positive
Re: QR код
Victoriacom

Сообщений: 112
Дата регистрации: 08.12.2010
pasha_usue
Где-то 2000 русских символов даёт кодировать. Английских чуть побольше. Я, правда, считывать не пробовал (;Ж
*MyText = REPLICATE("Съешь ещё этих мягких булок и выпей чаю", 50)
MyText = REPLICATE("Eat this french dogs and drink tea", 80)
?LEN(MyText)
DECLARE GeneratePNG IN quricol32.dll STRING @, STRING @, INTEGER, INTEGER, INTEGER
?GeneratePNG("d:\1.png", MyText, 2, 5, 0)

Здравствуйте. Ищу генератор QR кодов, который можно было бы вставить в Фокс-код.
FoxBarcodeQR не подходит из-за ограничения длины.
Больше всего мне понравился приведенный выше пример, но...Может я чего не так делаю, но если раскомментировать MyText на русском, то не работает: картинка создается, но когда я ее читаю сканером в блокнот, туда попадают несколько десятков пробелов.
А с латиницей всё нормально.
Может где-то уже есть решение этой проблемы? Чтобы на руccком и без ограничения длины?

Есть еще такая штука, - "MessagingToolkit.QRCode.dll". Есть даже пример на С++, но я не знаю как им воспользоваться. Как подключить ее к фоксовой программе?
В Си-шном примере стоит:
using MessagingToolkit.QRCode.Codec;
using MessagingToolkit.QRCode.Codec.Data;
И описания этой библиотеки нигде не нашел.

Поможите, кто чем может...


------------------
Алло, это прачечная? Да, это прачечная. Здравствуйте.




Исправлено 1 раз(а). Последнее : Victoriacom, 14.08.20 15:18
Ratings: 0 negative/0 positive
Re: QR код
Victoriacom

Сообщений: 112
Дата регистрации: 08.12.2010
Нашел здесь на форуме еще один примерчик:
lcFileName=SYS(2023)+'\'+ALLTRIM(STR(lic))+'RQTemp.png'
m_command = 'qrcode.exe -o '+lcFileName+' -s 2 -c "'+STRCONV('ST00012|Name=Организация и т.д. .......'|PayerAddress=Россия, обл.,****|SUM=***',9)+'"'
WshShell.RUN(m_command, 0, .T.)
Так вот он единственный, который с кириллицей отработал правильно.


------------------
Алло, это прачечная? Да, это прачечная. Здравствуйте.
Ratings: 0 negative/0 positive
Re: QR код
andrewk
Автор

Сообщений: 174
Откуда: Красноярск
Дата регистрации: 15.05.2005
Victoriacom
он единственный, который с кириллицей отработал правильно
Вот реальный код, который у меня давно работает. С моими же комментариями для себя. Как раз тоже для платёжки ЖКХ. С кириллицей проблем нет. Только подправил, чтоб можно было для проверки запустить. В архиве эта же prg-шка. Help на сайте не совсем для нас подходит, но понять можно.

upd: блин, отступы все съехали, поскольку браузер показывает TAB как 8 пробелов, а у меня как 4.



Исправлено 5 раз(а). Последнее : Joys, 29.08.20 19:02
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 28 alex;  (Гостей: 27)

© 2000-2024 Fox Club 
Яндекс.Метрика