Mājas / Atsauksmes / COM porta apraksts. Kas ir COM ports. Modems un COM ports

COM porta apraksts. Kas ir COM ports. Modems un COM ports

Nesen datu pārraides seriālā metode aizstāj paralēlo.
Piemēri nav tālu jāmeklē: USB un SATA kopņu izskats runā pats par sevi.
Patiešām, paralēlo kopni ir grūti mērogot (garāks kabelis, lielāks kopnes pulksteņa ātrums), nav pārsteidzoši, ka tehnoloģijas pārvēršas par paralēlām kopnēm aizmugurē.

Seriālās saskarnes

Mūsdienās ir ļoti daudz dažādu seriālo datu saskarņu.
Bez jau pieminētajiem USB un SATA varam atsaukt atmiņā arī vismaz divus labi zināmus RS-232 un MIDI standartus (aka GamePort).
Tos visus vieno viens un tas pats – katra informācijas bita seriālā pārraide jeb Serial Interface.
Šādām saskarnēm ir ļoti daudz priekšrocību, un vissvarīgākā no tām ir neliels savienojošo vadu skaits un līdz ar to zemāka cena.

Datu pārsūtīšana

Seriālo komunikāciju var īstenot divos veidos: asinhronā un sinhronā.

Sinhronā datu pārraide ietver uztvērēja un raidītāja darbības sinhronizāciju, pārraidītajā signālā iekļaujot pulksteņa informāciju vai izmantojot īpašu sinhronizācijas līniju.
Uztvērējam un raidītājam jābūt savienotam ar speciālu sinhronizācijas kabeli, kas nodrošina ierīču darbību vienā frekvencē.

Asinhronā pārraide ietver īpašu bitu izmantošanu, kas iezīmē datu sākumu un beigas - sākuma (loģiskā nulle) un beigu (loģiskā viens) bitu.
Ir iespējams arī izmantot īpašu paritātes bitu, kas nosaka pāra vai nepāra pārraidīto atsevišķu bitu skaitu (atkarībā no pieņemtās vienošanās).
Saņēmēja pusē šis bits tiek analizēts, un, ja paritātes bits neatbilst atsevišķu bitu skaitam, datu pakete tiek nosūtīta vēlreiz.

Ir vērts atzīmēt, ka šāda pārbaude ļauj atklāt kļūdu tikai tad, ja tikai viens bits tika pārraidīts nepareizi, ja vairāki biti tika pārsūtīti nepareizi, šī pārbaude jau kļūst nepareiza.
Nākamās datu paketes nosūtīšana var notikt jebkurā laikā pēc beigu bita nosūtīšanas, un, protams, jāsāk ar sākuma bitu.
Neko nevar saprast?

Nu ja viss Datoru tehnoloģijas bija vienkārši, tad jebkura mājsaimniece sen būtu paralēli pelmeņiem sastādījusi jaunus protokolus ...
Mēģināsim paskatīties uz procesu savādāk.
Dati tiek pārraidīti paketēs, aptuveni kā IP paketes, informācijas biti iet kopā ar datiem, šo bitu skaits var svārstīties no 2 līdz 3 ar pusi.
Ar pusīti?!
Jā, jūs dzirdējāt pareizi, ar pusi!

Apturēšanas bitam vai, drīzāk, pārraidītajam signālam, kas atbilst apturēšanas bitam, ilgums var būt lielāks nekā signālam, kas atbilst vienam bitam, bet mazāks nekā diviem bitiem.
Tātad pakete vienmēr sākas ar sākuma bitu, kas vienmēr ir nulle, kam seko datu biti, tad paritātes bits un tad beigu bits, kas vienmēr ir viens.
Tad pēc kāda patvaļīga laika posma bītu gājiens pa Maskavu turpinās.

Šī pārraides metode nozīmē, ka uztvērējam un raidītājam jādarbojas ar vienādu ātrumu (labi vai gandrīz ar tādu pašu ātrumu), pretējā gadījumā uztvērējam vai nu nebūs laika apstrādāt ienākošos datu bitus, vai arī izmantot veco bitu jaunam. viens.
Lai no tā izvairītos, katrs bits tiek strobēts, tas ir, tiek nosūtīts sinhroni ar īpašu signālu - ierīces iekšpusē ģenerētu “strobu”.
Asinhronajām ierīcēm ir vairāki specifiski ātrumi - 50, 75, 110, 150, 300, 600, 1200, 2400, 4800, 9600, 19200, 38400, 57600 un 11520 biti sekundē.

