106
1 Diplomaterv Dolgozat címe: Utazási jegyek vásárlása, ellenőrzése, 1D és 2D vonalkód algoritmusok implementálása Konzulensek neve: Tihanyi Attila, Dr. Takács György Hallgató neve: Szilvássy Balázs Pázmány Péter Katolikus Egyetem Információs Technológiai Kar Műszaki Informatika Szak 2009. november 10.

Diplomaterv - Pázmány Péter Catholic Universityusers.itk.ppke.hu/~tihanyia/GSMapp/Szilvassy_Balazs.pdf · 1083 Budapest, Práter u. 50/A Tel/Fax: 886-4700 E-mail: [email protected]

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Diplomaterv - Pázmány Péter Catholic Universityusers.itk.ppke.hu/~tihanyia/GSMapp/Szilvassy_Balazs.pdf · 1083 Budapest, Práter u. 50/A Tel/Fax: 886-4700 E-mail: tanulmanyio@itk.ppke.hu

1

Diplomaterv

Dolgozat címe: Utazási jegyek vásárlása, ellenőrzése, 1D és 2D

vonalkód algoritmusok implementálása

Konzulensek neve: Tihanyi Attila, Dr. Takács György

Hallgató neve: Szilvássy Balázs

Pázmány Péter Katolikus Egyetem Információs Technológiai Kar Műszaki Informatika Szak

2009. november 10.

Page 2: Diplomaterv - Pázmány Péter Catholic Universityusers.itk.ppke.hu/~tihanyia/GSMapp/Szilvassy_Balazs.pdf · 1083 Budapest, Práter u. 50/A Tel/Fax: 886-4700 E-mail: tanulmanyio@itk.ppke.hu

2

PÁZMÁNY PÉTER KATOLIKUS EGYETEM

INFORMÁCIÓS TECHNOLÓGIAI KAR

DIPLOMATERV-TÉMA BEJELENTÉS

Név: Szilvássy Balázs

Tagozat: nappali Szak: Műszaki Informatika

Témavezető neve: Dr. Takács György, Tihanyi Attila

A dolgozat címe:

Utazási jegyek vásárlása, ellenőrzése, 1D és 2D vonalkód

algoritmusok implementálása

A dolgozat témája:

Mérje fel és elemezze a napjainkban leggyakrabban használt vonalkód technikákat. Válassza

ki és implementálja egy mobiljegyes alkalmazás céljának megfelelő vonalkódtípust. Értékelje

a kamera alkalmasságát a felhasznált vonalkód szemszögéből, és osztályozza az esetleges

hibaforrási lehetőségeket (orientáció, perspektivikus torzítás, zaj stb.).

Az elkészített programot értékelje az irodalomban szokásos módon. Az értékelés

eredményeit vesse össze az irodalmi adatokkal a fontosabb paraméterek (felismerési arány,

robosztusság stb.) szempontjából.

Dolgozzon ki egy jegyvásárlásra, ellenőrzésre alkalmas vonalkód technikára alapuló

bemutató rendszert. A bemutató rendszeren igazolja a kidolgozott vonalkód algoritmusok

működőképességét, állapítsa meg, és dokumentálja azok felhasználhatóságának korlátait.

Mutassa be a kidolgozott minta megoldás üzleti alkalmazhatóságát, és annak korlátait.

Page 3: Diplomaterv - Pázmány Péter Catholic Universityusers.itk.ppke.hu/~tihanyia/GSMapp/Szilvassy_Balazs.pdf · 1083 Budapest, Práter u. 50/A Tel/Fax: 886-4700 E-mail: tanulmanyio@itk.ppke.hu

3

A témavezetést vállalom:

....................................................

(a témavezető aláírása)

Kérem a diplomamunka témájának jóváhagyását.

Budapest, 200. …………….

....................................................

(a hallgató aláírása)

A diplomamunka-témát az Információs Technológiai Kar jóváhagyta.

Budapest, 200. ……………

......................................................

Nyékyné dr. Gaizler Judit

Dékán

A diplomatervet átvettem:

Budapest, 200…………………….

....................................................

(a témavezető aláírása)

Page 4: Diplomaterv - Pázmány Péter Catholic Universityusers.itk.ppke.hu/~tihanyia/GSMapp/Szilvassy_Balazs.pdf · 1083 Budapest, Práter u. 50/A Tel/Fax: 886-4700 E-mail: tanulmanyio@itk.ppke.hu

4

Pázmány Péter Katolikus Egyetem

Információs Technológiai Kar

Tanulmányi Osztály

1083 Budapest, Práter u. 50/A Tel/Fax: 886-4700 E-mail:

[email protected]

Nyilatkozat a hallgatói konzultáció rendszeres

látogatásáról

Szilvássy Balázs hallgató (neptunkódja CPXSHK) témavezetője

bejelentem, hogy a diplomaterv

címe: Utazási jegyek vásárlása, ellenőrzése, 1D és 2D vonalkód

algoritmusok implementálása

a diplomavédés időszakára (a Diplomaterv beadási határidő: 2009.

december 15.)

várhatóan

elkészül nem készül el

Budapest, 200

A konzulens neve:…………………………………

___________________________

Konzulens aláírása

Page 5: Diplomaterv - Pázmány Péter Catholic Universityusers.itk.ppke.hu/~tihanyia/GSMapp/Szilvassy_Balazs.pdf · 1083 Budapest, Práter u. 50/A Tel/Fax: 886-4700 E-mail: tanulmanyio@itk.ppke.hu

5

Nyilatkozat az önálló munkáról

Alulírott Szilvássy Balázs, a Pázmány Péter Katolikus Egyetem Információs

Technológiai Karának hallgatója kijelentem, hogy ezt a diplomatervet

meg nem engedett segítség nélkül, saját magam készítettem, és a

diplomamunkában csak a megadott forrásokat használtam fel. Minden

olyan részt, melyet szó szerint, vagy azonos értelemben, de átfogalmazva

más forrásból átvettem, egyértelműen a forrás megadásával

megjelöltem. Ezt a Diplomamunkát más szakon még nem nyújtottam be.

Page 6: Diplomaterv - Pázmány Péter Catholic Universityusers.itk.ppke.hu/~tihanyia/GSMapp/Szilvassy_Balazs.pdf · 1083 Budapest, Práter u. 50/A Tel/Fax: 886-4700 E-mail: tanulmanyio@itk.ppke.hu

6

Tartalomjegyzék

Diplomaterv ...........................................................................................................................1

DIPLOMATERV-TÉMA BEJELENTÉS ..........................................................................................2

Nyilatkozat a hallgatói konzultáció rendszeres látogatásáról ...................................................4

Nyilatkozat az önálló munkáról ...............................................................................................5

Tartalomjegyzék .....................................................................................................................6

Ábrajegyzék ............................................................................................................................8

Összefoglaló ......................................................................................................................... 10

Magyar nyelvű összefoglaló .............................................................................................. 10

Summary in English........................................................................................................... 12

Deutschsprachige Zusammenfassung................................................................................ 13

Bevezetés ............................................................................................................................. 15

A feladat értelmezése ....................................................................................................... 16

A tervezés célja ................................................................................................................. 17

A feladat indokoltsága ...................................................................................................... 17

A diplomaterv felépítésének rövid vázlata ........................................................................ 18

1. Vonalkódtechnika ............................................................................................................. 19

1.1. Előzmények................................................................................................................ 19

1.2. Vonalkód és más automatikus azonosítási eljárások ................................................... 20

1.3. A vonalkódok fejlődése a kezdetektől napjainkig ........................................................ 21

1.4. Felhasznált eszközök .................................................................................................. 22

2. Vonalkód összefoglaló ...................................................................................................... 24

2.1. Vonalkódtechnikai kifejezések definiálása .................................................................. 24

2.1.1. Az általános vonalkód felépítése.......................................................................... 26

2.1.2. Kereskedelmi és ipari kódok ................................................................................ 29

2.2. Egydimenziós numerikus és alfanumerikus vonalkódok .............................................. 30

2.2.1. UPC és EAN ......................................................................................................... 30

2.2.2. 2 of 5 vonalkódok ................................................................................................ 34

2.2.3. Szélesség-modulált vonalkódok ........................................................................... 35

2.2.4. Codabar vonalkódok............................................................................................ 35

2.2.5 Code 39 alfanumerikus ipari vonalkód .................................................................. 36

2.2.6. Code 128 alfanumerikus ipari kód ....................................................................... 36

2.3. Stacked barcodes ....................................................................................................... 37

Page 7: Diplomaterv - Pázmány Péter Catholic Universityusers.itk.ppke.hu/~tihanyia/GSMapp/Szilvassy_Balazs.pdf · 1083 Budapest, Práter u. 50/A Tel/Fax: 886-4700 E-mail: tanulmanyio@itk.ppke.hu

7

2.4. Kutatásom összefoglaló eredményei .......................................................................... 38

2.4.1. Az egydimenziós kódolás elégtelensége .............................................................. 41

2.5. Kétdimenziós vonalkódok .......................................................................................... 42

2.5.1. Datamatrix .......................................................................................................... 44

3. A Datamatrix vonalkód, mint elektronikus jegy ................................................................. 52

3.1. A Datamatrixszal kapcsolatos nehézségek .................................................................. 52

3.2. Nyílt forráskódok ....................................................................................................... 52

3.3. Datamatrix szemben a QR kóddal............................................................................... 53

3.4. A datamatrix kód írása ............................................................................................... 55

3.5. A datamatrix kód olvasása.......................................................................................... 56

3.6. A datamatrixszal kapcsolatos kihívások ...................................................................... 57

3.7. Vonalkód olvasó, mint mobiltelefonos alkalmazás...................................................... 58

4. Képfeldolgozási eljárások, saját program létrejötte ........................................................... 62

4.1. A Google ZXing nevű projektben való szerepem ......................................................... 62

4.2. A feladat konkretizálása és előkészítése ..................................................................... 63

4.3. A keretrendszer és a tesztképek két fontos szereplője................................................ 63

4.4. Datamatrix kód megtalálása egy képen ...................................................................... 65

5. Elektronikus jegy-rendszer bevezetése egy kitalált cégnél ................................................. 72

5.1. A rendszer céljának leírása a megrendelő cég szemszögéből ...................................... 72

5.2. A rendszer funkcionális követelményei ...................................................................... 73

5.3. A rendszer nem-funkcionális követelményei .............................................................. 74

5.4. Szakterületi követelmények vázlata ........................................................................... 75

5.5. Egy használati eset forgatókönyvének felvázolása ...................................................... 75

5.6. Az elektronikus utazási jegy bevezetésének célja ....................................................... 76

5.7. Létrehozandó termékek, szolgáltatások és elvégzendő feladatok ............................... 77

5.8. A rendszer architekturális modellje ............................................................................ 78

5.9. A rendszer tesztelési tervei ........................................................................................ 81

5.10. Elektronikus jegykezelő rendszer egy gyakorlati megvalósítása ................................ 84

Összefoglalás ........................................................................................................................ 97

Köszönetnyilvánítás ............................................................................................................ 103

Irodalomjegyzék ................................................................................................................. 104

Mellékletek ........................................................................................................................ 106

Page 8: Diplomaterv - Pázmány Péter Catholic Universityusers.itk.ppke.hu/~tihanyia/GSMapp/Szilvassy_Balazs.pdf · 1083 Budapest, Práter u. 50/A Tel/Fax: 886-4700 E-mail: tanulmanyio@itk.ppke.hu

8

Ábrajegyzék

1. ábra: Egydimenziós vonalkód 21

2. ábra: Kétdimenziós vonalkód 21 3. ábra: A vonalkódok fejlődése 22 4. ábra: Morse-kódtáblázat 25 5. ábra: Vonalkód összehasonlító táblázat 26 6. ábra: Általános vonalkód felépítése 26 7. ábra: Diszkrét kódolás 28 8. ábra: Folytonos kódolás 28 9. ábra: CODE 39 típusú, minta vonalkód 29 10. ábra: Vonalkódok sokszínűsége 30 11. ábra: UPC-A vonalkód 31 12. ábra: UPC-A vonalkód rendszerazonosítói 31 13. ábra: UPC-E vonalkód 32 14. ábra: EAN-13 vonalkód 32 15. ábra: EAN-8 vonalkód 33 16. ábra: UPC kiegészítő kódolás 33 17. ábra: Standard 2 of 5 vonalkód 34 18. ábra: Interleaved 2 of 5 vonalkód 34 19. ábra: Szélesség modulált vonalkód 35 20. ábra: Codebar vonalkód 35 21. ábra: Code 39 vonalkód 36 22. ábra: Ál-kétdimenziós vonalkód 37 23. ábra: Saját egydimenziós vonalkód író és olvasó programom 38 24. ábra: Saját egydimenziós vonalkód író/olvasó programom szkennelés közben 39 25. ábra: Saját egydimenziós vonalkód író és olvasó programom szótárfájlja 40 26. ábra: Kétdimenziós vonalkódok [11] 42-44 27. ábra: A kétdimenziós datamatrix vonalkód tulajdonságai 45-46 28. ábra: A kétdimenziós datamatrix vonalkód magas szintű kódolása 47 29. ábra: A datamatrix vonalkód diagonális menti bejárása 47 30. ábra: Információkódolás folyamatábrája 49 31. ábra: Információkódolási folyamatábra Datamatrix esetén 51 32. ábra: QR kód hibajavítási szint táblázat 53 33. ábra: QR kód és Datamatrix helyigényét összehasonlító táblázat 54 34. ábra: QR kód és Datamatrix méretbeli különbsége 54 35. ábra: Datamatrix vonalkódot író és elmentő alkalmazás 55 36. ábra: Google ZXing Java SE változata újrafordítva működés közben 56 37. ábra: KaywaReader, mobiltelefonos alkalmazás 58 38. ábra: Teszt-keretrendszerem kezelőfelülete 63 39. ábra: Teszt-keretrendszerem képmegjelenítője 64 40. ábra: Teszt-keretrendszerem clusterező algoritmusának végeredménye 64 41. ábra: Teszt-keretrendszerem befoglaló négyzet számítás utáni eredménye 65 42. ábra: Teszt-keretrendszerem eredményképei binearizálás után 66 43. ábra: Teszt-keretrendszerem eredményképei első iterációs rossz binearizálás után

66

44. ábra: Teszt-keretrendszerem eredményképei első iterációs jó binearizálás után 67 45. ábra: Teszt-keretrendszerem eredményképe szándékosan rosszul paraméterezett vonalkódkeresésre

67

Page 9: Diplomaterv - Pázmány Péter Catholic Universityusers.itk.ppke.hu/~tihanyia/GSMapp/Szilvassy_Balazs.pdf · 1083 Budapest, Práter u. 50/A Tel/Fax: 886-4700 E-mail: tanulmanyio@itk.ppke.hu

9

46. ábra: Teszt-keretrendszerem eredményképe clusterezés után 68 47. ábra: Teszt-keretrendszerem véglegesnek tekinthető eredményei 68 48. ábra: Teszt-keretrendszerem egy alternatívája módosított él-kereséssel 69 49. ábra: Tesztképek a keretrendszeremhez 71 50. ábra: Nem-funkcionális követelmények és mérésük 74 51. ábra: Egy lehetséges használati eset UML diagram 76 52. ábra: Ellenőrzés folyamatának adatfolyam modellje 78 53. ábra: Adatfolyam modell az ellenőr napi kódlekérdezésének folyamatáról 78 54. ábra: Szerver oldali adatfolyam modell 78 55. ábra: Szerverre befutó igény adatfolyam modellje 79 56. ábra: Az elektronikus mobiljegyek rendszerének rétegezett architektúra modellje

79

57. ábra: Az ellenőr oldali alrendszerek UML diagramja 81 58. ábra: A szerver oldali alrendszerek UML diagramja 81 59. ábra: Tesztelési lépések folyamatábrája a rendszer fejlesztésekor 82 60. ábra: Az Androidos mobilalkalmazásomhoz használt teszt datamatrix 87 61. ábra: Datamatrix kapacitástáblázata a különböző formátumokra [28] 88 62. ábra: Külön futási szálon végrehajtott SMS jegy értelmezés 89 63. ábra: A tárolt SMS jegyek megjelenítése 90 64. ábra: A tárolt SMS jegyek megjelenítése kétdimenziós Datamatrix vonalkódként

90

65. ábra: Elektronikus jegy vásárlásának és ellenőrzésének folyamata 96

Page 10: Diplomaterv - Pázmány Péter Catholic Universityusers.itk.ppke.hu/~tihanyia/GSMapp/Szilvassy_Balazs.pdf · 1083 Budapest, Práter u. 50/A Tel/Fax: 886-4700 E-mail: tanulmanyio@itk.ppke.hu

10

Összefoglaló

Magyar nyelvű összefoglaló

Magyarországon a nyugati országokkal ellentétben rossz tendencia, hogy a

tömegközlekedéssel utazók többsége még mindig bliccel. 1-2 éve figyelhető meg az a

kezdeményezés, mely hivatott ezen az állapoton változtatni. Szigorították az ellenőrzéseket a

főbb vonalak mentén, továbbá az esti járatokon is egyértelművé teszik, hogy nem a

szórakozóhelyek búcsúajándéka az ingyenes hazaút. Ezek a szigorítások bár mérsékelték a

közlekedési vállalatok veszteségességét, a cégek továbbra sem termelnek profitot, ezért

komoly állami támogatásra szorulnak, ami pedig az adófizető polgárok pénzéből történik.

Korunk technológiai vívmányait kihasználva ez a ráfordított összeg sokkal hatékonyabban is

felhasználhatóvá válna más szektorokban.

Egy szintén új keletű fogalom az úgynevezett „zöld gondolkodás”, mely arra próbálja

ösztönözni a cégeket, hogy a mindennapi rutinműveleteket sokkal környezettudatosabban

végezzék el. A korszerű technológiai invesztíciókkal a kezdeti, magasabb költségek ellenére is,

hosszútávon kifizetődőbbé válik a „zöld gondolkodás”.

Jelen szakdolgozat témája egy olyan rendszer kifejlesztése, mely követi a mai

trendeket, ügyelve a környezettudatosságra, a kornak megfelelő technológiai háttérrel

felvértezve igyekszik a papír alapú vásárlást 21. századibbá tenni, és utat nyitni az

elektronikus kereskedelem világába. A rendszer főbb aspektusai a már szinte mindenki által

elérhető elektronikus készülékekben rejlő lehetőségek kiaknázása, a papír alapú vásárlás

leváltása, egy új, lehetséges alternatíva felvázolása úgy, hogy a végeredmény hatékonyabb,

biztonságosabb és nyomon követhetőbb legyen.

Diplomamunkámban sorra veszem a napjainkban leggyakrabban használt egy- és

kétdimenziós vonalkódolási technikákat, példákkal illusztrálva ezek előnyeit és korlátait.

Bemutatom egy választott egydimenziós vonalkód implementálásának kétféle - általam

használt - megközelítését, majd levonva a következtetést, miszerint célunk eléréséhez ezek

nem elégségesek, haladok tovább a kétdimenziós kódolások irányába. Bemutatom az általam

preferált kétdimenziós Datamatrix vonalkódot, pozitív tulajdonságait, és az írásához,

olvasásához használt alkalmazásokat és eszközöket. A továbbiakban beszélek az általam

Page 11: Diplomaterv - Pázmány Péter Catholic Universityusers.itk.ppke.hu/~tihanyia/GSMapp/Szilvassy_Balazs.pdf · 1083 Budapest, Práter u. 50/A Tel/Fax: 886-4700 E-mail: tanulmanyio@itk.ppke.hu

11

épített rendszer egyik fő komponenséről, a mobiltelefonról. Egy általam programozott

keretrendszerben vizsgálom tesztképeken a Datamatrix vonalkód felismerhetőségét általános

célú mobiltelefon minőségű kamerák használatával. Irodalmi kutatást végezve

összehasonlítom az általam írt kép detekciós algoritmusokat a piacon kapható szoftverek

képességeivel egy-két példát külön ki is emelve. Végső soron vázolom majd egy elektronikus

jegyek vásárlását kiszolgáló rendszer üzleti lehetőségeit és az általam implementált bemutató

jellegű változatát.

Page 12: Diplomaterv - Pázmány Péter Catholic Universityusers.itk.ppke.hu/~tihanyia/GSMapp/Szilvassy_Balazs.pdf · 1083 Budapest, Práter u. 50/A Tel/Fax: 886-4700 E-mail: tanulmanyio@itk.ppke.hu

12

Summary in English

Unlike the other Western countries the tendency is pretty bad in Hungary when using

the public transportation since the majority is still playing hooky. Finally a couple of years ago

the system introduced an improvement of this situation. On the main lines they toughened

up checking of the tickets and now it is made sure that everyone is aware of the fact that the

usage of a night bus is not included in the clubs’ entrance fee. There is no such a thing as a

free ride home. These aggravations restrained some losses of the transportation corporate

but it is still not making any profit which is still based on the massive support from the state

which comes from taxes. Using the technologies we have today the amount of money could

be spent more efficiently and on more useful purposes.

There is another new idea. The so called “Thinking Green”, which encourages companies in

the idea that the daily routine duties should be done with more focus on the environment.

Also that with the recent technology based investments even if at the beginning it might be

more expensive in long-terms “Thinking Green” will be paid-off.

This thesis is about a system following today’s trend. Paying attention to the

environment, making the paper based shopping more XXI. Century-like, opening up to the

world of electronic commercialism. The system’s main aspects are the utilization of the

electronic devices which are available to almost everyone and the potential alternative of

relaying the paper based shopping to a more efficient, safer, and more traceable issue.

In my thesis I look at today’s most used one- and two-dimensional barcode

techniques showing their pros and cons. I demonstrate two approaches of the

implementation of an elected one-dimensional barcode, taking conclusions, which says that

to reach our goal these barcodes are not sufficient and I move towards the two-dimensional

barcodes. I exhibit a two-dimensional barcode I prefer, the so called Datamatrix, its positive

features, and applications that are needed to read and write it. Henceforward I talk about a

main component of a system I have built, about the cell phones, and about a framework I

have programmed. Furthermore how it tests Datamatrix barcode’s recognizability by a

common call phone’s camera. Using literary research I compare the image detection

algorithms - which I have invented - with the softwares available on the market, highlighting

a couple of examples. Finally I outline the business opportunities of a shopping system, using

electronic tickets, and an exhibitory version, which I implemented.

Page 13: Diplomaterv - Pázmány Péter Catholic Universityusers.itk.ppke.hu/~tihanyia/GSMapp/Szilvassy_Balazs.pdf · 1083 Budapest, Práter u. 50/A Tel/Fax: 886-4700 E-mail: tanulmanyio@itk.ppke.hu

13

Deutschsprachige Zusammenfassung

Die Mehrheit der Benutzer der öffentlichen Verkehrsmitteln fährt schwarz, das heißt ohne

gültigen Fahrschein. Diese Tendenz ist in Ungarn im Gegensatz zu den westeuropäischen

Ländern noch immer steigend. Die Initiative zur Änderung dieser Situation ist seit ein paar

Jahren zu beobachten. Dabei wurde die Kontrolle bei den Hauptlinien verschärft, und es

wurde auch eindeutig klar gemacht, dass die kostenlose Fahrt in der Nacht kein

Gratisangebot der Vergnügungsstätten und Discos ist. Obwohl diese Verschärfungen einen

Teil des Defizits der Verkehrsunternehmen verringert haben, sind die Firmen noch immer

nicht gewinnbringend. Sie benötigen hohe staatliche Unterstützungen, die mit dem Geld der

Staatsbürger finanziert werden. Wenn wir die heutigen technischen Errungenschaften nutzen

würden, könnte man dieses Geld in anderen Bereichen viel wirksamer verwerten.

Der Begriff „Grünes Denken”, der auch ziemlich neu ist, versucht die Firmen dazu zu

bewegen, die alltäglichen Routineaufgaben viel umweltbewusster zu erledigen und die

neuen technischen Errungenschaften auch trotz der anfänglich höheren Kosten

zu nutzen, denn das „Grüne Denken” wird sich auf lange Sicht lohnen.

In dieser Diplomarbeit geht es um die Entwicklung eines Systems, das den neuen

Trends folgt, auf das Umweltbewusstsein achtet und versucht, aufgrund des technischen

Hintergrunds von heute, den Kaufprozess zu modernisieren und statt Millionen von

Papierblättern zu verwenden, eher die Möglichkeiten des 21. Jahrhundertes zu nutzen und

den Weg für die Welt des elektronischen Handels zu bereiten. Die wichtigsten Aspekte des

Systems sind die Nutzung der vielen Möglichkeiten aller bekannten elektronischen Geräte

und die Vorstellung einer möglichen Alternative zur Ablösung des auf Papier gründenden

Kaufprozesses, deren Endergebnis man besser auf die Spur folgen kann und deswegen viel

wirksamer und sicherer ist.

Ich nehme mir in meiner Diplomarbeit die am öftesten benutzten ein- und

zweidimensionalen Strichcodes der Reihe nach vor, und zeige dabei ihre Vor- und Nachteile

auf. Ich präsentiere zwei von mir verwendete Annäherungsweisen der Implementierung

eines gewählten eindimensionalen Barcodes. Danach komme ich zur Schlussfolgerung, dass

diese Methoden hinsichtlich unseres Ziels nicht befriedigend sind, und gehe weiter in die

Richtung der zweidimensionalen Barcodes. Im Folgenden gebe ich die von mir bevorzugte

zweidimensionale Datamatrix Strichcode, ihre positiven Eigenschaften und die beim

Page 14: Diplomaterv - Pázmány Péter Catholic Universityusers.itk.ppke.hu/~tihanyia/GSMapp/Szilvassy_Balazs.pdf · 1083 Budapest, Práter u. 50/A Tel/Fax: 886-4700 E-mail: tanulmanyio@itk.ppke.hu

14

Schreiben und Lesen verwendeten Anwendungen und Mittel bekannt. Im Weiteren schreibe

ich über die Komponente des von mir geplanten Systems, über das Handy, und untersuche

die Erkennbarkeit der Datamatrix Barcode auf Testbildern in einem von mir programmierten

Rahmensystem mit Hilfe von Kameras mit Handyqualität. Ich vergleiche aufgrund literalischer

Forschungen die von mir vorgestellten Algorithmen zur Imagedetektion mit den Fähigkeiten

der ähnlichen Produkte auf dem Markt. Zum Schluss schildere ich die Geschäftsmöglichkeiten

eines Systems zum Verkauf elektronischer Tickets und die von mir erstellte Demovariante.

Page 15: Diplomaterv - Pázmány Péter Catholic Universityusers.itk.ppke.hu/~tihanyia/GSMapp/Szilvassy_Balazs.pdf · 1083 Budapest, Práter u. 50/A Tel/Fax: 886-4700 E-mail: tanulmanyio@itk.ppke.hu

15

Bevezetés

A városi tömegközlekedés a modern nagyvárosok egyik legfontosabb infrastruktúrája.

Manapság egyre nagyobb az igény arra, hogy minél gyorsabban, minél hatékonyabban,

valamint minél kényelmesebben jussunk el A pontból B-be. Ez a városi tömegközlekedés fő

profilja, azaz megtervezi és összehangolja a létező infrastrukturális lehetőségeket. Ez

természetesen hatalmas kiadásokkal jár, melyek nem maradhatnak fedezet nélkül.

Világviszonylatban egyre inkább elterjedt trendnek mondható az, hogy a nagyvárosi

tömegközlekedés félig piaci alapokon áll, azaz állami támogatásban részesül, ugyanakkor a

