GSM_w_elektronice_cz3.pdf
(
917 KB
)
Pobierz
Elektronika Praktyczna
kurs
Technologia GSM
Dodatkowe materiały
na CD i FTP
w elektronice (3)
Hello World – pierwsze kroki
w Open AT
W trzecim odcinku kursu programowania
modemów GSM nadszedł czas na bliższe
zapoznanie się ze środowiskiem M2M Studio
oraz napisanie własnej aplikacji, którą następnie
wgramy do modułu Sierra Wireless AirPrime Q26.
wybrać
Open AT library
. Po
wpisaniu nazwy naciskamy
przycisk
Next
do pojawienia
się okienka jak na
rys. 3
.
Zawartość okna wymaga
nieco szerszego komentarza,
ponieważ zawiera ono kil-
ka pól wyboru parametrów
kluczowych do poprawnego
działania aplikacji. Chociaż
programowanie w
Open AT
odbywa się w języku C, jed-
nak sam język C nie zawiera
funkcji pozwalających np. na
Zagadnienie instalacji zostało poruszone w pierwszym odcinku
naszego cyklu, kiedy opisywano możliwości
Espresso
– jednej z apli-
kacji znajdujących się w pakiecie. Dla przypomnienia dodam, że śro-
dowisko
Sierra Wireless Software Suite
jest dostępne bezpłatnie pod
adresem strony internetowej
www.sierrawireless.com
.
W tym odcinku pokażemy krok po kroku, w jaki sposób napisać
i wgrać własną aplikację do modułu AirPrime Q26 oraz zaprezentuje-
my pomocne narzędzia.
rys. 2. Okno kreatora projektu
rys. 3. kreator projektu – koniguracja wersji biblioteki ADL
rys. 1. Okno główne aplikacji M2M studio
wysłanie SMS-ów. Do tego celu producent stworzył specjalną biblio-
tekę o nazwie ADL (
Application Development Layer
), która udostępnia
programiście funkcje API
pozwalające na kontrolo-
wanie pracy modułu GSM.
Wersja biblioteki ADL jest
ściśle powiązana z wersją
irmware
, pod kontrolą
którego pracuje moduł,
dlatego należy zwrócić
szczególną uwagę na wy-
bór odpowiedniej. Wbrew
pozorom nie jest to takie
trudne, ponieważ zarówno
biblioteka, jak i
irmware
są dostarczane w komplet-
nym pakiecie. Po zaimpor-
Na początek należy podłączyć do komputera zestaw startowy mo-
dułu
Sierra
Wireless AirPrime Q26
opisywany w poprzednim artykule
(EP 4/2010), włączyć jego zasilanie a następnie uruchomić
M2M Stu-
dio
. Okno główne aplikacji pokazano na
rys. 1
.
Zanim aplikacja się uruchomi, użytkownik zostanie zapytany
o lokalizację katalogu
workspace
, czyli miejsca, gdzie będą przecho-
wywane wykonywane projekty.
Aby napisać własną aplikację, z górnego menu należy wybrać
New
, a następnie
Open AT Project
. Pojawi się okno kreatora, w którym
trzeba wpisać nazwę tworzonego projektu (
rys. 2
).
Oprócz zwykłej aplikacji użytkownik ma również możliwość two-
rzenia własnych bibliotek funkcji, których można później używać
w kolejnych wykonywanych projektach. W tym celu w lewym oknie,
pod wyborem nazwy projektu, zamiast
Open AT Application
należy
rys. 4. kreator projektu – wybór
dodatkowych Plug-inów
64
ELEKTRONIKA PRAKTYCZNA 5/2010
Hello World – pierwsze kroki w Open AT
rys. 5. Okno edytora – nasza aplikacja „Hello World”
żymy, że składa się on z wielu katalogów. Dla nas istotne są: kata-
log „
src
”, w którym znajdują się pliki źródłowe aplikacji oraz katalog
„
inc
”, zawierający pliki nagłówkowe. Przy tworzeniu kolejnego pliku
źródłowego lub nagłówkowego należy pamiętać o tym, żeby znalazł
się we właściwym katalogu.
Każda aplikacja z katalogu przykładów (
samples
) ma dodatkowo
plik html, w którym znajduje się opis jej działania. Plik ten jest wi-
doczny w katalogu projektu. Warto się z nim zapoznać.
Po kliknięciu na nazwie pliku
hello_world.c
z katalogu „
src
”,
w oknie edytora pojawi się kod źródłowy aplikacji. Opisywany przy-
kład składa się z polecenia
include
, które dołącza bibliotekę ADL,
deklaracji stosu oraz dwóch funkcji:
HelloWorld_TimerHandler()
i
adl_main()
. Punktem startu aplikacji jest funkcja
adl_main().
W od-
różnieniu od standardowej funkcji
main()
pełni ona rolę funkcji kon-
iguracji i ustawienia zdarzenia. Ma zmienną wejściową
InitType
typu
adl_InitType_e
. Gdy zaznaczymy typ zmiennej, np. klikając dwukrot-
nie na
adl_InitType_e
, a następnie naciśniemy F3, wyświetli się dei-
nicja typu jak niżej:
typedef enum _adl_InitType_e
{
ADL_INIT_POWER_ON
, ///< Normal power-on
ADL_INIT_REBOOT_FROM_EXCEPTION
, ///< Reboot
after an exception
ADL_INIT_DOWNLOAD_SUCCESS
, ///< Reboot after
a successful install process (cf. adl_adInstall()
API)
ADL_INIT_DOWNLOAD_ERROR
, ///< Reboot after an
error in install process (cf. adl_adInstall() API)
ADL_INIT_RTC
///< Power-on due to an RTC alarm
//(cf. the <b>AT+CALA</b> command
// documentation for more
information)
} adl_InitType_e;
Wartość zmiennej wskazuje na przyczynę startu modułu. Gdy
moduł został zresetowany lub włączony, wtedy zmienna ta ma war-
tość
ADL_INIT_POWER_ON.
W przypadku, gdy przeprowadzany był
proces zdalnej aktualizacji aplikacji, zmienna (zależnie od wyniku)
przyjmie wartość
ADL_INIT_DOWNLOAD_SUCCESS
lub
ADL_INIT_
DOWNLOAD_ERROR
. Jeśli moduł został załączony przez alarm, to
zmienna przyjmie wartość
ADL_INIT_RTC
.
Głównym problemem, z którym często borykają się początkujący
programiści, jest zrozumienie zastosowanej koncepcji programowania
z użyciem zdarzeń. W dużej mierze jest ono oparte na rejestrowaniu
się (subskrypcji) do zdarzeń i usług, które chcemy zastosować. Reje-
stracja polega zazwyczaj na wskazaniu funkcji, która zostanie wyko-
nana przez system operacyjny w momencie wystąpienia zdarzenia.
Nie ma więc potrzeby cyklicznego sprawdzania, czy wystąpiło dane
zdarzenie. Zawsze w momencie jego wystąpienia system operacyjny
wykona wskazaną funkcję. Jeśli jakiś serwis nie zostanie zarejestro-
wany w aplikacji, to zostanie wykonany tak, jakby to miało miejsce
w przypadku, gdyby aplikacji w ogóle nie było, np. jeśli nie zarejestru-
jemy obsługi SMS-ów, to będą one obsługiwane, tak jak w przypadku
tradycyjnego modemu GSM. W przykładowej aplikacji
Hello World
mamy następującą funkcję:
adl_tmrSubscribe ( TRUE, 10, ADL_TMR_TYPE_100MS,
HelloWorld_TimerHandler );
Powoduje ona powołanie timera o kroku 1 s (10×100 ms) wywo-
łującego cyklicznie (pierwszy parametr ma wartość TRUE) funkcję
HelloWorld_TimerHandler
. Natomiast w funkcji
HelloWorld_Timer-
Handler
wykonywane jest polecenie wysłanie tekstu „
Hello World
from Open-AT
” przez port szeregowy:
adl_atSendResponse (ADL_
AT_UNS, “\r\nHello World from Open-AT\r\n” );
Funkcje
adl_tmrSubscribe
oraz
adl_atSendResponse
zostały do-
kładnie opisane w dokumencie o nazwie
Open AT ADL Development
Guide
. Dokument ten można znaleźć w menu
Help
–>
Help Contents
towaniu pakietu, w górnym menu wyboru pojawi się proil odpowia-
dający nazwie importowanego pakietu. Przy wyborze odpowiedniego
proilu automatycznie zostanie wybrana biblioteka i
irmware
. Dla
przypomnienia – wersję
irmware
modułu można sprawdzić komendą
ATI3.
Producent zadbał również o dostarczenie wraz ze środowiskiem
dużego zbioru aplikacji przykładowych, które demonstrują możli-
wości modułu. Wybierając odpowiednią aplikację, mamy możliwość
obejrzenia kodu źródłowego oraz skompilowania go i wgrania do mo-
dułu. Na początek wybierzmy kod najprostszej aplikacji, czyli „
Hel-
lo World
”. Po jej wybraniu w polu
Sample
, naciskamy klawisz
Next
.
Pojawia się okno zatytułowane „
Plugin Selection
” (
rys. 4
). W nim jest
możliwość dołączenia do aplikacji kolejnych bibliotek, które co praw-
da nie są obowiązkowe, tak jak biblioteka ADL, ale oferują dodatko-
we funkcje i możliwości, które mogą przydać się w aplikacji. Mamy
do wyboru m.in. dość często stosowaną bibliotekę WIP (
Wavecom IP
)
pozwalającą w łatwy sposób korzystać z protokołów internetowych
(TCP, UDP i inne) czy bibliotekę LUA, umożliwiającą wgranie do mo-
dułu interpretera języka skryptowego LUA.
Biblioteka
Security
pozwala na obsługę zagadnień związanych
z bezpieczeństwem, takich jak wykrywanie zagłuszania GSM czy bez-
pieczna transmisja z wykorzystaniem protokołu SSL. Pozostałe biblio-
teki to biblioteki specjalistyczne.
Bibliotekę z sekcji
plugins
możemy dołączyć na dowolnym etapie
tworzenia projektu, kiedy zajdzie potrzeba skorzystania z funkcji ofe-
rowanych przez bibliotekę.
Dokumentację do bibliotek znajdziemy w zakładce pomocy (
Help
–>
Help Contents
–>
Open AT Plug-ins documentation
).
Naciśnięcie przycisku
Finish
kończy pracę kreatora i powoduje
utworzenie przestrzeni projektu i przejście do okna edytora kodu (
rys. 5
).
Po tej czynności należy zwrócić uwagę na okno
Project Explorer
po lewej stronie. Zawiera ona katalogi wszystkich projektów znajdu-
jących się w lokalizacji
workspace.
Po rozwinięciu projektu zauwa-
rys. 6. Okno aplikacji – widok Target Managment
ELEKTRONIKA PRAKTYCZNA 5/2010
65
kurs
–>
Open AT Embedded Software Suite package
version 6.32
. Krótką dokumentację funkcji moż-
na również wyświetlić poprzez zaznaczenie jej
nazwy i naciśnięcie F3.
Warto również zwrócić uwagę na dwie linie
w kodzie zaczynające się od słowa kluczowego
TRACE
. Są to makra, które pozwalają na debu-
gowanie aplikacji. Za ich pomocą można wy-
syłać przez port szeregowy tekst lub wartości
zmiennych służące do analizy pracy aplikacji.
Wartość cyfrowa będąca argumentem okre-
śla poziom
TRACE
. Można zdeiniować do 32
poziomów, nadając poleceniom TRACE różne
wartości w zależności od funkcji, jakie peł-
nią. Pozwala to iltrować informacje wysyłanie
przez debuger zależnie od potrzeb. Informacje te
są wysyłane wyłącz-
nie przez port szeregowy, przez który moduł jest połączony z aplika-
cją
M2M Studio
. Użytkownik nie musi zatem obawiać się, że w jakiś
sposób będą one zakłócać komunikację z zewnętrznym urządzeniem
podłączonym do portu szeregowego.
Kompilację aplikacji wykonuje się, wybierając z menu
Project
–>
Build All
lub klikając na symbol młotka znajdującego się na górnej
listwie paska narzędzi. W celu przesłania skompilowanej już aplikacji
do modułu należy przejść do trybu
Target Management
(
rys. 6
, zakład-
ka w górnej prawej części okienka edytora).
Klikając zakładkę
Settings
, ustawiamy numer i parametry portu
szeregowego PC, do którego podłączony jest moduł
AirPrime Q26
,
a następnie naciskamy
Connect
. Poprawność połączenia z modułem
sprawdzamy, naciskając dwie zielone strzałki w okienku
Target Info
.
Powinniśmy otrzymać informacje o podłączonym module, jak na
rys. 7
. Teraz klikamy na zakładkę
Download
i wskazujemy ścieżkę do
projektu (na przykład: C:\workspace\First_application\[Target]_ARM_
ELF_GCC_Debug). Wskazujemy plik z rozszerzeniem .dwl i czekamy,
aż zakończy się proces ładowania do pamięci. Po jego zakończeniu
naciskamy zakładkę
Shell
i
Traces
. Po otworzeniu obu okien klikamy
w prawym oknie o nazwie
Target Info
na pozycję
Application
–>
State
i wybieramy pozycję
Start Application
lub wpisujemy w linii komend
(
Command
) polecenie AT+WOPEN=1. Jeśli wszystko poszło jak trze-
ba, powinniśmy zobaczyć rezultat jak na
rys. 8
.
Może się zdarzyć, że w oknie
Traces View
nic się nie pojawi, pod-
czas gdy w oknie
Target
będziemy co sekundę otrzymywali komunikat
„
Hello World from Open-AT
”. Należy wtedy kliknąć na ikonkę przypo-
rys. 7. Target
Info – informacje
o module
rys. 9. Okno iltra dla makra TrACE
minającą skrzyżowane klucz i śrubokręt
Remote Traces Coniguration
umieszczoną w oknie
Traces View
. Pojawi się okno z
rys. 9
.
Zaznaczamy wszystkie 32 poziomy dla wartości ADL lub tylko te,
które są potrzebne. Właśnie tu możemy iltrować informacje wyświe-
tlane w oknie
Traces View
, a wysyłane poprzez makra
TRACE
.
Pozostałe poziomy logowania to logi systemowe. Po zaznaczeniu
odpowiednich poziomów logowania i naciśnięciu
OK
pozostaje jesz-
cze kliknąć na
Active logging
- pierwszą ikonę od lewej w oknie
Traces
View
.
Powróćmy teraz do edytora klikając, na zakładkę
Open AT
(gór-
na, prawa część okna głównego) i nieco zmodyikujmy funkcję
Hello-
World_TimerHandler
:
void HelloWorld_TimerHandler ( u8 ID, void * Con-
text )
{
/* Hello World */
static int a=0;
TRACE (( 1, “Embedded : Hello World: %d”,a++ ));
adl_atSendResponse ( ADL_AT_UNS, “\r\nHello
World from Open-AT \r\n” );
}
Następnie skompilujmy, wgrajmy do modułu i obejrzyjmy rezul-
tat w oknie
Traces View
. Po zakoń-
czeniu eksperymentów z aplikacją,
warto również uruchomić i przete-
stować działanie innych przykła-
dów przygotowanych przez produ-
centa.
Pierwsze kroki w Open AT już
za nami. W kolejnych odcinkach cy-
klu zajmiemy się bardziej zaawan-
sowanymi aplikacjami. Tymczasem
polecam lekturę dokumentacji bi-
blioteki ADL -
Open AT ADL Deve-
lopment Guide
.
Więcej informacji na temat pro-
duktów Sierra Wireless można zna-
leźć na stronach producenta
www.
sierrawireless.com
lub kontaktując
się z irmą ACTE Sp. z o.o., która jest
oicjalnym dystrybutorem opisywa-
nych produktów oraz zapewnia peł-
ne wsparcie techniczne.
Adrian Chrzanowski
Acte sp. z o.o.
rys. 8. rezultat działania naszej aplikacji „Hello World”
66
ELEKTRONIKA PRAKTYCZNA 5/2010
Plik z chomika:
insane2t
Inne pliki z tego folderu:
GSM_dla_elektronice_cz1.pdf
(421 KB)
GSM_w_elektronice_cz2.pdf
(4320 KB)
GSM_w_elektronice_cz3.pdf
(917 KB)
GSM_w_elektronice_cz4.pdf
(696 KB)
GSM_w_elektronice_cz5.pdf
(412 KB)
Inne foldery tego chomika:
APARATURA pomiarowa
ARDUINO
Automatyka i PLC
CadSoft EAGLE
Czasopisma
Zgłoś jeśli
naruszono regulamin