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í v Delphi (1. díl)
seriovy port
20. listopadu 2001, 00.00 | 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í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 |
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
- vytvořte nový projekt, ze záložky VarianAsync32 zvolte komponentu VaComm a umistěte ji do nového Formu
- 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
- změňte v položce AutoOpen False na True, po této úpravě se port otevře ihned po spuštění programu
- 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
- Stav AutoOpen změníme na původní False
- do části v interface uses (deklarace používaných jednotek), vložíme unitu VaTypes
- do privátních deklarací vložíme
private { Private declarations } procedure HandleException(Sender: TObject; E: Exception);
a do části pod implementationprocedure Tform1.HandleException(Sender: TObject; E: Exception); begin if E is EVaCommError then with E as EVaCommError do ShowMessage(Message); //chyba osetrena, vypsani zpravy end;
- vytvoříme událost OnCreate
procedure TForm1.FormCreate(Sender: TObject); begin Application.OnException := HandleException; //pri chybe volej proceduru HandleException VaComm1.Open; //otevreni portu end;
- po spuštění se při chybě vypíše hlášení a program pokračuje, neukončuje se
|
|
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)
-
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