Tekst informacyjny o polityce Cookies Close   
    
 
         
• Strona główna
• 1. Linki
• 3. Kontakt: e-Mail
 
         
• 1. Baza danych
• 2. Tabele i kwerendy
• 3. Formularze
• 4. Raporty
• 5. Moduły i makra
• 6. Obsługa błędów
 
    

II.   VBA 

    
• 1. Okna Accessa
• 2. Okna Formularzy
• 3.Okna Dialogowe
• 4. Tekst
• 5. Liczby
• 6. Pliki
• 7. Inne
 
    

III.   API 

    
• 1. Ogólnie o API
• 2. Funkcje API
• 3. System
• 4. Praca z oknami
• 5. Okna dialogowe
• 6. API - Inne
 
         
• 1. Bitmapy 24 Bit
• 2. GDI i HDC
• 3. Kody kreskowe
• 4. Formant Image
• 5. FreeImage.dll
 
    

V.   Inne 

    
• 1. Shell i MsDOS
• 2. Kontrolki
• 3. ६ԼҚ ਸ
• 4. Unikod

 
Odwiedzin:

Logo AccessFAQ• IV.3 Kod kreskowy EAN, UPC, KodaBar •

3.1 Kod kreskowy EAN 8 i EAN 13.
3.2 Kod kreskowy UPC A i UPC E.
3.3 Kod kreskowy Kodabar.
 

3.1 Kod kreskowy EAN 8 i EAN 13.


   Przykład:  • bmp32a_01_Ean  •  52 KB  •  status: FREE  Pobrano    razy   


EAN - Europejski Kod Towarowy (European Article Numbering).

                                                                   
                                                                   
                                                                   
                                                                   
                                                                   
 3 0 8 6     1 2 0 6 
EAN 8
  • kod numeryczny odwzorowujący wyłącznie cyfry od 0 do 9,
  • ma dwie wersje podstawowe:
    wersja pełna - kod kreskowy EAN 13
    wersja skrócona - kod kreskowy EAN 8
    oraz dodatkowo tzw. kody krótkie, kodujące od 1 do 7 znaków danych
  • obligatoryjnie występuje w nim (na ostatnim miejscu) cyfra kontrolna, którą oblicza się w/g określonego algorytmu,
  • kod kreskowy EAN 13 koduje 12 znaków w postaci kresek, w tym 11 znaków danych.
    • pierwszy znak (po lewej stronie znaku Start) nie jest kodowany przy pomocy kresek, określany jest poprzez wzorzec następujących po niej sześciu znaków,
    • ostatni znak (bezpośrednio przed znakiem Stop i kodowany w postaci kresek) jest liczbą kontrolną,
  • kod kreskowy EAN 8 koduje 8 znaków w tym 7 znaków danych + liczba kontrolna,
  • budowa jest modułowa - każdy znak (cyfra) zbudowany jest z 7-miu modułów, a nominalna szerokość modułu wynosi 0,33 mm. Szerokość pojedynczej kreski może zawierać się w granicach 1 - 4 modułów, przy czym jedna cyfra musi zawierać dwie jasne i dwie ciemne kreski,
  • posiada identyczne znaki Start (na początku) i Stop (na końcu) - tworzą je dwie czarne kreski przedzielone białą kreską o szerokości 1-go modułu każda. Kreski te wydłużone są do dołu o szerokość 5-ciu modułów. Pośrodku występuje znak rozdzielający, także wydłużony do dołu o szerokość 5-ciu modułów. Znak rozdzielający składa się z 5-ciu kresek, każda o szerokości 1-go modułu (naprzemiennie biała, czarna, biała, czarna, biała).
  • lewy margines (przed znakiem Start) ma 11 modułów szerokości, prawy margines (za znakiem Stop) ma 7 modułów szerokości.
  • Znaki kodowane są w trzech zbiorach A, B i C w/g poniższej tabeli:

    Znak Zbiór A Zbiór B Zbiór C
    0                        
    1                        
    2                        
    3                        
    4                        
    5                        
    6                        
    7                        
    8                        
    9                        
• kod kreskowy EAN 13
    - lewa część w zależności od wartości cyfry przed znakiem Start
      kodowana jest w/g poniższego schematu:

CyfraKod
0AAAAAA
1AABABB
2AABBAB
3AABBBA
4ABAABB
5ABBAAB
6ABBBAA
7ABABAB
8ABABBA
9ABBABA

    - prawa część kodu EAN 13 kodowana jest w/g zbioru C

• kod kreskowy EAN 8
    - lewa część kodowana jest w/g zbioru A
    - prawa część kodowana jest w/g zbioru C

