com-portin liitin. COM-portti (sarjaportti)

Aluksi, kun ne ilmestyivät henkilökohtaiset tietokoneet, niiden mukana tuli useita ei niin hienostuneita, mutta varsin onnistuneesti toimivia yhdessä kaikkien muiden täytteiden, porttien tai piiriliitäntöjen kanssa. Sana portti tarkoittaa tiedonsiirtomenetelmää. Se on kuin muistisolu. Vain tiedot kirjoitetaan RAM-muistiin ja pysyvät siellä niin kauan kuin jokin ohjelma sitä tarvitsee, kunnes ohjelma käsittelee sen (tai itse ohjelman joku tietokoneella edelleen tarvitsee).

Portti ja muisti

Eli ohjelma lukee tiedot muistista prosessoriin, tekee niillä jotain, ehkä saa tästä tiedosta uutta dataa, jonka se kirjoittaa toiseen paikkaan. Tai annettu itse yksinkertaisesti kirjoitetaan uudelleen toiseen paikkaan. Joka tapauksessa muistiin kerran tallennettu tieto voidaan joko lukea tai poistaa. Solu näyttää seinää vasten seisovalta arkulta. Ja kaikki muisti koostuu solusta, jokaisella solulla on oma osoite. Aivan kuin arkut seisovat rivissä seinää vasten niukka ritarin kellarissa.

No, voit myös kuvitella portin soluna. Vain sellainen solu takana on ikkuna, joka johtaa jonnekin seinän taakse. Voit kirjoittaa siihen tietoa, ja tieto ottaa sen ja lentää ulos ikkunasta, vaikka se pysyy jonkin aikaa solussa samalla tavalla kuin tavallisessa solussa RAM-muisti.

Tai päinvastoin, tiedot voivat "lentää" porttisoluun ikkunasta. Prosessori näkee tämän ja lukee nämä uudet tiedot, jotka tulevat näkyviin. Ja hän ottaa sen käyttöön - hän kirjoittaa sen uudelleen jonnekin, laskee sen uudelleen muiden tietojen kanssa. Se voi jopa kirjoittaa sen toiseen soluun. Tai toiseen soluporttiin, niin nämä ensimmäisen portin kautta saadut tiedot voivat "lentää pois" toisen portin ikkunaan - no, niin prosessori päättää. Tarkemmin sanottuna ohjelma, joka tällä hetkellä komentaa prosessoria ja käsittelee muistiin tallennetut ja porteista tulevat tiedot.

Yksinkertaista ja kaunista. Näitä portteja kutsuttiin välittömästi - input-output -porteiksi. Joidenkin kautta dataa lähetetään jonnekin, toisten kautta se vastaanotetaan jostain.

No sitten liike alkaa ympyrässä. On yksi laite ja on toinen. Ja nyt on merkkiketju, joista jokainen koostuu yksittäisistä binääribiteista, ja tämä ketju on lähetettävä. Kuinka siirtää? Voit lähettää välittömästi koko merkin 8 johdin riviä pitkin - yksi lanka = yksi bitti, sitten toisen koodi, sitten kolmas ja niin edelleen, kunnes lähetät koko ketjun.

Ja jokainen bitti oli mahdollista avata ei avaruudessa (johtojen kautta), vaan ajassa: ensin lähetä yksi bitti symbolista, sitten toinen ja niin edelleen kahdeksan kertaa. On selvää, että toisessa tapauksessa tarvitaan lisäkeinoja symbolien avaamiseksi tällä tavalla ajoissa.

Rinnakkais ja sarja

Ja lähetysnopeus on erilainen:

Osoittautuu, että jokaisella vaihtoehdolla on etunsa, mutta myös haitansa.

  1. On nopeampaa lähettää kahdeksan bittiä kerrallaan (eli tavu tavulta), mutta tarvitset kahdeksan kertaa enemmän johtoja
  2. Bitin lähettäminen kerrallaan vaatii vain yhden tiedonsiirron, mutta se on 8 kertaa hitaampi.

Joten ensimmäisessä tapauksessa he kutsuivat lähetystä rinnakkain, ja toisessa tapauksessa - sarja.

Portin käyttöliittymä

Ja koko tällaisen lähetyksen järjestelmä - yhdessä tapauksessa näin, toisessa - tuollainen, nimeltään käyttöliittymä. Toinen liitäntä on rinnakkainen, toinen sarja. Melkein sama asia, portit, yksi rinnakkais, toinen sarja.

Miten portin käsite eroaa "rajapinnan" käsitteestä? Nykytekniikassa sanat eivät vain ilmesty, ne kasvavat ja saavat "koulutusta". Ja aivan kuten ihmisistä, heistä voi tulla kapeita asiantuntijoita tai heistä voi tulla "amatöörejä". Tämä on tyypillinen amatöörisana - "käyttöliittymä". Koska se on "tulppa jokaiseen reikään". Käyttöliittymät ovat:

Ja sanan merkitys on jotain väliltä. Välissä, kasvot - kasvot. Siitä tuli kaunis, siksi sitä käytetään kaikkialla. Esimerkiksi Windows-järjestelmän käyttöliittymä on järjestelmän näyttöpuoli, joka on suunniteltu kommunikoimaan henkilön kanssa.

Ja se koostuu näytölle piirretystä kuvasta + kuvan kunkin elementin toiminnan säännöistä (esimerkiksi napsauta painiketta näytöllä hiirellä - sitä painetaan) + säännöt kunkin elementin vasteelle ja koko järjestelmä kokonaisuutena + kaikki dialogiin osallistuvat laitteet (hiiri, näppäimistö, näyttö) + kaikki ohjelmat, jotka tarjoavat dialogia sekä koko järjestelmän että yksittäisten laitteiden (ohjainten) puolelta.

He eivät maininneet henkilöä, mutta koska hän on myös osa vuorovaikutusta, hänellä on oltava tiedot ja taidot toimiakseen järjestelmässä, ja tätä varten on koulutusohjelmat, apujärjestelmät... Ja kaikesta tästä kaunis ja syntyy tilava sana: käyttöliittymä.

Teemassamme käyttöliittymä tarkoittaa hieman yksinkertaisempia asioita.

Nämä ovat laitteiston + ohjelmiston siirtokeinoja + siirtosääntöjä. Laitteisto - ymmärrettävää. Mutta ohjelmistot tietokoneissa ja nykyaikaisessa viestinnässä ovat aina ja kaikkialla läsnä. Sitä jopa tapahtuu: ensin jollekin laitteistopohjalle luodaan jotain toimivaa, jota ei suoriteta heti, vaan käyttämällä erityisesti kirjoitettuja ohjelmia. Ja kaikki ohjelmat ovat muokattavissa.

Ja vähitellen, kun uusi toiminto (tai toiminnallinen lohko) toimii, sen "tekevät" ohjelmat - ja ne eroavat laitteistosta siinä, että ne voidaan helposti konfiguroida - saatetaan johonkin optimaalisen kokoonpanon tilaan. Että ei tarvitse enää konfiguroida. Ja sitten toimintolohkon uudessa versiossa oleva ohjelma voidaan korvata ohjelmisto-osan laitteistopohjaisella korvikkeella. Esimerkiksi "ompele" optimaalisesti toimiva hyvin viritetty ohjelma pysyvään muistiin. Tai keksi erityinen looginen piiri, joka tekee täsmälleen saman asian kuin optimaalisesti konfiguroitu ohjelma teki - pelkäämättä ja joskus unohtamatta kaikkia hyödyllisiä asetuksiaan.

Siksi käyttöliittymää kutsutaan usein nimellä - ohjelmistot ja laitteistot.

Siirtosääntöjä tarvitaan sen varmistamiseksi, että samat asiat ymmärretään (ja käsitellään) samalla tavalla vuorovaikutuksen molemmissa päissä. Puhutaanko impulssinsiirrosta? Tämä tarkoittaa, että impulssien on oltava täysin identtisiä.

Esimerkiksi niin, että 1 bitti tulee +12 tai +15 voltin jännitehäviön muodossa nollasta. Ja niin, että se on suorakulmion tai terävän purskeen muodossa - jonka huippu ei saa olla alle, no, + 5 volttia, eikä esimerkiksi ylärajaa tarvitse ottaa käyttöön. Tämä johtuu siitä, että lähetettäessä impulsseja jonkin matkan päähän sähköisillä signaaleilla on taipumus heikentyä ja "tahroitua".

Jos toisesta päästä lähetetään tiukasti 12 volttia, niin 3 volttia voi päästä toiseen, ja vastaanottava järjestelmä voi tulkita tämän yksinkertaisesti häiriöksi linjassa, jolloin lähetetty tieto katoaa.

Myös impulssien merkitys tulisi ymmärtää samalla tavalla. Ja impulssit voivat olla informatiivisia, palvelu, synkronointi. Ja yleensä esimerkiksi ei impulsseja, vaan yksinkertaisesti vakiojännite. Jota voidaan käyttää toisessa päässä pienen laitteen virtalähteenä.

Ja itse johdot, joista keskusteltiin aivan alussa, tulisi myös ymmärtää samalla tavalla. Tässä on heti sanottava, ettei koskaan tapahdu, että on vain yksi johto. Jopa puhelimessa on kaksi johdinta kaapelissa, mutta normaalisti kaapelissa oletetaan olevan neljä. Ja dataliitännöissä on aina useita johtimia. Osa niistä on informatiivisia, osa palveluita. Ja tämä on tunnustettava tasapuolisesti vuorovaikutuksen molemmissa päissä. Ja johdot tunnistetaan? Värin mukaan, jos kaapelissa ja sijainnin mukaan, jos liitäntäkoskettimissa.

Portti on yksinkertainen sana, eikä myöskään täysin yksiselitteinen. Mutta merkitys on samanlainen: että jotain ladataan johonkin ja lähetetään jonnekin. Tai päinvastoin, jotain, joka ottaa vastaan ​​jotain ja purkaa siitä jotain. Merkitys on melkein sama kuin laitteisto-ohjelmisto rajapinnalla, mutta jotenkin ytimekkäämpi. Ja tiukempi, kuten laivastossa ("He kertovat sinulle - älä väittele... mutta me emme väittele..."). Vain signaalimme eivät kulje meritse, vaan kaapelilla.

COM-porttiliittimien liitäntä

Pinoutissa ei ole yhteyttä ristiinnaulitsemisen kanssa, vaikka ne, kuten vapaasti yhdessä kaapelin vaipassa kulkevat johdot, puretaan sivuille ja kovajuotetaan nastoihinsa, kuten ristiinnaulitseminen. Pin, englanniksi "pin", pin, siis pinout, sana on jo tietokoneviestinnän "pro-englantilainen" ammattislang. Se tarkoittaa, että johdot kytketään liittimen nastoihin.

Liittimen muoto, siinä olevien johtojen (nastat) järjestys, kunkin nastan tarkoitus sekä jännitearvot ja signaalien merkitys kussakin - tämä on osa käyttöliittymää. Tyypillisesti kaikki nämä tiedot kootaan erilliseksi asiakirjaksi, jota kutsutaan porttimäärittelyksi. Niin yksinkertainen ja selkeä yksisivuinen kyltti. Muissa käyttöliittymissä tällaista voidaan kutsua "protokollaksi". Ja täällä he kutsuvat sitä yksinkertaisesti "pinoutiksi".

COM-sarjaportit

Tietokoneen COM-portit ovat pitkän kantaman yhteys tietokonekompleksin välillä. Toisin kuin rinnakkaisportit ja kaapelit, jotka johtivat "raskaisiin" laitteisiin - tulostimiin, skannereihin, Com-portit liittivät "kevyitä" yksiköitä tietokoneeseen - hiiren, modeemin. Ensimmäiset tietokoneiden väliset rajapinnat ("nollamodeemin" kautta). Edelleen, milloin paikallisverkot levisivät, ja hiiriä alettiin yhdistää samalla liittimellä kuin näppäimistö - portti ps/2 (pe-es-in half) - com-portti jotenkin unohtui.

Herätys tuli USB-sarjaliitännän tulon myötä. Joten se osoittautui liikkeeksi ympyrässä. Nyt USB:ltä löydät flash-asemien lisäksi USB-hiiriä ja USB-näppäimistöjä. Tulostimet, skannerit, modeemit - kaikki oheislaitteet ovat nyt USB:llä, olen jo unohtanut paksut ja kiinteät rinnakkaiset LTP-kaapelit, jotka piti ruuvata molemmilta puolilta 2 pultilla. Ja näissä USB-laitteissa on kaksi signaalijohtoa (itse asiassa on yksi kanava, yksi suora signaali, toinen sama - käänteinen) ja kaksi - virtalähde ja kotelo.

Aiempia COM-sarjaportteja oli useita. Pienin - ja suosituin 9-nastainen portti (D9), johon useimmat laitteet oli kytketty: hiiret, modeemit, nollamodeemikaapelit. Koskettimet järjestettiin kahteen riviin, 5 ja 4 peräkkäin, jolloin muodostui puolisuunnikkaan muoto. Siitä nimi D9. ”Äidillä” numerointi eteni vasemmalta oikealle ja ylhäältä alas:

1 2 3 4 5

COM-portin johdotus, portti RS232, 9 nastaa.

Nimitys Tyyppi Kuvaus
1 DCD Sisäänkäynti Korkea taso modeemilta, kun se vastaanottaa operaattorimodeemikumppanin
2 RxD Sisäänkäynti Saapuvat datapulssit
3 TxD Poistu Lähtevät datapulssit
4 DTR Poistu Korkea taso (+12 V) osoittaa, että tietokone on valmis vastaanottamaan tietoja. Kytketty hiiri käytti tätä nastaa virtalähteenä
5 GND Kenraali Maapallo
6 DSR Sisäänkäynti Laite on valmis lähettämään tietoja
7 RTS Poistu Kumppanilaitteen vastevalmius
8 CTS Sisäänkäynti Valmius vastaanottaa tietoja kumppanilta
9 R.I. Sisäänkäynti Signaali, joka ilmoittaa tietokoneelle saapuvasta puhelusta, jonka modeemi on vastaanottanut viestintälinjalta

