Koti / Arvostelut / Kuvaus COM-portista. Mikä on COM-portti. Modeemi ja COM-portti

Kuvaus COM-portista. Mikä on COM-portti. Modeemi ja COM-portti

Viime aikoina sarjamuotoinen tiedonsiirtomenetelmä on korvaamassa rinnakkaislähetyksen.
Esimerkkejä ei tarvitse etsiä kaukaa: USB- ja SATA-väylän ulkonäkö puhuu puolestaan.
Itse asiassa rinnakkaisväylää on vaikea skaalata (pidempi kaapeli, korkeampi väylän kellotaajuus), ei ole yllättävää, että tekniikat ovat siirtymässä rinnakkaisiin väyliin takana.

Sarjaliitännät

Nykyään on olemassa monia erilaisia ​​sarjatietorajapintoja.
Jo mainittujen USB:n ja SATA:n lisäksi voidaan muistaa myös ainakin kaksi tunnettua RS-232- ja MIDI-standardia (alias GamePort).
Niitä kaikkia yhdistää sama - jokaisen informaatiobitin sarjalähetys tai sarjaliitäntä.
Tällaisilla liitännöillä on monia etuja, ja tärkein niistä on pieni määrä liitäntäjohtoja ja siten alhaisempi hinta.

Tiedonsiirto

Sarjaliikenne voidaan toteuttaa kahdella tavalla: asynkroninen ja synkroninen.

Synkroninen tiedonsiirto tarkoittaa vastaanottimen ja lähettimen toiminnan synkronointia sisällyttämällä kellotiedot lähetettävään signaaliin tai käyttämällä erityistä tahdistuslinjaa.
Vastaanotin ja lähetin on yhdistettävä erityisellä synkronointikaapelilla, joka varmistaa laitteiden toiminnan samalla taajuudella.

Asynkronisessa lähetyksessä käytetään erityisiä bittejä, jotka merkitsevät datan alkua ja loppua - aloitus (looginen nolla) ja lopetus (looginen yksi) bittejä.
On myös mahdollista käyttää erityistä pariteettibittiä, joka määrittää parillisen tai parittoman määrän lähetettyjä yksittäisiä bittejä (riippuen hyväksytystä käytännöstä).
Vastaanottopuolella tämä bitti analysoidaan, ja jos pariteettibitti ei vastaa yksittäisten bittien määrää, datapaketti lähetetään uudelleen.

On syytä huomata, että tällaisella tarkistuksella voit havaita virheen vain, jos vain yksi bitti on lähetetty väärin, jos useita bittejä lähetettiin väärin, tämä tarkistus muuttuu jo virheelliseksi.
Seuraavan datapaketin lähettäminen voi tapahtua milloin tahansa lopetusbitin lähettämisen jälkeen, ja se on tietysti aloitettava aloitusbitistä.
Eikö mikään ole selvää?

No jos kaikki Tietokonetekniikat olisivat yksinkertaisia, niin kuka tahansa kotiäiti olisi kauan sitten muotoillut uusia protokollia nyyttien rinnalla ...
Yritetään tarkastella prosessia eri tavalla.
Data välitetään paketteina, suunnilleen IP-pakettien tapaan, tiedon mukana kulkee informaatiobitit, näiden bittien lukumäärä voi vaihdella 2:sta 3 ja puoleen.
Puolikkaan kanssa?!
Kyllä, kuulit oikein, puolet!

Pysäytysbitin tai pikemminkin pysäytysbittiä vastaavan lähetetyn signaalin kesto voi olla suurempi kuin yhtä bittiä vastaava signaali, mutta pienempi kuin kahdella bitillä.
Joten paketti alkaa aina aloitusbitillä, joka on aina nolla, jota seuraa databitit, sitten pariteettibitti ja sitten lopetusbitti, joka on aina yksi.
Sitten, jonkin mielivaltaisen ajan kuluttua, lyöntien marssi Moskovaan jatkuu.

