• Sériový port com1. Co je COM port

    Spolu s paralelním portem je port COM nebo sériový port jedním z tradičních počítačových vstupních/výstupních portů používaných u prvních počítačů. Ačkoli v moderní počítače COM port má omezené využití, nicméně informace o něm mohou být užitečné pro mnoho uživatelů.

    Sériový port, stejně jako paralelní, se objevil dlouho před objevením osobních počítačů architektury IBM PC. V prvních osobních počítačích se pro připojení používal port COM periferie. Rozsah jeho použití byl však poněkud odlišný od rozsahu paralelního portu. Pokud se paralelní port používal hlavně pro připojení tiskáren, pak COM port (mimochodem předpona COM je jen zkratka pro slovo komunikace) se obvykle používal pro práci s telekomunikačními zařízeními, jako jsou modemy. K portu však můžete připojit například myš, ale i další periferní zařízení.

    COM port, hlavní aplikace:

    1. Připojení terminálu
    2. ~ externí modemy
    3. ~ tiskárny a plotry
    4. ~ myši
    5. Přímé propojení dvou počítačů

    V současné době je rozsah COM portu výrazně omezen zavedením rychlejšího a kompaktnějšího a mimochodem také sériového USB rozhraní. Téměř zastaralé externí modemy, určený pro připojení k portu, stejně jako "COM" myši. Ano, a jen zřídka teď někdo propojí dva počítače pomocí kabelu nulového modemu.

    Řada specializovaných zařízení však stále používá sériový port. Najdete ho na mnoha základních deskách. Faktem je, že oproti USB má COM port jednu důležitou výhodu - podle standardu sériového přenosu dat RS-232 dokáže pracovat se zařízeními na vzdálenost několika desítek metrů, přičemž dosah USB kabel je obecně omezena na 5 metrů.

    Princip fungování sériového portu a jeho rozdíl od paralelního

    Na rozdíl od paralelního (LPT) portu přenáší sériový port data bit po bitu po jedné lince, nikoli více linek současně. Bitové sekvence jsou seskupeny do datových běhů počínaje počátečním bitem a končícím stop bitem a sudými paritními bity používanými pro kontrolu chyb. Odtud pochází další anglický název, který má sériový port – Serial Port.

    Sériový port má dvě linky, kterými jsou přenášena skutečná data - jedná se o linky pro přenos dat z terminálu (PC) do komunikačního zařízení a naopak. Kromě toho existuje několik dalších ovládacích linií. Sériový port je obsluhován speciálním čipem UART, který je schopen podporovat relativně vysokou rychlost přenosu dat dosahující 115 000 baudů (bajtů/s). Vskutku, to stojí za zmínku skutečnou rychlost výměna informací závisí na obou komunikačních zařízeních. Mezi funkce regulátoru UART navíc patří převod paralelního kódu na sériový a naopak.

    Port používá srovnávací vysokonapěťové elektrické signály až do +15 V a -15 V. Logická nulová úroveň sériového portu je +12 V a logická jedna úroveň je -12 V. Takto velký úbytek napětí zajišťuje vysoký stupeň šumu odolnost přenášených dat. Na druhou stranu se používá v sériovém portu vysokým napětím vyžadují komplexní řešení obvodů. I tato okolnost přispěla k poklesu obliby přístavu.

    Sériové rozhraní RS-232

    Provoz sériového portu na PC je založen na komunikačním standardu pro sériová zařízení RS-232. Tato norma popisuje proces výměny dat mezi telekomunikačním zařízením, jako je modem a počítačový terminál. Definuje standard RS-232 elektrické charakteristiky signály, jejich účel, trvání, stejně jako velikost konektorů a pinout pro ně. Zároveň RS-232 popisuje pouze fyzická vrstva proces přenosu dat a nevztahuje se na transportní protokoly, které se mohou lišit v závislosti na použitém komunikačním hardwaru a softwaru.

    Standard RS-232 byl vytvořen v roce 1969 a jeho Nejnovější verze, TIA 232, byl uveden na trh v roce 1997. RS-232 je nyní považován za zastaralý, ale většina operační systémy stále to podporuje.

    V moderních počítačích je konektor sériového portu 9pinový konektor DB-9 samec, ačkoli standard RS-232 popisuje také 25pinový konektor DB-25, který se často používal na starších počítačích. Konektor DB-9 je obvykle umístěn na systémová deska PC, i když ve starších počítačích by to mohlo být na speciální multikartě vložené do rozšiřujícího slotu.

    9pinová patice DB-9 na základní desce

    DB-9 konektor na kabelu zařízení připojeného k portu

    Na rozdíl od paralelního portu jsou konektory na obou stranách obousměrného sériového kabelu totožné. Kromě linek pro přenos samotných dat obsahuje port několik servisních linek, kterými lze přenášet data mezi terminálem (počítačem) a telekomunikačním zařízením (modem). kontrolní informace. Ačkoli teoreticky stačí k fungování sériového portu pouze tři kanály – příjem dat, přenos dat a uzemnění, praxe ukázala, že přítomnost servisních linek zefektivňuje, spolehlivě a ve výsledku zrychluje komunikaci.

    Účel konektorových linek sériového portu DB-9 podle RS-232 a jejich korespondence s piny konektoru DB-25:

    Kontaktujte DB-9 anglické jméno ruské jméno Kontaktujte DB-25
    1 Detekce datového nosiče Byl zjištěn dopravce 8
    2 Přenášet data Přenesená data 2
    3 Příjem dat Přijatá data 3
    4 Datový terminál připraven Připravenost terminálu 20
    5 Přízemní Země 7
    6 Soubor dat připraven Připravenost vysílače 6
    7 Žádost o odeslání Žádost o zaslání dat 4
    8 Vymazat k odeslání Přenos dat povolen 5
    9 Prstencový indikátor Indikátor kroužku 22

    Konfigurace a přerušení

    Protože počítač může mít několik sériových portů (až 4), systém jim přidělí dvě hardwarová přerušení - IRQ 3 (COM 2 a 4) a IRQ 4 (COM 1 a 3) a několik přerušení BIOSu. Mnoho komunikačních programů, ale i vestavěných modemů využívá ke své práci přerušení a adresní prostor COM portů. V tomto případě se obvykle nepoužívají skutečné porty, ale tzv. virtuální porty, které emuluje samotný operační systém.

    Stejně jako u mnoha dalších komponent základní deska, parametry portů COM, zejména hodnoty přerušení BIOS odpovídající hardwarovým přerušením, lze konfigurovat prostřednictvím rozhraní Nastavení systému BIOS. Za tohle, takový možnosti BIOSu jako COM port, zabudovaný sériový port, adresa sériového portu atd.

    Závěr

    Sériový port PC není v současné době široce používaným médiem pro I/O informace. Nicméně, protože existuje velký počet zařízení především pro telekomunikační účely, určené pro práci se sériovým portem, a také vzhledem k některým výhodám protokolu sériového přenosu dat RS-232 by sériové rozhraní ještě nemělo být odepsáno jako absolutně zastaralý základ architektury osobních počítačů .

    Zpočátku, když se objevili osobní počítače , s nimi přišlo najednou pár ne bůh ví jak ošemetných, ale vcelku úspěšně fungujících v kombinaci se zbytkem náplní, portů či obvodových rozhraní. Slovo port označuje způsob přenosu dat. Je to jako buňka paměti. Jedině v RAM informace se zaznamenají a leží tam, dokud je nějaký program nepotřebuje, dokud je program nezpracuje (nebo je program samotný stále potřeba na něčím počítači).

    Port a paměť

    To znamená, že program načte data z paměti do procesoru, něco s nimi udělá, možná z těchto informací získá nějaká nová data, která zapíše na jiné místo. Nebo se samotné dané jednoduše přepíše na jiné místo. V každém případě lze v paměti informace, které byly jednou zaznamenány, buď přečíst, nebo vymazat. Cela se získá jako truhla, stojící u zdi. A veškerá paměť se skládá z buňky, každá buňka má svou vlastní adresu. Stejně jako truhly stojící v řadě u zdi ve sklepě lakomého rytíře.

    No a port si lze představit i jako buňku. Pouze taková buňka vzadu má okno vedoucí někam za zeď. Můžete do něj zapisovat informace a informace si je vezmou a vyletí z okna, i když nějakou dobu budou v buňce stejně jako v běžné cele paměť s náhodným přístupem.

    Nebo naopak, informace mohou „dorazit“ do buňky portu z okna. Procesor to uvidí a přečte si tyto nové informace, které se objevily. A on to zprovozní – někam to přepíše, přepočítá spolu s nějakými dalšími údaji. Může to dokonce zapsat do jiné buňky. Nebo na jiný cell-port, pak tato informace přijatá přes první port může "odletět" do okna druhého portu - no a tak naloží procesor. Spíše program, který v tuto chvíli velí procesoru a zpracovává data zaznamenaná v paměti a přicházející z portů.

    Jednoduché a krásné. Tyto porty byly okamžitě volány - I/O porty. Prostřednictvím některých z nich jsou data někam odesílána, prostřednictvím jiných - odněkud jsou přijímána.

    No a pak začíná kruh. Je jedno zařízení a je tu další. A nyní existuje řetězec znaků, z nichž každý se skládá ze samostatných binárních bitů, a tento řetězec je třeba přenést. Jak převést? Okamžitě můžete přenést celý znak po řadě 8 drátů - jeden drát \u003d jeden bit, pak kód dalšího, pak třetí a tak dále, dokud nepřenesete celý řetězec.

    A bylo možné rozvinout každý bit ne v prostoru (po drátech), ale v čase: nejprve přenést jeden bit symbolu, pak druhý a tak dále osmkrát. Je jasné, že v druhém případě některé dodatečné finanční prostředky rozvinout postavy v čase.

    Paralelní a sériové

    A rychlost přenosu se bude lišit:

    Ukazuje se, že každá možnost má své klady, ale i zápory.

    1. Osm bitů najednou (tj. bajt po bajtu) je rychlejší pro přenos, ale potřebujete osmkrát více drátů
    2. Chcete-li přenést jeden bit po druhém - potřebujete pouze jedno odeslání informací, ale bude to 8krát pomalejší.

    Takže v prvním případě nazývali přenos paralelní a ve druhém případě - sériový.

    Port rozhraní

    A celý systém takového přenosu - v jednom případě tak, v druhém - tak, tzv. rozhraní. Jedno rozhraní je paralelní, druhé sériové. Skoro to samé, porty, jeden paralelní, druhý sériový.

    Jak se liší koncept portu od konceptu „rozhraní“? V moderní technologie slova se nejen objevují, ale rostou a získávají „vzdělávání“. A stejně jako lidé se mohou stát úzkými specialisty, nebo se z nich mohou stát „amatéři“. Zde je typické amatérské slovo – „rozhraní“. Protože je to „zátka do každé díry“. Rozhraní jsou:

    A význam toho slova je něco mezi tím. Inter - mezi, tvář - tvář. Vyšlo to krásně, takže se používá všude. Například, uživatelské rozhraní Systémy Windows- toto je obrazovka systému určená ke komunikaci s osobou.

    A skládá se z obrázku nakresleného na obrazovce + pravidel pro ovládání každého prvku obrázku (například klikněte myší na tlačítko na obrazovce - bude stisknuto) + pravidla pro odezvu každého prvek a celý systém jako celek + veškerý hardware zapojený do dialogu (myš, klávesnice, obrazovka) + všechny programy, které poskytují dialog jak ze strany celého systému, tak ze strany jednotlivá zařízení(Řidiči).

    Nezmínili pouze osobu, ale protože je také součástí interakce, musí mít znalosti a dovednosti pro práci v systému, a na to existují školicí programy, systémy pomoci… A z toho všeho vzniká krásné a prostorné slovo: rozhraní.

    V našem tématu znamená rozhraní věci trochu jednodušší.

    Jedná se o hardware + software přestupy + přestupní řád. Hardware je srozumitelný. Ale software na počítačích a v moderní prostředky spojení jsou vždy a všude. Stává se to dokonce takto: nejprve se na nějakém hardwarovém základu vytvoří něco funkčního, co se nespustí hned, ale pomocí speciálně napsaných programů. A všechny programy jsou přizpůsobitelné.

    A postupně, jak pracujete nová vlastnost(nebo funkční blok), programy, které jej „vytvářejí“ – a liší se od hardwaru tím, že je lze snadno konfigurovat – jsou uvedeny do nějakého stavu optimální nastavení. Což již není nutné konfigurovat. A pak program nová verze funkční blok lze nahradit hardwarovou náhradou softwarové části. Například "ušít" optimálně fungující dobře naladěný program permanentní paměť . Nebo vymyslete speciál logické schéma, který udělá přesně to samé, co optimálně nakonfigurovaný program – aniž by se zalekl a někdy nezapomněl na všechna jeho užitečná nastavení.

    Proto se takové rozhraní často nazývá - software a hardware.

    Pravidla přenosu jsou potřebná, aby na obou koncích interakce byly stejné věci chápány (a zpracovávány) stejným způsobem. Mluvíme o přenosu impulsů? To znamená, že impulsy musí být naprosto stejné.

    Například, aby 1 bit přišel ve formě +12 nebo +15 voltů poklesu napětí od nuly. A tak, aby to bylo ve formě obdélníku nebo prudkého nárůstu - jehož vrchol byl nutně o nic méně, dobře, + 5 voltů, a horní limit například nebylo příliš nutné zadávat. Je to proto, že když jsou impulsy přenášeny na určitou vzdálenost, elektrické signály mají tendenci slábnout a „rozmazávat“.

    Pokud je z jednoho konce odesláno striktně 12 voltů, pak 3 volty mohou dosáhnout druhého, což může být přijímacím systémem považováno za šum ve vedení a přenášená informace bude ztracena.

    Stejně je třeba chápat i význam impulsů. A impulsy mohou být informační, servis, synchronizace. A obecně třeba ne impulsy, ale prostě konstantní tlak. Které lze na druhém konci použít k napájení malého zařízení.

    A samotné dráty, o kterých byla řeč na samém začátku, by měly být také chápány stejně. Zde je třeba hned říci, že se nikdy nestane, že by byl jeden příspěvek. V kabelu k telefonu jsou dokonce dva dráty, ale normálně má mít v kabelu čtyři dráty. A datová rozhraní mají vždy několik vodičů. Některé z nich jsou informační, některé servisní. A to je to, co by mělo být stejně uznáno na obou koncích interakce. A dráty jsou rozpoznány jako? Podle barvy, pokud je v kabelu, a podle umístění, pokud v připojovacích kontaktech.

    Slovo port je jednoduché a také ne zcela jednoznačné. Ale význam je podobný: něco, co něco na něco nahraje a někam to pošle. Nebo naopak něco, co něco přijímá a něco z toho vykládá. Význam je téměř stejný jako u hardwarově-softwarového rozhraní, ale jaksi výstižnější. A přísnější, jako v námořnictvu („Oni vám řeknou - nehádejte se ... ale my se nehádáme ...“). Jen naše signály necestují po moři, ale po kabelu.

    Pinout COM portu

    Pinout nemá žádnou souvislost. s ukřižováním, i když jsou jako dráty volně běžící v jednom kabelovém plášti rozebrány do stran a natvrdo připájeny k jejich kolíkům, podobně jako u ukřižování. Pin, anglicky „pin“, pin, potažmo pinout, to slovo je už počítačově komunikační „proanglický“ žargon. Prostředky - pájení vodičů na kolíky na konektoru.

    Tvar konektoru, pořadí vodičů (pinů) v něm, účel každého kolíku, stejně jako jmenovité napětí a význam signálů v každém z nich jsou součástí rozhraní. Všechny tyto informace jsou obvykle shromážděny v jediném dokumentu, který se nazývá specifikace portu. Taková jednoduchá a přehledná deska na jedné stránce. V jiných typech rozhraní by se něco takového mohlo nazývat „protokol“. A tady se tomu také říká jednoduše „pinout“.

    Sériové COM porty

    COM porty počítače, to je spojení počítačového komplexu " dlouhý dosah". Na rozdíl od paralelních portů a kabelů vedoucích k "těžkým" zařízením - tiskárnám, skenerům, Com-porty připojovaly k počítači "lehké" jednotky - myš, modem. První rozhraní počítač-počítač (přes "null-modem"). Dále, při šíření lokální sítě a myši se začaly připojovat přes stejný konektor jako klávesnice - port ps / 2 (polovina pe-s-in) - com port nějak se zapomnělo.

    Renesance přišla s příchodem sériové rozhraní USB. Zde je kruhový pohyb. Nově na USB najdete kromě flash disků jak USB myši, tak USB klávesnice. Tiskárny, skenery, modemy - všechny periferie jsou nyní na USB, už jsem zapomněl na tlusté a pevné paralelní LTP - kabely, které byly nutné v bez chyby připevněte na každé straně 2 šrouby. A v těchto USB jsou dva signálové vodiče (ve skutečnosti je jeden kanál, jeden přímý signál, druhý je stejný - inverzní) a dva - napájení a pouzdro.

    V minulosti existovalo několik sériových COM portů. Nejmenší a nejžádanější 9pinový port (D9), ke kterému byla připojena většina zařízení: myši, modemy, kabely nulového modemu. Kontakty byly uspořádány ve dvou řadách, 5 a 4 v řadě, což vedlo k lichoběžníku. Odtud název D9. Na „matce“ šlo číslování zleva doprava a shora dolů:

    1 2 3 4 5

    Pinout portu COM, port RS232, 9 pinů.

    Označení Typ Popis
    1 DCD Vchod Vysoká z modemu, když přijímá nosič partnerského modemu
    2 RxD Vchod Příchozí datové impulsy
    3 TxD Výstup Odchozí datové impulsy
    4 DTR Výstup Vysoká úroveň (+12V) znamená, že počítač je připraven přijímat data. Připojená myš používala tento pin jako zdroj energie.
    5 GND Všeobecné Země
    6 DSR Vchod Připraveno k přenosu zařízení
    7 RTS Výstup Odezva partnerského zařízení
    8 CTS Vchod Připraveno přijímat data od partnera
    9 R.I. Vchod Informační signál počítače příchozí hovor přijaté modemem z komunikační linky

    Někdy musíte vyřešit problém s komunikací elektronické zařízení s počítačem, ať už jde jen o výměnu dat nebo dálkové ovládání. Tento článek popisuje, jak to lze provést pomocí sériového portu. Jeho hlavní výhodou je, že standard softwarové rozhraní Windows (API) vám umožňuje přímo řídit výstupní linky, čímž je přímo řídit, a má funkci čekání na nějakou událost spojenou s COM portem. Také standard RS-232, podle kterého jsou COM porty vyrobeny, umožňuje připojování a odpojování kabelů za provozu zařízení (hot plug).

    Popis

    COM port (sériový port)– obousměrné rozhraní, které přenáší data v sériové podobě (bit po bitu) pomocí protokolu RS-232. Jedná se o poměrně běžný protokol používaný k propojení jednoho zařízení (například počítače) s ostatními pomocí vodičů o délce až 30 m. Úrovně logických signálů se zde liší od standardních: úroveň logické jednotky je od +5 do +15V, úroveň logické nuly je od -5 do -15V, což vyžaduje další převody obvodů, ale poskytuje dobrý šum imunita.

    Zvažte 9pinový konektor (DB-9M). Níže je jeho pinout:

    Výstup č. název Signální povaha Signál
    1 DCD Vstup detekovat datový nosič
    2 RxD Volno přenášet data
    3 TxD Vstup Přijímat data
    4 DTR Volno datový terminál připraven
    5 GND - Přízemní
    6 DSR Vstup datová sada připravena
    7 RTS Volno Žádost o odeslání
    8 CTS Vstup Vymazat k odeslání
    9 R.I. Vstup prstencový indikátor

    Nejvíce nás budou zajímat piny 2 (přenos dat), 3 (příjem dat) a 5 (zem). Jedná se o minimální sadu pro možnost obousměrné komunikace mezi zařízeními.

    Nebudu se podrobně zdržovat popisem protokolu. K tomu existují GOST atd. Půjdeme proto dále a povíme si o tom, jak tuto šelmu ovládat.

    aplikace

    Jak již bylo zmíněno, úrovně RS-232 LAN se liší od standardních úrovní TTL. Proto musíme hodnoty napětí nějak převést. Tito. udělejte 5V z +15V a 0V z -15V (a naopak). Jedním ze způsobů (a pravděpodobně nejjednodušším) je použití speciálního čipu MAX232. Je snadno pochopitelný a dokáže převádět dva logické signály současně.

    Níže je schéma jeho zařazení:


    Nemyslím si, že by tam měly být nějaké potíže. Toto je jedna z možností využití tohoto čipu: přenos dat z mikrokontroléru do počítače a naopak. Vysílaný signál jde do nohou T X IN na jedné straně a na R X IN na druhé. Vstupní signály odstraněn z T X OUT a R X OUT resp.

    Programování

    Nejprve si povíme něco o programování portů na nízké úrovni. To bude správnější. Strávil jsem spoustu nervů zaobíráním se tímto rozhraním, dokud jsem nezačal pronikat do principu jeho fungování na nižší úrovni, než je prosté přenášení postav. Pokud je to jasné, pak s jazyky vysoká úroveň nebudou žádné problémy.

    Níže jsou uvedeny adresy COM portů, se kterými budeme muset pracovat:

    Název portu Adresa IRQ
    COM 1 3F8h 4
    COM 2 2F8h 3
    COM 3 3E8h 4
    COM 4 2E8h 3

    Mohou se lišit. Hodnoty můžete nastavit v nastavení BIOSu. Toto jsou základní adresy. Na nich budou také záviset adresy registrů odpovědných za provoz přístavů:

    Adresa DLAB Číst psát Zkratka Registrovat jméno
    + 0 =0 Napsat Vyrovnávací paměť vysílače
    =0 číst Vyrovnávací paměť přijímače
    =1 Číst psát Nízký bajt dělitel Latch
    + 1 =0 Číst psát IER Přerušit Povolit Registr
    =1 Číst psát Divisor Latch High Byte
    + 2 - číst IIR Registr identifikace přerušení
    - Napsat FCR Kontrolní registr FIFO
    + 3 - Číst psát LCR Registr řízení linky
    + 4 - Číst psát MCR Řídicí registr modemu
    + 5 - číst LSR Registr stavu linky
    + 6 - číst MSR Registr stavu modemu
    + 7 - Číst psát Scratch Register

    První sloupec je adresa registru vzhledem k základně. Například pro COM1: adresa registru LCR bude 3F8h+3=3FB. Druhý sloupec je bit DLAB (Divisor Latch Access Bit), který definuje odlišné přiřazení pro stejný registr. umožňuje obsluhovat 12 registrů pouze z 8 adres. Například pokud DLAB=1, pak adresováním adresy 3F8h nastavíme hodnotu dolního bytu hodinového děliče. Je-li DLAB=0, pak s odkazem na stejnou adresu bude vysílaný nebo přijatý bajt zapsán do tohoto registru.

    "Nulový" registr

    Odpovídá registrům příjmu / vysílání dat a nastavení koeficientu děliče kmitočtu generátoru. Jak již bylo zmíněno výše, je-li DLAB=0, pak se registr používá k zápisu přijatých/vysílaných dat, pokud je roven 1, pak se nastaví hodnota dolního bytu děliče frekvence hodinového generátoru. Rychlost přenosu dat závisí na hodnotě této frekvence. Vysoký bajt dělitele se zapíše na další paměťové místo (tj. pro port COM1 to bude 3F9h). Níže je uvedena závislost rychlosti přenosu dat na poměru děliče:

    Registr povolení přerušení (IER)

    Je-li DLAB=0, pak se používá jako řídicí registr přerušení z asynchronního adaptéru, je-li DLAB=1, pak nastavuje horní bajt děliče frekvence hodinového generátoru.

    Identifikační registr přerušení (IIR)

    Přerušení je událost, která zastaví provádění hlavního programu a spustí provádění rutiny přerušení. Tento registr určuje typ přerušení, ke kterému došlo.

    Registr řízení linky (LCR)

    Toto je řídicí registr.

    Bit 7 1 Divisor Latch Access Bit - nastavení směnného kurzu dat
    0 Normální režim (kontrola přerušení, příjem / přenos dat)
    Bit 6 Simulovat zalomení řádku (odešle sekvenci více nul)
    Bity 3-5 Bit 5 Bit 4 Bit 3 Výběr parity
    X X 0 žádná parita
    0 0 1 Lichá parita
    0 1 1 Rovnoměrná parita
    1 0 1 Vysoká parita (lepkavé)
    1 1 1 Nízká parita (lepkavé)
    Bit 2 Počet stop bitů
    0 1 stop bit
    1 2 stop bity pro 6,7 nebo 8 datových bitů nebo 1,5 stop bitů pro 5 datových bitů.
    Bity 0 a 1 Bit 1 Bit 0 Počet datových bitů
    0 0 5 bitů
    0 1 6 bitů
    1 0 7 bitů
    1 1 8 bitů

    Kontrola parity znamená přenos jednoho dalšího bitu - paritního bitu. Jeho hodnota je nastavena tak, aby celkový počet 1s (nebo 0s) v bitovém shluku byl sudý nebo lichý v závislosti na nastavení registrů portu. Tento bit se používá k detekci chyb, které mohou nastat při přenosu dat v důsledku rušení na lince. přijímací zařízení přepočítá paritu dat a porovná výsledek s přijatým paritním bitem. Pokud se parita neshoduje, má se za to, že data byla přenesena s chybou.

    Stop bit znamená konec přenosu dat.

    Modem Control Register (MCR)

    Řídicí registr modemu.

    Bit Význam
    0 Linka DTR
    1 linka RTS.
    2 Linka OUT1 (náhradní)
    3 Linka OUT2 (náhradní)
    4 Spusťte diagnostiku, když je vstup asynchronního adaptéru zkratován na svůj výstup.
    5-7 Rovná se 0

    Registr stavu linky (LSR)

    Registr, který určuje stav linky.

    Bit Význam
    0 Data přijatá a připravená ke čtení, automaticky resetována při čtení dat.
    1 Chyba přetečení. Byl přijat nový datový bajt a předchozí program ještě nepřečetl. Předchozí bajt je ztracen.
    2 Chyba parity, vymazáno po přečtení stavu řádku.
    3 Chyba synchronizace.
    4 Zjištěna žádost o přerušení přenosu „BREAK“ je dlouhý řetězec nul.
    5 Úložný registr vysílače je prázdný a lze do něj zapsat nový bajt pro přenos.
    6 Posuvný registr vysílače je prázdný. Tento registr přijímá data z uchovávacího registru a serializuje je pro přenos.
    7 Časový limit (zařízení není připojeno k počítači).

    Registr stavu modemu (MSR)

    Registr stavu modemu.

    Dobře, teď je po všem. Pomocí těchto registrů můžete přímo komunikovat s COM portem, ovládat přenos a příjem dat. Pokud vás nebaví motat se s pamětí, můžete použít hotové komponenty pro různá programovací prostředí: C++, VB, Delphi, Pascal atd. Jsou intuitivní, takže si myslím, že nemá cenu se jim zde věnovat.

    Sériový port je I/O zařízení. Jako I/O zařízení je to pouze způsob přenosu dat z a do počítače. existuje také mnoho dalších I/O zařízení, jako jsou sériové porty, paralelní porty, řadiče disků, síťové karty, zařízení USB Universal Serial Bus atd. Většina počítačů mají jeden nebo dva sériové porty. Každý z nich má 9pinový konektor (někdy 25pinový) (obr. 1) na zadní straně systémové jednotky počítače. Programy mohou odesílat data (bajty) přes odesílací datový kolík (výstup) a přijímat bajty přes jiný přijímací datový kolík (vstup). Všechny ostatní kontakty jsou pro ovládání a uzemnění.

    ) je víc než jen konektor. Převádí data z paralelních na sériová a mění elektrickou reprezentaci dat. Uvnitř počítače jsou datové bity přenášeny paralelně (k přenosu dat současně slouží několik vodičů). Sériový datový tok je posloupnost bitů pouze přes jeden vodič (jako je vysílací a přijímací datový vodič na konektoru sériového portu). Toto zařízení slouží k vytvoření takového datového toku z paralelní formy do sériového (uvnitř počítače) a jeho přenosu na kontakt přenosu dat (a naopak).

    Většina elektronické komponenty sériový port je soustředěn v jediném počítačovém čipu (mikroobvodu) tzv UART.

    Kontakty a dráty

    Starší počítače používají 25pinové konektory, ale dnes se ve skutečnosti používá pouze 9pinových. Každý z 9 pinů je obvykle připojen k drátu. kromě dvou vodičů pro vysílání a příjem dat se zbytek používá pro ovládání a uzemnění. Napětí na každém z kolíků a vodičů je měřeno vzhledem k zemi signálu. Proto je minimální počet vodičů pro obousměrný přenos dat 3. Ve vzácných případech mohou stačit dva vodiče (bez uzemnění signálu), ale to může vést ke špatnému výkonu a někdy k chybám při přenosu dat.

    Stále existuje pár vodičů, které jsou určeny pouze pro ovládání (ovládání) a neslouží k přenosu dat. Všechny tyto signály by mohly být přenášeny na jedné lince, ale místo toho jsou pro ně vyhrazeny samostatné vodiče. Některé (nebo všechny) z těchto signálních linek se nazývají "stavové linky modemu". Stavové řádky mohou být v jednom ze dvou stavů nastaveno (zapnuto) +12 voltů nebo resetováno (vypnuto) -12 voltů. Jeden z těchto vodičů signalizuje počítači, aby přestal vysílat data přes sériový port. Jiné zase signalizují zařízení připojenému k sériovému portu, aby přestalo odesílat data do počítače. Pokud je připojeným zařízením modem, zbývající řádky mohou modemu naznačovat, že potřebuje obsadit telefonní linku, nebo signalizovat počítači, že bylo navázáno spojení nebo že probíhá hovor. telefonní linka(znamená někoho, kdo se připojí k počítači). Další informace naleznete v části Kontakty a signály.

    RS-232 nebo EIA-232 atd.

    Sériový port) (nezaměňovat s USB) obvykle odpovídá standardu RS-232-C, EIA-232-D nebo EIA-232-E. To jsou tři termíny pro stejnou věc. Hlavní standard RS (doporučený standard - Standard Recommended) obdržel předponu EIA (Electronics Industries Association) a později EIA / TIA poté, co byla organizace EIA sloučena s TIA (Telecommunications Industries Association). Specifikace EIA-232 pokrývá i synchronní přenos dat, ale ve většině případů synchronní přenos dat čipy v počítačích nepodporují. Označení RS je zastaralé, ale stále se hojně používá. EIA bude dále na této stránce využívána častěji. Některé dokumenty používají plné označení EIA/TIA.

    Komunikace (přenosové rychlosti)

    Data (bajty, které tvoří písmena, obrázky atd.) procházejí sériovým portem. Datové rychlosti (jako je 56k (56000) b/s) jsou označovány (nesprávně) jako "rychlosti". Většina lidí nesprávně říká „rychlost“ místo „faktor rychlosti“.

    Je důležité vědět, že průměrná rychlost přenosu dat je často nižší než deklarované maximum. Zpoždění (nebo čekací doby) a v důsledku toho se rychlost zpomalí. Tato zpoždění se mohou zvýšit v závislosti na typu řízení přenosu dat. Dokonce v nejlepší případ mezi bajty jsou vždy zpoždění, i když jsou malá (několik mikrosekund). Pokud zařízení připojené k počítači přes sériový port nemůže fungovat plná rychlost, pak by se měla průměrná rychlost snížit.

    Řízení přenosu dat

    Řízení přenosu dat znamená možnost omezit tok dat přes sériový port. Pro sériový port to znamená možnost zastavit a poté obnovit přenos dat bez ztráty bajtů.

    Tak jsme se dostali k COM portu. S ním ale není vše tak jednoduché jako u LPT a jeho plné využití bude vyžadovat mnohem více úsilí. Hlavním zádrhelem je jeho hlavní výhoda – přenos dat v sériové podobě. Pokud se v LPT přenáší datový bajt přes 8 linek, každý bit, a stav každé linky lze snadno zobrazit, pak v COM portu jsou datové bajty přenášeny bit po bitu po jedné lince (samozřejmě vzhledem k zemi ) a uvidíte, co je přenášeno z LED samotných nebude fungovat. K tomu potřebujete speciální zařízení – převodník sériového datového toku na paralelní, tzv. USART (Universal Synchronous/Asynchronous Receiver Transmitter). Například je součástí základní desky počítače vybaveného portem COM v jakémkoli serióznějším mikrokontroléru.


    Doufám, že vás stále odradí zvládnutí COM portu. Všechno není tak ponuré. Některé výsledky lze získat bez USART. Formulujme problém, který budeme implementovat počáteční fáze práce s COM portem:


    "Chci, aby byla k počítači připojena LED přes COM port. Spustím program. Provedu v tomto programu nějakou akci, LED se rozsvítí, udělám něco jiného - LED zhasne."


    Úloha je poměrně specifická (vzhledem k tomu, že se nepoužívá USART) a je čistě "self-made", ale je vcelku proveditelná a proveditelná. Začněme to implementovat.


    1.COM port

    Opět bereme systémová jednotka váš počítač a podívejte se na zadní stranu. Zaznamenáváme zde 9pinový konektor - to je COM port. Ve skutečnosti jich může být několik (až 4). Můj počítač má dva COM porty (viz foto).


    2. Rozšíření COM portu


    3. Hardware

    Také si budeme muset „pohrát“ s hardwarovou částí v tom smyslu, že to bude náročnější než u prvního zařízení pro Port LPT. Faktem je, že protokol RS-232, přes který dochází k výměně dat v COM portu, má trochu jiný poměr logický stav - napětí. Pokud je to obvykle logická 0 0 V, logická 1 +5 V, pak v RS-232 je tento poměr následující: logická 0 +12 V, logická 1 -12 V.

    A například po přijetí -12 V není okamžitě jasné, co dělat s tímto napětím. Obvykle jsou úrovně RS-232 převedeny na TTL (0,5 V). Nejjednodušší možností jsou zenerovy diody. Navrhuji však vyrobit tento převodník na speciálním mikroobvodu. Jmenuje se MAX232.

    Nyní se podívejme, jaké signály z COM portu můžeme vidět na LED? Ve skutečnosti je v COM portu až 6 nezávislých linek, které jsou zajímavé pro vývojáře zařízení rozhraní. Dvě z nich nám zatím nejsou dostupné – sériové datové linky. Ale zbývající 4 jsou určeny k řízení a indikaci procesu přenosu dat a my je budeme moci „přenést“ tak, aby vyhovovaly našim potřebám. Dva z nich jsou určeny pro externí ovládání. externí zařízení a prozatím se jich nedotkneme, ale použijeme nyní poslední dva zbývající řádky. Jmenují se:

    • RTS- Žádost o převod. Interakční čára, která označuje, že počítač je připraven přijímat data.
    • DTR- Počítač je připraven. Interakční čára, která označuje, že počítač je zapnutý a připravený ke komunikaci.

    Nyní trochu pomineme jejich účel a k nim připojené LED diody buď zhasnou, nebo se rozsvítí, v závislosti na akcích v našem vlastním programu.

    Pojďme tedy sestavit schéma, které nám umožní provádět plánované akce.

    A zde je jeho praktická realizace. Myslím, že mi odpustíte, že jsem to udělal v takové pitomé verzi, protože nechci dělat desku pro tak "vysoce produktivní" obvod.


    4. Softwarová část

    Tady je všechno rychlejší. Vytvořme Windows aplikaci v Microsoft Visual C++ 6.0 založenou na MFC pro správu dvou komunikačních linek COM portu. Chcete-li to provést, vytvořte nový projekt MFC a pojmenujte jej, např. TestCOM. Dále zvolíme možnost stavět na základě dialogu.

    Připojit vzhled dialogové okno našeho programu, jako na obr. níže, konkrétně přidejte čtyři tlačítka, dvě pro každý z řádků. Jeden z nich je nutný pro "splacení" linky, druhý pro "nastavení" na jedničku.

    Třída CTestCOMDlg: public CDialog ( // Konstrukce public: CTestCOMDlg(CWnd* pParent = NULL); // standardní konstruktor HANDLE hFile;

    Aby náš program mohl spravovat linky COM portu, musí být nejprve otevřen. Pojďme napsat kód zodpovědný za otevření portu při načtení programu.

    HFile = CreateFile("COM2", GENERIC_READ|GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0,NULL); if(hFile==INVALID_HANDLE_VALUE) ( MessageBox("Nepodařilo se otevřít port!", "Chyba", MB_ICONERROR); ) else ( MessageBox("Port úspěšně otevřen", "Ok", MB_OK); )

    Se standardní funkcí Win API CreateFile() otevřete COM port COM2. Dále zkontrolujeme úspěšnost otevření s výstupem informační zpráva. Zde je nutné učinit důležitou poznámku: COM2 je v mém počítači a na vašem počítači jej můžete připojit k jinému COM portu. Podle toho je třeba změnit jeho název na port, který používáte. Chcete-li zjistit, která čísla portů jsou na vašem počítači, můžete to udělat takto: Start -> Nastavení -> Ovládací panely -> Systém -> Hardware -> Správce zařízení -> Porty (COM a LPT).

    Konečně funkce CTestCOMDlg::OnInitDialog() umístěný v souboru TestCOMDlg.cpp, naše třída dialogů by měla mít tvar:

    BOOL CTestCOMDlg::OnInitDialog() ( CDialog::OnInitDialog(); // Přidat položku nabídky „O...“ do systémové nabídky. // IDM_ABOUTBOX musí být v rozsahu systémových příkazů. ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX); ASSERT(IDM_ABOUTBOX AppendMenu(MF_SEPARATOR); pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu); ) ) // Nastavení ikony pro tento dialog. Framework to dělá automaticky // když hlavní okno aplikace není dialog SetIcon(m_hIcon, TRUE); // Nastavit velkou ikonu SetIcon(m_hIcon, FALSE); // Nastavit malou ikonu // TODO: Zde přidejte další inicializaci hFile = CreateFile("COM2", GENERIC_READ|GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0,NULL); if(hFile==INVALID_HANDLE_VALUE) ( MessageBox("Nepodařilo se otevřít port!", "Chyba", MB_ICONERROR); ) else ( MessageBox("Port úspěšně otevřen", "Ok", MB_OK); ) return TRUE; // vrátí TRUE, pokud nenastavíte fokus na ovládací prvek )

    Nyní přidáme obslužné prvky tlačítka ovládání řádku. Dal jsem jim příslušná jména: funkce, která nastaví řádek DTR na 1, je OnDTR1(), 0 je OnDTR0(). Pro linku RTS, respektive podobným způsobem. Dovolte mi připomenout, že handler se vytvoří, když dvakrát kliknete na tlačítko. V důsledku toho by tyto čtyři funkce měly mít podobu:

    Void CTestCOMDlg::OnDTR1() ( // TODO: Sem přidejte svůj kód obslužného rutiny ovládacích oznámení EscapeCommFunction(hFile, 6); ) void CTestCOMDlg::OnDTR0() ( // TODO: Sem přidejte kód manipulačního programu ovládacího oznámení EscapeCommFunction(hFile, 5); ) void CTestCOMDlg::OnRTS1() ( // TODO: Sem přidejte kód obslužného rutiny kontrolních upozornění EscapeCommFunction(hFile, 4); ) void CTestCOMDlg::OnRTS0() ( // TODO: Sem přidejte svůj kód obsluhy kontrolních upozornění EscapeCommFunction(hFile, 3); )

    Dovolte mi trochu vysvětlit, jak fungují. Jak vidíte, uvnitř obsahují volání stejné funkce Win API EscapeCommFunction() se dvěma možnostmi. Prvním z nich je klika (HANDLE) do otevřeného portu, druhým je speciální akční kód odpovídající požadovanému stavu linky.

    Vše, zkompilovat, spustit. Pokud je vše v pořádku, měla by se zobrazit zpráva o úspěšném otevření portu. Dále stisknutím příslušných tlačítek rozblikáme LED diody připojené k portu COM.

    © Ivanov Dmitrij
    prosince 2006