CODE 39 jest kodem kreskowym opracowanym przez Intermec Corporation w 1975 roku. Kod kreskowy może zawierać maksymalnie 43 znaki, w tym cyfry, litery i niektóre symbole: 0123456789 ABCDEFG HIJKLMNOP QRSTUVWXYZ-.$/+%. Ze względu na fakt, iż można korzystać z liter, CODE 39 jest niezastąpiony w przemyśle i stosowany w takich działach przemysłu jak przemysł samochodowy i elektroniczny. Na przykład w Niemczech jest on używany do produktów farmaceutycznych, ale głównie jest stosowany w obsłudze magazynowej. W USA CODE 39 został znormalizowany jako ANSI MH 10,8 M-1983 i MIL-STD-1189. Standard ten został później wycofany i zastąpiony przez ANSI / AIM BC1 / 1995.
CODE 39 został tak nazwany ze względu na układ kresek i odstępów, przy czym 3 z 9 kresek i odstępów są szerokie. Podstawowe elementy kodu to:
- Jedna litera (znak) jest określona przez 9 kresek i odstępów.
- Gwiazdki (*) są umieszczane na początku i na końcu kodu kreskowego. (oznaczenie start/stop)
- Odstęp między znakami nazywany jest „luką między znakami”. Zasadniczo szerokość tej luki jest równa szerokości wąskiej kreski. (Maksymalna szerokość może być 3 do 5,3 razy szersza niż szerokość wąskiej kreski).
Luka między znakami
Poniższa tabela przedstawia elementy CODE 39. Wartość liczbowa przypisana do każdego znaku (z wyjątkiem oznaczenia start/stop) jest używana w algorytmie sumy kontrolnej opisanym poniżej.
CODE 39 jest czasami używany z opcjonalną cyfrą kontrolną modulo 43, a kod z cyfrą kontrolną jest nazywany Code 39 mod 43.
Sposób obliczania sumy kontrolnej:
1. Wybrać wartość (od 0 do 42) każdego znaku w kodzie kreskowym, z wyłączeniem oznaczenia start i stop.
2. Zsumować wartości.
3. Podzielić wynik przez 43.
4. Reszta to wartość dodawanego znaku sumy kontrolnej.
Code 39 Extended to rozszerzona wersja Code 39, która obsługuje znaki ASCII. Można nim zakodować 128 znaków: 0123456789 ABCDEFG HIJKLMNOP QRSTUVWXYZ !#$%&'()*+,-./:;<=>?@[\]^_` {|} abcdefg hijklmnopqrs tuvwxyz, które zawierają 26 dużych liter (A-Z), 26 małych liter (a-z) oraz znaki specjalne ze spacją.
Należy pamiętać, że kod kreskowy Extended Code 39 jest około dwa razy dłuższy niż zwykły kod kreskowy Code 39. Zgodnie z ISO 646, znaki te są wyświetlane przez połączenie dwóch znaków, pierwszy składa się z jednego z czterech znaków $ + % / po którym następuje jedna z 26 liter. Jeśli dekoder jest zaprogramowany z pełnym zestawem znaków ASCII, przesyłany jest tylko odpowiednik ASCII, a nie kombinacja znaków.
Code 39 Extended może być również używany z opcjonalną sumą kontrolną modulo 43, a kod z cyfrą kontrolną wygląda jak „CODE 39 EXTENDED mod 43”.
Porównanie CODE 39 i CODE 39 Extended
Porównajmy te same zestawy kresek w różnych kodach kreskowych. W obu przypadkach nie widać różnicy w pierwszej kolumnie. Dlaczego? Dzieje się tak, ponieważ znaki 0123456789 ABCDEFG HIJKLMNOP QRSTUVWXYZ -. $ / +% w obu kodach kreskowych są kodowane w ten sam sposób, ale jeśli zamieni się duże litery na małe, wówczas pojawią się zmiany.
W CODE 39 Extended znaki są wyświetlane przez połączenie dwóch znaków, pierwszy składa się z jednego z czterech znaków $ + % /, po którym następuje jedna z 26 liter.
Tworzenie kodów kreskowych w kreatorze wizualnym
FastReport VCL umożliwia korzystanie z obu opisanych wcześniej typów kodów kreskowych w raportach. Zobaczmy, jak z nich skorzystać.
W kreatorze FastReport VCL należy dodać komponent obCatBarcode do raportu i wybrać typ kodu kreskowego z listy:
Następnie, należy przejść do edytora kodów kreskowych:
Code – obszar wartości numerycznej kodu kreskowego;
Type of Bar – rodzaj kodu kreskowego można od razu zmienić w edytorze bez dodawania nowego komponentu do raportu;
Calc CheckSum – suma kontrolna. Wszystkie liniowe kody kreskowe mają tę właściwość. Należy pamiętać o „błędnym odczycie” Musimy z tym zjawiskiem walczyć! Ta właściwość określa, czy suma kontrolna powinna być obliczana automatycznie. Jeśli ta funkcja jest wyłączona, suma kontrolna musi być obecna w tekście;
Zoom – funkcja ta ustawia skalę kodu kreskowego i jest używana tylko w połączeniu z funkcją „Autosize”;
Text – włączenie / wyłączenie wyświetlania tekstu pod kodem kreskowym;
Rotation – umożliwia ustawienie obrotu kodu pod jednym ze stałych kątów – 0, 90, 180, 270 stopni.
Kliknąć ikonę F (x) i przejść do edytora dużych wyrażeń. Więcej szczegółów na ten temat można znaleźć w kreatorze FastReport VCL lub w dokumentacji. link 1 and link 2
Przejść do o właściwości komponentu obCatBarcode.
Zawartość pola Code zostanie przeniesiona do pola Expression. Jeśli pole Expression jest puste, to wówczas wyświetlany jest tekst z pola Text.
Krótko mówiąc, pole Text jest tekstem statycznym, a pole Expression zawiera obliczone wyrażenie, w tym wartość ze źródła danych.
Tworzenie kodu kreskowego w środowisku Delphi / Lazarus
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 30 |
uses frxBarcod; procedure TForm1.Button1Click(Sender: TObject); var bc: TfrxBarcodeView; begin bc := TfrxBarcodeView(frxReport1.FindObject('BarCode1')); {ustawić typ kodu kreskowego} bc.BarType := bcCode39; {Ustawić stałą wartość kodu kreskowego} bc.Text := '123456'; {Set the calculated barcode value} //bc.Expression := '<YourDatasetName."FieldName1"> + <YourDatasetName."FieldName2">'; { Jeśli jest to konieczne, ustawić, aby obliczyć sumę kontrolną i dodać ją na końcu kodu kreskowego} bc.CalcCheckSum := False; {Ustawić skalę w jakiej kod kreskowy będzie wyświetlany} bc.Zoom := 2; {Ustawić kąt obrotu kodu kreskowego. Można wybrać następujące wartości: 0, 90, 180, 270} bc.Rotation := 0; {Ustawić , jeśli można, szerokość kodu kreskowego w zależności od jego zawartości.} {Jeśli ustawiono na False, to wówczas Zoom zostanie ustawiony tak, aby zachować stałą szerokość kodu kreskowego} bc.AutoSize := True; {Ustawić kolor tła kodu kreskowego} bc.Color := clNone; {Ustawić kolor linii kodu kreskowego} bc.ColorBar := clBlack; {Wybrać, czy wyświetlać tekst na dole kodu kreskowego} bc.ShowText := True; frxReport1.ShowReport(); end; |
Teraz można wykorzystać kod kreskowy w standardzie CODE 39 w naszych aplikacjach biznesowych (można kodować nie tylko znaki numeryczne, ale i alfabetyczne) np. do zastosowania na etykietach (np. także w formacie ZPL).