41_44.pdf
(
250 KB
)
Pobierz
Akwizycja danych przez Ethernet. Zdalny moduł pomiarowy, część 2
Akwizycja danych przez Ethernet − zdalny moduł pomiarowy
P R O J E K T Y
Akwizycja danych
przez Ethernet
Zdalny moduł pomiarowy,
część 2
W†drugiej czÍúci artyku³u
przedstawiamy trudniejsz¹ dla
elektronikÛw czÍúÊ systemu
zdalnej akwizycji danych -
programowanie sieciowe.
Rekomendacje
:
prezentujemy system
pomiarowy o†ogromnych
walorach poznawczych - autor
zintegrowa³ w†nim bowiem
zaawansowany system pomiaru
temperatury i†jednoczeúnie
pokaza³, w†jaki sposÛb
wyniki pomiarÛw udostÍpniÊ
za pomoc¹ Ethernetu.
Oprogramowanie
wspÛ³pracuj¹ce ze
zdalnym termometrem
Poniøsze opisy dotycz¹ Win-
dows 98SE - instalacje pod 2000/
NT/XP bÍd¹ wymaga³y zastosowa-
nia instrukcji dostarczanych ra-
zem z†pakietami.
tania przez inn¹ aplikacjÍ bez
wychodzenia z†programu,
- wyúwietla informacyjn¹ ikonÍ
w†obszarze podajnika (
tray
) -
w†opisie (
hint
) ikony moøna
odczytaÊ ostatni¹ wartoúÊ tem-
peratury.
Przy tym odczycie nie jest
potrzebny øaden interfejs ekrano-
wy - wyúwietlamy zatem (komen-
d¹ w†kontekstowym menu ikony)
tylko proste okienko dialogowe
wyboru i†czasowego wy³¹czenia
portu szeregowego.
Do obs³ugi portu szeregowego
z†pod³¹czonym poprzez adapter op-
toizolacyjny uk³adem modemu sie-
ciowego ST7537 s³uøy komponent
TRsPort
. Natomiast komunikacjÍ
z†baz¹ danych umoøliwia modu³
mysql.pas
dostarczaj¹cy funkcje
API MySQL pozwalaj¹ce na bez-
poúrednie odwo³ania do bazy. Del-
phi w†wersji
Personal Edition
nie
posiada (w odrÛønieniu od edycji
profesjonalnych) øadnych kompo-
nentÛw wspomagaj¹cych progra-
mowanie bazodanowe - jednak
w†naszym zastosowaniu (gdy uøy-
Program komunikacyjny
PT1000.EXE
Program komunikacyjny (napi-
sany w†bezp³atnym Delphi 6†PE -
kody ürÛd³owe s¹ dostÍpne w†ma-
teria³ach pomocniczych na p³ycie
CD-EP7/2003) realizuje nastÍpuj¹-
ce zadania:
- wysy³a co pewien czas zapyta-
nie do oddalonego termometru,
- wykrywa i†sygnalizuje brak od-
powiedzi,
- prawid³ow¹ odpowiedü dekoduje
i†otrzyman¹ wartoúÊ temperatury
zapisuje wraz z†czasem wykona-
nia pomiaru do tabeli MySql,
- pozwala na wybÛr uøywanego
portu szeregowego,
- pozwala na okresowe wy³¹cze-
nie portu w†celu jego wykorzys-
Elektronika Praktyczna 7/2003
41
Akwizycja danych przez Ethernet − zdalny moduł pomiarowy
wamy tylko niewielkiej liczby da-
nych) nie jest to przeszkod¹, gdyø
funkcje API MySQL s¹ w†zupe³-
noúci wystarczaj¹ce. Wszystkie
szczegÛ³y zainteresowani znajd¹
w†kodzie ürÛd³owym.
Nasza ma³a baza nazywa siÍ
Po-
goda
i†zawiera tylko jedn¹ tabelÍ
meteo
z†polami:
-
Czas
typu DATETIME,
-
Tempout
typu FLOAT.
Moøemy oczywiúcie uøyÊ in-
nych nazw, ale musi byÊ zacho-
wana zgodnoúÊ z†kodem odwo³aÒ
do bazy w†
PT1000.EXE
.
Ostatnim zabiegiem koniecz-
nym do w³aúciwej wspÛ³pracy
programÛw jest udostÍpnienie bib-
lioteki
Libmysql.dll
zawieraj¹cej
funkcje API i†dostarczonej razem
z†pakietem w†podkatalogu
[lib\opt]
. Kopiujemy j¹ albo do
foldera z†plikiem
PT1000.EXE
, al-
bo - lepiej - do domyúlnego
foldera
[windows\system]
.
Instalacja us³ugi jest wykony-
wana w†konsoli DOS-owej komen-
d¹
apache -i -n nazwa_uslugi
. Po
wykonaniu znajdziemy odpowied-
ni wpis w†rejestrze
HKEY_LO-
CAL_MACHINE/Software/Micro-
soft/Windows/CurrentVersion/Run-
Services
.
Pod W9x zalety us³ugi s¹ ogra-
niczone - sprowadzaj¹ siÍ prak-
tycznie do ukrycia procesu przed
uøytkownikiem. PracÍ us³ugi mo-
øemy jednak nadal w†razie potrze-
by kontrolowaÊ komendami kon-
solowymi
apache -n nazwa_uslugi
-k start/restart/stop/shutdown,
co
moøe byÊ przydatne np. przy
zmianach konfiguracji.
Jeúli chcemy umieúciÊ nasz¹
witrynÍ w†miejscu odpowiedniej-
szym niø domyúlne
[htdocs]
, za-
k³adamy oddzielny folder, np.
c:\webroot
, w†ktÛrym umieszcza-
my kod w³asnej strony powitalnej
jako plik
index.html
(jest to do-
myúlny plik otwierany przez prze-
gl¹darkÍ po po³¹czeniu siÍ z†wit-
ryn¹). Wtedy jednak musimy
w†konfiguracji
httpd.conf
zaktuali-
zowaÊ wpis
DocumentRoot
(w na-
szym przypadku
DocumentRoot
ìc:/webrootî
- uwaga na uniksowy
slash) i†zaraz potem ustawiÊ dla
naszego foldera uprawnienia do-
stÍpu (sekcja
Directory ìc:/webrootî
>.....<
/Directory
>, zawartoúÊ moøe-
my pozostawiÊ domyúln¹).
Naleøy zaznaczyÊ, øe Apache'a
nie naleøy uøywaÊ pod W9x jako
serwera internetowego. Te syste-
my zupe³nie siÍ do tego nie
nadaj¹ ze wzglÍdu na brak zabez-
pieczeÒ i†nisk¹ stabilnoúÊ. Nato-
miast z†powodzeniem moøna wy-
konywaÊ rozmaite testy w†ma³ych
bezpiecznych sieciach, domowej
lub niewielkiej firmowej (jak
w†prezentowanym przyk³adzie).
Serwer bazodanowy
MySQL
Aby
PT1000.EXE
mÛg³ wyko-
nywaÊ zapisy do tabeli, musimy
mieÊ uruchomiony serwer MySQL
udostÍpniaj¹cy swoje funkcje.
Przez d³ugi czas zarÛwno MySQL,
jak i†Apache by³y praktycznie do-
men¹ uøytkownikÛw Linuksa. Te-
raz sytuacja radykalnie siÍ zmie-
ni³a - bez problemu moøemy
stosowaÊ te znakomite i†bezp³atne
narzÍdzia rÛwnieø w†úrodowisku
Windows. Na firmowej stronie
MySQL znajdziemy gotowy
ìokienkowyî instalator, ktÛry
praktycznie samodzielnie umieúci
serwer na naszym dysku. W†fol-
derze
[docs]
znajdziemy teø pe³n¹
dokumentacjÍ, ktÛra pozwoli na
wyjaúnienie wszelkich niejasnoú-
ci. Przed uruchomieniem serwera
naleøy sprawdziÊ, czy w†naszej
maszynie mamy zainstalowany
protokÛ³ TCP/IP (dotyczy to tylko
komputerÛw bez dostÍpu do In-
ternetu). W†razie potrzeby w†ok-
nie konfiguracji otoczenia siecio-
wego dodajemy protokÛ³. Do kon-
troli nad serwerem najlepiej uøyÊ
dostarczonego razem z†pakietem
programu
winmysqladmin.exe
(w
folderze
[bin]
), ktÛry oprÛcz wielu
uøytkowych informacji oferuje tak-
øe sprawne uruchamianie i†zatrzy-
mywanie, przygotowanie i†edycjÍ
pliku startowego.
ini
oraz umiesz-
czenie wpisu w†menu
Autostart
.
Po udanym zainstalowaniu
i†uruchomieniu serwera przygoto-
wujemy niewielk¹ bazÍ danych,
w†ktÛrej bÍd¹ przechowywane in-
formacje przekazywane przez
PT1000.EXE
. Do tego celu moøe-
my uøyÊ dowolnego klienta
MySQL - nawet najprostszego kon-
solowego
mysql.exe
dostarczanego
z†pakietem, ktÛry jednak wymaga
znajomoúci sk³adni poleceÒ SQL.
Warto wiÍc wyszukaÊ w†sieci ja-
kieú dogodniejsze narzÍdzie - bar-
dzo sympatyczny w†uøyciu jest
m.in. klient phpMyAdmin ze stro-
ny
http://www.phpwizard.net/pro-
jects/phpMyAdmin
, ktÛry jednak
wymaga uruchomienia najpierw
serwera
http
z†nastÍpnego punktu.
Serwer http Apache
Apache rÛwnieø oferuje na
firmowej stronie gotowy instalator
dla Windows. Mamy obecnie do
wyboru najnowsz¹ wersjÍ serii
2†oraz starsz¹ 1.3.27. W†naszym
przyk³adzie uøyta zosta³a starsza
wersja - w†zupe³noúci wystarcza-
j¹ca dla bardzo niewielkich wy-
magaÒ testowego uk³adu. Po in-
stalacji mamy od razu serwer
wstÍpnie skonfigurowany, ze stro-
n¹ startow¹ witryny ustawion¹ na
folder
[htdocs]
oraz z†u³atwiaj¹cy-
mi pracÍ wpisami do Menu Start.
WstÍpnie uruchamiamy serwer ja-
ko aplikacjÍ konsolow¹ (z pozycji
menu
Start>Programy>Apa-
che>Start Apache in Console
).
Jeúli teraz w†przegl¹darce WWW
wpiszemy adres
localhost
(albo
ìcyfrowoî http://127.0.0.1), po-
winna siÍ otworzyÊ powitalna
strona Apache. PracÍ Apache'a
w†konsoli koÒczymy sekwencj¹
ctrl+c
.
Jeúli chcemy, aby serwer star-
towa³ samoczynnie razem z†syste-
mem, mamy do wyboru dwie
moøliwoúci:
1.UmieúciÊ skrÛt w†folderze
Auto-
start
, co jest o†tyle niewygodne,
øe przy wy³¹czaniu systemu
trzeba konsolÍ Apache'a rÍcznie
zamykaÊ.
2.ZainstalowaÊ Apache'a jako
us³ugÍ (
service
). W†domowych
Windows 9x opcja ta ma cha-
rakter eksperymentalny i†dzia³a-
nie nie jest gwarantowane.
W†testowym uk³adzie uda³o siÍ
uruchomiÊ w†ten sposÛb wersjÍ
1.3.22 pod W98SE, ale wersja
2.0 juø odmawia³a wspÛ³pracy.
PHP4
JÍzyk php s³uøy do pisania
skryptÛw wykonywanych po stro-
nie serwera http. Ze wzglÍdu na
swoje zalety i†przystÍpnoúÊ (wy-
nikaj¹c¹ z†przejÍcia wielu elemen-
tÛw C) zdoby³ szerokie uznanie
i†szybko siÍ rozpowszechni³. Oczy-
wiúcie serwer musi byÊ wyposa-
øony w†oprogramowanie wyko-
nawcze dla skryptÛw. WspÛ³praca
Apache'a z†PHP moøe siÍ odby-
waÊ w†dwojaki sposÛb:
- tak jak w†przypadku skryptÛw
CGI modu³ wykonawczy
php.exe
42
Elektronika Praktyczna 7/2003
Akwizycja danych przez Ethernet − zdalny moduł pomiarowy
Rys. 8 . Wygląd testowej strony w oknie przeglądarki WWW
LoadModule php4_module c:/
php/sapi/php4apache.dll Ad-
dModule mod_php4.c
- informujemy serwer, ktÛre pliki
powinny byÊ poddane ìobrÛbceî
PHP - znajdujemy i†odkomento-
wujemy liniÍ (ew. dopisujemy
jeúli brak):
AddType application/x-httpd-
php.php.phtml
(tylko w†plikach z†podanymi roz-
szerzeniami bÍd¹ wykonywane
skrypty, moøemy do swoich tes-
tÛw dodaÊ teø dla uproszcze-
nia.
html
- w†normalnej pracy
serwera jest to b³¹d, gdyø po-
woduje stratÍ czasu na analizÍ
plikÛw z†za³oøenia bez skryptÛw,
natomiast przy prÛbach umoøli-
wi dopisywanie skryptÛw do
istniej¹cego kodu
html
bez zmia-
ny rozszerzeÒ plikÛw na .
php
).
Jeøeli Apache by³ uruchomio-
ny, musimy go zatrzymaÊ. Ponow-
ne uruchomienie w†konsoli po-
winno powiadomiÊ nas o†prawid-
³owym skonfigurowaniu (np.
Apa-
che/1.3.22 (Win32) PHP/4.1.0 run-
ning...
). Jeúli serwer ìnie przyj¹³î
PHP, musimy sprawdziÊ wszystko
jeszcze raz i†ewentualnie zajrzeÊ
jest traktowany jako zewnÍtrzny
program i†uruchamiany oddziel-
nie dla kaødego pliku,
- php moøe byÊ zintegrowane
z†Apache'em poprzez dynamicz-
nie ³adowan¹ bibliotekÍ funkcji
(
php4ts.dll
), co znacznie przy-
úpiesza wykonywanie programu.
Gotowy instalator dla Win-
dows konfiguruje wszystko tylko
dla pierwszego przypadku. Dlate-
go wykonujemy instalacjÍ oraz
konfiguracjÍ rÍcznie:
- plik
zip
z†pakietem php rozpa-
kowujemy do wybranego folde-
ru, np.
c:\php
,
- do folderu
[Windows\System]
kopiujemy potrzebne biblioteki:
g³Ûwn¹
php4ts.dll
, odpowiadaj¹-
c¹ za wspÛ³pracÍ z†Apache'em
php4apache.dll
z†podkatalogu
[sapi]
oraz biblioteki wbudowa-
nych rozszerzeÒ z†podkatalogu
[dll]
(jeúli jakieú biblioteki juø
s¹, to nadpisujemy je nowymi
tylko wtedy, gdy coú nie zechce
funkcjonowaÊ - kaødorazowo
wykonuj¹c przed zmian¹ kopiÍ
zapasow¹ poprzedniej wersji),
- do folderu
[Windows]
kopiuje-
my plik
php.ini-dist
jako
php.ini
,
-w†
php.ini
(sekcja
Path and di-
rectories
) dopisujemy úcieøki do
naszego foldera ze stron¹ WWW
(
doc_root = ìc:/webrootî
) oraz
do foldera z†bibliotekami dodat-
kowych rozszerzeÒ php (
exten-
sion_dir = ìc:/php/extensionsî
).
Teraz dodatkowo musimy poin-
formowaÊ Apache'a o†moøliwoúci
korzystania z†php. Wykonujemy
to, edytuj¹c plik
httpd.conf
:
- dopisujemy (moøna na koÒcu)
instrukcje ³adowania modu³u:
List. 1. Listing opisu przykładowej strony w języku HTML
<HTML>
<HEAD>
<LINK REL="STYLESHEET" TYPE="text/css" HREF="meteo.css">
<META HTTP-EQUIV="Generator" CONTENT="Tiger98 wersja 1.0 (C)1998">
<META HTTP-EQUIV="Content-Type" CONTENT="text/html;CHARSET=ISO-8859-2">
<META HTTP-EQUIV="refresh" CONTENT="120">
</HEAD>
<BODY class="C0">
<TABLE BORDER="2" bordercolorlight="blue" bordercolordark="blue" class="C0">
<TR HEIGHT="20" >
<TD WIDTH="230"
align="center"
bgcolor="silver">Czas ostatniego pomiaru</TD>
<TD WIDTH="230"
align="center"
bgcolor="lime">
<?
$link = mysql_connect("localhost","root","") or die("Wrong");
mysql_select_db("Pogoda");
$query = "SELECT * FROM meteo";
$result=mysql_query($query);
$row=mysql_fetch_array($result);
print (substr($row[0],6,2)."/".substr($row[0],4,2)."/".substr($row[0],0,4).
" g. ".substr($row[0],8,2).": ".substr($row[0],10,2));
mysql_close($link);
?>
</TD>
</TR>
<TR HEIGHT="20">
<TD WIDTH="230"
align="center"
bgcolor="silver">Temperatura zewnętrzna</TD>
<TD WIDTH="230"
align="center"
bgcolor="lime">
<?
printf ("%1.1f st.C", $row[1]);
?>
</TD>
</TR>
</TABLE>
</BODY>
</HTML>
Elektronika Praktyczna 7/2003
43
Akwizycja danych przez Ethernet − zdalny moduł pomiarowy
do bogatych, dostarczanych z†pa-
kietami manuali. Na koniec wy-
konujemy ostatni prosty test dzia-
³ania php, lokuj¹c na stronie
odnoúnik do jakiegoú zupe³nie
prostego pliku .
php
zawieraj¹cego
krÛtki skrypt (np. echo ìPhp is
OKî; albo Phpinfo();).
towej strony znajduje siÍ w†ma-
teria³ach pomocniczych na p³ycie
CD-EP7/2003 (wygl¹d strony
przedstawiono na
rys. 8
). ZwrÛÊ-
my uwagÍ na ustawienie odúwie-
øania tabelki z†wartoúciami na
czas zgodny z†czÍstotliwoúci¹ od-
czytu termometru. Opis przygoto-
wany w†HTML dla prezentowanej
strony pokazano na
list. 1
.
Na koniec jeszcze ogÛlna uwa-
ga. Czytelnicy obeznani z†tematyk¹
sieciow¹ z†pewnoúci¹ nie bÍd¹
zachwyceni maksymalnie uprosz-
czonym sposobem przedstawienia
oprogramowania. Jednak artyku³
absolutnie nie pretenduje do rangi
samouczka dla webmasterÛw i†po-
cz¹tkuj¹cych administratorÛw. Mia³
za zadanie prezentacjÍ moøliwoúci
po³¹czenia w†funkcjonaln¹ ca³oúÊ
pozornie bardzo odleg³ych technik
w†ramach prostego, ale sprawdzo-
nego i†dzia³aj¹cego przyk³adu -
jednoczeúnie nie wykraczaj¹c za
bardzo poza sferÍ elektroniki.
Jerzy Szczesiul, AVT
jerzy.szczesiul@ep.com.pl
Wyúwietlenie wartoúci
temperatury
Teraz moøemy uøyÊ zainstalo-
wanych narzÍdzi do wyúwietlania
na naszej stronie wartoúci tempe-
ratury oraz czasu pomiaru, loko-
wanych w†tabeli
meteo
przez
PT1000.EXE
. Ca³y opis html tes-
Wzory p³ytek drukowanych w for-
macie PDF s¹ dostÍpne w Internecie
pod adresem:
http://www.ep.com.pl/
?pdf/lipiec03.htm
oraz na p³ycie
CD-EP7/2003B w katalogu
PCB
.
44
Elektronika Praktyczna 7/2003
Plik z chomika:
wilo1981
Inne pliki z tego folderu:
1.pdf
(395 KB)
119_120.pdf
(203 KB)
123_124.pdf
(119 KB)
126_128.pdf
(112 KB)
14_19.pdf
(501 KB)
Inne foldery tego chomika:
01.03
02.03
03.03
04.03
05.03
Zgłoś jeśli
naruszono regulamin