Příslušenství řízené z PC aplikace
Úvod
V předchozím článku jsem se pustil na tenký
led a ukázal příslušenství (dálkový tuner, anténní přepínač, mikrovlnný
oscilátor, ...) radioamatérské stanice řízené z PC. A uvedl jsem v něm, že
je třeba mít alespoň základní dovednost o tom, jak jednoduchou aplikaci
rychle napsat, neutratit majlant za vývojové prostředky a nestrávit mládí
bohapustým učením něčeho, co nerostlo na poli, ale vymysleli to lidé.
Specifikace cílů
Jak jsem už psal, nejsem programátor, nikdy
jsem se programováním neživil, nejsem mladý, abych se pořádně učil složité
věci, které možná budou za 2 roky vypadat jinak a navíc je nebudu
potřebovat.
Takže prvním a nejdůležitějším cílem je,
abych byl schopen své myšlenky po krátkém učení napsat třeba za hodinu
(nebo večer, když se nedaří).
Další 4 cíle:
- napsat to ve vývojových prostředcích, které jsou pokud možno zadarmo
nebo levné
- program musí vypadat tak, jak jsme zvyklí ve Windows, tj. jednoduchá
okna, kde jsou tlačítka nebo jiná jednoduchá řídítka
- program musí mít pár zásadních funkcionalit, hlavně si musí umět
nastavit do paměti nastavení nebo stavy a musí být schopen odeslat a
přijmout data (bajty) ze sériového portu, který se používá pro komunikaci
s kontrolérem
- program musí běžet z Win XP, Win7 a Win10 a to je pro začátek opravdu
všechno ...
Slepé uličky, které mě nikam nedovedly
nebo se mi po nich nechtělo jít
Do slepé uličky mě dostal Microsoft.
Naštěstí jsem se z ní dostal, ale o tom je další článek.
Jsem technik. Ve škole (před 40 léty) nás učili programovat ve Fortranu a
taky v Algolu. A také jsem se tam tenkrát doslechl o jazyku Basic.
Ten byl také na 8 bitovém gumovém prvním počítači, který jsem si tenkrát
koupil (ZX Spectrum). Od té doby jsem si s Basicem vystačil a vyřešil
téměř všechno. I když jsem realizoval své větší projekty v Pascalu a
neodolal jsem laškování s C, C++ a nedávno i s Pytonem.
Našel jsem na webu levné a krásné editory a
kompilátory Basicu. Několik jsem jich vyzkoušel a zjistil jsem, že nejsou
pro mě. Zmíním alespoň Pure Basic. Cena dobrá. Grafický designér byl
krásný. Příklady vzorových kódů krásně strukturované, uspořádané,
pochopitelné. Kompilátor pracoval rychle, finální exe soubory byly malé,
nevyžadovaly žádné runtime knihovny, na PC prostě běžely. Kdybych se živil
programováním desktopových aplikací nebo výukou programování asi bych se
nechal přesvědčit. Jenže moje návyky jsou jiné - viz další kapitola.
Moje špatné návyky
1. Potřebuji kliknout na ikonu a spustit
rychle vývojové prostředí, otevřít rozdělaný projekt a začít makat.
2. Potřebuji sáhnout po komponentě, kterou naprogramoval někdo jiný
profesionálně a umístnit ji do okna programu. To všechno graficky. S
komponentami musí jít hýbat, měnit velikost, barvy a celou řadu dalších
vlastností.
3. Komponenty jsou v grafickém prostředí také od toho, abych tam snadno
nastavil událost, kterou má program provést. Třeba něco dělat po kliknutí
myší. Vím, že je hezké, když se ze zdrojového souboru vygenerují krásná
okna, tlačítka a další řídítka. Jenže je to práce, nikoliv zábava. Já se
programováním neživím a tak jsem raději, když mi např. rozměry prvků
vygeneruje vývojový prostředek. A tentýž prostředek mě dovede do těla
procedury, kam napíšu už jen kousek kódu, třeba, že se má něco nastavit,
změnit barva, spustit. A musí to jít jednoduše.
A tohle málo, bohužel nesplňoval žádný z
vývojových prostředků, které jsem nedávno vyzkoušel. Proto jsem zůstal u
produktu Microsoft Visual Studio, přestože od jejich manažerů očekávám, že
nové verze budou stále a stále jiné, stále a stále víc nenažrané a
stále a stále složitější.
Příklad
Dost už bylo povídání. Program na řízení tuneru jsem napsal v roce 2012.
Ve Visual Basic 2008 Express, který byl zadarmo.
Program vypadá po spuštění takto - viz
vpravo. Když máte naladěno a uloženo, vyberete si jedno ze 4 tlačítek
(modré, červené, hnědé a zelené) skupinu pamětí.
Já používám modrá pro CW a digi
(vlevo, začátky pásem), zelená pro SSB DX (konec) a dvě jsou pro provoz
mezi tím, když anténa ladí ostře.
Po kliknutí se obarví stejně tlačítka pásem. Takže se s tím dělá tak,
že se vybere banka a vybere se pásmo. Pokud bylo dříve naladěno,
program nasype tři bajty do kontoléru tuneru. Jeden bajt nacvaká 8
relátek indukčností, druhý bajt nacvaká 8 relátek s kondenzátory a
třetí bajt přepne jedním bitem kondenzátory tak, aby byly před nebo za
indukčností (tedy zvolí CL nebo LC článek).
Je to jednoduché, funkční |
 |