Jūs droši vien esat dzirdējuši, ka "baud" tiek izmantots kā mērvienība datu pārraides ātruma - līnijas stāvokļa maiņas biežuma - mērīšanai, un šī vērtība sakritīs ar datu pārraides ātrumu tikai tad, ja signālam var būt viena no divām vērtībām. .
Ja vienā signāla maiņā ir kodēti vairāki biti (un tas tā ir ar daudziem modemiem), pārraides ātrums un līnijas maiņas frekvence būs pilnīgi atšķirīgas vērtības.

Tagad daži vārdi par noslēpumaino terminu "datu pakete".
Zem iepakojuma Šis gadījums attiecas uz bitu kopu, kas tiek pārraidīts starp sākuma un beigu bitiem.
To skaits var svārstīties no pieciem līdz astoņiem.
Varētu brīnīties, kāpēc tieši pieci līdz astoņi biti?
Kāpēc gan nepārsūtīt uzreiz, teiksim, kilobaitu datu paketē?

Atbilde ir acīmredzama: pārsūtot nelielas datu paketes, mēs varam zaudēt, nosūtot ar tām trīs pakalpojuma bitus (no 50 līdz 30 procentiem datu), bet, ja pārraides laikā pakete tiek bojāta, mēs to varam viegli atpazīt (atcerieties par paritātes bitu?) un ātri pārsūtiet viņu vēlreiz.
Bet kilobaitā datu būs grūti atklāt kļūdu, un to pārsūtīt būs daudz grūtāk.

Asinhronas sērijas datu pārsūtīšanas ierīces piemērs ir datora COM ports, iecienītākais Trussardi izstrādātais modems un tam pašam pieslēgvietai pieslēgta pele, ko šauri domājošie sekretāri nez kāpēc vienmēr cenšas iebāzt PS / 2.
Visas šīs ierīces darbojas uz RS-232 interfeisa vai drīzāk tās asinhronās daļas, jo standarts apraksta arī sinhrono datu pārsūtīšanu.

AMD Radeon programmatūras Adrenalin Edition draiveris 19.9.2. Pēc izvēles

Jaunais AMD Radeon Software Adrenalin Edition 19.9.2 izvēles draiveris uzlabo veiktspēju programmā Borderlands 3 un pievieno atbalstu Radeon attēla asināšanai.

Kumulatīvs Windows atjauninājums 10 1903 KB4515384 (pievienots)

2019. gada 10. septembrī Microsoft izlaida kumulatīvo atjauninājumu operētājsistēmas Windows 10 versijai 1903 — KB4515384 ar vairākiem drošības uzlabojumiem un bojātas kļūdas labojumu. Windows darbojas Meklēšana un izraisīja augstu CPU izmantošanu.

COM ports visbiežāk tiek izmantots, lai savienotu mikrokontrolleru ar datoru. Šajā rakstā mēs parādīsim, kā nosūtīt vadības komandas no datora un nosūtīt datus no kontrollera.

Sagatavošanās darbam

Lielākajai daļai mikrokontrolleru ir vairāki I/O porti. UART protokols ir vispiemērotākais saziņai ar datoru. Tas ir sērijas asinhronais datu pārsūtīšanas protokols. Lai to pārveidotu par USB interfeisu, platei ir USB-RS232 pārveidotājs - FT232RL.
Lai palaistu šajā rakstā minētos piemērus, jums ir nepieciešama tikai ar Arduino saderīga plate. Mēs izmantojam . Pārliecinieties, vai jūsu dēlī ir LED, kas savienots ar 13. kontaktu, un atiestatīšanas poga.

Piemēram, augšupielādēsim kodu uz tāfeles, kas parāda ASCII tabulu. ASCII ir kodējums decimālciparu, latīņu un nacionālo alfabētu, pieturzīmju un vadības rakstzīmju attēlošanai.

int simbols = 33; void setup() ( Serial. begin(9600 ) ; Serial. println(" ASCII tabula ~ rakstzīmju karte " ) ; ) void loop() ( Serial. write(simbols) ; Serial. print(" , dec: " ) ; Serial .print(simbols) ; Serial.print(" , hex: " ) ; Serial.print(simbols, HEX) ; Serial.print(" , okt: " ) ; Serial.print(simbols, OCT) ; Serial.print( " , bin: " ) ; Serial.println(simbols, BIN) ; if (simbols == 126 ) ( while (true) ( turpināt ; ) ) simbols+ + ; )

