English
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.

Nastavení portu

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".

Karta 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 (18 bytů) v různých formátech. Dvojklik do libovolného žlutého pole kopíruje jeho obsah do schránky.

Karta HEX

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.

Karta info

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.

Odesílání řetězců

   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)!

Odesílání souboru Odesílání integeru

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.