fennmaradó hiányt jegyek, bérletek értékesítésével pótolja. Ezek megvásárlásával szerzik

meg az utasok a jogot arra, hogy használhassák a városi tömegközlekedés szolgáltatásait. A

jegyek, bérletek értékesítése a rendszer egyik kényelmi szempontokból sarkalatos eleme. Az

utasoknak sok esetben hosszú, kígyózó sorokat kell végigállnia, hogy meg tudjanak venni egy

a következő időszakra, vagy egy másik körzetre szóló bérletet/jegyet. Kényelmi

szempontokból indokolt az elektronikus jegyrendszer bevezetése. Így az utasoknak nem kell a

pénztárak előtti sorokban tölteniük értékes idejüket, csupán egy SMS segítségével

megválthatják utazási jegyüket vagy bérletüket.

Általánosságban kijelenthető, hogy manapság 1 főre 1-2 mobiltelefon jut Magyarországon,

azaz csak a tömegközlekedésben részt vevő személyek elenyésző része nem rendelkezik az

elektronikus jegyrendszer használatához szükséges feltételekkel. Ennek ellenére számukra is

óriási előnyökkel jár az új rendszer, mivel a bérletpénztárak előtti sorok hosszúsága

várhatóan nagymértékben csökkenni fog. Ennek köszönhetően az olyan forgalmas helyeken,

ahol több pénztárablak is működik, egyszerre kevesebb nyitva tartó ablak is elegendő lehet.

Ugyanakkor egy időszakos forgalomnövekedés esetén az összes pénztárablak működésbe

állítható, így jóval rugalmasabb lesz a kiszolgálás, és az időszakos nagy tömegek (pl.

sportesemény, nemzeti ünnep, egyéb tömegrendezvény) kiszolgálása is gördülékenyebb lesz.

Indirekt módon itt utalnék arra, hogy természetesen nem lehetne jelenleg csak úgy

megszüntetni a papír alapú jegyvásárlást, hiszen nem várható el egy embertől sem, hogy

polgári kötelessége legyen legalább egy mobiltelefon birtoklása és ennek készségszintű

használata.

Page 16: Diplomaterv - Pázmány Péter Catholic Universityusers.itk.ppke.hu/~tihanyia/GSMapp/Szilvassy_Balazs.pdf · 1083 Budapest, Práter u. 50/A Tel/Fax: 886-4700 E-mail: tanulmanyio@itk.ppke.hu

16

A rendszer egy másik előnye, hogy nagyon nagy pontossággal képes az utazásra jogosulatlan

személyek kiszűrésére a multidiszciplináris ismereteket igénylő implementációnak és a már

más területeken kiválóan teljesítő titkosítási eljárásoknak köszönhetően. Hamisítani ezen

okok miatt szinte lehetetlen, pontosabban értelmetlen, hiszen időigényes munka egy ilyen

kód visszafejtése. Ha az ellenőrökön át is jutna valaki egy hamisított kóddal, a szerveroldali

megoldásom pillanatok alatt kiszúrja a potenciális veszélyt, és megváltoztatja a titkosítási

kódot, melyet így újból hosszas munkával fejthetne vissza a tettes, és esetleg használhatna

újabb egy napi utazásra. Ebből kifolyólag a bliccelők száma a bevezetést követően az azt

megelőző időszak töredékére fog visszaesni. Nem elhanyagolható tény továbbá az sem, hogy

az elektronikus rendszer elterjedése kiváltja a korábbi papír alapú megoldásokat, mellyel

plusz pont érhető el a környezetvédők szférájában. Az elektronikus úton történő vásárlás

feleslegessé teszi majd a hatalmas mennyiségben gyártott papír alapú jegyeket és bérleteket,

illetve ezek lejárta után további hulladéktól kíméljük meg a környezetünket, mely jelenleg

túlnyomó részben nem újrahasznált szemétként fejezi be pályafutását.

A feladat értelmezése

Feladatom tehát egy olyan rendszer kidolgozása, mely utazási jegyek vásárlását és

ellenőrzését segíti elő a napjainkban egyre divatosabbá váló vonalkód-technikák

alkalmazásával. Meg kell találnom, hogy mely vagy melyek azok a vonalkódok, amik a

legalkalmasabbnak tekinthetőek a kitűzött cél eléréséhez. Vizsgálnom kell, hogy elektronikus

jegyek vásárlását milyen eszközök használatával tudnám lehetővé tenni, illetve hogy ezeknek

mik az előnyeik és hátrányaik, továbbá, hogy valós rendszerként is megállnák-e a helyüket.

Ezen felül meg kell terveznem a vásárlói oldalt kiszolgáló részt, mely az egész rendszer lelkéül

szolgál majd. Egy fontos részét jelentené dolgozatomnak annak kidolgozása is, hogy

megfelelő biztonsági rendszert építsünk ki a digitális jegyek hamisításának

megakadályozására.

Page 17: Diplomaterv - Pázmány Péter Catholic Universityusers.itk.ppke.hu/~tihanyia/GSMapp/Szilvassy_Balazs.pdf · 1083 Budapest, Práter u. 50/A Tel/Fax: 886-4700 E-mail: tanulmanyio@itk.ppke.hu

17

A tervezés célja

A rendszer tervének célja egy olyan kliens-szerver architektúra kidolgozása, melyben

a vásárlók elektronikus eszközök segítségével tudják megvásárolni a korábbi, papír alapú

utazási jegyeket. További fontos tervezési szempontnak minősíthető a vásárolt jegyek

korszerűbb ellenőrzése, nyilvántartása, mely mind a kiszolgáló szerver oldalon, mind utazási

jegyek ellenőrök által történő ellenőrzések formájában valósulna meg. Ezáltal a polgároknak

lehetőséget tudnánk kínálni egy környezettudatosabb és kényelmesebb vásárlási forma

asszimilálására. Az üzemeltető cég számára pedig egy olyan módszert jelentene ez, mellyel

közel nullára redukálható a jegyhamisítások száma vagy egyáltalán a hamisítás kísérlete. Ezen

felül komoly és pontos vásárlói statisztikák készítésére és kimutatására adna lehetőséget. A

tervezett rendszerrel nyomon követhetőek lennének - más adatok mellett – a legterheltebb

utazási pontok. Számszerű adatokkal, korrelációkat lehetne felfedni ezen pontok és a vásárlás

dátuma között (például sportesemények nagyfokú látogatottsága), továbbá havi és éves

összesítések is pillanatok alatt kinyerhetőek lennének.

A feladat indokoltsága

Egyre több vészjósló hírről lehet hallani, mely szerint Földünk erőforrásainak és

élőkörnyezetének észnélküli kiaknázása komoly következményekkel fog járni, melyeket már

gyerekeink, unokáink, és az utánuk következő generációk fognak megsínyleni. Egy apró

papírjegy ugyan mit tehet hozzá vagy vehet el, gondolhatná egy laikus ember. Többségünk

fejében fel sem merül, hogy egy papírjegy elkészítéséhez is legalább egy fát ki kell vágni. A

fából varázsszóra sem lesz papír, azt el kell szállítani a feldolgozóüzembe, mely jó esetben a

természet segítségével történik, amikor folyókon úsztatják le a kivágott fatönköket. A

benzinevő motoros fűrészek okozta károk után pedig az elszállítás is újabb fosszilis

üzemanyag használatával történik. Az üzem működése is energiához kötött, a fát fel kell

dolgozni, vegyi anyagokkal keverni, és előállítani a kész végterméket. Erre majd még

nyomtatunk, majd méretre vágjuk és a felhasználási területekre kiszállítjuk. Mind-mind

energiaigényes műveletek sorozata. Ki gondolná, hogy egy utazási jegy ilyen hosszú utat jár

be, míg a zsebünkbe kerül?! Ha nem is váltjuk meg egy elektronikus rendszer kifejlesztésével

a világot, indirekt módon talán akkor is sokat könnyíthetünk a természet igénybevételén.

Page 18: Diplomaterv - Pázmány Péter Catholic Universityusers.itk.ppke.hu/~tihanyia/GSMapp/Szilvassy_Balazs.pdf · 1083 Budapest, Práter u. 50/A Tel/Fax: 886-4700 E-mail: tanulmanyio@itk.ppke.hu

18

Egy másik hasonlóan fontos érv is áll még a kidolgozandó rendszer megvalósítása mellett.

Nevezetesen, hogy az utaztatás költségei kézben tarthatóbbak és nyomon követhetőbbek

legyenek. Szükséges, hogy az államnak pontos rálátása legyen az állapotokra. Egy

elektronikus utazási rendszer bevezetésével digitálisan archiválhatóak és elemezhetőek

lennének az adatok, tervezni lehetne a költségekkel, a fejlesztésekkel, és sokkal figyelemmel

kísérhetőbbé és elszámoltathatóbbá válna a tömegközlekedést kiszolgáló rendszer.

A diplomaterv felépítésének rövid vázlata

Diplomamunkámban végigveszem a manapság használt fontosabb egy- és

kétdimenziós vonalkódokat, írok ezek előnyeiről és hátrányairól. Bemutatom egy általam

választott - a mai napig használatban lévő - egydimenziós vonalkód olvasását és írását

lehetővé tévő program implementálását. Beszélek továbbá kétféle programozási

megközelítésről, melyeket az implementáláskor használtam. Ez után levonom a

következtetést, hogy az egydimenziós kódok használata vagy a kód tartalmának

korlátozottsága vagy a helyigénye miatt, számunkra nem alkalmas, ezért a kétdimenziós

kódolás irányába kell továbbhaladnunk. Bemutatom az általam preferált Datamatrix

vonalkódot, pozitív tulajdonságait, írásához és olvasásához használt alkalmazásokat és

eszközöket. Egy általam írt keretrendszerben vizsgálok majd általános minőségű

mobiltelefon kamerájával készített képekkel egyenértékű, Datamatrix kétdimenziós

vonalkódot tartalmazó tesztképeket. Majd bemutatom a hibaforrási lehetőségeket. Irodalmi

forrásokkal összevetve osztályozom az általam írt kép detekciós algoritmus használhatóságát.

Végső soron vázolom majd egy elektronikus jegyek vásárlását kiszolgáló rendszer üzleti

lehetőségeit és az általam implementált bemutató jellegű változatát, melynek alapjául egy

kliens-szerver architektúra szolgál, mely komoly biztonsági tényezők figyelembevételével

készült el.

Page 19: Diplomaterv - Pázmány Péter Catholic Universityusers.itk.ppke.hu/~tihanyia/GSMapp/Szilvassy_Balazs.pdf · 1083 Budapest, Práter u. 50/A Tel/Fax: 886-4700 E-mail: tanulmanyio@itk.ppke.hu

19

1. Vonalkódtechnika

Napjainkban egyre nehezebb lépést tartani a rohanó világ tempójával. A

követelmények magasabbak, és az nyer, aki ezeknek eleget tud tenni. Polihisztorok már nem

léteznek, az emberiség tudása már oly szerteágazó és hatalmas, hogy egy ember ezt nem

lenne képes mind átlátni. Ennek következménye az is, hogy a számítástechnika fejlődésével

nemcsak a szoftver és a hardver vált szét, de külön specialisták foglalkoznak a hálózatokkal, a

multimédiával, és így van ez a vonalkódtechnikával is. Magyarországon több mint 20 éve

már, hogy az első vonalkódos szakcégek megjelentek. A magyar vonalkódos fejlesztések

szintúgy megtalálhatóak az APEH-nál, a könyvtárakban, gyógyszertárakban, a benzinkutaknál

vagy épp a legkülönbözőbb profilú iparvállalatoknál.

Az automatikus azonosítás, melynek a vonalkódtechnika, továbbá az optikai karakter-

felismerés, a rádiófrekvenciás azonosítás, mágnescsík-felismerés vagy a hangfelismerési

technika is része, több százmilliárd eurós piaci forgalmat tudhat magáénak. Ebből kifolyólag

érthető, hogy igény van az egyre korszerűbb és hatékonyabb megoldásokra.

A vonalkódtechnika és egyéb automatikus azonosítási technikák használta számtalan előnyt

hordoz magában. A korszerű informatikai rendszerekben, napjainkban, az egyetlen gyenge

láncszemet az ember testesíti meg, aki a számítógépet kezeli. Kutatások eredménye

bizonyítja, hogy az adatrögzítők átlag 300 karakterenként tévednek egyet hagyományos

adatbevitel esetén, amelyekből származó hibák jelentős része nem szűrhető ki

programokkal, de létrejöttük megelőzhető lett volna például vonalkódok alkalmazásával.

Továbbá az idő is egy nagyon fontos faktor, mely nem elhanyagolható tényező, akár

szolgáltatást nyújtunk, vagy éppen szeretnénk igénybe venni. Így a valós idejű robosztus

megoldásokra kell hangsúlyt fektetnünk.

1.1. Előzmények

Az évtizedekkel visszanyúló kezdeti kísérletezések és próbálgatások után az ’50-es,

illetve ’60-as évek elején jelentek meg az első gyakorlatilag is alkalmazható vonalkódolvasók,

és a mai szemmel már primitívnek tűnő vonalkódok. Az első alkalmazások szinte kivétel

nélkül válogató rendszerben történtek. A gyors fejlődés a ’70-es évek elején kezdődött és

Page 20: Diplomaterv - Pázmány Péter Catholic Universityusers.itk.ppke.hu/~tihanyia/GSMapp/Szilvassy_Balazs.pdf · 1083 Budapest, Práter u. 50/A Tel/Fax: 886-4700 E-mail: tanulmanyio@itk.ppke.hu

20

napjainkig tart. Ugyanis ekkorra jutott a lézertechnika és a számítástechnika is olyan szintre,

hogy nagy tömegű adatot megbízhatóan és gyorsan volt képes felismerni, továbbítani és

feldolgozni.

Az első mozgósugaras lézer fényforrást használó szkenner még 60 kilógrammos volt, és

körülbelül 1973-ra tehető a piacra kerülésének időpontja [1]. Ez a szerkezet még diszkrét

logikával működött, amit aztán később a szoftver-vezérelt megoldások váltottak fel. A

mikroelektronika ugrásszerű fejlődése lehetővé tette „intelligens” hordozható olvasók és

terminálok kifejlesztését. Elérhetővé vált a számítógépekkel történő valós idejű

kommunikáció. A ’80-as évek elejére az egydimenziós vonalkódos technológia minden

tekintetben kiforrott. A technikai fejlődés azonban sohasem öncélú, hanem valós piaci

igények kiszolgálására alapul. A nagy tömegben előállított termékek áramlásának manuális

eszközökkel történő nyomon követése nagy élőmunka ráfordítást igényel, és ami még

hátrányosabb, hogy növekvő adatmennyiségek esetén az emberi tévesztések aránya

exponenciálisan nő. Így a folyamat nem állt meg, megszülettek az újabb vonalkód-típus

családok.

1.2. Vonalkód és más automatikus azonosítási eljárások

Automatikus azonosításnak azon eljárásokat és technológiákat nevezzük, melyek

lehetővé teszik, hogy emberi beavatkozás nélkül egy objektumról adatokat nyerjünk ki, és azt

további feldolgozásra alkalmas formára alakítsuk. Ide sorolandó többek között az

alakfelismerés, mágneses jelfelismerés, rádiófrekvenciás azonosítás és az optikai

jelfelismerés is. Az automatikus azonosítási eljárások közül mindegyiknek megvan a saját,

már jól kitaposott alkalmazási területe. Így például a hitelkártyák azonosítására a mágneses

felismerés szolgál, gépjárművek azonosítására pedig a rádiófrekvenciás megoldás terjedt

inkább el.

A vonalkódok (angolul: barcode) egy gépek által olvasható reprezentációi az információnak.

Általában fekete tintát használnak fehér háttéren, hogy az adatokat rögzítsük. Eredetileg a

vonalkódok a nevükből adódóan is paralel vonalakból álló információhordozók voltak,

melyek a váltakozó fehér és fekete vonalak szélességében kódolták az adatokat (1. ábra) [2].

Napjainkra persze ezek már kinőtték a dimenziójukat, és megjelentek újabb tagjaik, melyek

inkább hasonlítanak zajos, összepöttyözött fekete-fehér képekre (2. ábra).

Page 21: Diplomaterv - Pázmány Péter Catholic Universityusers.itk.ppke.hu/~tihanyia/GSMapp/Szilvassy_Balazs.pdf · 1083 Budapest, Práter u. 50/A Tel/Fax: 886-4700 E-mail: tanulmanyio@itk.ppke.hu

21

A vonalkódok kiolvasásához általában optikai elven működő vonalkódolvasókat használnak,

de a mai csúcsteljesítményű számítógépekkel már könnyűszerrel megoldható, hogy a

digitalizált képből speciális képfeldolgozó szoftverekkel nyerjék ki az információt.

Valószínűleg észre sem vesszük, de valamennyi azonosítási eljárás közül talán a vonalkód-

technológia jelenik meg napjainkban a leginkább. Miért is van ez így? A kérdésre a választ

kezdetben a költséghatékony előállítás jelenthette, napjainkra pedig már olyan bejáratott

nemzetközi szabványok és megoldások állnak mögötte, melyek helyett igen nehéz lenne

bármi jobbal is előrukkolni. Nyomtatott adathordozó lévén, például a rádiófrekvenciás

megoldásokkal szemben, talán az egyik legolcsóbb automatikus azonosításra alkalmas

információhordozó. Egy tanulmány szerint vonalkódok implementálása napi szinten csupán

0,005 US$, míg a rádiófrekvenciás megoldás 0,07-0,30 US$ körül mozog [2]. Továbbá a

vonalkódok megvalósításának és a mai technológiai eszközöknek köszönhetően akár még

nagyobb távolságokból is biztonságosan olvasható. A mágneses eljárásokkal ellentétben nem

igényel közvetlen közelséget a leolvasásnál, hiszen optikai úton történik az egész folyamat.

Az optikai karakter-felismeréssel összehasonlítva pedig nyilvánvaló előnye, hogy kevésbé

sérülékeny, és egyes típusok esetén még nagyfokú rongálódás után is biztonságosan

kinyerhető az eredeti információ. Talán a rovásukra írható egyetlen hátrányuk, különösen az

1 dimenziós kódok esetén, hogy csak korlátozott adattartalom befogadását teszik lehetővé.

1.3. A vonalkódok fejlődése a kezdetektől napjainkig

Mint ahogy azt már korábban említettem, a legelső vonalkódos alkalmazások

osztályozó, válogató rendszerekben láttak napvilágot. Ezek zárt rendszerek voltak,

melyekben a vonalkódtípus és az eszközök kiválasztását külső szempontok nem motiválták.

Mint mindenhol, a zárt rendszeres megvalósítások a tömeges alkalmazhatóság természetes

korlátait képezik. Nem teszik ugyanis lehetővé például tulajdonosváltás esetén az előzőleg

vonalkóddal ellátott termékek azonosítását. A figyelem ezért már a kezdetektől fogva a

1. ábra: Egydimenziós vonalkód 2. ábra: Kétdimenziós vonalkód

Page 22: Diplomaterv - Pázmány Péter Catholic Universityusers.itk.ppke.hu/~tihanyia/GSMapp/Szilvassy_Balazs.pdf · 1083 Budapest, Práter u. 50/A Tel/Fax: 886-4700 E-mail: tanulmanyio@itk.ppke.hu

22

kisebb-nagyobb mértékben nyitott rendszerekben alkalmazható vonalkódok és szabványok

felé fordult. Az első nagy lépés 1973-ban történt, mikor az USA-ban megalakult az UPC

(Uniform Products Code Council), és kiskereskedelmi alkalmazásokra elfogadta a róla

elnevezett vonalkódtípust [1].

Míg a tradicionális vonalkódokban korlátozott hosszúságban, csak numerikus adatokat

lehetett kódolni, az újabb szabványok már lehetővé tették karakterek implementálását is.

Egyesek csak az angol ABC nagybetűs elemeit, míg más vonalkódokkal a teljes ASCII

karakterkészlet kódolhatóvá vált. Az igény, hogy számokon kívül egyéb karaktereket is

vonalkódként tárolhassunk, illetve hogy azonosan kicsi felületre minél több adatot

zsúfolhassunk, továbbá hogy ezek információtartalma nagyfokú sérülés esetén is még

biztonságosan kinyerhető legyen, elvezetett a kétdimenziós mátrix kódokhoz (3. ábra). Az

első próbálkozások egydimenziós vonalkódok egymás alá pakolásával valósultak meg. Ezeket

angolul „stacked barcodes”-nak hívjuk. Később megjelentek ezek sokkal komplexebb formái

[11].

1.4. Felhasznált eszközök

Munkám során az algoritmusok implementálására kezdetben a Macromedia Flash 8

[16] – most már az Adobe terméke - fejlesztői környezetet, és Action Script 2.0-s [16]

szkriptnyelvet használtam. A későbbiekben Eclipse [32] fejlesztői környezetben folytattam a

feladatom és Java(1.4-es verzió) [18] nyelven kódoltam, hiszen a jövőben Symbian [17]

operációs rendszert futtató mobiltelefonokra terveztem átültetni az alkalmazásokat. Erre a

célra sokkal alkalmasabbnak találtam egy magas szintű nyelvet, mint a Java, mintsem egy

szkriptnyelvet. Mivel a két említett, modernebb 3GL-es nyelv (third-generation programming

language) szintaktikájában és szemantikájában is sok hasonlóságot mutat, így az

3. ábra: A vonalkódok fejlődése: (egydimenziós-, ál-kétdimenziós-, kétdimenziós-, dombornyomott vonalkód)

Page 23: Diplomaterv - Pázmány Péter Catholic Universityusers.itk.ppke.hu/~tihanyia/GSMapp/Szilvassy_Balazs.pdf · 1083 Budapest, Práter u. 50/A Tel/Fax: 886-4700 E-mail: tanulmanyio@itk.ppke.hu

23

algoritmusok majd könnyebben konvertálhatóak át a Symbian-on futó C nyelv [17] számára

akár egy forráskód konvertáló program segítségével *20+.

Itt szeretném megjegyezni, hogy az általam használt két nyelv önmagában is alkalmas lenne

arra, hogy mobiltelefonon használják, de bizonyos korlátok miatt még sem ezekre esett a

választás az egydimenziós kódokkal való ismerkedés során. A Flash fejlesztői környezetnek

létezik egy Flash Lite [15] nevű változata, mely direkt mobiltelefonos alkalmazások

megírásához készült. A Flash futtatható fájljairól azt érdemes pár szóban megemlíteni, hogy

nagyon magas fokú az adattömörítése, azaz nagyméretű forráskódokból is kisméretű,

számára futtatható gépi kódot gyárt, továbbá hogy biztonsági rendszere hasonló a Java

„sandbox” modelljéhez, azaz, ha valamit szeretnénk, azt csak rajta keresztül tehetjük meg, és

ő majd eldönti, hogy jogunkban áll-e vagy sem. Ez utóbbit nevezzük virtuális gép

architektúrának, mikor a futtatható kód nem az alapul szolgáló operációs rendszer natív

hívásait használja, hanem egy virtuális gépben fut, ami értelmezi és végrehajtatja a kódot. A

virtuális gép architektúrát az „egyszer megír, több gépen futtat” igény szülte, mely annyit

jelent, hogy a programozónak nem kell minden platformra külön megírnia az alkalmazását,

hanem a virtuális gépeknek létezik több változata a különböző platformokra. Az egyetlen

probléma ezzel a megoldással csupán annyi volt, hogy Magyarországon - tudomásom szerint

- nem volt kapható olyan telefon, melynek szerves része lenne a Flash Player, mely ezt a

szükséges virtuális gépet testesíti meg, ami a futtatható kódot interpretálja és végrehajtatja

a mobiltelefon operációs rendszerével. Az interneten keresgélve főleg japán gyártmányú

mobiltelefonokon láttam ezt a kiszereltséget. (Ezen diplomadolgozat írásakor már kaphatóak

- többnyire Nokia márkájú - telefonok, melyek rendelkeznek ezzel a kiszereltséggel.)

A tiszta Java-s megvalósításnak pedig az állt útjában a kezdetekkor, hogy a különböző

mobiltelefonok különböző mértékben támogatták/támogatják a Java nyelvet, és nem lett

volna biztos, hogy az egyik telefonhoz megírt kód, más hasonló telefonon is futott volna.

Page 24: Diplomaterv - Pázmány Péter Catholic Universityusers.itk.ppke.hu/~tihanyia/GSMapp/Szilvassy_Balazs.pdf · 1083 Budapest, Práter u. 50/A Tel/Fax: 886-4700 E-mail: tanulmanyio@itk.ppke.hu

24

2. Vonalkód összefoglaló

A vonalkódok megjelenésének és elterjedésének kezdete nem a matematikai

apparátus hiányában volt viszonylag késői, sokkal inkább az olvasáshoz és nyomtatáshoz

szükséges eszközökkel hozható összefüggésbe. Ezek elemi felbontása, érzékenysége,

hibatűrése és fizikai mérete jelentősen hatottak a kódolható adatmennyiség

meghatározásában. A lézertechnika fejlődése, amely lehetővé tette a kisebb méretek

melletti nagyobb megbízhatóságot, sem hozott nagyságrendi változást az így feldolgozható

információ méretében, ezért a fejlesztések a vonalkódok új típusainak kifejlesztése felé

folytatódott.

A különböző cégeknél indult fejlesztésekből mintegy harminc-negyven különböző

vonalkódtípus született, amelyek közül azonban csak egy tucatnyi vált elterjedtté, illetve

szabvánnyá, pontosabban többségében szabvány értékű ajánlássá.

A szabványosítást végző szervezetek illetve rendszerek közül a legfontosabbak:

- AIM, Automatic Identification Manufacturers Inc., AIM-Europe

- ANSI, American National Standard Institute

- CEN, European Standard Commitee

- EAN, European Article Numbering Association,

- UCC, Uniform Code Council

- EDI, Electronic Data Interchange,(EDIFACT,ODETTE,TRADACOMS stb.)

2.1. Vonalkódtechnikai kifejezések definiálása

A vonalkódok ősének sokan a Morse kódot tekintik (4. ábra), melyben az angol abc és

a számjegyek szerepelnek különböző hosszúságú jelek és a köztük lévő szünetek formájában.

Page 25: Diplomaterv - Pázmány Péter Catholic Universityusers.itk.ppke.hu/~tihanyia/GSMapp/Szilvassy_Balazs.pdf · 1083 Budapest, Práter u. 50/A Tel/Fax: 886-4700 E-mail: tanulmanyio@itk.ppke.hu

25

Ezen szimbólumokból és a közéjük ékelt „szünetekből” építették fel a Morse üzeneteket [19].

Az említett jel, azaz az ábrán lévő egy fekete vagy fehér részegységet nevezzük elemi

információnak. Ez a digitális rendszerekben egy bitet jelent, vonalkódos nevén pedig

modulnak hívjuk.

Az egy dimenziós vonalkódok két lényeges pontban térnek el a Morse kódoktól. Az első az,

hogy a modulok közötti „szünet” nem egyszerűen a jelek elválasztására szolgál, hanem maga

a szünet-jel is információ értékű. Tehát a vonalkód sötét és világos modulok sorozatából áll.

Egy kódolandó karakter mindig rögzített számú modulból áll, és azon belül a sötét és világos

jelpárok száma is rögzített [1].

A továbbiakban a sötét modulokat az 1-es érték, a világos modulokat a 0-s érték jelenti majd.

A kódolás paramétereinek rögzítése egyben meghatározza a kódolható karakterek számát is,

hiszen meghatározott számú modulból csak meghatározott számú elempárt lehet véges és

könnyen kiszámítható módon kiválasztani. Illusztrálja ezt egy táblázat három vonalkódtípus

paramétereinek összehasonlításával (5. ábra) [1]:

4. ábra: Morse-kódtáblázat

Page 26: Diplomaterv - Pázmány Péter Catholic Universityusers.itk.ppke.hu/~tihanyia/GSMapp/Szilvassy_Balazs.pdf · 1083 Budapest, Práter u. 50/A Tel/Fax: 886-4700 E-mail: tanulmanyio@itk.ppke.hu

26

Vonalkód

típus

Modul-mérete Jelpárok

száma

Kódolható

karakterszám

Felhasznált

karakterszám

Biztonsági

faktor

EAN/UPC 7 2 20 10 2.0

CODE 128 11 3 252 10 2.4

PDF 417 17 4 10480 2787 3.8

A biztonságos olvasás érdekében nem használják ki a teljes kódolható karaktermennyiséget,

hanem úgy választják ki a felhasznált karaktereket, hogy azok kódja a lehető legjobban

eltérjen egymástól. Így az apróbb nyomtatási hibák és az olvasási bizonytalanságok a

legkisebb valószínűséggel fognak karaktertévesztést eredményezni.

Minden vonalkódtípus egy általános elvrendszer szerint épül fel, ugyanakkor szinte

mindegyik megsérti az általános elvek legalább egyikét. (Ez a vonalkódok humán jellege [1].)

Saját irodalmi kutatásaimból összegyűjtött információk alapján azzal egészíteném még ki a

fentebb látható táblázatot, hogy interneten keresgélve sok pontatlan információval

szembesülhetünk. Talán a legcélszerűbb eljárás, amennyiben be akarunk törni a vonalkód

piacra, hogy mindig a specifikációt vesszük alapul, és szabványokra támaszkodunk.

2.1.1. Az általános vonalkód felépítése

A fentebb található ábrán az olvasás megkönnyítése érdekében lettek az egyes

részek indexszel ellátva a felső sorban (6. ábra). A vonalkódot általában a világos modulnak

megfelelő nagyobb háttérre nyomtatják, hogy az egész még jobban elkülöníthető legyen a

5. ábra: Vonalkód összehasonlító táblázat

6. ábra: Általános vonalkód felépítése

Page 27: Diplomaterv - Pázmány Péter Catholic Universityusers.itk.ppke.hu/~tihanyia/GSMapp/Szilvassy_Balazs.pdf · 1083 Budapest, Práter u. 50/A Tel/Fax: 886-4700 E-mail: tanulmanyio@itk.ppke.hu

27

környezetétől. Ez a tiszta terület segíti az olvasókhoz kapcsolt dekódert a jelsorozat

kezdetének biztonságos felismerésében. Ezt hívják nyugalmi zónának.

Az 1-es és 15-ös indexen lévő részeket START és STOP karaktereknek hívják. Ez egy további

egyértelmű azonosító jelzés a kódolt adatterület meghatározásához. A START és STOP

karaktereket nem minden vonalkódtípus használja, de a legtöbb esetben legalább a nyitó

START karakter használatos. A kezdetet és a véget jelző START és STOP karakterek lehetnek

egyezőek vagy különbözőek is, sőt vannak olyan kódok, ahol magunk választhatjuk ki egy

karakterkészletből őket.

Vannak kódok, melyek a további biztonságos olvashatóságot megkönnyítendő még egy plusz

KÖZÉP karaktert is elhelyeznek. Ilyen a 8. indexen lévő résznél figyelhető meg. Van ahol ez

csak a vonalkód pontos kiolvasását segíti, de van ahol fontosabb elválasztó szerep is jutott a

számára, mint például a gyártóra és a termékre vonatkozó információ szeparálása.

A kódolt adatokat a START és a STOP karakterek között találhatjuk. Ezek hordozzák a

számunkra és nem a vonalkódolvasók számára fontos információkat. A kódolható adatok

hossza néhány típusnál rögzített, a többinél szabadon megválasztható, bár ez utóbbiaknál is

lehetnek bizonyos szabályok, mint például hogy csak páros számú karaktert használhatunk. A

kódolható adatok készletét minden esetben vonalkódtípusonként rögzített karaktertábla

tartalmazza. Egyes típusokkal csak számokat, másokkal már az angol ABC nagybetűit is, míg

ismét másokkal már a teljes ASCII karakterkészletet felhasználhatjuk.

A vonalkódban - általában a végén - szokott szerepelni egy további speciális karakter, az

ellenőrző karakter, amely egyszerűbb esetben a kódolt karakterek értékeiből, vagy a

karakterhez rendelt értékekből, aritmetikai számításokkal egy kiegészítő karaktert képez. Ez

beépül a vonalkódba, bizonyos esetekben a kódolt adatokhoz tartozóan. Visszaolvasásnál a

dekóderek is elvégzik a vonalkódtípushoz tartozó ellenőrző karakter kiszámítását, majd

összehasonlítják azzal az értékkel, amit a vonalkódban rögzítettek. Nem minden esetben

használják az ellenőrző karaktert, bizonyos esetekben pedig a felhasználó dönthet az

alkalmazásukról. Itt érdemes még említést tenni egy másik fontos kulcsszóról, az

önellenőrzésről (angolul self-checking), mely azt jelenti, hogy egy egyszerű nyomtatási vagy

szkennelési hibától egy karakter nem fog tudni egy másik karakterbe átkonvertálódni.

A vonalkód alatt található még egy számsorozat, az értelmező sor. Ez a kódolt adatok

megjelenítésére szolgáló, emberek számára meglévő kiegészítő információ, melynek

Page 28: Diplomaterv - Pázmány Péter Catholic Universityusers.itk.ppke.hu/~tihanyia/GSMapp/Szilvassy_Balazs.pdf · 1083 Budapest, Práter u. 50/A Tel/Fax: 886-4700 E-mail: tanulmanyio@itk.ppke.hu

28

alkalmazása a vonalkód sérülése esetén lehet hasznos. Használata, elhelyezése, mérete és

formája többnyire rugalmasan kezelhető.

A vonalkódoknak szokott lenni még egy fontos rendszerjellemzője, az arányszám. Nevezzük

el az egymás melletti azonos értékeket, azaz 00 vagy 11 modulokat széles modulnak. Néhány

vonalkódtípusnál lehetőség nyílik arra, hogy a széles modul ne egyszerűen a modul

kétszerese legyen, hanem az arányszám által meghatározott. Az arányszámot mindig úgy kell

megadni, hogy a modulmérettel szorozva egész számot adjon, például 2:1, 7:3, 5:2, 3:1 stb.

Az arányszám alkalmazásával segíthetünk az esetleges, méretből adódó elhelyezési

problémák megoldásában. Az arányszám optimális és egyben maximális értéke 3:1.

Diszkrét kódolás alatt azt értjük, hogy a karakterek önmagukban is értelmezhetőek, nincs

szükség a többi kódra hozzájuk. Az ilyen kódolású karakterek általában vonallal kezdődnek és

fejeződnek is be, és a karakterek között karakter közötti szünetek találhatóak (7. ábra).

A folyamatos kódolás pedig éppen ennek az ellentettje, mikor a karakterek önmagukban

nem értelmezhetőek az előzőek tudta nélkül. Az ilyen kódolás végén általában egy termináló

karakter szokott állni (8. ábra).

7. ábra: Diszkrét kódolás

8. ábra: Folytonos kódolás

Page 29: Diplomaterv - Pázmány Péter Catholic Universityusers.itk.ppke.hu/~tihanyia/GSMapp/Szilvassy_Balazs.pdf · 1083 Budapest, Práter u. 50/A Tel/Fax: 886-4700 E-mail: tanulmanyio@itk.ppke.hu

29

2.1.2. Kereskedelmi és ipari kódok

A kereskedelmi kódok, mint például az általunk is ismert élelmiszerüzletekben, a

termékeken látható vonalkódok. Ezek kiosztásáról nemzetközi szervezetek gondoskodnak.

Olyasmi ez, mint az interneten a domain nevek és az ezekhez tartozó aldomainek kiosztása. A

kereskedelmi vonalkódunk, ha nemzetközi szabványhoz igazodik, tartalmaznia kell egy

megjelölést, pontosabban egy rendszerazonosítót, továbbá a gyártó azonosítóját. Ezután

következik a termékkód, mellyel maga a termék azonosítható. Ezzel a módszerrel lehet

megoldani, hogy a termékek és gyártóik beazonosíthatóak legyenek. Az interneten keresve

olyan szervezetet, akik ezt a bejegyzést ingyen csinálják, nem találtam. Természetesen, mint

mindenhol, az adminisztrációs feladatokért fizetni kell. Magyarországon a Magyar Gazdasági

Kamara az illetékes szerv ez ügyben. Még egy fontos észrevétel a kereskedelmi kódokhoz az,

hogy ezek numerikus adatokat kódolnak. Formájuk a legtöbb esetben szigorúan rögzített,

hogy az azonosítás problémamentes legyen, viszont egyes kódtípusoknál egy speciális jelölő

karakter használatával fel lehet rúgni ezeket a szabályokat.

Az ipari kódokban lényegesebb különbség, hogy ezek már nem csupán numerikus, hanem az

abc karaktereinek kódolására is képesek. Természetesen más-más kód más-más mértékben

és hatékonysággal. Ezeket a kódokat alfanumerikus kódoknak nevezzük. Az ipari kódok

hossza általában szabadon választható. Az egydimenziós megvalósításoknál ezzel akár

nagyon vicces, átláthatatlan és használhatatlan, méteres vonalkódokat is gyárthatunk.

Itt van például egy CODE 39 vonalkód:

A fentebb látható CODE 39 típusú alfanumerikus vonalkódba a „HELLO VILAG BALU VAGYOK

MIZU VELETEK” karakterek sorozata lett bele kódolva egy ingyenes, nyílt forráskódú

programmal, melynek online változata innen érhető el (9. ábra):

http://www.terryburton.co.uk/barcodewriter/generator/

9. ábra: CODE 39 típusú, minta vonalkód

Page 30: Diplomaterv - Pázmány Péter Catholic Universityusers.itk.ppke.hu/~tihanyia/GSMapp/Szilvassy_Balazs.pdf · 1083 Budapest, Práter u. 50/A Tel/Fax: 886-4700 E-mail: tanulmanyio@itk.ppke.hu

30

Egy másik példa a létező és használatos vonalkódok sokszínűségére (10. ábra):

2.2. Egydimenziós numerikus és alfanumerikus vonalkódok

Az alábbiakban összefoglalom a napjainkban használt, legfontosabb numerikus, azaz

csak számokat kódoló, illetve alfanumerikus, vagyis számokat és karaktereket is kódoló

vonalkódokat.

2.2.1. UPC és EAN

Az UPC talán az egyik legismertebb kódolási szabvány, legalább is az USA-ban. Ez az a

kód, amivel minden szupermarketekben találkozhatunk, de magazinokon, könyveken vagy

éppen újságokon is láthatunk. Az UPC-nek több formátuma van: UPC-A, UPC-E, UPC 2-

számos kiegészítése és az UPC 5-számos kiegészítése.

Az UPC-A 11 darab számot kódol. A 12. karakter egy ellenőrző karakter, melyet úgy

számítunk, hogy a páratlanodik indexen lévő értékeket összegezzük, majd vesszük a

10. ábra: Vonalkódok sokszínűsége

Page 31: Diplomaterv - Pázmány Péter Catholic Universityusers.itk.ppke.hu/~tihanyia/GSMapp/Szilvassy_Balazs.pdf · 1083 Budapest, Práter u. 50/A Tel/Fax: 886-4700 E-mail: tanulmanyio@itk.ppke.hu

31

háromszorosát, majd ehhez hozzáadjuk a páros indexeken lévő számok összegét. Az

ellenőrzőszám az a legkisebb, pozitív egész szám, amelyet az előbb kiszámolt

végeredményhez adva, összegük tízzel történő osztása maradék nélkül végrehajtható. Egy

tipikus UPC-A vonalkód (11. ábra):

A kód alatt szerepel az emberi olvasást megkönnyítendő értelmező sor is. A legelső szám a

rendszerazonosítót jelöl, az utána következő 5 szám a gyártó kódja, a rákövetkező 5 a termék

kódja, a legutolsó pedig a generált ellenőrző szám. A rendszerazonosítók kiosztására az

alábbi táblázat szolgál alapul (12. ábra):

Rendszerazonosító szám Jelentés

0 Általános UPC kód

1 Fenntartott

2 Csomag

3 Gyógyszer

4 Saját belső kód

5 Kupon

6 Fenntartott

7 Általános UPC kód

8 Fenntartott

9 Fenntartott

Az UPC-E az UPC-A egy változata, ami egy sokkal tömörebb formátumot biztosít azáltal, hogy

a fölösleges extra nullákat eliminálja, továbbá hogy trükkösen az 5 hosszú gyártó kódból,

illetve az 5 hosszú termék kódból, egy 6 karakter hosszú kódot generál. Ezt a vonalkódtípust

általában olyankor használják, ha az UPC-A nem fér el a felhasználásra szánt felületen (13.

ábra).

11. ábra: UPC-A vonalkód

12. ábra: UPC-A vonalkód rendszerazonosítói

Page 32: Diplomaterv - Pázmány Péter Catholic Universityusers.itk.ppke.hu/~tihanyia/GSMapp/Szilvassy_Balazs.pdf · 1083 Budapest, Práter u. 50/A Tel/Fax: 886-4700 E-mail: tanulmanyio@itk.ppke.hu

32

Az EAN-13 az UPC-A standardon alapul, mely szabványt az International Numbering

Association(EAN) in Europe fejlesztett ki. Ez a változat azért volt szükséges, mert az UPC-A

nem volt tökéletesen kitalálva nemzetközi használatra. Másrészt azért, mert az európaiak

nem szívlelték, hogy egy amerikai szabványügyi hivatal szerint működjenek. Az EAN-13 az

UPC-A egy kibővítése (14. ábra). Ebből kifolyólag, ami képes EAN-13 vonalkód olvasására, az

UPC-A kódot is probléma nélkül tud értelmezni. A két típus közötti egyetlen különbség, hogy

míg az UPC-A esetén egy 0-9 közötti intervallumból származó rendszerazonosítót használnak

csupán, addig EAN-13-nál ez egy 00-99-ig terjedő kétszámjegyű azonosító, ami valójában egy

országkódot jelent az esetek döntő többségében, de a korábbi UPC-A rendszerazonosítókra

is megvannak a neki megfelelő számok.

Az EAN-8 az UPC-E EAN megfelelője. Az EAN megfelelő alatt annyi értendő, hogy a korábban

említett rendszerazonosítást használja az egyszámjegyű helyett.

13. ábra: UPC-E vonalkód

14. ábra: EAN-13 vonalkód

Page 33: Diplomaterv - Pázmány Péter Catholic Universityusers.itk.ppke.hu/~tihanyia/GSMapp/Szilvassy_Balazs.pdf · 1083 Budapest, Práter u. 50/A Tel/Fax: 886-4700 E-mail: tanulmanyio@itk.ppke.hu

33

A mellékelt ábrán látható, hogy az EAN-8 is egy rövidített formája az EAN-13-nak, továbbá az,

hogy az UPC-E-nél viszont egy picit hosszabb (15. ábra).

A JAN(Japanese Numbering Authority) kódok az EAN-13 japán megfelelői a 49-es

rendszerazonosítót használva.

Az UPC-A, UPC-E, EAN-13 és EAN-8 kódok mindegyike tartalmazhat a vonalkód jobb oldalán

egy plusz kiegészítő kódot. Ez általában nem olyan magas, mint az eredeti kód, és kiegészítő

információkat tartalmaz a termékkel kapcsolatban (16. ábra) [11].

15. ábra: EAN-8 vonalkód

16. ábra: UPC kiegészítő kódolás

Page 34: Diplomaterv - Pázmány Péter Catholic Universityusers.itk.ppke.hu/~tihanyia/GSMapp/Szilvassy_Balazs.pdf · 1083 Budapest, Práter u. 50/A Tel/Fax: 886-4700 E-mail: tanulmanyio@itk.ppke.hu

34

2.2.2. 2 of 5 vonalkódok

A standard 2 of 5 vonalkód egy önellenőrző numerikus kód. Már az 1960-as évektől

használatosak. Annak a ténynek köszönhetően hívják 2 of 5-nek, hogy a numerikus

karakterek 5 modulból állnak, melyből kettő mindig széles modul. Az interleaved 2 of 5-tel

ellentétben itt az adat a vonalakba van kódolva, a vonalak szélessége tartalmazza az

információt, a szünetek fix hosszúságúak, és csupán a karakterek szeparálására szolgálnak

(17. ábra). A standard 2 of 5 kódot általában áruházi szortírozásnál, fényképelőhívásoknál

vagy repülőjegyeken használják [4]. Viszont mára már elavultnak számít, és az interleaved 2

of 5 használatát javasolják helyette.

Az industrial 2 of 5 a standard 2 of 5 egy másik elnevezése.

Az interleaved 2 of 5 a standard 2 of 5 ötletén alapszik azzal a különbséggel, hogy itt már a

szüneteknek nem csak szeparáló szerepe van, hanem szintén információ-hordozók. A kód

hossza szabadon választható, viszont csak páros számú számjegyeket tartalmazhat. Itt is

minden karakter 5 modulból áll, melyek közül 2 széles modul, és mindegyikük vagy csak

sötét, vagy csak világos. Ez úgy lehetséges, hogy az egyik karakter sötét moduljait a másik

karakter világos moduljai választják el egymástól. A kód karakterei tehát felváltva sötét és

világos modulokból állnak, páronként egymásba ékelve (18. ábra). A felhasználó dönthet

arról, hogy a kód tartalmazzon-e ellenőrző karaktert. Használatánál a párosság megtartására

ügyelni kell, amit gyakran az első karakterbe helyezett nullával oldanak meg.

17. ábra: Standard 2 of 5 vonalkód

18. ábra: Interleaved 2 of 5 vonalkód

Page 35: Diplomaterv - Pázmány Péter Catholic Universityusers.itk.ppke.hu/~tihanyia/GSMapp/Szilvassy_Balazs.pdf · 1083 Budapest, Práter u. 50/A Tel/Fax: 886-4700 E-mail: tanulmanyio@itk.ppke.hu

35

2.2.3. Szélesség-modulált vonalkódok

Az MSI-t az MSI Data Corporation fejlesztette ki az eredeti Plessey kód alapján. Az

MSI-t szokás még Modified Plessey-nek is nevezni, melyet leltári tárgyak ellenőrzésénél

szoktak alkalmazni. Az MSI egy folytonos, nem önellenőrző kódolás. Bár ezen kódok hossza

tetszőleges lehet, a különböző alkalmazások általában különböző fix hosszúsággal használják.

A kód végére szokás egy moduló 10-es ellenőrző karaktert tenni. Minden karakter 8

modulból áll, 4 vonalból és 4 szünetből. Mint az eddig tárgyalt kódok is, ez is csupán

numerikus karaktereket tartalmazhat (19. ábra).

2.2.4. Codabar vonalkódok

A Codebar vonalkódokat 1972-ben találta fel Pitney Bowes. Ez egy diszkrét,

önellenőrző kódolás, ami 16 különböző numerikus és 4 fajta start/stop karakter tárolására

alkalmas. Ezt az azonosítást az amerikai vérbankok, fotólaborok és a FedEx légi számláin

használják. Mivel a kód önellenőrző, ezért nincsen semmilyen ellenőrző karakter a vonalkód

végére applikálva. Természetesen lehet úgy dönteni, hogy a nagyobb biztonság érdekében

szeretnénk egyet kreálni, ekkor viszont figyelnünk kell majd arra, hogy az ellenőrző karaktert

más vonalkód olvasók adatelemként fogják értelmezni.

Az A,B,C és D betűk a kódokban a 4 fajta, különböző START/STOP karaktert jelölik (20. ábra).

19. ábra: Szélesség modulált vonalkód

20. ábra: Codebar vonalkód

Page 36: Diplomaterv - Pázmány Péter Catholic Universityusers.itk.ppke.hu/~tihanyia/GSMapp/Szilvassy_Balazs.pdf · 1083 Budapest, Práter u. 50/A Tel/Fax: 886-4700 E-mail: tanulmanyio@itk.ppke.hu

36

2.2.5 Code 39 alfanumerikus ipari vonalkód

A Code 39 volt a legelső alfanumerikus vonalkód (21. ábra). Még napjainkban is

használatos. Ez a standard vonalkódja az Egyesült Államok Védelmi Minisztériumának, illetve

az Egészségügyi Vonalkód Tanácsnak (HIBCC). A Code 39-et szokás még 3 of 9 kódnak vagy

USD-3-nak is nevezni.

A kód hossza szabadon választható. Fentebb már mutattam erre egy mókás példát, hogy

méteres vonalkódok is előállíthatóak vele. Egy karakter valójában 13 modulból áll, amiből az

utolsó 13. modul mindig a karaktereket elválasztó szünet, ezért nem is tekintjük a kód

részének. A fennmaradó 12 modulból 3 mindig széles modul, azaz két azonos 00 vagy 11

értéket tartalmaz. Ebből kifolyólag kezeljük úgy, mint egy 9 modulból álló kód, tudván, hogy

ebből 3 széles modul. Innen származik a neve is. A széles modulok megjelenítése a korábban

említett arányszám felhasználásával történik. Az ellenőrzőszám képzését a karakterekhez

rendelt értékek alapján számolhatjuk ki. A kódolás rögzített START és STOP karaktere a

karakterkészlet „*” (csillag) eleme, ezért nem tartozik érték az ellenőrzőszám képzéséhez. A

leképezhető karaktertábla a betűk közül csak az angol ABC nagy betűit tartalmazza. A kód

teljes ASCII kiterjesztéséhez alkalmazott megoldásban a $, /, % és + karaktereket a maradék

39 karakterrel párba rendezve azonosítjuk az első 128 ASCII karaktert.

2.2.6. Code 128 alfanumerikus ipari kód

A Code 128 sikerének oka a nagy sűrűség melletti nagy megbízhatóság a bőséges és

többféleképpen variálható karakterkészlettel. Az elnevezés az első 128 ASCII karakter

kódolhatóságából ered. A kód hossza itt is szintén szabadon választható. Egy karakter 11

modulból áll, a sötét és a világos modulpárok száma pedig három. Egy sötét vagy világos

21. ábra: Code 39 vonalkód

Page 37: Diplomaterv - Pázmány Péter Catholic Universityusers.itk.ppke.hu/~tihanyia/GSMapp/Szilvassy_Balazs.pdf · 1083 Budapest, Práter u. 50/A Tel/Fax: 886-4700 E-mail: tanulmanyio@itk.ppke.hu

37

modulsorozat 1-4 közötti modulszámból épülhet fel. Három „A”, „B” és „C” jelzésekkel

megkülönböztetett típuskészlet létezik a takarékosabb kódolás érdekében. Ezek közül a B

jelű az alapvető, a másik kettővel csak számjegyeket kódolhatunk. A típus helyes kiválasztása

azért fontos, mert csupán numerikus adatok kódolása esetén sok helyet takaríthatunk meg,

szemben azzal a típuskészlettel, amikor betűket és számokat egyaránt kódolunk. Az „A” típus

jól alkalmazható az adatbevitel melletti szoftver vezérlésére is, hiszen a CR (Carrige Return),

LF (Line Feed), ESC és egyéb escape szekvenciák is kódolhatóak vele, míg a „C” típus

elsősorban a számsorok tömörítését segíti. A kód magába épít egy ellenőrző karaktert,

melyről a felhasználó nem szerez tudomást. Az ellenőrzőkarakter képzéséhez itt már a

kódolandó karakternek a karaktersorozatban elfoglalt sorszámát is figyelembe kell venni.

2.3. Stacked barcodes

A mikroelektronika fejlődésével egyre precízebb vonalkódolvasókat és -írókat

gyártottak, de ezzel még koránt sem sikerült megoldást nyújtani minden problémára. Voltak

olyan esetek, amikor sok információt kellett volna kinyomni kis felületre, viszont az 1

dimenziós vonalkódokkal ez nem volt kivitelezhető. A kezdeti próbálkozások az egydimenziós

vonalkódok egymás alá rendezésével történtek meg, mint például a Code 16k esetén. Ezek a

legelső „ál” kétdimenziós vonalkódok (22. ábra).

A Code 16k fizikai megjelenésében nagyon hasonlít a Code 49-re. A sorok száma 2 és 16

között változhat, és minden sor egyedi START és STOP karakterrel rendelkezik. Soronként 70

modulból áll, ami 5 karaktert tartalmaz. A sorokat egymástól és oldalról a nyugalmi zónától is

külön elválasztó vonal védi. A karakterek kódolása a Code 128 inverzeként történik. Több

ellenőrző karaktert tartalmaz, de soronkéntit nem. A vonalkód maximális kapacitása 77 ASCII

karakter vagy 154 számjegy.

22. ábra: Ál-kétdimenziós vonalkód

Page 38: Diplomaterv - Pázmány Péter Catholic Universityusers.itk.ppke.hu/~tihanyia/GSMapp/Szilvassy_Balazs.pdf · 1083 Budapest, Práter u. 50/A Tel/Fax: 886-4700 E-mail: tanulmanyio@itk.ppke.hu

38

2.4. Kutatásom összefoglaló eredményei

Munkám során sikeresen elsajátítottam a vonalkódtechnika alapjait, olyan tudásra

tettem szert, melynek köszönhetően biztonsággal felismerem a legtöbb nemzetközileg is

használt egydimenziós és kétdimenziós datamatrix vonalkódtípust, és ismerem az ezek

mögött rejlő matematikai apparátusokat.

Leprogramoztam egy vonalkód író/olvasó keretrendszert Flashben, melybe tetszőleges

számú újabb kód implementálható a moduláris felépítésének köszönhetően. Ezen belül az

olvasásnál tovább realizálva a feladatomat a kapott információ elejére és végére random

hosszúságú 0-ást zajt raktam, ahogy ez a valós életben is előfordul a nyugalmi zónákat

illetően, és ezekből állítottam vissza az eredeti adatot olyan objektumba, melyből

lekérdezhető a vonalkód rendszerszáma, gyártószáma, termékkódja, és hogy az ellenőrző

karakter megfelelő-e.

23. ábra: Saját egydimenziós vonalkód író és olvasó programom

Page 39: Diplomaterv - Pázmány Péter Catholic Universityusers.itk.ppke.hu/~tihanyia/GSMapp/Szilvassy_Balazs.pdf · 1083 Budapest, Práter u. 50/A Tel/Fax: 886-4700 E-mail: tanulmanyio@itk.ppke.hu

39

A fenti üzenetet generálta a programom, miután kiválasztottuk az UPC-A kódolási típust a

legördülő menüből majd beírtuk a tetszőleges, 11 hosszú számsorozatunkat (23. ábra). (A

programom validációt használ az input ellenőrzésére, és mivel tudja, hogy az UPC egy

numerikus kódolás, csak számokat enged beütni.)

Coding type changed for: UPC-A

Control Number created for: 12345678901 2

Code's binary representation:

000000000001010011001001001101111010100011011000101011110101010001001001000111010011

10010110011011011001010000000

A vonalkódra kattintás után elindul a szkennelés (24. ábra).

24. ábra: Saját egydimenziós vonalkód író és olvasó programom szkennelés közben