Pokud si chcete rozhraní
aplikace na svém PC vyzkoušet. Můžete si
stáhnout exe soubor
s programem. Je to jen ukázka, nic to do žádného portu
neposílá. Stačí to nakopírovat do nějakého prázdného adresáře a
s ním to potom smazaat. Program si vytvoří v tomtéž adresáři ještě
jeden soubor *.dat, do kterého si zapisuje nastavení bank a pamětí.
Ničím dalším vám PC nezasere, do registrů nic nepíše a zbavíte se toho
smazáním obou souborů, až vás to omrzí.
Jiné verze ...
Zde popsaná koncepce tuneru byla vyrobena v mnoha modifikacích.
Předchozí popsaná modifikace sloužila u symetrického tuneru (pro
antény napájené žebříčkem), jiné verze, na obrázku spuštěná z Windows
10 - viz níže, slouží u LW a vertikálů. Byla napsána pro jiné množství
pamětí, s jiným designem (ale podobným), s jinými komponenty pro
ladění ....demo
uživatelského rozhraní lze opět stáhnout a vyzkoušet.

Jak s tím dělá neprogramátor
Tak, jak jsem psal. Spustí vývojový prostředek. Když jsem psal tento
článek, tak jsem ho spustil na starém a malém notebooku v hospodě, u
piva a u námořního muzea v Rotterdamu. Vypadalo to takto nějak.
Zaklikáme v Recent Projects na antenna_tuner:

Vývojové prostředí umožňuje do projektu
vkládat formuláře (forms se říká těm woknům programu), do formulářů
dávat různá tlačítka a jiná řídítka (komponenty):

Na obrázku nahoře je okno s řídítky
ladění. Jak se s tím dělá? V hlavním okně kliknete v menu na položku
"Ladění". Protože neladíte pořád, ale máte naladěno, uloženo a po
zbytek života jen přepínáte pásma, přesto musíte občas anténu naladit.
Po kliknutí ladění se otevře okno ladění, viz výše. Jde o tuner ruční,
dálkově řízený. Postup práce je jednoduchý a tento:
1. Vybereme banku (modrou pro CW kraj pásma, zelenou pro SSB konec)
2. Dáme myš na řídítko C nebo řídítko L. Hned vidíme, že se zabarví
proužek řídítka, program odesílá bajty do kontroléru, relátka cvakají,
přepínají a my ladíme, což vidíme na TCVRu nebo měřiči VSWR. Tam, kde
máme vyladěno nejlépe, klikneme. Data se uloží a můžeme hejbat s
druhým řídítkem. Párkrát to zopakujeme, až docílíme nejlepšího VSWR,
klikneme na pásmo a naladění je uloženo. Můžeme ladicí okno zavřít,
pokud nebudeme ladit na jiném pásmu.
Tím jsme trochu předběhli. Tady jsem chtěl ukázat, jak se to vyvíjí
(nebo snad píše?, programuje?) ve vývojovém prostředí. Jsme technici.
Tak si dopředu rozmyslíme, co chceme. Chceme mít na každém pásmu
vyladěno ve 4 bodech. To jsou 4 barevné banky našich naladění. Chceme
mít naladěno na všech pásmech. To je 10 tlačítek (160 - 6). Chceme
ladit indukčnost a kapacitu L článku. To jsou dvě řídítka. Ještě
chceme přepínat typ CL a LC. Na to se mi nechtělo "utratit" další
tlačítko a taky jsem si chtěl něco vyzkoušet. A vyzkoušel jsem si
automatické přepínání typu článku. Když začnu po otevření okna ladit s
indukčností, program přepne na LC článek. Když začnu ladit s
kondenzázorem, program přepne na CL článek. Všimněte si detailu. Vedle
okna formuláře s laděním jsem z menu otevřel okno "Properties". Tam
jsou vlastnosti právě vybraného prvku. Já mám na obrázku vybrán Form2
a tabulka "Properties" je narolována tak, že do políčka "Text"
umožňuje napsat text "Ladění - ukaž a klikni ...". Takto snadno
nastavíte všechny parametry, které jde v době návrhu nastavit a které
je třeba nastavit.
Komponenta musí však reagovat také na
události, třeba na kliknutí myší:

Když klikneme na Form nebo na
komponentu, editor (říkám mu tady vývojový prostředek) otevře stránku
s kódem (děláme ve Visual Basicu, tak s kódem Basicu). A otevře ho
tam, v místě, kde zrovna klikáme. To je milé. A právě v tom místě
vidíme napsaný kus kódu, např. Private Sub ..... End Sub. To je tzv.
Subroutine programu, kus kódu mezi těmi slovy Private Sub ... End Sub.
Na obrázku jste viděli, že mezi prvním Private Sub ..... End Sub je
napsáno jen About.Show(). To je kód, který po kliknutí otevře okno
about a v tom okně je cosi napsáno o tomto programu. U druhé
Private Sub ..... End Sub je napsáno "banka =1", což znamená, že jsme
vybrali první banku pro ukládání dat (modrou) a potom je tam několik
řádků, které končí "....Color.Blue". To jsou příkazy, které nám obarví
tlačítka pásem z jiných barev na modrou.
Ještě zmíním, jak Microsoft řešil
nastavování více vlastností, např. položek menu. Na obrázku vidíte
tzv. Collection editor:

Např. položky v menu se přidávají
pomocí tlačítka "Add". Po přidání položky si vyplníte (vpravo vedle)
tzv. ToolStripMenuItem. Všimněte si, že v poli text je napsáno
"Ladění" a pod tím další vlastnosti (uhádnete, o co jde, hi) a pod tím
je skupina Behavior, kde lze vyplňovat další vlastnosti o chování
menu. Jednoduché, že. Tak hlavně, aby nám to programátoři nepošahali v
dalších verzích editoru a hlavně, aby za to Microsoft nechtěl
nehorázný prachy.
Další dovednosti a věci
Jde mi o krátký článek. Vynechal jsem
úmyslně dvě věci - posílání dat do kontroléru (i když jsem nakonec
okopíroval kus kódu zde)

a ukládání dat do
souboru .dat. Jde samozřejmě opět o jednoduché věci (na 1 až 3 řádky).
Příkazy však mají víc parametrů. Pokud bude zájem, popíšu je jindy na
další stránce. Dovednosti spočívají např. v tom, že budeme umět
nastavit port COM. Já jsem baudovou rychlost, počet bitů, stop bity,
paritu nastavil natvrdo. Ručně se nastavuje jen číslo portu,
např. COM7. To musíme udělat, protože zrovna nevíme, jaký COM přiřadí
Windows právě zastrčenému převodníku USB-RS232.
Rovněž se musíme naučit alespoň v
základech ovládat kompilátor a nástroje na ladění. Např. po napsání
jedné nebo více řádek si neprogramátor, jako jsem já, potřebuje
vyzkoušet, zda mu nový kus programu běhá. Viz k příkladu:

Pustil jsem si program, vyzkoušel z
menu položku "Ladění". Otevřelo se pravé okno. Popojel jsem s ním,
abych na okna viděl. Kliknul jsem si hnědou (nebo je to oranžová?)
banku. Tlačítka dole zhnědla. Dal jsem myš na řídítko a popojel s
indukčností. Kliknul jsem, hodnota se zmrazila. Dal jsem myš na
řídítko s kapacitou. Popojel jsem, kliknul, ale to už znáte. Uložil
jsem to do paměti pásma pro 40 metrů. Okno ladění můžete zavřít. Nebo
nemusíte, to není důležité. V levém panelu kliknete na hnědou banku. I
tady tlačítka zhnědnou. Kliknete na pásmo 40. Program vyčte z paměti
hodnoty apošle bajty do kontroleru. Ten nacvaká relátka. A bude je tam
držet, než kliknete na tlačítko "Neladit". Nebo, když začnete hejbat s
řídítkama v panelu ladění. Proto ho raději skrývám.
Elegantní, že? Odborníci vám budou
tvrdit, že pro neprogramátory. Ano mají pravdu. Jen v takto a podobně
koncipovaném programu neprogramátor napíše funkční program dříve, než
dopije jedno pivo (půllitr Pils měli) v hospodě. Včera jsem tam taky
seděl. Dal si dvě piva. A ani za tak dlouhou dobu jsem nebyl schopen
nastudovat a aplikovat programování událostí v jiném editoru, než byl
tento. Namaloval jsem tlačítka, řídítka. Získal spoustu užitečného
kódu. Jenže ty předdefinované procedury bych musel psát do kódu
ručně, se spoustou parametrů. Fuj, fuj, fuj. Proto, páni programátoři,
pokud jste se to naučili během mnoha bezesných nocí, či na drahých
kurzech programování, nesmějte se nám, líným technikům, radioamatérům.
My jsme si místo toho zkonstruovali tuner. Byť jsme programovali jako
"vidláci". |
|
|
Řízení mikropočítače z
PC
Pokud máme alespoň mikrokontrolér s procesorem PIC, PICAXE nebo
ATmega, který nám přijímá bajty ze sériové linky, můžeme ho trénovat.
Máme čím.
Závěr
Chtěl jsem ukázat, že jde některé věci
dělat jednoduše. A to i na stařičkém notebooku v hospodě, daleko od
domova. Ale musíte mít ty správné cajky. S hodinářským
šroubovákem, který má "heft" od krumpáče, také hodinky neopravíte ....
Někde jsem četl, že dobrá metoda, jak
se učit programovat, je napsat nějakou jednodušší hru. Asi na tom něco
bude. Já jsem si zkusil napsat hračku, prográmek, který bude posílat
instrukce do mého TCVRu Icom (a taky do Kenwooda, ale Icom má hezčí
protokol). Funguje to tak, že se podíváte do manuálu, jak se třeba
nastavuje šířka filtru, nacvakáte si instrukci v programu, pošlete do
rádia a podíváte se, zda ji rádio provedlo. Takový program jsem psal
už kdysi ve Visual Basicu, později jsem se učil dělat i s jinými
jazyky ve Visual Studiu a nevynechal jsem ani Pyton, (včetně tkinter a
wxpython, což jsou nástroje GUI pro Pyton). Moje první hračka, kde
jsem si vyzkoušel ty vidlácké věci, jako vytvořit form, nacpat tam
widgety (to jsou ty nesprávně zmíněné komponety), udělat binding,
napsat kódy pro události mi k tomu posloužila. Šla spustit, trénovala
moje rádio a vypadala takto nějak:

Jak píšu, nejsem programátor. A nikdy
nebudu. Jsem na to starý a tak se pouštím jen do jednoduchých
projektů, které potřebuji. To jsou třeba kontroléry, testery, pomůcky
k měření, apod. Ale třeba to někoho z mladších hamů "nakopne" a
vytvoří pár dalších udělátek, která se u staničky hodí.
Poznámka 1: Od dovolené, během které
jsem napsal v Rotterdamském přístavu tento článek, uplynul asi měsíc.
Během té doby jsem si něco přečetl o vývojovém prostředí americké
společnosti xojo.com. Mohu říci, že mě prostředí dost zaujalo. Jde
sice o placené (a dost drahé) nástroje. Umožňují však kompilovat
vytvořené programy pro různé platformy desktopů, tedy nejen pro
Windows, také pro MacOS, Linuxy, Rapsberry, ale také pro mobilní
hračky a web. Zdarma lze po registraci stáhnout prostředí pro výuku a
vývoj aplikací. Ty lze spustit jen na PC, kde je Xojo instalováno. Jde
o nástroj s nádhernou strukturou helpů a nápověd a s velkým množstvím
profesionálně napsaných komponent, mezi kterými nechybí komponenty pro
práci s mnoha databázovými stroji, komponenty pro komunikaci, včetně
seriového portu, samozřejmě, ale také pomocí TCP/IP a dalších síťových
protokolů. První fungující jednoduchou aplikaci (zase tuner) jsem
naklikal hned první večer po instalaci.
Určitě budu tomuto nástroji
věnovat nějakou tu stránku na webu.
Poznámka 2: Také jsem nainstaloval
nové Microsoft Visual Studio 2017 Community (to je verze zadarmo, ale
možná jen na chvíli). Nainstaloval jsem si IDE pro vývoj aplikací v
jazyce Visual Basic a Visual C#. Také se s tím dá
dělat. Bohužel, vadí mi, že instalace je dost rozsáhlá, řekl bych,
obrovská. Po instalaci mi to příliš nefungovalo. Programy lze
samozřejmě psát, ale nenainstaloval se správně Debuger. Asi nějaký
"bug". Také jsem si všiml, že po ukončení napsaného programu se
neukončí všechny procesy. Takže jsem jeden program 5x spustil, 5x
ukončil a ve správci procesů jsem viděl 5 běžících procesů po jejich
ukončení. U Microsoftu se nedivím, vše mají rozsáhlé, docela
nepřehledné, s obrovským množstvím balastu. Takže spíš očekávám, že
chlapci budou ladit. A aktualizovat, aktualizovat a aktualizovat. Jako
u jejich Windows 10.
Poznámka 3: Pokud
si stáhnete např. zde uvedené programy k vyzkoušení, pravděpodobně vám
je zablokuje antivirus a označí je jako nebezpečné. To je další
problém desktopových aplikací, Windows a hackerských aktivit.
Antivirák samozřejmě bezpečnou aplikaci nerozezná od té škodlivé. A
tak řve a prudí. Naprosto nesmyslně. Ale s tím nic nenadělám. Jsem
jaksi smířen, že jednou to, co neprojde skrz Microsoft (nebo Google),
nepůjde nijak nainstalovat nebo spustit. To to chlapci dopracovali ...
Dovětek z konce
ledna 2018:
Bohužel, jak plynul čas, tak jsem
dospěl k názoru, že s Microsoftem ztrácím čas. Přestože si
uvědomuji, jak je důležité používat stejný šroubovák, jako v
práci, stejnou židli, jako v práci, obecně stejné nástroje, jako v
práci. Jenže MS zvolil marketing, který se mi nelíbí, obchodní
politiku, která se mi nelíbí a přístup, který se mi nelíbí. Viz
podrobnosti a
důvody zde. Prostě nastal čas poohlédnout se po něčem
jiném. Operační systémy jsem v několika PC nakonec nahradil Linuxy.
Oblíbeným se stal Linux Mint. Poslední instalace nese krásné jméno
Sylvia. Byl tedy čas začít kreslit programy (technik
programy kreslí) v něčem jiném. Další milé překvapení bylo,
že jsem našel celou řadu hezkých nástrojů ke kreslení programů pro
Linux. Proto jsem nakreslil během týdne většinu svých řídících
programů. Ukázka anténního tuneru je na obrázku vpravo. Kupodivu,
vše šlo rychle. Naučil jsem se pracovat s designérem IDE, psát
funkce a procedury v oblíbených jazycích (Basic, Python, C++),
spustit kompilátory, udělat spustitelné balíčky a vykašlat se na
produkty Microsoft. Které jsem tu, mimochodem, preferoval.
Jsem v etapě, kdy bych mohl všechny články o vidláckém
programování technikem-neprogramátorem inovovat. Snad někdy :-)
|
 |
 |
|
|