COM Guru Terminal jako emulátor zařízení nebo aplikace na seriové lince

  • Autor příspěvku
  • Čas na čtení:13 mins read

1. Kontext a cíle emulace v sériové komunikaci

Vývoj zařízení a aplikace připojené přes sériovou linku je typicky rozdělen mezi více týmů a běží paralelně. V praxi to vede k tomu, že jedna strana rozhraní bývá v určité fázi projektu nedostupná, nekompletní nebo nestabilní. Emulace doplňuje chybějící protějšek komunikace tak, aby šlo pokračovat ve vývoji a testování bez čekání na fyzický hardware nebo finální implementaci protokolu.

Emulace má v sériové komunikaci dva základní směry:

  • Emulace zařízení: terminál se chová jako senzor/řídicí jednotka a poskytuje datový tok a odpovědi, které očekává vyvíjená aplikace. Cílem je ověřit integraci, parsování, stavové automaty aplikace, timeouty a chybové scénáře bez reálného zařízení.
  • Emulace aplikace: terminál se chová jako nadřazený systém (host) a generuje dotazy, povely a sekvence, které zařízení musí zpracovat. Cílem je testovat firmware, protokolovou logiku, odolnost vůči chybám, stabilitu a reakce na zátěž bez nutnosti mít finální klientskou aplikaci.

V obou směrech je klíčové, aby emulace nebyla jen „ruční posílání textu“, ale aby umožňovala přiblížit se reálnému provozu a současně zachovat opakovatelnost. Prakticky jde o tři typické požadavky, které se ve vývoji objevují opakovaně:

  1. Simulace časového chování
    Mnoho zařízení komunikuje periodicky (telemetrie, heartbeat) nebo reaguje v definovaných intervalech. Bez časového modelu se aplikace či firmware chovají jinak než v reálu: bufferování, zpracování front, timeouty a přetížení se projeví až pozdě. Cílem je umět generovat datové proudy v kontrolované periodě a testovat chování při realistických i hraničních intervalech.
  2. Simulace reakční logiky protokolu
    Řada protokolů je založená na vzoru request/response: příkaz, potvrzení, návratová data, chybový kód. U emulace je cílem pokrýt běžné i chybové větve bez nutnosti pokaždé ručně odpovídat. Důležitá je schopnost reagovat podle rozpoznaného vzoru zprávy, nikoli jen podle jednoho konkrétního řetězce.
  3. Opakovatelnost a reprodukovatelnost testů
    Regresní test má mít stejné vstupy a stejné pořadí, aby se dal porovnat výsledek mezi verzemi aplikace/firmwaru nebo mezi počítači v týmu. Cílem je umět přehrát stejnou sekvenci komunikace, sdílet ji a spustit znovu bez ručních zásahů. To zahrnuje i možnost předat nastavení terminálu ostatním členům týmu.

Vedle funkčního testování se v praxi často řeší také robustnost: jak se aplikace nebo firmware chovají při zahlcení linky, při nevalidních zprávách nebo při nestandardních sekvencích. Emulace má umožnit tyto situace vyvolat kontrolovaně, cíleně a opakovaně, aby se odhalily problémy typu nekonečné čekání, nekorektní recovery, úniky paměti, přetečení bufferů nebo chybné přepínání stavů.

Tato série scénářů staví na tom, že terminál umí:

  • a zabalit test do konfigurace, kterou lze sdílet a spouštět opakovaně.
  • generovat komunikaci v čase,
  • přehrávat připravené sekvence dat,
  • automaticky reagovat na rozpoznané vstupy
COM Guru

2. Základní testovací topologie: fyzický vs. virtuální kabel

Testy nad sériovou linkou se v praxi opírají o dvě topologie. Volba zásadně ovlivní, co jste schopni ověřit a jak rychle dokážete opakovat stejné scénáře.

Varianta A: Fyzické připojení (reálný kabel / USB-UART / RS-232 převodník)

Schéma

  • Aplikace (PC) ⇄ fyzický COM port ⇄ převodník / kabeláž ⇄ zařízení

Kdy dává smysl

  • ověření „celé cesty“ včetně fyzické vrstvy (kabeláž, rušení, převodníky, handshaking),
  • integrace s prototypem nebo hotovým HW,
  • diagnostika problémů, které se na virtuální lince neprojeví (např. nestabilní napájení převodníku, nekorektní RS-232 úrovně, špatné zapojení signálů).