Rinnakkaisportin ohella COM-portti tai sarjaportti on yksi perinteisistä tietokoneen tulo-/lähtöporteista, joita käytettiin ensimmäisissä tietokoneissa. Vaikka COM-porttia on rajoitetusti käytetty nykyaikaisissa tietokoneissa, siitä voi kuitenkin olla hyötyä monille käyttäjille.

Sarjaportti, kuten rinnakkaisportti, ilmestyi kauan ennen IBM PC -arkkitehtuurin henkilökohtaisten tietokoneiden tuloa. Ensimmäisissä henkilökohtaisissa tietokoneissa COM-porttia käytettiin oheislaitteiden liittämiseen. Sen käyttöalue poikkesi kuitenkin jonkin verran rinnakkaisportin laajuudesta. Jos rinnakkaisporttia käytettiin pääasiassa tulostimien liittämiseen, niin COM-porttia (muuten, etuliite COM on vain lyhenne sanasta viestintä) käytettiin yleensä työskentelyyn tietoliikennelaitteiden, kuten modeemien, kanssa. Voit kuitenkin liittää porttiin esimerkiksi hiiren sekä muita oheislaitteita.

COM-portti, pääkäyttöalueet:

  1. Liitännät
  2. ~ ulkoiset modeemit
  3. ~ tulostimet ja piirturit
  4. ~ hiiret
  5. Suora yhteys kahden tietokoneen välillä

Tällä hetkellä COM-portin laajuutta on vähennetty huomattavasti nopeamman ja kompaktimman ja muuten myös sarja-USB-liitännän käyttöönoton ansiosta. Ulkoiset modeemit, jotka on suunniteltu kytkeytymään porttiin, sekä "COM"-hiiret ovat melkein poistuneet käytöstä. Ja on harvinaista, että kukaan nyt yhdistää kaksi tietokonetta nollamodeemikaapelilla.

Useat erikoislaitteet käyttävät kuitenkin edelleen sarjaporttia. Löytyy monelta emolevyltä. Tosiasia on, että USB-porttiin verrattuna COM-portilla on yksi tärkeä etu - RS-232-sarjatiedonsiirtostandardin mukaan se voi toimia useiden kymmenien metrien etäisyydellä olevien laitteiden kanssa, kun taas USB-kaapelin kantama on yleensä rajoitettu 5 metriin.

Sarjaportin toimintaperiaate ja sen ero rinnakkaisporttiin

Toisin kuin rinnakkaisportti (LPT), sarjaportti lähettää dataa bitti kerrallaan yhdellä rivillä useiden linjojen sijaan samanaikaisesti. Bittisekvenssit ryhmitellään datasarjoiksi, alkaen aloitusbitistä ja päättyen lopetusbittiin, sekä pariteettibittejä, joita käytetään virheentarkistukseen. Tästä tulee toinen englanninkielinen nimi, jolla on sarjaportti - Serial Port.

Sarjaportissa on kaksi linjaa, joiden kautta varsinainen data siirretään - nämä ovat linjoja tiedon siirtämiseksi päätteestä (PC) viestintälaitteeseen ja takaisin. Lisäksi on useita muita ohjauslinjoja. Sarjaporttia palvelee erityinen UART-siru, joka pystyy tukemaan suhteellisen suurta tiedonsiirtonopeutta, joka on 115 000 baudia (tavua/s). On kuitenkin syytä huomata, että tiedonvaihdon todellinen nopeus riippuu molemmista viestintälaitteista. Lisäksi UART-ohjaimen toimintoihin kuuluu rinnakkaiskoodin muuntaminen sarjakoodiksi ja päinvastoin.

Portti käyttää suhteellisen korkeajännitteisiä sähkösignaaleja - +15 V ja -15 V asti. Sarjaportin looginen nollataso on +12 V ja looginen yksi taso -12 V. Näin suuri jännitehäviö mahdollistaa takaavat lähetetyn tiedon korkean häiriönkestävyyden. Toisaalta sarjaportissa käytettävät korkeat jännitteet vaativat monimutkaisia ​​piiriratkaisuja. Tämä seikka vaikutti myös sataman suosion laskuun.

Sarjaliitäntä RS-232

Sarjaportin toiminta PC:ssä perustuu sarjalaitteiden tiedonsiirtostandardiin RS-232. Tämä standardi kuvaa tiedonsiirtoprosessia tietoliikennelaitteen, kuten modeemin, ja tietokonepäätteen välillä. RS-232-standardi määrittelee signaalien sähköiset ominaisuudet, tarkoituksen, keston sekä niille tarkoitettujen liittimien ja liittimien koot. RS-232 kuvaa kuitenkin vain tiedonsiirtoprosessin fyysistä tasoa, eikä se koske käytettyjä siirtoprotokollia, jotka voivat vaihdella käytetyn viestintälaitteen ja ohjelmiston mukaan.

RS-232-standardi luotiin vuonna 1969, ja sen uusin versio, TIA 232, julkaistiin vuonna 1997. RS-232:ta pidetään nykyään vanhentuneena, mutta useimmat käyttöjärjestelmät tukevat sitä edelleen.

Nykyaikaisissa tietokoneissa sarjaporttiliitin on 9-nastainen DB-9-urosliitin, vaikka RS-232-standardi kuvaa myös 25-nastaista DB-25-liitintä, jota käytettiin usein vanhemmissa tietokoneissa. DB-9-liitin sijaitsee tavallisesti PC:n emolevyllä, vaikka vanhemmissa tietokoneissa se on saattanut sijaita erikoiskortissa, joka on asetettu laajennuspaikkaan.

9-nastainen DB-9-liitäntä emolevyssä

DB-9-liitin porttiin kytketyn laitteen kaapelissa

Toisin kuin rinnakkaisportissa, kaksisuuntaisen sarjakaapelin molemmilla puolilla olevat liittimet ovat identtiset. Itse tiedonsiirtolinjojen lisäksi portissa on useita palvelulinjoja, joiden kautta ohjaustietoa voidaan siirtää päätelaitteen (tietokoneen) ja tietoliikennelaitteen (modeemin) välillä. Vaikka sarjaportin toimintaan tarvitaan teoriassa vain kolme kanavaa - tiedon vastaanotto, tiedonsiirto ja maadoitus, käytäntö on osoittanut, että palvelulinjojen läsnäolo tekee viestinnästä tehokkaampaa, luotettavampaa ja sen seurauksena nopeampaa.

Sarjaportin DB-9-liitinlinjojen käyttötarkoitus RS-232:n mukaisesti ja niiden vastaavuus DB-25-liittimen koskettimiin:

Ota yhteyttä DB-9 Englantilainen nimi venäläinen nimi Ota yhteyttä DB-25:een
1 Tietojen kantajan tunnistus Operaattori havaittu 8
2 Siirrä tiedot Lähetetyt tiedot 2
3 Vastaanota Data Vastaanotettu data 3
4 Dataterminaali valmiina Terminaalin valmius 20
5 Maadoitus Maapallo 7
6 Tietojoukko valmis Lähettimen valmius 6
7 Pyydä lähettää Pyyntö lähettää tietoja 4
8 Tyhjennä lähetettäväksi Tiedonsiirto sallittu 5
9 Soiton ilmaisin Soiton ilmaisin 22

Kokoonpano ja keskeytykset

Koska tietokoneessa voi olla useita sarjaportteja (enintään 4), järjestelmä varaa niille kaksi laitteistokeskeytystä - IRQ 3 (COM 2 ja 4) ja IRQ 4 (COM 1 ja 3) sekä useita BIOS-keskeytyksiä. Monet viestintäohjelmat, kuten myös sisäänrakennetut modeemit, käyttävät keskeytyksiä ja COM-porttien osoiteavaruutta työssään. Tällöin ei yleensä käytetä oikeita portteja, vaan ns. virtuaalisia portteja, joita käyttöjärjestelmä itse emuloi.

Kuten monien muiden emolevyn komponenttien kohdalla, COM-portin parametrit, erityisesti laitteistokeskeytyksiä vastaavat BIOS-keskeytysarvot, voidaan konfiguroida BIOS-asetusliittymän kautta. Tätä varten käytetään BIOS-asetuksia, kuten COM-portti, sisäinen sarjaportti, sarjaportin osoite jne.

Johtopäätös

PC:n sarjaportti ei ole tällä hetkellä laajalti käytetty tulo/lähtötapa. Koska sarjaportin kanssa toimivia laitteita on kuitenkin suuri määrä, pääasiassa tietoliikennetarkoituksiin, ja myös joidenkin RS-232-sarjadataprotokollan eduista johtuen, sarjaliitäntää ei pitäisi vielä kirjata pois. täysin vanhentuneena alkeellisena henkilökohtaisena tietokonearkkitehtuurina.

THR - lähettimen välitietorekisteri(vain kirjoitus) Rekisteriin kirjoitetut tiedot siirretään lähtösiirtorekisteriin (kun se on vapaa), josta se lähetetään, kun aktivointisignaali on läsnä CTS. Bitti 0 lähetetään (ja vastaanotetaan) ensin. Jos lähetyspituus on alle 8 bittiä, merkittävimmät bitit ohitetaan.
RBR - vastaanottaa datapuskurirekisteriä(vain luku) Tulosiirtorekisterin vastaanottamat tiedot sijoitetaan rekisteriin RBR, josta prosessori voi lukea ne. Jos seuraavaa merkkiä vastaanotettaessa edellistä ei ole luettu rekisteristä, tallennetaan ylivuotovirhe. Kun lähetyspituus on alle 8 bittiä, rekisterin merkittävimmät bitit ovat arvoltaan nolla.
DLL - taajuudenjakajan alhainen tavurekisteri.
DLM - taajuudenjakajan korkea tavurekisteri. Jakaja määritetään kaavalla D=115200/V, jossa V on lähetysnopeus, bit/s. Tulokellotaajuus 1,8432 MHz jaetaan annetulla kertoimella, jolloin saadaan 16-kertainen tiedonsiirtonopeus.
IER - keskeytys sallittu -rekisteri. Bittiarvo yksi mahdollistaa keskeytyksen vastaavasta lähteestä.
Rekisteröi bittitehtävät IER:
* bittiä =0 - ei käytetty;
* bitti 3 - Mod_IE- muuttamalla modeemin tilaa (mitä tahansa riveistä CTS, DSR, RI, DCD);
* bitti 2 - RxL_IE- rivinvaihdon/virheen vuoksi;
* bitti 1 - TxD_IE- siirron päätyttyä;
* bitti 0 - RxD_IE- merkin vastaanotettuaan (FIFO-tilassa - aikakatkaisun keskeytys).
IIR - keskeytyksen tunnistusrekisteri ja FIFO-moodimerkki(vain lukemista varten). Ohjelmistoanalyysin yksinkertaistamiseksi UART järjestää sisäiset keskeytyspyynnöt nelitasoisen prioriteettijärjestelmän mukaisesti. Prioriteettijärjestys (laskeva): rivin tila, merkkien vastaanotto, lähettimen rekisterin vapautus, modeemin tila. Kun keskeytysolosuhteet esiintyvät, UART osoittaa korkeimman prioriteetin lähteeseen, kunnes vastaava toiminto poistaa sen. Vasta tämän jälkeen lähetetään pyyntö, jossa ilmoitetaan seuraava lähde. Rekisteribittien tarkoitus on kuvattu alla: IIR.
* Bitit - merkki FIFO-tilasta:
11-moodi FIFO 16550A;
10 - FIFO 16550 -tila;
00 - normaali.
* Terät - ei käytetty.
* Bitti 3 - vastaanottoaikakatkaisun keskeytys FIFO-tilassa (puskurissa on luettavia merkkejä).
* Bitit - keskeytyksen syy korkeimmalla prioriteetilla (normaalissa, ei FIFO-tilassa):
11 - virhe/linjakatkos, nollaus suoritetaan lukemalla linjan tilarekisteri;
10 - symboli vastaanotettu, nollaus suoritetaan lukemalla tietoja;
01 - merkki lähetetty (rekisteri THR tyhjä), nollaus suoritetaan kirjoittamalla tietoja;
00 - modeemin tilan muutos; Nollaus suoritetaan lukemalla modeemin tilarekisteri.
* Bitti 0 on merkki palvelemattomasta keskeytyspyynnöstä (1 - ei pyyntöä, 0 - on pyyntö).
FIFO-tilassa keskeytyksen syy tunnistetaan bittien avulla.
* O11 - virhe/rivinvaihto. Nollaus suoritetaan lukemalla linjan tilarekisteri.
* 010 - merkki hyväksytty. Nollaus suoritetaan lukemalla vastaanottimen tietorekisteri
* 110 - aikakatkaisun ilmaisin (4-kertaisella merkin aikavälillä ei lähetetty tai vastaanotettu yhtään merkkiä, vaikka puskurissa on ainakin yksi). Nollaus suoritetaan lukemalla vastaanottimen tietorekisteri.
* 001 - rekisteröidy THR tyhjä Nollaus suoritetaan kirjoittamalla tietoja.
* 000 - modeemin tilan muutos ( CIS, DSR, RI tai DCD). Resetointi suoritetaan lukemalla rekisteri MSR.
FCR - FIFO-ohjausrekisteri(vain tallennusta varten). Rekisteribittien tarkoitus on kuvattu alla: FCR:
* Bittiä - ITL(Interrupt Trigger Level) - FIFO-puskurin täyttötaso, jolla keskeytys luodaan:
00 - 1 tavu (oletus);
01 - 4 tavua;
10 - 8 tavua;
11-14 tavua.
*Bitit on varattu.
* Bitti 3 - ota käyttöön DMA-toiminnot.
* Bitti 2 - RESETTF(Reset Transmitter FIFO) - nollaa FIFO-lähettimen laskuri (kirjoittamalla yksi; siirtorekisteriä ei nollata).
* Bitti 1 - RESETRF(Reset Receiver FIFO) - nollaa FIFO-vastaanottimen laskuri (kirjoittamalla yksi; siirtorekisteriä ei nollata).
* Bitti 0 - TRIFFOE(Transmit And Receive FIFO Enable) - ota käyttöön (yksikön mukaan) FIFO-tila lähettimelle ja vastaanottimelle. Tilaa vaihdettaessa FIFO-puskurit tyhjennetään automaattisesti.
LCR - linjaohjausrekisteri(kanavaparametriasetukset). Rekisteribittien tarkoitus on kuvattu alla: LCR.
* Bitti 7 - DLAB(Divisor Latch Access Bit) - ohjaa pääsyä taajuudenjakajaan.
* Bitti 6 - BRCON(Break Control) - rivinvaihdon luominen (nollien lähettäminen), kun BRCON=1.
* Bitti 5 - STICPAR(Sticky Parity) - pariteettibitin pakotettu muodostus:
0 - tarkistusbitti generoidaan lähtösymbolin pariteetin mukaisesti;
1 - ohjausbitin vakioarvo: milloin EVENPAR=1 - nolla, kanssa EVENPAR=0 - yksittäinen.
* Bitti 4 - EVENPAR(Parillisen pariteetin valinta) - ohjaustyypin valinta: 0 - pariton, 1 - parillinen.
* Bitti 3 - PAREN(Pariteetti käytössä) - ohjausbitin resoluutio:
1 - ohjausbitti (pariteetti tai vakio) on käytössä;
0 - ohjausbitti poistettu käytöstä.
* Bitti 2 - STOPB(Pysäytysbitit) - pysäytysbittien määrä:
0 - 1 pysäytysbitti;
1 - 2 lopetusbittiä (5-bittisessä koodissa stop-bitti on 1,5 bittiä).
* Bittiä - SERIALDB(Serial Data Bits) - databittien määrä:
00 - 5 bittiä;
01-6 bittiä;
10 - 7 bittiä;
11-8 bittiä.
MCR - modeemin ohjausrekisteri. Rekisteribittien tarkoitus on kuvattu alla: MCR.
* Bitit =0 - varattu.
* Bitti 4 - LME(Loopback Mode Enable) - ota diagnostiikkatila käyttöön:
0 - normaali tila;
1 - diagnostiikkatila (katso alla).
* Bitti 3 - I.E.(Interrupt Enable) - keskeytykset mahdollistavat ulkoisen lähdön avulla OUT2 MSR.7:
0 - keskeytykset eivät ole käytössä;
1 - keskeytykset ovat käytössä.
* Bitti 2 - OUT1C(OUT1 Bit Control) - lähtösignaalin 1 ohjaus (ei käytössä); diagnostiikkatilassa se menee sisääntuloon MSR.6.
* Bitti 1 - RTSC(Request To Send Control) - lähdön ohjaus RTS; diagnostiikkatilassa se menee sisääntuloon MSR.4:
0 - aktiivinen (-V);
1 - passiivinen (+V).
* Bitti 0 - DTRC(Data Terminal Ready Control) - lähdön ohjaus DTR; diagnostiikkatilassa se menee sisääntuloon MSR.5:
0 - aktiivinen (-V);
1 - passiivinen (+V).
LSR - rivin tilarekisteri(tarkemmin lähetin-vastaanottimen tila). LSR-rekisteribittien tarkoitus on kuvattu alla.
* Bitti 7 - FIFOE(FIFO Error Status) - virhe vastaanotetussa datassa FIFO-tilassa (puskurissa on vähintään yksi muotovirheellä, pariteettivirheellä tai katkolla vastaanotettu merkki). Ei-FIFO-tilassa se on aina 0.
* Bitti 6 - HOUKUTELLA(Transmitter Empty Status) - lähetinrekisteri on tyhjä (siirtorekisterissä tai puskurirekisterissä ei ole lähetettävää dataa THR tai FIFO).
* Bitti 5 - KOLME(Transmitter Holding Register Empty) - lähetinrekisteri on valmis vastaanottamaan tavun lähetystä varten. FIFO-tilassa osoittaa, että FIFO-lähetyspuskurissa ei ole merkkejä. Voi olla keskeytyksen lähde.
* Bitti 4 - BD(Break Detected) - rivikatkon ilmaisin (vastaanottimen tulo on tilassa 0 vähintään symbolin lähetysajan).
* Bitti 3 - F.E.(Framing Error) - kehysvirhe (virheellinen pysäytysbitti).
* Bitti 2 - RE(Pariteettivirhe) - tarkista bittivirhe (pariteetti tai kiinteä).
* Bitti 1 - OE(Overrun Error) - ylivuoto (merkin menetys). Jos seuraavan merkin vastaanotto alkaa ennen kuin edellinen on purettu siirtorekisteristä puskurirekisteriin tai FIFO-rekisteriin, siirtorekisterin edellinen merkki menetetään.
* Bitti 0 - DR.(Receiver Data Ready) - vastaanotettu data on valmis (DHR- tai FIFO-puskurissa). Nollaa - lukemalla vastaanottimen.
Virheilmaisimet - bitit - nollataan rekisterin lukemisen jälkeen LSR. FIFO-tilassa virheliput tallennetaan FIFO-puskuriin jokaisen merkin mukana. Rekisterissä ne asetetaan (ja aiheuttavat keskeytyksen) sillä hetkellä, kun virheellisesti vastaanotettu merkki on FIFO:n (ensimmäisenä luettavassa jonossa) yläosassa. Rivinvaihdon sattuessa FIFO:hun syötetään vain yksi "break"-merkki, ja UART odottaa palautumista ja sitä seuraavaa aloitusbittiä. MSR- modeemin tilarekisteri. Rekisteribittien tarkoitus on kuvattu alla: MSR:
* Bitti 7 - DCD(Data Carrier Detect) - linjan tila DCD:
0 - aktiivinen (-V);
1 - passiivinen (+V).
* Bitti 6 - R.I.(Ring Indicator) - linjan tila R.I.:
0 - aktiivinen (-V);
1 - passiivinen (+V).
* Bitti 5 - DSR(Data Set Ready) - linjan tila DSR:
0 - aktiivinen (-V);
1 - passiivinen (+V).
* Bitti 4 - CTS(Tyhjennä lähetys) - linjan tila CTS:
0 - aktiivinen (-V);
1 - passiivinen (+V).
* Bitti 3 - DDCD(Delta Data Carrier Detect) - tilan muutos DCD.
* Bitti 2 - TERI(Trailing Edge Of Ring Indicator) - kirjekuoren hajoaminen R.I.(lopeta puhelu).
* Bitti 1 - DDSR(Delta Data Set Ready) - tilan muutos DSR.
* Bitti 0 - DCTS(Delta Clear To Send) - tilan muutos CTS.
Muutosmerkit (bitit) nollataan, kun rekisteriä luetaan.
SRC - toimiva rekisteri(8 bittiä), ei vaikuta UART:n toimintaan, on tarkoitettu väliaikaiseen tiedontallennustilaan (ei saatavilla mallissa 8250).
SISÄÄN diagnostinen tila(at LME=1) sisäinen "tynkä" on järjestetty UART:n sisään:
* lähettimen lähtö on kytketty loogiseen yhden tilaan;
* vastaanottimen tulo on poistettu käytöstä; * tulot DSR, CTS, RI Ja DCD irrotettu tulolinjoista ja ohjattu sisäisesti biteillä DTRC, RTSC, OUT1C, IE;
* Modeemin ohjauslähdöt kytketään passiiviseen tilaan (looginen nolla).
Sarjamuodossa lähetetyt tiedot vastaanotetaan välittömästi, jolloin voit tarkistaa portin sisäisen tietokanavan (mukaan lukien siirtorekisterit) ja keskeyttää käsittelyn sekä määrittää UART:n nopeuden.