Uwaga:
  • w przypadku bardzo małych wymiarów bitmapy kodu kreskowego, przede wszystkim dla minimalnej wysokości kodu EAN 8 i skali odwzorowania = 0, czasami występowały błędy wyświetlania kodu kreskowego.
    Z tego powodu przyjąłem dodatkowy warunek,
    Const MY_MIN_SIZE_BMP As Long = 10240 'bajtów.
    na minimalną wielkość rysowanej bitmapy.
    W przypadku zbyt małych rozmiarów dorysowywane są na dole bitmapy dodatkowe linie w kolorze tła, tak by osiągnąć zadany minimalny rozmiar bitmapy.
  • ponieważ bitmapa rysowana jest w kontekście ekranu szerokość modułu określana jest w zależności od skali odwzorowania w/g zależności:
    lModW= 2^lScale; czyli dla lScale = 0 lModW= 1 piksel;
    dla lScale = 1 lModW=2 piksele; itd.
  • formalnie znaki kodu numerowane są od strony prawej do lewej.
    Ja dla wygody przyjąłem numerację od lewej do prawej.
    U mnie znak trzynasty (ósmy w EAN 8) jest znakiem pierwszym (a właściwie zerowym).
  • Wydruki kodu z formularza i raportu były prawidłowo odczytywane przez czytnik kodów.

 ΔΔΔ 

 

3.2 Kod kreskowy UPC A i UPC E.


   Przykład:  • bmp32a_02_UPC  •  52 KB  •  status: FREE  Pobrano    razy   


UPC - Uniwersalny Kod Produktów (Universal Product Code).

                                                   
                                                   
                                                   
                                                   
                                                   
0     3 5 2 7 1 5     0
UPC E
kod numeryczny odwzorowujący wyłącznie cyfry od 0 do 9, budowa kodu jest modułowa - każdy znak (cyfra) zbudowany jest z 7-miu modułów, a nominalna szerokość modułu wynosi 0,33 mm. Szerokość pojedynczej kreski może zawierać się w granicach 1 - 4 modułów, przy czym jedna cyfra musi zawierać dwie jasne i dwie ciemne kreski, ma dwie wersje:

• Kod kreskowy UPC A - wersja pełna
  • koduje 12 znaków w postaci kresek, w tym 10 znaków danych.
  • pierwszy znak kodu UPC A określa Nr systemu kodowania:

    Tabela nr 1
    NoSysOpis
    0normalny kod UPC
    1zarezerwowany
    2artykuły, gdzie cena zależna jest od wagi: na przykład mięso i przetwory. Kod jest tworzony w sklepie i umieszczany na artykule
    3Leki i ogólnie pojęta Służba zdrowia
    4bez ograniczeń formatu (nie jest stosowany w sklepach)
    5kupon - zawiera kod producenta, rodzinę asortymentową i wartość
    6normalny kod UPC
    7normalny kod UPC 
    8zarezerwowany
    9zarezerwowany
    przykładowa baza nie ogranicza stosowania zarezerwowanych wartości NoSys kodowania
  • obligatoryjnie występuje w nim (na ostatnim miejscu) cyfra kontrolna, którą oblicza się w/g określonego algorytmu,
  • posiada identyczne znaki Start ( na początku) i Stop (na końcu) - tworzą je dwie czarne kreski przedzielone białą kreską o szerokości 1-go modułu każda. Kreski te wydłużone są do dołu o szerokość 5-ciu modułów. Pośrodku występuje znak rozdzielający, także wydłużony do dołu o szerokość 5-ciu modułów. Znak rozdzielający składa się z 5-ciu kresek, każda o szerokości 1-go modułu (naprzemiennie biała, czarna, biała, czarna, biała).
  • pierwszy i ostatni znak kodu również jest wydłużony do dołu o szerokość 5-ciu modułów,

• Kod kreskowy UPC E - wersja skrócona
  • koduje 6 znaków w postaci kresek,
  • wszystkie znaki kodu UPC E są jednakowej długości,
  • posiada identyczny znak Startu jak UPC A, ale znak Stop jest szerszy i składa się z 6-ciu kresek (naprzemiennie biała, czarna, itd.),
  • nie występuje w nim pośrodku znak rozdzielający, ani liczba kontrolna,


Znaki kodowane są w trzech zbiorach A, B i C w/g poniższej tabeli:

Tabela nr 2
Znak Zbiór A Zbiór B Zbiór C
0                        
1                        
2                        
3                        
4                        
5                        
6                        
7                        
8                        
9                        

  • kod kreskowy UPC A - lewa część kodowana jest w/g zbioru A.
    prawa część kodowana jest w/g zbioru C.
  • Kod kreskowy UPC E kodownie możliwe jest dla NoSys = 0 oraz (co nie jest zgodne z Tabelą 1) dla NoSys=1, która określa wartość 1 jako zarezerwowaną. Kodowanie poszczególnych znaków zależne jest od liczby kontrolnej konwertowanego kodu UPC A oraz od Nr systemu kodowania.
        Przykładowa bazie dopuszcza także NoSys = 1 jako wartość prawidłową. Kod taki był prawidłowo odczytywany przez czytnik kodów.
Tabela nr 3    A - Zbiór A, B Zbiór B
ChkDigNoSys=0NoSys=1
0BBBAAAAAABBB
1BBABAAAABABB
2BBAABAAABBAB
3BBAAABAABBBA
4BABBAAABAABB
5BAABBAABBAAB
6BAAABBABBBAA
7BABABAABABAB
8BABAABABABBA
9BAABABABBABA

• Zamiana 10 znaków kodu UPC A do 6 znakowego kodu UPC E
  • Kod kreskowy UPC A zawiera pięć znaków kodu producenta i pięć znaków kodu produktu.
    Jeżeli Kod kreskowy UPC A zawiera ciąg co najmniej czterech zer i spełnia poniższe reguły to możemy przekonwertować kod kreskowy UPC A do kodu UPC E.
  • jeżeli kod producenta kończy się 000, 100, lub 200, to kod UPC E składać się będzie z pierwszych dwóch znaków kodu producenta, trzech ostatnich znaków kodu produktu, a na końcu wstawiamy trzeci znak kodu producenta.
    Kod produktu musi zawierać się w zakresie 00000 do 00999,
  • jeżeli kod producenta kończy się 00, ale nie spełnia warunku 1, to kod UPC E składać się będzie z pierwszy trzech znaków kodu producenta, ostatnich dwóch znaków kodu produktu,' a na końcu wstawiamy cyfrę 3.
    Kod produktu musi zawierać się w zakresie 00000 do 00099,
  • jeżeli kodu producenta kończy się 0, ale nie spełnia warunku 1 i 2, to kod UPC E składać się będzie z pierwszy czterech znaków kodu producenta, ostatniego znaku kodu produktu, a na końcu wstawiamy cyfrę 4.
    Kod produktu musi zawierać się w zakresie 00000 do 00009,
  • jeżeli kod producenta nie kończy się 0, to kod UPC E składać się będzie z całego kodu producenta i ostatniej cyfry kodu produktu.
    Kod produktu musi zawierać się w zakresie 00005 do 00009,

• Zamiana 6 znakowego kodu UPC E do 10 znaków kodu UPC A
    Metoda konwersji zależy od wartości ostatniej cyfry kodu UPC E:
  • jeżeli kod UPC-E kończy się na 0, 1, 2 to kod UPC A składać się będzie z pierwszych dwóch znaków kodu UPC E, ciągu czterech zer 0000 i trzech znaków (3 do 5) kodu UPC E,
  • jeżeli kod UPC E kończy się na 3 to kod UPC A składać się będzie z trzech pierwszych znaków kodu UPC E, ciągu pięciu zer 00000 i dwóch znaków (od 4 do 5) kodu UPC E,
  • jeżeli kod UPC E kończy się na 4 to kod UPC A składać się będzie z czterech pierwszych znaków kodu UPC E, ciągu pięciu zer 00000 i jednego znaku (5-tego) kodu UPC E,
  • jeżeli kod UPC E kończy się na 5, 6, 7, 8, 9 to kod UPC A składać się będzie z pięciu pierwszych znaków kodu UPC E, ciągu czterech zer 0000 i dostatniego znaku (6-tego) kodu UPC E
  • Niestety, bez znajomości nr systemu (prefiksu) nie jesteśmy w stanie odtworzyć pełnego 12-sto znakowego kodu UPC A. Nr systemu czytnik jest w stanie określić po sposobie kodowania pierwszego znaku.
    Jeżeli pierwszy znak jest typu A to NoSys = 0,
    jeżeli pierwszy znak jest typu B to NoSys = 1.
    Tak więc funkcja konwertująca kod UPC E do UPC A będzie wymagała podania nr systemu (prefiksu). Chyba, że uznamy że dozwolony jest jedynie NoSys=0, wtedy pozostanie nam jedynie obliczenie liczby kontrolnej.
