ˇ e vysok´e uˇcen´ı technick´e v Praze Cesk´ Fakulta elektrotechnick´a
ˇ VUT FEL katedra pocˇı´tacˇu˚ C
Diplomov´a pr´ace
SMS klient Martin Peˇsava
Vedouc´ı pr´ace: Ing. Jan Koutn´ık
Studijn´ı program: Informatika a v´ ypoˇcetn´ı technika leden 2006
ii
Podˇ ekov´ an´ı Na tomto m´ıstˇe bych r´ad podˇekoval vˇsem, kteˇr´ı mi umoˇznili tuto pr´aci vytvoˇrit. Jmenovitˇe pˇredevˇs´ım panu Ing. Janu Koutn´ıkovi za velmi dobr´ y pˇr´ıstup k veden´ı m´e diplomov´e pr´ ace, d´ale pak firmˇe Oskar-Vodafone za zap˚ ujˇcen´ı mobiln´ıch telefon˚ u a nakonec tak´e tˇem, kteˇr´ı mˇe pˇri pr´aci podporovali. iii
iv
Prohl´ aˇ sen´ı Prohlaˇsuji, ˇze jsem svou diplomovou pr´aci vypracoval samostatnˇe a pouˇzil jsem pouze podklady uveden´e v pˇriloˇzen´em seznamu. Nem´am z´avaˇzn´ y d˚ uvod proti uˇzit´ı tohoto ˇskoln´ıho d´ıla ve smyslu §60 Z´akona ˇc. 121/2000 Sb., o pr´avu autorsk´em, o pr´avech souvisej´ıc´ıch s pr´avem autorsk´ ym a o zmˇenˇe nˇekter´ ych z´akon˚ u (autorsk´ y z´akon).
V Praze dne 22.1. 2006
.............................................................
v
vi
Abstract This work is focused on a communication analysis and implementation of an application used for communication between a computer and a cell phone. Applications for cell phone managing are usually dependent on concrete manufacturer or phone type. There is a concept and realisation of application, which communicates with different cell phones, as a result of this analysis. This application allows user to manage phone book, receives and sends short messages (SMS). The application can be run on desktop PC and also on PDA devices.
Abstrakt Pr´ace se zab´ yv´a anal´ yzou komunikace a implementac´ı aplikace pro komunikaci mezi poˇc´ıtaˇcem a mobiln´ım telefonem. Aplikace pro komunikaci s mobiln´ımi telefony jsou ˇcasto z´avisl´e na konkr´etn´ım v´ yrobci nebo typu telefonu. V´ ysledkem t´eto anal´ yzy je n´avrh a realizace aplikace, kter´a komunikuje s r˚ uzn´ ymi mobiln´ımi telefony. Tato aplikace umoˇzn ˇuje spr´avu telefonn´ıho seznamu a pˇr´ıjem a odes´ıl´an´ı kr´atk´ ych textov´ ych zpr´av a lze ji provozovat na osobn´ıch poˇc´ıtaˇc´ıch i zaˇr´ızen´ıch typu PDA.
vii
viii
Obsah Seznam obr´ azk˚ u
xi
Seznam tabulek
xi
´ 1 Uvod 1.1 Zad´an´ı diplomov´e pr´ace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ´ 1.2 Uvod do problematiky . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3 3 3
2 Teoretick´ aˇ c´ ast 2.1 Pr˚ uzkum existuj´ıc´ıch implementac´ı . . . . . . . . . . . . . . . . . . . . . 2.1.1 Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.2 Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2 Realizace aplikace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3 Popis GSM/GPRS AT pˇr´ıkaz˚ u . . . . . . . . . . . . . . . . . . . . . . . 2.3.1 AT pˇr´ıkazy pro pr´aci s telefonn´ım seznamem . . . . . . . . . . . 2.3.2 AT pˇr´ıkazy pro pr´aci se zpr´avami . . . . . . . . . . . . . . . . . . 2.3.3 Dalˇs´ı pouˇzit´e AT pˇr´ıkazy . . . . . . . . . . . . . . . . . . . . . . 2.3.4 Rozd´ıly v jednotliv´ ych implementac´ıch GSM/GPRS AT pˇr´ıkaz˚ u 2.4 Popis knihovny QT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.5 Free Pascal Compiler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.6 Qt knihovna pro FPC . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
5 5 5 6 8 8 9 11 13 14 14 15 15
3 Implementace 3.1 Knihovna SynaSer . 3.2 Tˇr´ıda TMobile . . . 3.3 Aplikace . . . . . . . 3.3.1 PhBookList . 3.3.2 PhBookEdit . 3.3.3 SMSSend . . 3.3.4 SMSList . . . 3.3.5 SMSKlient .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
17 17 18 23 23 24 24 25 25
. . . . .
27 27 27 29 29 30
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
4 Dokumentace projektu 4.1 Popis rozhran´ı aplikace . . . . . . . . . . . . . . 4.2 N´avod k pouˇzit´ı . . . . . . . . . . . . . . . . . . 4.3 Popis datov´ ych soubor˚ u profilu . . . . . . . . . 4.4 Popis konfiguraˇcn´ıho souboru . . . . . . . . . . 4.5 Popis tvorby knihovny pro nov´ y mobiln´ı telefon
. . . . . . . .
. . . . .
. . . . . . . .
. . . . .
. . . . . . . .
. . . . .
. . . . . . . .
. . . . .
. . . . . . . .
. . . . .
. . . . . . . .
. . . . .
. . . . . . . .
. . . . .
. . . . . . . .
. . . . .
. . . . . . . .
. . . . .
. . . . . . . .
. . . . .
. . . . . . . .
. . . . .
. . . . . . . .
. . . . .
. . . . . . . .
. . . . .
. . . . . . . .
. . . . .
. . . . .
. . . . .
. . . . .
5 Z´ avˇ er
33
6 Seznam literatury
35
A Obsah pˇ riloˇ zen´ eho CD
37
B Popis instalace B.1 Instalace v´ yvojov´eho prostˇred´ı pro i386 . . . . . . . . . . . . . . . . . . . . . . B.2 Instalace v´ yvojov´eho prostˇred´ı pro ARM . . . . . . . . . . . . . . . . . . . . . . B.3 Instalace aplikace na Sharp Zaurus . . . . . . . . . . . . . . . . . . . . . . . . .
39 39 39 40
ix
x
Seznam obr´ azk˚ u 1.1
Model pouˇzit´ı aplikace v ter´enu . . . . . . . . . . . . . . . . . . . . . . . . . . .
3
2.1 2.2 2.3 2.4 2.5 2.6 2.7
Float’s Mobile Agent . . . . . . . . . MOBILEdit! . . . . . . . . . . . . . Easy Studio . . . . . . . . . . . . . . wammu . . . . . . . . . . . . . . . . kmobiletools . . . . . . . . . . . . . . gnocky, grafick´a n´astavba pro gnooki Realizace aplikace . . . . . . . . . .
. . . . . . .
5 5 6 6 7 7 8
3.1 3.2
Architektura vrstev aplikace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Vz´ajemn´e vol´an´ı a v´ ymˇena dat mezi jednotliv´ ymi objekty . . . . . . . . . . . .
17 23
4.1 4.2 4.3
Rozhran´ı aplikace v rozliˇsen´ı 240x320 a 640x480 . . . . . . . . . . . . . . . . . . Uˇzivatelsk´e rozhran´ı - telefonn´ı seznam a zobrazen´ı podrobnosti kontaktu . . . Uˇzivatelsk´e rozhran´ı - seznam SMS zpr´av, psan´ı nov´e zpr´avy, zobrazen´ı detailu SMS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Uˇzivatelsk´e rozhran´ı - editace telefonn´ıho seznamu, vytv´aˇren´ı nov´e poloˇzky telefonn´ıho seznamu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
27 28
4.4
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
28 29
Seznam tabulek 2.1 2.2 2.3 2.4 2.5
Pˇr´ıklad z´akladn´ıch AT pˇr´ıkaz˚ u . . . . . . . . . . . . Pˇrehled AT pˇr´ıkaz˚ u pro pr´aci s telefonn´ım seznamem Nˇekter´e typy u ´loˇziˇsˇt pro telefonn´ı seznam . . . . . . Pˇrehled AT pˇr´ıkaz˚ u pro pr´aci s SMS zpr´avami . . . . Pˇrehled dalˇs´ıch AT pˇr´ıkaz˚ u . . . . . . . . . . . . . .
. . . . .
8 9 9 11 13
4.1
Seznam parametr˚ u konfigurace s´eriov´eho portu . . . . . . . . . . . . . . . . . .
30
xi
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
xii
1
Obsah kapitol V kapitole 1 je ˇcten´aˇr bl´ıˇze sezn´amem s problematikou, kter´a je v t´eto pr´aci ˇreˇsena.
V kapitole 2 je uveden pr˚ uzkum existuj´ıc´ıch implementac´ı SMS klient˚ u, d´ale zde najdeme n´astin realizace aplikace, popis GSM/GPRS AT pˇr´ıkaz˚ u a popis rozd´ıl˚ u oproti specifikaci u jednotliv´ ych mobiln´ıch telefon˚ u. Nakonec se zde doˇcteme tak´e nˇeco o Free Pascal Compileru a QT knihovnˇe.
Kapitola 3 popisuje hierarchii aplikace a detailn´ı popis jednotliv´ ych vrstev. Konkr´etnˇe se jedn´ a o implementaˇcn´ı detaily vrstvy pro s´eriovou komunikaci, vrstvy pro vytvoˇren´ı abstraktn´ıho modelu mobiln´ıho telefonu a nakonec vrstvy pro uˇzivatelsk´e rozhran´ı aplikace.
Kapitola 4 obsahuje n´avod k pouˇzit´ı aplikace, detailn´ı popis konfiguraˇcn´ıho souboru a n´ avod na vytvoˇren´ı knihovny pro komunikaci s nov´ ym mobiln´ım telefonem.
V kapitole 5 se dozv´ıme, co bylo implementov´ano, ˇc´ım by bylo moˇzn´e aplikaci d´ale rozˇs´ıˇrit a pˇr´ıpadnˇe dalˇs´ı poznatky utvoˇren´e v pr˚ ubˇehu v´ yvoje a testov´an´ı aplikace.
V pˇ r´ıloze B nalezneme postupy instalac´ı v´ yvojov´eho prostˇred´ı pro v´ yvoj aplikac´ı postaven´ ych na QT knihovn´ach pro procesory i386 a ARM. Takt´eˇz zde nalezneme popis instalace a spuˇstˇen´ı aplikace na PDA Sharp Zaurus.
2
´ KAPITOLA 1. UVOD
3
´ 1 Uvod 1.1
Zad´ an´ı diplomov´ e pr´ ace
Navrhnˇete a implementujte aplikaci pro pr´aci s kr´atk´ ymi textov´ ymi zpr´avami tak, aby ji bylo moˇzn´e provozovat na r˚ uzn´ ych hardwareov´ ych platform´ach. Pˇredpokl´adejte vyuˇzit´ı operaˇcn´ıho syst´emu Linux. Aplikace by mˇela m´ıt n´asleduj´ıc´ı vlastnosti. Pracovat s telefonn´ım seznamem stejn´ ym zp˚ usobem jako v mobiln´ım telefonu. Mˇela by jej tedy umˇet zobrazit, m´ıt moˇznost pˇrid´av´an´ı a editace jednotliv´ ych z´aznam˚ u a tak´e moˇznost uchov´an´ı seznamu v pamˇeti poˇc´ıtaˇce, aby byl pˇr´ıstupn´ y i pˇri odpojen´em mobiln´ım telefonu. D´ale by mˇela umoˇzn ˇovat vytv´aˇren´ı a odes´ıl´an´ı kr´atk´ ych textov´ ych zpr´av za pouˇzit´ı telefonn´ıho seznamu. Posledn´ı poˇzadovanou vlastnost´ı je archiv pˇrijat´ ych a odeslan´ ych SMS zpr´av, kter´e se st´ahnout z pamˇeti mobiln´ıho telefonu.
Obr´azek 1.1: Model pouˇzit´ı aplikace v ter´enu
1.2
´ Uvod do problematiky
Rozbor zad´an´ı bych rozdˇelil do dvou ˇc´ast´ı. Nejprve si je nutn´e ujasnit, jak´ ym zp˚ usobem budeme s mobiln´ım telefonem z naˇs´ı aplikace komunikovat. V druh´e ˇc´asti pak probereme jak´ ym zp˚ usobem je tˇreba naprogramovat vlastn´ı aplikaci, aby j´ı bylo moˇzno provozovat na r˚ uzn´ ych platform´ach. Komunikace s mobiln´ım telefonem m˚ uˇze prob´ıhat v z´asadˇe nˇekolika zp˚ usoby. Nejjednoduˇsˇs´ı zp˚ usob komunikace je pˇres s´eriovou linku RS232. T´ımto rozhran´ım jsou dnes vybaveny prakticky vˇsechny mobiln´ı telefony aˇt uˇz v klasick´e ”dr´atov´e podobˇe”, tak je t´emˇeˇr pravidlem, ˇze jej umˇej´ı simulovat pˇres infraˇcerven´e (IrDA) pˇr´ıpadnˇe bluetooth rozhran´ı. Konkr´etn´ı zp˚ usob komunikace je bl´ıˇze pops´an v kapitol´ach 2.2 a 2.3. Co se t´ yˇce vlastn´ı aplikace a pˇredevˇs´ım jej´ı multiplatformnosti, jednoznaˇcn´ ym favoritem by mohla b´ yt JAVA, kter´a uˇz z principu multiplatformn´ı je. Avˇsak d´ıky poˇzadavku na bˇeh aplikace i na mal´ ych zaˇr´ızen´ıch s omezen´ ym v´ ykonem, jsem zvolil klasickou kompilovanou aplikaci do bin´arn´ı podoby. Konkr´etnˇe je jako programovc´ı jazyk pouˇzit Free Pascal Compiler1 , kter´ y um´ı kompilovat pro r˚ uzn´e HW platformy, viz kapitola 2.5. D´ale je nutn´e pouˇz´ıt takov´e grafick´e knihovny, kter´e existuj´ı pro vˇsechny poˇzadovan´e HW platformy. Zvolil jsem Qt2 , kter´e tento poˇzadavek splˇ nuj´ı, v´ıce viz kapitola 2.4.
1 2
http://www.fpc.org/ http://www.qtopia.net/
4
´ KAPITOLA 1. UVOD
´ C ˇ AST ´ KAPITOLA 2. TEORETICKA
5
2 Teoretick´ aˇ c´ ast 2.1 2.1.1
Pr˚ uzkum existuj´ıc´ıch implementac´ı Windows
Float’s Mobile Agent http://fma.sourceforge.net/ FMA je velice poveden´ y program podporuj´ıc´ı spr´avu t´emˇeˇr vˇsech funkc´ı telefonu. Velkou pˇrednost´ı je t´eˇz velice pˇeknˇe zpracovan´e uˇzivatelsk´e rozhran´ı. Bohuˇzel velikou nev´ yhodou je to, ˇze podporuje pouze mobiln´ı telefony znaˇcky SonyEricsson.
Obr´azek 2.1: Float’s Mobile Agent
MobilEdit! http://www.mobiledit.com/cz/index.asp Celkem rozs´ahl´ y program pro spr´avu mobiln´ıch telefon˚ u. Krom spr´avy telefonn´ıho seznamu a SMS zpr´av podporuje pr´aci se souborov´ ym syst´emem na mobiln´ım telefonu (fotografie, melodie, java aplikace a dalˇs´ı), d´ale zobrazen´ı detailn´ıch informac´ı o mobiln´ım telefonu a SIM kartˇe (s´ıla sign´alu, stav baterie, IMEI, atd.) a dalˇs´ıch. Velikou v´ yhodou tohoto programu je modul´ arn´ı ˇreˇsen´ı, takˇze nen´ı probl´em pˇrid´avat nov´e funkce. Takt´eˇz podpora mobiln´ıch telefon˚ u r˚ uzn´ ych v´ yrobc˚ u je velice rozs´ahl´a a zahrnuje v podstatˇe veˇsker´e dnes pouˇz´ıvan´e telefony. Kompletn´ı seznam podporovan´ ych zaˇr´ızen´ı je k nalezen´ı na adrese http://www.mobiledit.com/phones. asp.
Obr´azek 2.2: MOBILEdit!
´ C ˇ AST ´ KAPITOLA 2. TEORETICKA
6
Dalˇs´ı spousta aplikac´ı je vyv´ıjena pˇr´ımo v´ yrobci mobiln´ıch telefon˚ u a vˇetˇsinou funguj´ı pouze pro danou znaˇcku mobiln´ıho telefonu. Jako pˇr´ıklad si m˚ uˇzeme uv´est program Easy Studio (http://www.kiboon.cz/kiboon/pubCZ/home/download/Main/index.jet, obr´azek 2.3), kter´e je urˇceno pro telefony znaˇcky Samsung. Vˇsechny aplikace v t´eto kapitole jsou bohuˇzel pro n´aˇs u ´ˇcel nepouˇziteln´e, protoˇze jsou pouze pro platformu Windows.
Obr´azek 2.3: Easy Studio
2.1.2
Linux
gammu, wammu http://www.mwiacek.com/gsm/soft/gammu.html http://www.cihar.com/gammu/wammu/ Gammu je kompletn´ı projekt zab´ yvaj´ıc´ı se vytv´aˇren´ım program˚ u a skript˚ u pro komunikaci s co nejvˇetˇs´ım poˇctem mobiln´ıch telefon˚ u. Moment´alnˇe gammu podporuje pˇredevˇs´ım telefony znaˇcky Nokia a d´ale vˇetˇsinu telefon˚ u, kter´e maj´ı podporu AT pˇr´ıkaz˚ u, napˇr. Samsung, SonyEricsson, Alcatel. Krom pr´ace s telefonn´ım seznamem a SMS zpr´avami podporuje velk´e mnoˇzst´ı dalˇs´ıch funkc´ı, kter´e telefony podporuj´ı, napˇr. pr´aci s kalend´aˇrem, obr´azky, FM r´adiem. Jako kvalitn´ı grafick´a n´astavba se d´a pouˇz´ıt aplikace Wammu, viz obr´azek 2.4. V tomto pˇr´ıpadˇe bylo moˇzn´e pouˇz´ıt pro z´aklad vytv´aˇren´e aplikace projekt gammu. Nicm´enˇe jsem se rozhodl pro vlastn´ı implementaci komunikaˇcn´ıch funkc´ı pˇredevˇs´ım z d˚ uvodu pochopen´ı principu komunikace mezi poˇc´ıtaˇcem a mobiln´ım telefonem.
Obr´azek 2.4: wammu
´ C ˇ AST ´ KAPITOLA 2. TEORETICKA
7
kmobiletools http://kmobiletools.berlios.de/index.php Tento grafick´ y program um´ı spravovat SMS a telefonn´ı seznam. Pracuje pˇredevˇs´ım s novˇejˇs´ımi telefony znaˇcek Motorola, Samsung, SonyEricsson a Nokia (komletn´ı seznam podporovan´ ych telefon˚ u je k nalezen´ı na adrese http://kmobiletools.berlios.de/phones). Bohuˇzel tento program nebyl pro n´aˇs u ´ˇcel vhodn´ y, vzhledem k nemoˇznosti jej zkompilovat a provozovat na poˇzadovan´em zaˇr´ızen´ı.
Obr´azek 2.5: kmobiletools
gnooki http://www.gnokii.org/ Jedn´a se o command-line utilitu pro spr´avu telefon˚ u pˇredevˇs´ım znaˇcky Nokia. Kompletn´ı seznam podporovan´ ych telefon˚ u je k nalezen´ı na t´eto adrese http://www.gnokii.org/faq. shtml v ˇc´asti What models are supported. Um´ı spravovat jak telefonn´ı seznam, tak SMS zpr´avy. D´ale um´ı pracovat s poloˇzkami v kalend´aˇri a nahr´avat do mobilu vyzv´anˇec´ı melodie. Existuje ve verzi jak pro Linux, tak pro Windows. Pˇrestoˇze se jedn´a o vcelku zdaˇril´ y program, nebylo jej moˇzn´e pouˇz´ıt z d˚ uvodu absence podpory pro Samsung a SonyEricsson. Jako grafickou n´astavbu pro tuto aplikaci je moˇzn´e napˇr´ıklad pouˇz´ıt gnocky, viz obr´azek 2.6.
Obr´azek 2.6: gnocky, grafick´a n´astavba pro gnooki
´ C ˇ AST ´ KAPITOLA 2. TEORETICKA
8 tsemgr
http://sourceforge.net/projects/tsemgr/ Grafick´a aplikace pro GTK+ pro spr´avu telefonu SonyEricsson T68. Podporuje ˇcten´ı a pos´ıl´an´ı SMS zpr´av, prohl´ıˇzen´ı a editaci telefonn´ıho seznamu a nahr´av´an´ı soubor˚ u do telefonu. Tak´e um´ı pouˇz´ıt mobil jako d´alkov´ y ovladaˇc pro poˇc´ıtaˇc. V´ yvoj tohoto produktu byl vˇsak jiˇz ukonˇcen v ˇcervnu 2004. Pro naˇs´ı potˇrebu se nehod´ı pˇredevˇs´ım z toho d˚ uvodu, ˇze pouˇz´ıv´a GTK+ knihovny, kter´e nejsou na poˇzadovan´e platformˇe dostupn´e.
2.2
Realizace aplikace
Komunikace s mobiln´ım telefonem prob´ıh´a na z´akladˇe tzv. AT pˇr´ıkaz˚ u, kter´e jsou pos´ıl´any po s´eriov´e lince. Aplikace tedy mus´ı nav´azat s mobiln´ım telefonem komunikaci a pot´e s n´ım pomoc´ı AT pˇr´ıkaz˚ u d´ale komunikovat. Pro naˇs´ı potˇrebu je vhodn´e si vytvoˇrit knihovnu pro pr´aci s mobiln´ım telefonem na m´ıru a z aplikace uˇz volat v´ıce abstraktn´ı metody. Konkr´etnˇe tato situace vypad´a tak, jak je tomu na obr´azku 2.7.
Obr´azek 2.7: Realizace aplikace
2.3
Popis GSM/GPRS AT pˇ r´ıkaz˚ u
Jak jiˇz bylo ˇreˇceno, komunikace s mobiln´ım telefonem prob´ıh´a na z´akladˇe tzv. AT pˇr´ıkaz˚ u. Jedn´a se o sekvenci znak˚ u uvozenou znaky AT a ukonˇcenou znakem
(Enter). Tato konvence se pouˇz´ıv´a uˇz od dob bˇeˇzn´ ych modem˚ u pro analogov´e telefonn´ı linky. Postupnˇe byly AT pˇr´ıkazy rozˇsiˇrov´any tak, jak si to vyˇzadovaly nov´e funkce zaˇr´ızen´ı. Pˇr´ıklad nˇekter´ ych z´akladn´ıch AT pˇr´ıkaz˚ u vˇcetnˇe jejich v´ yznamu je uveden v tabulce 2.1. AT pˇ r´ıkaz ATDP1234 ATE1 ATH0
v´ yznam AT pˇ r´ıkazu vytoˇc´ı pulsn´ı volbou telefonn´ı ˇc´ıslo 1234 povol´ı lok´aln´ı echo zavˇes´ı telefon Tabulka 2.1: Pˇr´ıklad z´akladn´ıch AT pˇr´ıkaz˚ u
Pro potˇreby komunikace s mobiln´ım telefonem bylo vˇsak potˇreba sadu AT pˇr´ıkaz˚ u rozˇs´ıˇrit o dalˇs´ı pˇr´ıkazy pracuj´ıc´ı s telefonn´ım seznamem, SMS zpr´avami, ale t´eˇz GPRS datov´ ym spojen´ım. Kompletn´ı dokumentaci AT pˇr´ıkaz˚ u pro GSM/GPRS je k nalezen´ı napˇr´ıklad v dokumentu [2]. V n´asleduj´ıc´ıh dvou kapitol´ach podrobnˇeji rozeberu pˇr´ıkazy pouˇzit´e pro pr´aci s telefonn´ım seznamem a zpr´avami v mobiln´ıch telefonech.
´ C ˇ AST ´ KAPITOLA 2. TEORETICKA 2.3.1
9
AT pˇ r´ıkazy pro pr´ aci s telefonn´ım seznamem
Z´akladn´ı pˇr´ıkazy pro pr´aci s telefonn´ım seznamem vid´ıme v tabulce 2.2. Jedn´a se o pˇr´ıkazy ˇcten´ı a z´apisu z/do pamˇeti telefonu resp. SIM. AT pˇ r´ıkaz AT+CPBR AT+CPBS AT+CPBW
v´ yznam AT pˇ r´ıkazu pˇreˇcte z´aznam v telefonn´ım seznamu vol´ı pamˇet pro ˇcten´ı/uloˇzen´ı z´aznamu uloˇz´ı z´aznam do telefonn´ıho seznamu Tabulka 2.2: Pˇrehled AT pˇr´ıkaz˚ u pro pr´aci s telefonn´ım seznamem
AT+CPBS Tento pˇr´ıkaz slouˇz´ı k volbˇe pouˇzivan´e pamˇeti, d´ale ke zjiˇstˇen´ı poˇctu pouˇzit´ ych poloˇzek a takt´eˇz maxim´aln´ımu poˇctu poloˇzek. Syntaxe tohoto pˇr´ıkazu ukazuje n´asleduj´ıc´ı seznam: AT+CPBS? AT+CPBS=? AT+CPBS=
DC SM ME
tento pˇr´ıkaz vr´at´ı aktu´aln´ı zvolen´e u ´loˇziˇstˇe spolu s poˇctem pouˇzit´ ych a celkov´am poˇctem poloˇzek t´ımto pˇr´ıkazem si m˚ uˇzeme nechat zobrazit seznam vˇsech podporovan´ ych u ´loˇziˇsˇt a koneˇcnˇe t´ımto pˇr´ıkazem vybran´e u ´loˇziˇstˇe aktivujeme
pamˇeˇt volan´ ych ˇc´ısel (Dialed Calls) pamˇeˇt kontakt˚ u uloˇzen´ ych na SIM kartˇe ˇ pamˇet kontakt˚ u uloˇzen´ ych pˇr´ımo v mobiln´ım telefonu Tabulka 2.3: Nˇekter´e typy u ´loˇziˇsˇt pro telefonn´ı seznam
Pˇr´ıklad pouˇzit´ı AT+CPBS pˇr´ıkazu: ; nech´ ame si zobrazit vˇ sechny dostupn´ e pamˇ eti AT+CPBS=? +CPBS: ("DC","EN","FD","MC","ON","RC","ME","SM") OK ; zvol´ ıme pamˇ eˇ t SM tj. z´ aznamy uloˇ zen´ e na SIM kartˇ e AT+CPBS=SM OK ; nech´ ame si vypsat poˇ cet pouˇ zit´ ych a maxim´ aln´ ı poˇ cet z´ aznam˚ u AT+CPBS=? +CPBS: "SM",110,220 OK ; zde vid´ ıme, ˇ ze na SIM kartˇ e je obsazeno 110 z celkov´ ych 220 z´ aznam˚ u
AT+CPBR Tento pˇr´ıkaz slouˇz´ı ke ˇcten´ı z´aznamu z pamˇeti telefonu nebo ze SIM karty. Takt´eˇz je moˇzn´e jej pouˇz´ıt na zjiˇstˇen´ı doplˇ nkov´ ych informac´ı o u ´loˇziˇsti z´aznam˚ u v telefonu. Pˇr´ıklad pouˇzit´ı AT+CPBR pˇr´ıkazu:
´ C ˇ AST ´ KAPITOLA 2. TEORETICKA
10 AT+CPBR=? AT+CPBR=
vrac´ı rozsah lokac´ı a maxim´aln´ı d´elku jednotliv´ ych poloˇzek v tomto form´atu: +CPBR: ,, vrac´ı poˇzadovan´ y z´aznam z telefonn´ıho seznamu v tomto form´atu: +CPBR: ,,,
rozsah z´aznam˚ u v dan´e pamˇeti maxim´aln´ı d´elka telefonn´ıho ˇc´ısla v pamˇeti maxim´aln´ı d´elka n´azvu kontaktu v pamˇeti
pozice z´aznamu v pamˇeti telefonn´ı ˇc´ıslo z´aznamu v textov´e podobˇe typ ˇc´ısla z´aznamu pokud ˇc´ıslo zaˇc´ın´a symbolem + je zde hodnota 145, jinak je zde hodnota 129 n´azev z´aznamu
ˇ, se kterou budeme pracovat, v tomto pˇ ; nejprve si zvol´ ıme pamˇ et r´ ıpadˇ e SIM AT+CPBS=SM OK ; d´ ale si zjist´ ıme, jak´ e poloˇ zky jsou souˇ c´ ast´ ı telefonn´ ıho seznamu na SIM kartˇ e AT+CPBR=? +CPBR: (1-220),40,14 OK ; SIM karta m´ a tedy rozsah z´ aznam˚ u 1-220, telefonn´ ı ˇ c´ ıslo m˚ uˇ ze m´ ıt maxim´ aln´ ı ; d´ elku 40 znak˚ u a text kontaktu maxim´ alnˇ e 14 znak˚ u ; a nyn´ ı pˇ reˇ cteme ze SIM karty z´ aznam s ˇ c´ ıslem 10 AT+CPBR=10 +CPBR: 10,"+420123456789",145,"Novak Petr" OK ; zde vid´ ıme, ˇ ze na pozici 10 je uloˇ zen kontakt na Petra Nov´ aka ; s telefonn´ ım ˇ c´ ıslem +420123456789
AT+CPBW Posledn´ım pˇr´ıkazem pro pr´aci s telefonn´ım seznamem je pˇr´ıkaz pro uloˇzen´ı z´aznamu na konkr´etn´ı pozici v pamˇeti. Pouˇzit´a syntaxe je obdobn´a s n´avratovou hodnotou pˇr´ıkazu AT+CPBR: AT+CPBW=,,,. Pˇr´ıklad pouˇzit´ı AT+CPBW pˇr´ıkazu: ˇ, se kterou budeme pracovat, v tomto pˇ ; opˇ et nejprve zvol´ ıme pamˇ et r´ ıpadˇ e SIM AT+CPBS=SM OK ; a n´ aslednˇ e na pozici 2 zap´ ıˇ seme kontakt "Pospisil Jiri" ; s telefonn´ ım ˇ c´ ıslem "+420777111222" AT+CPBW=1,"+420777111222",145,"Pospisil Jiri" OK Pokud pouˇzijeme syntaxi AT+CPBW=, provedeme vymaz´an´ı z´aznamu z pamˇeti.
´ C ˇ AST ´ KAPITOLA 2. TEORETICKA 2.3.2
11
AT pˇ r´ıkazy pro pr´ aci se zpr´ avami
Pˇr´ıkazy pro pr´aci s SMS zpr´avami vid´ıme v tabulce 2.2. Jedn´a se o pˇr´ıkazy pro ˇcten´ı, z´ apis, smaz´an´ı a posl´an´ı SMS zpr´av a d´ale o nˇekolik podp˚ urn´ ych pˇr´ıkaz˚ u nutn´ ych pro spr´avnou funkci. AT pˇ r´ıkaz AT+CPMS AT+CSDH AT+CMGF AT+CMGR AT+CMGS
v´ yznam AT pˇ r´ıkazu vol´ı pamˇet pro ˇcten´ı/uloˇzen´ı SMS vol´ı detailnost zobrazovan´ ych hlaviˇcek zpr´av vol´ı form´at pr´ace s SMS zpr´avami pˇreˇcte SMS zpr´avu poˇsle SMS zpr´avu Tabulka 2.4: Pˇrehled AT pˇr´ıkaz˚ u pro pr´aci s SMS zpr´avami
AT+CPMS Sloˇz´ı k v´ ybˇeru pamˇeti, se kterou budeme pracovat. Takt´eˇz slouˇz´ı k zjiˇstˇen´ı informac´ı o vybran´e pamˇeti. AT+CPMS? AT+CPMS=
<used>
vrac´ı vybran´ y typ u ´loˇziˇstˇe a poˇcet pouˇzit´ ych a celkov´ ych poloˇzek: +CPMS: ,<used>, nastavuje u ´loˇziˇstˇe jako aktivn´ı a rovnou vrac´ı poˇcet pouˇzit´ ych a celkov´ ych poloˇzek: +CPMS: <used>,
typ u ´loˇziˇstˇe, viz tabulka 2.3 poˇcet pouˇzit´ ych poloˇzek v seznamu SMS celkov´ y poˇcet poloˇzek v seznamu SMS
Pˇr´ıklad pouˇzit´ı AT+CPMS pˇr´ıkazu: AT+CPMS=SM +CPMS: 24,25 OK AT+CPMS=ME +CPMS: 1,200 OK ; v prvn´ ım pˇ r´ ıpadˇ e vid´ ıme, ˇ ze na SIM kartˇ e je 24 z 25 pozic obsazen´ ych, ; ve druh´ em je v telefonu pouˇ zita jedin´ a poloˇ zka z celkem 200 moˇ zn´ ych
AT+CSDH Vol´ı detailnost hlaviˇcek SMS zpr´av. Moˇzn´a nastaven´ı jsou jednoduch´ y a detailn´ı v´ ypis. Pˇr´ıklad pouˇzit´ı AT+CSDH pˇr´ıkazu: ; nejprve si uk´ aˇ zeme, jak vypad´ a jednoduch´ y v´ ypis SMS zpr´ avy AT+CSDH=0 OK AT+CMGR=1 +CMGR: "REC READ","+420608033049","","06/01/13,12:59:39+00" zkouska spojeni OK
´ C ˇ AST ´ KAPITOLA 2. TEORETICKA
12
; a nyn´ ı detailn´ ı v´ ypis SMS zpr´ avy AT+CSDH=1 OK AT+CMGR=1 +CMGR: "REC READ","+420608033049","","06/01/13,12:59:39+00",145,4,0,0, "+420608005681",145,15 zkouska spojeni OK Syntaxe pˇr´ıkazu AT+CSDH je pops´ana zde: AT+CSDH? AT+CSDH=
vr´at´ı aktu´aln´ı nastaven´ı nastav´ı zobrazen´ı na detailn´ı (pro n=1) nebo jednoduch´ y (pro n=0)
AT+CMGR Pˇr´ıkaz slouˇz´ı k pˇreˇcten´ı SMS zpr´avy z pamˇeti telefonu nebo SIM karty. Syntaxe pˇr´ıkazu je n´ asleduj´ıc´ı: AT+CMGR= ,kde je pozice pamˇeti, ze kter´e chceme zpr´avu ˇc´ıst. Form´at odpovˇedi je pak n´asleduj´ıc´ı: +CMGR: <stts>,,,<scts>,,,,,<sca>,, OK
<stts>
<scts> <sca>
status zpr´avy, m˚ uˇze b´ yt jedna z n´asleduj´ıc´ıch: REC UNREAD, REC READ, STO UNREAD, STO READ (REC - pˇrijat´a, STO - uloˇzen´a) telefonn´ı ˇc´ıslo tv˚ urce zpr´avy jm´eno kontaktu tv˚ urce zpr´avy, pokud je v telefonn´ım seznamu ˇcasov´e raz´ıtko pr˚ uchodu zpr´avy pˇres SMS centrum ve form´atu: yy/MM/dd,hh:mm:ss+sz typ ˇc´ısla tv˚ urce zpr´avy, pokud ˇc´ıslo zaˇc´ın´a symbolem + je zde hodnota 145, jinak je zde hodnota 129 prvn´ı oktet SMS zpr´avy identifik´ator protokolu, bˇeˇznˇe 0 datov´e k´odovac´ı sch´ema, bˇeˇznˇe 0 telefonn´ı ˇc´ıslo servisn´ıho stˇrediska typ ˇc´ısla servisn´ıho stˇrediska d´elka vlastn´ı SMS zpr´avy text vlastn´ı SMS zpr´avy
Pˇr´ıklad pouˇzit´ı AT+CMGR pˇr´ıkazu: ; pˇ reˇ cteme prvn´ ı zpr´ avu z pamˇ eti AT+CMGR=1 +CMGR: "REC READ","+420608033049","","06/01/13,12:59:39+00",145,4,0,0, "+420608005681",145,15 zkouska spojeni OK
´ C ˇ AST ´ KAPITOLA 2. TEORETICKA
13
AT+CMGF Tento pˇr´ıkaz vol´ı zp˚ usob jak´ ym bude pracov´ano s SMS zpr´avami. Jednou moˇznost´ı je textov´ y reˇzim, druh´ y pak bin´arn´ı, tzv. PDU. V tˇechto pˇr´ıkladech je pouˇzito vˇsude textov´eho reˇzimu. Pˇr´ıklad pro bin´arn´ı v´ ypis neuv´ad´ım, nebylo by na nˇem nic vidˇet. AT+CMGF? AT+CSDH=
vr´at´ı aktu´aln´ı nastaven´ı nastav´ı reˇzim pr´ace s SMS zpr´avami, textov´ y (pro n=1) nebo PDU (pro n=0)
AT+CMGS Slouˇz´ı k posl´an´ı SMS zpr´avy. Syntaxi m´a z´avislou na zp˚ usobu pr´ace s SMS zpr´avami. PDU reˇzimem se zde zab´ yvat nabudu, textov´ y reˇzim m´a pak tuto syntaxi: AT+CMGS=,<message>. <message>
2.3.3
telefonn´ı ˇc´ıslo pˇr´ıjemce zpr´avy typ ˇc´ısla tv˚ urce zpr´avy, pokud ˇc´ıslo zaˇc´ın´a symbolem + je zde hodnota 145, jinak je zde hodnota 129 vlastn´ı text zpr´avy
Dalˇ s´ı pouˇ zit´ e AT pˇ r´ıkazy
Jak uˇz jsem zmiˇ noval v´ yˇse, AT pˇr´ıkaz˚ u je velk´e mnoˇzst´ı. V tomto dokumentu se zab´ yv´ ame pouze tˇemi, kter´e byly pouˇzity pˇri programov´an´ı zadan´e aplikace. Mimo pˇr´ıkaz˚ u pro pr´ aci s telefonn´ım seznamem a SMS zpr´avami jsou v aplikaci jeˇstˇe pouˇzity pˇr´ıkazy pro zjiˇstˇen´ı v´ yrobce a typu mobiln´ıho telefonu a pˇr´ıkaz pro nastaven´ı notifikace nov´ ych SMS zpr´av, viz tabulka 2.5. AT pˇ r´ıkaz AT+CGMI AT+CGMM AT+CNMI
v´ yznam AT pˇ r´ıkazu vr´at´ı identifikaci v´ yrobce telefonu vr´at´ı identifikaci modelu telefonu nastavuje notifikaci pˇr´ıchoz´ıch ud´alost´ı Tabulka 2.5: Pˇrehled dalˇs´ıch AT pˇr´ıkaz˚ u
Pˇr´ıklad pouˇzit´ı AT+CGMI a AT+CGMM pˇr´ıkaz˚ u: AT+CGMI SAMSUNG OK AT+CGMM SGH-S500 OK ; z vr´ acen´ ych hodnot vid´ ıme, ˇ ze jde o mobiln´ ı telefon SAMSUNG SGH-S500
AT+CNMI Tento pˇr´ıkaz slouˇz´ı k nastaven´ı notifikace pˇri pˇr´ıchoz´ı SMS zpr´avˇe. M´a celkem 5 parametr˚ u, my si zde vysvˇetl´ıme jenom ten prvn´ı. Na funkci dalˇs´ıch odkazuji opˇet do dokumentace [2].
´ C ˇ AST ´ KAPITOLA 2. TEORETICKA
14 AT+CNMI? AT+CNMI=<mode>
2.3.4
vr´at´ı aktu´aln´ı nastaven´ı zablokuje (pro mode=0) nebo povol´ı (pro mode=1,2,3) notifikaci
Rozd´ıly v jednotliv´ ych implementac´ıch GSM/GPRS AT pˇ r´ıkaz˚ u
Pˇrestoˇze tyto rozˇsiˇruj´ıc´ı AT pˇr´ıkazy jsou standardizov´any podle dokumentu [2], vˇetˇsina v´ yrobc˚ u mobiln´ıch telefon˚ u si pˇr´ıkazy upravuje. Proto je mnohdy dokonce nutn´e pouˇz´ıt u ´plnˇe jin´ ych postup˚ u pˇri poˇzadovan´em v´ ysledku. Samsung Co se t´ yˇce pr´ace s telefonn´ım seznamem, tak na testovan´em Samsungu SGH-S500 fungovalo vˇsechno tak, jak je pops´ano v dokumentaci. Pˇri pr´aci s SMS zpr´avami byly rozd´ıly pouze nepatrn´e, konkr´etnˇe pˇr´ıkaz AT+CPMS, kter´ y slouˇz´ı k v´ ybˇeru pamˇeti, se kterou budeme pracovat, vypisoval vˇsechny hodnoty 3x za sebou, tj. jeho v´ ystup vypadal nˇejak takto: AT+CPMS? +CPMS: "SM",25,25,"SM",25,25,"SM",25,25 OK ; podle dokumentace se mˇ elo vr´ atit pouze: +CPMS: "SM",25,25 AT+CPMS=ME +CPMS: 22,200,22,200,22,200 OK ; podle dokumentace: +CPMS: 22,200
N´aslednˇe jsem narazil jeˇstˇe na jednu implementaˇcn´ı odliˇsnost a to konkr´etnˇe pˇri ukl´ad´an´ı nov´eho kontaktu pˇr´ımo do pamˇeti mobiln´ıho telefonu. Pˇrestoˇze na urˇcit´e pozici uˇz nˇejak´ y z´aznam je, z´ apisem na tut´eˇz pozici z´aznam nepˇrep´ıˇseme, ale z´aznam se vloˇz´ı jako posledn´ı. Takˇze pˇri pˇrepisov´an´ı nˇekter´eho z kontakt˚ u v pamˇeti mobiln´ıho telefonu je tˇreba tento z´aznam nejdˇr´ıve pomoc´ı pˇr´ıkazu AT+CPBW= smazat a pot´e na stejn´e m´ısto zapsat nov´ y. Na jin´e odliˇsnosti jsem pˇri implementaci nenarazil.
2.4
Popis knihovny QT
QT je multiplatformn´ı plnˇe objektov´ y a snadno rozˇsiˇriteln´ y framework pro vytv´aˇren´ı GUI. Je produktem firmy Trolltech (http://www.trolltech.com), kter´a jej vyv´ıj´ı jiˇz od roku 1996 a jeho multiplatformnost je skuteˇcnˇe ˇsirok´a. QT knihovny jsou k dispozici pro tyto syst´emy: MS/Windows Unix/X11 Embedded
NT, 95, 98, 2000, XP Linux, Sun Solaris, HP-UX, Digital Unix, IBM AIX, SGI IRIX a dalˇs´ı Linuxov´e platformy s podporou framebufferu.
QT je takt´eˇz z´akladem popul´arn´ıho linuxov´eho grafick´eho rozhran´ı KDE1 . Jej´ı kompletn´ı dokumentace je k nalezen´ı na webu v´ yrobce [3]. Mysl´ım, ˇze velice dobr´ yu ´vod do z´aklad˚ u programov´an´ı aplikac´ı vyuˇz´ıvaj´ıc´ıch QT je k nalezen´ı na ˇcesk´ ych www str´ank´ach Popis knihovny Qt [4], jej´ıˇz mirror je moˇzn´e naj´ıt i na pˇriloˇzen´em CD v souboru /doc/PopisKnihovnyQt.pdf. 1
http://www.kde.org/
´ C ˇ AST ´ KAPITOLA 2. TEORETICKA
2.5
15
Free Pascal Compiler
Free Pascal Compiler (http://www.freepascal.org/) je 32/64bit kompil´ator pro pascal. Dok´aˇze kompilovat pro r˚ uzn´e typy procesor˚ u, a to jak procesory ˇrady Intel/AMD x86, tak i pro procesory PowerPC, SPARC, ARM. Takt´eˇz se d´a ˇr´ıci, ˇze je multiplatformn´ı, co se operaˇcn´ıch syst´em˚ u t´ yk´a. Moment´alnˇe existuje pro operaˇcn´ı syst´emy Linux, FreeBSD, Mac OS X, DOS, Win32, OS/2 a dalˇs´ı. Jeho dalˇs´ı v´ yhodou je to, ˇze je ˇs´ıˇren pod GNU/GPL licenc´ı, a o jeho kvalit´ach svˇedˇc´ı i to, ˇze samotn´ y kompil´ator je psan´ y v pascalu. Dalˇs´ı nespornou v´ yhodou je, ˇze se snaˇz´ı b´ yt co nejv´ıce podobn´ y s produktem Delphi od Borland/Inprise (http://www.borland.com/us/products/delphi/index.html), takˇze programy napsan´e v Delphi vˇcetnˇe GUI nen´ı vˇetˇsinou probl´em zkompilovat v FPC.
2.6
Qt knihovna pro FPC
Jelikoˇz je jako v´ yvojov´eho n´astroje pouˇzito Free Pascal Compileru, bylo nutn´e pouˇz´ıt hlaviˇckov´e soubory upraven´e pr´avˇe pro pascal. Pouˇzil jsem tedy knihovnu FPC QT binding, kterou je moˇzn´e spolu s uk´azkovou aplikac´ı moˇzn´e st´ahnout na webov´ ych str´ank´ach jej´ıho autora [1] a takt´eˇz je k nalezen´ı na pˇriloˇzen´em CD v souboru /source/demo-0.9.tar.gz. Tato knihovna je st´ale ve v´ yvoji a zdaleka nejsou pˇres n´ı pˇr´ıstupn´e vˇsechny funkce a objekty Qt. Nicm´enˇe vˇetˇsina z´akladn´ıch funkc´ı a objekt˚ u je jiˇz zpracov´ana a ostatn´ı nen´ı probl´em dopsat, pokud by bylo potˇreba.
16
´ C ˇ AST ´ KAPITOLA 2. TEORETICKA
KAPITOLA 3. IMPLEMENTACE
17
3 Implementace Aplikace je navrˇzena v nˇekolika vrstv´ach tak, jak to vyjadˇruje obr´azek 3.1. Nejniˇzˇs´ı vrstvou je vlastn´ı hardware poˇc´ıtaˇce. Ten je platformovˇe z´avisl´ y a proto je nutn´e nad n´ım m´ıt dalˇs´ı vrstvu, kter´a vytvoˇr´ı dostateˇcnˇe abstraktn´ı prostˇred´ı pro aplikaci, aby mohla b´ yt jednoduˇse pˇrenositeln´a. Vrstva nad n´ı je tedy soubor z´akladn´ıch vstupnˇe/v´ ystupn´ı operac´ı, kter´e n´ am nab´ız´ı pˇr´ımo operaˇcn´ı syst´em. Dalˇs´ı vrstvy jsou jiˇz souˇc´ast´ı vlastn´ı aplikace a skl´adaj´ı se z n´asleduj´ıc´ıch ˇc´ast´ı. Nejn´ıˇze je knihovna funkc´ı synaser1 , kter´a se star´a o komunikaci po s´eriov´e lince a pro n´asleduj´ıc´ı vrstvu nab´ız´ı mimojin´e funkci ATcommand, kter´a m´a za u ´kol poslat po lince AT pˇr´ıkaz a vr´atit jeho v´ ysledek. N´asleduje knihovna TMobile, pˇr´ıpadnˇe nˇekter´a z jej´ıch potomk˚ u, kter´a zajiˇsˇtuje nez´avisle na pˇripojen´em mobiln´ım telefonu stejnou sadu obsluˇzn´ ych funkc´ı pro aplikaci. Jako nejvyˇsˇs´ı vrstva je aplikace, kter´a zajiˇsˇtuje komunikaci s uˇzivatelem pˇres uˇzivatelsk´e rozhran´ı.
Obr´azek 3.1: Architektura vrstev aplikace
3.1
Knihovna SynaSer
Tato knihovna slouˇz´ı pro ovl´ad´an´ı s´eriov´e linky poˇc´ıtaˇce z prostˇred´ı naˇseho programu. Kompletn´ı dokumentace je pˇriloˇzena ke knihovnˇe a pˇr´ıpadn´e z´ajemce na ni odkazuji. Zde si uvedeme pouze metody, kter´e vyuˇz´ıv´a aplikace pˇri komunikaci s modemem v mobiln´ım telefonu. Konkr´etnˇe se tedy jedn´a o tyto funkce: TBlockSerial = class(TObject) constructor Create; procedure Connect(comport: string); procedure Config(baud, bits: integer; parity: char; stop: integer; softflow, hardflow: boolean); function ATCommand(value: string): string; destructor Free; end;
constructor Create; Metoda slouˇz´ı k vytvoˇren´ı objektu z dan´e tˇr´ıdy. 1 Serial Port Synchronous Library pro Delphi, Kylix a FPC od Luk´ aˇse Gebaura, http://synapse.ararat.cz/, takt´eˇz k nalezen´ı na pˇriloˇzen´em CD v souboru /source/synaser.zip
18
KAPITOLA 3. IMPLEMENTACE
procedure Connect(comport: string); Tato metoda slouˇz´ı k pˇripojen´ı na poˇzadovan´ y s´eriov´ y port. Parametr comport urˇcuje, kter´ y s´eriov´ y port to bude. Syntaxe z´apisu je moˇzn´a jak dos/windowsov´a (COM1, COM2, ...), tak Linux/Unixov´a (/dev/ttyS0, /dev/ttyS1). procedure Config(baud, bits: integer; parity: char; stop: integer; softflow, hardflow: boolean); Metoda slouˇz´ıc´ı k nastaven´ı vybran´eho s´eriov´eho portu. Parametry jsou pops´any v n´asleduj´ıc´ım pˇrehledu: baud bits parity stop softflow hardflow
rychlost portu v baudech, moˇzn´e hodnoty: 50 - 4000000, bˇeˇznˇe napˇr´ıklad 115200 poˇcet bit˚ u komunikace, bˇeˇznˇe 8 typ parity, v´ yznam: N - None, O - Odd, E - Even, M - Mark, S - Space poˇcet stop bit˚ u, v´ yznam: 0 - 1 stopbit, 1 - 1,5 stopbitu, 2 - 2 stopbity povolen´ı XON/XOFF handshake povolen´ı CTS/RTS handshake
function ATCommand(value: string): string; Tuto metodu uˇz jsem zmiˇ noval v u ´vodu kapitoly. M´a za u ´kol odeslat na s´eriovou linku AT pˇr´ıkaz a poˇckat na jeho v´ ysledek, kter´ y vr´at´ı jako n´avratovou hodnotu. destructor Free; A koneˇcnˇe destrukor, kter´ y m´a za u ´kol zruˇsit vytvoˇren´ y objekt. Pˇr´ıklad jednoduch´eho pouˇzit´ı t´eto tˇr´ıdy: var ser : TBlockSerial; begin // vytvoˇ r´ ıme objekt z tˇ r´ ıdy TBlockSerial ser:=TBlockSerial.Create; try // pˇ ripoj´ ıme se na s´ eriov´ y port COM1 ser.Connect(’COM1’); // nastav´ ıme komunikaˇ cn´ ı parametry na 115200 baud, 8-N-1 a ˇ z´ adn´ y handshake ser.config(115200,8,’N’,0,false,false); // a vyˇ sleme pˇ r´ ıkaz ’AT’ a na konzoli vyp´ ıˇ seme v´ ysledek WriteLn(ser.ATCommand(’AT’)); finally // nakonec objekt nezapomeneme zruˇ sit ser.free; end;
3.2
Tˇ r´ıda TMobile
Jak jiˇz bylo zm´ınˇeno v´ yˇse, tˇr´ıda TMobile slouˇz´ı ke sjednocen´ı pr´ace s mobiln´ımi telefony r˚ uzn´ ych v´ yrobc˚ u. Jej´ım u ´kolem je poskytnout aplikaci rozhran´ı pro komunikaci s mobiln´ım telefonem, aniˇz by aplikaci zaj´ımalo, jak´ y mobiln´ı telefon je k n´ı pˇripojen. Tato tˇr´ıda je naps´ana tak, aby se z n´ı daly vytv´aˇret dˇedˇen´ım dalˇs´ı tˇr´ıdy pro r˚ uzn´e mobiln´ı telefony. Pouˇzit´ı pˇr´ımo tˇr´ıdy TMobile
KAPITOLA 3. IMPLEMENTACE
19
je v aplikaci moˇzn´e, nicm´enˇe slouˇz´ı pouze k odladˇen´ı aplikace. Nicm´enˇe i tak poskytuje tot´eˇz, jako plnohodnotn´a tˇr´ıda opravdu komunikuj´ıc´ı s re´aln´ ym mobiln´ım telefonem. Jej´ı definice vypad´a takto: TMobEntries = class data : array[0..1] of TEntries; procedure loadEntries(fn:string); virtual; procedure saveEntries(fn:string); virtual; end; TMobMessages = class data : array[0..1] of TMessages; end; TMobile = class Entries : TMobEntries; Messages : TMobMessages; constructor Create(fini:TIniFile; fStatusFunc:TStatusFunc; fEntries:TMobEntries; fMessages:TMobMessages); destructor Free; virtual; procedure setStatus(s:String); procedure Connect; function getMobileType:string; virtual; // phonebook entries procedure ChooseENTMemory(memory:integer); virtual; procedure ReadEntries; virtual; procedure WriteEntry(memory:integer; index:integer; number:string; text:string; others:TStringArray); virtual; procedure WriteEntries; virtual; // messages procedure ChooseMSGMemory(memory:integer); virtual; procedure ReadMessages; virtual; procedure SendMessage(number:string; text:string); virtual; end;
Nyn´ı si postupnˇe celou tˇr´ıdu ˇc´ast po ˇc´asti rozebereme. Jako prvn´ı vid´ıme v definici tˇr´ıdy 2 veˇrejn´e promˇenn´e. Promˇenn´a Entries slouˇz´ı k uchov´an´ı telefonn´ıho seznamu, obdobnˇe promˇenn´a Messages slouˇz´ı k uchov´an´ı SMS zpr´av. Kaˇzd´a z tˇechto promˇenn´ ych je odkaz na tˇr´ıdu TMobEntries, resp. TMobMessages. Kaˇzd´a z tˇechto tˇr´ıd obsahuje data, coˇz jsou dvoupoloˇzkov´e pole typu TEntries, resp. TMessages. Toto dvoupoloˇzkov´e pole je zde pouˇzito z toho d˚ uvodu, ˇ na SIM kartˇe a ˇze jak z´aznamy v telefonn´ım seznamu, tak SMS zpr´avy, mohou b´ yt uloˇzeny bud nebo pˇr´ımo v telefonu. K odliˇsen´ı poloˇzek tohoto pole slouˇz´ı konstanty memSIM, resp. memPhone definovan´e v t´eto knihovnˇe. Souˇc´ast´ı tˇr´ıdy TMobEntries jsou i metody na uloˇzen´ı a naˇcten´ı dat ze souboru. N´asleduj´ı metody pouˇz´ıvan´e pro vytvoˇren´ı a zruˇsen´ı objektu. Konstruktor Create m´a jako parametry odkaz na objekt typu TIniFile, coˇz je objekt spravuj´ıc´ı INI soubor s konfigurac´ı2 , jako druh´ y parametr m´a odkaz na funkci, kter´a m´a za u ´kol informovat uˇzivatele o prob´ıhaj´ıc´ıch akc´ıch, napˇr´ıklad pr˚ ubˇeh stahov´an´ı poloˇzek telefonn´ıho seznamu. Pokud je tento parametr nil, 2
viz kapitola 4.4
20
KAPITOLA 3. IMPLEMENTACE
ˇz´ adn´a funkce se nevol´a. Dalˇs´ımy dvˇema parametry jsou odkazy na instance tˇr´ıdy TMobEntries a TMobMessages slouˇz´ıc´ıch k uchov´an´ı dat. Destruktor Free slouˇz´ı k u ´klidu pˇred uvolnˇen´ım objektu. Konkr´etnˇe v t´eto testovac´ı tˇr´ıdˇe nedˇel´a nic, nicm´enˇe je zde pˇripraven na pˇr´ıpadnˇe zdˇedˇen´ı a doplnˇen´ı v potomc´ıch. Metoda setStatus je pouze vnitˇrn´ı metoda tˇr´ıdy, slouˇz´ıc´ı ke spr´avn´emu vol´an´ı funkce na zobrazen´ı pr˚ ubˇehu akce. N´asleduj´ıc´ı metoda Connect slouˇz´ı k aktivaci pˇripojen´ı aplikace k mobiln´ımu telefonu podle parametr˚ u pˇreˇcten´ ych z konfiguraˇcn´ıho INI souboru a ovˇeˇren´ı funkˇcnosti komunikace. Posledn´ı metodou z t´eto ˇc´asti je metoda getMobileType, kter´a slouˇz´ı pro zjiˇstˇen´ı typu pˇripojen´eho mobiln´ıho telefonu. Dalˇs´ı ˇc´ast metod slouˇz´ı k pr´aci s telefonn´ım seznamem. Zde by bylo vhodn´e se nejprve zm´ınit o tˇr´ıdˇe TEntries. TEntry = record number : string; text : string; index : integer; others : TStringArray; end; TEntries = record Entry : array of TEntry; UsedEntries : integer; MaxEntries : integer; MaxNumberLen : integer; MaxTextLen : integer; end; Zde vid´ıme, ˇze TEntries je struktura nˇekolika poloˇzek. Jako prvn´ı poloˇzka je promˇenn´a Entry, kter´a slouˇz´ı k vlastn´ımu uloˇzen´ı poloˇzek telefonn´ıho seznamu. Je typu array of TEntry, coˇz je dynamick´e pole typu TEntry. Jeho velikost se nastavuje pˇri vytv´aˇren´ı objektu TMobile. TEntry je opˇet struktura, kter´a uchov´av´a jiˇz konkr´etn´ı z´aznam telefonn´ıho seznamu. Poloˇzky number, text, index slouˇz´ı k uchov´an´ı telefonn´ıho ˇc´ısla, n´azvu kontaktu a pozice v pamˇeti. Poloˇzka others slouˇz´ı k uloˇzen´ı dalˇs´ıch z´aznam˚ u telefonn´ıho seznamu. D´ale je ve struktuˇre TEntries uloˇzen pouˇzit´ y a maxim´aln´ı poˇcet poloˇzek a maxim´aln´ı d´elky jednotliv´ ych poloˇzek. Co se t´ yk´a v´ıcepoloˇzkov´eho seznamu, jak jiˇz bylo ˇreˇceno dalˇs´ı poloˇzky jsou uloˇzeny v poli others. Poˇcet tˇechto poloˇzek a jejich n´azvy se d´a definovat v konfiguraˇcn´ım souboru. Metody pracuj´ıc´ı s telefonn´ım seznamem m´ame tˇri. Konkr´etnˇe je to metoda ChooseENTMemory, kter´a slouˇz´ı k aktivov´an´ı vybran´eho typu pamˇeti. Z naˇs´ı aplikace j´ı vˇsak nevol´ame; jej´ı vol´an´ı si obstar´avaj´ı samy metody, kter´e potˇrebuj´ı nastavovat aktivn´ı pamˇet telefonn´ıho seznamu. Dalˇs´ı metoda je ReadEntries a slouˇz´ı k naˇcten´ı vˇsech z´aznam˚ u telefonn´ıho seznamu. Po proveden´ı t´eto funkce jsou v promˇenn´e data objektu Entries uloˇzen´e vˇsechny poloˇzky telefonn´ıho seznamu tak, jak je tomu v mobiln´ım telefonu a na SIM kartˇe. Pokud chceme nˇekterou poloˇzku zmˇenit, pˇr´ıpadnˇe smazat, pouˇzijeme metodu WriteEntry. Jej´ımi parametry jsou pamˇeˇt, se kterou budeme pracovat, pozice poloˇzky, telefonn´ı ˇc´ıslo, n´azev poloˇzky a seznam dalˇs´ıch poloˇzek jako pole. V pˇr´ıpadˇe, ˇze jako n´azev poloˇzky uvedeme pr´azdn´ y ˇretˇezec, provede se smaz´an´ı dan´e poloˇzky. Veˇsker´e vol´an´ı t´eto metody maj´ı vliv jak na st´ahnut´ y seznam kontakt˚ u, tak na skuteˇcn´ y telefonn´ı seznam v pˇripojen´em mobiln´ım telefonu. Posledn´ı ˇc´ast metod slouˇz´ı pro pr´aci s SMS zpr´avami. Opˇet se nejprve zm´ın´ım o typu TMessages. TMessage = record index : integer; // ˇ c´ ıslo pozice zpr´ avy v pamˇ eti
KAPITOLA 3. IMPLEMENTACE status : string; // number : string; // number_text : string; // timestamp : string; // smsc : string; // text : string; // end; TMessages = record Msg : array of TMessage; UsedMessages : integer; MaxMessages : integer; end;
21 status zpr´ avy telefonn´ ı ˇ c´ ıslo textov´ a reprezentace ˇ c´ ısla casov´ ˇ e raz´ ıtko pr˚ uchodu SMS centrem c´ ˇ ıslo SMS centra text zpr´ avy
Typ TMessages obsahuje krom seznamu SMS zpr´av, opˇet dynamicky vytv´aˇren´eho pˇri vytv´aˇren´ı objektu, tak´e poloˇzky urˇcuj´ıc´ı poˇcet pouˇzit´ ych a maxim´aln´ı poˇcet moˇzn´ ych zpr´av v pamˇeti. Kaˇzd´a SMS zpr´ava je uloˇzena v promˇenn´e typu TMessage, coˇz je vlastnˇe z´aznam nˇekolika poloˇzek. V´ yznam jednotliv´ ych poloˇzek je shodn´ y z poloˇzkami popsan´ ymi v kapitole 2.3, ˇc´ ast Pˇr´ıkaz AT+CMGR. Metody pro pr´aci s SMS zpr´avami m´ame opˇet tˇri, pˇriˇcemˇz jedna z nich je pouze pomocn´ a a dalˇs´ı dvˇe slouˇz´ı pro vol´an´ı z aplikace. Prvn´ı metodou je tedy ChooseMSGMemory, slouˇz´ıc´ı pro aktivov´an´ı vybran´eho typu pamˇeti. Dalˇs´ı metoda ReadMessages slouˇz´ı k naˇcten´ı vˇsech SMS zpr´av. A koneˇcnˇe posledn´ı metoda SendMessage slouˇz´ı k odesl´an´ı SMS zpr´avy text na telefonn´ı ˇc´ıslo number. Tato odeslan´a zpr´ava nen´ı vˇsak nikde uloˇzena. Pˇr´ıklad pouˇzit´ı tˇr´ıdy TMobile: ini := TIniFile.Create(’config’); Entries := TMobEntries.Create; Messages := TMobMessges.Create; try // provedeme pˇ ripojen´ ı k mobiln´ ımu telefonu, naˇ cten´ ı konfigurace ... writeLn(#13#10’Connecting to Phone ...’); mobil := TMobile.Create(ini,nil,Entries,Messages); mobil.ReadConfig; // ... a vyps´ an´ ı typu pˇ ripojen´ eho mobiln´ ıho telefonu writeLn(’ Connected to ’,mobil.getMobileType()); // d´ ale zobraz´ ıme informace o poloˇ zk´ ach telefonn´ ıho seznamu a SMS zpr´ av´ ach writeLn(#13#10’Mobile PhoneBook info ...’); writeLn(’ UsedEntries : ’,Entries.data[memPhone].UsedEntries); writeLn(’ MaxEntries : ’,Entries.data[memPhone].MaxEntries); writeLn(’ MaxNumberLen : ’,Entries.data[memPhone].MaxNumberLen); writeLn(’ MaxTextLen : ’,Entries.data[memPhone].MaxTextLen); writeLn(’ UsedMessages : ’,Messages.data[memPhone].UsedMessages); writeLn(’ MaxMessages : ’,Messages.data[memPhone].MaxMessages); writeLn(#13#10’Mobile SIM info ...’); writeLn(’ UsedEntries : ’,Entries.data[memSIM].UsedEntries); writeLn(’ MaxEntries : ’,Entries.data[memSIM].MaxEntries); writeLn(’ MaxNumberLen : ’,Entries.data[memSIM].MaxNumberLen); writeLn(’ MaxTextLen : ’,Entries.data[memSIM].MaxTextLen); writeLn(’ UsedMessages : ’,Messages.data[memSIM].UsedMessages);
22
KAPITOLA 3. IMPLEMENTACE writeLn(’ MaxMessages writeLn();
: ’,Messages.data[memSIM].MaxMessages);
// provedeme staˇ zen´ ı kontakt˚ u writeLn(#13#10’Downloading Phone & SIM contacts ...’); mobil.ReadEntries(); // a vyp´ ıˇ seme je writeLn(#13#10’Printing all contacts ...’); printContacts(); // t´ eˇ z naˇ cteme SMS zpr´ avy jak z telefonu, tak ze SIM karty writeLn(#13#10’Downloading Phone & SIM messages ...’); mobil.ReadMessages(); // a opˇ et je vyp´ ıˇ seme writeLn(#13#10’Printing all messages ...’); printMessages(); // nakonec pouˇ zit´ e objekty uvoln´ ıme finally mobil.Free; ini.Free; Entries.Free; Messages.Free; end;
V´ ysledkem tohoto programu bude v´ ypis podobn´ y tomuto: Connecting to Phone ... Connected to SAMSUNG SGH-S500 Mobile PhoneBook info ... UsedEntries : 2 MaxEntries : 500 MaxNumberLen : 40 MaxTextLen : 20 UsedMessages : 1 MaxMessages : 200 Mobile SIM info ... UsedEntries : 2 MaxEntries : 220 MaxNumberLen : 40 MaxTextLen : 14 UsedMessages : 1 MaxMessages : 25 Downloading Phone & SIM contacts ... Printing all contacts ... ME1: Martin Pesava +420777000000,+420777111222,+420777333444,+420777555666, +420777888999,[email protected] ME2: Martin Pesava +420777000000,+420777111222,+420777333444,+420777555666, +420777888999,[email protected] SM1: PospisilJan +420482318318
KAPITOLA 3. IMPLEMENTACE
23
SM2: NovakPetr +420424123456 Downloading Phone & SIM messages ... Printing all messages ... SM1: REC READ, PospisilJan(+420424123456) [+420608005681|06/01/07,11:58:51+00] zkouska spojeni ME1: REC UNREAD, NovakPetr(+420424123456) [+420608005681|06/01/07,11:58:51+00] zkouska spojeni 2
3.3
Aplikace
Vlastn´ı rozhran´ı aplikace se skl´ad´a z nˇekolika tˇr´ıd, kter´e mezi sebou vz´ajemnˇe komunikuj´ı. Hlavn´ı ˇc´ast aplikace je obsaˇzena v tˇr´ıdˇe TForm v souboru SMSKlient.pas. Krom jin´ ych obsahuje odkazy na objekty TMobile (tˇr´ıda pro komunikaci s mobiln´ım telefonem) a ScrollView (tˇr´ıda zobrazuj´ıc´ı seznamy v hlavn´ı ˇc´asti okna aplikace). Dalˇs´ı dvˇe tˇr´ıdy jsou urˇcen´e pro pr´ aci s telefonn´ım seznamem. Konkr´etnˇe se jedn´a o tˇr´ıdu PhBookList (zobrazuj´ıc´ı telefonn´ı seznam) a PhBookEdit (formul´aˇr pro editaci zvolen´eho kontaktu). Posledn´ı dvˇe tˇr´ıdy slouˇz´ı k pr´ aci s SMS zpr´avami; tˇr´ıda SMSList (zobrazuj´ıc´ı seznam SMS zpr´av) a tˇr´ıda SMSSend (formul´aˇr pro vytvoˇren´ı a odesl´an´ı nov´e textov´e zpr´avy). Vz´ajemnou interakci tˇr´ıd a datov´e cesty zn´azorˇ nuje obr´azek 3.2.
Obr´azek 3.2: Vz´ajemn´e vol´an´ı a v´ ymˇena dat mezi jednotliv´ ymi objekty
V dalˇs´ıch kapitol´ach si postupnˇe probereme funkˇcnost a rozhran´ı jednotliv´ ych tˇr´ıd. 3.3.1
PhBookList
Tato tˇr´ıda m´a za u ´kol zobrazovat seznam uloˇzen´ ych telefonn´ıch ˇc´ısel. Po kliknut´ı na konkr´etn´ı z´aznam ze seznamu vol´a metodu Edit objektu PhBookEdit. TPhBookList = class(TQGraphicWidget) Entries : TMobEntries; constructor Create(IParent:IQWidget; APhBookEdit:TPhBookEdit; fn:string);
24
KAPITOLA 3. IMPLEMENTACE procedure Paint(R:TRect); override; procedure PaintContact(var row:integer; typ:string; ent:TEntry; Canvas:TCanvas); procedure assignMobile(parMobil:TMobile); procedure procedure procedure procedure end;
MousePressEvent(E:TQMouseEvent); override; findContact(which:integer; var memory:integer; var idx:integer); show(sv:TQScrollView); hide(sv:TQScrollView);
Promˇenn´a Entries obsahuje data telefonn´ıho seznamu. Je vytv´aˇren´a automaticky pˇri vytvoˇren´ı objektu. Konstruktor Create slouˇz´ı k vytvoˇren´ı objektu. Jeho parametry jsou odkaz na objekt PhBookEdit (kv˚ uli v´ yˇse zm´ınˇen´emu vol´an´ı metody Edit) a ˇretˇezec s n´azvem souboru, ze kter´eho se naˇcte offline verze telefonn´ıho seznamu. Metody Paint a PaintContact slouˇz´ı k vykreslen´ı kontakt˚ u na canvas. Metoda assignMobile se pouˇz´ıv´a k pˇriˇrazen´ı odkazu na objekt TMobile. To je nutn´e prov´est aˇz dodateˇcnˇe, protoˇze pˇri vytv´aˇren´ı a pr´aci s touto tˇr´ıdou nemus´ı objekt TMobile v˚ ubec existovat (stav, kdy je aplikace odpojen´a od mobiln´ıho telefonu). Dalˇs´ı dvˇe metody, tj. MousePressEvent a findContact se pouˇzij´ı pˇri kliknut´ı na konkr´etn´ı kontakt k vyhled´an´ı kontaktu v jejich seznamu a spr´avn´emu pˇred´an´ı metodˇe Edit. Posledn´ı dvˇe metody show a hide slouˇz´ı k zobrazen´ı, resp. schov´an´ı seznamu v r´amci objektu ScrollView. 3.3.2
PhBookEdit
Tato tˇr´ıda slouˇz´ı k editaci a prohl´ıˇzen´ı konkr´etn´ı poloˇzky telefonn´ıho seznamu. Pˇri vol´an´ı metody Edit s parametrem memory=99 um´ı tato tˇr´ıda nov´ y kontakt vytvoˇrit. D´ale pˇri zobrazen´ı nebo editaci kontaktu dok´aˇze volat tˇr´ıdu SMSSend s pˇredvyplnˇen´ ym telefonn´ım ˇc´ıslem z dan´e pozice telefonn´ıho seznamu. TPhBookEdit = class(TQWidget) constructor Create(fDoUpdate:TUpdateProc); procedure Edit(fEntries:TMobEntries; fmobil:TMobile; fmemory:integer; findex:integer); end; Tato zd´anlivˇe jednoduch´a tˇr´ıda m´a pouze dvˇe d˚ uleˇzit´e metody. Prvn´ı metodou je konstruktor Create, kter´ y slouˇz´ı k jej´ımu vytvoˇren´ı. Jeho jedin´ ym parametrem je odkaz na funkci, kter´a provede update telefonn´ıho seznamu ve ScrollView po ukonˇcen´ı editace. Druh´a metoda Edit slouˇz´ı ke spuˇstˇen´ı vlastn´ı editace z´aznamu. Jako prvn´ı parametr se pˇred´av´am odkaz na objekt s daty telefonn´ıho seznamu, dalˇs´ım je odkaz na objekt TMobile. Posledn´ı dva parametry urˇcuj´ı pamˇeˇt telefonu a index poloˇzky v seznamu, kter´a se m´a editovat. Pr´avˇe tyto parametry m´a za u ´kol vyhledat metoda findContact tˇr´ıdy PhBookList pˇri kliknut´ı na urˇcit´e m´ısto Canvasu. 3.3.3
SMSSend
Posledn´ı tˇr´ıda slouˇz´ı k obsluze dialogu na odes´ıl´an´ı kr´atk´ ych textov´ ych zpr´av. TSMSSend = class(TQWidget) constructor Create(fDoUpdate:TUpdateProc; fStatusFunc:TStatusFunc); procedure SendSMS(fmobil:TMobile; fnumber:string; fsmslist:TSMSList); procedure SendUnsentMsgs(fmobil:TMobile; fsmslist:TSMSList); end;
KAPITOLA 3. IMPLEMENTACE
25
Konstruktor Create opˇet slouˇz´ı k vytvoˇren´ı instance. Jeho dva parametry jsou odkazy na funkce, kter´e zajiˇsˇtuj´ı znovunaˇcten´ı seznamu zpr´av a aktualizaci stavov´e ˇr´adky. Metoda SendSMS se pouˇz´ıv´a k vyvol´an´ı dialogu pro odesl´an´ı SMS zpr´avy. Jej´ı dva parametry odkazuj´ı na instanci tˇr´ıdy TMobile a SMSListS (obsahuj´ıc´ı odeslan´e zpr´avy). Posledn´ım parametrem je pˇredvyplnˇen´e telefonn´ı ˇc´ıslo. Metoda SendUnsentMsgs slouˇz´ı k odesl´an´ı dosud neodeslan´ ych SMS zpr´av. Proch´azi seznam SMSList a vˇsechny zpr´avy, kter´e maj´ı nastaven status na STO UNSENT odeˇsle na mobiln´ı telefon. 3.3.4
SMSList
Tato tˇr´ıda m´a za u ´kol zobrazovat seznam sms zpr´av. V aplikaci jsou pouˇzity celkem 3 instance t´eto tˇr´ıdy, konkr´etnˇe SMSListO pro outbox, SMSListI pro inbox a SMSListS pro zpr´avy odeslan´e z aplikace. TSMSList = class(TQGraphicWidget) Messages : array of TMessage; constructor Create(IParent:IQWidget); procedure Paint(Rect:TRect); override; procedure MousePressEvent(E:TQMouseEvent); override; function addMessage(msg:TMessage):boolean; virtual; procedure saveMessages(fn:string); virtual; procedure loadMessages(fn:string); virtual; procedure show(sv:TQScrollView); procedure hide(sv:TQScrollView); end;
Promˇenn´a Messages slouˇz´ı k uloˇzen´ı vlastn´ıch SMS zpr´av. O jej´ı naplnˇen´ı se staraj´ı metoda loadMessages, kter´a j´ı napln´ı daty ze souboru, a metoda addMessage, kter´a pˇrid´a zpr´avu z parametru do seznamu zpr´av. Pˇri tomto pˇrid´av´an´ı se kontroluje, jestli uˇz stejn´a zpr´ava nen´ı v seznamu. Pokud tomu tak je, zpr´ava se samozˇrejmˇe nepˇrid´a a metoda vrac´ı hodnotu false. Metoda Paint slouˇz´ı opˇet k vykreslen´ı seznamu na Canvas, obsluha kliknut´ı na konkr´etn´ı zpr´avu pak zajiˇsˇtuje metoda MousePressEvent. Metoda saveMessages pak slouˇz´ı k uloˇzen´ı zpr´av do souboru. Koneˇcnˇe metody show a hide slouˇz´ı, tak jako v tˇr´ıdˇe PhBookList, k zobrazen´ı, resp. schov´an´ı seznamu v r´amci objektu ScrollView. 3.3.5
SMSKlient
Tato tˇr´ıda zastˇreˇsuje vˇsechny instance objekt˚ u jednotliv´ ych tˇr´ıd, star´a se o zobrazen´ı a funkˇcnost hlavn´ı ˇc´asti uˇzivatelsk´eho rozhran´ı, tzn. tlaˇc´ıtek pro volbu funkc´ı a pˇrep´ın´an´ı zobrazen´ı seznam˚ u.
26
KAPITOLA 3. IMPLEMENTACE
KAPITOLA 4. DOKUMENTACE PROJEKTU
27
4 Dokumentace projektu 4.1
Popis rozhran´ı aplikace
Pˇri spouˇstˇen´ı aplikace m˚ uˇzeme z pˇr´ıkazov´eho ˇr´adku specifikovat, kter´ y konfiguraˇcn´ı soubor se m´a pouˇz´ıt. Pokud tento parametr neuvedeme, pouˇzije se standardnˇe soubor ./config. D´ıky tomu m˚ uˇzeme m´ıt vytvoˇren´e konfigurace pro v´ıce mobiln´ıch telefon˚ u a jednoduˇse mezi nimi pˇrep´ınat. To, jak m´a konfiguraˇcn´ı soubor vypadat a co vˇsechno se v nˇem d´a konfigurovat si podrobnˇe pop´ıˇseme v kapitole 4.4. Po spuˇstˇen´ı se objev´ı uˇzivatelsk´e rozhran´ı tak, jak jej vid´ıme na obr´azku 4.1. Rozhran´ı aplikace je naprogramov´ano tak, aby se snadno pˇrizp˚ usobilo r˚ uzn´ ym rozliˇsen´ım. Na obr´azku konkr´etnˇe vid´ıme GUI pro rozliˇsen´ı 240x320 a 640x480. Skl´ad´a se ze tˇr´ı ˇc´ast´ı. Prvn´ı ˇc´ast nach´azej´ıc´ı se v horn´ı ˇc´asti obrazovky (na obr´azku oznaˇcen´a jako 1) , jsou tlaˇc´ıtka pro ovl´ad´an´ı aplikace. V prostˇredn´ı, nejvˇetˇs´ı, ˇc´asti (oznaˇcen´a jako 2) se nach´ az´ı pracovn´ı ˇc´ast, kde se zobrazuje telefonn´ı seznam nebo seznam kr´atk´ ych textov´ ych zpr´av. Ve spodn´ı ˇc´asti obrazovky (oznaˇcen´a jako 3) se nal´ez´a stavov´ y ˇr´adek, kter´ y informuje uˇzivatele o prob´ıhaj´ıc´ıch operac´ıch. Aplikace m´a dva z´akladn´ı stavy; pˇripojen´ y a nepˇripojen´ y k mobiln´ımu telefonu. Ve stavu, kdy nen´ı mobiln´ı telefon pˇripojen k aplikaci je moˇzn´e prohl´ıˇzet offline verzi telefonn´ıho seznamu a SMS zpr´av. V tomto stavu je t´eˇz moˇzn´e ps´at SMS zpr´avy. Ty se vˇsak pouze uloˇz´ı do seznamu a jejich odesl´an´ı probˇehne aˇz v momentˇe pˇripojen´ı k mobiln´ımu telefonu. Ve stavu, kdy je mobiln´ı telefon pˇripojen´ y, m˚ uˇzeme kromˇe prohl´ıˇzen´ı telefonn´ıho seznamu a SMS zpr´av, tak´e telefonn´ı seznam editovat. Takt´eˇz je moˇzn´e st´ahnout z telefonu kompletn´ı telefonn´ı seznam nebo nov´e SMS zpr´avy. D´ale je moˇzn´e telefonn´ı seznam nahr´at zp´atky do mobiln´ıho telefonu. Tato funkce se hod´ı v pˇr´ıpadˇe, kdy potˇrebujeme pˇren´est telefonn´ı seznam z jednoho telefonu na jin´ y. Podrobn´ y popis vˇsech funkc´ı programu si uvedeme v kapitole 4.2.
Obr´azek 4.1: Rozhran´ı aplikace v rozliˇsen´ı 240x320 a 640x480
4.2
N´ avod k pouˇ zit´ı
Po spuˇstˇen´ı aplikace se rovnou zobraz´ı telefonn´ı seznam. Do tohoto stavu se m˚ uˇzeme takt´eˇz dostat kliknut´ım na tlaˇc´ıtko PhoneBook. Tlaˇc´ıtka pro vytvoˇren´ı nov´eho z´aznamu a staˇzen´ı a nahr´an´ı telefonn´ıho seznamu z resp. do telefonu jsou nyn´ı nedostupn´a. Kliknut´ım na konkr´etn´ı z´aznam se zobraz´ı okno s detaily zvolen´eho kontaktu, viz obr´azek 4.2. Pokud v zobrazen´ı detailu kontaktu klikneme na tlaˇc´ıtko SMS zobraz´ı se n´am dialog pro psan´ı zpr´avy s jiˇz pˇredvyplnˇen´ ym telefonn´ım ˇc´ıslem. Kliknut´ım na tlaˇc´ıtko SMS se dostaneme do stavu, kdy se pracuje s kr´atk´ ymi textov´ ymi
28
KAPITOLA 4. DOKUMENTACE PROJEKTU
Obr´azek 4.2: Uˇzivatelsk´e rozhran´ı - telefonn´ı seznam a zobrazen´ı podrobnosti kontaktu
zpr´avami. D´ale pak kliknut´ım na jedno z tlaˇc´ıtek Inbox, Outbox, Sent se dostaneme do seznamu poˇzadovan´ ych SMS zpr´av. Inbox a Outbox jsou pˇrijat´e a odeslan´e zpr´avy z mobiln´ıho telefonu. Sent je seznam zpr´av odeslan´ ych z aplikace. Kliknut´ım na konkr´etn´ı SMS zpr´avu si m˚ uˇzeme nechat zobrazit okno s detailn´ımi informacemi o n´ı. Dalˇs´ı tlaˇc´ıtko je Send SMS, kter´e slouˇz´ı k odesl´an´ı SMS zpr´avy. Po kliknut´ı na nˇej se zobraz´ı formul´aˇr pro zad´an´ı telefonn´ıho ˇc´ısla a textu SMS zpr´avy. Kliknut´ım na Send se vloˇzen´a zpr´ava uloˇz´ı do seznamu neodeslan´ ych zpr´av. Konkr´etnˇe ji najdeme v seznamu Sent se stavem STO UNSENT. Dalˇs´ı dvˇe tlaˇc´ıtka, Dn a Up nejsou v tomto stavu aktivn´ı.
Obr´azek 4.3: Uˇzivatelsk´e rozhran´ı - seznam SMS zpr´av, psan´ı nov´e zpr´avy, zobrazen´ı detailu SMS Dalˇs´ım krokem je propojen´ı aplikace s telefonem. Po kliknut´ı na tlaˇc´ıtko Connect dojde k pˇripojen´ı a staˇzen´ı z´akladn´ıch informac´ı z mobiln´ıho telefonu. Ve stavov´em ˇr´adku se objev´ı zpr´ava, ˇze je aplikace pˇripojena k mobiln´ımu telefonu. Takt´eˇz pokud se v seznamu Sent nach´az´ı nˇejak´a neodeslan´a zpr´ava, dojde v tomto okamˇziku k jej´ımu odesl´an´ı. Odes´ıl´an´ı t´eto nebo tˇechto SMS je indikov´ano ve stavov´em ˇr´adku po celou dobu odes´ıl´an´ı. Nyn´ı je jiˇz moˇzn´e v telefonn´ım seznamu vybran´ y kontakt editovat nebo smazat, ale tak´e pomoc´ı tlaˇc´ıtka New PhoneBook Entry vytvoˇrit nov´ y. D´ale je moˇzn´e pomoc´ı tlaˇc´ıtek Dn a Up st´ahnout, resp. nahr´at telefonn´ı seznam z/do mobiln´ıho telefonu. Pˇri vytv´aˇren´ı nov´e poloˇzky telefonn´ıho seznamu je moˇzn´e si zvolit, jestli bude kontakt uloˇzen na SIM kartˇe nebo v pamˇeti telefonu. V ˇ jednu nebo v´ıce poloˇzek. Pokud z´ avislosti na vybran´e pamˇeti je moˇzn´e ke kontaktu uloˇzit bud klikneme na tlaˇc´ıtko Delete pˇri editaci kontaktu, dojde k jeho smaz´an´ı. Vˇsechny tyto operace prob´ıhaj´ı souˇcasnˇe v mobiln´ım telefonu i v offline telefonn´ım seznamu uloˇzen´em v aplikaci.
KAPITOLA 4. DOKUMENTACE PROJEKTU
29
Obr´azek 4.4: Uˇzivatelsk´e rozhran´ı - editace telefonn´ıho seznamu, vytv´aˇren´ı nov´e poloˇzky telefonn´ıho seznamu
S kr´atk´ ymi textov´ ymi zpr´avami se pracuje v pˇripojen´em stavu obdobnˇe jako v odpojen´em. Jedin´e dva rozd´ıly jsou v tom, ˇze pˇri vytv´aˇren´ı nov´e zpr´avy se zpr´ava odeˇsle ihned po kliknut´ı na tlaˇc´ıtko Send. Druh´ ym rozd´ılem je moˇznost staˇzen´ı nov´ ych zpr´av z mobiln´ıho telefonu pomoc´ı tlaˇc´ıtka Dn. Po kliknut´ı dojde k porovn´an´ı zpr´av v telefonu se zpr´avami, kter´e jsou uloˇzen´e v aplikaci a vˇsechny nov´e se uloˇz´ı do aplikace a uˇzivatel je informov´an o poˇctu nov´ ych zpr´av. Posledn´ım dosud nezm´ınˇen´ ym tlaˇc´ıtkem, je Quit. Kliknut´ım na toto tlaˇc´ıtko dojde k ukonˇcen´ı aplikace.
4.3
Popis datov´ ych soubor˚ u profilu
Kaˇzd´ y profil obsahuje 4 soubory. Jeden, konkr´etnˇe soubor phonebook, slouˇz´ı k uloˇzen´ı telefonn´ıho seznamu a dalˇs´ı 3, inbox, outbox a sent, k uloˇzen´ı archivu kr´atk´ ych textov´ ych zpr´ av. Form´at tˇechto soubor˚ u je ˇcistˇe textov´ y. Obsahuj´ı vˇsechny z´aznamy oddˇelen´e znakem konce ˇr´adku. To znamen´a, ˇze kaˇzd´ y z´aznam je cel´ y na jednom ˇr´adku. V r´amci jednoho ˇr´adku jsou jednotliv´e poloˇzky oddˇeleny znakem ’;’.
4.4
Popis konfiguraˇ cn´ıho souboru
Konfiguraˇcn´ı soubor je klasick´ y textov´ y soubor. Strukturou pˇripom´ın´a bˇeˇzn´e soubory pro konfiguraci r˚ uzn´ ych Linux/Unixov´ ych aplikac´ı a nebo tak´e INI soubory v operaˇcn´ıch syst´emech Microsoft Windows. Soubor je rozdˇelen na nˇekolik ˇc´ast´ı. profile V t´eto ˇc´asti se definuje n´azev profilu (parametr name), kter´ y se pouˇzije. Jedn´a se konkr´etnˇe o n´azev adres´aˇre, ve kter´em jsou uloˇzeny SMS zpr´avy a telefonn´ı seznam. D´ale se parametrem phone definuje, kter´a knihovna se pouˇzije pro komunikaci. serial Tato ˇc´ast je urˇcena pro podrobnou konfiguraci s´eriov´eho portu. Popis jednotliv´ ych parametr˚ u je uveden v tabulce 4.1.
30
KAPITOLA 4. DOKUMENTACE PROJEKTU
port speed databits parity stopbits softflow hardflow wait
specifikuje s´eriov´ y port pouˇzit´ y ke komunikaci, moˇzn´ y zp˚ usob z´apisu: COM1 - COMn, /dev/ttyS0 - ttySn rychlost komunikace v baudech poˇcet datov´ ych bit˚ u komunikace druh parity, v´ yznam: N - None, O - Odd, E - Even, M - Mark, S - Space poˇcet stop bit˚ u, v´ yznam: 0 - 1 stopbit, 1 - 1,5 stopbitu, 2 - 2 stopbity povolen´ı XON/XOFF handshake povolen´ı CTS/RTS handshake doba v ms, urˇcuje jak dlouho se bude ˇcekat na inicializaci modemu Tabulka 4.1: Seznam parametr˚ u konfigurace s´eriov´eho portu
phonebook V t´eto ˇc´asti jsou specifikov´any n´azvy jednotliv´ ych poloˇzek telefonn´ıho seznamu. Poloˇzka default_name definuje n´azev prvn´ı poloˇzky v´ıcepoloˇzkov´eho telefonn´ıho seznamu a tak´e n´azev poloˇzky seznamu v mobiln´ım telefonu. Parametr phone_others urˇcuje, kolik dalˇs´ıch poloˇzek m´a v´ıcepoloˇzkov´ y seznam a jednotliv´e parametry name_# pak definuj´ı jejich n´azvy. Pˇ r´ıklad konfiguraˇ cn´ıho souboru (pro mobiln´ı telefon Samsung) [profile] name = default phone = samsung [serial] port speed databits parity stopbits swflow hwflow wait
= = = = = = = =
COM1 115200 8 N 0 0 0 400
[phonebook] default_name = mobil phone_others = 5 name_1 = home name_2 = office name_3 = fax name_4 = other name_5 = email
4.5
Popis tvorby knihovny pro nov´ y mobiln´ı telefon
Tˇr´ıda pro komunikaci s nov´ ym mobiln´ım telefonem by mˇela implementovat tyto zdˇedˇen´e metody tˇr´ıdy TMobile: TNewMobile = class(TMobile)
KAPITOLA 4. DOKUMENTACE PROJEKTU
31
constructor Create(fini:TIniFile; fStatusFunc:TStatusFunc; fEntries:TMobEntries; fMessages:TMobMessages); destructor Free; override; function getMobileType:string; override; procedure ReadEntries; override; procedure WriteEntry(memory:integer; index:integer; number:string; text:string; others:TStringArray); override; procedure ReadMessages; override; procedure SendMessage(number:string; text:string); override; end;
Jejich v´ yznam a pouˇzit´ı je specifikov´ano v kapitole 3.2. Pˇri implementaci vlastn´ı tˇr´ıdy je dobr´e se inspirovat tˇr´ıdou TSamsungMobile definovan´e v souboru mobile_samsung.pas. Pro jednoduˇsˇs´ı implementaci nov´ ych tˇr´ıd je jiˇz v knihovnˇe mobile.pas vytvoˇreno nˇekolik pomocn´ ych funkc´ı a metod. Konkr´etnˇe se jedn´a o funkci parse, urˇcenou pro jednoduch´e rozdˇelen´ı ˇretˇezce na jednotliv´e ˇc´asti podle zadan´e masky. Pouˇzit´ı t´eto funkce je urˇceno pˇredevˇs´ım pro parsov´an´ı dat vr´acen´ ych z mobiln´ıho telefonu. Pˇr´ıklad pouˇzit´ı: procedure parse(s:string; separators:string; var res:TStringArray); begin ... end; var arr : TStringArray; begin parse(’text 1,text 2;poznamka:"text poznamky"’,’,;:""’,arr); for i:=0 to Length(arr) do WriteLn(i,’: ’,arr[i]); end. ; v´ ysledek: 0: text 1 1: text 2 2: poznamka 3: 4: text poznamky
D´ale je zde jiˇz implementov´ana metoda TMobile.Connect, kter´a slouˇz´ı k inicializaci komunikace podle parametr˚ u z konfiguraˇcn´ıho souboru. Posledn´ı pomocnou metodou je metoda TMobile.setStatus, kter´a slouˇz´ı k zobrazen´ı stavov´e informace bˇehem nˇekter´ ych operac´ı. Takˇze pokud to shrneme, pro vytvoˇren´ı nov´e tˇr´ıdy je nutn´e implementovat nov´e metody pro vytvoˇren´ı a uvolnˇen´ı objektu Create a Free, d´ale metodu getMobileType, kter´a vrac´ı oznaˇcen´ı mobiln´ıho telefonu, a n´aslednˇe metody pracuj´ıc´ı s telefonn´ım seznamem ReadEntries (naˇcten´ı cel´eho seznamu) a WriteEntry (uloˇzen´ı jedn´e poloˇzky seznamu) a metody pracuj´ıc´ı s kr´atk´ ymi textov´ ymi zpr´avami ReadMessages (naˇcten´ı vˇsech SMS zpr´av) a SendMessage (posl´an´ı SMS zpr´avy na dan´e ˇc´ıslo). Celkov´a doba na vytvoˇren´ı nov´e knihovny se m˚ uˇze pohybovat v ˇr´adu nˇekolika hodin, ale tˇreba i v ˇr´adu nˇekolika dn´ı. Z´aleˇz´ı pˇredevˇs´ım na tom, jak dobˇre je zdokumentov´ana sada pˇr´ıkaz˚ u pro poˇzadovan´ y mobiln´ı telefon. Nˇekdy je dokonce nutn´e pouˇz´ıt reverse engineering ke zjiˇstˇen´ı toho, ˇ asteˇcnˇe byla tato technika pouˇzita i pˇri tvorbˇe knihovny pro telefony jak to vlastnˇe funguje. C´ Samsung. Konkr´etnˇe jsem pouˇzil program pro spr´avu mobiln´ıch telefon˚ u znaˇcky Samsung
32
KAPITOLA 4. DOKUMENTACE PROJEKTU
Easy Studio a program pro odchyt´av´an´ı s´eriov´e komunikace PortMon1 . LOG soubor, kter´ y vytvoˇril tento program jsem n´aslednˇe zpracoval pomoc´ı skriptu2 v PHP, kter´ y dok´azal pˇrehlednˇe zobrazit pr˚ ubˇeh komunikace uloˇzen´ y v LOGu.
1 2
http://www.sysinternals.com/Utilities/Portmon.html uloˇzen na CD v souboru /install/portmon/readlog.php
´ ER ˇ KAPITOLA 5. ZAV
33
5 Z´ avˇ er Podaˇrilo se implementovat pomˇernˇe uˇzivatelsky pˇr´ıvˇetiv´ y SMS klient, kter´ y kromˇe pr´ace s kr´atk´ ymi textov´ ymi zpr´avami nab´ız´ı i spr´avu kontakt˚ u v mobiln´ım telefonu. Program m´ a veˇsker´e vlastnosti, kter´e byly poˇzadov´any v zad´an´ı pr´ace. V tomto stadiu je implementov´ ana pouze podpora pro mobiln´ı telefony Samsung, nicm´enˇe program je pˇripraven pro jednoduch´e pˇrid´an´ı dalˇs´ıch knihoven podporuj´ıc´ıch jin´e mobiln´ı telefony. Takt´eˇz byl u ´spˇeˇsnˇe otestov´an na platformˇe i386 i ARM. Dalˇs´ımi kroky pˇri zlepˇsov´an´ı aplikace by mohlo b´ yt vylepˇsen´ı vzhledu aplikace, pˇrid´an´ı ikon, pˇr´ıpadnˇe i kontextov´e n´apovˇedy. Dalˇs´ım z vylepˇsen´ı by mohla b´ yt spr´ava profil˚ u a editor konfigurace zabudovan´a pˇr´ımo do aplikace. Nyn´ı je pˇri vytv´aˇren´ı nov´e konfigurace nutn´e ruˇcnˇe vytvoˇrit adres´aˇr s pr´azdn´ ymi datov´ ymi soubory a konfiguraˇcn´ı soubor. Bˇehem v´ yvoje se objevilo i nˇekolik probl´emu, vˇetˇsinu se vˇsak podaˇrilo zd´arnˇe vyˇreˇsit. Jedin´ ym probl´emem, kter´ y pˇretrval i do fin´aln´ı verze je nepˇr´ıliˇs dobˇre navrˇzen´a funkce ATCommand v pˇrevzat´e knihovnˇe SynaSer. Tato funkce oˇcek´av´a, ˇze se kaˇzd´ y pˇr´ıkaz provede spr´avnˇe a data, kter´a se vrac´ı budou zakonˇcena znaky OK. Nicm´enˇe v programu je potˇreba pos´ılat i pˇr´ıkazy, kter´e skonˇc´ı chybou. Tento stav bohuˇzel nen´ı ve funkci podporov´an a ˇcek´a se na TimeOut, kter´ y je z d˚ uvodu pomal´e odezvy modemu v mobiln´ım telefonu pomˇernˇe vysok´ y. Proto v nˇekter´ ych pˇr´ıpadech je pr´ace s mobiln´ım telefonem ponˇekud pomal´a. Pˇresto vˇsechno vˇeˇr´ım, ˇze tato aplikace najde ˇsirok´e uplatnˇen´ı pro uˇzivatele pˇredevˇs´ım pˇrenosn´ ych zaˇr´ızen´ı, kteˇr´ı potˇrebuj´ı spravovat telefonn´ı seznam a pos´ılat a archivovat SMS zpr´avy ze sv´eho mobiln´ıho telefonu.
34
´ ER ˇ KAPITOLA 5. ZAV
KAPITOLA 6. SEZNAM LITERATURY
6 Seznam literatury [1] Den Jean. FPC QT binding for Zaurus, 2005. http://freshmeat.net/projects/qtforfpc/ [2] Sierra Wireless. GSM/GPRS SDK AT command reference, 2002. http://www.sierrawireless.com/SupportDownload/docs/2130213.pdf [3] TrollTech. Online Reference Documentation. http://doc.trolltech.com/ [4] Jakub Kahovec. Popis knihovny Qt. http://home.zcu.cz/∼jkahovec/ [5] Luk´aˇs Gebauer SynaSer Help File http://synapse.ararat.cz/docs/help/synaser.html [6] Pavel Sopuch LaTeX v kostce http://www.it.cas.cz/manual/latex/index.html [7] Neil Moffatt Delphi Basics http://www.delphibasics.co.uk/ [8] Bruce Forsberg Software development for a Sharp Zaurus SL-5500 Linux PDA http://www.linuxgazette.com/issue90/forsberg.html
35
36
KAPITOLA 6. SEZNAM LITERATURY
ˇ ´ILOHA A. OBSAH PRILO ˇ ˇ EHO ´ PR ZEN CD
37
A Obsah pˇ riloˇ zen´ eho CD
/bin/default /bin/arm-libqteintf.so.2.3.2 /bin/config /bin/libqteintf.so.2.3.2 /bin/smsklient-arm /bin/smsklient-i386
zkompilovan´ y program pro i386 i ARM procesor vˇcetnˇe vˇsech potˇrebn´ ych soubor˚ u adres´aˇr s defaultn´ım profilem aplikace Qt knihovna pro ARM konfiguraˇcn´ı soubor aplikace Qt knihovna pro i386 aplikace zkompilovan´a pro ARM aplikace zkompilovan´a pro i386
/doc /doc/PopisKnihovnyQt.pdf /doc/GSM&GPRS_SDK_ATCommands.pdf /doc/QT2.3/
dokumentace Popis knihovny Qt, pdf vytvoˇren´e z www str´anek [4] GSM/GPRS SDK, referenˇcn´ı manu´al AT pˇr´ıkaz˚ u mirror dokumentace QT2.3 z www str´anek [3]
/install /install/linux-i386 /install/linux-arm /install/portmon/portmon.zip /install/portmon/readlog.php
instalaˇcn´ı bal´ıˇcky a soubory instalaci v´ yvojov´eho prostˇred´ı pro procesor i386 instalaci v´ yvojov´eho prostˇred´ı pro procesor ARM aplikace pro zachyt´av´an´ı komunikace po s´eriov´e lince skript pro zobrazen´ı LOGu z aplikace PortMon
/source /source/demo-0.9.tar.gz /source/smsklient.tar.gz
zdrojov´e k´ody aplikac´ı qt knihovna pro pascal spolu s uk´azkovou aplikac´ı zdrojov´e k´ody a skripty na zkompilov´an´ı aplikace
/text/src/ /text/dipl.pdf
zdrojov´e k´ody textu diplomov´e pr´ace pro LaTeX zkompilovan´ y text diplomov´e pr´ace do PDF form´ atu
/bin
38
ˇ ´ILOHA A. OBSAH PRILO ˇ ˇ EHO ´ PR ZEN CD
ˇ ´ILOHA B. POPIS INSTALACE PR
39
B Popis instalace Instalace v´ yvojov´eho prostˇred´ı vych´az´ı z dokumentu, dod´avan´eho spolu s FPC knihovnami pro QT. K nalezen´ı je zde [1].
B.1
Instalace v´ yvojov´ eho prostˇ red´ı pro i386
Instalace bude pops´ana tak, jak byla prov´adˇena na Mandrake 9, kernel 2.6. Na ostatn´ıch syst´emech bude postup obdobn´ y a ponech´am na zkuˇsenostech uˇzivatele upravit si drobn´e neshody. Veˇsker´e bal´ıˇcky a skripty nutn´e pro instalaci, kompilaci a spuˇstˇen´ı jsou na pˇriloˇzen´em CD v adres´aˇri/install/linux-i386 # nejprve nainstalujeme FPC (Free Pascal Compiler} $ urpmi fpc-2.0.1-050923.i386.rpm # pokraˇ cujeme instalac´ ı QTopia knihoven $ urpmi qtopia-free-1.5.0-1.i386.rpm # t´ ım by mˇ elo b´ yt nainstalov´ ano vˇ se potˇ rebn´ e pro kompilaci aplikace # nyn´ ı se pˇ repneme do adres´ aˇ re, kde se nach´ az´ ı zdrojov´ e k´ ody aplikace $ cd /home/user/smsklient # pomoc´ ı utility source a skriptu ’configure’ provedeme konfiguraci prostˇ red´ ı $ source ./configure # a nakonec zavol´ ame skript ’compile’, kter´ ym aplikaci zkompilujeme $ ./compile # nyn´ ı n´ asleduje spuˇ stˇ en´ ı Qt/Embedded Virtual Framebufferu $ /opt/Qtopia/bin/qvfb -width 320 -height 240 & # a nakonec vlastn´ ı, zkompilovan´ e, aplikace $ ./smsklient -qws
B.2
Instalace v´ yvojov´ eho prostˇ red´ı pro ARM
Instalace bude opˇet pops´ana tak, jak byla prov´adˇena na Mandrake 9. Veˇsker´e bal´ıˇcky a skripty nutn´e pro isntalaci, kompilaci a spuˇstˇen´ı jsou na pˇriloˇzen´em CD v adres´aˇri/install/linux-arm. Tato instalace vyˇzaduje instalaci FPC a QTopia knihoven tak, jak bylo uvedeno v pˇr´ıloze B.1. # nejprve nainstalujeme qtopia cross knihovny $ urpmi binutils-cross-arm-2.11.2-0.i386.rpm $ urpmi gcc-cross-sa1100-2.95.2-0.i386.rpm glibc-arm-2.2.2-0.i386.rpm # $ # $
d´ ale nainstalujeme ARM bal´ ıˇ cek, rozbal´ ıme jej tar xvf arm-linux-fpc-2.0.0.i386-linux.tar a spust´ ıme instalaˇ cn´ ı skript, jako c´ ılov´ y adres´ aˇ r uvedeme /usr ./install.sh
# pomoc´ ı utility source a skriptu ’arm-configure’ provedeme konfiguraci prostˇ red´ ı $ source ./arm-configure
ˇ ´ILOHA B. POPIS INSTALACE PR
40
# a nakonec zavol´ ame skript ’arm-compile’, kter´ ym aplikaci zkompilujeme $ ./arm-compile # t´ ım je aplikace zkompilovan´ a, jeˇ stˇ e m˚ uˇ zeme ovˇ eˇ rit, ˇ ze m´ ame skuteˇ cnˇ e # bin´ arku pro ARM $ file ./smsklient # a mˇ elo by se objevit nˇ eco takov´ eho: # smsklient: ELF 32-bit LSB executable, ARM, version 1 (ARM), for GNU/Linux 2.0.0, # dynamically linked (uses shared libs), stripped
Nalezen´ y probl´ em pˇ ri kompilaci pro ARM Pˇri kompilaci pro ARM procesor jsem zjistil nˇejak´ y probl´em kompil´atoru s hled´an´ım knihoven. Kompil´ator hled´a nˇekter´e knihovny v jin´ ych adres´aˇr´ıch neˇz se skuteˇcnˇe nach´azej´ı. Oprava je jednoduch´a a staˇc´ı vytvoˇrit pro tyto knihovny symlinky do spr´avn´eho adres´aˇre. Konkr´etnˇe jsem narazil na tyto ˇspatnˇe um´ıstˇen´e knihovny: fcl/inifiles.o fcl/inifiles.ppu fcl/libpinifiles.a
-> rtl/inifiles.o -> rtl/inifiles.ppu -> rtl/libpinifiles.a
libc/libc.o libc/libc.ppu libc/libplibc.a
-> rtl/libc.o -> rtl/libc.ppu -> rtl/libplibc.a
libc/kerneldefs.o libc/kerneldefs.ppu libc/libpkerneldefs.a
-> rtl/kerneldefs.o -> rtl/kerneldefs.ppu -> rtl/libpkerneldefs.a
libc/kernelioctl.o -> rtl/kernelioctl.o libc/kernelioctl.ppu -> rtl/kernelioctl.ppu libc/libpkernelioctl.a -> rtl/libpkernelioctl.a
B.3
Instalace aplikace na Sharp Zaurus
Instalaci a spuˇstˇen´ı aplikace na Sharp Zaurus provedeme v tˇechto nˇekolika kroc´ıch: # zkop´ ırujeme qte knihovnu a aplikaci do Zauruse $ scp arm-libqteintf.so.2.3.2 zaurus:/home/QtPalmtop/lib/libqteintf.so.2.3.2 $ scp smsklient zaurus:/home/zaurus # $ $ $
vytvoˇ r´ ıme symlinky pro libqteintf knihovnu ln -s /home/QtPalmtop/lib/libqteintf.so.2.3.2 /home/QtPalmtop/lib/libqteintf.so.2.3 ln -s /home/QtPalmtop/lib/libqteintf.so.2.3 /home/QtPalmtop/lib/libqteintf.so.2 ln -s /home/QtPalmtop/lib/libqteintf.so.2 /home/QtPalmtop/lib/libqteintf.so
# spust´ ıme aplikaci $ ./smsklient