CODE 39 - это штрих-код, разработанный Intermec Corporation в 1975 году, который может содержать в себе 43 символа, включая английский алфавит, цифры, пробел и некоторые символы, а именно 0123456789 ABCDEFG HIJKLMNOP QRSTUVWXYZ-.$/+%. Поскольку в CODE 39 есть поддержка букв, это делает его незаменимым в промышленных областях в таких, как автомобилестроение и электроника. Например, в Германии же он применяется для фармацевтических продуктов, но в основном используется для складирования. В России CODE 39 является стандартом и регламентируются ГОСТ 30742-2001 (ИСО/МЭК 16388—99) «Автоматическая идентификация. Кодирование штриховое. Спецификация символики Code 39 (Код 39)».
CODE 39 назван так из-за своей структуры, состоящей из столбцов и пробелов, причем 3 из 9 столбцов и пробелов являются широкими. Штрих-код выглядит следующим образом:
Межсимвольный разрыв
Эта таблица описывает спецификацию CODE 39. Числовое значение, присвоенное каждому символу (кроме start/stop), используется в алгоритме контрольной суммы.
CODE 39 иногда используется с дополнительной контрольной цифрой по модулю 43, код с контрольной цифрой выглядит как “CODE 39 mod 43”
А вот и сам алгоритм рассчёта контрольной суммы:
1. Возьмите значение (от 0 до 42) каждого символа в штрих-коде, исключая коды запуска и остановки.
2. Суммируйте значения.
3. Разделите результат на 43.
4. Остаток - это значение символа контрольной суммы, подлежащего добавлению.
Code 39 Extended - это расширенная версия кода 39, поддерживающая набор символов ASCII. С ним вы сможете закодировать 128 символов: 0123456789 ABCDEFG HIJKLMNOP QRSTUVWXYZ !#$%&'()*+,-./:;<=>?@[\]^_` {|} abcdefg hijklmnopqrs tuvwxyz, а это 26 заглавных букв (A-Z), 26 строчных букв (a-z) и специальные символы вместе с пробелом.
Важно отметить, символы Extended Code 39 примерно в два раза длиннее стандартных символов Code 39. В соответствии с ISO 646 эти символы отображаются путем объединения двух знаков символа, первый может быть одним из четырех символов $ + % / и сопровождается одной из 26 букв. Если декодер запрограммирован с полным набором символов ASCII, то передается только эквивалент ASCII, а не комбинация знаков символа.
CODE 39 Extended также может использоваться с контрольной суммой, которая вычисляется по модулю 43, а код с контрольной цифрой выглядит как “CODE 39 EXTENDED
mod 43”.
Сравним одинаковые фразы в разных баркодах. В обоих случаях в первом столбике мы не видим отличия. Но почему же нет разницы? Всё потому что символы 0123456789 ABCDEFG HIJKLMNOP QRSTUVWXYZ-.$/+% в двух штрих-кодах кодируются одинаково, но стоит заглавные буквы заменить строчными, как появляются изменения.
Повторюсь, что в CODE 39 Extended символы отображаются путем объединения двух знаков символа, первый может быть одним из четырех символов $ + % / и сопровождается одной из 26 букв.
FastReport VCL позволяет использовать в ваших отчётах оба рассмотренных ранее типа штрих-кода. Посмотрим, как с ними работать.
В дизайнере FastReport VCL добавляем на отчёт компонент obCatBarcode и выбираем тип из предложенного списка:
Далее мы переходим в редактор штрих-кода:
Code - область для написания числового значения штрих-кода;
Type of Bar - тип штрих-кода можно изменить сразу в редакторе не добавляя на отчёт новый компонент;
Calc CheckSum- это контрольная сумма. Это свойство имеется у всех линейных штрих-кодов. Помните про “пропуск считывания”? С этим надо как-то бороться! Свойство определяет, надо ли считать контрольную сумму автоматически. Если оно отключено, контрольная сумма должна присутствовать в тексте объекта;
Zoom - задает масштабирование штрих-кода и используется только вместе со свойством "Авторазмер";
Text - включение/отключение отображения текста под штрих-кодом;
Rotation - позволяет задать поворот объекта на один из фиксированных углов – 0, 90, 180, 270 градусов.
Нажимаем на значок F(x) и попадаем в большой редактор выражений.
Подробнее ознакомиться можно самостоятельно в дизайнере FastReport VCL или в документации. Ссылка 1 и Ссылка 2
Переходим в свойства компонента obCatBarcode.
То, что будет написано в редакторе штрих-кода в поле Code будет перенесено в поле Expression. Если Expression пустое, то отображается текст из поля Text.
Если коротко, то в Text записывается статический текст, а в Expression содержится вычисляемое выражение, в том числе значение из источника данных.
CODE 39 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
uses frxBarcod; procedure TForm1.Button1Click(Sender: TObject); var bc: TfrxBarcodeView; begin bc := TfrxBarcodeView(frxReport1.FindObject('BarCode1')); {Устанавливаем тип штрихкода} bc.BarType := bcCode39; {Устанавливаем фиксированное значение штрихкода} bc.Text := '123456'; {Устанавливаем вычисляемое значение штрихкода} //bc.Expression := '<YourDatasetName."FieldName1"> + <YourDatasetName."FieldName2">'; {Устанавливаем, нужно ли подсчитывать контрольную сумму и добавлять её в конец штрихкода} bc.CalcCheckSum := False; {Устанавливаем масштаб, в котором будет отображаться штрихкод} bc.Zoom := 2; {Устанавливаем угол поворота штрихкода. Может принимать значения 0, 90, 180, 270} bc.Rotation := 0; {Устанавливаем, нужно ли устанавливать ширину штрихкода в зависимости от его содержимого.} {При значении False Zoom будет принимать такое значение, чтобы ширина штрихкода оставалась фиксированной} bc.AutoSize := True; {Устанавливаем цвет фона штрихкода} bc.Color := clNone; {Устанавливаем цвет линий штрихкода} bc.ColorBar := clBlack; {Устанавливаем, нужно ли отображать тект внизу штрихкода} bc.ShowText := True; frxReport1.ShowReport(); end; |
Теперь мы можем использовать штрих-код стандарта CODE 39 в своих бизнес-приложениях (кодировать не только числовые, но и алфавитные символы), например, для вывода в этикетках (в том числе, например, в формате ZPL).