Uwaga:
  • w przypadku bardzo małych wymiarów bitmapy kodu kreskowego, przede wszystkim dla minimalnej wysokości kodu UPC E i skali odwzorowania = 0, czasami występowały błędy wyświetlania kodu kreskowego.
    Z tego powodu przyjąłem dodatkowy warunek,
    Const MY_MIN_SIZE_BMP As Long = 10240 'bajtów.
    na minimalną wielkość rysowanej bitmapy.
    W przypadku zbyt małych rozmiarów dorysowywane są na dole bitmapy dodatkowe linie w kolorze tła, tak by osiągnąć zadany minimalny rozmiar bitmapy.
  • ponieważ bitmapa rysowana jest w kontekście ekranu szerokość modułu określana jest w zależności od skali odwzorowania w/g zależności:
    lModW= 2^lScale; czyli dla lScale = 0 lModW= 1 piksel;
    dla lScale = 1 lModW=2 piksele; itd.
  • formalnie znaki kodu numerowane są od strony prawej do lewej.
    Ja dla wygody przyjąłem numerację od lewej do prawej.
    U mnie znak dwunasty (szósty w UPC E) jest znakiem pierwszym (a właściwie zerowym).
  • Wydruki kodu z formularza i raportu były prawidłowo odczytywane przez czytnik kodów.

 ΔΔΔ 

 

3.3 Kod kreskowy Kodabar.


   Przykład:  • bmp32a_03_Codabar  •  52 KB  •  status: FREE  Pobrano    razy   


Kodabar - zracjonalizowany (Codabar).

• kod numeryczny ze znakami specjalnymi,
• odwzorowuje łącznie 20 znaków
  • 10 cyfr (od 0 do 9)
  • 6 znaków specjalnych (- $ : / . +)
  • 4 znaki Start, Stop (ozn. literami A, B, C, D) - znaki Start, Stop można stosować w dowolnej kombinacji (A-A, A-B, ... ,D-D). 
    Umożliwia to kodowanie 16 różnych pól danych. 
    Również można zakodować 2 symbole kodu jako jeden, pod warunkiem że znak Stop pierwszego symbolu będzie taki sam jak znak Start drugiego symbolu np. A-C i C-B.
• Kod kreskowy Kodabar - kodowanie:
Cyfra Kod Znak Kod
0               -              
1               $              
2               :                
3               /                
4               .                
5               +                
6               A                
7               B                
8               C                
9               D                

  • kod kreskowy Kodabar jest kodem nieciągłym - każdy znak zaczyna się i kończy czarną kreską,
  • odstęp między znakami ma standardowo 1 moduł szerokości, ale może wynosić 2 lub 3,
  • współczynnik określający stosunek szerokości kreski szerokiej do szerokości kreski wąskiej powinien zawierać się pomiędzy 2 a 3.
    Jeżeli szerokość wąskiej kreski jest mniejsza niż 0,5 mm to współczynnik ten nie może być mniejszy niż 2,25.
  • każdy znak zbudowany jest z 7 kresek - 4 kresek czarnych i 3 kresek białych.
  • znaki występują w dwóch szerokościach:
      • 11 modułów - cyfry od (0 do 9) oraz znaki ( - $ )
        zawierają one 2 szerokie kreski (czarną i białą)
      • 13 modułów - znaki ( : / + ) zawierające 3 szerokie czarne kreski oraz znaki Start i Stop zawierające 3 szerokie kreski (jedną czarną i dwie białe)
  • długość kodu kreskowego Kodabar jest zmienna
Uwaga:
  • w przypadku bardzo małych wymiarów bitmapy kodu kreskowego, przede wszystkim dla minimalnej wysokości kodu kreskowego Kodabar, skali odwzorowania = 0 oraz niewielkiej ilości znaków kodu, czasami występowały błędy wyświetlania kodu kreskowego. Z tego powodu przyjąłem dodatkowy warunek, by rysowana bitmapa nie była mniejsza niż:
    Const MY_MIN_SIZE_BMP As Long = 10240 'bajtów.
    W przypadku zbyt małych rozmiarów dorysowywane są na dole bitmapy dodatkowe linie w kolorze tła, tak by osiągnąć zadany minimalny rozmiar bitmapy.
  • ponieważ bitmapa rysowana jest w kontekście ekranu szerokość modułu określana jest w zależności od skali odwzorowania w/g zależności:
    lModW= 2^lScale; czyli dla lScale = 0 lModW= 1 piksel;
    dla lScale = 1 lModW=2 piksele; itd.
  • Wydruki kodu z formularza i raportu były prawidłowo odczytywane przez czytnik kodów jedynie w przypadku gdy zawierał tylko jeden znak Start (na początku) i jeden znak Stop (na końcu kodu), Jeżeli kod zawierał wewnętrzne znaki Start i Stop kod nie był rozpoznawany przez czytnik.
    Prawdopodobnie specjalne kodowanie znaków wewnętrznych wymaga odpowiedniego zaprogramowania czytnika.

 ΔΔΔ