Simbola mainīgais saglabā simbola kodu. Tabula sākas ar 33 un beidzas ar 126, tāpēc simbols sākotnēji ir iestatīts uz 33.
Lai sāktu UART porta darbību, izmantojiet funkciju Serial.begin(). Tās vienīgais parametrs ir ātrums. Ātrums ir iepriekš jāsaskaņo raidīšanas un uztveršanas pusē, jo pārraides protokols ir asinhrons. Šajā piemērā ātrums ir 9600 bps.
Vērtības ierakstīšanai portā tiek izmantotas trīs funkcijas:

  1. Serial.write()– ieraksta datus portā binārā formā.
  2. Serial.print() var būt daudz vērtību, taču tās visas kalpo informācijas attēlošanai cilvēkam draudzīgā formā. Piemēram, ja informācija, kas norādīta kā nododamais parametrs, ir ievietota pēdiņās, termināļa programma to parādīs nemainītu. Ja vēlaties parādīt jebkuru vērtību noteikta sistēma calculus, tad jums ir jāpievieno pakalpojuma vārds: BIN-binārs, OCT - oktāls, DEC - decimāls, HEX - heksadecimāls. Piemēram, Serial.print (25,HEX).
  3. Serial.println() dara to pašu kā Serial.print(), bet pēc informācijas parādīšanas joprojām pārtulko virkni.

Lai pārbaudītu programmas darbību, datorā ir jābūt termināla programmai, kas saņem datus no COM porta. AT Arduino IDE jau iebūvēts. Lai to izsauktu, izvēlnē atlasiet Tools->Port Monitor. Šīs utilītas logs ir ļoti vienkāršs:

Tagad noklikšķiniet uz restartēšanas pogas. MK pārstartēs un parādīs ASCII tabulu:

Pievērsiet uzmanību šai koda daļai:

if (simbols = = 126 ) ( while (true) (turpināt ; ) )

Tas aptur programmas izpildi. Ja to izslēgsit, tabula tiks rādīta bezgalīgi.
Lai nostiprinātu iegūtās zināšanas, mēģiniet ierakstīt bezgalīgu cilpu, kas reizi sekundē nosūtīs jūsu vārdu uz seriālo portu. Pievienojiet izvadei soļu numurus un neaizmirstiet pārtulkot rindiņu aiz nosaukuma.

Komandu sūtīšana no datora

Pirms to izdarīt, jums ir jāiegūst priekšstats par to, kā darbojas COM ports.
Pirmkārt, visa apmaiņa notiek caur atmiņas buferi. Tas ir, nosūtot kaut ko no datora uz ierīci, dati tiek ievietoti kādā īpašā atmiņas sadaļā. Tiklīdz ierīce ir gatava, tā nolasa datus no bufera. Funkcija ļauj pārbaudīt bufera stāvokli serial.avaliable(). Šī funkcija atgriež buferī esošo baitu skaitu. Lai atņemtu šos baitus, jāizmanto funkcija Serial.lasīt(). Apskatīsim, kā šīs funkcijas darbojas, izmantojot piemēru:

int val = 0; void setup() ( Serial. begin(9600 ) ; ) void loop() ( if (Serial. available() > 0 ) ( val = Serial. read() ; Serial. print(" Es saņēmu: " ) ; Serial. write(val) ; Serial.println() ; ) )

Kad kods ir ielādēts mikrokontrollera atmiņā, atveriet COM porta monitoru. Ievadiet vienu rakstzīmi un nospiediet taustiņu Enter. Saņemtajā datu laukā redzēsit: “Es saņēmu:X”, kur vietā X būs jūsu ievadītā rakstzīme.
Programma griežas bezgalīgi galvenajā cilpā. Brīdī, kad portā tiek ierakstīts baits, funkcija Serial.available() iegūst vērtību 1, tas ir, nosacījums ir izpildīts. Serial.available() > 0. Nākamā funkcija Serial.lasīt() nolasa šo baitu, tādējādi notīrot buferi. Pēc tam, izmantojot jums jau zināmās funkcijas, notiek izvade.
Izmantojot Arduino IDE iebūvēto COM porta monitoru, ir daži ierobežojumi. Sūtot datus no plates uz COM portu, izvadi var organizēt patvaļīgā formātā. Un, nosūtot no datora uz dēli, rakstzīmju pārsūtīšana notiek saskaņā ar ASCII tabulu. Tas nozīmē, ka, ievadot, piemēram, rakstzīmi “1”, binārais “00110001” (tas ir, “49” decimāldaļās) tiek nosūtīts caur COM portu.
Mazliet mainīsim kodu un pārbaudīsim šo paziņojumu:

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