Limity

  • závislost na dostupnosti HW a konkrétním převodníku,
  • horší reprodukovatelnost (změny v prototypu, variabilní chování),
  • obtížnější paralelizace testů v týmu (jeden prototyp, jeden port).

Varianta B: Virtuální kabel (dvojice propojených virtuálních COM portů)

Schéma

  • Vyvíjená aplikace (PC) ⇄ virtuální COM A
  • COM Guru Terminal ⇄ virtuální COM B
  • Virtuální COM A ⇄ Virtuální COM B (software „null-modem“ propojení)

Tato topologie umožní simulovat protější stranu komunikace čistě softwarově a izolovat vývoj protokolu od dostupnosti hardware.


2.1 com0com: otevřený „null-modem“ ovladač pro Windows

Co řeší

  • com0com je kernel-mode virtuální sériový ovladač pro Windows, který umí vytvořit páry propojených virtuálních COM portů (výstup jednoho je vstup druhého a naopak).

Praktický testovací setup

  1. Vytvoříte pár portů (např. COM10 ↔ COM11).
  2. Vyvíjenou aplikaci připojíte na COM10.
  3. COM Guru Terminal připojíte na COM11.
  4. Terminál následně emuluje zařízení nebo aplikaci podle zvoleného scénáře (timery, file player, autoresponse).

Poznámka k rozšířeným topologiím

  • Ekosystém com0com typicky zmiňuje i „hub“ nástroj (hub4com), který umí data z jednoho portu přeposílat na více portů nebo kombinovat COM a TCP a podobně (užitečné pro složitější testovací routování).

Provozní poznámky (pro testy je vhodné mít explicitně uvedeno)

  • Virtuální kabel ověřuje primárně aplikační/protokolovou vrstvu. Problémy fyzické vrstvy (rušení, úrovně RS-232, chybné zapojení vodičů, kvalita převodníku) se zde neprojeví.
  • U virtuálních portů je vhodné mít v týmu sjednocený postup instalace a kompatibility ovladače. U Windows může být relevantní otázka podepisování ovladačů a kompatibility s novějšími verzemi OS.

2.2 Komerční řešení pro virtuální porty: kdy dávají smysl

Komerční nástroje jsou typicky volené tehdy, když je důležitá:

  • jednoduchá instalace na různých PC (včetně firemních politik, driver signing, bez zásahů do bezpečnostních režimů),
  • dlouhodobá údržba a podpora,
  • pokročilejší funkce nad rámec „páru portů“ (směrování, sdílení portů, named pipes, mosty do sítě).

Příklady často používaných řešení (typově, nikoli jako doporučení jediné správné volby):

  • Eltima Virtual Serial Port Driver – tvorba párů virtuálních portů propojených „null-modem kabelem“, cíleno na vývoj/test/debug.
  • HHD Software Virtual Serial Ports – tvorba virtuálních portů a propojení „software null-modem“ kabelem, včetně možností napojení na aplikace/virtuální zařízení.
  • FabulaTech Virtual Serial Port Control – správa a vytváření virtuálních portů, cíleno na scénáře emulace a řízení portů.

Doporučené rozhodovací kritérium

  • Pokud potřebujete rychle postavit vývojový „virtuální kabel“ pro lokální testy protokolu, otevřená varianta typu com0com je často dostatečná.
  • Pokud potřebujete standardizovat instalaci napříč firmou, minimalizovat tření s ovladači a zároveň využít pokročilé směrování nebo podporu, komerční řešení obvykle sníží provozní náklady (zejména v týmu a CI/test prostředí).

Co z této kapitoly plyne pro další scénáře

  • Emulace zařízení pro testování aplikace: typicky Varianta B (virtuální kabel) + COM Guru Terminal na jedné straně, aplikace na druhé.
  • Emulace aplikace pro testování FW/zařízení: buď Varianta B (pokud testujete FW přes PC aplikaci/bridge), nebo Varianta A (pokud ověřujete i fyzickou vrstvu).

3. Use case: Emulace zařízení pro testování vyvíjené aplikace

Cílem je nahradit chybějící nebo nestabilní hardware deterministickým protějškem, který se z pohledu aplikace chová jako reálné zařízení. Základní topologie je obvykle „virtuální kabel“: aplikace běží na jednom virtuálním COM portu, COM Guru Terminal na druhém. Tím se test odpojí od fyzického HW, ale zachová charakter sériové komunikace (stream, latence v řádu OS, framing na úrovni protokolu).