Page 40: Diplomaterv - Pázmány Péter Catholic Universityusers.itk.ppke.hu/~tihanyia/GSMapp/Szilvassy_Balazs.pdf · 1083 Budapest, Práter u. 50/A Tel/Fax: 886-4700 E-mail: tanulmanyio@itk.ppke.hu

40

Majd a következő üzenet jelenik meg a kimeneti ablakban:

Code scanned and normalized,

random noises added at beginning and at the end.

Binary code:

000000000000101001100100100110111101010001101100010101111010101000100100100011101001

110010110011011011001010000000000

START + 1 23456 + MIDDLE + 78901 2 + STOP

Control Number passed. The code is valid.

System ID: 1 - Free digit

Manufacturer ID: 23456

Product ID: 78901

Control Number: 2

Ezt a framework-öt kétféle megközelítésből próbáltam bővíteni. A legelső változatban egy

külső szótárfájlból olvastattam be a vonalkód-típusra jellemző paramétereket, melynek

struktúráját én találtam ki (25. ábra). Az volt a célom vele, hogy minden típushoz legyen egy

szótárfájl, ami tartalmazza a vonalkód szempontjából fontos paramétereket, például a

számukra felhasználható karaktereket és az ezekhez hozzárendelt modulsorozatot, továbbá a

program írása és olvasása ettől teljesen független legyen.

25. ábra: Saját egydimenziós vonalkód író és olvasó programom szótárfájlja

Page 41: Diplomaterv - Pázmány Péter Catholic Universityusers.itk.ppke.hu/~tihanyia/GSMapp/Szilvassy_Balazs.pdf · 1083 Budapest, Práter u. 50/A Tel/Fax: 886-4700 E-mail: tanulmanyio@itk.ppke.hu

41

A második megközelítésben úgy láttam jobbnak és hordozhatóbbnak a kódot, hogy a

kódtípusokhoz tartozó paramétereket is a programban tárolom, mindegyiket egy külön

objektumban, mert a szótárfájlos megoldásomnál rengeteg plusz munka volt az adatok

megfelelő „parse”-oltatásával, értelmezésével a programon belül. Ez utóbbi változatban

teljesen elkülönül a grafikus felület, továbbá az írás és az olvasás, maguktól a vonalkódoktól.

Írás esetén a vonalkód objektumoknak a framework átadja a kódolandó sztringet, majd az

objektum visszaad neki egy bináris, „0”-ás és „1”-es karakterekből álló sorozatot, ami már a

kódolt modulsorozatot tartalmazza. Erről semmi egyebet nem tud a keretrendszer, csak

annyit, hogy hogyan jelenítse meg. Olvasás esetén pedig egy ilyen bináris sorozatot adunk át

a vonalkódobjektumnak random hosszúságú „0”-ás zajjal az elején és a végén, majd az

objektum visszaadja a dekódolt adatot, illetve lekérdezhetőek tőle az egyes paraméterek

külön-külön is egy publikus interfacen keresztül.

2.4.1. Az egydimenziós kódolás elégtelensége

Ahogy láthattuk, az egydimenziós vonalkódok közül, azok, amelyek helyigénye

elfogadható lenne, csupán numerikus adatok kódolására alkalmasak. Az a néhány,

amelyekkel pedig alfanumerikus értékek is rögzíthetőek lennének, vagy csekély kapacitásúak,

vagy korlátlan adat rögzítése esetén hihetetlenül nagy méreteket öltenek, és ily módon

használhatatlanok komplexebb elektronikus rendszerekben. Az ál-kétdimenziós vonalkódok

sem hozták meg a kívánt sikert, ugyanis a kétdimenziós kódokkal szemben még mindig csak

egy barkácsmódszert jelentettek a problémák áthidalására. Természetesen mind az egy-

mind az ál-kétdimenziós vonalkódoknak megvan a saját, jól kitaposott felhasználási területe,

ahonnét a kétdimenziós vonalkódok a komplexitás és a migráció bonyolultsága miatt

valószínűleg sosem tudnák kiszorítani. De számunkra egy elektronikus jegy megvalósításánál

elsődleges szempont a minél kisebb méret, a gépek számára könnyű olvashatóság és a nagy

kapacitású, alfanumerikus és vezérlőkarakteres adattárolási lehetőség.

Page 42: Diplomaterv - Pázmány Péter Catholic Universityusers.itk.ppke.hu/~tihanyia/GSMapp/Szilvassy_Balazs.pdf · 1083 Budapest, Práter u. 50/A Tel/Fax: 886-4700 E-mail: tanulmanyio@itk.ppke.hu

42

2.5. Kétdimenziós vonalkódok

Az egydimenziós vonalkódok egymás fölé rendezése nem bizonyult kellően nagy

denzitású kódolásnak. Még mindig igen korlátozott volt a mérete, és a hibavédelme sem volt

kellően magas. Így megjelentek az első valós kétdimenziós vonalkódok. Ezek mögött már

sokkal kigondoltabb és komplexebb matematikai apparátus működött. Több 100 vagy pár

ezer karakter kódolására is képesek egy kis felületen, ezen felül még a sérülésből fakadó

hibaarány is igen kis valószínűségű lett, amit a kódelméletből kölcsönzött hibajavító kódolási

eljárásoknak köszönhettek, mint például a Reed-Solomon kódolás.

Egy pár kétdimenziós vonalkód következzék most a változatosságuk reprezentálására a

teljesség igénye nélkül (26. ábra):

ArrayTag

Aztec Code

Code 1

CP Code

DataGlyphes

Page 43: Diplomaterv - Pázmány Péter Catholic Universityusers.itk.ppke.hu/~tihanyia/GSMapp/Szilvassy_Balazs.pdf · 1083 Budapest, Práter u. 50/A Tel/Fax: 886-4700 E-mail: tanulmanyio@itk.ppke.hu

43

Datastrip Code

Dot Code A

MaxiCode

MiniCode

PDF 417

QR Code

Snowflake Code

Page 44: Diplomaterv - Pázmány Péter Catholic Universityusers.itk.ppke.hu/~tihanyia/GSMapp/Szilvassy_Balazs.pdf · 1083 Budapest, Práter u. 50/A Tel/Fax: 886-4700 E-mail: tanulmanyio@itk.ppke.hu

44

Datamatrix

2.5.1. Datamatrix

A Datamatrix kétdimenziós vonalkódot a Siemens fejlesztette ki [13]. Az

ISO/IEC16022 specifikáció tartalmazza a Datamatrix leírását (27. ábra).

A Datamatrix egy 2 dimenziós vonalkód, ami körülbelül 1-2000 karakter tárolására alkalmas.

Ez a vonalkód négyzet alakú, és 0,001 inchtől egészen 14 inchig terjedhet az oldalankénti

mérete. Hogy a denzitását illusztráljam, 500 numerikus karakter egy 24-tűs nyomtatóval

kinyomtatva csupán 1 négyzet inchnyi területen is elfér.

A datamatrixot általában arra használják, hogy elektromos készülékek termék- és

szériainformációit kódolják velük. Japánban sebészi eszközök azonosítására is ezt

alkalmazzák. Továbbá lencsék identifikációjánál, áramköri nyáklapoknál és egyéb gyártás

folyamán keletkező termékek azonosítására használatosak még.

A datamatrixok olvasásához kétdimenziós szkennerre van szükségünk. Egyszerű lineáris

vonalkódolvasóval nem lehetséges az információ visszanyerése. Kétféle változata létezik

ezeknek a szkennereknek a piacon: lézeres és CCD kamerával működő. Ez utóbbira egy

nagyszerű példa a Japánban már évek óta használatos kétdimenziós, vonalkódos, személyi

információs lap, melyet a támogatott telefonok kamerájával lefényképezve, képfeldolgozási

eljárásokkal nyerhetjük ki az adatot belőle [5].

26. ábra: Kétdimenziós vonalkódok *11+

Page 45: Diplomaterv - Pázmány Péter Catholic Universityusers.itk.ppke.hu/~tihanyia/GSMapp/Szilvassy_Balazs.pdf · 1083 Budapest, Práter u. 50/A Tel/Fax: 886-4700 E-mail: tanulmanyio@itk.ppke.hu

45

A kétdimenziós datamatrix vonalkód struktúrája és tulajdonságai

Egy 18x18-as, négyzetes datamatrix.

QUIT ZONE, az adatrégiót határoló külső

marker területe. Magyarul nyugalmi zóna.

Ennek a segítségével lehet behatárolni a

datamatrixszal kódolt adatrégiót.

A QUIT ZONE bal oldali és alsó része mindig

egybefüggő, azonos színű vonal. Ez alapján

fejjel lefelé lévő datamatrixról is biztosan meg

tudjuk mondani, hogy hogyan kell olvasni,

hiszen úgy kell csak rotálnunk, hogy a nyugalmi

zóna két egybefüggő marker vonala bal oldalt és

alul legyen.

A QUIT ZONE jobb oldali és felső része mindig

egy adategységnyi hosszú, váltakozó polaritású

rész. Az egységnyi hosszúság és szélesség segít

az adatcellák méretének meghatározásában,

továbbá perspektivikus torzítás esetén is

hasznunkra válhat az adatcellák méretének

pontos értelmezésében.

Page 46: Diplomaterv - Pázmány Péter Catholic Universityusers.itk.ppke.hu/~tihanyia/GSMapp/Szilvassy_Balazs.pdf · 1083 Budapest, Práter u. 50/A Tel/Fax: 886-4700 E-mail: tanulmanyio@itk.ppke.hu

46

A datamatrix nyugalmi zónája által határolt

adatterület, a DATA AREA. Ez a rész

tartalmazza a kódolt információt.

Fehér alapon fekete polaritású datamatrix.

Fekete alapon fehér polaritású datamatrix. A

szabvány szerint a polaritás szabadon

változtatható, azaz, hogy fehér alapon feketével

kódolom az egyes cellákat vagy fordítva, de

általában az előbbit szokás használni.

Továbbá nem csupán négyzetes formája létezik

a datamatrixnak, hanem a szabvány szerint

engedélyezett a téglalap alakú is. Általában

nagyon hosszú kódolt információ esetén

találkozhatunk ezzel az esettel.

Egy adat datamatrix vonalkóddá való konvertálása két lépésben történik. Először az adatokat

8 bites kódszavakká alakítjuk egy kódtáblázat segítségével, ami az ASCII kódolási táblázat

minden értékéhez egy 8 bites reprezentációt rendel. Ezt hívjuk magas szintű kódolásnak.

27. ábra: A kétdimenziós datamatrix vonalkód tulajdonságai

Page 47: Diplomaterv - Pázmány Péter Catholic Universityusers.itk.ppke.hu/~tihanyia/GSMapp/Szilvassy_Balazs.pdf · 1083 Budapest, Práter u. 50/A Tel/Fax: 886-4700 E-mail: tanulmanyio@itk.ppke.hu

47

Majd ezeket fekete-fehér négyzetekké alakítjuk. Ez utóbbi az alacsony szintű kódolás. A

kódszavakat úgy helyezzük el az adatterületen, hogy egy egyedi 45 fokos paralel, diagonális

vonal mentén helyezkednek majd el. Ahol szükséges, átlapolódás történik, hogy a négyzet

alakú adatterületre beférjen, melyet ezen diagonális vonalak mentén lehet végigjárni.

A lentebb található képen látható jelölés: X.Y, ahol X és Y természetes, egész számok, és X a

kódszót jelöli, azaz az aktuálisan kódolandó karaktert, Y pedig a kódszó bitjeit reprezentálja,

ami ugye 8 bites ábrázolás esetén egy 1-től 8-ig terjedő intervallumot ölel fel (28. ábra).

Ahogy fentebb már szó esett róla, a datamatrix kódszavait párhuzamos, diagonális vonalak

mentén helyezik el átlapolódások kíséretében, ezt szemlélteti a következő kép (29. ábra):

28. ábra: A kétdimenziós datamatrix vonalkód magas szintű kódolása

29. ábra: A datamatrix vonalkód diagonális menti bejárása

Page 48: Diplomaterv - Pázmány Péter Catholic Universityusers.itk.ppke.hu/~tihanyia/GSMapp/Szilvassy_Balazs.pdf · 1083 Budapest, Práter u. 50/A Tel/Fax: 886-4700 E-mail: tanulmanyio@itk.ppke.hu

48

Mindezen felül még Reed-Solomon kódolást, az egyik leggyakrabban használt lineáris,

hibajavító kódoló osztályt is felhasználják, hogy a datamatrix a végleges formáját

elnyerhesse. Ez biztosítja, hogy a rosszul nyomtatott, törlődött, szemcsés vagy éppen

elszakadt kódokból is jó százalékkal visszaállítható legyen az eredeti adat. Ez a hibajavító kód

sokkal összetettebb, mint az egydimenziós kódoknál láthatott, paritásellenőrző bithez

hasonló eljárás. Ennek a kódnak polinomiális számításokon alapszik a hibajavító képessége,

de jelen dolgozatnak nem témája ennek ismertetése.

Még egy fontos dolgot meg kell említeni a datamatrix kódok kapcsán, még pedig, hogy

különböző módok léteznek az adatok kódolására, mint például a tisztán számadatos (DIGIT),

ASCII, vagy éppen tiszta szöveges (TEXT). Ennek lényege az, hogy minél kisebb elemszámú a

kód-abc-nk, annál takarékosabban és biztonságosabban tudjuk az információt kódolni. Az

egydimenziós vonalkódoknál jött elő az a fogalom, pontosabban igény, hogy

megakadályozzuk az átlapolódást. Ez annyit tesz, hogy ha megsérül egy adat, vagy rosszul

olvassa egy készülék, akkor vegye észre a hibát, és próbálja meg kijavítani annak érdekében,

hogy ne fordulhasson elő az, hogy egy hibás adat miatt egy értelmes, másik kódot kapunk.

Természetesen azoknál a kódoknál, ahol ellenőrző értéket is iktatnak, ennek nem sok a

valószínűsége, de mivel léteznek ellenőrző érték nélküliek, ezt egy példán keresztül

illusztrálom. Szemléltetésképpen nézzük a következőt (30. ábra):

Először is egy fogalom bevezetése, a kód-abc. Kód-abc-nek azon elemek halmazát értjük,

amelyekből a kódszavainkat összeálltjuk. Bináris jelek esetén a kód-abc a {0,1} halmaz.

És akkor a példa:

Egy biten szeretnénk tárolni binárisan adatokat

o Mivel bináris, ,0,1- a kód-abcnk. Azaz vagy 0-át vagy 1-et használhatunk csak.

o Mivel 1 biten szeretnénk tárolni adatot a lehetséges kódszavak

permutációja:

0 vagy 1, ez 2n-en lehetőség, azaz pontosan 21 = 2.

o Ez azt jelenti, hogy összesen két üzenetet tudunk csupán kódolni.

o „üzenet1”-nek feleltessük meg a „0” kódszót, „üzenet2”-nek pedig az „1”

kódszót.

o Van olyan rendszer, ahol elégséges csak két üzenet kódolása, de a

valóságban gyakran előfordul, hogy ez nem elegendő.

Ha például „üzenet3”-at szeretnék továbbítani, nincs rá lehetőség,

mert nem tudok kódszót hozzárendelni.

Page 49: Diplomaterv - Pázmány Péter Catholic Universityusers.itk.ppke.hu/~tihanyia/GSMapp/Szilvassy_Balazs.pdf · 1083 Budapest, Práter u. 50/A Tel/Fax: 886-4700 E-mail: tanulmanyio@itk.ppke.hu

49

o A másik probléma az átlapolódás, azaz, ha egy zajos csatornán küldeném át a

kódszavamat, egy bitnyi hiba esetén „üzenet1”-ből már is „üzenet2” lett, és

ha ez egy ország bombázását elrendelő titkosított üzenet lenne, koránt sem

mindegy, hogy igen vagy nem a fogadó oldalon értelmezett, dekódolt

üzenet.

Az átlapolódás elkerülésének megértéséhez szükséges ismertetnem egy újabb fogalmat. A

kódelméletből ismert Hamming-távolság [27] alatt két azonos hosszúságú szöveges vagy

bináris jelsorozat eltérő bitjeinek, illetve karaktereinek a számát értjük.

Ez azt jelenti, hogy minél nagyobb a minimális Hamming-távolság a kódszavak között, annál

kisebb az átlapolódás fennállásának a veszélye. A fentebb bemutatott bináris, két kódszavas,

1 bites tárolásnál a Hamming-távolság mindössze 1. Ez volt az oka annak, hogy kis zaj esetén

is könnyen megeshet, hogy „üzenet1”-ből „üzenet2” lett. Leszögezhető tehát, hogy hatékony

kódoláshoz szükséges a kódszavak közötti minimális Hamming-távolság minél nagyobb

értékének elérése, amit úgy valósíthatunk meg, hogy kevés kódszót nagy bitpozícióbeli

eltéréssel használunk és/vagy több biten tároljuk. (Több bites tárolás esetén a helyigény is

megnő, aminek általában épp az ellenkezőjére van szükségünk.) A lényeg mindig ugyanaz,

hogy a felhasznált kódszavak bitpozícióbeli különbsége a lehető legnagyobb legyen. Minél

nagyobb a minimális Hamming-távolság a kódszavak között, annál nagyobb bithiba szükséges

ahhoz, hogy egyik kódszóból egy másikat kapjunk.

Üzenet: u Kódszó: c

u üzenet vektorhoz hozzárendelünk egy

szabad c kódszót, vagy generálunk egyet

zajos csatorna

c-t átküldjük a csatornán

Zaj: e e zajvektor hozzáadódik

Vett üzenet: v

a csatorna végén vett v vektor: v = c + e

Dekódolt üzenet: u’

hibajavított és dekódolt u’ üzent előállítása

30. ábra: Információkódolás folyamatábrája

Page 50: Diplomaterv - Pázmány Péter Catholic Universityusers.itk.ppke.hu/~tihanyia/GSMapp/Szilvassy_Balazs.pdf · 1083 Budapest, Práter u. 50/A Tel/Fax: 886-4700 E-mail: tanulmanyio@itk.ppke.hu

50

Ahogy azt már fentebb írtam, hibajavító kódolásoknál beépített módszer van a hiba

fennállásának ellenőrzésére, illetve bizonyos számú bithiba javítására.

Datamatrix esetén a kód-abc-nk szintén bináris, hiszen csupán fekete vagy fehér cellákat áll

módunkban használni. Mivel a kódolni kívánt üzenetek elemi egységeire szánt tárolási méret

8 bitben kötött, a következőket mondhatjuk el:

28 = 256 kódszó áll rendelkezésünkre 00000000-tól egészen 11111111-ig.

Ez elegendő az ASCII táblázat elemeinek használatához, azaz minden elemhez tudunk

egy datamatrix kódszót rendelni.

Megállapíthatjuk, hogy mivel a lehetséges kódszavak közül mindet felhasználjuk, ha

az ASCII összes elemét kódolhatóvá szeretnénk tenni, 1 bitnyi hiba is átlapolódást

okozna, ezért mindenképpen szükségszerű hibajavító kódolás alkalmazása, ami jelen

esetben a Reed-Solomon hibajavító kód lesz, ugyanis a Datamatrix szabvány ezt

használja.

Továbbá azon is elgondolkodhatunk, hogy amennyiben a kódolt üzenetünkben nem

akarjuk felhasználni az ASCII tábla összes elemét, példának okáért tudjuk, hogy csak

számokat akarunk kódolni, amihez csupán 10 kódszó hozzárendelése elegendő, vagy

csak az angol ABC betűit akarjuk felhasználni, figyelmen kívül hagyva az ASCII

nyújtotta lehetőséget a vezérlési karakterek kiaknázására, nem kell az összes kódszót

lefoglalnunk. Az illusztráció végett maradva annál az eshetőségnél, mikor csupán

számokat kívánunk datamatrix kóddá konvertálni, látható, hogy a