Tämä lähetysmenetelmä tarkoittaa, että vastaanottimen ja lähettimen on toimittava samalla nopeudella (hyvin tai melkein samalla nopeudella), muuten vastaanottimella ei joko ole aikaa käsitellä saapuvia databittejä tai ottaa vanhan bitin uuteen. .
Tämän välttämiseksi jokainen bitti stroboidaan, eli se lähetetään synkronisesti erityisellä signaalilla - laitteen sisällä generoidulla "strobolla".
Asynkronisille laitteille on olemassa useita tiettyjä nopeuksia - 50, 75, 110, 150, 300, 600, 1200, 2400, 4800, 9600, 19200, 38400, 57600 ja 115200 bittiä sekunnissa.

Olet luultavasti kuullut, että "baudia" käytetään yksikkönä tiedonsiirtonopeuden - linjan tilan muutostaajuuden - mittaamiseen, ja tämä arvo osuu yhteen tiedonsiirtonopeuden kanssa vain, jos signaalilla voi olla toinen kahdesta arvosta. .
Jos useita bittejä on koodattu yhteen signaalinmuutokseen (ja näin on monien modeemien tapauksessa), lähetysnopeus ja linjanvaihtotaajuus ovat täysin eri arvoja.

Nyt muutama sana salaperäisestä termistä "datapaketti".
Paketin alla Tämä tapaus tarkoittaa aloitus- ja lopetusbittien välillä siirrettyjen bittien joukkoa.
Niiden määrä voi vaihdella viidestä kahdeksaan.
Voidaan ihmetellä, miksi juuri viidestä kahdeksaan bittiä?
Miksi ei siirretä kerralla vaikkapa kilotavua dataa paketissa?

Vastaus on ilmeinen: lähetettäessä pieniä datapaketteja, saatamme hävitä lähettämällä niiden mukana kolme palvelubittiä (50-30 prosenttia tiedosta), mutta jos paketti vioittuu lähetyksen aikana, voimme tunnistaa tämän helposti (muista pariteettibitti?) ja lähetä se nopeasti uudelleen.
Mutta kilotavussa dataa on vaikea havaita virhe, ja sen lähettäminen on paljon vaikeampaa.

Esimerkki asynkronisesta sarjatiedonsiirtolaitteesta on tietokoneen COM-portti, suosikki Trussardin suunnittelema modeemi ja samaan porttiin kytketty hiiri, joita jostain syystä ahdasmieliset sihteerit yrittävät aina työntää PS / 2:een.
Kaikki nämä laitteet toimivat RS-232-liitännällä, tai pikemminkin sen asynkronisella osuudella, koska standardi kuvaa myös synkronista tiedonsiirtoa.

AMD Radeon Software Adrenalin Edition -ohjain 19.9.2 Valinnainen

Uusi AMD Radeon Software Adrenalin Edition 19.9.2 valinnainen ajuri parantaa suorituskykyä Borderlands 3:ssa ja lisää tuen Radeon Image Sharpeningille.

Kumulatiivinen Windows päivitys 10 1903 KB4515384 (lisätty)

Microsoft julkaisi 10. syyskuuta 2019 kumulatiivisen päivityksen Windows 10 -versiolle 1903 - KB4515384, joka sisältää useita tietoturvaparannuksia ja korjauksen rikkoutuneeseen bugiin. Windows toimii Haku ja aiheutti korkean suorittimen käytön.

COM-porttia käytetään useimmiten mikro-ohjaimen liittämiseen tietokoneeseen. Tässä artikkelissa näytämme, kuinka voit lähettää ohjauskomentoja tietokoneelta ja lähettää tietoja ohjaimesta.

Valmistautuminen työhön

Useimmissa mikro-ohjaimissa on useita I/O-portteja. UART-protokolla on sopivin tiedonsiirtoon PC:n kanssa. Se on sarjamuotoinen asynkroninen tiedonsiirtoprotokolla. Kortilla on USB-RS232-muunnin - FT232RL, jotta se muuntaa sen USB-liitännäksi.
Tarvitset vain Arduino-yhteensopivan levyn suorittaaksesi tämän artikkelin esimerkit. Käytämme . Varmista, että kortillasi on LED-valo kytkettynä nastaan ​​13 ja nollauspainike.