Typické výstupy, které má emulace pokrýt

  • aplikace správně parsuje příchozí data (rámce/řádky, kontrolní součty, oddělovače),
  • aplikace korektně obsluhuje stavový automat (init → run → error → recovery),
  • timeouty, retry logika a chybové hlášení odpovídají očekávání,
  • zpracování dat je stabilní i při vyšší frekvenci nebo při „špinavém“ vstupu.

3.1 Periodická telemetrie bez závislosti na příkazech (Timers)

Problém, který se tímto testuje: aplikace často není jen „dotazuji se a čekám“, ale průběžně přijímá telemetrii. Bez reálného toku dat se neověří fronty, parsování v čase, agregace hodnot ani reakce UI/logic na pravidelné aktualizace.

Scénáře, které dávají smysl emulovat:

  • senzor vysílá měřenou hodnotu každých 100–1000 ms,
  • zařízení periodicky posílá stav (ready/busy, režim, teploty, napětí),
  • heartbeat rámec v pevné periodě, který aplikace používá pro detekci „device alive“.

Jak se k tomu v terminálu typicky přistupuje:

  • Jeden timer pro jeden typ zprávy nebo „kanál“ telemetrie.
  • Více timerů paralelně, pokud má zařízení různé periody (např. rychlá hodnota + pomalý stav).
  • Perioda se volí tak, aby odpovídala očekávání aplikace (a aby se daly vyvolat i hraniční stavy: příliš rychlé zasílání, výpadky).

Příklady, které se v praxi osvědčují:

  • Heartbeat: jednoduchý rámec každou 1 s; aplikace resetuje „watchdog“ při každém přijetí.
  • Dvě periody: rychlá telemetrie 10 Hz + diagnostika 0,5 Hz; aplikace musí obě vrstvy zpracovat bez blokování.

Co si hlídat při návrhu testu:

  • Jestli aplikace zvládá příjem i v okamžiku, kdy zároveň odesílá příkaz (konkurence RX/TX).
  • Jestli dochází k postupnému zpomalování (UI thread, fronty, logování).
  • Jestli aplikace korektně detekuje „ticho“ (timer zastavený / simulovaný výpadek).

3.2 Reálný datový tok z logu (File player)

Problém, který se tímto testuje: ručně posílané zprávy obvykle neobsahují variabilitu, okrajové hodnoty a „šum“ reálného provozu. Log z prototypu nebo z provozu je nejrychlejší způsob, jak aplikaci vystavit realistickému toku dat.

Použití file playeru v režimu emulace zařízení:

  • Soubor obsahuje zprávy po řádcích (nejčastěji textové rámce nebo „line-based“ protokoly).
  • File player odesílá řádky postupně v nastavené periodě.

Scénáře, které tím pokryjete:

  • Regrese: vždy stejná posloupnost zpráv; porovnání chování aplikace mezi verzemi.
  • Validace parseru: široké spektrum reálných hodnot, včetně hraničních.
  • Simulace chyb: log může obsahovat nekompletní/poškozené rámce, které aplikace musí ustát.

Organizace testů: jeden vs. více file playerů

  • Jeden soubor: jednoduché řízení a reprodukovatelnost, vhodné pro „přehrát scénář“.
  • Více file playerů: oddělení typů zpráv (telemetrie vs. alarmy) a různé periody. V praxi to odpovídá zařízení, které posílá různé streamy s odlišnou frekvencí.

Co si hlídat:

  • Pokud je v logu důležitá přesná časová věrnost (nepravidelné jevy), je potřeba tomu přizpůsobit strukturu souboru nebo způsob přehrávání. V opačném případě se testuje primárně robustnost parseru a zátěž, nikoli timing konkrétního provozu.
COM Guru Terminál

3.3 Odezvy na příkazy a „request/response“ (Auto response + regex)

Problém, který se tímto testuje: velká část aplikací je postavená na povelování zařízení. Bez automatických odpovědí se test rychle zvrhne v ruční klikání a nedá se škálovat ani opakovat.

Princip testu:

  • aplikace odešle příkaz,
  • terminál zachytí příchozí zprávu,
  • pokud zpráva odpovídá pravidlu (regex), terminál odešle předdefinovanou odpověď.