Pēc lejupielādes porta monitorā, nosūtot “1”, jūs redzēsit atbildi: “Es saņēmu: 110001”. Varat mainīt izvades formātu un redzēt, ko dēlis pieņem ar citām rakstzīmēm.

Ierīces vadība caur COM portu

Acīmredzot, izmantojot komandas no datora, jūs varat kontrolēt jebkuras mikrokontrollera funkcijas. Lejupielādējiet programmu vadīt darbu LED:

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

Kad rakstzīme “H” tiek nosūtīta uz COM portu, iedegas 13. izejas gaismas diode, un, nosūtot “L”, gaismas diode nodzisīs.
Ja, pamatojoties uz datu saņemšanas rezultātiem no COM porta, vēlaties, lai programma galvenajā cilpā veiktu dažādas darbības, varat pārbaudīt galvenās cilpas nosacījumus. Piemēram.

COM ports jeb seriālais ports ir divvirzienu seriālais interfeiss, kas paredzēts baitu datu apmaiņai. Sākumā šis ports tika izmantots, lai savienotu termināli, un pēc tam modemu un peli. Tagad ir ierasts to izmantot, lai savienotu avotu, kā arī sazinātos ar iegulto skaitļošanas sistēmu apstrādi.

Lietošana

Tātad, pirms mēs runājam sīkāk par to, kas ir COM ports, mums ir jāielūkojas pagātnē, lai saprastu tā nozīmi. Burtiski pirms 15 gadiem tika izmantota metode ierīču savienošanai ar datoru, izmantojot īpašu standarta savienotāju, kas atrodas aizmugurējā panelī. sistēmas bloks izmantojot īpašu RS-232 seriālo kabeli. Šai metodei ir daudz trūkumu. Šāds kabelis, pēc mūsdienu standartiem, nodrošina ārkārtīgi zemu datu pārraides ātrumu - aptuveni simts kilobiti sekundē. Papildus tam, kad tika veikts savienotāju fiziskais savienojums, bija nepieciešams izslēgt aprīkojumu, un tie paši tika piestiprināti viens otram ar skrūvēm, kas nodrošināja uzticamību, savukārt to izmēri ievērojami atšķīrās.

Mazliet vēstures

COM ports tā laika datoros tradicionāli tika numurēts ar 1 vai 2, jo parasti to nebija vairāk par diviem. Ja nepieciešams, var uzstādīt papildu portus. Kad lietotājs ir konfigurējis programmatūra, bija nepieciešams nesajaukt un pareizi instalēt tieši to, kuram tika nodrošināts savienojums nepieciešamo aprīkojumu. Katram COM portam bija nepieciešami pareizi ātruma iestatījumi, kā arī vairāki citi noslēpumaini parametri, kas bija zināmi tikai šauram speciālistu lokam. Lai iekārtu pieslēgšana būtu veiksmīga, visi nepieciešamie parametri bija kaut kur jānoskaidro vai eksperimentāli jāizvēlas, jo šajā gadījumā nebija automātiskas konfigurācijas. Turklāt savienojums, izmantojot COM portu, ļāva savienot jebkuru programmatūru ar patvaļīgu ārējo aprīkojumu, pat pilnīgi nesaderīgu, kas iestatīšanas procesā radīja milzīgu kļūdu skaitu.

Mūsdienīgums

Tagad savienojums caur COM portu ir pilnībā aizstāts ar vairāk moderna metode, kuras ieviešanai nav nepieciešamas īpašas zināšanas, proti, izmantojot USB portu. Šai metodei nav visu iepriekš minēto trūkumu. Taču mūsdienu standarti visu veidu GPS iekārtu un ļoti neviendabīgas programmatūras savienošanas savietojamībai izveidojās diezgan sen ap COM portu koncepciju, kas šobrīd ir kļuvušas arhaiskas.