Esimerkiksi ladataan koodi taululle, joka näyttää ASCII-taulukon. ASCII on koodaus desimaalilukujen, latinalaisten ja kansallisten aakkosten, välimerkkien ja ohjausmerkkien esittämiseen.

int symboli = 33 ; void setup() ( Serial. begin(9600 ) ; Serial. println(" ASCII -taulukko ~ merkkikartta " ) ; ) void loop() ( Serial. write(symbol) ; Serial. print(" , dec: " ) ; Serial .tulostus(symboli) ; sarja.tulostus(" , hex: " ) ; sarja.tulostus(symboli, HEX) ; sarja.tulostus(" , lokakuu: " ) ; sarja.tulostus(symboli, OCT) ; sarja.tulostus( " , bin: " ) ; Serial.println(symboli, BIN) ; if (symboli == 126 ) ( while (true) (Jatka ; ) ) symboli+ + ; )

Symbolimuuttuja tallentaa symbolikoodin. Taulukko alkaa numerosta 33 ja päättyy numeroon 126, joten symboli asetetaan aluksi 33:een.
Käynnistä UART-portin toiminta käyttämällä toimintoa Serial.begin(). Sen ainoa parametri on nopeus. Nopeus on neuvoteltava lähettävällä ja vastaanottavalla puolella etukäteen, koska lähetysprotokolla on asynkroninen. Tässä esimerkissä nopeus on 9600 bps.
Arvon kirjoittamiseen porttiin käytetään kolmea funktiota:

  1. Serial.write()– kirjoittaa tiedot porttiin binäärimuodossa.
  2. Serial.print() voi olla monia arvoja, mutta ne kaikki palvelevat tiedon näyttämistä ihmisystävällisessä muodossa. Jos esimerkiksi ohitettavaksi parametriksi määritetty tieto on lainausmerkeissä, pääteohjelma näyttää sen muuttumattomana. Jos haluat näyttää minkä tahansa arvon tietty järjestelmä calculus, sinun on lisättävä palvelusana: BIN-binary, OCT - oktaali, DEC - desimaali, HEX - heksadesimaali. Esimerkiksi, Serial.print (25,HEX).
  3. Serial.println() tekee samaa kuin Serial.print(), mutta kääntää silti merkkijonon tietojen näyttämisen jälkeen.

Ohjelman toiminnan tarkistamiseksi tietokoneessa on oltava pääteohjelma, joka vastaanottaa tietoja COM-portista. AT Arduino IDE jo sisäänrakennettu. Voit kutsua sen valitsemalla valikosta Tools->Port Monitor. Tämän apuohjelman ikkuna on hyvin yksinkertainen:

Napsauta nyt uudelleenkäynnistyspainiketta. MK käynnistyy uudelleen ja näyttää ASCII-taulukon:

Kiinnitä huomiota tähän koodin osaan:

if (symboli = = 126 ) ( while (tosi) (jatkaa ; ) )

Se pysäyttää ohjelman suorittamisen. Jos jätät sen pois, taulukko näytetään toistaiseksi.
Voit vahvistaa hankittua tietoa kirjoittamalla äärettömän silmukan, joka lähettää nimesi sarjaporttiin kerran sekunnissa. Lisää tulostukseen askelnumerot ja älä unohda kääntää riviä nimen jälkeen.

Komentojen lähettäminen PC:ltä

Ennen kuin teet tämän, sinun on saatava käsitys COM-portin toiminnasta.
Ensinnäkin kaikki vaihto tapahtuu muistipuskurin kautta. Eli kun lähetät jotain tietokoneelta laitteeseen, tiedot sijoitetaan johonkin erityiseen muistin osaan. Heti kun laite on valmis, se lukee tiedot puskurista. Toiminnon avulla voit tarkistaa puskurin tilan serial.avaliable(). Tämä funktio palauttaa puskurissa olevien tavujen määrän. Näiden tavujen vähentämiseksi sinun on käytettävä funktiota Serial.read(). Katsotaanpa, miten nämä funktiot toimivat esimerkin avulla:

int val = 0; void setup() ( Serial. begin(9600 ) ; ) void loop() ( if (Serial. available() > 0 ) ( val = Serial. read() ; Serial. print(" Sain: " ) ; Serial. write(val) ; Serial.println() ; ) )

