Найти в Дзене
Laderuna

Маркировка (Штрихкодирование) продукции. Как зашифровать текстовую информацию в QR код? Программирование/Delphi/Pascal

Добрый день уважаемые читатели! Наверняка многие понимают, что QR код необходим для автоматизации учёта любых изделий на предприятии или товаров в магазине. Оператор очень быстро собирает информацию о наименовании или количестве изделий (товаров) просто направив специальный считыватель на изделие со штрихкодом (QR кодом). Однако в нашу текущую задачу входит обратная процедура, зашифровать данные о товаре в QR код и нанести его на упаковку. Теперь подробнее... В этом материале речь пойдет о небольшом приложении для маркировки товаров индивидуальным QR кодом. Маркировка будет осуществляться при помощи наклеек. Наше приложение сформирует QR код и напечатает его на липкую наклейку. Оператору остаётся лишь наклеить этикетку на упаковку. К возможностям приложения необходимо добавить функцию отображения массы с платформенных весов и учёт всех выполненных операций взвешивания с внесением записей о массе, наименовании продукта, текущей дате и времени в которое проводилась упаковка в базу данны
Вы можете направить свой телефон и считать информацию, зашифрованную в этом QR коде!
Вы можете направить свой телефон и считать информацию, зашифрованную в этом QR коде!

Добрый день уважаемые читатели!

Наверняка многие понимают, что QR код необходим для автоматизации учёта любых изделий на предприятии или товаров в магазине. Оператор очень быстро собирает информацию о наименовании или количестве изделий (товаров) просто направив специальный считыватель на изделие со штрихкодом (QR кодом). Однако в нашу текущую задачу входит обратная процедура, зашифровать данные о товаре в QR код и нанести его на упаковку.

Теперь подробнее...

В этом материале речь пойдет о небольшом приложении для маркировки товаров индивидуальным QR кодом. Маркировка будет осуществляться при помощи наклеек. Наше приложение сформирует QR код и напечатает его на липкую наклейку. Оператору остаётся лишь наклеить этикетку на упаковку.

К возможностям приложения необходимо добавить функцию отображения массы с платформенных весов и учёт всех выполненных операций взвешивания с внесением записей о массе, наименовании продукта, текущей дате и времени в которое проводилась упаковка в базу данных (БД). Записи вносятся в таблицу следующим образом:

Примерная таблица для учёта в БД
Примерная таблица для учёта в БД

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

В QR код необходимо зашифровать следующую информацию:

  • Наименование предприятия
  • Торговое наименование продукта
  • Текущую дату
  • Текущее значение времени, когда проводилось взвешивание (и упаковка...)
  • Массу продукта (НЕТТО)

Оборудование, с которым предстоит взаимодействовать приложению:

  • Преобразователь весоизмерительный Тензо-М TB-019 (RS 485)
  • Весы платформенные ВПА-5-1 (весовая платформа)
  • Преобразователь интерфейса USB - RS 485
  • Принтер этикеток ZEBRA ZD420
  • POS-компьютер (Intel Core i5-4210U, RAM 8 ГБ, SSD 128 ГБ, Windows 10 Pro характеристики избыточные, но для нас важен форм-фактор)

Приступим...

Первоначально необходимо настроить принтер и преобразователь TB-019 на компьютере. С принтером сложностей не должно возникнуть, настраивается как обычный офисный принтер.

Тензо-М TB-019 подключается к компьютеру при помощи любого преобразователя интерфейса USB - RS 485. В диспетчере задач появится виртуальный СОМ порт, через который приложение сможет считывать информацию с весового преобразователя TB-019.

-3

-4

В инструкции к более поздним моделям весовых преобразователей Тензо имеется пример (листинг кода) для Delphi 7 (Pascal) через OLE (OLE — технология связывания и внедрения объектов в другие документы и объекты, разработанная корпорацией Майкрософт в 1996 году). Используем этот пример в работе приложения (почему-то в инструкции к этой модели примера для Delphi уже нет, только 1С оставили разработчики, однако терминал TB-019 легко стал отправлять значения веса в нашу программу по представленному ниже коду). Для того, чтобы получать значения веса в реальном времени на форме разместил компонент Таймер и поместил в него следующий код:

uses

ComObj

Controller:= CreateOleObject('Controller.ScAuto');

Ves:= Controller.GetWeightNetto(1,1);

Label.Caption:= Ves;

-5

Как было сказано выше, производители Тензо-М используют технологию OLE для обмена данными с приложениями на Pascal (Delphi), поэтому нам понадобится программа с их официального сайта Controller 5 . Данная программа выполняет работу по обмену данными с весовым терминалом и отправляет её на более высоком уровне (уровень приложений) к нам, в Delphi. Без этой программы обмен данными с терминалом в конкретном случае не будет работать. Controller 5 необходимо запускать постоянно или поставить в автозагрузку, при эксплуатации.

-6
-7

Чтобы добавить в наше приложение функцию по созданию QR кода использовал DelphiZXingQRCode — это библиотека для формирования изображений QR кодов с открытым исходным кодом, которая была перенесена в Delphi разработчиком Кевином Ньюманом.

В примере с библиотекой изображение с QR кодом формируется с помощью метода Draw на холсте (Canvas) , который мы затем выведем на печать.

uses

Printers;

procedure Form.ButtonClick(Sender: TObject);

var

Bitmap,Bitmap2: TBitmap;

Source: TRect;

Dest: TRect;

begin

Printer.BeginDoc;

Bitmap := TBitmap.Create;

try

with Bitmap do

begin

Width := pbPreview.Width;

Height := pbPreview.Height;

Dest := Rect(0, 0, Width, Height);

end;

with pbPreview do

Source := Rect(0, 0, Width, Height);

Bitmap.Canvas.CopyRect(Dest, pbPreview.Canvas, Source);

Printer.Canvas.Draw(0,0,Bitmap);

finally

Bitmap.Free;

end;

Printer.EndDoc;

end;

Класс TBitmap предназначен для работы с растровыми картинками.

Понаблюдаем за результатом:

-8
-9

Благодарю за внимание, подписывайтесь на мой канал, если пожелаете!