Tas ir saistīts ar faktu, ka sākotnēji gandrīz jebkura iekārta, tostarp GPS, bija ārēja, un tās savienojums ar datoru tika veikts, izmantojot seriālo kabeli, kas savienots ar kādu no aparatūras pieslēgvietām. Konfigurācijas procesa laikā lietotājam bija pareizi jāizvēlas porta numurs un datu pārraides ātrums caur to. Tajā laikā radās galvenais standarts datu pārsūtīšanai no GPS uztvērēja uz programmu, ko tagad sauc par NMEA-0183. Faktiski šis standarts pieprasa, lai visi pat vismodernākās aparatūras un programmatūras izstrādātāji apmainītos ar datiem, izmantojot COM portus. Un tas viss apstākļos mūsdienu datori, kā arī plaukstdatoros USB standarts jau sen ir bijis galvenais. Un vēl viena iezīme ir tāda, ka pēdējā laikā GPS uztvērēji arvien biežāk tiek uzstādīti tieši ierīces korpusā, tas ir, starp to un galveno ierīci nav savienojuma kabeļa.

Virtuālie COM porti

Tika izgudrota izeja, proti, tika izstrādāti "virtuālie" COM porti. Izrādās, ka plaukstdatora iekšējā ierīce, piemēram, GPS uztvērējs, ir programmatūrā simulēta COM porta veidā, savukārt aparatūras izteiksmē tāda nav. Tajā pašā laikā programmai, kas paredzēta saskarnei, izmantojot šādu standartu, nav nozīmes, kā tā tiek ieviesta. Šeit ir atļauta virtuālas simulācijas klātbūtne, nevis obligāta aparatūras ieviešana. Tātad ir iespējams nodrošināt vecā stila GPS programmu savietojamību ar mūsdienu aprīkojumu.

Veiktas izmaiņas

Tajā pašā laikā COM porta vadība nav būtiski mainījusies. Lietotājam vecajā veidā sarežģīti iestatījumi jāveic gandrīz manuāli. Tomēr modernais COM ports vairs nav tā apjomīgā ierīce, kas atrodas sistēmas vienības aizmugurējā panelī, bet gan pavisam cita ierīce. Un šeit visa būtība ir tāda, ka no programmatūras viedokļa visas to ieviešanas izskatās bez sejas, tas ir, nav atšķirības starp virtuālo un reālo portu. Programmatūrai porti atšķiras tikai ar numuriem, ko tiem piešķīruši plaukstdatoru ražotāji pilnīgi nejauši. Piemēram, ASUS uztvērējs parasti atrodas uz COM5, savukārt PocketLOOX 560 uztvērēju rāda uz COM8. Izrādās, ka programmai, kas vēlas saņemt datus no GPS uztvērēja, sākotnēji nav nekādas ticamas informācijas par nosacīto numuru, zem kura parādās ports, kas ir noteikts uztvērējam šajā PDA.

Kā tas viss darbojas?

Ņemot vērā, ka starp visiem pieejamajiem COM portiem jūs varat automātiskā meklēšanaŠādas aptaujas procedūra ir diezgan neuzticama un diezgan apgrūtinoša. Tas ir saistīts ar to, ka ierīces, kas tiek attēlotas sistēmā kā COM pieslēgvietas, var būt diezgan dažādas un tām nav nekāda sakara ar GPS, tās var pilnīgi neparedzami reaģēt uz šādu aptauju. Piemēram, PDA ir porti, kas saistīti ar iekšējo mobilo modemu, ar USB, ar infrasarkano portu, kā arī ar citiem elementiem. Piekļūstot tiem programmai, kas paredzēta darbam ar konkrētu ierīci, var rasties pilnīgi neparedzama reakcija, kā arī dažādi darbības traucējumi, kas bieži izraisa plaukstdatora sasalšanu. Tieši tāpēc mēģinājums atvērt COM portu var radīt negaidītas situācijas, līdz pat Bluetooth ieslēgšanai vai Un var būt vēl nesaprotami gadījumi.

COM porta darbība

COM portiem par pamatu tiek izmantota asinhronā universālā raiduztvērēja mikroshēma. Šī mikroshēma pastāv vairākos veidos: Intel 16550A, 16550, 16450, 8250. Katram COM portam tajā ir datu uztvērēja un raidītāja reģistri, kā arī vairāki vadības reģistri, kuriem var piekļūt, izmantojot BIOS, Windows un MS DOS programmas. Plkst jaunākās versijas mikroshēmā ir buferu komplekts nosūtīto un saņemto datu pagaidu glabāšanai. Pateicoties šai iespējai, ir iespēja retāk pārtraukt centrālā procesora darbu, kā arī saskaņot datu pārraides ātrumu.