Kun koodi on ladattu mikro-ohjaimen muistiin, avaa COM-portin monitori. Kirjoita yksi merkki ja paina Enter. Vastaanotetussa datakentässä näet: "Sain:X", missä sen sijaan X on kirjoittamasi merkki.
Ohjelma pyörii loputtomasti pääsilmukassa. Kun tavu kirjoitetaan porttiin, Serial.available()-funktio saa arvon 1, eli ehto täyttyy Serial.available() > 0. Seuraava toiminto Serial.read() lukee tämän tavun ja tyhjentää siten puskurin. Tämän jälkeen tulos tapahtuu käyttämällä jo tuntemiasi toimintoja.
Arduino IDE:n sisäänrakennetun COM-porttinäytön käyttämisessä on joitain rajoituksia. Kun dataa lähetetään kortilta COM-porttiin, lähtö voidaan järjestää mielivaltaiseen muotoon. Ja kun lähetät PC:ltä levylle, merkkien siirto tapahtuu ASCII-taulukon mukaisesti. Tämä tarkoittaa, että kun syötät esimerkiksi merkin "1", binääri "00110001" (eli "49" desimaalilukuina) lähetetään COM-portin kautta.
Muutetaan koodia hieman ja tarkistetaan tämä lause:

int val = 0; void setup() ( Serial. begin(9600 ) ; ) void loop() ( if (Serial. available() > 0 ) ( val = Serial. read() ; Serial. print(" Sain: " ) ; Serial. println(val, BIN) ; ) )

Lataamisen jälkeen porttinäytössä, kun lähetät "1", näet vastauksena: "Sain: 110001". Voit muuttaa tulostusmuotoa ja nähdä, mitä kortti hyväksyy muiden merkkien kanssa.

Laitteen ohjaus COM-portin kautta

On selvää, että voit ohjata mitä tahansa mikro-ohjaimen toimintoja PC:n komennoilla. Lataa ohjelma työn johtaminen LED:

int val = 0; void setup() ( Serial. begin(9600 ) ; ) void loop() ( if (Serial. available() > 0 ) ( val = Serial. read() ; if (val= = "H" ) digitalWrite(13 , KORKEA) ; if (val= = "L" ) digitalWrite(13 , LOW) ; ) )

Kun “H”-merkki lähetetään COM-porttiin, 13. lähdön LED syttyy, ja kun “L” lähetetään, LED sammuu.
Jos COM-portista saatujen tietojen perusteella haluat ohjelman suorittavan erilaisia ​​toimintoja pääsilmukassa, voit tarkistaa pääsilmukan ehdot. Esimerkiksi.

COM-portti tai sarjaportti on kaksisuuntainen sarjaliitäntä, joka on suunniteltu vaihtamaan tavutietoja. Aluksi tätä porttia käytettiin terminaalin ja sitten modeemin ja hiiren liittämiseen. Nyt on tapana käyttää sitä sekä lähteen yhdistämiseen että kommunikointiin sulautettujen tietokonejärjestelmien käsittelyn kanssa.

Käyttö

Joten ennen kuin puhumme yksityiskohtaisemmin siitä, mitä COM-portti on, meidän on katsottava menneisyyteen ymmärtääksemme sen merkityksen. Kirjaimellisesti 15 vuotta sitten käytettiin menetelmää laitteiden liittämiseen tietokoneeseen käyttämällä erityistä vakioliitintä, joka sijaitsee takapaneelissa. järjestelmälohko käyttämällä erityistä RS-232-sarjakaapelia. Tällä menetelmällä on monia haittoja. Tällainen kaapeli tarjoaa nykyaikaisten standardien mukaan erittäin alhaisen tiedonsiirtonopeuden - noin sata kilobittiä sekunnissa. Liittimien fyysisen kytkennän tekemisen lisäksi laitteet piti sammuttaa, ja ne itse kiinnitettiin toisiinsa ruuveilla, jotka varmistivat luotettavuuden, kun taas niiden mitat vaihtelivat huomattavasti.

Hieman historiaa

Sen ajan tietokoneiden COM-portti oli perinteisesti numeroitu 1 tai 2, koska niitä ei yleensä ollut enempää kuin kaksi. Lisäportteja voidaan asentaa tarvittaessa. Kun käyttäjä on määrittänyt ohjelmisto, vaadittiin, ettei se sekoita ja asennettiin oikein juuri se, johon yhteys toimitettiin tarvittavat varusteet. Jokainen COM-portti vaati oikeat nopeusasetukset sekä joukon muita salaperäisiä parametreja, jotka tunsivat vain kapea asiantuntijapiiri. Jotta laitteiden kytkeminen onnistuisi, kaikki tarvittavat parametrit piti selvittää jostain tai valita kokeellisesti, koska tässä tapauksessa automaattista konfigurointia ei ollut. Lisäksi yhteys COM-portin kautta mahdollisti minkä tahansa ohjelmiston yhdistämisen mielivaltaisiin ulkoisiin laitteisiin, jopa täysin yhteensopimattomiin, mikä aiheutti valtavan määrän virheitä asetusprosessin aikana.

Nykyaikaisuus

Nyt yhteys COM-portin kautta on kokonaan korvattu useammalla moderni menetelmä, joka ei vaadi erityisosaamista toteuttamiseen, nimittäin USB-portin kautta. Tämä menetelmä on vailla kaikkia aiemmin mainittuja haittoja. Nykyaikaiset standardit kaikenlaisten GPS-laitteiden ja erittäin heterogeenisten ohjelmistojen yhteensopivuudesta muodostuivat kuitenkin jo kauan sitten COM-porttien käsitteen ympärille, joista on tullut tällä hetkellä arkaaisia.

Tämä johtuu siitä, että alun perin lähes kaikki laitteet, mukaan lukien GPS, olivat ulkoisia, ja niiden yhteys tietokoneeseen tehtiin sarjakaapelilla, joka oli kytketty johonkin laitteistoportteihin. Konfigurointiprosessin aikana käyttäjän oli valittava oikein portin numero ja sen kautta tapahtuvan tiedonsiirron nopeus. Tuolloin syntyi päästandardi tiedon siirtämiseksi GPS-vastaanottimesta ohjelmaan, jota nykyään kutsutaan nimellä NMEA-0183. Itse asiassa tämä standardi edellyttää, että kaikki nykyaikaisimpienkin laitteistojen ja ohjelmistojen kehittäjät vaihtavat tietoja COM-porttien kautta. Ja kaikki tämä olosuhteissa nykyaikaiset tietokoneet, samoin kuin kämmenmikroissa, USB-standardi on pitkään ollut tärkein. Ja vielä yksi ominaisuus on, että viime aikoina GPS-vastaanottimia asennetaan yhä useammin suoraan laitteen koteloon, eli sen ja päälaitteen välillä ei ole liitäntäkaapelia.

Virtuaaliset COM-portit

Keksittiin ulospääsy, nimittäin "virtuaalisia" COM-portteja kehitettiin. Osoittautuu, että PDA:n sisäinen laite, esimerkiksi GPS-vastaanotin, on simuloitu ohjelmistossa COM-portin muodossa, vaikka se ei laitteistollisesti ole sellainen. Samaan aikaan ohjelmalla, joka on suunniteltu rajaamaan tällaisen standardin kautta, ei ole merkitystä, miten se toteutetaan. Tässä sallitaan virtuaalisen simulaation läsnäolo, ei laitteistototeutuksen pakollista läsnäoloa. Siten on mahdollista varmistaa vanhanaikaisten GPS-ohjelmien yhteensopivuus nykyaikaisten laitteiden kanssa.

Muutoksia tehty

