SM terminál
|
Tento program je jednoduchý terminál pro sériový port, případně pro virtuální port s převodníky FT232 a podobnými.
Je určen především pro účely textové a binární komunikace s jednočipy (používám ho zejména pro debug).
Program je napsán jako vícevláknový, tj. příjem i odesílání dat je řešeno v samostatných vláknech s vyšší prioritou,
takže by němělo docházet k výpadkům komunikace a ani tuhnutí programu (snad s výjimkou prehistorických PC při nejvyšších baud rate).
Všechny potenciálně déle trvající operace jsou přerušitelné a navíc vybaveny timeouty, takže v případě problémů s komunikací by němel program vytuhnout.
Na tomto místě se hodí zmínit, že virtuální COM port s FT232, resp. ovladače k němu, mají jednu zásadní vadu.
V případě dlouhodobého blokování odesílní dat z PC HW řizením toku nelze port zavřít.
Ani tvrdé ukočení programu nic neřeší, proces programu zůstane v systému viset až do vyprázdnění odesílacího bufferu
portu nebo jeho odpojení. Chovají se tak i jiné terminály, takže chyba zřejmě nebude na mé straně. Podle technické podpory
FTDI to ale není chyba nýbrž "feature", takže se s tím asi moc dělat nedá.
Program byl vyvinut v prostředí BDS2006 Turbo C++ a testován pouze ve M$ Windows XP, takže netuším, jak bude chodit
v novějších verzích OS. Ve verzích starších, než Windows 2000 program nepůjde téměř jistě, protože došlo k určitým změnám použitých api funkcí.
1 - Nastavení
Nastavení parametrů sériového portu se provádí v menu "Port->Settings". Měl by zde být vidět
výčet dostupných COM portů (pouze volných). Tlačístko "Refresh" slouží k obnovení seznamu portů, pokud by se
při vstupu do nastavení náhodou nic nenašlo.
Kromě defaultních datových toků lze nastavit i vlastní hodnoty, což se hodí pro virtuální COM s převodníky FT232.
Hodnoty ale musí být pouze v mezích daného zařízení. Pokud nejsou, tak si ovladače portu samy přepočtou žádaný datový tok na
nejbližší platný (ale v programu nebude skutečná hodnota viditelná!).
Pokud není kterákoliv hodnota nastavení platná, měla by být při připojení vypsána chyba,
ale to že něco jde nastavit ještě neznamená, že to tak bude opravdu fungovat.
Např. kombinace řízení toku CTS+DTR s virtuálním COM portem sice šla nastavit, ale nebude fungovat.
Tytéž nastavení lze v případě potřeby provádět i v "config.ini". Tam je navíc celá
řada pokročilých nastavení, do kterých ovšem nedoporučuji zasahovat, pokud si uživatel není zcela jistý významem!
Detailní popis uvádí následující kapitola.
|
1.1 - "config.ini"
Kromě běžných nastavení jsou zde další speciální parametry umožňující měnit vnitřní chování programu.
Vřele nedoporučuji zasahovat do nich, pokud si uživatel není jistý tím, co přešně dělají!
Z běžných nastavení je zde jen jedno navíc oproti menu, a to "special_char_display" a "special_char" v sekci
[TXTVIEW]. Tyto parametry umožňují nahrazení jinak neviditelných znaků zvoleným symbolem.
V sekci [PORT] jsou k dispozici pokročilá nastavení portu. Parametry "port_rx_size" a "port_tx_size"
umožňují přizpůsobit velikosti bufferů alokovaných ovladači portu podle druhu provozu terminálu.
Pro vysoké datové toky je rozumné volit 8kiB a více, naopak pro nízké datové toky nebo ojedinělé odesílání několika bytů je možné tyto hodnoty snížit
až na 256B. Parametr "port_tx_size_lim" umožňuje zapnout automatické omezení velikosti tx bufferu podle přenosové rychlosti až na 128B.
Velikost je pak omezována tak, aby bylo v bufferu maximálně asi 1.5s dat.
Lze zde rovněž nastavit rx timeouty. Toto nastavení může být užitečné pro velmi nízké datové toky, kde by defaultní
interval nemusel být dostačující pro odeslání větších bloků dat.
Detailní popis významu těchto hodnot je uveden v MSDN knihovnách (Communications Functions: funkce "SetCommTimeouts()" a "SetupComm()").
Další nastavení v sekci [PORT] se týká samotných rx a tx vláken. Ty pochopitelně potřebují FIFO buffery a
jejich délku lze v případě potřeby v jistých mezích měnit. Dále lze měnit "sleep" interval vláken, což je minimální
doba, po kterou OS uspí vlákno, když nejsou k dispozici žádná data nebo jsou plné buffery.
Tímto nastavením lze ovlit vytížení CPU. Zatímco pro vysoké datové toky je lepší kratší interval, pro nízké postačí
i desítky ms. V krajním případě lze nastavit i 0ms, ale v tomto případě bude vytížení CPU 100%.
Posledním nastavením sekce [PORT] je nastavení alokačního kroku RAM bufferu pro přijímaná data.
2 - Ovládání terminálu
2.1 - Karta "Text"
Zde se zobrazují přijatá data. Zobrazení se neobnovuje
po každém přijatém znaku, jak to bývá u jiných terminálů, ale maximálně asi 10x za vteřinu.
Aktuální rychlost obnovování se mění podle datového toku, ale minimum je 1x za vteřinu.
Přijatý text lze uložit do soubrou přes menu "Rx->Text->Save".
Mimo jiné si lze vybrat různé varianty zalamování řádku. Změna tohoto nastavení se projeví až na nových datech nebo
po stisknutí "Rx->Text->Refresh text".
2.2 - Karta "HEX"
Je jednoduchý prohlížeč přijatých binárních dat. Pro obnovování dat platí totéž, co pro text.
Přijatá binární data lze uložit přes menu "Rx->Binary". Lze uložit buďto vše nebo
vybraný úsek (výběr lze provést pomocí zkratek "Ctrl+B" a "Ctrl+E" nebo číselně).
Kromě základního hex-editorového pohledu je k dispozici kurzor s odečtem vícebytových položek (1 až 8 bytů) v různých formátech.
Dvojklik do libovolného žlutého pole kopíruje jeho obsah do schránky.
2.3 - Karta "Info"
Zde jsou zobrazovány některé informace o nastaveném formátu
a HW informace poskytované ovladači vybraného portu.
2.4 - Odesílání dat z terminálu
Data lze mimo jiné odesílat přímo z klávesnice (s tlačítkem "From keybard").
Stisk "Enter" zde odesílá znak CR, zatímco "Shift+Enter" znak LF. Pomocí pár tlačítek lze odeslat také některé
speciální znaky. Znak "EOF" je fixně 0x00, sekvence pro zakončení řádku "EOL" je volena podle nastavení
"Rx->Text". "Tab" je nečekaně tabulátor (0x07)
Terminál také umožňuje odesílat binární data ze souboru (tlačítko "Send file"). Přenos by měl jít
v libovolné fázi pozastavit nebo přerušit a v případě, že je dlouhodobě blokován, měl by vypršet timeout a přenos bude automaticky
ukončen.
Dále lze binárně odesílat celočíselné konstanty v růzých formátech (tlačítko "Send integer")
a také lze odesílat řetězce s různými zakončovacími znaky.
Odesílané data nejsou zobrazovány ani v textovém a ani v hexa prohlížeči (vzhledem k nezavislému blokovému rx
a tx prakticky nepřipadá v úvahu je správně sloučit s přijatými)!
3 - Historie verzí
V0.90 - 22.2.2011:
|
První verze.
|
V1.00 - 21.6.2011:
|
Rozšířené nastavení v "config.ini", zdokonalený prohlížeč "Text" (metody zalamování řádků) i "Hex" (označovnání bloku) a také pár nových tlačítek/zkratek pro odesílání speciálních znaků.
|
V1.30 - 12.2.2012:
|
Další nastavení v "config.ini", vylepšení "Hex" prohlížeče, možnost odesílat řetězce. Obnovování přijatých dat
je nyní automaticky zpomaleno při vysokých datových tocích (zbytečně to vytěžovalo CPU).
Opraveny problémy s odesílním souborů (při přerušení při pauze docházelo k odesílání pár bytů navíc).
|
V1.35 - 7.4.2012:
|
Pár nevýznamných úprav (historie textových příkazů) a opraveno pár drobností.
|
V1.36 - 9.8.2017:
|
Oprava zakončovacích znaků ve funkci odesílání znaků - posílalo to pořád CR.
|
4 - Licence
Je to freeware, takže může být libovolně používán a šířen, ale pouze se všemi přiloženými soubory (zejména tento help) a bez úprav!
Autor nenese žádnou zodpovědnost za případné problémy nebo škody vzniklé použitím tohoto SW ať už by byly jakékoliv.
Pokud s uvedenými podmínkami nesouhlasíte, pak tento SW nepoužívejte.
5 - Kontakt
V případě problémů s programem mě můžete kontaktovat na e-mailu
s.maslan@seznam.cz. Nějaké ty informace k programu a případné
další verze lze nalézt na mém webu: http://www.elektronika.kvalitne.cz/SW/SM_terminal/SM_terminal.html.
(c) 2011-2012, Stanislav Mašláň - Všechna práva vyhrazena.
|