Tämän portin erityispiirre muihin "sarja"tekniikoihin verrattuna on se, että 2 tavun välillä ei ole ajoitusvaatimuksia. Ajoitusvaatimukset ovat vain yhden tavun bittien välillä (mukaan lukien aloitus, lopetus ja pariteetti), yhden tavun bittien välisen aikatauon käänteislukua kutsutaan baudinopeudeksi - baudinopeudeksi. Myöskään tässä tekniikassa ei ole "paketin" käsitettä.

Muissa "sarja"tekniikoissa, kuten X.25, USB tai Ethernet, on "paketti"-käsite, ja ne asettavat tiukat ajoitusvaatimukset yhden paketin kaikkien bittien välillä.

Tästä syystä Cisco IOS -terminologiassa tätä porttia kutsuttiin asynciksi - toisin kuin synkroninen sarja, ts. X.25. Samasta syystä Windows-moduuli, joka toteuttaa PPP:n tämän portin kautta, on nimeltään AsyncMac.sys (PPP-standardi kuvaa erikseen PPP:n toteuttamisen, joka käyttää "paketti"-käsitettä, sarjaportissa, jossa tätä käsitettä ei ole) .

Jotkut teolliset tietoliikenneprotokollat ​​asettavat tiukat ajoitusvaatimukset sarjaporttitavuille. Tällaisia ​​protokollia on erittäin vaikea toteuttaa moniajokäyttöjärjestelmissä, joissa on heikko reaaliaikainen tuki, kuten Windows, ja siksi ne vaativat usein MS-DOS:n ja lähes 20 vuoden takaisia ​​vanhentuneita ohjelmistoja ohjaustietokoneessa.

Tarkoitus

Yleisimmin käytetty standardi henkilökohtaisten tietokoneiden sarjaportille on RS-232C. Aikaisemmin sarjaporttia käytettiin päätteen, myöhemmin modeemin tai hiiren liittämiseen. Sitä käytetään nyt yhteyden muodostamiseen sulautettujen tietokonejärjestelmien kehittämiseen tarkoitettuihin laitteistoihin, satelliittivastaanottimiin, kassakoneisiin sekä tilojen turvajärjestelmälaitteisiin.

COM-portin avulla voit yhdistää kaksi tietokonetta niin sanotulla "nollamodeemikaapelilla" (katso alla). Sitä on käytetty MS-DOSin ajoista lähtien tiedostojen siirtämiseen tietokoneesta toiselle, UNIXissa päätelaitteiden pääsyyn toiselle koneelle ja Windowsissa (jopa nykyaikaisissa) ydintason virheenkorjaukseen.

Tekniikan etuna on laitteiden äärimmäinen yksinkertaisuus. Haittapuolena ovat alhainen nopeus, suuret liitinkoot sekä usein korkeat vaatimukset käyttöjärjestelmän ja ohjaimen vasteajalle sekä suuri määrä keskeytyksiä (yksi laitteistojonon puolta kohti, eli 8 tavua).

Liittimet

Johtavien valmistajien emolevyillä (esim. Intel) tai valmiilla järjestelmillä (esim. IBM, Hewlett-Packard, Fujitsu Siemens Computers) käytetään seuraavaa symbolia sarjaporttina:

Yleisimmin käytetyt D-muotoiset liittimet, standardoitu vuonna 1969, ovat 9-nastaiset ja 25-nastaiset (DB-9 ja DB-25). Aikaisemmin käytettiin myös DB-31 ja pyöreä kahdeksannapainen DIN-8. Suurin siirtonopeus portin normaaliversiossa on 115 200 baudia.

Merkityksellisyys

On olemassa standardeja sarjaportin emuloimiseksi USB:n ja Bluetoothin kautta (tämä tekniikka suunniteltiin suurelta osin "langattomaksi sarjaportiksi").

Tästä huolimatta tämän portin ohjelmistoemulointia käytetään edelleen laajalti. Esimerkiksi melkein kaikki matkapuhelimet emuloivat klassista COM-porttia ja modeemia sisällään jakamisen toteuttamiseksi - tietokoneen pääsyn Internetiin puhelimen GPRS/EGDE/3G-laitteiden kautta. Tässä tapauksessa USB-, Bluetooth- tai Wi-Fi-liitäntää käytetään fyysiseen liittämiseen tietokoneeseen.

Tämän portin ohjelmistoemulointi tarjotaan myös VMWaren ja Microsoft Hyper-V -virtuaalikoneiden "vieraille", joiden päätarkoitus on yhdistää Windows-ytimen tason debuggeri "vierailijaan".

Laitteet

Liittimessä on kontaktit:

DTR (Data Terminal Ready - valmius vastaanottaa tietoja) - lähtö tietokoneeseen, tulo modeemiin. Ilmaisee, että tietokone on valmis käyttämään modeemia. Tämän rivin nollaaminen aiheuttaa modeemin lähes täydellisen uudelleenkäynnistyksen alkuperäiseen tilaan, mukaan lukien. puhelun katkaiseminen (jotkut ohjausrekisterit selviävät tällaisesta nollauksesta). UNIXissa tämä tapahtuu, kun kaikki sovellukset ovat sulkeneet tiedostot sarjaportin ohjaimessa. Hiiri käyttää tätä johtoa virran vastaanottamiseen.

DSR (Data Set Ready - valmius tiedonsiirtoon) - tulo tietokoneeseen, lähtö modeemiin. Osoittaa, että modeemi on valmis. Jos tämä rivi on nolla, joissakin käyttöjärjestelmissä portin avaaminen tiedostona on mahdotonta.

RxD (Receive Data) - tulo tietokoneeseen, lähtö modeemiin. Tietovirta, joka tulee tietokoneeseen.

TxD (Transmit Data) - lähtö tietokoneeseen, tulo modeemiin. Tietovirta, joka tulee tietokoneelta.