Samaan aikaan COM-portin hallinta ei ole muuttunut merkittävästi. Käyttäjän on vanhaan tapaan tehtävä monimutkaiset asetukset lähes manuaalisesti. Nykyaikainen COM-portti ei kuitenkaan ole enää järjestelmäyksikön takapaneelissa oleva kookas laite, vaan täysin erilainen laite. Ja tässä koko pointti on, että ohjelmiston näkökulmasta kaikki niiden toteutukset näyttävät kasvottomilta, eli virtuaalisten ja todellisten porttien välillä ei ole eroa. Ohjelmistojen portit eroavat vain PDA-valmistajien niille antamien numeroiden perusteella täysin satunnaisesti. Esimerkiksi ASUS-vastaanotin sijaitsee yleensä COM5:ssä, kun taas PocketLOOX 560 näyttää vastaanottimen COM8:ssa. Osoittautuu, että ohjelmalla, joka haluaa vastaanottaa tietoja GPS-vastaanottimesta, ei ole alunperin luotettavia tietoja ehdollisista numeroista, jonka alla portti esiintyy, joka on määrätty tämän PDA:n vastaanottimelle sopivaksi.

Miten se kaikki toimii?

Koska kaikkien käytettävissä olevien COM-porttien joukossa voit automaattinen haku soveltuva, tällaisen tutkimuksen menettely on melko epäluotettava ja melko hankala. Tämä johtuu siitä, että järjestelmässä COM-portteina näytettävät laitteet voivat olla varsin erilaisia ​​ja niillä ei ole mitään tekemistä GPS:n kanssa, ne voivat reagoida tällaiseen kyselyyn täysin arvaamattomasti. Esimerkiksi PDA:ssa on portit, jotka liittyvät sisäiseen matkapuhelinmodeemiin, USB:hen, infrapunaporttiin sekä muihin elementteihin. Niiden käyttäminen tietyn laitteen kanssa toimimaan suunnitellulla ohjelmalla voi johtaa täysin arvaamattomaan reaktioon sekä erilaisiin toimintahäiriöihin, jotka usein aiheuttavat PDA:n jäätymisen. Siksi yritys avata COM-portti voi johtaa odottamattomiin tilanteisiin, jopa Bluetoothin kytkemiseen tai Ja voi olla enemmän käsittämättömiä tapauksia.

COM-portin toiminta

COM-porttien osalta perustana käytetään asynkronista yleistä lähetin-vastaanotinsirua. Tätä mikropiiriä on useita eri muotoja: Intel 16550A, 16550, 16450, 8250. Jokaiselle COM-portille se sisältää datavastaanotin- ja lähetinrekisterit sekä joukon ohjausrekistereitä, joihin pääsee BIOS-, Windows- ja MS DOS-ohjelmien kautta. klo uusimmat versiot mikrosirussa on joukko puskureita lähetetyn ja vastaanotetun tiedon väliaikaista tallentamista varten. Tämän mahdollisuuden ansiosta on mahdollista keskeyttää keskusprosessorin työ harvemmin sekä koordinoida tiedonsiirron nopeutta.

pääparametrit

COM-porttilaitteessa on seuraavat ominaispiirteet:

Portin perusosoite tietojen syöttöä ja tulostamista varten;

Laitteiston keskeytysnumerot;

Yhden tietolohkon koko;

tiedonsiirtonopeus;

Rehellisyyden tunnistustila;

Tietovirran hallintamenetelmä;

Pysäytysbittien määrä.

Kuinka tarkistaa tietokoneen COM-portti? Mihin kiinnittää huomiota?

Kuten aiemmin mainittiin, tämän tyyppinen portti on kaksisuuntainen liitäntä bittitason sarjatapaa varten. Erityinen piirre rinnakkaisporttiin verrattuna tässä on tiedonsiirto bitti kerrallaan. COM-portin anatomia on sellainen, että se ei ole ainoa tietokoneessa, joka käyttää sarjatiedonsiirtomenetelmää. Esimerkiksi liitännät, kuten Ethernet tai USB, käyttävät myös samanlaista periaatetta, mutta historiallisesti on käynyt niin, että on tapana kutsua RS232-standardin sarjaporttia.