Typické kategorie pravidel:

  1. ACK/NAK model
    • jakmile přijde syntakticky validní příkaz, vrátí se „ok“ / potvrzení,
    • při nevalidním formátu se vrátí chyba.
  2. Dotazy na hodnoty
    • na konkrétní dotaz (např. T?) se vrací hodnota ve formátu, který aplikace očekává.
  3. Stavové odpovědi
    • příkaz změní stav emulovaného zařízení a další odpovědi se odvíjejí od „aktuálního režimu“.
    • (Pokud terminál drží stav implicitně přes sadu pravidel a spuštěné režimy/timery, testuje se i správná interpretace stavu na straně aplikace.)

Proč regex:

  • jedno pravidlo pokryje rodinu příkazů,
  • lze validovat syntaxi (tj. „příkazy vypadají správně“),
  • lze cílit na příkazy z konkrétní skupiny (init/config/run).

Co si hlídat:

  • aplikace často očekává také časování (odpověď do X ms). Auto response umožní ověřit timeouty a retry logiku tím, že pravidlo dočasně vypnete nebo upravíte (např. vracet chybu).

3.4 Kombinace: telemetrie + povely současně (Timers + File player + Auto response)

Reálná zařízení typicky posílají telemetrii průběžně a zároveň reagují na povely. Tato kombinace je pro test aplikace důležitější než izolované „přehrávání logu“ nebo izolované „odpovídání na příkazy“.

Praktický profil emulovaného zařízení:

  • 1–N timerů pro periodická data (telemetrie, heartbeat),
  • 0–N file playerů pro „real world“ tok nebo scénáře,
  • sada autoresponse pravidel pro příkazy aplikace.

Co tím ověříte:

  • aplikace zvládne paralelní RX stream a TX dotazování,
  • parser a stavový automat fungují i při souběhu událostí,
  • logování, UI a business logika nesnižují propustnost a stabilitu.

4. Use case: Emulace aplikace pro testování zařízení nebo firmware

V tomto scénáři se role otočí. Testovaným prvkem je zařízení (nebo jeho firmware) a COM Guru Terminal zastupuje hostitelskou aplikaci: posílá dotazy, konfigurační příkazy, provádí sekvence a reaguje na to, co zařízení vrací. Praktický cíl je mít deterministický „testovací klient“, který lze spustit kdykoli bez závislosti na tom, zda už existuje finální PC aplikace.

Typické výstupy, které má emulace pokrýt

  • zařízení přijímá a korektně parsuje příkazy v očekávaném formátu,
  • firmware správně implementuje sekvence a přechody stavů (init/config/run),
  • odpovědi jsou včasné a konzistentní (timeouty, chybové kódy, potvrzení),
  • zařízení se stabilně chová při zátěži a při nekorektních vstupech (error handling a recovery).

4.1 Periodické dotazy a keep-alive (Timers)

Smysl testu: velká část zařízení je v provozu „pollovaná“ – host periodicky vyžaduje hodnoty nebo potvrzuje, že spojení žije. Tím se ověřuje, že firmware zvládá dlouhodobý provoz a že nedochází k degradaci v čase.

Typické scénáře:

  • periodický dotaz na měřenou hodnotu (READ?) každých N ms,
  • keep-alive/heartbeat (PING) a očekávání odpovědi (PONG),
  • periodická kontrola stavu (STATUS?) pro dohled a diagnostiku.

Jak tím ověřovat funkčnost:

  • zvyšováním frekvence dotazů se testuje propustnost a robustnost parseru,
  • vynecháním dotazu (timer stop) se simuluje výpadek hosta a sleduje se chování zařízení,
  • kombinací více timerů se simuluje reálný host (rychlé dotazy + pomalé diagnostické dotazy).

Co je dobré explicitně hlídat:

  • zda zařízení správně rozlišuje rámce, když dotazy chodí rychle za sebou,
  • zda zařízení neblokuje zpracování RX v okamžiku, kdy generuje odpověď,
  • zda se po delší době nezhoršují latence nebo se nehromadí interní fronty.

4.2 Test sekvencí a stavových automatů (File player)

Smysl testu: firmware obvykle není jen „příkaz → odpověď“. Bývá tam inicializace, konfigurace, přepínání režimů, kalibrace, start/stop měření. File player je vhodný pro opakované spouštění stejné sekvence příkazů a porovnání výsledků mezi verzemi FW.

Typické sekvence:

  • init handshake (HELLO, ID?, CAPS?),
  • konfigurace (SET RATE 10, SET MODE X, SAVE),
  • provozní část (START, průběžné dotazy, STOP),
  • chybové větve (záměrně špatný parametr, neočekávané pořadí příkazů).