CTS (Clear to Send - valmius lähettää) - tulo tietokoneeseen, lähtö modeemiin. Tietokoneen on keskeytettävä tiedonsiirto, kunnes tämä johto on asetettu arvoon yksi. Käytetään laitteiston vuonohjausprotokollassa estämään ylivuodon modeemissa.

RTS (Request to Send - request to send) - lähtö tietokoneeseen, tulo modeemiin. Modeemin on keskeytettävä tiedonsiirto, kunnes tämä johto on asetettu yhdeksi. Käytetään laitteiston vuonhallintaprotokollassa estämään laitteiston ja ohjainten ylivuodot.

DCD (Carrier Detect - operaattorin läsnäolo) - tulo tietokoneessa, lähtö modeemissa. Modeemi asettaa yhdeksi, kun olet muodostanut yhteyden toisella puolella olevaan modeemiin, nollaa, kun yhteys katkeaa. Tietokonelaitteisto saattaa aiheuttaa keskeytyksen tällaisen tapahtuman sattuessa.

RI (Ring Indicator - soittoääni) - tulo tietokoneeseen, lähtö modeemiin. Modeemi asettaa asetukseksi yksi havaittuaan puhelun soittoäänen. Tietokonelaitteisto saattaa aiheuttaa keskeytyksen tällaisen tapahtuman sattuessa.

SG (Signal Ground) - portin yhteinen signaalijohto, ei ole yhteinen maa, yleensä eristetty tietokoneen kotelosta tai modeemista.

Nollamodeemikaapelissa käytetään kahta ristikkäistä paria: TXD/RXD ja RTS/CTS.

Vakioporttilaitteisto (alkuperäisestä IBM PC:stä lähtien) on nimeltään UART 16550 (sisältyy tällä hetkellä emolevyn SuperIO-siruun useiden muiden laitteiden ohella). IBM PC:n ajoista lähtien siihen on ilmestynyt laitteistotavujono, mikä vähentää huomattavasti laitteen antamien keskeytysten määrää.

Ohjelmallinen pääsy COM-porttiin

UNIX

Jokaiselle portille on oma rekisteriosio. Näillä osioilla on seuraavat nimet:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Serial\Parameters\Serial10000

jossa viimeinen arvo "Serial10000" on yksilöllinen numero jokaiselle järjestelmään lisätylle uudelle COM-portille, toiselle - "Serial10001" jne.

Kommunikoidakseen Bluetoothia tukevien laitteiden kanssa jotkin ohjelmat (esimerkiksi tällaisia ​​ohjelmia ovat: ohjelma, joka synkronoi yhteystietoluettelon matkapuhelimen kanssa; ohjelma, joka hakee GPS-koordinaatteja GPS-vastaanottimesta) edellyttävät COM-porttia käyttäjän tietokoneessa.

Ohjelmat, jotka käyttävät COM-portteja tukemaan viestintää langattomalla Bluetooth-tekniikalla, jonka Microsoft on suoraan kehittänyt, ovat:

  • Kämmentietokoneissa käytetty HotSync
  • ActiveSync, käytetään taskutietokoneissa

OS/2

Nykyinen COM.SYS-ohjain tukee vain neljää COM-porttia, joista jokaisella on oltava oma keskeytyslinja. Jos haluat huoltaa COM-portteja yhteisellä keskeytyslinjalla, sinun on käytettävä SIO-ohjainta.

Nollamodeemikaapeli

Pääartikkeli: Nollamodeemikaapeli

Joissakin tapauksissa on mahdollista käyttää kaapelin yksinkertaistettua versiota, jossa käytetään vain nastoja 2, 3 ja 5.

Katso myös

  • Sarjaportin signaalit

Huomautuksia

Linkit

  • COM-portin ohjelmointioppaan käännös POSIX-käyttöjärjestelmissä
  • Portin ohjelmointi javassa - mahdollistaa työskentelyn Windowsista, toisin kuin Sunin virallisissa paketeissa.
  • COM-portin ohjelmointi C++:ssa Windowsille. Valmis kirjasto, lähdekoodit, malliohjelmat.
  • Yashkardin V.L. Sarjaportti. COM-portin ohjelmointi Windowsissa ja MS-DOSissa. SoftElectro (2009). Arkistoitu alkuperäisestä 8. helmikuuta 2012.

Joten pääsimme COM-porttiin. Mutta sen kanssa kaikki ei ole niin yksinkertaista kuin LPT:n kanssa, ja sen täysi käyttö vaatii paljon enemmän vaivaa. Suurin ongelma on myös sen tärkein etu - sarjatiedonsiirto. Jos LPT:ssä siirretään tavu dataa 8 riviä pitkin, bitti per rivi ja jokaisen rivin tila oli helposti nähtävissä, niin COM-portissa siirretään tavu dataa bitti kerrallaan yhtä riviä pitkin (suhteessa maahan Tietenkin) ja katso, mitä siellä lähetetään LEDien avulla, se ei tee sitä. Tätä varten tarvitset erityisen laitteen - sarjatietovirran muuntimen rinnakkaiseksi, ns. USART (Universal Synchronous/Asynchronous Receiver Transmitter). Se sisältyy esimerkiksi COM-portilla varustetun tietokoneen emolevyyn tai mihin tahansa vakavampaan mikro-ohjaimeen.


Toivottavasti olet edelleen masentunut hallitsemaan COM-porttia. Kaikki ei ole tuhoa ja synkkyyttä. Jotkut tulokset voidaan saada ilman USART:tä. Muotoillaan tehtävä, jonka toteutamme COM-portin kanssa työskentelyn alkuvaiheessa:


"Haluaisin LEDin kytkeytyvän tietokoneeseen COM-portin kautta. Käynnistän ohjelman. Suoritan tässä ohjelmassa jonkin toiminnon, LED syttyy, teen jotain muuta - LED sammuu."


Tehtävä on melko spesifinen (ottaen huomioon, että USART:tä ei käytetä) ja se on puhdas "tee-se-itse" -tehtävä, mutta se on varsin toteutettavissa ja toimiva. Aloitetaan sen toteuttaminen.


1.COM-portti

Ota jälleen tietokoneesi järjestelmäyksikkö ja katso sen takaosaa. Huomaa, että siinä on 9-nastainen liitin - tämä on COM-portti. Todellisuudessa niitä voi olla useita (jopa 4). Tietokoneessani on kaksi COM-porttia (katso kuva).


2. COM-portin laajennus


3. Laitteisto

Joudumme myös "tyhjentämään" laitteistoa siinä mielessä, että se on monimutkaisempaa kuin ensimmäisen LPT-portin laitteen kanssa. Tosiasia on, että RS-232-protokollalla, jonka kautta tietoja vaihdetaan COM-portissa, on hieman erilainen looginen tila-jännite-suhde. Jos yleensä tämä on looginen 0 0 V, looginen 1 +5 V, niin RS-232:ssa tämä suhde on seuraava: looginen 0 +12 V, looginen 1 -12 V.

