[Grafika] [WebTip] [Fotografování] [Galerie] [MujMac] [Printing]
  Redakce: info (at) builder.cz   Inzerce: reklama (at) grafika.cz
Diskuzní fóra
.Net (68471)
ASP (1591)
ActiveX (168)
Allegro (136)
Assembler (3926)
C++ Builder (23160)
C/C++ (44499)
Databáze (30680)
Delphi (78807)
DelphiX (1655)
DirectX (1464)
Java (39508)
JavaScript (12598)
Matematické programy (2178)
OOP a UML (732)
OpenGL (6920)
Php (65224)
PowerBuilder (464)
Problémy a algoritmy (10473)
Programování v Linuxu (2000)
Právo a programování (3384)
Python (1353)
Ruby (136)
Visual Basic (12078)
Visual C++ (12956)
Wap (56)
Web (10895)
Web servery (5549)
Win32 (13553)
Windows CE (865)
XML/XSL (1860)
Textová inzerce
Služby Builder.cz
  • Bazar - koupím(0)
  • Bazar - prodám(0)
  • Hledám práci(0)
  • Nabízíme práci(0)
  • Projekty(0)
  • Sériové rozhraní v Delphi (1. díl)
    Tímto článkem začínáme nový seriál o využítí sériového rozhraní v Delphi. V dnešním díle si popíšeme, co to je sériové rozhraní a jak můžeme k němu v Delphi přistupovat.
    Sériové rozhraní v Delphi

    Následující díl: Sériové rozhraní v Delphi (2. díl)
    Autor: Jan Vykopal
    Rubrika: Delphi
    Publikováno: 20.11. 2001
     Tisk článku
    Poslat odkaz emailem
     

    Sériové rozhraní
    Pomocí tohoto rozhraní se počítač propojuje s ostatními periferiemi - může to být modem, jiný počítač, měřící přístroj, myš atd. Sériové se jmenuje proto, že posílá data bit po bitu narozdíl od paralelního, kde se posílá zárověň více bitů (většinou osm). Výhodou sériového rozhraní je, že ke komunikaci s periferiemi většinou potřebuje jen 3 vodiče (příjmaná a vysílaná data, zem). Dnešní počítače mají většinou 2 sériová rozhraní - COM 1 a COM 2. COM 1 má obvykle devítikolíkový konektor a COM 2 pětadvacetikolíkový (ovšem většina ATX-ových desky má oba konektory devítikolíkové).

    Zapojení konektoru
    9-kolíkový konektor 25-kolíkový konektor Označení I/O
    1 8 DCD - Detektor příjmaného signálu Vstup
    2 3 RxD - Příjmaná data Vstup
    3 2 TxD - Vysílaná data Výstup
    4 20 DTR - Pohotovost terminálu Výstup
    5 7 GND - Zem ---
    6 6 DSR - Pohotovost vysílače Vstup
    7 4 RTS - Výzva k vysílání Výstup
    8 5 CTS - Pohotovost k vysílání Vstup
    9 22 RI - Indikátor volání Vstup
    Zdroj: Minasi Mark: PC - Velký průvodce hardwarem. Praha, Grada publishing 1996

    Po shlédnutí této nudné, ale velice důležité tabulky, si možná řeknete, že vám lžu. V předchozím odstavci jsem psal, že sériové rozhraní má jeden vstup a výstup. V tabulce je však uvedeno 5 vstupů a 3 výstupy. Ostatní vstupy a výstupy slouží k "dorozumívání a domlouvání" komunikace, ne k vlastní komunikaci. Dále se můžete divit podivným názvům jednotlivých vstupů a výstupů. Sériové rozhraní totiž dříve sloužilo hlavně pro komunikaci s modemem a názvy přetrvaly až doposud. Na co jsou ostatní vstupy a výstupy se dozvíme později až s nimi budeme pracovat. Ale teď už pryč od šedé teorie a hurá na praktické využití.

    Přístup v Delphi
    K sériovému rozhraní se dá přistupovat i bez pomocných komponent, přes API funkce. Je to však příliš složité. Po všech možných testech různých komponent přistupujících k sériovému portu jsem se rozhodl používat freewarový balíček Varian Async32. Pracuje pod 32-bitovými Delphi a C++ Buildrem 4. S těmito komponentami budu pracovat v celém serálu. Zde (0,5 Mb) si můžete stáhnout verzi 1.82. Po nainstalování (vše jde hladce, přečtete si install.txt) se můžeme pustit do práce.

    První program
    1. vytvořte nový projekt, ze záložky VarianAsync32 zvolte komponentu VaComm a umistěte ji do nového Formu
    2. označte ji a v Object Inspectoru v Properties přepište hodnotu 0 v položce PortNum na číslo vašeho volného portu (v COM1 bývá myš nebo modem - pozor na to), já mám myš v PS/2, takže mám oba porty volné, tak zvolím číslo 1; tímto jsme vybrali port, na který budeme přistupovat
    3. změňte v položce AutoOpen False na True, po této úpravě se port otevře ihned po spuštění programu
    4. nyní program spusťte, pokud je vše v pořádku program se spustí a uvidíte prázný Form. Proběhne událost OnOpen (zkuste vložit do této události Beep;), když je port obsazen program vyhodí chybu EVaCommError Can't open device COM... a zavře se
    Tuto událost můžeme ošetřit takto:
    1. Stav AutoOpen změníme na původní False
    2. do části v interface uses (deklarace používaných jednotek), vložíme unitu VaTypes
    3. do privátních deklarací vložíme
      private
        { Private declarations }
        procedure HandleException(Sender: TObject; E: Exception);

      a do části pod implementation
      procedure Tform1.HandleException(Sender: TObject; E: Exception);
      begin
        if E is EVaCommError then
          with E as EVaCommError do
            ShowMessage(Message); //chyba osetrena, vypsani zpravy
      end;
    4. vytvoříme událost OnCreate
      procedure TForm1.FormCreate(Sender: TObject);
      begin
         Application.OnException := HandleException; 
         //pri chybe volej proceduru HandleException
         VaComm1.Open; //otevreni portu
      end;
      
    5. po spuštění se při chybě vypíše hlášení a program pokračuje, neukončuje se
    Porty se nemusí zavírat - zavřou se po skončení programu, ale pro perfekcionisty mám dobrou zprávu: jde zavřít v programu takto:
    VaComm1.Close; //zavře příslušný port
    Ovšem má to i jinou výhodu, když chceme port zavřít a vybrat jiný port:
    VaComm1.Close; //zavře příslušný port - COM1
    VaComm1.PortNum:=2; //nastavení čísla nového portu COM2
    VaComm1.Open; //otevření tohoto portu (COM2).
    
    Ošetření obsazení portu a zavření a otevření portu je možno stáhnout zde (6 kB) jako projekt v Delphi.
    To je pro dnešek vše a na příště (budeme pokračovat s komponentou VaComm) si pro vás vymyslím něco těžšího.

    Zpět na začátek stránky

    Autor: Jan Vykopal
    Klikni pro další články autora

    Hodnocení článku
    1 | 2 | 3 | 4 | 5
    Aktuální známka: 2.69
    (Počet známek: 5508)

    Komentáře k článku
    Viky07.11.9:56Nepodporuje virtuální COM (USB,Bluetooth)
    Zbysek27.09.18:31BALIK KOMPONENT I PRO DELPHI 7
    seyyah parya07.12.15:19RE: BALIK KOMPONENT I PRO DELPHI 7
    Daniel Rockai02.04.9:51Citanie z HUB serioveho portu
    Jan17.02.15:35komunikace pres seriovy port
    BlackMonk21.05.13:14jak na to???
    Martin123404.05.14:52A co v DOSu
    simo24.02.10:41ovladam lpt
    Vláďa15.02.23:51TMS Async32 evaluation version
    Petr07.11.13:11Sluzba vyuzivajici COM
    Peter P24.10.10:05internetove aplikacie - prosim o radu
    steelbull09.09.16:02Mám iný nápad, ako rozchodiť všetky porty aj pod windows XP
    CZ4MCH10.07.12:54Kdo potřebujete VARIAN ASYNC32 pro DELPHI 6 - čtěte
    a.k.w.k.y.10.12.18:55thanx
    Aros11.03.20:13nevalí to!!!
    bond00529.06.20:21RE: nevalí to!!!
    xxx27.07.8:21RE: RE: nevalí to!!!
    simo28.01.11:19RE: nevalí to!!!
    Mirek01.04.15:02USB 245BM- 8b výstup
    Petin12.06.13:33RE: USB 245BM- 8b výstup
    crackerf07.03.15:31Delphi 7 && VarianAsync32
    CDN28.02.22:38Problem s instalaci, chybi *.pas
    Vinca03.02.17:29Problem s varian async32
    Jenda28.04.19:58help me
    Jenda30.04.21:31RE: help me
    Jožo22.04.21:28Parallel port
    Joe16.08.13:41RE: Parallel port
    jožo31.10.22:59RE: RE: Parallel port
    crackerf07.03.15:36RE: Parallel port
    czpcz14.04.17:22RE: RE: Parallel port
    czpcz01.05.16:35RE: Parallel port
    Orion22.03.21:37Instalace komponenty Varian Async32
    Orion24.03.20:42RE: Instalace komponenty Varian Async32
    Marek06.03.11:13RE: RE: Instalace komponenty Varian Async32
    neni to jedno28.04.19:03RE: Instalace komponenty Varian Async32
    Kralik07.09.17:20RE: RE: Instalace komponenty Varian Async32
    steelbull09.09.16:07Ja som s tým mal tiež problém, tam je len problém s cestami, ale aj tak mi to nefungovalo, mám iný nápad...
    Stepan23.09.15:53Proc to pres VaComm nefunguje?
    Frogian24.07.15:13Varian Async32.
    juro23.12.16:37com1 a mikropocitac
    Milan18.11.9:29Problem s instalaci v Delphi7
    Jiří Matějka17.06.11:14RE: Problem s instalaci v Delphi7
    crackerf07.03.15:40RE: RE: Problem s instalaci v Delphi7
    Baterka26.10.11:50Problem
    Martin Hlaváč10.09.11:54Jak je to s USB
    Dusan Halicky17.09.9:12RE: Jak je to s USB
    crackerf07.03.15:43RE: RE: Jak je to s USB
    Alfons27.08.6:37znalosti
    Ondra27.08.4:57Technicka
    DJBuldog01.08.20:17Problém s komponentou
    Habi01.08.20:45RE: Problém s komponentou
    DJBuldog01.08.22:03RE: RE: Problém s komponentou
    DJBuldog01.08.22:09RE: RE: Problém s komponentou
    DJBuldog01.08.22:09RE: RE: Problém s komponentou
    Habi03.08.22:03RE: RE: RE: Problém s komponentou
    DJBuldog07.08.23:03RE: RE: RE: RE: Problém s komponentou
    Habi07.08.23:36RE: RE: RE: RE: RE: Problém s komponentou
    greybeard14.05.11:20RE: RE: RE: RE: Problém s komponentou
    Radvan21.01.17:13RE: RE: RE: RE: RE: Problém s komponentou
    bond00529.06.20:28RE: RE: Problém s komponentou
    Habi02.03.14:33Komonenty pro Delhpi 6
    Jan Vykopal04.03.13:06RE: Komonenty pro Delhpi 6
    Baterka29.10.11:26RE: RE: Komonenty pro Delhpi 6
    Jirka02.03.12:54RE: RE: RE: Komonenty pro Delhpi 6
    dfadf09.01.15:08RE: Komonenty pro Delhpi 6
    fabio09.01.15:10RE: Komonenty pro Delhpi 6
    no26023.01.10:05A co Microsoft Visual C++
    Michal Gala12.02.1:13RE: A co Microsoft Visual C++
    no26014.02.17:24RE: RE: A co Microsoft Visual C++
    Petr05.11.16:47RE: RE: RE: A co Microsoft Visual C++
    Milan18.12.12:24COM-port pod WinNT
    Filip19.12.21:29RE: COM-port pod WinNT
    Vasil24.11.9:06A co Gameport
    Jan Vykopal28.11.13:23RE: A co Gameport
    Fun22.11.20:28RS232 a vse kolem
    Tom23.11.11:37RE: RS232 a vse kolem
    Jan Vykopal28.11.13:15RE: RE: RS232 a vse kolem
    Jtuf23.02.15:14RE: RS232 a vse kolem
    jan1628.09.14:35RE: RE: RS232 a vse kolem
    Digital20.02.23:37RE: RS232 a vse kolem
    Ivanek14.04.9:50RE: RE: RS232 a vse kolem
    Martin10.05.11:23RE: RE: RE: RS232 a vse kolem
    OKI10.07.0:45RE: RE: RS232 a vse kolem
    jan1628.09.14:40RE: RS232 a vse kolem
    kranky31.03.12:33RE: RS232 a vse kolem
    Filip22.11.10:21pristup jen pres API???
    crackerf07.03.15:53RE: pristup jen pres API???
    xyz21.11.14:32Škoda...
    advu21.11.2:31To jsem zvědavej...
    Jan Vykopal21.11.12:50RE: To jsem zvědavej...
    Honza23.11.9:46RE: RE: To jsem zvědavej...
    Jan Vykopal28.11.12:59RE: RE: RE: To jsem zvědavej...
    jtuf23.02.15:20RE: RE: RE: To jsem zvědavej...
    Delphi mág20.11.12:20Jen tak dál
         





    info@builder.cz
    Vydává Grafika Publishing, s.r.o.
    Copyright (c) 1997-2002 Všechna práva vyhrazena