{0,1,2,3,4,5,6,7,8,9- halmaz elemeihez elegendő lenne a 8 bites tárolás helyett

csupán 4 bit, hiszen 24=16 kódszó lehetséges felhasználásával implementálnánk ezt a

10 elemet. Ezen információ birtokában miért ne tehetnénk meg, hogy elhelyezek egy

jelzőkaraktert a datamatrix olvasójának, hogy csak számokat kódol az üzenetem, ami

annyit fog tenni, hogy egy normális 8 bites karakter helyén 2 darab 4 bites számot

fogok tárolni. Erre ad lehetőséget a Datamatrix szabvány különböző módú kódolása,

és így ugyanakkora területen sokkal több információt is képesek vagyunk kódolni, ha

tudjuk, pontosabban jelezzük, hogy nem kívánunk élni a teljes ASCII tábla

felhasználásának lehetőségével.

A vonalkódíró alkalmazásokba implementálható egy automata megoldás, mely megpróbálja

megkeresni a kódolandó szövegnek legmegfelelőbb formátumot, amennyiben ezt az

alkalmazandó vonalkód támogatja. Datamatrix esetén még arra is van lehetőség, hogy a

Page 51: Diplomaterv - Pázmány Péter Catholic Universityusers.itk.ppke.hu/~tihanyia/GSMapp/Szilvassy_Balazs.pdf · 1083 Budapest, Práter u. 50/A Tel/Fax: 886-4700 E-mail: tanulmanyio@itk.ppke.hu

51

kódolási lépések között ugráljunk a kódolási módok között bizonyos speciális kódszavak

segítségével [3].

Egy datamatrix kód írása és olvasása a fenti folyamatábra alapján akkor a következőképpen

alakul (31. ábra):

ASCII üzenet „hello”

Kódolás A Datamatrix kódolási táblázata alapján hozzárendeljük az egyes karakterekhez

a nekik megfelelő bináris kódot.

h := 00100101 e := 01110111 l := 01101111 o := 10011100 (ezek csak kitalált értékek)

Reed-Solomon hibajavító kódolás alkalmazása vagy az adatblokkok végén, vagy nagyobb mátrixok esetén a cellák közé ékelve.

Datamatrix vonalkód megépítése az adatokból négyzetes vagy téglalap alakú formában.

Zajos csatorna miatt szennyeződés és sérülés keletkezhet a vonalkódon, ami folytán az olvasó egyes cellákat tévesen olvashat majd.

Képfeldolgozás QUIT ZONE alapján rotálás és térbeli transzformációk segítségével az adat zóna kiolvasása.

Datamatrix adat 0110110101 1000110110 1101100100 1010000000

stb.

Dekódolás és hibajavítás

ASCII vett üzenet „hello”

31. ábra: Információkódolási folyamatábra Datamatrix esetén

Page 52: Diplomaterv - Pázmány Péter Catholic Universityusers.itk.ppke.hu/~tihanyia/GSMapp/Szilvassy_Balazs.pdf · 1083 Budapest, Práter u. 50/A Tel/Fax: 886-4700 E-mail: tanulmanyio@itk.ppke.hu

52

3. A Datamatrix vonalkód, mint elektronikus jegy

A korábbi fejezetben láthattuk, hogy okkal léptünk át az egydimenziós vonalkódok

felett, mikor az elektronikus jegyeinkhez keresünk egy hordozó médiumot. A kétdimenziós

kódok sokkal kisebb helyen sokkal több információt képesek tárolni. Szinte kivétel nélkül

mindegyik alkalmas ASCII elemek tárolására, továbbá a hibatűrő képességük is sokkal

megbízhatóbbá teszi őket. Így talán joggal kijelenthetjük, hogy jó úton haladunk az

elektronikus jegyünk formátumának rögzítése felé.

Mint az összes többi vonalkód esetében, a Datamatrix mellett is szólnak pro és kontra érvek.

De összehasonlítva a létező konkurenciával, elmondható róla, hogy az egyik legjobb hibatűrő

képességgel rendelkezik, a tárolható karakterek száma is az élmezőnybe emeli, és nem

lekicsinylendő az a tény sem, hogy egy jól bejáratott szabványról van szó.

3.1. A Datamatrixszal kapcsolatos nehézségek

Annak ellenére, hogy a Datamatrix egy nyílt szabvány, azaz ingyenesen

felhasználható, nem lehet találni ingyenes dokumentációt hozzá az interneten. Ezt nagyon jól

érzékelteti az a tény is, hogy bár a „datamatrix” kulcsszóra a Google kereső több mint másfél

millió találatot dobott ki, szinte majdnem minden oldalon más és más hibatűrési arányról

vagy épp kódolási kapacitásról beszélnek. Nagyon sok utánajárás és önálló munka szükséges

ahhoz, hogy valaki kiderítse, mik is a valós és pontos értékek.

3.2. Nyílt forráskódok

2008-ban vagy korábban, ha valaki fejébe vette, hogy szeretne implementálni egy

datamatrix írására és/vagy olvasására képes programot valamilyen tetszőleges programozási

nyelven, az vagy megvette az ehhez szükséges dokumentációkat, ISO szabványt, vagy idővel

szembesülnie kellett a sötétben tapogatózás nem kellemes érzésével.

Page 53: Diplomaterv - Pázmány Péter Catholic Universityusers.itk.ppke.hu/~tihanyia/GSMapp/Szilvassy_Balazs.pdf · 1083 Budapest, Práter u. 50/A Tel/Fax: 886-4700 E-mail: tanulmanyio@itk.ppke.hu

53

Szerencsére ez a helyzet változott. Jelenleg több nyílt forráskódú rendszer is létezik már,

melyek szabadon letölthetőek és tanulmányozhatóak, illetve felhasználhatóak, és segítséget

nyújtanak képekből vonalkód adatainak kinyeréséhez. Bár ezek sajnos még mindig

gyerekcipőben járnak, és a „release notes”-ok szerint is még van rajtuk mit fejleszteni,

nagyon nagy segítséget nyújthatnak a munkánkban.

Két fontosabbat emelnék ki, melyekkel én is foglalkoztam:

- A „libdmtx” fantázianevű ingyenes projekt, mely talán jelenleg az egyik

legjobb szabadon felhasználható datamatrix vonalkód képből való kinyeréséhez

és értelmezéséhez, valamint ezen kétdimenziós kód írásához. Ez egy C-s

osztálykönyvtár, melyet jelenleg is fejlesztenek, és 2008. július végén készült el

egy újabb verzió belőle, ugyanis korábban egy ideig állt a projekt.

- A másik a Google által kezdeményezett ZXing fantázianevű Java csomag, melyen

szinte az összes fontosabb egydimenziós vonalkódot implementálták már, és a

kétdimenziós kódok közül is kész a QR kód, illetve a datamatrix részben. [23] A

dolgozatban tárgyalt későbbi munkám során én is ezt használom majd.

3.3. Datamatrix szemben a QR kóddal

A QR kód, azaz más néven Quick Respones kód szintén egy kétdimenziós vonalkód. A

három sarkán található három nagy marker-négyzetről ismerhető fel könnyen. A standard

szerint 21 * 21 modulból áll a legkisebb, míg 177 * 177-ből a legnagyobb QR kód. A Reed-

Solomon hibajavító kódolást alkalmazva 4 fajta hibajavítási szintet különböztet meg (32.

ábra) [24] :

Hibajavítási szint Maximum kódolható karakter

L (7%) 2953

M (15%) 2331

Q(25%) 1663

H(30%) 1273

A következő összehasonlító táblázat a QR és a Datamatrix vonalkódok helykihasználását

szemlélteti (33. ábra). A különböző sorokban ugyanazt a karakterláncot sokkal kisebb

32. ábra: QR kód hibajavítási szint táblázat

Page 54: Diplomaterv - Pázmány Péter Catholic Universityusers.itk.ppke.hu/~tihanyia/GSMapp/Szilvassy_Balazs.pdf · 1083 Budapest, Práter u. 50/A Tel/Fax: 886-4700 E-mail: tanulmanyio@itk.ppke.hu

54

méretben lehetett datamatrixban kódolni. A negyedik csillagozott példában a karakterlánc

japán Kana karaktereket tartalmazott (a QR kódot eredetileg ilyen speciális, japán karakterek

effektív kódolására fejlesztették ki) *24+.

Ezen a két képen pedig már szemmel is jól látható a két kódolás eredménye (34. ábra).

Mindkettő a „http://google.com” karakterláncot kódolja.

Jól látható, hogy mindkét vonalkód hasonló megoldást használ az adatok tárolására, azaz

fekete-fehér cellák váltakozása rögzíti az információt valamilyen formában. A szembetűnő

különbség mindkét kód között a markerekben van. Míg a datamatrix kétdimenziós

vonalkódnál a marker mindig a legszélső, bal oldalt és alul egybefüggő, jobb oldalt és felül

fekete-fehér szaggatott, mindig páros hosszúságú vonal, a QuickResponse kódnál ezt a

szerepet a 3 fekete-fehér négyzet tölti be, mely a jobb alsó sarok kivételével mindegyik

csücsökben megtalálható. Ez utóbbi esetben is a negyedik csücsök kihagyása a

képfeldolgozást segíti, ugyanis így mindig ki lehet találni a kód pontos orientációját.

33. ábra: QR kód és Datamatrix helyigényét összehasonlító táblázat

34. ábra: QR kód és Datamatrix méretbeli különbsége

Page 55: Diplomaterv - Pázmány Péter Catholic Universityusers.itk.ppke.hu/~tihanyia/GSMapp/Szilvassy_Balazs.pdf · 1083 Budapest, Práter u. 50/A Tel/Fax: 886-4700 E-mail: tanulmanyio@itk.ppke.hu

55

3.4. A datamatrix kód írása

A tesztjeim megkönnyítése érdekében, ahogy ezt már az egydimenziós kódoknál is

tettem, nem csak a datamatrix vonalkód olvasásával, hanem az írásával is sokat

foglalkoztam. Mivel szükségem volt tesztképekre, és 2008-ban még kevés, jó minőségű,

online fellehető, ingyenes, datamatrix kódot generáló program volt elérhető, módosítottam

egy Java alkalmazást, mely a begépelt szövegből és előre beállított paraméterekből

létrehozta a kétdimenziós datamatrix kódot, és felkínálta a lehetőséget ennek az

elmentésére (35. ábra). A program a dekódolt szöveg tartalmának megfelelő nevű jpg fájlt

ajánl fel elmentésre, de png és gif formátumú képfájlok támogatására is létrehoztam

segédosztályokat. Szeretném megemlíteni, hogy csupán a cél elérése érdekében,

haszonszerzés vágya nélkül használtam és bővítettem ki ezt az alkalmazást, hogy

tesztképeket tudjak generálni. Ily módon viszont sajnos nem áll módomban közéadni, mivel

nem rendelkezem a megfelelő jogokkal.

Terveztem még ennek a programnak a kibővítését különböző funkciókkal. Például a

zajgenerálással, hogy hibák keletkezzenek a vonalkódon, illetve a különböző térbeli

transzformációk használatával, hogy a valós képeket minél jobban tudjam szimulálni. De

mivel időközben egyre sűrűbben bukkantak fel az ingyenes datamatrix vonalkód generátorok

[12] [9], továbbá nem rendelkeztem a Datamatrix vonalkód szabványát leíró specifikációval,

hogy egy saját író és olvasó alkalmazást implementálhassak, letettem erről.

35. ábra: Datamatrix vonalkódot író és elmentő alkalmazás

Page 56: Diplomaterv - Pázmány Péter Catholic Universityusers.itk.ppke.hu/~tihanyia/GSMapp/Szilvassy_Balazs.pdf · 1083 Budapest, Práter u. 50/A Tel/Fax: 886-4700 E-mail: tanulmanyio@itk.ppke.hu

56

3.5. A datamatrix kód olvasása

Jelenleg, a pár oldallal korábban már említett Google által kezdeményezett ZXing

nevű projekt kódját használom datamatrix vonalkód olvasásához (36. ábra) [23]. Ez a 2008-

as, akkori aktuális stádiumában még korántsem számított kész terméknek. Több

egydimenziós kód képről való olvasását implementálták már ebbe a Java csomagba, és a

kétdimenziós QR kódot is, de a datamatrix még mindig fejlesztés alatt áll. A kód egy kis

átalakításával sikerült „rávennem” a programot, hogy az egyszerűbb datamatrix képeket is

felismerje.

Első lépésben a program indulásakor rátallózhatunk egy vonalkódot tartalmazó képre, majd

a program az általa ismert vonalkód típusokat próbálja meg felismerni és dekódolni a képből.

36. ábra: Google ZXing Java SE változata újrafordítva működés közben

Page 57: Diplomaterv - Pázmány Péter Catholic Universityusers.itk.ppke.hu/~tihanyia/GSMapp/Szilvassy_Balazs.pdf · 1083 Budapest, Práter u. 50/A Tel/Fax: 886-4700 E-mail: tanulmanyio@itk.ppke.hu

57

2008-ban a program részeként felismerhető vonalkódok a következők:

Egydimenziós:

o UPC-A

o UPC-E

o EAN_13

o EAN_8

o CODE_39

o CODE_128

Kétdimenziós:

o QR kód

o Datamatrix részben

Ez a program teljes egészében letölthető forráskóddal együtt Java SE (Java Standard Edition:

ezt használják desktop alkalmazásokhoz) és Java ME (Micro Edition: ezt használják

mobiltelefonos alkalmazások fejlesztéséhez) változatokban.

Legfrissebb tudomásom szerint a Datamatrix kód olvasását azóta sem implementálták, és

úgy tűnik, lehet, hogy nem is fogják.

3.6. A datamatrixszal kapcsolatos kihívások

Jelen állás szerint már létezik több szabadon felhasználható program, melyekkel

datamatrix kódot olvashatunk vagy éppen írhatunk. De ezek most még kisebb-nagyobb

hiányosságoktól szenvednek.

Főleg a képfeldolgozási algoritmusokon van még mit javítani, hiszen a valós életben szinte

biztos, hogy nem fogunk tudni olyan szép és tiszta vonalkódokat lefényképezni, mint

amilyeneket én itt most tisztán a kibővített programommal vagy más programmal

generáltam. A valóságban különböző fényviszonyok mellett, más-más szögből lefényképezett

vonalkódot, a mobiltelefon kamerájának kalibrációs paramétereinek ismerete nélkül, kell

tudnia az alkalmazásunknak, egy kódot detektálnia és értelmeznie minimális, a számára

rendelkezésre álló erőforrás felhasználásával.

Page 58: Diplomaterv - Pázmány Péter Catholic Universityusers.itk.ppke.hu/~tihanyia/GSMapp/Szilvassy_Balazs.pdf · 1083 Budapest, Práter u. 50/A Tel/Fax: 886-4700 E-mail: tanulmanyio@itk.ppke.hu

58

3.7. Vonalkód olvasó, mint mobiltelefonos alkalmazás

Több, már létező piaci megoldás született a kétdimenziós vonalkódokban rejlő

lehetőségek kiaknázására.*25+ Szinte korlátlan a lehetőségek tárháza, ha arra gondolunk,

hogy nagyon kis helyen, ember számára olvashatatlan formátumban, viszont gép számára

könnyen értelmezhetően, nagy hibatűréssel, információt tudunk tárolni. Egy ilyen

megvalósítás a Japánban már évek óta sikeresen működő KaywaReader: *21+

Ennek sikere a robosztus alkalmazásban rejlik, mely letölthető közvetlen mobiltelefonra

WAP-on keresztül, és már futtatható is. De leszedhetjük a számítógépünkre is, és onnan

tetszőleges eszközzel töltjük át a mobiltelefonunkra, majd használjuk (37. ábra).

Ahhoz hogy egy ilyen mobiltelefonos alkalmazás sikeres legyen, több faktort figyelembe kell

vennünk. Egy ilyen fontos tényező véleményem szerint, hogy minél nagyobb lefedettséget

érjünk el mobilalkalmazásunkkal a telefonok között. Hogy a Java-s verziót említsem: a Google

által írt osztálykönyvtár akkor tud zökkenőmentesen működni, ha a mobiltelefonon futó Java

virtuális gépen megtalálható a MIDP 2.0-ás Java csomag. Ez az osztály felel a mobiltelefon

kamerájának Java-n keresztüli eléréséért. Viszont 2008-ban csak a legújabb modellekben volt

megtalálható. Sok ember számára megfelelő alternatíva az lenne, hogy a saját

mobiltelefonjaik alkalmazásával készítik el a képet, amit utána a vonalkód olvasóval

betallóznak, majd dekódolnak. Ezzel szinte már is lefedtünk minden kamerával rendelkező

mobiltelefont az alkalmazásunk számára, és valljuk meg, manapság már nem is nagyon

található olyan készülök, mely ne rendelkezne legalább egy darab, egyszerű, beépített

kamerával.

Érdemes további ajánlásokat figyelembe vennünk, ha azt szeretnénk, hogy mobiltelefonra

fejlesztett szoftverünknek jó visszhangja legyen *26+. Ezeket a javaslatokat négy fő csoportba

sorolhatjuk, melyek további kisebb alcsoportokra tagolódnak:

37. ábra: KaywaReader, mobiltelefonos alkalmazás

Page 59: Diplomaterv - Pázmány Péter Catholic Universityusers.itk.ppke.hu/~tihanyia/GSMapp/Szilvassy_Balazs.pdf · 1083 Budapest, Práter u. 50/A Tel/Fax: 886-4700 E-mail: tanulmanyio@itk.ppke.hu

59

- Használhatóság

o Kisebb a képernyő mérete, mint egy normál PC-nek

Elimináljuk a felesleges UI(felhasználói interfész)

komponenseket.

Használjunk teljes képernyőméretet, ha lehetséges.

Gondosan tervezzük meg a felhasználói felületet.

o Nem férnek el a párbeszédablakok a képernyőn

Igyekezzünk kis méretű párbeszédablakokat alkalmazni.

o A vertikális- és horizontális orientáció változhat

Úgy tervezzük meg alkalmazásunkat, hogy mindkét orientációt

támogassák.

Használjunk teljes képernyőméretet.

Bizonyos alkalmazások megkövetelik, hogy csak az egyik

orientációt használják. Amennyiben a program funkcionalitása

ezt szükségessé teszi, ez is egy elfogadható megoldás.

o Nem elég nagy a képernyő, hogy megjelenítsük az adatokat

Használjunk görgetősávokat.

o A felhasználói felületen keresztül gyakran kérünk input-ot

Ahol lehet, használjuk a hardware-es gombokat.

o Véletlen aktiválás

A gomboknak elég nagynak kell lenniük mind ujjal való

használathoz, mind stylus-hoz.

Biztosítani kell lehetőséget arra, hogy a felhasználó bárhonnan

visszaléphessen az előző állapotba.

- Felhasználói felület és hardware limit

o A képernyő méret és a felbontás általában mindig más

Bizonyosodjunk meg róla, hogy a szövegek olvashatóak.

Készítsük fel termékünket a leggyakoribb méretekre.

o Bizonyos eszközök csak opcionálisak

Ne korlátozzuk a szövegbevitelt csak klaviatúrára.

Tegyük lehetővé programok telepítését többféle módon, mint

például web-ről vagy külső meghajtóról.

o A képernyő orientációja változhat

A képernyő rotációjához igazítsuk a felhasználói felületet, kivéve

ha ez a funkcionális működés miatt nem lehetséges.

Page 60: Diplomaterv - Pázmány Péter Catholic Universityusers.itk.ppke.hu/~tihanyia/GSMapp/Szilvassy_Balazs.pdf · 1083 Budapest, Práter u. 50/A Tel/Fax: 886-4700 E-mail: tanulmanyio@itk.ppke.hu

60

o Jobb oldali klikkek, több gombos klikkek általában nehezen

kivitelezhetőek

Próbáljuk elkerülni a nehezen kivitelezhető gomblenyomásokat,

törekedjünk egyszerűségre.

- Korlátozott erőforrások figyelembe vétele

o Magas CPU utilizáció

Optimalizáljuk a feladatokat úgy, hogy a CPU mihamarabb

végezhessen, és visszaválthasson energiatakarékos üzemmódba.

Nagyfokú leterheltség esetén legyen lehetőség a részletesség

„lebutítására” például videó lejátszásnál.

o Az adattároló hardware használata

Puffereljük az adatokat, hogy minél kevesebb I/O műveletet

kelljen végrehajtanunk mind gyorsaság, mind a hardware

kímélése szempontjából.

o Optimalizált médialejátszás

- Kapcsolattartás

o Nem megbízható kapcsolat

Használjuk a rendszer eseményfigyelőit, hogy tisztában legyünk a

kapcsolat állapotával.

o Offline használat

Cache-eljük az adatokat.

o Adatvesztés, adatbiztonság

Használjunk biztonsági megoldásokat a kényes adatok

továbbítására.

Használjuk a lokális cache-t míg a szerver nem verifikálja magát.

o Szerver vagy web-service nem elérhető

Használjuk a lokális cache-t, és tekintsük kapcsolódási hibának,

míg el nem érhetőek.

o Szinkron kommunikáció

Használjunk aszinkron kommunikációt, hogy a válasz ne blokkolja

a futási szálat.

Page 61: Diplomaterv - Pázmány Péter Catholic Universityusers.itk.ppke.hu/~tihanyia/GSMapp/Szilvassy_Balazs.pdf · 1083 Budapest, Práter u. 50/A Tel/Fax: 886-4700 E-mail: tanulmanyio@itk.ppke.hu

61

További ötletek, melyekkel egy vonalkódolvasó, mobiltelefonos alkalmazás értéke és

közkedveltsége talán nagyban növelhető:

Semacode-hoz hasonló kódok fejlesztése, melyekkel nem pusztán szöveges

információt dekódolhatunk, hanem belső utasításokat is adhatunk. Például kérjük a

böngészőt, hogy a dekódolt URL-t nyissa meg és töltse be. *22+ Rengeteg lehetőség

rejlik ebben, ha komolyabban belegondolunk, hiszen szinte korlátlan az elképzelések

tárháza. Egy komplett, új utasításnyelvet implementálhatunk, mellyel webcímet

tárolhatunk vonalkódban, és a mobiltelefon az adat értelmezése során, egy tag

alapján, azonnal megnyitja a címet egy böngészőben. Szintén egy másik utasítás-tag

arra lenne használható, hogy az utána lévő adatot a készülék névjegy adatként

kezelje, és azonnal hozzon létre egy új kontaktot belőle. Élelmiszereket ilyen

kódokkal felcímkézve, a mobiltelefonunk egy kattintásra receptötleteket jeleníthet

meg az adott termékkel kapcsolatban, vagy éppen megmutathatja számunkra a

vitamin és kalóriatáblázatát. Ezekből az illusztrációkból is látszik, hogy szinte

bármilyen területen felhasználhatóak lennének ezek a vonalkódok, létjogosultságuk

megkérdőjelezhetetlen.

Vonalkód kinyerésének lehetősége nem csupán videó folyamból (video stream),

hanem akciógomb lenyomására fényképezőből, vagy már korábban létrehozott és a

programba betallózott képből is lehetséges.

Page 62: Diplomaterv - Pázmány Péter Catholic Universityusers.itk.ppke.hu/~tihanyia/GSMapp/Szilvassy_Balazs.pdf · 1083 Budapest, Práter u. 50/A Tel/Fax: 886-4700 E-mail: tanulmanyio@itk.ppke.hu

62

4. Képfeldolgozási eljárások, saját program létrejötte

Sikeresen eljutottunk odáig, hogy tudjuk, az elektronikus vásárlási rendszerünk

megvalósításához kétdimenziós vonalkódot akarunk használni, a nagy tárkapacitása, a magas

fokú hibatűrő képessége és a kis helyigénye miatt. Említettem, illetve be is mutattam általam

használt megoldásokat kétdimenziós datamatrix vonalkód írására és olvasására. Így

lehetőségünk nyílik tesztképek kreálására, illetve bizonyos szintig tesztképeken

végrehajtható vonalkódolvasási műveletek elvégzésére. Tisztáztuk, hogy mobiltelefonra

fejlesztett alkalmazásoknál sokkal korlátozottabbak a felhasználható erőforrások, így nem

lehet a tervezést egy górcső alá venni egy PC-kre szánt alkalmazásfejlesztéssel vagy éppen

egy web szerveren futóéval, más fajta megközelítésekkel kell élnünk.

Mindezen felül meg kell állapítanunk, ahhoz, hogy az elektronikus utazási jegyünk

ellenőrizhető is legyen, szükséges beleásnunk magunkat a képfeldolgozás színes világába, és

fel kell térképeznünk a lehetőségeinket.

4.1. A Google ZXing nevű projektben való szerepem

A ZXing a Google egy nyílt forráskódú tiszta Java-s fejlesztése Android alapú mobil

operációs rendszerekre, melyet bárki az Apache 2.0-ás licensz keretei között használhat.

Természetesen portolható az alkalmazás egyéb Java ME virtuális gépet futtató rendszerre is.

Ennek a licensznek a lényege röviden összefoglalva, hogy bárki felhasználhatja a kódot

ingyen és bérmentve, azzal a kikötéssel, hogy a módosított termékre is ugyan ezek a licensz

feltételek érvényesek. Még egy fontos pontja van, hogyha valami módosítást végzünk a

kódokon, fel kell tüntetnünk ezeket a változtatásokat is.

A ZXing projekt 2008. októberében még 0-ás verziószámmal futott. Egyik főbb hiányossága

volt, hogy a datamatrix kódok felismerése képekről, még korántsem volt tökéletes. (A

forráskódban ki is volt kommentezve az ehhez tartozó modul, belenyúlás nélkül nem

használható.) Legjobb tudomásom szerint jelenleg sem képes még valós, életszerű

helyzetben lefényképezett datamatrix kódot felismerni, és egyelőre nem is dolgoznak ennek

a modulnak fejlesztésén. Itt kerültem a képbe azáltal, hogy kifejeztem érdeklődésemet a

munkával kapcsolatban a Google egy fórumán, és az egyik felelős fejlesztő felvette velem a

kapcsolatot.

Page 63: Diplomaterv - Pázmány Péter Catholic Universityusers.itk.ppke.hu/~tihanyia/GSMapp/Szilvassy_Balazs.pdf · 1083 Budapest, Práter u. 50/A Tel/Fax: 886-4700 E-mail: tanulmanyio@itk.ppke.hu

63

4.2. A feladat konkretizálása és előkészítése

Az én feladatom végső soron az lett, hogy próbáljak meg kifejleszteni olyan

algoritmust, mellyel nagy hatékonysággal lehet datamatrix képeket felismerni.

Több fizetős program próba verzióját is megvizsgáltam. Szándékosan megváltoztatott

tesztképekkel próbáltam felfedni gyenge pontjaikat, hogy végül egy olyan rendszert

alkothassak, mely nagyobb biztonsággal végzi a feladatát, mint ezek a piacon kapható

szoftvertermékek.

Ezután munkám kezdeti lépései voltak egy olyan keretrendszer megalkotása, melyben

grafikus felhasználói felületen(GUI) keresztül tölthetek be tetszőleges számú képet. Ezeken

több algoritmust ki is próbálhatok, majd a végeredményt megjeleníthetem és el is

menthetem. Természetesen szükségem volt ehhez még egy függvénykönyvtár

megalkotására, melyekkel a különböző képi transzformációkat tudtam könnyűszerrel,

bármilyen sorrendben végrehajtani. Ezen felül még gyártottam érvényes, saját datamatrix

kódokat a korábbi programommal, majd ezekből különböző verziójú tesztképeket

készítettem, melyek például perspektivikusan el vannak torzítva, vagy éppen meg vannak

forgatva. Továbbá más, az interneten fellelhető tesztképeket is felhasználtam a programom

hatékonyságának tesztelésére.

4.3. A keretrendszer és a tesztképek két fontos szereplője

A keretrendszerem három fő részből áll. Az egyik a program vezérléséért felelős

felhasználói felület. Itt lehet betölteni a képeket, algoritmusokat lefuttatni rá, illetve az

eredményeket kimenteni (38. ábra).

38. ábra: Teszt-keretrendszerem kezelőfelülete

Page 64: Diplomaterv - Pázmány Péter Catholic Universityusers.itk.ppke.hu/~tihanyia/GSMapp/Szilvassy_Balazs.pdf · 1083 Budapest, Práter u. 50/A Tel/Fax: 886-4700 E-mail: tanulmanyio@itk.ppke.hu

64

A második rész a képek megjelenítésért felelős modul, mely minden számára átadott képet

tetszőleges feliratú új ablakban jelenít meg, és automatikus görgetősávval lát el, amennyiben

a kép nagyobb mint az ablak kerete (39. ábra).

A harmadik talán legfontosabb rész pedig egy statikus osztálykönyvtár létrehozása volt,

melyben közel 30 képfeldolgozási eljárást implementáltam, mint például a Laplace élkeresés,

binearizálás megadható küszöbértékkel, képek forgatása tetszőleges szögben, élesítés vagy

éppen elmosás, vagy akár a különböző Java-s képtípusok és mátrixok között konverziót

elvégző metódusok. Ezen felül még létrehoztam további olyan osztályokat, melyekkel a kép

pontjain tudok hatékonyabban dolgozni, clusterekbe rendezhetem őket, melyeket eltérő

színezéssel meg is jelenítek vagy éppen befoglaló négyzetet számíthatok rájuk (40-41. ábra).

39. ábra: Teszt-keretrendszerem képmegjelenítője

40. ábra: Teszt-keretrendszerem clusterező algoritmusának végeredménye

Page 65: Diplomaterv - Pázmány Péter Catholic Universityusers.itk.ppke.hu/~tihanyia/GSMapp/Szilvassy_Balazs.pdf · 1083 Budapest, Práter u. 50/A Tel/Fax: 886-4700 E-mail: tanulmanyio@itk.ppke.hu

65

Szeretném akkor utólag bemutatni tesztképeim két fontos szereplőjét, a fentebb látható két

cicát, melyek az éjszakába nyúló programozások alkalmával is mindig mosolyt csaltak az

arcomra, és a hátteret is, melyre a továbbiakban majd részletesebben kitérek.

4.4. Datamatrix kód megtalálása egy képen

Az elgondolásom alapjául a datamatrix és szinte bármilyen egyéb vonalkód legfőbb

vonásai szolgáltak. Jellegzetesen fehér háttéren fekete vonalak vagy pöttyök váltakozása.

Ilyet egy képen lehetne keresni öntanuló vagy datamatrix mintázatú területen tanított

textúra szegmentációval. Vizsgálhatnánk a képen hol van nagy intenzitásváltozás, azaz sűrűn

előforduló fehérből-feketébe váltás vagy fordítva. De talán az egyik legegyszerűbb megoldás

a binearizálás. Ehhez egy saját függvényt írtam, melynek paraméterben átadható, hogy

milyen színértékek között színezzen valamit hasznos pixelnek, és milyenen ne (42. ábra) [31].

41. ábra: Teszt-keretrendszerem befoglaló négyzet számítás utáni eredménye

Page 66: Diplomaterv - Pázmány Péter Catholic Universityusers.itk.ppke.hu/~tihanyia/GSMapp/Szilvassy_Balazs.pdf · 1083 Budapest, Práter u. 50/A Tel/Fax: 886-4700 E-mail: tanulmanyio@itk.ppke.hu

66

Erre azért van szükség, mert vannak olyan képek, ahol az ég, ajtófélfa vagy bármi más

fehérebb, mint a datamatrix nyugalmi zónája, vagy épp a háttérben álló macska ugyan olyan

fekete, mint a datamatrix sötét cellái. Ezzel a módszerrel iteratívan lehet változtatni az

értékeket, hogy a lehető legtöbb - számunkra – zajt kiszűrjük a képből, és akár már elsőre

csak a megfelelő ponthalmazt találjuk meg. Az alábbi képen (43. ábra) jól látható például,

hogy a korábbi paraméterekkel, az algoritmus binearizálás után semmi lényegi információt

nem talált, mivel a datamatrix fehér része valójában inkább szürke a fényviszonyok miatt, és

maga a flakon, amin szerepel, már az is világosabb, mint ő. Ezért van szükség az iteratívan

léptető színérték menti vágásra („thresholdolásra”) (44. ábra).

42. ábra: Teszt-keretrendszerem eredményképei binearizálás után

43. ábra: Teszt-keretrendszerem eredményképei első iterációs rossz binearizálás után

Page 67: Diplomaterv - Pázmány Péter Catholic Universityusers.itk.ppke.hu/~tihanyia/GSMapp/Szilvassy_Balazs.pdf · 1083 Budapest, Práter u. 50/A Tel/Fax: 886-4700 E-mail: tanulmanyio@itk.ppke.hu

67

Egy másik szemléletes példa, ha a háttérben valami olyan fekete van, mint amilyen a

datamatrix adatainak jelölése. Az alábbi képen jól látható, hogy a cicának a mellkasa is

bekerült a datamatrix clusterébe, mivel színtartományban közel volt, továbbá mert a

távolságszámítás szerint is lehetne akár még a datamatrix adat-ponthalmaz része (45. ábra)

[30].

Ez utóbbi hibák kiküszöbölhetőek úgy, hogy a fekete pontokra binearizálunk [31], azaz arra,

ami a datamatrixban az adatot jelöli, viszont ugyan ezt megcsináljuk a fehér pontokra is, és

csak azon fekete pontokat vizsgáljuk, melyeket valami fehér zár közre. Így elkerülhető, hogy

a nyugalmi zónán kívül eső sötét pontot is adatpontnak vélje az algoritmus.

44. ábra: Teszt-keretrendszerem eredményképei első iterációs jó binearizálás után

45. ábra: Teszt-keretrendszerem eredményképe szándékosan rosszul paraméterezett

vonalkódkeresésre

Page 68: Diplomaterv - Pázmány Péter Catholic Universityusers.itk.ppke.hu/~tihanyia/GSMapp/Szilvassy_Balazs.pdf · 1083 Budapest, Práter u. 50/A Tel/Fax: 886-4700 E-mail: tanulmanyio@itk.ppke.hu

68

Az egész eljárás lényege, hogy olyan sötét pontokat keresünk, melyeket fehér pontok zárnak

közre. Az ilyen fekete pontokon aztán végigjárunk, csoportokba zárjuk a pontokat, majd

további vizsgálatokat végzünk rajtuk, hogy tényleg datamatrix lehet-e a clusterezett

ponthalmaz (46. ábra).

Ezek után megkeresem a csoportosított ponthalmazok befoglaló polygonját, majd ezek

mentén kivágva a képrészletet vizsgálom meg, hogy valójában datamatrixot találtunk-e, vagy

az iteratív eljárással változtatni kellene a paramétereken, esetleg eljutottunk egy olyan

pontra, hogy túl régóta fut már a keresés, és valószínűleg nincs semmilyen vonalkód a képen.

Az alábbi két kép két különböző hátterű tesztképen mutatja a megtalált régiót (47. ábra).

46. ábra: Teszt-keretrendszerem eredményképe clusterezés után

47. ábra: Teszt-keretrendszerem véglegesnek tekinthető eredményei

Page 69: Diplomaterv - Pázmány Péter Catholic Universityusers.itk.ppke.hu/~tihanyia/GSMapp/Szilvassy_Balazs.pdf · 1083 Budapest, Práter u. 50/A Tel/Fax: 886-4700 E-mail: tanulmanyio@itk.ppke.hu

69

Az algoritmus robosztussága tovább javítható a már korábban említett egyéb eljárások

használatával is, mint pl. az él-keresés vagy a textúra szegmentáció (48. ábra). Az előbbi

például azért lehet hasznos, mert tudjuk, hogy a datamatrix jobb oldalán és alul kötelező

jelleggel egy összefüggő sötét vonal található. Így ha a képet élesítjük, - mivel hogy a Laplace-

élkereső érzékeny a zajra [31] - majd egy magas értékkel thresholdoljuk és végül lefuttatjuk

rajta az él-keresést, bizonyos képeken hasznos plusz információhoz juthatunk.

Ezen a fent látható képen (48. ábra) ott jelentkezik a probléma, hogy a háttérben látható ajtó

mintázata is tartalmaz olyan egybefüggő vonalakat, mely akár datamatrix határoló

szimbólum is lehetne.

Összegezve az eredményeket, azt lehet elmondani, hogy Datamatrix vonalkód megtalálása

egy képen, koránt sem triviális feladat, és többféle járható út is kínálkozik. Az egyik legjobb

megoldást úgy érhetjük el, ha a különböző megközelítéseket mind felhasználjuk az eredmény

pontosításához. A három fő tényező, amiből én kiindultam, hogy életszerű képeken is

megtaláljam a datamatrixot, a következőek:

A datamatrix fehér és fekete cellákból épül fel.

o Alulátersztő szűrő alkalmazásával, jól beállított csúcsérték mellett

megtalálhatjuk a vonalkód összes fekete celláját, plusz rossz esetben még

némi zajt is a háttérből.

48. ábra: Teszt-keretrendszerem egy alternatívája módosított él-kereséssel

Page 70: Diplomaterv - Pázmány Péter Catholic Universityusers.itk.ppke.hu/~tihanyia/GSMapp/Szilvassy_Balazs.pdf · 1083 Budapest, Práter u. 50/A Tel/Fax: 886-4700 E-mail: tanulmanyio@itk.ppke.hu

70

o Felüláteresztő szűrő alkalmazásával és jól beállított csúcsérték mellett

megtalálhatjuk a vonalkód összes fehér celláját, plusz szintén némi zajt a

háttérből, ha nem volt szerencsénk.

o Az alul- és felüláteresztő szűrők eredményeinek uniója tartalmazza majd a

vonalkódunkat, és némi zajt a háttérből [30].

o Ha nem csak egy csúcsérték alatt és felett vizsgálódunk, hanem két

csúcsérték között, akkor iteratívan végig tudunk menni a színskálán rekurzív

hívásokkal, és sokkal pontosabban ki tudjuk szűrni a háttérzajt, a legtöbb

esetben szinte teljesen el is tüntetve azt. Ehhez persze vagy tisztában kéne

lennünk a megfelelő színtartományokkal, ahol keresnünk kell, vagy minden

iterációnak meg kell próbálnia utolsó lépésként a vonalkód felismerést, és ha

nem sikerül, lépteti tovább a ciklust, illetve bizonyos idő elteltével akár

terminálhatja is magát.

A datamatrixnak a bal oldali és az alsó határoló cellája egybefüggő vonal, így

élkereséssel felfedezhető. Természetesen ez esetben is számolni kell a háttérből

eredő, hozzárakodó zajokkal.

A vonalkódoknak nagy az intenzitásváltozása, ergo olyan területet kell keresnünk a

képen, ahol kis részeket vizsgálva is sok a világos és sötét pixelek váltakozása.

Még egy használható információ, hogy tudjuk, a vonalkódot nyugalmi zóna veszi

körül, ami általában annyit takar, hogy a sötét polaritású vonalkódot fehér háttérre

nyomtatták.

Ezek az általam vázolt megoldások természetesen nem csupán datamatrix vonalkód

észlelésére lehetnek alkalmasak, hanem bármely vonalkódéra, mely a következő

tulajdonságok valamelyikével vagy mindegyikével rendelkezik:

Sötét és világos színekből épül fel.

Élek találhatóak benne.

Nagy az intenzitásváltozás (sötét és világos színek váltakozása).

Nyugalmi zóna veszi körül a vonalkódot, ami elüt a háttértől.

Olyan elektronikus eszközökön, ahol emberi beavatkozás is feltételezhető, mint például a

mobiltelefon, nagyban egyszerűsíthető az algoritmus egy olyan megoldással, hogy a kamera

által megjelenített képre egy célkeresztet teszünk, és a vonalkód sikeres megtalálásának

feltétele, hogy a célkereszt a vonalkód felett legyen a keresés elindításakor. Így rögtön meg

tudjuk állapítani a világos és sötét színek tartományát, hiszen a célkereszt közvetlen

Page 71: Diplomaterv - Pázmány Péter Catholic Universityusers.itk.ppke.hu/~tihanyia/GSMapp/Szilvassy_Balazs.pdf · 1083 Budapest, Práter u. 50/A Tel/Fax: 886-4700 E-mail: tanulmanyio@itk.ppke.hu

71

közelében lévő pixelekről beszélünk. Egy másik alternatíva lehet a kamera képén egy

befoglaló négyszög megjelenítése, és a vonalkódnak ebben a négyszögben kell minél

pontosabban elhelyezkednie.

Tovább egyszerűsíthető a detektálás korlátozott erőforrásokkal rendelkező képeken, ha

kifejezetten meghatározzuk, hogy milyen vonalkódot keressen a program, ne neki kelljen

kitalálnia az összes lehetőség végigpróbálgatásával.

A képfeldolgozást taglaló alfejezetben végezetül szeretném még bemutatni az általam kreált,

eredeti tesztképeket, melyek mindegyike a valós szituációk egy vagy több különböző

eshetőségét igyekezett lefedni (49. ábra).

Eredeti „Balu vagyok” üzenetet kódoló kép.

Az eredet kép síkban megforgatva 90 fokkal.

Perspektivikusan torzított eredeti kép.

Hullámos felületre elhelyezett és megforgatott

kép.

Térben nyújtott és elforgatott kép.

Zajos kép.

Színskála-módosított és enyhén szemcsés kép.

Valóságszerű kép, térbeli torzítással, forgatással

és sok zavaró elemmel a háttérben.

Se egyéb zavaró tényező felvitele, se a

képminőség rontása nem változtatott az

algoritmusom hatásfokán.

49. ábra: Tesztképek a keretrendszeremhez

Page 72: Diplomaterv - Pázmány Péter Catholic Universityusers.itk.ppke.hu/~tihanyia/GSMapp/Szilvassy_Balazs.pdf · 1083 Budapest, Práter u. 50/A Tel/Fax: 886-4700 E-mail: tanulmanyio@itk.ppke.hu

72

5. Elektronikus jegy-rendszer bevezetése egy kitalált

cégnél

Az utolsó fejezetben egy olyan rendszer megalkotását taglalom, melyet egy általam

kitalált, tömegközlekedéssel foglalkozó cég szeretne bevezetni. A rendszer természetesen az

elektronikus jegyek bevezetését és használatát valósítaná meg, a céget pedig a realitás

kedvéért akár a Budapesti Közlekedési Vállalatnak, más néven BKV-nak, is tekinthetjük, de

lényeges szempont, hogy a diplomamunkám alkalmazhatósága nem merül ki egy

szakterületen, bármely más céggel is szimulálható lett volna.

5.1. A rendszer céljának leírása a megrendelő cég szemszögéből

A megrendelő egy olyan elektronikus jegyrendszer bevezetését szeretné, mely

nagyban megkönnyíti az utasok jegyvásárlását, nyomon követhető, pontos statisztikát ad az

utazási szokásokról (így a járatok menetrendjének kialakításában is jelentős szerepet

kaphatnak ezek az adatok), valamint a tömegközlekedési járműveket jogtalanul használó

személyek kiszűrésére legalább akkora hatékonysággal képes, mint a jegy-alapú rendszer. Az

elektronikus jegy nem függhet a mobiltelefon típusától (természetesen reális keretek között,

pl. az 1 évnél nem idősebb telefonok 80%-án elérhetőnek kell lennie a szolgáltatásnak) és a

mobilszolgáltatótól. Használata nem bizonyulhat bonyolultabbnak, mint egy SMS elküldése,

valamint egy SMS vagy MMS fogadása, ugyanis az emberek nagy többsége ennek a technikai

tudásnak birtokában van, míg például a WAP használatát ennél jóval kevesebben sajátították

el, nem beszélve a legújabb technológiákról, melyeket csak egy viszonylag szűk, a technika

iránt fogékony réteg használ ki.

Az elektronikus jegyrendszer főként azok számára szeretné megkönnyíteni az utazást, akik

csak átutazóban vannak, vagy időszakosan tartózkodnak a városban, így az utazás

megkezdése előtt nem rendelkeznek utazásra jogosító szelvénnyel. Számukra az elektronikus

napijegy és vonaljegy bevezetése fontos. Egy másik célcsoport a rendszeres bérletvásárlók.

Ők ugyanis a bérletszelvény lejártakor kénytelenek sorban állni a bérletpénztárak előtt.

Számukra az elektronikusan igényelhető bérlet lenne a legsürgetőbb megoldás.

Page 73: Diplomaterv - Pázmány Péter Catholic Universityusers.itk.ppke.hu/~tihanyia/GSMapp/Szilvassy_Balazs.pdf · 1083 Budapest, Práter u. 50/A Tel/Fax: 886-4700 E-mail: tanulmanyio@itk.ppke.hu

73

5.2. A rendszer funkcionális követelményei

Bemenetek az SMS-ek, melyek tartalmazzák a jegyrendelés követelményeit. Erre a

rendszer válasza egy megfelelően kódolt SMS-jegy, illetve SMS-bérlet, mely az

utazási feltételeknek megfelelő használat során érvényes utazást biztosít a

felhasználónak, ami ellenőrizhető.

A rendszernek alkalmasnak kell lennie nagy mennyiségű vásárlás valós idejű

kiszolgálására (telefontársaság vagy szolgáltató felelőssége).

Képesnek kell lennie nagyfokú terhelés mellett is megbízható működésre anélkül,

hogy a szolgáltatás minőségében érezhető csökkenés következne be.

Az SMS igénylése és a visszakapott elektronikus szelvény megérkezése között

maximum 30 másodperc telhet el átlagos üzemi terhelés mellett.

Szükséges, hogy a javasolt értéket meghaladó terhelés felett is stabil maradjon a

rendszer. Némi késleltetéssel, de mindenképp szolgálja ki a beérkező vásárlási

kérelmeket.

Az igényelt jegyeket több évre visszamenőleg archiválni kell, hogy visszakereshetőek

legyenek probléma esetén, vagy anonim statisztikák készítéséhez. A hosszú távú

archiválás nem tartalmazhat személyiségi jogokat sértő adatokat, továbbá a tárolt

rekordokból nem szabad, hogy kikövetkeztethető legyen a vásárló személye vagy

bármilyen személyes adata. Szükséges a magas fokú diszkréció megőrzése.

A rendszerben lévő adatok biztonsága az elvárható legnagyobb gondossággal legyen

biztosítva. Az adatok tartalmi információjának biztonságára kell figyelni, hogy azok

ne kerülhessenek ki illetéktelenek kezébe. Ezzel is csökkentve a rendszer

feltörhetőségét.

A jegyvizsgálóknál lévő SMS-jegy ellenőrző szoftver megbízhatósága 95% fölött kell,

hogy legyen. Továbbá az ellenőrző szoftver használata nem igényelhet komolyabb

műszaki tudást, cél a felhasználóbarát és egyértelmű kezelőfelület.

A rendszerben alkalmazott titkosító kódolás a termékek árához képest elvárható

nehézségű kell, hogy legyen, ugyanakkor az ellenőrök készülékein alkalmazott

dekódoló futása nem lépheti át az 1-2 másodperes futási időt.

Az ellenőrök készülékein az ellenőrzésnek körülbelül 3 másodpercen belül kell

lezajlania.

A rendszer egy bejövő SMS-re, amely tartalmazza a megálló kódját és a jegy típusát

küld egy megfelelően kódolt számsort tartalmazó SMS-jegyet.

Page 74: Diplomaterv - Pázmány Péter Catholic Universityusers.itk.ppke.hu/~tihanyia/GSMapp/Szilvassy_Balazs.pdf · 1083 Budapest, Práter u. 50/A Tel/Fax: 886-4700 E-mail: tanulmanyio@itk.ppke.hu

74

A megállókban kihelyezett kódoknak nem szabad hosszúnak lenniük, és

mindegyiknek könnyen azonosíthatónak kell lennie.

Hibás SMS jegyrendelés esetén egy válasz SMS-t kap a felhasználó a hibásan

elküldött jegyrendelési igényéről, és nem kerül levonásra semmilyen extra összeg a

felhasználó egyenlegéről.

5.3. A rendszer nem-funkcionális követelményei

Minden BKV megállónak lesz egy saját egyedi azonosító kódja, melyet a jegy

rendeléskor meg kell adnia a vásárlónak, ezáltal lesz ellenőrizve, hogy melyik járatra

érvényes a menetjegy. Ezen felül egy normál SMS-jegy megvásárlásától számított 1 órán

keresztül érvényes. Átszálláskor természetesen új menetjegyet kell megváltani.

A vásárlók tájékoztatására minden BKV megállóban és járaton plakátok hirdetik, hogy milyen

formában és milyen tarifával vehető igénybe az elektronikus SMS-jegy szolgáltatás.

Egyéb nem-funkcionális követelmények, melyek konkrét pontosítást igényelnek (50. ábra):

Tulajdonság Mérés

Sebesség A másodpercenként feldolgozott tranzakciók száma

Méret A szoftver mérete kByte-ban

Egyszerű

használhatóság

Szükséges képzési idő

Felhasználóknak egyszerű használhatóság

Ellenőröknek részletesebb oktatást igényel

Megbízhatóság A hibák átlagos bekövetkezési ideje

Annak valószínűsége, hogy a rendszer nem áll rendelkezésre

Rendelkezésre állás

Robusztusság Újraindulási idő hiba után

A hiba okozta adat-meghibásodások valószínűsége

Hordozhatóság A célrendszerek száma

50. ábra: Nem-funkcionális követelmények és mérésük

Page 75: Diplomaterv - Pázmány Péter Catholic Universityusers.itk.ppke.hu/~tihanyia/GSMapp/Szilvassy_Balazs.pdf · 1083 Budapest, Práter u. 50/A Tel/Fax: 886-4700 E-mail: tanulmanyio@itk.ppke.hu

75

5.4. Szakterületi követelmények vázlata

Ellenőrök oktatása az új rendszer használatával kapcsolatban. Jegyrendszer ismerete,

jelenlegi rendszer áttekintése, esetleges módosítása.

Jogi esetek felmérése az esetleges, jövőbeni, vásárlói panaszok kapcsán.

Programot üzemeltető, felügyelő, karbantartó, fejlesztő hozzáértő alkalmazottak

felvétele.

A rendszer folyamatos üzemeltetéséhez szükséges emberi erőforrások részletezése

műszakonként:

o Két felsőfokú informatikai végzettséggel rendelkező szakember (hiba esetén

mozgósítandóak, nem állandó felügyelet).

o Két középfokú informatikai végzettséggel rendelkező szakember (állandó

felügyelet).

o Két alkalmazás-adminisztrátor (a jegyrendszerben szereplő adatok

módosítása, beállítása, ellenőrzése).

o Igénytől függő számú jegyellenőr oktatás céljából, akik az új készüléket és

annak kezelhetőségét megtanítják az alkalmazottaknak.

5.5. Egy használati eset forgatókönyvének felvázolása

Felhasználó oldali forgatókönyv (51. ábra):

1. A felhasználó megérkezik egy BKV megállóhoz.

2. Jegyet szeretne vásárolni elektronikusan.

3. BKV megállóban a leendő utas SMS-t küld a BKV megadott telefonszámára

4. A központ rövid időn belül visszaküld egy válasz üzenetet, amely lehet elfogadó,

ilyenkor egy kódsorozatot és egy időpontot kap a leendő utas, így érvényes jeggyel

fog rendelkezni a megadott időpontig vagy lehet elutasító, ilyenkor pedig az

ügyfélszolgálat telefonszámát kapja meg, ahol érdeklődni tud a sikertelenség okáról.

5. Kellemes utazás a BKV járatán.

Ellenőr oldali forgatókönyv:

1. Műszak kezdete, az ellenőr a leolvasó készülékkel bejelentkezik a központba a saját

felhasználó nevével és jelszavával.

2. A bejelentkezés után a központból letöltődik az aznapi érvényes kódgenerálás.

Page 76: Diplomaterv - Pázmány Péter Catholic Universityusers.itk.ppke.hu/~tihanyia/GSMapp/Szilvassy_Balazs.pdf · 1083 Budapest, Práter u. 50/A Tel/Fax: 886-4700 E-mail: tanulmanyio@itk.ppke.hu

76

3. Az ellenőr beállítja a leolvasó készüléknek az ellenőrizendő járat járatszámát, majd

felszáll.

4. Menetjegyek ellenőrzésekkor az egyik utasnak elektronikus jegye van, megkéri az

utast, hogy nyissa meg a válasz SMS-t, amely a kódot tartalmazza, majd mutassa fel a

leolvasó készüléknek.

5. A készülék leolvassa a kijelzőt, majd ellenőrzi, hogy a kód érvényes-e.

5.6. Az elektronikus utazási jegy bevezetésének célja

Időspórolás a jegyvásárlóknak.

Nem helyhez kötött jegyvásárlás lehetősége.

Jegyek érvényesség ellenőrzésének biztosítása.

Jegyekkel való visszaélés, csalás megelőzése.

Jegyellenőrök munkájának segítése (akár gyorsabbá tétele, persze ehhez ki kell

dolgozni a büntető rendszer meggyorsítását is).

Utasszállító vállalatok jegyekből származó bevételeinek biztosabbá tétele (talán

többen veszik meg, többet lehet ellenőrizni).

51. ábra: Egy lehetséges használati eset UML diagram

Page 77: Diplomaterv - Pázmány Péter Catholic Universityusers.itk.ppke.hu/~tihanyia/GSMapp/Szilvassy_Balazs.pdf · 1083 Budapest, Práter u. 50/A Tel/Fax: 886-4700 E-mail: tanulmanyio@itk.ppke.hu

77

Egyszerűbb jegyvásárlás ( biztonságosabb: nem látják, hogy sorban áll, és nem tudják,

hogy pénz van nála, nem tudják, hol tartja a tárcát).

Környezetvédelem (a fölösleges szeméttermelés kiiktatása).

Vásárlási statisztikák alapján marketing és célirányosabb üzleti logika kigondolása a

nagyobb haszon érdekében.

Az elektronikus jegyek bevezetésénél élnünk kell a következő feltételezésekkel:

Az emberek inkább megveszik a jegyet így, mint várnak a sorokban.

A telefontársaságok, és az utasszállító vállalatok megegyezése/szerződése akár a

haszon megosztásának figyelembevételével, de létrejön.

5.7. Létrehozandó termékek, szolgáltatások és elvégzendő feladatok

Telefonvállalatokkal való szerződés, és a jegyrendszer programjának megvalósítása,

üzenetek kódolásának megoldása.

Telefonvállalatokkal való szerződés, és a jegyrendszer programjának megvalósítása,

üzenetek kódolásának megoldása.

Büntető rendszer megoldása, annak egyszerűsítése. (Helyben való fizetés telefon

útján történő megoldhatósága esetleg, kiszűrendő a "na akkor inkább leszállok"

megoldás.)

Jegyrendszer elérésének (SMS, MMS, WAP, web) megtervezése és leprogramozása.

Attól függően, hogy milyen kódolást választunk, annak megjelenítésének és a

bármilyen telefonra alkalmazhatóságának megoldása.

A rendszer egységei közötti kommunikáció specifikálása, az adatreprezentálás

módjának megalkotása, a biztonsági kockázatok felmérése.

Redundáns, telefonvonalra kapcsolt SMS-szerver konfigurálása, programozása.

Automatikus biztonsági mentések készítésének megszervezése, a tárolás biztosítása.

A központi szerver megfelelő védelmének kialakítása (tűzfal, jogosultságok

beállítása).

Telefonos alkalmazások megvalósítása (lehetőleg platform független nyelven).

Jegyellenőrző kapuk megvalósítása, és a rendszerbe történő integrálása.

Page 78: Diplomaterv - Pázmány Péter Catholic Universityusers.itk.ppke.hu/~tihanyia/GSMapp/Szilvassy_Balazs.pdf · 1083 Budapest, Práter u. 50/A Tel/Fax: 886-4700 E-mail: tanulmanyio@itk.ppke.hu

78

5.8. A rendszer architekturális modellje

Az adatfolyam modell funkcionális szemszögből mutatja be, hogy hogyan dolgozza fel a

rendszer az adatokat, és ezek áramlását is. Ezen felül reprezentálja a különböző állapotok

között.

Az ellenőrzés adatfolyam modellje (52. ábra):

Napi kód lekérése: ellenőr adatfolyam modellje (53. ábra):

Napi kód lekérése: központi adatfolyam modell (54. ábra):

52. ábra: Ellenőrzés folyamatának adatfolyam modellje

53. ábra: Adatfolyam modell az ellenőr napi kódlekérdezésének folyamatáról

54. ábra: Szerver oldali adatfolyam modell

Page 79: Diplomaterv - Pázmány Péter Catholic Universityusers.itk.ppke.hu/~tihanyia/GSMapp/Szilvassy_Balazs.pdf · 1083 Budapest, Práter u. 50/A Tel/Fax: 886-4700 E-mail: tanulmanyio@itk.ppke.hu

79

Szerver oldalon beérkező igénylés adatfolyam modellje (55. ábra):

A rendszer rétegezett architektúra modellje (56. ábra):

Alrendszerek definiálása:

Szerver

o Központi adatbázis

Regisztrált felhasználók hozzáadására és adminisztrálására szolgáló

alprogramok

Megállószámok megváltoztatását szolgáló szubrutinok

Jelenleg érvényes vonaljegyek és bérletek megváltoztatását szolgáló

szubrutinok

Vonaljegyek megváltoztatását szolgáló szubrutinok

Bérletek megváltoztatását szolgáló szubrutinok

Biztonsági másolatok készítését végző időzített alprogramok

o Telefonhálózati interfész

Bejövő SMS-ek fogadására szolgáló alrendszer

55. ábra: Szerverre befutó igény adatfolyam modellje

56. ábra: Az elektronikus mobiljegyek rendszerének rétegezett architektúra modellje

Page 80: Diplomaterv - Pázmány Péter Catholic Universityusers.itk.ppke.hu/~tihanyia/GSMapp/Szilvassy_Balazs.pdf · 1083 Budapest, Práter u. 50/A Tel/Fax: 886-4700 E-mail: tanulmanyio@itk.ppke.hu

80

Kimenő SMS-ek küldését szolgáló alrendszer

o Kérésfeldolgozó szubrutinok

Adatbázis bejegyzések írását szolgáló műveletek

Kódgenerátor indítására és konfigurálására szolgáló alegység

Regisztrációs kérelmek kezelése

Adatbázis lekérdezési templatek

o Kódgenerátor

o Adminisztrációs felület

Adatbázis biztonságáért felelős alegységek

Régebbi adatbázisdumpokból adatok kinyerésére szolgáló

szubrutinok

Hibaelhárítás

o Vendég felület (online, bankkártyával történő bérletigénylésre)

Hitelesítés

Elektronikus készpénz átutalási megbízás

o Internetes felület (kódvalidáció lebonyolítására)

Ellenőr oldali telefonos alkalmazás validációs kérelmeinek fogadása

Kódvalidátor konfigurálása

Eredmény visszaküldése

Felhasználó oldali telefonos alkalmazás

o kommunikációs interfész

o grafikus felhasználói interfész

Ellenőr oldali telefonos alkalmazás

o Grafikus felhasználói interfész

Ellenőrzési feladatokat kiszolgáló szubrutinok

o Kommunikációs interfész

Napi kódot lekérő szubrutin

Nap végén a teljesítéseket szummázó szubrutin

o Képfelismerő modul

o Karakterfelismerő modul

o Kódvalidátor

Page 81: Diplomaterv - Pázmány Péter Catholic Universityusers.itk.ppke.hu/~tihanyia/GSMapp/Szilvassy_Balazs.pdf · 1083 Budapest, Práter u. 50/A Tel/Fax: 886-4700 E-mail: tanulmanyio@itk.ppke.hu

81

Ellenőr oldali alrendszerek UML-je (57. ábra):

Szerver oldali alrendszerek UML-je (58. ábra):

5.9. A rendszer tesztelési tervei

Két részre bontjuk a tesztelési terveket:

szerver oldali tesztelés

ellenőrző készülék oldali tesztelés

Általános megjegyzések az egység- és rendszertesztekhez:

Igyekszünk a fejlesztési fázis már korai szakaszaiban a komponens és integrációs

teszteknél rálelni a lehető legtöbb hibára, mert később a kész termékből már

nehezebb lesz az esetleges bugokat, hibákat vagy hiányzó funkciókat kiemelni,

57. ábra: Az ellenőr oldali alrendszerek UML diagramja

58. ábra: A szerver oldali alrendszerek UML diagramja

Page 82: Diplomaterv - Pázmány Péter Catholic Universityusers.itk.ppke.hu/~tihanyia/GSMapp/Szilvassy_Balazs.pdf · 1083 Budapest, Práter u. 50/A Tel/Fax: 886-4700 E-mail: tanulmanyio@itk.ppke.hu

82

pótolni. Ehhez a tesztelések során is mérföldköveket fektetünk le, és az egyes

mérföldkövek elérése mind felénk, mind a megrendelő számára a szoftver minőségét

igazoló informatív jellegű jel lesz.

Bevett tesztstratégiaként mi is használjuk azt az elvet, hogy egy szoftverben ahol egy

hiba van, annak környékén több is akad. Így igyekszünk nagyobb ráfordítást szentelni

az esetleges hiba-clusterek felfedésében, majd ezek után mindig végrehajtjuk a

regressziós teszteket.

Mivel sajnos az elvi felépítésből eredendő hibákat a komponens és integrációs

teszteknél nem tudjuk még felfedezni, a rendszertesztek fázisa után folyamatosan

összevetjük a specifikáció követelményeit a megfelelő tesztesetekkel, és review-kat

alkalmazunk.

A stabil és robusztus működés a megrendelő egy kiemelten fontos kívánsága, attól

hogy a definiált tesztesetek már nem jeleznek hibákat vagy hiányokat, a fejlesztői

gárdának mindenképpen implementálnia kell a rendszerbe worst-case-scenerio-s

megoldásokat is.

A tesztfolyamat a következő szigorú részekből tevődik össze (59. ábra):

Szerver oldali tesztelés:

Komponens teszt: A szerver oldali program moduláris felépítéséből adódó komponensek

egyedi tesztjeit a program bonyolultságának elenyésző komplexitása miatt a programozók

59. ábra: Tesztelési lépések folyamatábrája a rendszer fejlesztésekor

Page 83: Diplomaterv - Pázmány Péter Catholic Universityusers.itk.ppke.hu/~tihanyia/GSMapp/Szilvassy_Balazs.pdf · 1083 Budapest, Práter u. 50/A Tel/Fax: 886-4700 E-mail: tanulmanyio@itk.ppke.hu

83

maguk végzik el. A komponenseknek eleget kell tenniük a komponens specifikálásakor

lefektetett követelményeknek, illetve elő- és utófeltételeknek.

Integrációs teszt: A tervezett interface-ek hibáinak felderítése végett, a komponensek

integrálása után egy szigorú integrációs tesztet vezetünk végig az SMS szolgáltatást nyújtó

szerződtetett telefontársaság(ok) és a szerveroldali feldolgozó program között, különböző

tesztstratégiákat figyelembe véve, hogy a későbbiek folyamán szinte közel 0-ára redukáljuk a

telefontársaság szolgáltatása miatt bekövetkező esetleges hibák megbúvásának esélyét.

Rendszerteszt: A DIN-ISO 9126-nak megfelelően hajtjuk végre a használhatóságra,

módosíthatóságra, funkcionalitásra, portabilitásra, megbízhatóságra és hatékonyságra

vonatkozó rendszerteszteket, hogy ráleljünk a szoftvertermékben rejlő funkcionális és nem-

funkcionális hibákra a rendszer viselkedésében.

White box teszt: Az SMS jegyek strukturális ismeretére alapozva a jó és rossz SMS jegyek

teszteseteire tesztadatokat generálunk, melyek lefedik az azonos ekvivalencia osztályokba

tartozó teszteseteket. A program generálja a helyes SMS-jegy igényeket és küldi a szervernek.

A szerver válasz SMS-eket küld a programnak vagyis elektronikus jegyeket, miután

feldolgozta a bejövő üzeneteket. Ezzel tesztelhető a szerver oldali helyes kiszolgálás

viselkedése.

Black box teszt: Teszt programmal a szerver oldali kiszolgálás tesztelése helytelen SMS-jegyek

esetén. A program generálja a helytelen SMS-jegyeket, például: "autó", "Imre", "gsgf987" és

küldi a szervernek. A szervernek észre kell venni a hibát és figyelmeztető SMS-t kell küldenie

a programnak további útmutatással.

Terhelés teszt: Teszt programmal a szerver oldali kiszolgálás tesztelése változó SMS-jegy

forgalom esetén. A program ciklusban generál 10.000 feldolgozandó SMS-t pár másodperc

alatt és a rendszer nem omolhat össze, szigorú elvárás a rendszerrel szemben a stabil

robosztus működés. Amennyiben a rendszer elbukik a terhelés teszten, javaslat a fejlesztői

gárdának a többszálú programozást támogató pool-ok használatára az erőforrások

szétosztása végett, így az SMS-ek feldolgozása érkezési sorrendben kis késleltetéssel, de

biztosan befejeződik.

Page 84: Diplomaterv - Pázmány Péter Catholic Universityusers.itk.ppke.hu/~tihanyia/GSMapp/Szilvassy_Balazs.pdf · 1083 Budapest, Práter u. 50/A Tel/Fax: 886-4700 E-mail: tanulmanyio@itk.ppke.hu

84

További tesztek: A rendszerkövetelményeknek megfelelően az üres SMS-eket, illetve az olyat,

ahol az SMS jegy ára nem vonható le a feladótól (például ingyenes internetes SMS küldési

lehetőség), ezeket is le kell kezelnie a rendszernek.

Megrendelő tesztesetei: A megrendelő tesztadataival a szoftvertermék specifikációnak

megfelelő futását mutatjuk be.

Ellenőr oldali tesztelés:

Komponens teszt: az ellenőrök készülékein futó SMS-jegy detektáló, illetve -kinyerő, a jegy

értékét dekódoló és az ellenőr számára a készülék rendszerüzeneteit generáló komponensek

tesztelése.

Integrációs teszt: a fentebb említett készülék-komponsensek kommunikációjának átfogó

tesztelése előre definiált tesztesetekre.

White box teszt: Az SMS-jegyek hitelességének vizsgálata. A helyes formátumban küldött

SMS-jegyekre szkenelhető érvényes válasz SMS-jegyek küldése. Ha a szerver szándékosan

hamisított jegyet kap, akkor azt észre veszi és egyéb jelentést ír róla a felhasználónak és az

üzemeltetőnek is.

Black box teszt: A különböző SMS-jegyek beolvasásának a tesztelése. Ha a rendszer csak a

megadott formátumot olvassa SMS-jegynek. Például: Ha képet kap egy tárgyról, azt ne

értelmezze jegynek.

Szkenner teszt: A különböző telefonokról való leolvasás tesztelése. Eltérő kijelzőjű és

struktúrájú telefonok szkenelhetőségének tesztelése.

5.10. Elektronikus jegykezelő rendszer egy gyakorlati megvalósítása

Munkám végső fázisaként implementáltam egy működőképes elektronikus jegyek

kiszolgálását lehetővé tévő rendszert az eddig tárgyaltak alapján. Mivel diplomatémám egyik

fő aspektusa volt az utazási jegyek megvalósítása elektronikus vonalkódok formájában, így az

Page 85: Diplomaterv - Pázmány Péter Catholic Universityusers.itk.ppke.hu/~tihanyia/GSMapp/Szilvassy_Balazs.pdf · 1083 Budapest, Práter u. 50/A Tel/Fax: 886-4700 E-mail: tanulmanyio@itk.ppke.hu

85

általam írt megoldásban is a kétdimenziós Datamatrix vonalkódot használom a jegyek

információtartalmának tárolásához.

A korábbi, általánosított példában főképp olyan megoldást taglaltam kezdetben, ahol az SMS-

jegy egy egyszerű szöveges SMS mindenféle vonalkód felhasználása nélkül. De nézzük is, hogy

ennek mik a hátulütői, és miért lenne célszerűbb az általam preferált kódot felhasználni.

Képzeljük el a jelenleg még papír alapon működő vonaljegyeket. Egyik

metróállomáson kilyukasztom, akkor kapok rá egy nyomtatott kis számsorozatot. Ha

két megállóval arrébb utazok, majd ott is újból kilyukasztok egy vonaljegyet, a két

számsort összevetve már is rengeteg mindent ki lehet találni belőle. Például könnyen

megtalálható, hogy mely pozíciók jelölik az aktuális dátumot és időt, illetve az

állomás sorszámát. Ily módon a jegy érvényességét igazoló számsorozat

könnyűszerrel hamisíthatóvá válik, ha ez bárkinek is érdekében állna. Mivel haladunk

a korral, oda kell figyelnünk a zöld-technológiák alkalmazására, és szükség van a

pontos és megbízható statisztikákra, idővel át fogunk térni az elektronikus jegyekre

mi is. Itt történik az első bökkenő, ha nem vagyunk elég felkészültek. Papír alapú

jegynél még visszatartó tényező volt, hogy jegyhamisításhoz az utazási jegy papírját is

hamisítani kéne. De egy digitális jegynél ennek már semmi akadálya. Hiszen az

elektronikus jegyek a készülékek memóriájában tárolódnának SMS formájában, és ha

valaki egy csöppnyi erőfeszítéssel visszafejti a számsorozat kódolását, továbbá meg

van áldva némi informatikai képzettséggel, könnyűszerrel kezdheti kreálni magának

az érvényes utazási jegyeket anélkül, hogy akár egy ellenőrnek is szemet szúrna ez.

Az első megoldás az lenne, hogy akkor titkosítsuk úgy az SMS tartalmát, hogy ne

lehessen könnyedén, rövid időn belül visszafejteni a kódolást. Ez működne is, hiszen

rengeteg jól bevált titkosítási algoritmus létezik már. Ugyanakkor ez a megoldás

magával vonná azt a következményt, hogy nem csak visszafejteni, de ellenőrizni is

sokkal nehezebbé válna az elektronikus jegy, hiszen ezután az ellenőr már nem tudja

megmondani ránézésre, hogy érvényes-e a kód. Persze lehetne játszani a kódolással,

hogy pl. bizonyos pozíciókba egyes napokon mindig ugyan az a kód szerepel, de ez is

könnyen kitalálható, továbbá bonyodalmasan kezelhető, és csak ránézésre

mondhatnánk meg, hogy egy jegy valódi lehet talán.

o Egyik megoldás lenne, hogy az ellenőr folyamatos összeköttetésben áll a

jegyeket kiállító szerverrel, és ellenőrzés alkalmával bepötyögi a kódolt

üzenetet a gépébe, ami aztán lekérdezi a szervertől, hogy történt-e ilyen

Page 86: Diplomaterv - Pázmány Péter Catholic Universityusers.itk.ppke.hu/~tihanyia/GSMapp/Szilvassy_Balazs.pdf · 1083 Budapest, Práter u. 50/A Tel/Fax: 886-4700 E-mail: tanulmanyio@itk.ppke.hu

86

vásárlás. Ez borzasztó időigényes megoldás, ha mindenkit ellenőrizni

szeretnénk, kígyózó sorokban mérhetnénk a hatékonyságát. Továbbá a

mellégépelés esélye is igen magas.

o Egy másik megoldás lehetne, hogy az ellenőr készüléke képfeldolgozási

algoritmusokkal próbálja meg kinyerni a megnyitott SMS üzenet tartalmát, és

vagy lekérdezi a szervertől, hogy vásároltak-e ilyet, vagy ő maga dekódolja,

és állapítja meg, hogy a tartalom alapján érvényes lehet a jegy. Ez még

kivitelezhetőnek is hangzik, hiszen az SMS-ek szövegének betűtípusa

viszonylag könnyedén felismerhető OCR (Optical Character Recognition)

technológiával. Ugyan akkor balgaság lenne már is ilyen nagy fába vágni a

fejszénket, mert különböző telefonoknak különböző a kijelző mérete, a

világossága, egyeseknek tükröződik a felülete bizonyos fényviszonyok között,

másoknál sokkal kevesebb vagy épp több karaktert tudunk megjeleníttetni a

képernyőn egyszerre.

Ezekre mind gyógyír lenne a kétdimenziós Datamatrix vonalkód alkalmazása, ugyan is

teljesen indifferens számára, hogy mekkora képernyőn jelenítjük meg, hiszen

könnyűszerrel átméretezhető úgy, hogy még mindig olvasható marad a kód. Továbbá

aki egy Datamatrix SMS-jegyet szeretne visszafejteni, nem elég, hogy a titkosítással

meg kéne küzdenie, de még a vonalkódolás rejtelmeibe is bele kéne ásnia magát,

hogy sikerre vigye az akcióját.

Ezekre alapozva döntöttem amellett, hogy az én tesztrendszeremben a kétdimenziós

Datamatrix vonalkód fogja megtestesíteni az SMS-jegy hordozó formátumát.

Alapból természetesen egy mobiltelefonon sincsen olyan alkalmazás, ami képes lenne egy

SMS-ből Datamatrix kódot kreálni és a képernyőn megjeleníteni. Pedig ilyen alkalmazások

létrehozásához nincs is sok mindenre szükségünk. A választott programozási nyelvből ezeket

a funkciókat kell tudnunk elérni:

Tárolt SMS-ek tartalmának beolvasása. ( Létrehozás dátuma és a feladó címe is jól

jöhet. Az SMS megérkezésének dátuma jól jön, ha már több SMS jegyünk is van a

telefonon. A feladó számának lekérdezése pedig azt a lépést egyszerűsíti le, hogy

minden SMS-be bele kelljen olvasnia a programunknak, hogy vajon Datamatrix-jegyre

hasonlít-e a formátuma. Hiszen ha az utazási vállalat SMS-szerver számáról jött az

üzenet, biztos, hogy nem szülinapi jókívánság. )

Page 87: Diplomaterv - Pázmány Péter Catholic Universityusers.itk.ppke.hu/~tihanyia/GSMapp/Szilvassy_Balazs.pdf · 1083 Budapest, Práter u. 50/A Tel/Fax: 886-4700 E-mail: tanulmanyio@itk.ppke.hu

87

Képernyőre rajzolás, hogy ki tudjuk tenni a feldolgozott kétdimenziós vonalkódot.

Én e célból a Google Android operációs rendszerét és az erre a platformra használható Java

programozási nyelvet választottam [33]. A 0.9-es verzióban volt beépített függvény a

programozók számára, hogy végigiteráljanak az összes tárolt SMS-en, de ez valahogy az 1.0-

ás verzióban már szó nélkül eltűnt. Én az 1.5-ös verziójú Android-ra fejlesztettem a

megjelenítő alkalmazásom, aminek az API-jából arra nyílik csupán lehetőségünk, hogy SMS

érkezéséről értesüljön a programunk, és az újonnan érkezett SMS-hez hozzáférjen.

Az egyik amit tehetünk, hogy míg az alkalmazásunk fut, értesülhet a beérkező SMS-

ekről, és ha a kiszolgáló szervertől jön SMS vagy az SMS tartalma megjeleníthető

Datamatrixként, akkor ezt elmenti az alkalmazás magának egy lokális adatbázisba,

amihez csak ő férhet hozzá, és ő is törölhet onnan.

Egy másik megoldás egy hivatalosan nem támogatott út, hogy tudjuk az SMS-ek

elérési útvonalát az operációs rendszeren, ráállítunk egy mutatót, és végigiterálunk

az elemeken. A probléma a hivatalosan nem támogatott megoldásokkal az, hogy

semmi sem garantálja, hogy ez mindig és mindenhol működni fog, így meg nehéz

piacképes alkalmazást készíteni. Az egyszerűség kedvéért, és mert szimulátorban

nem tudtam SMS-eket küldeni tesztelés céljából, egy helper osztályt hoztam létre,

amiben eltároltam 3 tesztadatot.

Ezt a 20x20-as, négyzetes Datamatrix-ot használtam a tesztadatok létrehozásakor, mely a

„V3;Arpad hid;200910111345” karakterek sorozatát kódolja (60. ábra):

Első kísérletezésekkor úgy próbáltam meg SMS-ben tárolni a Datamatrixot, hogy rögzítettem

egy fejlécet: „20x20;”, ami leírta a vonalkód teljes méretét a markereket is beleszámítva.

Majd az adatcellák következtek oly módon, hogy negatív szám jelezte, ha fekete cella jön.

60. ábra: Az Androidos mobilalkalmazásomhoz használt teszt datamatrix

Page 88: Diplomaterv - Pázmány Péter Catholic Universityusers.itk.ppke.hu/~tihanyia/GSMapp/Szilvassy_Balazs.pdf · 1083 Budapest, Práter u. 50/A Tel/Fax: 886-4700 E-mail: tanulmanyio@itk.ppke.hu

88

Továbbá pontosvessző választott el minden cellát, és az egész számok azt jelezték, hogy az az

adott színből hány cella jön egymás után. Példa sor kódolására: „2;-1;7;-2;3;-1;1;-1;”.

De ez rendkívül pazarló megközelítésnek bizonyult. Pontosan 450 karakteres SMS keletkezett

így, ami nem elfogadható. A második megközelítésben negatív számok csak az adatsorok

elején lehettek, és azt jelölték, hogy sötét vagy világos a legelső cellacsoport. Utána a

pontosvesszők mindig színváltást jelöltek, így nem volt szükség mindig feltüntetni a negatív

értékeket. De ez sem bizonyult járható útnak, ugyanis 396 karakter volt még mindig az így

kreált SMS hossza. A harmadik és végső formátumomban végül a pontosvesszőket is

eltüntettem, azzal a feltételezéssel élve, hogy az azonos színcsoportba tartozó cellák 1 és 9

közötti értéket vehetnek csak fel. Feltehetnénk a kérdést, hogy ezt milyen alapon feltételezi

az alkalmazásom, és hát én fel is tettem magamnak ezt a kérdést. Az általam használt 20x20-

as négyzetes Datamatrixba közel 50 karakter tárolható, aminek én csupán csak a töredékét

használtam fel. A legkisebb használható Datamatrix mérete 8x8 (61. ábra). Amiket mi tárolni

kívánunk egy SMS jegyben, azok a következőek:

Milyen típusú a jegy (jelölheti akár egy rögzített szám)

Mely állomástól érvényes (szintén rögzíthető maximum 3 karakteren)

Mikortól érvényes (év első két száma elhagyható, feltéve, hogy 3000 után nem

akarjuk használni ugyanezt a rendszert)

Ezek az információk akár egy 14x14-es Datamatrixban már elférnek numerikus adatként.

61. ábra: Datamatrix kapacitástáblázata a különböző formátumokra [28]

Page 89: Diplomaterv - Pázmány Péter Catholic Universityusers.itk.ppke.hu/~tihanyia/GSMapp/Szilvassy_Balazs.pdf · 1083 Budapest, Práter u. 50/A Tel/Fax: 886-4700 E-mail: tanulmanyio@itk.ppke.hu

89

Amennyiben a feltételezés még sem állja meg a helyét, és lehet a kódolandó vonalkódunkban

9-nél nagyobb, egybefüggő cella, úgy csak az SMS kódolás formátumának a feldolgozását kell

átírni hála a programom moduláris felépítésének. Erre az eshetőségre hagytam is egy

elágazást a program struktúrájában, hogy kezelje, ha paraméterként azt kapja, hogy a

feltételezéssel nem élhet.

Ezen felül egy negyedik fajta kódolás is elképzelhető még. Mégpedig, hogy a fekete-fehér

cellák minden lehetséges permutációjához hozzárendelünk egy értéket, úgy mintha csak egy

Hash-táblát készítenénk. Ha folytonosan inkrementált egész számokat is alkalmaznánk

csupán, egy 22x22-es datamatrix adatcelláinak összes lehetséges változata

222.2=220=1048576. Azaz a Datamatrix bármely sorát le tudjuk írni egy legrosszabb esetben 7

soros számmal. Ez annyit jelent, hogy legrosszabb esetben „fejléc + 20*7 + 20 szeparáló

karakter” ~= 160 karakteren tudunk tárolni 60 numerikus karaktert. Természetesen ehhez a

megoldáshoz szükség van arra, hogy a vásárlók készülékén is ott legyen a megfeleltetési

táblázat a Datamatrix felépítéséhez.

Folytatván a korábban megkezdett gondolatmenetet, lényegében ezzel a harmadik fajta SMS

kódolással sikerült 190 karakterre lezsugorítanom a 20x20-as Datamatrixot. Egy 14x14-es

mátrix esetén ez leszűkíthető egy SMS tartalmára. Amennyiben még is több SMS-ben férne

csak ki a kód, ilyen eshetőségre is szükségesek a szerződések a telefontársaságokkal. Biztos,

hogy meg lehet velük egyezni és kedvezményes áron küldeni a jegyeket, vagy pedig

belekalkulálni ezek összegét a vonaljegyek árába.

A mobiltelefonos alkalmazásom tehát végigiterál egy külön futási szálon a tárolt SMS-eken,

és ezt jelzi is a felhasználó felé (62. ábra):

62. ábra: Külön futási szálon végrehajtott SMS jegy értelmezés

Page 90: Diplomaterv - Pázmány Péter Catholic Universityusers.itk.ppke.hu/~tihanyia/GSMapp/Szilvassy_Balazs.pdf · 1083 Budapest, Práter u. 50/A Tel/Fax: 886-4700 E-mail: tanulmanyio@itk.ppke.hu

90

Jelenleg úgy működik az eljárás, hogy minden SMS tartalmába beleolvas, és egy gyorstesztet

végez, megpróbálja megkeresni a fejlécet az első karaktereken. Amennyiben talál fejlécet,

megjelöli az SMS objektumot, és átadja egy teljes feldolgozásra. Ez a teljes értelmezés még

mindig mondhatja, hogy nem volt érvényes az SMS vonalkód tartalma, ha bármi problémája

merült fel a Datmatrix összeállítása közben. Majd a sikeresen értelmezett jegyeket a

létrehozásuk dátuma alapján egy görgethető listában megjeleníti: (63. ábra)

A felhasználónak csak annyi a dolga, hogy kiválasztja a dátum alapján bemutatásra szánt

jegyet, és a program meg is jeleníti az ellenőrnek (64. ábra):

63. ábra: A tárolt SMS jegyek megjelenítése

64. ábra: A tárolt SMS jegyek megjelenítése kétdimenziós Datamatrix vonalkódként

Page 91: Diplomaterv - Pázmány Péter Catholic Universityusers.itk.ppke.hu/~tihanyia/GSMapp/Szilvassy_Balazs.pdf · 1083 Budapest, Práter u. 50/A Tel/Fax: 886-4700 E-mail: tanulmanyio@itk.ppke.hu

91

Ezt a megjelenített vonalkódot az ellenőr a ZXing vagy más hasonló, mobiltelefonon is futó,

vonalkódolvasó alkalmazással kiolvastatja, kinyeri belőle a Datamatrix vonalkód információ

tartalmát, amit átad a dekódoló kulcsának, és már is megjelenik számára az eredeti, SMS

szerver által összeállított üzenet: „V3;Arpad hid;200910111345”. Ezt a megjelenítést

természetesen szépen formázva jelenítjük meg majd az ellenőr felé, hogy ránézésből meg

tudja állapítani a jegy tartalmát.

Egy ilyen ellenőrzés a valóságban körülbelül a következő időtartamot öleli fel:

SMS jegyet megjelenítő alkalmazás elindítása és az aktuális jegy kiválasztása függ

attól, hogy csak ellenőr felszólítására történik meg ez, vagy már az ellenőrzőpont

elérésekor készen van a jegy bemutatásra.

Képfeldolgozó algoritmus futtatása az adat kinyerése érdekében 1-4 másodperc

Kinyert adat dekódolása 1-2 másodperc

Döntés a jegy érvényességéről 1-2 másodperc.

Zökkenőmentesen 10 másodperc alatt elvégezhető az ellenőrzés. Természetesen nagy

tömegben ez soknak számít, ha mindenkit ellenőrizni kívánunk. Ugyanakkor itt léphetne

életbe a beléptető rendszerek bevezetése, egy forgó fémtárcsa, ami kamerával van ellátva. Ez

a kamera és a hozzá tartozó feldolgozó egység akár összeköttetésben is állhat a központtal,

és mindenkinek be kell mutatnia az SMS jegyét az áthaladás érdekében. Esetleg egy ellenőr

vigyázhat a belépési pontoknál, hogy ne próbáljanak meg átsurranni, vagy ne rongálják meg a

készüléket. Reklamáció esetén, vagy a régi papíralapú utazási jegy használatakor is segítséget

tud nyújtani.

Az ellenőröknél található jegyellenőrző eszközök tartalmazhatnak egy cserélhető

memóriakártyát, amin folyamatosan logolnák az aznap beolvasott SMS jegyeket. Egy

komolyabb készülék GPS vagy GSM bázisállomások alapján még azt is hozzáfűzhetné a

rekordokhoz, hogy hol történt az adatok felvitele. Egy adatbázisból a koordinátához tartozó

megállót is ki tudná keresni magának. Ezeket a memóriakártyákat a munka végeztével a

készülékekkel együtt le kellene adni a vállalatnál, ahol egy szakember összegyűjtené őket,

majd lementené az információt róluk, és egy program elindításával megtörténne az SMS

szerver által jóváhagyott vásárlások és az ellenőrök által rögzített jegyek összevetése,

továbbá mindezek archiválása későbbi statisztikai vagy marketingcélokra. Ily módon azonnal

kitűnnének azok a rekordok, ahol az ellenőr olyan jegyet engedett át, amiért nem fizettek. Ez

Page 92: Diplomaterv - Pázmány Péter Catholic Universityusers.itk.ppke.hu/~tihanyia/GSMapp/Szilvassy_Balazs.pdf · 1083 Budapest, Práter u. 50/A Tel/Fax: 886-4700 E-mail: tanulmanyio@itk.ppke.hu

92

esetben pedig azonnal le lehet cserélni a titkosítási kulcsot, és a hamisító másnap már fenn

fog akadni az ellenőrök rostáján.

A titkosításhoz használt dekódoló kulcsot a memóriakártyákat összegyűjtő szakember

minden éjszaka visszatölthetné az eszközökre, amennyiben erre szükség van, mert változott a

kód. Természetesen a készülékeknek az 1 évnél nem korábbi kulcsokat is meg kell őrizniük,

hogy például régebbi érvényes éves bérlet ne akadjon fenn a megváltoztatott titkosítás miatt.

Gondolni kell továbbá arra is, hogy az ellenőrök készüléke ilyen folyamatos használat mellett

hamar lemerülhet. Ezért töltőket, esetleg csereelemeket kell számukra biztosítani, vagy az

ellenőrző ajtók bevezetése felé kellene orientálódni.

Eljutottunk addig a pontig, hogy már tudjuk, hogy valósul meg az elektronikus utazási jegy

megjelenítése és ellenőrzése. Most ideje rátérni arra, hogy hogyan készül el egy ilyen

utazásra feljogosító, digitális adat.

De mielőtt erre rátérnék, még pár mondatban visszatérnék a biztonságosságot szolgáló

ötletekre mind az ellenőr oldalon, kis trükkök alkalmazásával, vagy akár szerveroldali komoly

titkosítás felhasználásával, továbbá pár, már korábban pedzegetett érdekes kérdés:

Felszállhasson-e valaki ellenőrzés nélkül? Random ellenőrzések elegek-e, beszállásnál

kell-e? Csak forgalmasabb helyeken van állandó ellenőrzés?

Mi történik, ha én elküldtem az SMS-t, de valamiért nem kapok választ a szervertől?

o Én készülékemben van a hiba (ellenőr lekérdezheti a szervert, hogy kapott-e

erről a számról SMS-t mostanában a szerver! Ha nem, akkor sajnáljuk,

szolgáltatójával beszéljen, miért nem továbbította az SMS-ét.)

o A szerver túlterhelt (ezért kell a szerződés, hogy ilyen ne fordulhasson elő,

garantálják nekünk, hogy ez nem esik meg.)

o Éterben veszett el az üzenet, és mondjuk csak fél óra múlva kapnám meg.

SMS karakterformátuma is egy bizonyos szabványos, jól olvasható fonttípus. Esetleg

a válaszkódot, ami betű és számok sorozata, is felismerhető kamerás rendszerrel.

(Érdemes lenne elgondolkodni azon, hogy a válaszkódban vannak bizonyos betűk-

számok, amik mindig változnak az adott dátumtól és esetleg óráktól függően. Így

ránézve is viszonylag biztonságosan megmondható, hogy valaki tényleg akkor vette-e

az SMS jegyét, azért, hogy ne legyenek akkora torlódások, ha esetleg elromlana a

kamerás felismerés.)

Page 93: Diplomaterv - Pázmány Péter Catholic Universityusers.itk.ppke.hu/~tihanyia/GSMapp/Szilvassy_Balazs.pdf · 1083 Budapest, Práter u. 50/A Tel/Fax: 886-4700 E-mail: tanulmanyio@itk.ppke.hu

93

Egyszerű lineáris kódolást nincs értelme használni, mert küldünk pár SMS-t, és ha

még van kis affinitásunk is hozzá, pillanatok alatt visszafejthető a kódoló eljárás.

Egy jó megoldás lenne, hogy md5, sha-1, dsa vagy hasonló titkosítást használnánk. Itt

van pár példa php-n implementált md5(message digest)-ös kódolásra. A kódolt

szöveg formátuma:

o "jegy vásárlásának ideje - idő"

o "mettől jó - idő"

o "meddig jó -idő"

o "tel szám"

o "diákjegy"

o idő: év hónap nap óra perc másodperc

o tel szám: a szám, amiről vették

o diákjegy: opcionális a végén. Ha diákjegy, akkor van a kódolt üzenet végén

egy D betű, és kéretik felmutatni a diákit ellenőrzéskor.

o Például:

200903011516172009030416341120

090511114500+36303113416

9b1e5d18e5f8187876012f20ab218227

200903011516172009030416341120090511114500+36303113417

3bd67bda0af3659a2a5ee1c2f61273ed

200903011516172009030416341120090511114500+36303113418

fab5e8b5dc36152f7ddc2321a2156c44

o Online kipróbálható verzió: http://lnx.braviale.com/md5.php?md5=c

o Jól látható, hogy a sor végén 1 szám változása teljesen más kódot

eredményez. ==> ezek nem-lineáris kódolók. Ha egy ilyen SMS-t kapnék egy

barátomtól, ránézésre meg nem tudnám mondani, hogy mit tartalmaz.

Viszont, ha valaki próbálgatással rájön a kódolás formátumára, hiszen tudjuk,

hogy milyen adatoknak kéne szerepelnie a kódolt szövegben, és az

algoritmus típusára, onnantól kezdve bármikor gyárthat magának SMS

jegyet. Nem lenne egyszerű rájönni, de ha valakinek még is sikerülne, elég

költséges lehetne a BKV számára.

==> nyilvános kulcsú titkosítás

o ==> generált privát kulcs és hozzá tartozó publikus kulcs

o ==> az üzenetet a privát kulccsal kódoljuk (privát kulcs a szerveren)

Page 94: Diplomaterv - Pázmány Péter Catholic Universityusers.itk.ppke.hu/~tihanyia/GSMapp/Szilvassy_Balazs.pdf · 1083 Budapest, Práter u. 50/A Tel/Fax: 886-4700 E-mail: tanulmanyio@itk.ppke.hu

94

o ==> a kódolt üzenetet csak a privát kulcshoz tartozó publikus kulccsal lehet

kinyitni (publikus kulcs az ellenőrök gépén)

o ha egy ellenőr gépét ellopják, semmire nem mennek vele

o az értelmes üzenetet, amit kódolt a szerver, csak publikus kulccsal lehet

visszafejteni

o publikus kulcsot meg csak a megfelelő privát kulcsból lehet generálni

o a privát kulcs pedig sohasem hagyja el a szervert.

o ha valamiért még is új privát kulcs kellene, ez lényegében egy text fájl, és

rövid időn belül generálható új, majd üzembe helyezhető

o ehhez az egészhez annyi kell, hogy az ellenőrök gépére egyszer minden privát

kulcs generálása utána a nekik megfelelő publikus kulcsot rátöltsük.

o az egész rendszer kibővíthető egy olyan „csalás” ellenőrzéssel, mivel ahhoz,

hogy egy jegy érvényes legyen, a formátuma is érvényes kell, hogy legyen. Az

általam találomra kitalált formátumnak a végén pedig ott van a mobilszám,

amiről rendelték. Szóval minden ellenőrzéskor valamilyen memóriakártyára

menti az ellenőrök gépe, hogy xy számról volt egy SMS jegy. Ugyanezt a

szerveroldalon is megtesszük. Így bármikor, ha összevetjük a két oldal

mentett adatait, ha az ellenőrzéskor olyan szám jelenik meg, amit a

szerveroldal még sosem logolt abban az időpontban, akkor biztos, hogy

hamisított jegyet engedtünk át, és generálunk új privát meg publikus kulcsot.

o nem akármilyen privát kulcsos kódolás kell, mert az terjedelmes, hosszú

kódolt szövegeket is tud generálni. Nekünk kifejezetten változó hosszúságú

privát kulcsú titkosítás kell, ahol meg tudjuk határozni, hogy maximum

milyen hosszú lehet egy kódolt üzenet, hiszen több oldalas SMS-t nem

fogunk küldeni a vásárlónak, ha meg egy oldalra sem fér ki, problémás a

gyors ellenőrzése.

o ==> a kódolás kiegészíthető azzal a már korábban tárgyalt megoldással, hogy

plusz karaktereket szúrunk a kódolt szöveg elejére, végére vagy bármilyen

pozícióba, melyeket naponta / fél naponta vagy bármilyen időközönként

változtatunk. Ehhez ugye az kell, hogy miután a szerver kódol egy SMS jegyet,

az adott pozícióba beszúrja a plusz karakter(ek)et. Ellenőrzéskor, meg az

ellenőr gépének is tudnia kell erről, hogy ne tekintse a kódolt üzenetnek.

Ezért ezt reggelente, mikor az ellenőrök találkoznak a központi helyükön, és

megbeszélik, hogy aznap ki hová megy, akkor megbeszélik, hogy délután 3ig

például egy A-t szúrunk a kódolt szöveg 2. pozíciójába, azután meg egy 9-est.

Page 95: Diplomaterv - Pázmány Péter Catholic Universityusers.itk.ppke.hu/~tihanyia/GSMapp/Szilvassy_Balazs.pdf · 1083 Budapest, Práter u. 50/A Tel/Fax: 886-4700 E-mail: tanulmanyio@itk.ppke.hu

95

Az ellenőr gépén bekapcsoláskor megjelenik egy GUI, ahol be kell állítani,

hogy melyik nap, hánytól hányig, melyik indexben milyen plusz karakter lesz.

Ezt azért találtuk ki, hogy gyorsítható az ellenőrzés, mert így ránézésre is

nagyjából eldönthető egy sima jegyről (nem vonalkód-jegyről), hogy

érvényes-e vagy sem. Továbbá nehezíti az esetleges visszafejtést is, hisz így

már nem csak azt kell egy cracker-nek kitalálnia, hogy milyen algoritmussal

kódolták az üzenetet, és hogy milyen kulccsal, hanem számolnia kell azzal is,

hogy változó helyen változó tartalom lehet. Ezzel a módszerrel szintén, ha

sikeresen visszafejtené a kódot, maximum arra a napra tudna ingyen jegyet

kreálni.

Visszakanyarodva a szerveroldali megoldáshoz, ismertetném az általam készített SMS-szerver

működési alapjait:

A szinte minden mobiltelefonon megtalálható AT [29] parancsokkal végeztettem

számítógéphez csatlakoztatott GSM készülékkel az SMS-ek küldését és fogadását.

A Java Communication API*30+ használatával csatlakoztam Java programból a GSM

készülékhez, és adtam ki a bemeneti folyamára az AT parancsokat.

Poolingot használtam az SMS-ek érkezésének lekérdezésére, azaz, rövid

időközönként rákérdeztem a GSM készülékre, hogy jött-e új SMS. Amennyiben igen,

kiolvastam a tartalmát

o itt történik meg az SMS vásárlás értelmezése

o a jegytípus, a vásárlási időpont és a megálló rögzítése

o a mobilszámhoz tartozó egyenlegről az összeg levonása

o a műveletek logolása

Majd ezen információk alapján összeállítom a válasz SMS-t:

o összeállítom a sztring üzenetet

o titkosítom a privát kulccsal

o datamatrixszá kódolom

o A datamatrix képpontjait az SMS formátumba rögzítem

o majd elküldöm ezt a válasz SMS-t

Page 96: Diplomaterv - Pázmány Péter Catholic Universityusers.itk.ppke.hu/~tihanyia/GSMapp/Szilvassy_Balazs.pdf · 1083 Budapest, Práter u. 50/A Tel/Fax: 886-4700 E-mail: tanulmanyio@itk.ppke.hu

96

Az egész folyamat az alábbi ábrán szemléltethető (65. ábra):

SMS elküldése

V3;15

SMS szerver

SMS feldolgozása

- jegytípus

- vásárlási időpont

- megálló

- telefonszám

Fizetés és logolás

Összeg levonása a telefonszámhoz

tartozó egyenlegről.

Tranzakció rögzítése.

SMS üzenet összeállítása

V3;Arpad hid;200910111345

SMS titkosítása

x345345&@345đsdߣ##sdf

Datamatrix kód képzése

SMS kód összeállítása és

küldése

20x20;-22111142211…

SMS jegy megjelenítése

SMS jegy ellenőrzése

- Datamatrix képből adat kinyerése

- Titkosított adat dekódolása

- Szöveges adat megjelenítése az

ellenőr számára olvasható

formátumban

65. ábra: Elektronikus jegy vásárlásának és ellenőrzésének folyamata

Page 97: Diplomaterv - Pázmány Péter Catholic Universityusers.itk.ppke.hu/~tihanyia/GSMapp/Szilvassy_Balazs.pdf · 1083 Budapest, Práter u. 50/A Tel/Fax: 886-4700 E-mail: tanulmanyio@itk.ppke.hu

97

Összefoglalás

Az elképzelhető megoldások a régi papír alapú utazási jegy vásárlást megvalósító rendszer

részleges vagy teljes leváltására korszerűbb eszközökkel:

Olyan eszköz kell, mely szinte majdnem mindenki számára kényelmesen, bárhol és

bármikor elérhető:

o Mobiltelefonon alapuló elektronikus jegyvásárlás.

SMS alapú jegyvásárlás

MMS alapú jegyvásárlás

WAP alapú jegyvásárlás

Interneten keresztül történő jegyvásárlás

Olyan eszköz kell, mellyel környezetkímélőbb módon tudjuk leváltani a régi papír

alapú rendszert, ezzel is támogatva a mai trendeket és kiemelve környezetbarát

profilunkat, melyekkel nagy EU-s pályázatok is elnyerhetőek.

A régi papír alapú utazási jegy vásárlására alkalmas rendszer leváltása és korszerűbbé

tétele elektronikus rendszerrel:

o Teljes leváltása

o Részleges leváltása

A különböző típusú jegyek és bérletek megvásárlása:

o Minden típus megvásárlása a típus számára létrehozott telefonszámon

történjen.

o Bizonyos vásárlói input szükséges a megfelelő típus megvásárlásához. Pl.:

JEGY1 szó elküldése az 1-es típusú vonaljegy megvásárlásához.

Támogatások elnyerése, mellyel ösztönözni lehet az embereket, hogy átálljanak az új

rendszerre:

o Állami támogatás olcsóbb szolgáltatásért

o Ingyenes segítségnyújtás(plakátokon, interneten stb.)

o Kedvezményes árú, speciális promóciós jegyek(összevont jegyek, családi

jegyek bizonyos alkalmakra stb.)

Web-es háttér kiépítése:

o Regisztrálni lehet pl. interneten keresztül vagy kihelyezett irodában, mellyel

sok újdonság érhető el (ez nem a mobiltelefonos jegyvásárlás egyik módja

lenne, hanem egy plusz szolgáltatás azon felül. Olyasmi, mint amikor

Page 98: Diplomaterv - Pázmány Péter Catholic Universityusers.itk.ppke.hu/~tihanyia/GSMapp/Szilvassy_Balazs.pdf · 1083 Budapest, Práter u. 50/A Tel/Fax: 886-4700 E-mail: tanulmanyio@itk.ppke.hu

98

regisztrálunk egy weboldalra, létrehozunk saját profilt, pénzt tudunk

feltölteni a profilunkhoz a cég számlájára történő átutalással stb.)

Olcsóbb jegyvásárlási lehetőség, vagy speciális ajánlatok, hiszen

nyomon követhető, hogy rendszeres jegyvásárlók vagyunk, így

kifizetődő az utaztatási vállalatnak, hogy "költsön" ránk.

A szülők meg tudnák venni a gyerekeknek a havi bérletet, melyet a

cég SMS-ben minden hónapban elküld a megadott telefonszámokra,

illetve akár manuálisan is újrakérhető az SMS-jegy elküldése, ha

véletlenül kitöröltük volna.

Áthidalható az SMS-ben történő fizetés, hiszen interneten

támogatottak azok a protokollok, melyekkel biztonságosan tudunk

banki átutalást végezni.

Ki lehet váltani az utólagos bérletbemutatást az Akácfa utcában,

hiszen bizonyítható, hogy vettünk jegyet, csak telefon nem volt

nálunk, vagy csupán kitöröltük véletlenül az SMS-jegyünket.

További interneten alapuló szolgáltatással járó előnyök, mint pl. a

direkt marketing, reklámok stb.

Olyan szolgáltatás kiépítése szükséges, mely egyszerűen, gyorsan és fennakadás

nélkül ellenőrizhető a közlekedési vállalat ellenőrei által.

Kamerás beléptető rendszerek kialakítása a nagyobb megállóknál, így is spórolva az

emberi ráfordításon, és elősegítve a teljes automatizálást.

Szerveroldali lehetőségek:

o Mindenképp szükséges a közlekedési vállalattal való egyeztetés, hogy

elismerjék a szolgáltatásunkat, mint érvényes elektronikus jegy.

o Különböző emelt díjas SMS-ek lehetnek szükségesek.

o Interneten való regisztrációnak és egyenleg feltöltésének lehetősége a

szolgáltatás igénybevételéhez (pl.: Skype-on keresztüli mobiltelefon hívás is

így működik).

o Garázsprojekt:

Előfizetéses, SMS küldésére és fogadására alkalmas mobileszköz

vásárlása.

Page 99: Diplomaterv - Pázmány Péter Catholic Universityusers.itk.ppke.hu/~tihanyia/GSMapp/Szilvassy_Balazs.pdf · 1083 Budapest, Práter u. 50/A Tel/Fax: 886-4700 E-mail: tanulmanyio@itk.ppke.hu

99

Valamilyen módon számítógéphez kapcsolása (pl.: soros portra vagy

USB-re kapcsolása kábellel, bluethooth stb.).

SMS üzenetek fogadása és küldése AT parancsokkal a számítógép

felügyeletével.

Különböző eseményvezérlők lefuttatása SMS-érkezése esemény

hatására.

o Szerződés kötése telefontársaságokkal:

Ők kezelik a teljes hálózati forgalmat.

Ők intézik az SMS-ek utáni összegek levonását.

A programozási feladatok ezen része ily módon majdnem teljes

egészében átugorhatóak.

o Szerződés kötése külsős céggel:

Szinte ugyan azok a lehetőségek, mint ha hazai telefontársaságokkal

kötnénk, csak a kockázatok változnak.

Fő szempontok lennének a következőek:

Többféle SMS-jegy létezzen, hogy a jelenleg használt papír alapú rendszert teljesen ki

tudja váltani (szakaszjegy, vonaljegy, bérlet stb.).

o Kérdéses itt, hogy vállalni akarjuk-e a kockázatot, hogy a drága jegyeket is,

mint például az éves bérletet, ily módon lehessen megvenni.

Mi történik, ha valakinek sikerül kijátszania az ellenőrző számokat, és

nemes egyszerűséggel tud gyártani magának vagy bárki másnak éves

bérletet.

Egy éves bérlet több 10.000 Ft lehet. SMS-en keresztül kényelmes és

biztonságos-e ilyen tranzakciók bonyolítása?

Telefonos előfizetőknek pillanatok alatt megugraszthatja a

havi telefonegyenlegét.

Nem előfizetőknek van-e elég pénze az egyenlegén a

tranzakció lebonyolításához?

Mi történik, ha véletlenül rossz számra(erre az éves bérlet

előfizetésére szolgáló telefonszámra) küldünk egy SMS-t?

(Talán ezért lehet jó megoldás bizonyos vásárlói input

elvárása, ráadásul így nem kell 20 féle telefonszámot fejben

tartani attól függően, hogy milyen jegyet akarunk venni.)

Page 100: Diplomaterv - Pázmány Péter Catholic Universityusers.itk.ppke.hu/~tihanyia/GSMapp/Szilvassy_Balazs.pdf · 1083 Budapest, Práter u. 50/A Tel/Fax: 886-4700 E-mail: tanulmanyio@itk.ppke.hu

100

Mivel digitális jegyről van szó, maga a jegy tartalma viszonylag könnyebben

hamisítható. Ezért elengedhetetlen szempont a megfelelő védelem.

o Vagy olyan bonyolult kódolási algoritmus kell, melyet szinte lehetetlen

bruteforce-szal elfogadható időn belül visszafejteni.

o Vagy lehet egyszerűbb a kódolás, melyet akár szemmel is könnyű ellenőrizni,

ilyenkor viszont mindenképpen szükséges, hogy a jegy azonosítója

személyhez és időponthoz kötött legyen, ezek valamilyen központi szerveren

tárolva legyenek, mely adatokat az ellenőrök könnyen és gyorsan

lekérdezhetnek.

SMS alapú jegy:

o Valamilyen számokból és/vagy betűkből álló kód megfelelő-e:

Ha egyszerű a kódolása, könnyen visszafejthető az algoritmusa, és mi

magunk is gyárthatunk jegyeket.

Ha bonyolult a kódolása, időigényessé válhat az ellenőrzése

ellenőrök számára.

MMS alapú jegy:

o Könnyebb lenne képbe kódolni a jegy valódiságát:

Kamerás megoldással pontosabban ellenőrizhető az emberi szem

számára nem egyértelmű kódolás.

Átmenetileg alkalmazható lenne bizonyos egyezményes jelek

használata, amiket naponta vagy akár több óránként változtatnának,

így nehéz lenne a hamisítás, mert sosem tudni, épp mi lesz a

következő egyezményes jel.

o Drágább és nagyobb információ forgalommal jár a hálózatokon az MMS-ek

küldése és fogadása.

WAP alapú jegy:

o A Wireles Application Protocol anno nagy lépés volt, de manapság a 3G-s

telefonok elterjedésével szinte alig használják már.

o Mindenesetre statisztikai adatokat kielemezve talán érdemes lehet ennek a

protokollnak a támogatása is.

A mai smartphone-ok támogatják a széles sávnak köszönhetően az internetelérést és

a főbb protokollokat, így biztonságosan vásárolhatunk neten keresztül is, sőt

bizonyos esetekben egyes előfizetésekhez még akár olcsóbban is jön ki, mintha SMS-t

küldenénk.

Page 101: Diplomaterv - Pázmány Péter Catholic Universityusers.itk.ppke.hu/~tihanyia/GSMapp/Szilvassy_Balazs.pdf · 1083 Budapest, Práter u. 50/A Tel/Fax: 886-4700 E-mail: tanulmanyio@itk.ppke.hu

101

Kockázatok a szerveroldali megoldásoknál:

o Kivitelezhetetlen a projekt, ha nem sikerül egyezségre jutni a felelős

közlekedési vállalattal.

o Ahhoz hogy ne egy normál SMS díját fizessék a vásárlók, elő kell szerződnünk

a telefontársaságokkal, hogy a mi számainkra küldött SMS-ek ilyen és ilyen

árú emeltdíjas SMS-ek legyenek, melyek a vásárló számlájáról történnek

levonásra.

o Garázsprojekt:

Kis felvásárlói körnél még megoldható, de már több 100 fős SMS-

rendelés felett is szinte biztos, hogy nem tudjuk megoldani a hálózati

terhelést.

Nekünk kell állni az SMS küldés anyagi vonzatait.

Nekünk kell utánajárnunk a saját profitunknak, azaz, hogy az SMS

küldés árát fedezzük, illetve hogy még jól is járjunk vele.

Amennyiben kötelezővé tesszük az internetes regisztrációt és

egyenlegfeltöltést, úgy átugorhatjuk a telefontársaságokkal való

szerződést emeltdíjas SMS-ekre és a saját profitunkra vonatkozóan.

Az ilyesfajta "rákényszerítés", hogy egy új módszert

bevezessünk, szinte biztos, hogy a kezdeti stádiumban nem

fog robbanni, és ha be is indul, csak nagyon lassan lesz

számottevő felvásárlói kör növekedés.

o Szerződés kötése telefontársaságokkal:

Egyeztetni kell mindegyik szolgáltatóval, és szerződésben rögzíteni a

feltételeket.

Garantálni kell a telefontársaságoknak bizonyos forgalmat, különben

azt mondják, nem éri meg nekik.

Hatalmas haszonkulcsot tesznek rá a telefontársaságok, mellyel

rontják a:

Mi saját profitunkat, hiszen horribilis árért senki nem fogja

használni a szolgáltatásunkat.

Felhasználók hajlandóságát, hogy drágább elektronikus

jegyet vegyenek.

pl.: budapesti parkolási jegyek már SMS-ben is

vásárolhatóak: kb. 40-70 Ft a plusz díj, amit fizetnünk kell a

telefontársaságok miatt.

Page 102: Diplomaterv - Pázmány Péter Catholic Universityusers.itk.ppke.hu/~tihanyia/GSMapp/Szilvassy_Balazs.pdf · 1083 Budapest, Práter u. 50/A Tel/Fax: 886-4700 E-mail: tanulmanyio@itk.ppke.hu

102

Programozási feladat szinte kizárólag csak a digitális jegy kódolása

marad.

o Szerződés kötése külsős céggel:

Nem kell minden telefontársasággal külön-külön egyeztetni és

szerződni.

Nem kell a telefontársaságok magas haszonkulcsát is beleszámítani

az elektronikus jegyek árába.

Nem kell bizonyos forgalmat garantálni ahhoz, hogy egyáltalán szóba

álljanak velünk.

A külsős cég árai lehetnek akár olcsóbbak, akár drágábbak is.

Szerződni kell, hogy biztosra menjünk, a pár 10 főstől akár a több

10000-es felhasználói kör kiszolgálására is megvan a megfelelő

infrastruktúrájuk.

Megmutattam elvont és gyakorlati megközelítésből a vonalkódok alkalmazását elektronikus

vásárlások területén, hogy milyen lépések szükségesek a téma feltérképezésére, és mikre

érdemes odafigyelni. A munkám olvasása során apránként álltak össze az elmélet különböző

részegységei, mint kis építőkockák, és a végén ezekből az összetevőkből, és alaposan

körbejárt és részletezett érvekből sikerült felépítenem egy kétdimenziós Datamatrix

vonalkóddal működő, utazási jegyek vásárlására lehetőséget adó, elektronikus rendszert.

Page 103: Diplomaterv - Pázmány Péter Catholic Universityusers.itk.ppke.hu/~tihanyia/GSMapp/Szilvassy_Balazs.pdf · 1083 Budapest, Práter u. 50/A Tel/Fax: 886-4700 E-mail: tanulmanyio@itk.ppke.hu

103

Köszönetnyilvánítás

Köszönettel tartozom Tihanyi Professzor Úrnak a tanácsokért és bíztatásért, továbbá

hogy mindig számíthattam rá, még az utolsó pillanatokban is. Nagyon sokat tanultam abból,

hogy egy ilyen remek szakember kezei alatt dolgozhattam. És köszönöm Takács Professzor

Úrnak, hogy a csapat része lehettem, és hogy mindig bizalommal fordulhattam hozzájuk.

Nélkülük ez a munka nem jöhetett volna létre.

Page 104: Diplomaterv - Pázmány Péter Catholic Universityusers.itk.ppke.hu/~tihanyia/GSMapp/Szilvassy_Balazs.pdf · 1083 Budapest, Práter u. 50/A Tel/Fax: 886-4700 E-mail: tanulmanyio@itk.ppke.hu

104

Irodalomjegyzék

[1] Allaga Gyula-Melis Zoltán-Sárkány Márta-Viszkey György —

Vonalkódtechnika: Automatikus azonosítás elméletben és gyakorlatban,

PRIM kiadó, 1995

[2] Wikipedia — Barcode: http://en.wikipedia.org/wiki/Barcode

[3] OPENBARCODES project — http://grandzebu.net/index.php

[4] The Barcode Software Center — http://www.makebarcode.com/specs/speclist.html

[5] KAYWA Reader — http://reader.kaywa.com/getit

[6] data matrix & qr codes — http://213.162.106.178/qrcodes.html

[7] IDAUTOMATION — http://www.idautomation.com/fonts/tools/sourcecode/

[8] libdmtx — http://www.libdmtx.org/

[9] Create a Data Matrix Symbol —

http://home.hiwaay.net/~csewell/CreateADMx.shtml

[10] Barcode Reading System using Image processing —

http://www.atilim.edu.tr/%7Emisafran/proje%20web/project.htm

[11] BarCode 1 — http://barcode-1.org/pub/russadam/stack.html

[12] SIEMENS — http://www.acuitycimatrix.com/Create%20DM.html

[13] SIEMENS — http://www.acuitycimatrix.com/Organizations.html

[14] BARCODE SYMBOLOGIES — http://www.barcodeisland.com/symbolgy.phtml

[15] Adobe Flash Lite — http://www.adobe.com/products/flashlite/

[16] Adobe Flash — http://www.adobe.com/products/flash/

[17] Symbian OS — http://www.symbian.com/

[18] Java, Sun Microsystems — http://java.sun.com/

Page 105: Diplomaterv - Pázmány Péter Catholic Universityusers.itk.ppke.hu/~tihanyia/GSMapp/Szilvassy_Balazs.pdf · 1083 Budapest, Práter u. 50/A Tel/Fax: 886-4700 E-mail: tanulmanyio@itk.ppke.hu

105

[19] American Morse Code —

http://www.answers.com/topic/american-morse-code

[20] Tangible Software Solution, Inc. — http://tangiblesoftwaresolutions.com/

[21] „QR-kód: a szkennelhető web”, CHIP Magazin, pp. 28-29, May 2008

[22] Semacode Datamatrix — http://semacode.com/

[23] Google ZXing projekt — http://code.google.com/p/zxing/w/list

[24] Choosing the best 2D barcode format for mobile apps —

Semacode 2006 technical white paper

[25] A Concept of Using 2D Bar Codes in Retail Environmenat — Per Jonsson

[26] MID UI Issues and Suggestions —

http://software.intel.com/en-us/articles/mid-ui-issues-and-suggestions?cid=sw:mobile019

[27] Hamming-távolság —

http://hu.wikipedia.org/wiki/Hamming-t%C3%A1vols%C3%A1g

[28] Chapter 26. Datamatrix (2D-Barcode)—

http://hem.bredband.net/aditus/chunkhtml/ch26.html

[29] Short Message Service / SMS Tutorial — http://www.developershome.com/sms/

[30] Java Communication API — http://java.sun.com/products/javacomm/

[30] Rafael C. Gonzalez, Richard E. Woods, Digital Image Processing, 3d ed. New Jersey:

Pearson Prentice Hall, 2008, pp. 394-456 (Color Image Processing chapter)

[31] Rafael C. Gonzalez, Richard E. Woods, Digital Image Processing, 3d ed. New Jersey:

Pearson Prentice Hall, 2008, pp. 627-680 (Morphological Image Processing chapter)

[32] Eclipse — http://eclipse.org/

[33] Android SDK — http://developer.android.com/index.html

Page 106: Diplomaterv - Pázmány Péter Catholic Universityusers.itk.ppke.hu/~tihanyia/GSMapp/Szilvassy_Balazs.pdf · 1083 Budapest, Práter u. 50/A Tel/Fax: 886-4700 E-mail: tanulmanyio@itk.ppke.hu

106

Mellékletek

A diplomamunkához csatolt CD-n a következők találhatóak:

1D barcode

o Az egydimenziós UPC-A vonalkódot olvasó és író Flash alkalmazás futtatható

fájlokkal, forráskóddal és a szótárfájllal.

DATAMATRIX képek

o Tesztképek a kép detekciós algoritmusaimhoz

DataMatrix_Recogniser

o A kép detektáló algoritmusokhoz írt Java-s keretrendszerem.

SMS_Server

o Java Communication API-t és kiegészítő .dll-eket használó Java nyelven írt

SMS szerver. (Önmagában, GMS készülék, és megfelelő SIM kártya nélkül

nem használható.)

SMSToDatamatrix

o Android operációs rendszerre írt SMS-t Datamatrixként megjelenítő

mobilalkalmazásom

AT_Hyperterminal.txt

o GSM készülék, megfelelő SIM kártya és hyperterminál használatával AT

parancsnyelven küldött SMS tesztüzenet. (PIN kikommentezve)

Diploma_SzilvássyBalázs.pdf

o Diplomamunkám pdf formátumban.