Galvenie iestatījumi

COM porta ierīcei ir šādas raksturīgās īpašības:

Porta bāzes adrese informācijas ievadei un izvadīšanai;

Aparatūras pārtraukumu numuri;

Viena informācijas bloka lielums;

Datu pārsūtīšanas ātrums;

Godīguma noteikšanas režīms;

Informācijas plūsmas vadības metode;

Stop bitu skaits.

Kā pārbaudīt datora COM portu? Kam pievērst uzmanību?

Kā minēts iepriekš, šāda veida ports ir divvirzienu interfeiss bitu līmeņa seriālajam ceļam. Atšķirīga iezīme salīdzinājumā ar paralēlo portu šeit ir datu pārsūtīšana pa bitiem. COM porta anatomija ir tāda, ka tas nav vienīgais datorā, kas izmanto seriālo datu pārsūtīšanas metodi. Piemēram, tādas saskarnes kā Ethernet vai USB arī izmanto līdzīgu principu, taču vēsturiski ir noticis tā, ka ir pieņemts zvanīt uz RS232 standarta seriālo portu.

Ļoti bieži datora remontam un diagnostikai ir jāatver COM ports, kā arī jāpārbauda tā darbība. Ir ļoti viegli sadedzināt elementu. Visbiežāk tas notiek lietotāja vainas dēļ, kurš nepareizi atvieno ierīci, izraujot savienotāju, kamēr ir pievienots interfeiss. Vienkāršākais veids, kā pārbaudīt, vai saskarne darbojas, ir pievienot tai peli. Tomēr ir tik grūti iegūt pilnīgu priekšstatu, jo manipulators izmanto tikai pusi no signāla līnijām no astoņām pieejamajām. Tikai īpaša spraudņa un programmas izmantošana ļaus veikt veiktspējas pārbaudi. Šiem nolūkiem jau ir īpaši izstrādāta programmatūra.

Izstrādātāji ir iecienījuši seriālos portus to ērtās apkopes un lietošanas dēļ.

Un, protams, rakstīt uz termināļa programmas konsoli ir labi, bet es gribu savu aplikāciju, kas, nospiežot taustiņu uz ekrāna, veic jums nepieciešamās darbības;)

Šajā rakstā es aprakstīšu kā strādāt ar com ports valodā C++.

Risinājums ir vienkāršs, taču nez kāpēc uzreiz netika atrasts darbojošs piemērs. Par sim es to saglabāju šeit.

Protams, jūs varat izmantot starpplatformu risinājumus, piemēram, QSerial - bibliotēku Qt, es droši vien izmantošu, bet nākotnē. Tagad mēs runājam par "tīru" Windows C++. Mēs rakstīsim Visual Studio. Man ir 2010. gads, lai gan tas nespēlē nekādu lomu ...

Izveidojiet jaunu konsoles Win32 projektu.

Iekļaut galvenes failus:

#iekļauts #iekļauts izmantojot namespace std;

Mēs deklarējam komunikāciju porta apstrādātāju:

ROKTURIS hSerial;

Es to daru globāli, tāpēc, nododot to funkcijām, man nav jāuztraucas par norādēm.

int _tmain(int argc, _TCHAR* argv) (

Es nevaru ciest Windows programmēšanas stilu. Viņi visu sauca savā veidā un sēž priecājoties ...

Tagad maģija deklarēt virkni ar porta nosaukumu. Lieta ir tāda, ka tas pats nespēj pārveidot char.

LPCTSTR sPortName = L"COM1";

Darbs ar seriālajiem portiem sistēmā Windows darbojas tāpat kā ar failu. Atverot pirmo com ports rakstīšanai/lasīšanai:

HSerial = ::IzveidotFailu(sPortName,GENERIC_READ | GENERIC_WRITE,0,0,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0);

Funkcionalitātes pārbaude:

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

Tagad jums ir jākonfigurē savienojuma parametri:

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"; }

Vietnē msdn ieteicams vispirms iegūt parametrus un pēc tam tos mainīt. Mēs joprojām mācāmies, tāpēc darām, kā prasīts.

Tagad deklarēsim virkni, kuru mēs nodosim, un tam nepieciešamos mainīgos:

Char data = "Sveiki no C++"; // virkne DWORD nodošanai dwSize = sizeof(data); // šīs virknes izmērs DWORD dwBytesWritten; // šeit būs faktiski pārsūtīto baitu skaits

Virknes nosūtīšana. Atgādināšu, ka piemērs ir visvienkāršākais, tāpēc nekādas īpašas pārbaudes neveicu:

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

Es arī nolēmu parādīt virknes lielumu un kontrolei nosūtīto baitu skaitu:

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

Programmas beigās mēs izveidojam bezgalīgu lasīšanas datu cilpu:

While(1) ( ReadCOM(); ) atgriež 0; )

