Aktualizováno v únoru 2019

      
 

   Základy programování - vidlácké posílání povelů po IP síti, z jednoduchých, námi napsaných programů
 
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?
 

Zpět na obsah


TU 73, Mira, ok1ufc