Sériové rozhraní: Vstupy a výstupy (6. díl) - Builder.cz - Informacni server o programovani

Odběr fotomagazínu

Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!

 

Zadejte Vaši e-mailovou adresu:

Kamarád fotí rád?

Přihlas ho k odběru fotomagazínu!

 

Zadejte e-mailovou adresu kamaráda:



Delphi

Sériové rozhraní: Vstupy a výstupy (6. díl)

seriovy port

19. března 2002, 00.00 | Po delší odmlce je tu nový díl seriálu o práci se seriovým rozhraní. Dnes si řekneme něco málo o přístupu k digitálním vstupům a výstupům s jednoduchým příkladem.

Sériové rozhraní má 3 digitální výstupy - DTR (Data Terminal Ready - pin 4 na konektoru Canon 9), RTS (Request To Send - pin 7) a TxD (Transmit Data - pin 3). Tyto výstupy můžeme jednoduše ovládat.

Zapojení LED diod

Pro indikaci stavu výstupů použijeme všude dostupné a levné LED diody. Tyto diody můžeme připojit přímo na digitální výstupy, protože výstupy umožňují odebírat malý proud (10 až 20 mA).
Vývody LED Dioda má 2 vývody (elektrody) - katodu (záporná elektroda) a anodu (kladná elektroda). Katoda bývá delší než anoda. Anodu jedné diody zapojíme na pin 4 a katodu na pin 5 "samičího" konektoru Canon 9, anodu druhé na pin 7 a katodu na pin 5 a anodu třetí na pin 3 a katodu opět na pin 5. Tímto zapojením jsme využili všechny 3 digitální výstupy. Pokud chceme vyvést LED diody vodiči doporučuji pro katody společný vodič, který připojíme na pin 5 (GND) - 3 LED diody jsou zapojeny pomocí čtyř vodičů.
Pozorní čtenáři si jistě všimli, že jedna dioda je připojena přímo na datový výstup TxD (pin 3). To je trošku netradiční zapojení - využívá se stavu break. Tento stav se využívá v běžném asynchronním přenosu dat. Nám se teď hodí jako přímý digitální výstup.

Spínání výstupů

Diody máme zapojeny, můžeme je softwarově spínat.

  1. Vytvoříme nový projekt a do formu umístíme komponentu VaComm, kde nastavíme tyto properties: AutoOpen - True, DTRControl - dtrDisable, FlowControl - fcNone, PortNum - číslo portu, ke kterému jsou LED diody připojeny a RTSControl - rtsDisable. Tímto nastavením zajistíme, aby na všech třech výstupech byly log. 0, aby diody po spuštění programu nesvítily.
  2. Do formu vložíme Button a vytvoříme událost OnClick do které vložíme následující kód:
    VaComm1.SetDTR(true);
    VaComm1.SetRTS(true);
    VaComm1.SetBreak(true);
    Tento kód způsobí rozsvícení všech diod - na jednotlivé vstupy jsme nastavili log. 1, tím pádem i napětí.
  3. Pokud chceme přidat kód způsobující zhasnutí diod, použijeme tytéž funkce (VaComm1.SetDTR atd.), ale s parametrem false.

Blikač s LED diodami

Jednoduchou ukázkou využití výstupů je blikač složený z LED diod. Výsledkem je blikání semaforu při průjezdu vlaku na železničním přejezdu. Program předpokládá LED diody zapojené na výstupech RTS (pin 7) a TxD (pin 3). Využijeme předcházející projekt.

  1. Deklarujeme proměnné (část var):
    stav1:boolean=true;
    stav2:boolean=false;
    Inicializace proměnných: první dioda svítí, druhá nesvítí.
  2. Do formu vložíme timer a nastavíme property Enabled na false a Interval na 200 (doba bliknutí jedné diody v milisekundách).
  3. Vytvoříme událost OnTimer a do ní vložíme následující kód:
    stav1:=not stav1;
    stav2:=not stav2;
    VaComm1.SetRTS(stav1);
    VaComm1.SetBreak(stav2);
    Po čase nastaveném v Timer.Interval se změní stavy LED diod v opačné.
  4. Vytvoříme Button, kterým se bude blikač spouštět a zastavovat a do události onClick vložíme tento kód: Timer2.Enabled:=not Timer2.Enabled;

Digitální vstupy

Sériové rozhraní má 4 digitální vstupy - CTS (Clear To Send - pin 8 na konektoru Canon 9), DSR (Data Set Ready - pin 6), RI (Ring Indicator - pin 9) a DCD (Data Carrier Detect - pin 1). Na stav těchto vstupů se dotazujeme pomocí proměnných VaComm1.CTS, VaComm1.DSR, VaComm1.Ring a VaComm1.RLSD. Použití těchto funkcí si ukážeme na příkladu (použijeme předcházející program) - zjistit stav vstupů a zobrazit je jako checkboxy:

  1. Do formu předcházejícího projektu umístíme 4 checkboxy a pojmenujeme je následovně: první jako CTS, druhý DSR, třetí RI a poslední DCD
  2. Dále vložíme Button a vytvoříme událost OnClick do které vložíme následující kód:
    CTS.Checked:=VaComm1.CTS;
    DSR.Checked:=VaComm1.DSR;
    RI.Checked:=VaComm1.RING;
    DCD.Checked:=VaComm1.RLSD;
  3. Po stisku tohoto tlačítka se zjistí stav všech vstupů a výsledek se zobrazí v checkboxu: pokud je na vstupu log. 1 pak je checkbox zaškrtnut a naopak.

Sledování spínačů

Pomocí vstupů můžeme sledovat stavy spínačů. Na jeden kontakt spínače přivedeme z výstupu (např. DTR - pin 4) log. 1 a druhý připojíme na vstup (např. RI - pin 9). Pokud je spínač (resp. tlačítko) sepnut, dostává se log. 1 z výstupu na vstup. Tímto způsobem můžeme využít 4 vstupy, tzn. sledovat stavy 4 spínačů. Když použijeme předcházející projekt, musíme zjišťovat stav vstupů stiskem tlačítka. Efektivnější je použití timeru, kde se v události OnTimer zavolá událost OnClick. Použitím timeru se bude stav vstupů periodicky obnovovat.

Všechny popsané příklady ve formě projektu v Delphi naleznete zde.

Příště se podíváme na některé aplikace vstupů a výstupů.

Obsah seriálu (více o seriálu):

Tématické zařazení:

 » Rubriky  » Delphi  

 » Rubriky  » Windows  

 

 

 

Nejčtenější články
Nejlépe hodnocené články

 

Přihlášení k mému účtu

Uživatelské jméno:

Heslo: