CODE 128 - штрих-код, разработанный Computer Identics Corporation (США) в 1981 году. Штрих-код CODE 128 может представлять все 128 символов кода ASCII (числа, верхний регистр / нижний регистр, регистр букв, символов и управляющих кодов). Поскольку он может представлять все символы (кроме Японских кандзи, хирагана и катакана), с которыми можно работать с компьютерной клавиатурой, это компьютерный штрих-код. Code-128 может становиться очень компактным за счёт «двойной упаковки» данных, когда в один модуль штрих-кода записываются два числа.
Штриховой код Code-128 включает в себя 107 символов. Из которых 103 символа данных, 3 стартовых, и 1 остановочный (стоп) символ. Для кодирования всех 128-ми символов ASCII предусмотрено три комплекта символов штрихового кода Code128 - A, B и C, которые могут использоваться внутри одного штрих-кода.
Технические требования к символике штрихового кода Code-128, показатели символики, кодирование знаков данных, размеры, алгоритмы декодирования, параметры применения, строки-префиксы и идентификатора символики в России регламентируются ГОСТ 15417-2013 «Технологии автоматической идентификации и сбора данных. Спецификация символики штрихового кода Code 128».
Базовый состав выглядит следующим образом:
1) Начальный код
2) Контрольная цифра (модуль 103)
3) Код остановки
Структура штрих-кода Code128 достаточно проста. Штрих-код состоит из 6 зон:
- Белое поле;
- Стартовый символ (Start);
- Кодированная информация;
- Проверочный символ (контрольный знак);
- Остановочный (Stop) символ;
- Белое поле.
Символы штрихового кода Code-128 состоят из 3 штрихов и 3 промежутков (всего 6 элементов). Штрихи и промежутки имеют модульное построение с шириной от 1 до 4 модулей (1 модуль = 0,33 мм). Ширина знака равна 11 модулям. Остановочный (стоп) знак состоит из тринадцати модулей и имеет 4 штриха и 3 промежутка.
Кстати, в этом штрих-коде «Модуль 103» (Modulus 103) используется как контрольная цифра. Согласно таблице символов штрих-кода Code-128, каждому знаку присваивается соответствующие значение. Затем, для каждого знака, кроме знака «Stop» и контрольного знака, назначается весовой коэффициент, 1, 2, 3,…,n. При этом, знакам «Start» и следующему за ним первому знаку, присваивается весовой коэффициент равный единице. Контрольная цифра вычисляется как сумма произведений весовых коэффициентов на соответствующие значения по модулю 103. Располагается контрольный знак между последним знаком данных и знаком «Stop».
Code-128 может изменить тип кодирования в одном штрих-коде. На следующем рисунке показан переход с Code-C на Code-A.
1] Начать с CODE-C
2] Изменить на CODE-A
При использовании CODE-C двузначные числа могут быть представлены одним типом штрихового рисунка, так называемая «двойная упаковка» данных. Это позволяет увеличить плотность данных. На примере выше как раз представлен этот случай.
Если данные штрих-кода содержат 12 или более цифр, CODE 128 обеспечивает меньший размер, чем ITF и EAN-128.
Поскольку CODE 128 использует 4 типа размера полосок, требуются принтеры с высоким качеством печати. Code 128 не подходит для печати на матричных и струйных принтерах, а также для флексопечати на гофрокартоне.
CODE 128 используется в следующих отраслях:
- Швейная промышленность США.
- Пищевая промышленность США.
- Производство лекарств и медицинского оборудования США.
- Пищевая промышленность Австралии и Новой Зеландии.
- Европейская промышленность по производству лекарств и медицинских инструментов.
Единичная упаковка | Транспортная упаковка | Логистическая упаковка |
Бутылка черничного сока, 3 л., бутылка стекло | 6 шт., коробка картонная | 24 шт., палет |
4611234567893 | 14611234567899 | (02)14611234567890(37)24 |
Штрих-код EAN-13 | Штрих-код ITF-14 | Штрих-код Code-128 |
461 внутри каждого штрих-кода называется региональным кодом национальных организаций GS1(например, 460-469 Россия) (000-139 США) | 1 (в самом начале) - это индикатор обозначающий уровень упаковки для конкретной картонной коробки. Этот однозначный префикс может варьироваться от 0 до 8. (например, 1 — коробка, 2 — ящик и т.д.). |
(02) - GTIN торговых единиц, содержащихся в грузе |
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 30 31 32 33 34 35 36 37 38 39 40 41 42 |
uses frxClass, frxBarcode, frxBarcod, frxDBSet, Printers; var DataPage: TfrxDataPage; Page: TfrxReportPage; Band: TfrxBand; Barcode: TfrxBarcodeView; begin { Очищаем отчет } frxReport1.Clear; { Добавляем страницу "Данные" } DataPage := TfrxDataPage.Create(frxReport1); { Добавляем страницу } Page := TfrxReportPage.Create(frxReport1); { Создаем уникальное имя } Page.CreateUniqueName; { Устанавливаем размеры полей, бумаги и ориентацию по умолчанию } Page.SetDefaults; { Меняем ориентацию бумаги } Page.Orientation := poLandscape; { Добавляем report title } Band := TfrxReportTitle.Create(Page); Band.CreateUniqueName; { Для бэнда достаточно установить координату Top и высоту } { Обе координаты - в пикселах } Band.Top := 20; Band.Height := 40; { Создаем объект штрих-кода } Barcode := TfrxBarcodeView.Create(Band); { Задаем тип штрих-кода } Barcode.BarType := bcGS1Code128; { Задаем числовую комбинацию для кодирования } Barcode.Text := '(02)14611234567890(37)24'; { Устанавливаем положение и размеры объекта } Barcode.Top := 0; Barcode.Left := 10; Barcode.Height := 40; { Устанавливаем отображение текста внизу штрихкода } Barcode.ShowText := True; { Отображаем отчет } frxReport1.ShowReport; end; |
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 |
//Создаем объект отчета Report report = new Report(); //Создаем страницу отчета ReportPage page = new ReportPage(); //добавляем уникальный идентификатор page.CreateUniqueName(); //Добавляем ее в коллекцию страниц отчета report.Pages.Add(page); //Создаем бэнд данные DataBand dataBand = new DataBand(); //с уникальным идентификатором dataBand.CreateUniqueName(); //и добавляем его в коллекцию бэндов page.Bands.Add(dataBand); //Создаем объект штрих-кода FastReport.Barcode.BarcodeObject barcode = new FastReport.Barcode.BarcodeObject(); //Задаем тип штрих-кода barcode.Barcode = new FastReport.Barcode.Barcode128(); //Задаем числовую комбинацию для кодирования barcode.Text = "(02)14611234567890(37)24"; //Размещаем штрих-код на странице barcode.Parent = dataBand; //Устанавливаем размеры объекта barcode.Bounds = new RectangleF(0, 0, Units.Centimeters * 10, Units.Centimeters * 3); //Отображаем отчет report.Show(); |
Теперь вы немного больше знаете о штрих-коде Code-128 и его разновидностях A, B, C.