Tagad lasīšanas funkcija:

Void ReadCOM() ( DWORD iSize; char sReceivedChar; while (true) (ReadFile(hSerial, &sReceivedChar, 1, &iSize, 0); // iegūt 1 baitu, ja (iSize > 0) // izdrukāt, ja kaut kas tiek saņemts<< sReceivedChar; } }

Tas patiesībā ir viss piemērs.

Datorā seriālais ports ir seriālās komunikācijas saskarne, caur kuru informācija tiek pārsūtīta vai izvadīta vienlaikus. Lielāko daļu personālo datoru vēstures dati tika pārsūtīti caur seriālajiem portiem uz tādām ierīcēm kā modemi, termināļi un dažādas perifērijas ierīces.

Lai gan tādas saskarnes kā Ethernet, FireWire un USB sūta datus kā seriālo straumi, termins "seriālais ports" parasti apzīmē aparatūru, kas vairāk vai mazāk atbilst standartam RS-232 un kas paredzēta saskarnei ar modemu vai līdzīgu sakaru ierīci.

Mūsdienu datoriem bez seriālajiem portiem var būt nepieciešami seriālie pārveidotāji, lai nodrošinātu saderību ar RS-232 seriālajām ierīcēm. Seriālās pieslēgvietas joprojām tiek izmantotas tādās lietojumprogrammās kā rūpnieciskās automatizācijas sistēmas, zinātniskie instrumenti, tirdzniecības vietu sistēmas un daži rūpniecības un patēriņa izstrādājumi. Serveru datori var izmantot seriālo portu kā pārvaldības vai diagnostikas konsoli. Tīkla iekārtas (piemēram, maršrutētāji un slēdži) konfigurēšanai bieži izmanto seriālo konsoli. Šajās jomās joprojām tiek izmantoti seriālie porti, jo tie ir vienkārši, lēti un to konsoles līdzekļi ir ļoti standartizēti un plaši izplatīti.

COM porta spraudnis (RS232)

Ir 2 veidu com porti, 25 kontaktu vecais savienotājs un jaunāks 9 kontaktu savienotājs, kas to aizstāj.

Zemāk ir diagramma par tipisku standarta 9-pin RS232 savienotāju ar savienotājiem, šāda veida savienotāju sauc arī par DB9 savienotāju.

  1. Carrier Detect (DCD).
  2. Saņemt datus (RXD).
  3. Datu pārraide (TXD).
  4. Uztvērējs gatavs apmaiņai (DTR).
  5. Zeme (GND).
  6. Avots gatavs apmaiņai (DSR).
  7. Pieprasījums nosūtīt (RTS).
  8. Gatavs pārsūtīšanai (CTS).
  9. Zvana signāls (RI).

Informācija par RJ-45 uz DB-9 seriālā porta adaptera tapu slēdžam

Konsoles ports ir RS-232 seriālais interfeiss, kas izmanto RJ-45 savienotāju, lai izveidotu savienojumu ar vadības ierīci, piemēram, datoru vai klēpjdatoru. Ja jūsu klēpjdatoram vai personālajam datoram nav DB-9 savienotāja tapas un vēlaties savienot klēpjdatoru vai datoru ar slēdzi, izmantojiet RJ-45 un DB-9 adaptera kombināciju.

DB-9RJ-45
Datu iegūšana2 3
Datu pārsūtīšana3 6
Vēlme apmainīties4 7
Zeme5 5
Zeme5 4
Vēlme apmainīties6 2
Pārsūtīšanas pieprasījums7 8
Pārsūtīšana ir gatava8 1

Vadu krāsas:

1 Melns
2 Brūns
3 Sarkans
4 Apelsīns
5 Dzeltens
6 Zaļš
7 Zils
8 Pelēks (vai balts)