Poslední aktualizace 12.2.2019 

      
 

   Náš první program v Linuxu 

 
Název projektu: Z0_line
Doba potřebná k vytvoření: cca 40 minut (pro mladíky 60+, kteří se nikdy neživili programováním).
Druh programu: školní, výukový, pro seznámení se s programovacím prostředím.
Grafické prvky mimo Gambas: V programu byl použit jediný externí obrázek - schéma namalované v grafickém editoru - viz zde.
Download projektu: zde (zip, pár kB)
 

Popis

Jde o jednoduchou grafickou aplikaci pro Linuxy, napsanou v prostředí Gambas3 (Basic pro Linux). Aplikace slouží k výpočtu charakteristické impedance dvoudrátového vedení (žebříček, ladder line).

Dělá se s tím tak, že se spustí a na posuvnících se nastavuje rozteč mezi vodiči (myslím, že jsem tam včera dal do 300 mm) a průměr vodiče (od 0.1 mm do 12 mm). Na displeji se zobrazuje hodnota vypočtené char. impedance v ohmech. Tedy vidlácky řečeno, rejdím a vidím.

Program obsahuje 4 proměnné: rozteč vodičů S, průměr drátu d, poloměr r = d/2 a Z0.

Výpočet se dělá podle jediného vzorce (použita procedura Z0_solve).
Pro kreslení programu byl použit jeden obrázek (schéma) .jpg (sežralo to asi 5 minut kreslení v grafickém editoru) a komponenty PictureBox, SpinBar, Label a LCDLabel.

Myšlenku, tedy to, co dám do publikace jako první program pro neprogramátory 60+, jsem si zachytil ve vlaku na papír z bloku - náčrt zde.

   
Začínáme

Stáhneme si projekt. Je zazipovaný. Rozbalíme ho do adresáře, kde si budeme ukládat své další projekty. Já mám ve složce "Dokumenty" složku "Gambas_projekty" a v té má každý projekt svou složku. Vytvoříme si tedy takové místo a nakopírujeme tam rozbalený projekt Z0_line. Spustíme Gambas3 a otevřeme ho. Až to budeme dělat podruhé, budeme ho vidět v "posledních projektech":

Ve vývojovém prostředí vidíme toto:

Jde o hlavní formulář. A v něm jsou nasázené tzv. komponenty z menu vpravo dole. Komponentu přetáhneme myší a nastavíme její vlastnosti (Properties). Vlastnosti komponenty se objeví, když na ni klikneme. Otevřeli jste jednoduchý školní projekt, kde jsem za vás všechny vlastnosti vyplnil a naklikal (asi 15 minut). Tohle chce rutinu a také se musíte trochu v prostředí orientovat. Nenechte se odradit, když vám to nepůjde rychlostí dle vašich představ. Vyzkoušejte si sami něco svého, třeba jen s tlačítky (Buttons) a labely (Labels) a postupně přidávejte další a další komponenty z menu. Hrajte si a naučíte se.

Život - reakce na události

Řekli jsme si, že s programem se dělá tak, že rejdím s posuvníky a vidím charakteristickou impedanci na displeji. Aby tak bylo, musíme napsat jednoduchý kód, který bude vykonán při konkrétní události (po rejdění s posuvníkem, kliknutí, atd.). Veškerý kód je zde. Je nekomentovaný. To nedělejte, pokud se v tom chcete za půl roku vyznat. Já jsem zde měl důvod nekomentovat. Budu to komentovat zde v textu, za týden se v tom nepotřebuji vyznat, ale hlavně jsem potřeboval, aby bylo všechno vidět pohromadě na jedné obrazovce stařičkého noťasu:

Postupně a odshora

Děláme se čtyřmi proměnnými (S, d, r, Z0), které jsem deklaroval jako proměnné pracující s desetinnou čárkou (Float). Jak se dělá deklarace v Gambasu, zjistíme v nápovědě, v manuálu nebo knize od Johna W Rittinghouse (mám jen pro starší verzi Gambas, ale i tak jsem za ni vděčný). Na prvních řádcích však vidíte prakticky, jak se to dělá.

Procedura po spuštění aplikace a procedura Z0_solve

Jde aplikaci, která používá jediného okna (Form). Po spuštění aplikace se provede asi devět instrukcí. První tři nám naplní proměnné čísly, se kterými program provede první výpočet, než zarejdíme s posuvníky. V dalších 4 řádcích se hodnoty proměnných dosadí do komponent (např. do SpinBar1.Value, Label1.text, ...), aby nám komponenty vše ukazovaly správně. Na dalším řádku je volaná procedura Z0_solve. Jde o třetí proceduru odspoda. Má 6 instrukcí (ve dvou se čtou hodnoty posuvníků, které tam jsou nastavené po rejdění). Na třetím řádku se vypočte hodnota Z0 a dosadí se do proměnné Z0. Všimněte si méně obvyklé syntaxe pro dekádický logaritmus, který se dělá jako funkce log10(proměnná). Na posledních řádcích se nacpou hodnoty do proměnných v komponentách. Poslední instrukcí procedury je End. Tato instrukce vrátí řízení běhu programu do místa, odkud byla procedura volána.

Procedury SpinBar1_Change( )

V procedurách jde o to, že když zarejdím se SpinBar1 nebo SpinBar3, tak chci změnit hodnotu proměnné S (rozteč vodičů) nebo d (průměr vodičů). Takové změny samozřejmě mají vliv na charakteristickou impedanci vedení, kterou je třeba přepočítat. Pro přepočítání hodnoty charakteristické impedance jsme si však v předchozím odstavci vydefinovali proceduru Z0_solve, kterou stačí zavolat a ona nám impedanci přepočte, hodnoty nacpe do proměnných a do vlastností použitých komponent.

A to je vše.

Spuštění

Ve vývojovém prostředí můžeme program spustit kliknutím na černý plný trojúhelníček (asi 10 ikona pod hlavním menu). První lekce je u konce. Proto si vytvoříme ještě svůj první spustitelný program pro Linux. Půjdeme do Menu - Projekt - Vytvořit - Spustitelný (Ctrl+Alt+X). Prostředí Gambas3 nám vytvoří maličký program (asi 15 kB), který uložíme jako Z0_line.gambas  
Pokud na soubor zaklikáme, spustí se nám námi vytvořený program, který bude fungovat na počítači, na kterém jsme ho vytvořili.

Poznámky

1. V Gambasu napíšeme pouze aplikace pro Linux. Vzhled, chování prostředí a informace, které jsme na prvním prográmku vstřebali, jsou podobné i v jiných prostředích.

2. Aplikace pro Windows můžeme psát ve Visual Studiu. Některá vyvedení jsou od Microsoftu rovněž zadarmo. Kdysi jsem používal dobrý a oblíbený Visual Basic 2008. Poslední verze Visual Studio se však staly ukrutnými monstry. Ukázka programu pro Windows, stáhnout soubor Z0_line.exe lze zde nebo kliknutím na obrázek. Možná vás bude "inteligence" vašeho operačního systému a antivirová ochrana neobyčejně prudit ... .


3. Aplikace pro desktopy Linux, Raspberry Pi, Windows a macOS se dobře píší v prostředí XOJO. Jde o placený program. Je dobrý, je v angličtině. Líbilo se mi, když jsem začal projekt kreslit ve Windows, pokračoval jsem na něm doma v Linuxu a spouštěl si ho později ve Windows. Jde o skutečnou Cross Platformu. Ukázka naší aplikace, napsané v XOJO. Komponenty jsou jiné (Canvas, Slider, Label, ...), uspořádání podobné:


 

 


 

   TU 73, Mira, ok1ufc