Hyvin usein joudutaan avaamaan COM-portti tietokoneen korjausta ja diagnostiikkaa varten, ja sen toiminta on myös tarkistettava. Elementin polttaminen on erittäin helppoa. Useimmiten tämä johtuu käyttäjän virheestä, joka katkaisee laitteen väärin ja irrottaa liittimen, kun liitäntä on kytkettynä. Helpoin tapa tarkistaa, toimiiko käyttöliittymä, on liittää siihen hiiri. Täydellisen kuvan saaminen on kuitenkin niin vaikeaa, koska manipulaattori käyttää vain puolet signaalilinjoista kahdeksasta käytettävissä olevasta. Vain erikoispistokkeen ja -ohjelman käyttö mahdollistaa suorituskyvyn tarkistamisen. Näitä tarkoituksia varten on jo olemassa erityisesti kehitetty ohjelmisto.

Kehittäjät rakastavat sarjaportteja niiden helpon ylläpidon ja käytön vuoksi.

Ja tietysti pääteohjelman konsoliin kirjoittaminen on ihan hyvä, mutta haluan oman sovelluksen, joka näppäimiä painamalla näytöllä suorittaa tarvitsemasi toiminnot;)

Tässä artikkelissa kuvailen kuinka työskennellä com-portti C++:ssa.

Ratkaisu on yksinkertainen, mutta toimivaa esimerkkiä ei jostain syystä heti löytynyt. Simille tallennan sen tänne.

Tietysti voit käyttää monialustaisia ​​ratkaisuja, kuten QSerial - Qt-kirjasto, luultavasti käytän, mutta tulevaisuudessa. Nyt puhumme "puhtaista" Windowsista C++. Kirjoitamme Visual Studiossa. Minulla on vuosi 2010, vaikka tällä ei ole mitään merkitystä ...

Luo uusi konsoli Win32-projekti.

Sisällytä otsikkotiedostot:

#sisältää #sisältää käyttäen nimiavaruutta std;

Ilmoitamme com-portin käsittelijäksi:

HANDLE hSerial;

Teen sen maailmanlaajuisesti, joten minun ei tarvitse huolehtia osoittimista siirtäessäni sitä funktioille.

int _tmain(int argc, _TCHAR* argv) (

En voi sietää Windows-ohjelmointityyliä. He kutsuivat kaikkea omalla tavallaan ja istuvat iloiten ...

Nyt on taikuutta ilmoittaa merkkijono portin nimellä. Asia on siinä, että se ei pysty muuttamaan char itseään.

LPCTSTR sPortName = L"COM1";

Sarjaporttien käyttäminen Windowsissa toimii kuten tiedostojen kanssa. Ensimmäisen avaaminen com-portti kirjoittamista/lukua varten:

HSerial = ::LuoTiedosto(sPortNimi,YLEINEN_LUETTU | YLEINEN_KIRJOITUS,0,0,OPEN_EXISTING,TIEDOSTON_ATTRIBUTE_NORMAL,0);

Toimivuuden tarkistaminen:

If(hSerial==INVALID_HANDLE_VALUE) ( if(GetLastError()==ERROR_FILE_NOT_FOUND) ( cout<< "serial port does not exist.\n"; } cout << "some other error occurred.\n"; }

Nyt sinun on määritettävä yhteysparametrit:

DCB dcbSerialParams = (0); dcbSerialParams.DCBlength=sizeof(dcbSerialParams); if (!GetCommState(hSerial, &dcbSerialParams)) ( cout<< "getting state error\n"; } dcbSerialParams.BaudRate=CBR_9600; dcbSerialParams.ByteSize=8; dcbSerialParams.StopBits=ONESTOPBIT; dcbSerialParams.Parity=NOPARITY; if(!SetCommState(hSerial, &dcbSerialParams)) { cout << "error setting serial port state\n"; }

Msdn:ssä on suositeltavaa hankkia ensin parametrit ja sitten muuttaa niitä. Opimme edelleen, joten teemme niin kuin pyydetään.

Ilmoitetaan nyt välitettävä merkkijono ja tähän tarvittavat muuttujat:

Char data = "Hei C++:sta"; // DWORD välitettävä merkkijono dwSize = sizeof(data); // tämän merkkijonon koko DWORD dwBytesWritten; // tässä on todella siirrettyjen tavujen määrä

Merkkijonon lähettäminen. Muistutan, että esimerkki on yksinkertaisin, joten en tee mitään erityisiä tarkistuksia:

BOOL iRet = WriteFile(hSerial,data,dwSize,&dwBytesWritten,NULL);

Päätin myös näyttää merkkijonon koon ja ohjaukseen lähetettyjen tavujen määrän:

Cout<< dwSize << " Bytes in string. " << dwBytesWritten << " Bytes sended. " << endl;

Ohjelman lopussa teemme loputtoman silmukan lukudataa:

While(1) ( ReadCOM(); ) palauttaa 0; )