Ja esimerkiksi saatuaan -12 V, ei ole heti selvää, mitä tehdä tälle jännitteelle. Tyypillisesti RS-232-tasot muunnetaan TTL:ksi (0,5 V). Yksinkertaisin vaihtoehto on zener-diodit. Mutta ehdotan tämän muuntimen tekemistä erityisellä sirulla. Sen nimi on MAX232.

Katsotaan nyt, mitä signaaleja COM-portista voimme nähdä LED-valoissa? Itse asiassa COM-portissa on jopa 6 itsenäistä linjaa, jotka kiinnostavat liitäntälaitteiden kehittäjää. Kaksi niistä ei ole vielä saatavillamme - sarjatietolinjat. Mutta loput 4 on suunniteltu ohjaamaan ja osoittamaan tiedonsiirtoprosessia, ja voimme "siirtää" ne tarpeidemme mukaan. Kaksi niistä on tarkoitettu ohjattavaksi ulkoisesta laitteesta, emmekä kosketa niitä toistaiseksi, mutta käytämme nyt kahta viimeistä jäljellä olevaa riviä. Niitä kutsutaan:

  • RTS- Siirtopyyntö. Vuorovaikutusviiva, joka osoittaa, että tietokone on valmis vastaanottamaan tietoja.
  • DTR- Tietokone on valmis. Vuorovaikutusviiva, joka osoittaa, että tietokone on päällä ja valmis kommunikoimaan.

Nyt siirretään hieman niiden tarkoitusta, ja niihin liitetyt LEDit joko sammuvat tai syttyvät oman ohjelmamme toimien mukaan.

Joten kootaan kaavio, jonka avulla voimme suorittaa aiotut toimet.

Ja tässä on sen käytännön toteutus. Luulen, että annat minulle anteeksi, että tein sen niin tyhmänä leipälevyversiona, koska en halua tehdä levyä niin "erittäin tuottavaan" piiriin.


4. Ohjelmisto-osa

Täällä kaikki on yksinkertaisempaa. Luodaan Microsoft Visual C++ 6.0:ssa MFC-pohjainen Windows-sovellus kahden rivin COM-porttiviestinnän hallintaan. Luo uusi MFC-projekti ja anna sille nimi, esimerkiksi TestCOM. Valitse seuraavaksi dialogiin perustuva rakentamisvaihtoehto.

Anna ohjelmamme valintaikkunan ulkoasu kuten kuvassa. alla, eli lisää neljä painiketta, kaksi kullekin riville. Toinen niistä on vastaavasti tarpeen linjan "sammuttamiseksi", toinen sen "asettamiseksi" yhdeksi.

Luokka CTestCOMDlg: public CDialog ( // Rakennus julkinen: CTestCOMDlg(CWnd* pParent = NULL); // vakiokonstruktori HANDLE hFile;

Jotta ohjelmamme voisi ohjata COM-portin linjoja, se on ensin avattava. Kirjoitetaan portin avaamisesta vastaava koodi ohjelmaa ladattaessa.

HFile = CreateFile("COM2", YLEINEN_LUETTU|YLEINEN_KIRJOITUS, 0, NULL, AVOIN_OLEMO, 0,NULL); if(hFile==INVALID_HANDLE_VALUE) ( MessageBox("Porttia ei voitu avata!", "Virhe", MB_ICONERROR); ) else ( MessageBox("Portti avattiin onnistuneesti", "Ok", MB_OK); )

Käyttämällä tavallista Win API -toimintoa Luo tiedosto() avaa COM-portti COM2. Seuraavaksi tarkistamme avauksen onnistumisen ja näytämme tiedotusviestin. Tässä meidän on tehtävä tärkeä huomautus: COM2 on tietokoneessani, mutta tietokoneellasi voit liittää sen toiseen COM-porttiin. Näin ollen sen nimi on vaihdettava mihin tahansa porttiin, jota käytät. Voit nähdä tietokoneessasi olevat porttinumerot seuraavasti: Käynnistä -> Asetukset -> Ohjauspaneeli -> Järjestelmä -> Laitteisto -> Laitehallinta -> Portit (COM ja LPT).

Tämän seurauksena toiminto CTestCOMDlg::OnInitDialog(), joka sijaitsee tiedostossa TestCOMDlg.cpp, dialogiluokkamme tulisi olla muotoa:

BOOL CTestCOMDlg::OnInitDialog() ( CDialog::OnInitDialog(); // Lisää "Tietoja..."-valikkokohta järjestelmävalikkoon. // IDM_ABOUTBOXin on oltava järjestelmän komentoalueella. ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX); ASSERT(IDM_ABOUTBOX AppendMenu(MF_SEPARATOR); pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu); ) ) // Aseta tämän valintaikkunan kuvake. Kehys tekee tämän automaattisesti // kun sovelluksen pääikkuna ei ole valintaikkuna SetIcon(m_hIcon, TRUE); // Aseta iso kuvake SetIcon(m_hIcon, FALSE); // Aseta pieni kuvake // TODO: Lisää ylimääräinen alustus tähän hFile = CreateFile("COM2", GENERIC_READ|GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL); ( MessageBox("Portti avattu onnistuneesti", "Ok", MB_OK); ) return TRUE // palauttaa TOSI, ellet aseta tarkennusta ohjausobjektiin )

Lisätään nyt käsittelijät linjaohjauspainikkeille. Annoin niille sopivat nimet: funktio, joka asettaa yhden DTR-rivillä, on OnDTR1(), 0 on OnDTR0(). RTS-linjalle, samalla tavalla. Haluan muistuttaa, että käsittelijä luodaan, kun kaksoisnapsautat painiketta. Tämän seurauksena näiden neljän toiminnon tulisi olla muodossa:

Void CTestCOMDlg::OnDTR1() ( // TODO: Lisää ohjausilmoitusten käsittelijän koodi tähän EscapeCommFunction(hFile, 6); ) void CTestCOMDlg::OnDTR0() ( // TODO: Lisää ohjausilmoitusten käsittelijän koodi tähän EscapeCommFunction(hFile, 5); ) void CTestCOMDlg::OnRTS1() ( // TODO: Lisää ohjausilmoitusten käsittelijän koodi tähän EscapeCommFunction(hFile, 4); ) void CTestCOMDlg::OnRTS0() ( // TODO: Lisää ohjausilmoitusten käsittelijän koodi tähän EscapeCommFunction(hFile, 3);

Selitän hieman, kuinka ne toimivat. Kuten näet, niiden sisällä on kutsu samaan Win API -toimintoon EscapeCommFunction() kahdella parametrilla. Ensimmäinen niistä on kahva (HANDLE) avoimeen porttiin, toinen on erityinen toimintakoodi, joka vastaa linjan vaadittua tilaa.

Siinä kaikki, kokoamme ja käynnistämme. Jos kaikki on kunnossa, sinun pitäisi nähdä ilmoitus portin onnistuneesta avaamisesta. Seuraavaksi, painamalla vastaavia painikkeita, vilkkumme COM-porttiin kytkettyjä LED-valoja.

© Ivanov Dmitry
joulukuuta 2006