Jak to prakticky stavět:

  • file pro „happy path“ (správná sekvence),
  • samostatné file pro negativní scénáře (nevalidní parametry, chybné pořadí),
  • pokud je potřeba, lze mít více file playerů (např. jeden pro „control“ kanál, druhý pro „diagnostics“), ale často je lepší držet jeden deterministický scénář.

Co si pohlídat:

  • pokud zařízení očekává určitou prodlevu mezi kroky (např. čas na uložení konfigurace), volí se perioda tak, aby odpovídala reálnému chování hosta,
  • pro diagnostiku je vhodné logovat, který řádek scénáře právě proběhl, aby se chyby daly snadno přiřadit ke konkrétnímu kroku.

4.3 Reakce na události zařízení (Auto response)

Smysl testu: zařízení někdy posílá asynchronní události (alarm, warning, ready, state change). Host musí reagovat – potvrdit, přepnout režim, vyžádat detail nebo zastavit proces. Auto response umožní jednoduchou reakční logiku bez nutnosti psát testovací klientský software.

Typické scénáře:

  • zařízení po startu vyšle READY → host odešle START,
  • zařízení vyšle ALARM:<code> → host odešle STOP a STATUS?,
  • zařízení vyšle ERR → host odešle RESET nebo přepne do diagnostiky.

Proč regex:

  • události bývají parametrizované (ALARM:123, WARN:TEMP_HIGH),
  • regex umožní jedním pravidlem pokrýt celou třídu událostí a reagovat konzistentně.

Co tím ověřujete:

  • zařízení generuje očekávané události v očekávaném formátu,
  • zařízení zvládá následné příkazy i ve stavu chyby,
  • zařízení se po recovery vrací do stabilního stavu.

4.4 Kombinace: host simuluje „reálný provoz“ (Timers + File player + Auto response)

Nejlepší pokrytí vznikne kombinací:

  • file player pro inicializační a konfigurační sekvenci,
  • timery pro průběžné dotazy během provozu,
  • autoresponse pro reakce na asynchronní události zařízení.

Tím se dostanete k modelu, který se blíží reálné aplikaci, ale zůstává opakovatelný a rychle upravitelný.

Výsledek je konzistentní a snadno předatelný postup: stejná sada kroků, stejné chování, méně prostoru pro ruční chyby.


5. Závěr

Emulace v sériové komunikaci řeší praktický problém paralelního vývoje: jedna strana rozhraní (HW nebo aplikace) bývá dočasně nedostupná, nehotová nebo nestabilní. Smyslem je mít deterministický protějšek komunikace, který umožní ověřovat parsování, stavové automaty, timeouty, retry logiku a chování při zátěži bez čekání na finální implementaci.

Základní rozhodnutí je testovací topologie. Fyzické připojení přes reálný COM port a převodník je nezbytné pro ověření fyzické vrstvy a integrace, ale má vyšší provozní tření a horší reprodukovatelnost. Virtuální „kabel“ je vhodný pro vývoj a protokolové testy: dvojice propojených portů (typicky přes com0com nebo komerční alternativy) umožní, aby vyvíjená aplikace komunikovala s terminálem stejně, jako by šlo o skutečné zařízení.

V režimu emulace zařízení terminál zastupuje senzor nebo řídicí jednotku. Timery generují periodickou telemetrii a heartbeat rámce, file player přehrává reálné logy nebo připravené posloupnosti řádek po řádku a auto response reaguje na příkazy aplikace dle regex pravidel a vrací předem definované odpovědi. Kombinací těchto mechanismů lze simulovat běžný provoz i hraniční scénáře (současný RX stream + TX dotazy, výpadky, nekorektní vstupy).

V režimu emulace aplikace terminál zastupuje hostitelský software a testovaným prvkem je zařízení nebo firmware. Timery slouží pro periodické dotazy a keep-alive, file player pro deterministické sekvence (init/config/run) a auto response pro reakce na asynchronní události zařízení (ready/alarm/error). Tím vzniká reprodukovatelný testovací klient, který lze používat i před dokončením finální aplikace.

Související články

COM Guru Terminal – sériový terminál nové generace pro Windows

COM Guru Terminál jako jednoduché SCADA centrum pro sériovou linku

COM Guru Terminál – Lehké penetrační a robustnostní testování komunikační vrstvy

COM Guru Terminál – Ovládání a konfigurace zařízení

Související produkty