Nyt lukutoiminto:

Void ReadCOM() ( DWORD iSize; char sReceivedChar; while (true) (ReadFile(hSerial, &sReceivedChar, 1, &iSize, 0); // saat 1 tavun, jos (iSize > 0) // tulosta, jos jotain vastaanotetaan<< sReceivedChar; } }

Se on itse asiassa koko esimerkki.

Laskennassa sarjaportti on sarjaliikenneliitäntä, jonka kautta tietoa lähetetään tai lähetetään kerrallaan. Suurimman osan henkilökohtaisten tietokoneiden historiasta tietoja siirrettiin sarjaporttien kautta laitteisiin, kuten modeemeihin, päätelaitteisiin ja erilaisiin oheislaitteisiin.

Vaikka liitännät, kuten Ethernet, FireWire ja USB, kaikki lähettävät dataa sarjavirtana, termi "sarjaportti" tarkoittaa yleensä laitteistoa, joka on enemmän tai vähemmän RS-232-standardin mukainen ja joka on suunniteltu kytkeytymään modeemiin tai vastaavaan viestintälaitteeseen.

Nykyaikaiset tietokoneet, joissa ei ole sarjaportteja, saattavat vaatia sarjamuuntimia varmistaakseen yhteensopivuuden RS-232-sarjalaitteiden kanssa. Sarjaportteja käytetään edelleen sovelluksissa, kuten teollisuusautomaatiojärjestelmissä, tieteellisissä instrumenteissa, myyntipistejärjestelmissä ja joissakin teollisuus- ja kuluttajatuotteissa. Palvelintietokoneet voivat käyttää sarjaporttia hallinta- tai diagnostiikkakonsolina. Verkkolaitteet (kuten reitittimet ja kytkimet) käyttävät usein sarjakonsolia määritykseen. Sarjaportteja käytetään edelleen näillä alueilla, koska ne ovat yksinkertaisia, halpoja ja niiden konsolitoiminnallisuus on erittäin standardoitua ja laajalle levinnyt.

COM-portin liitin (RS232)

On olemassa kahdenlaisia ​​com-portteja, 25-nastainen vanha liitin ja uudempi 9-nastainen liitin, jotka korvasivat sen.

Alla on kaavio tavallisesta 9-nastaisesta RS232-liittimestä liittimillä. Tämän tyyppistä liitintä kutsutaan myös DB9-liittimeksi.

  1. Carrier Detect (DCD).
  2. Vastaanota dataa (RXD).
  3. Tiedonsiirto (TXD).
  4. Vastaanotin valmis vaihtoon (DTR).
  5. Maa (GND).
  6. Lähde Ready to Exchange (DSR).
  7. Lähetä lähetyspyyntö (RTS).
  8. Ready to Transfer (CTS).
  9. Kutsusignaali (RI).

RJ-45–DB-9 sarjaportin sovittimen nastatiedot kytkimelle

Konsoliportti on RS-232-sarjaliitäntä, joka yhdistää RJ-45-liittimen ohjauslaitteeseen, kuten PC:hen tai kannettavaan tietokoneeseen. Jos kannettavassa tai PC:ssä ei ole DB-9-liittimen nastaa ja haluat liittää kannettavan tai PC:n kytkimeen, käytä RJ-45- ja DB-9-sovittimen yhdistelmää.

DB-9RJ-45
Tietojen hakeminen2 3
Tiedonsiirto3 6
Vaihtohalu4 7
Maapallo5 5
Maapallo5 4
Vaihtohalu6 2
Siirtopyyntö7 8
Siirto valmis8 1

Johtojen värit:

1 musta
2 Ruskea
3 Punainen
4 Oranssi
5 Keltainen
6 Vihreä
7 Sininen
8 Harmaa (tai valkoinen)