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).
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.
- 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.
- 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);
- 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.
- Deklarujeme proměnné (část var):
stav1:boolean=true;
stav2:boolean=false; - Do formu vložíme timer a nastavíme property Enabled na false a Interval na 200 (doba bliknutí jedné diody v milisekundách).
- 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);
- 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:
- 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
- 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;
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):
- Sériové rozhraní v Delphi (1. díl)
- Sériové rozhraní v Delphi (2. díl)
- Sériové rozhraní a mobil (3. díl)
- Sériové rozhraní a mobil II (4. díl)
- Seriové rozhraní: Přenos souborů (5. díl)
- Sériové rozhraní: Vstupy a výstupy (6. díl)
- Ovládejte spotřebiče přes sériový port (7. díl)
Diskuse k článku
-
25. listopadu 2012
-
30. srpna 2002
-
10. října 2002
-
4. listopadu 2002
-
12. září 2002
-
25. listopadu 2012
-
28. července 1998
-
31. července 1998
-
28. srpna 1998
-
6. prosince 2000
-
27. prosince 2007
-
4. května 2007