Wpisany przez Tomasz Lubiński,
30 marca 2007 19:45
Przeplatany kod 2 z 5 (ang. Interleaved 2 of 5), w przeciwieństwie do kodu Standard 2 of 5, z którego się wywodzi, jest kodem o dużej gęstości. Zwiększenie pojemności kodu osiągnieto tutaj poprzez zakodowanie cyfr zarówno poprzez paski jak i przerwy pomiędzy nimi, podczas gdy Standard 2 of 5, kodował informacje jedynie poprzez szerokość paska. Własność ta wymusza na nas kodowanie zawsze parzystej liczby cyfr. Nazwa przeplatany bierze się z faktu iż pierwsza cyfra kodowana jest przez pierwsze 5 pasków podczas gdy druga cyfra kodowana jest poprzez 5 przerw pomiędzy tymi paskami, trzecia przez kolejne 5 pasków, czwarta przez 5 przerw pomiędzy nimi, itd... Zawsze 2 z 5 pasków i 2 z 5 przerw są szerokie, pozostałe są cienkie. Gruby pasek ma szerokość dwu-krotnie większą od paska
cienkiego. Podobnie jak kod Standard 2 of 5, Interleaved 2 of 5 może być
wyposażony w opcjonalną sumę kontrolną.
Cyfry kodowane są następująco (N - oznacza pasek/przerwę wąską, W - oznacza pasek/przerwę szeroką):
Cyfry kodowane są parami, pierwsza cyfra w parze kodowana jest za pomocą pasków, druga w parze za pomocą przerw. Zatem para 47 będzie zakodowana następująco: 4 kodowane jest: NNWNW, 7 kodowane jest NNNWW, biorąc szerokość pasków z 4 a szerokość przerw z 7 otrzymamy: cieńki pasek, cieńka przerwa, cienki pasek, cieńka przerwa, gruby pasek, cieńka przerwa, cieńki pasek, gruba przerwa, gruby pasek, gruba przerwa, co zapisać możemy następująco: 1 0 1 0 11 0 1 00 11 00.
Zakodujemy liczbę: 1234567 razem z cyfrą kontrolną
Liczby kodowane są prami 12, 34, 56, 7 z cyfrą kontrolną.
obliczmy sumę kontrolną. (6 + 4 + 2) + (7 + 5 + 3 + 1) * 3 = 12 + 16 * 3 = 60 mod 10 = 0, 10 - 0 = 10, 10 mod 10 = 0, czyli jako cyfry kontrolnej uzyjemy "0"
Znak start kodowany jest jako: 1010
Para "12" kodowana jest jako: 11010010101100
Para "34" kodowana jest jako: 11011010010100
Para "56" kodowana jest jako: 11010011001010
Para "70" kodowana jest jako: 10101001100110
Znak stop kodowany jest jako: 1101.
Wszystko razem daje nam: 1010110100101011001101101001010011010011001010101010011001101101
co w zapisie graficznym wygląda następująco:
- Obliczanie opcjonalnej cyfry kontrolnej (zakładamy, że cyfra znajdująca się najbardziej na
prawo jest na parzystej pozycji):
- Sumujemy wszystkie cyfry na pozcyjach nieparzystych
- Sumujemy wszystkie cyfry na pozcyjach parzystych i mnożymy wynik razy 3
- Dodajemy do siebie obie sumy
- Wynik dzielimy mod 10, odejmujemy go od 10 i znów dzielimy mod 10
Cyfry kodowane są następująco (N - oznacza pasek/przerwę wąską, W - oznacza pasek/przerwę szeroką):
Cyfra | Kod |
0 | NNWWN |
1 | WNNNW |
2 | NWNNW |
3 | WWNNN |
4 | NNWNW |
5 | WNWNN |
6 | NWWNN |
7 | NNNWW |
8 | WNNWN |
9 | NWNWN |
Cyfry kodowane są parami, pierwsza cyfra w parze kodowana jest za pomocą pasków, druga w parze za pomocą przerw. Zatem para 47 będzie zakodowana następująco: 4 kodowane jest: NNWNW, 7 kodowane jest NNNWW, biorąc szerokość pasków z 4 a szerokość przerw z 7 otrzymamy: cieńki pasek, cieńka przerwa, cienki pasek, cieńka przerwa, gruby pasek, cieńka przerwa, cieńki pasek, gruba przerwa, gruby pasek, gruba przerwa, co zapisać możemy następująco: 1 0 1 0 11 0 1 00 11 00.
- Struktura przeplatanego kodu 2 z 5:
- Znak start kodowany jako: 1010
- Kolejne pary cyfr zakodowane zgodnie z tabelą powyżej
- Znak stop kodowany jako: 1101.
Przykład:
Zakodujemy liczbę: 1234567 razem z cyfrą kontrolną
Liczby kodowane są prami 12, 34, 56, 7 z cyfrą kontrolną.
obliczmy sumę kontrolną. (6 + 4 + 2) + (7 + 5 + 3 + 1) * 3 = 12 + 16 * 3 = 60 mod 10 = 0, 10 - 0 = 10, 10 mod 10 = 0, czyli jako cyfry kontrolnej uzyjemy "0"
Znak start kodowany jest jako: 1010
Para "12" kodowana jest jako: 11010010101100
Para "34" kodowana jest jako: 11011010010100
Para "56" kodowana jest jako: 11010011001010
Para "70" kodowana jest jako: 10101001100110
Znak stop kodowany jest jako: 1101.
Wszystko razem daje nam: 1010110100101011001101101001010011010011001010101010011001101101
co w zapisie graficznym wygląda następująco:
Implementacje
Autor | Język programowania | Komentarz | Otwórz | Pobierz | Ocena |
Tomasz Lubiński | C# | Microsoft Visual Studio 2010 | .cs | .cs | ***** / 0 |
Tomasz Lubiński | C/C++ | Borland Builder 6 | .cpp | .cpp | ***** / 1 |
Tomasz Lubiński | Delphi/Pascal | Borland Delphi 5 | .pas | .pas | ***** / 2 |
Tomasz Lubiński | Java | .java | .java | ***** / 2 |
Poprawiony: 29 sierpnia 2012 18:40