Základy programování počítačové komunikace pro radioamatérskou praxi s
využitím Server Socketu a Client Socketu
Za domácí úkol bylo napsat nebo modifikovat program, který nám na
jiném (nebo našem) desktopu v síti nabarví dva obdélníčky, které tam jsou
od toho, na červeno nebo na zeleno. Také jsem řekl, že až pojedu dál ve
vlaku, že tu úlohu upravím. Jel jsem z Prahy do Českých Budějovic, snat to
stihnu i s touto stránkou. Programy a obrázky mám, stačila hodinka, ještě
mi zbývá cca 40 minut.
Oba programy z předchozí úlohy jsem upravil a uložil
jako jiné projekty. Lze si je, samozřejmě stáhnout.
Server Socket
Control zde.
Client Socket Control zde. Opět jsou
zazipované, takže je rozzipujeme a uložíme je do adresáře, kde máme
projekty v Gambasu. Vyrobíme z nich spustitelné soubory. Postup jsem
popsal minule. Tyto si dáme třeba na Plochu, jako já tady:

| Postup, jak
se s tím dále dělá, je napsaný v obrázku. Nejdřív spustíme
ServerControl. Zapne se nám "rozbalený", tj. jsou vidět nastavovací a
logovací objekty. Klikneme na tlačítko Naslouchej a necháme ho
naslouchat. Také můžeme kliknout na text "méně". Sbalí se spodní část
okna a budou vidět jen ty dva obdélníčky "vod toho" (objekty Label1 a
Label2), které budeme barvit na zeleno a taky na červeno.
Sbalený Server Socket vypadá takto. A má chybu v textu,
opravdu jsem ve vlaku spěchal :-)

Abychom mohli ty Labely obarvovat, musíme si pustit
ještě server. Já ho musel pustit na stejném PC, jako localhost,
opravdu si ve vlaku dva noťasy nevozím. Pokud ho pouštíte doma na
WiFi, pak použijte místo localhost IP adresu vašeho serveru.
Jak se to dělá,
bylo popsáno v minulé lekci.
Client Socket s tlačítky je vidět zde pod textem: |
 |
|
 |
Abychom mohli
posílat povely na Server Control Socket, musíme Client Socket pustit
kliknutém na připojení k serveru.
V poli uprostřed wokna se napíše status, že byl Client připojen, pokud
jsme pustili server a server naslouchá na stejném portu.
Nyní můžeme klikat na tlačítka Zapni 1, Vypni 1,
Zapni 2 a Vypni 2.
Po stisknutí tlačítek se na Server odešle některý z povelů Zap1, Zap2,
Vyp1, Vyp2. Každý z povelů odesílám jako 4 znaky. Povely vidíme také v
logovacím okně serveru.. Povely jsou v jednoduché proceduře dekódovány
a v jiné proceduře jsou příkazy, které obarví ty příslušné Labely,
které jsou tady "vod toho ..."
Poznámka: Pokud by Server Socket Control běžel
např. pod TinkerBoardem (malý jednodeskový počítač, podobný Raspberry
Pi), mohli bychom si dopsat další procedury na ovládání stavu
některých špiček na svorkovnici, které jsou tam "od toho". A řídit tím
polovodič s relé, atd ... |
| |
|
Shrnutí o tom, co jsem
v kódech změnil
Výpis (listing) pro
ClientSocket lze stáhnout zde. Možná
jsem zvýrazňovačem nezvýraznil všechno, co jsem tam dělal, protože
jsem také mazal. Úplně nakonci jsou fialově zvýrazněné 4 procedury.
Jsou psané vcelku vidlácky, ale jednoduše. Každá zapíše do Socketu
svůj natvrdo definovaný povel. A těsně před nimi (zvýrazněno žlutě)
jsou procedury vykonávané po kliknutí na jedno ze 4 přidaných
tlačítel. Po kliknutí na tlačítko je volaná jedna z procedur zápisu
povelu do socketu. Prosté, že?Listing pro
ServerSocketControl lze stáhnout zde. Tam jsem toho psal o
pár řádek víc:
- deklaroval jsem proměnnou Static povel as String (taková deklarace
platí v celé třídě (Class) wokna, tedy i v ostatních procedurách)
- do proměnné povel se dosazuje hned po vyčtení ServerSocketu obsah
proměnné sBuf
- deklaroval jsem proceduru Dekoduj_povel(); tam se neděje nic jiného,
než že se testuje, jakou hodnotu má povel a podle toho se obarví ty
Labely "od toho" ...
- je tam ještě jedna procedura, která zmenšuje nebo zvětšuje Form1; to
je tam kvůli tomu, abychom se nemuseli pořád dívat na objekty, se
kterými zrovna nepotřebujeme pracovat; je to dost vidlácky
programované, v režimu "design" jsem se podíval, jaká výška (height)
je u malého a u většího okna a v příkazu if-then-else-end if
dosazovací příkazy dosadí tu správnou hodnotu ...
Jak se při psaní kódu zadávají barvy ?
V Gambasu se zadávají barvy RGB v hexadecimálním tvaru - viz listing.
A od toho je tam paleta, ze které to lze snadno udělat:

Moderní prostředky pro vývoj aplikací umožňují
opravdu rapidní vývoj. Ani dálkové ovládání přes Internet (pomocí IP
protokolu) nemusí být práce na týdny, ani na dny, spíš na hodiny.
Parádička, že?
|
|