Ce este un port de pisică pe computer. Care sunt porturile unui computer personal? Și ce sunt ei? Cum să dezactivați porturile USB când opriți computerul

Descrierea interfeței RS-232, formatul conectorilor utilizați și atribuirea rezultatelor, semnalelor, protocolul de schimb de date.

descriere generala

Interfața RS-232, numită oficial "EIA / TIA-232-E", dar mai bine cunoscută sub numele de interfața "COM Port", anterior a fost una dintre cele mai frecvente interfețe din tehnician de calculator. Încă mai întâlnește calculatoare de birouÎn ciuda apariției unor interfețe mai rapide și "inteligente", cum ar fi USB și Fireware. Avantajele sale din punctul de vedere al amatorilor radio pot fi atribuite vitezei minime scăzute și simplității implementării protocolului în dispozitivul de casă.

Interfața fizică este implementată de unul dintre cele două tipuri de conectori: DB-9M sau DB-25M, acesta din urmă în computerele disponibile în prezent este practic găsit.

Numirea concluziilor conectorului cu 9 pini


9-pin de tip DB-9M de tip DB-9M
PIN Numere de contact
Direcția semnalelor este indicată în raport cu gazda (computer)
a lua legatura Semnal Direcţie Descriere
1 CD Intrare Încărcarea detectată
2 Rxd. Intrare Date acceptate
3 Txd. Ieșire Datele transmise
4 DTR. Ieșire Gazdă gata
5 GND. - Sârmă comună
6 DSR. Intrare Dispozitivul este gata
7 RTS. Ieșire Gazdă pregătită pentru transmisie
8 CTS. Intrare Dispozitivul este gata să primească
9 Ri. Intrare A fost găsită o provocare

Numirea concluziilor conectorului cu 15 pini

a lua legatura Semnal Direcţie Descriere
1 Scut - Ecran
2 Txd. Ieșire Datele transmise
3 Rxd. Intrare Date acceptate
4 RTS. Ieșire Gazdă pregătită pentru transmisie
5 CTS. Intrare Dispozitivul este gata să primească
6 DSR. Intrare Dispozitivul este gata
7 GND. - Sârmă comună
8 CD Intrare Încărcarea detectată
9 - - rezervă
10 - - rezervă
11 - - Nefolosit
12 SCD. Intrare Transportatorul este detectat. # 2
13 SCTS. Intrare Dispozitiv gata pentru recepție # 2
a lua legatura Semnal Direcţie Descriere
14 STXD. Ieșire Datele transmise # 2
15 Trc. Intrare Luând transmițător
16 SRXD. Intrare Datele acceptate # 2
17 RCC. Intrare TACK pe receptor
18 Llop. Ieșire Buclă locală
19 Srts. Ieșire Gazdă gata să transmită # 2
20 DTR. Ieșire Gazdă gata
21 Rloop. Ieșire O buclă exterioară
22 Ri. Intrare A fost găsită o provocare
23 Drd. Intrare Viteza datelor este determinată
24 Trco. Ieșire Luați transmițătorul exterior
25 Test Intrare Modul de testare

Tabelul arată că interfața cu 25 de pini se distinge prin prezența unui al doilea canal de recepție deplină (semnalele indicate "# 2"), precum și numeroase semnale suplimentare de control și control. Cu toate acestea, de multe ori, în ciuda prezenței în conectorul "lățime larg", semnalele suplimentare nu sunt pur și simplu conectate pe ea.

Caracteristici electrice

Nivelurile transmițătorului logic: "0" - de la +5 la +15 volți, "1" - de la -5 la -15 volți.

Nivelurile logice ale receptorului: "0" - peste +3 volți, "1" - sub-volți.

rezistență la intrare Receptor cel puțin 3 com.

Aceste caracteristici sunt definite de standard ca fiind minim, garantând compatibilitatea dispozitivului, caracteristicile reale sunt, de obicei, semnificativ mai bune, ceea ce permite, pe de o parte, să alimenteze dispozitivele cu putere redusă din port (de exemplu, numeroasele cabluri de date de casă sunt proiectat pentru celulare), iar pe de altă parte - să se supună portului portului inversat Nivelul TTL în loc de un semnal bipolar.

Descrierea semnalelor principale de interfață

CD - Dispozitivul stabilește acest semnal atunci când detectează transportorul în semnalul recepționat. În mod obișnuit, acest semnal este utilizat de modemuri, care raportează astfel gazda cu privire la descoperirea modemului de lucru la celălalt capăt al liniei.

Rxd. - primiți datele gazdă de pe dispozitiv. Descrise în detaliu în secțiunea "Protocolul de schimb de date".

Txd. - Linia de transfer a gazdei de date la dispozitiv. Descrise în detaliu în secțiunea "Protocolul de schimb de date".

DTR. - gazda stabilește acest semnal atunci când este gata de schimb de date. De fapt, semnalul este setat când deschideți portul programului de comunicare și rămâneți în această stare până când portul este deschis.

DSR. - Dispozitivul stabilește acest semnal când este activat și gata de schimb de date cu gazdă. Aceste semnale (DTR) (DTR) trebuie să fie instalate pentru a face schimb de date.

RTS. - gazda stabilește acest semnal înainte de a începe transferul de date pe dispozitiv și semnalează disponibilitatea pentru primirea datelor de pe dispozitiv. Utilizat atunci când controlul hardware al schimbului de date.

CTS. - dispozitivul stabilește acest semnal ca răspuns la instalarea gazdă anterioară (RTS) atunci când este gata să ia date (de exemplu, atunci când datele furnizate de date gazdă anterioare sunt transmise la linia în linie sau există un spațiu liber în intermediar tampon).

Ri. - dispozitivul (de obicei modem) stabilește acest semnal atunci când primește un apel din sistemul de la distanță, de exemplu, la primirea apel telefonicDacă modemul este configurat să primească apeluri.

Protocolul de schimb de date

Protocolul RS-232 există două metode de gestionare a datelor: hardware și software, precum și două moduri de transmisie: sincron și asincron. Protocolul vă permite să utilizați oricare dintre metodele de gestionare împreună cu orice mod de transmisie. Lucrul fără control al fluxului este, de asemenea, permis, ceea ce implică disponibilitatea constantă a gazdei și a dispozitivului pentru a primi date când conexiunea este setată (sunt instalate semnale DTR și DSR).

Metoda de gestionare a hardware-ului Este implementat folosind semnale RTS și CTS. Pentru a transfera gazda de date (computer), stabilește semnalul RTS și așteaptă ca semnalul CTS să fie instalat, după care datele sunt pornite până când semnalul CTS este setat. Semnalul CTS este verificat imediat de către gazdă imediat înainte de a începe transmiterea următorului octet, astfel încât octetul, care a început deja să fie transmis, va fi transmis complet indiferent de valoarea CTS. În modul de schimb de date cu jumătate de duplex (dispozitivul și gazda transmite date la rândul său, în modul complet duplex, pot să o facă în același timp) RTS Demontarea semnalului de către gazdă înseamnă trecerea la modul de recepție.

Metoda de gestionare a software-ului Este de a transfera gazda simbolurilor speciale de oprire (simbol cu \u200b\u200bcodul 0x13, numit XOFF) și reînnoirea (simbolul cu codul 0x11, numit XON). Când primiți aceste caractere, partea de transmisie trebuie să oprească transmisia în mod corespunzător sau să o reia (dacă există date de așteptare pentru transmisie). Această metodă este mai ușoară în ceea ce privește implementarea echipamentului, cu toate acestea, furnizează o reacție mai lentă și, în consecință, necesită notificarea transmițătorului transmițătorului atunci când spațiul liber este redus în tamponul de recepție la o anumită limită.

Modul de transmisie sincronă Aceasta implică un schimb de date continuu atunci când biții urmează unul după altul fără întreruperi suplimentare la o viteză dată. Acest mod COM PORT nu sunt acceptate.

Mod de transmisie asincronă Este faptul că fiecare octet de date (și bitul de control al parității, în cazul prezenței sale), "se dovedește" o secvență de sincronizare a unui pic de pornire zero și unul sau mai mulți biți de oprire unică. Diagrama fluxului de date în modul asincron este prezentată în figură.

Unul dintre posibilele algoritmi ai receptorului ca urmare a:

  1. Așteptați nivelul "0" al semnalului de recepție (RXD în cazul unei gazde, TXD în cazul unui dispozitiv).
  2. Numărați jumătate din durata bateriei și verificați dacă nivelul de semnal este încă "0"
  3. Numărați durata de biți complet și nivelul actual al semnalului Scrieți lotului de date mai mic (biți 0)
  4. Repetați elementul anterior pentru toate celelalte biți de date
  5. Numărați durata de biți integrală și nivelul de semnal curent pentru a le folosi pentru a verifica corectitudinea recepției utilizând controlul parității (vezi mai jos)
  6. Strângeți durata de biți integrală și asigurați-vă că nivelul actual al semnalului "1".

La calcularea, portul serial este o interfață de comunicare serială prin care informațiile sunt transmise sau emise la un moment dat. Pentru cea mai mare parte a istoriei computerelor personale, datele au fost transmise prin porturi seriale pe dispozitive, cum ar fi modemuri, terminale și diverse dispozitive periferice.

Deși interfețele cum ar fi Ethernet, Firewire și USB, toate trimise date ca flux secvențial, termenul "port serial" identifică de obicei hardware, mai mult sau mai puțin compatibil cu standardul RS-232, destinat să interacționeze cu un modem sau cu o legătură de comunicare similară.

Computerele moderne fără porturi seriale pot necesita convertoare cu o interfață serială pentru a asigura compatibilitatea cu dispozitivele seriale RS-232. Porturile seriale sunt încă utilizate în aplicații, cum ar fi sisteme de automatizare industrială, dispozitive științifice, sisteme de vânzări și unele bunuri industriale și de consum. Computerele serverului pot utiliza un port serial ca consola de administrare sau diagnosticare. Echipamentul de rețea (de exemplu, routere și comutatoare) utilizează adesea consola serială pentru configurație. Porturile seriale sunt încă utilizate în aceste zone, deoarece acestea sunt simple, ieftine, iar funcțiile consolei lor sunt foarte standardizate și răspândite.

Com Port Pinout (RS232)

Există 2 soiuri ale portului COM, conector vechi de 25 de pini și au înlocuit mai nou conectorul cu 9 pini.

Mai jos este o diagramă a unui conector standard standard RS232 cu conectori, acest tip de conector este numit și conectorul DB9.

  1. Detectarea transportatorului (DCD).
  2. Obținerea datelor (RXD).
  3. Transfer de date (TXD).
  4. Pregătirea pentru schimbul de la receptor (DTR).
  5. Pământ (GND).
  6. Pregătirea pentru schimbul de la sursă (DSR).
  7. Cerere de transfer (RTS).
  8. Pregătirea transmisiei (CTS).
  9. Semnal apel (RI).

RJ-45 la DB-9 informații despre ieșirea adaptorului de port secvențial pentru comutator

Portul consolei este interfața serială RS-232, care utilizează conectorul RJ-45 pentru a se conecta la dispozitivul de comandă, cum ar fi un PC sau laptop. Dacă nu există PIN PIN DB-9 pe laptop sau pe PC și doriți să conectați un laptop sau un PC la comutator, utilizați combinația adaptorului RJ-45 și DB-9.

DB-9.RJ-45.
Obținerea datelor2 3
Transfer de date3 6
Exchangerea de pregătire4 7
Teren5 5
Teren5 4
Exchangerea de pregătire6 2
Cerere de transfer7 8
Pregătirea pentru transmisie8 1

Culori de sârmă:

1 negru
2 maro
3 roșu
4 portocalii
5 galben
6 Green.
7 albastru
8 gri (sau alb)

Uneori trebuie să rezolvați sarcina de comunicare dispozitiv electronic Cu un computer, fie că este pur și simplu schimbat date sau telecomandă. Acest articol descrie modul în care acest lucru poate fi implementat utilizând un port serial. Principalul său avantaj este că software-ul standard interfața Windows. (API) vă permite să controlați direct liniile de ieșire, oferind un control direct asupra lor și are o funcție de așteptare pentru un anumit eveniment asociat cu portul COM. De asemenea, standardul RS-232 pentru care sunt fabricate porturile COM, vă permite să vă conectați și să opriți cablurile în timpul funcționării dispozitivelor (dopul fierbinte).

Descriere

COM Port (port serial) - Interfața bidirecțională care transmite date într-o formă secvențială (biți dincolo) prin protocolul RS-232. Acesta este un protocol destul de comun folosit pentru a comunica un dispozitiv (de exemplu, un computer) cu alte fire de până la 30 m. Semnalele logice sunt diferite aici de la standard: nivelul unității logice este de la +5 până la + 15V, nivelul zero logic este de la -5 la -15V, ceea ce necesită transformări suplimentare ale circuitului, dar asigură o bună imunitate la zgomot.

Luați în considerare un conector cu 9 pini (DB-9M). Mai jos este pinout:

Ieșire № Nume Caracterul de semnal Semnal
1 DCD. Intrare Detectarea transportatorului de date.
2 Rxd. Ieșire Transmite date.
3 Txd. Intrare Primiți date.
4 DTR. Ieșire Terminalul de date gata
5 GND. - Sol
6 DSR. Intrare Setarea datelor gata
7 RTS. Ieșire Solicitare de trimis.
8 CTS. Intrare Clar pentru a trimite.
9 Ri. Intrare Indicator inel

Mai presus de toate, vom fi interesați de PINS 2 (transfer de date), 3 (recepție de date) și 5 (teren). Acesta este un set minim pentru posibilitatea de aparate cu două fețe.

Începând cu detalii despre descrierea protocolului nu va fi. Pentru aceasta există GOST și altele asemenea. Prin urmare, vom merge mai departe și să vorbim despre cum să gestionăm această fiară.

Aplicație

După cum sa menționat deja, nivelurile RS-232 diferă de nivelurile standard TTL. Prin urmare, trebuie să convertim oarecum valorile de tensiune. Acestea. Faceți 5V de la + 15V și 0V de la -15V (și invers). Una dintre modalitățile (și, probabil, cel mai ușor) - utilizarea unui microcircuit Special Max232. Este ușor de înțeles și, în același timp, poate converti două semnale logice.

Mai jos este schema incluziunii sale:


Cred că nu ar trebui să existe nici o dificultate. Aceasta este una dintre utilizarea acestui cip: transmisia de date de la un microcontroler pe un computer și invers. Semnalul transmis vine pe picioare t x.În o parte și pe r x.În cealaltă. Semnalele de intrare sunt eliminate de la t x.Out și R. x.Afară, respectiv.

Programare

Pentru a începe cu, să vorbim despre porturile de programare la un nivel scăzut. Deci va fi mai corect. Am petrecut o mulțime de nervi, care se ocupă de această interfață, până când am început să mă aflu în principiul muncii sale la un nivel mai mic decât, mai degrabă transfer simplu Simboluri. Dacă este clar, înseamnă că nu vor exista probleme cu limbile la nivel înalt.

Mai jos sunt adresele porturilor COM cu care va trebui să lucrăm:

Numele portului. Abordare IRQ.
COM 1. 3f8h. 4
COM 2. 2f8h. 3
COM 3. 3e8h. 4
COM 4. 2e8h. 3

Acestea pot varia. Setați valori în setările BIOS. Aceasta este adresele de bază. Ele vor depinde, de asemenea, de adresa registrelor responsabile pentru activitatea porturilor:

Abordare Dlab. Citind, scriind Abreviere Numele înregistrării
+ 0 =0 Scrie. Timpul de blocare a transmițătorului.
=0 Citit. Tampon de receptor.
=1 Citeste, scrie. Divisor Latch Byte redus
+ 1 =0 Citeste, scrie. Ier. Introduceți registrul de activare
=1 Citeste, scrie. Divisor Latch High Byte
+ 2 - Citit. Iir. Înregistrarea de identificare a întreruperii
- Scrie. FCR. Registrul de control FIFO.
+ 3 - Citeste, scrie. LCR. Controlul liniei de control
+ 4 - Citeste, scrie. MCR. Registrul de control al modemului
+ 5 - Citit. LSR. Registrul de stare a liniei.
+ 6 - Citit. MSR. Registrul de stare a modemului
+ 7 - Citeste, scrie. Zgârieturi.

Prima coloană este adresa de înregistrare în raport cu baza de bază. De exemplu, pentru COM1: adresa de registru LCR va fi 3F8H + 3 \u003d 3FB. Cea de-a doua coloană - DLAB (Divisor Latch Bit) Bit, definind un scop diferit pentru același registru .. adică Vă permite să utilizați cu 12 registre utilizând doar 8 adrese. De exemplu, dacă DLAB \u003d 1, apoi se referă la 3F8H, vom seta valoarea octetului mai tânăr al frecvenței generatorului de ceas. Dacă DLAB \u003d 0, apoi se referă la aceeași adresă, octetul transmis sau acceptat va fi înregistrat în acest registru.

Registrul zero.

Acesta respectă registrele / registrele de transmisie de date și coeficientul de divizor de frecvență al generatorului. Așa cum s-a menționat mai sus, dacă DLAB \u003d 0, atunci registrul este utilizat pentru a înregistra datele recepționate / transmise, dacă este de 1, atunci valoarea octetului inferior al divizorului de frecvență a generatorului de ceas este setat. Rata de transfer de date depinde de valoarea acestei frecvențe. Byte-ul cel mai mare divizor este scris în următoarea celulă de memorie (adică, pentru portul COM1, va fi 3F9H). Mai jos este dependența ratei de date din coeficientul de divizor:

Interrupt Activare Registru (IER)

Dacă DLAB \u003d 0, este utilizat ca un registru de înregistrare al întreruperii de la un adaptor asincron, dacă DLAB \u003d 1, apoi stabilește o octet de senior de frecvența generatorului de ceas.

Registrul de identificare a întreruperii (IIR)

Întreruperea este un eveniment la care începe executarea programului principal și începe procedura de întrerupere. Acest registru determină tipul de întrerupere.

Registrul de control al liniei (LCR)

Acesta este registrul de control.

Bitul 7. 1 Divisor ACCESS BIT BIT - Viteza schimbului de date
0 Mod comun (control de întrerupere, recepție / transmisie de date)
Bitul 6. Pauză de linie mimetică (trimite o secvență de mai multe zerouri)
Biți 3 - 5 Bitul 5. Bitul 4. Bitul 3. Alegerea credinței
X. X. 0 Nici o paritate
0 0 1 Paritate ciudată.
0 1 1 Chiar paritatea.
1 0 1 O paritate mare (lipicios)
1 1 1 Paritate scăzută (lipicioasă)
Bitul 2. Numărul de biți de oprire
0 1 STOP BIT.
1 2 biți de oprire la 6,7 \u200b\u200bsau 8 biți de date sau 1,5 biți de oprire cu 5 biți de date.
Biți 0 și 1 Bitul 1. Bitul 0. Numărul de biți de date
0 0 5 biți
0 1 6 biți
1 0 7 biți
1 1 8 biți

Verificarea disponibilității implică transmiterea unui alt biți - punctul de pregătire. Valoarea sa este setată astfel încât, în pachetul de biți, numărul total de unități (sau zerouri) a fost chiar sau ciudat, în funcție de instalarea registrelor portuare. Acest bit este utilizat pentru a detecta erorile care pot apărea în timpul transmiterii datelor din cauza interferenței pe linie. Dispozitivul de recepție re-calculează paritatea datelor și compară rezultatul cu un bit de paritate. Dacă paritatea nu a coincis, se crede că datele sunt transmise cu o eroare.

Bitul de oprire înseamnă încheierea transferului de date.

Registrul de control al modemului (MCR)

Registrul de control al modemului.

Pic Valoare
0 Linia dtr.
1 Linia RTS.
2 Linie Out1 (rezervă)
3 Linie Out2 (rezervă)
4 Pornirea diagnosticării atunci când introduceți un adaptor asincron, închis la ieșirea sa.
5-7 Egal cu 0.

Registrul de stare a liniei (LSR)

Înregistrați definirea stării liniei.

Pic Valoare
0 Datele sunt obținute și gata pentru citire, resetare automată la citirea datelor.
1 Eroare de depășire. A fost adoptată o nouă octet de date, iar cea anterioară nu a fost încă citită de program. Byte-ul anterior este pierdut.
2 Readuitatea de eroare este resetată după citirea stării liniei.
3 Eroare de sincronizare.
4 O cerere de întrerupere a transmisiei "Break" este detectată - un rând lung de zerouri.
5 Registrul de stocare a transmițătorului este gol, puteți înregistra un nou octet pentru transmisie.
6 Registrul transmițătorului este gol. Acest registru primește date din registrul de stocare și le convertește la un tip de serie pentru transmisie.
7 (Dispozitivul nu este conectat la computer).

Registrul de stare a modemului (MSR)

Registrul de stare a modemului.

Asta este. Operarea acestor registre, puteți comunica direct cu portul COM, controlați transmisia și recepția datelor. Dacă nu doriți să vă încurcați cu memoria, puteți utiliza deja componente gata făcute pentru diferite medii de programare: C ++, VB, Delphi, Pascal, etc. Ele sunt intuitive, deci cred că nu merită atenția aici.

Opcirii. - Setează numărul de biți de oprire. Poate câmpul poate
Luați următoarele valori:


  • Onestopbit. - un pic de oprire;
  • One5stopbit. - Unii biți de oprire (practic nu
    folosit);
  • Twostopbit. - Două biți de oprire.

După ce toate câmpurile de structură DCB sunt umplute, aveți nevoie
Configurarea portului prin apelarea funcției Setcommstate:

Bool setcommstate (

Manipulați hfile

Lpdcb lpdcb.

În cazul finalizării cu succes, funcția se va întoarce diferită de zero
valoare și în caz de eroare - zero.

A doua structură obligatorie pentru configurarea portului este
Structura comunelor. Definește parametrii de întârziere temporară
La primirea. Iată o descriere a acestei structuri:

typedef Struct _Commtimeouts (

DWORD ReadIntervalTimeout;

Dword readtotaltimeoutmultiplier;

Dwordtotooltimeoutconstant;

Dword writetoltimeoutmultiplier;

Dword writetoltimeoutconstant;

) Commontimeouts, * lpcommtimeouts;

Domeniile structurii Commtionouts au următoarele valori:


  • ReadIntervaltimeout. - Interval de timp maxim
    (în milisecunde) admisibile între două citite
    Linia de comunicare prin caractere succesive. Pe parcursul
    Timpul de citire a perioadei de timp începe să se numără de la
    recepția primului simbol. Dacă intervalul dintre două
    Caracterele secvențiale vor depăși valoarea specificată, funcționarea
    Citirea și toate datele acumulate în tampon sunt transmise
    în program. Valoarea zero. acest câmp înseamnă că dat.
    Timpul nu este utilizat.
  • READTOTALTIEOUTMULTIPLier. - Specifică multiplicatorul (în


    înmulțit cu numărul de caractere solicitate de citit.
  • Readtotaltimeoutconstant. - Specifică constanta (în

    Operațiunile de citire. Pentru fiecare operație de citire, această valoare
    Plus la rezultatul multiplicării ReadtotaltimeoutMultipLier pe
    Numărul de caractere a fost solicitat să citească. Zero Domenii
    ReadtotaltimeoutMultipLier și ReadtotaltimeOutConstant înseamnă
    Că nu este utilizat timeout-ul global pentru operarea citită.
  • Writetotaltimeoutmultiplier. - Specifică multiplicatorul (în
    milisecunde) folosit pentru a calcula timeout-ul total

    înmulțită cu numărul de caractere scrise.
  • Scriptotaltimeoutconstant. - Specifică constanta (în
    milisecunde) folosit pentru a calcula timeout-ul total
    Operațiuni de înregistrare. Pentru fiecare operațiune de înregistrare, această valoare
    Adăugat la rezultatul multiplicării lui ScritotaltimeoutMultipLier pe
    Numărul de caractere scrise. Zero Domenii
    Writetotaltimeoutmultiplier și scrieri de scriere înseamnă
    Că timpul de expirare global pentru operația de înregistrare nu este utilizat.

Un pic mai detaliat despre timpul de expirare. Să citim din port 50
Simboluri cu o viteză de 9.600 de biți / s. Dacă sunt utilizate 8 biți
pe simbol, în plus față de paritate și un pic de oprire, apoi unul
Simbolul din linia fizică reprezintă 11 biți (inclusiv biți de pornire).
Aceasta înseamnă că 50 de caractere la o viteză de 9.600 de biți vor fi acceptate

50 × 11/9600 \u003d 0.0572916 cu

sau aproximativ 57,3 milisecunde, cu condiția ca intervalul zero
între primirea caracterelor consecutive. Dacă intervalul dintre
Caracterele sunt aproximativ jumătate din timpul de transmisie al unuia
simbol, adică 0,5 milisecunde, timpul de recepție va fi

50 × 11/9600 + 49 × 0.0005 \u003d 0,0817916

sau aproximativ 82 de milisecunde. Dacă mai mult în procesul de citire
82 de milisecunde, atunci avem dreptul de a presupune că a apărut o eroare în
munca dispozitivului extern și poate opri citirea, prin aceasta
evitând înghețarea programului. Aceasta este operațiunea globală de expirare
citind. În mod similar, există un timp total al operațiunii de înregistrare.

Formula pentru calcularea operațiunii totale de expirare, de exemplu,
Citirea, arată așa:

Numofarc x readtotaltimeoutmultiplier +
Readtotaltimeoutconstant.

unde numofarc este numărul de caractere solicitate pentru operația de citire.

În cazul nostru, înregistrarea de expirare nu poate fi utilizată și
Setați-le egali cu zero.

După completarea structurii Commontimeouts, trebuie să apelați
Caracteristica de instalare a timeoutului:

Bool setcommtimeouts (

Manipulați hfile

Lpcommtimeouts lpcommtimeouts.

Deoarece operațiunile de recepție-recepție sunt efectuate la viteză mică,
Tamponarea de date utilizată. Pentru a seta dimensiunea tamponului de recepție și
Transferurile trebuie utilizate de funcția:

BOOL SETUPCOMM (

Manipulați hfile

Dword dwinqueue,

Dword dwoutqueue.

Să presupunem că schimbați cu pachetele de dispozitive externe
informații de dimensiune de 1024 octeți, apoi o dimensiune rezonabilă a tampoanelor
Va fi o valoare de 1200. Funcția SetupComm este interesantă pentru că poate
Luați-vă doar dimensiunile pentru a nota prin efectuarea propriilor ajustări sau
În general, respingeți dimensiunile tampon oferite de dvs. - în acest caz
Această caracteristică este completată cu o eroare.

Voi da un exemplu de deschidere și configurare secvențială
Port COM1. Pentru Brevity - fără definiție a erorii. În acest exemplu
Portul se deschide pentru a lucra la o viteză de 9.600 de biți / c, utilizat 1
Bitul de oprire, bitul de paritate nu este utilizat:

#Include.

. . . . . . . . . .

Mânerul mânerului;

Commontimeouts Commontimeouts;

DCB DCB;

mâner \u003d CreateFile ("COM1", generic_read | generic_write,
Null, , open_exist, file_flag_overlapped, null);

SetupComm (mâner, SizeBuffer, SizeBuffer);

GetCommstate (mâner, & DCB);

dcb.baudrate \u003d cb_9600;

dcb.fbinary \u003d adevărat;

dcb.foutxctsflow \u003d FALSE;

dcb.foutxdsrflow \u003d FALSE;

dcb.fdtrcontrol \u003d dtr_control_handshake;

dcb.fdsrstensitatiity \u003d FALSE;

dcb.flantul \u003d FALSE;

dcb.frtscontrol \u003d rts_control_dizable;

dcb.fabortonerror \u003d fals;

dcb.bytesize \u003d 8;

dcb.parity \u003d noparitate;

dcb.stopbits \u003d 1;

Setcommstate (mâner, și DCB);

Commontimeouts.readintervaltimeout \u003d 10;

Commtionouts.readtotaltimeoutmultiplier \u003d 1;

// valorile din acest timp - Outs sunt destul de sigur
recepţie

// chiar la viteza 110 baud

Commtionouts.readtotaltimeoutconstant \u003d 100;

// utilizat B. acest caz cum ar fi timpul de așteptare
colet

Commitimeouts.writataltimeoutmultiplier \u003d 0;

Commitimeouts.writataltimeoutconstant \u003d 0;

Setcommtimeouts (mâner, și comunitare);

Purgecomm (mâner, purge_rxclear);

Purgecomm (mâner, purge_txclear);

După deschiderea portului, primul lucru pe care trebuie să-l pierdeți, așa că
Ca și în tampoanele de primire și transmisia poate fi "gunoi". Prin urmare, B.
Sfârșitul exemplului Am aplicat funcția care nu ne cunoaște anterior
Purgecomm:

Bool purgecomm (

Manipulați hfile

DWORD DWFLAGS.

Această caracteristică poate efectua două sarcini: curățați coada
Recepție și transmisie în șofer sau completarea tuturor operațiunilor
I / O. Ce acțiuni de realizare, setați la altul
Parametru:


  • Purge_txabort.
    înregistrează chiar dacă nu sunt finalizate;
  • Purge_rxabort. - opri imediat toate operațiunile
    citirea, chiar dacă nu sunt finalizate;
  • Purge_txclear. - elimină coada de transmisie în șofer;
  • Purge_rxclear. - Șterge coada de recepție în
    Conducător auto.
    Aceste valori pot fi combinate folosind un bătut
    Operațiuni sau. Tampoanele curate sunt recomandate după erori
    acceptarea și după finalizarea cu portul.

Este timpul să luați în considerare operațiunile direct
Citire-scriere pentru port. În ceea ce privește lucrul cu fișierele, utilizat
Caracteristicile de readfile și de scriere. Iată prototipurile lor:

Bool Readfile (

Manipulați hfile

LPVOID LPBUFFER,

Dword nnumofbytestoread,

Lpdword lpnumofbytesread,

Lpverlapped lpverlapped.

Bool WriteFile (

Manipulați hfile

LPVOID LPBUFFER,

Dword nnumofbytewrite,

LPDWORD LPNUMOFBYTESWRITENTEN,

Lpverlapped lpverlapped.

Luați în considerare atribuirea parametrilor acestor funcții:


  • hfile. - descriptor deschide fișierul Comunicare
    port;
  • lpbuffer. - adresa tamponului. Pentru datele de funcționare de scriere de la
    Acest tampon va fi transmis în port. Pentru a citi operațiunea în acest sens
    Tamponul va fi plasat de datele prelevate din linie;
  • nnumofbytestOread, nnumofbytewrite - Numărul de așteptat
    la primirea sau destinată octeților de transmisie;
  • nnumofbytesread, nnumofbyteswritten. - numărul real
    acceptate sau transmise octeți. Dacă sunt acceptate sau transferate mai puțin
    Datele decât cele solicitate, acesta mărturisește fișierul disc
    Despre eroare, iar pentru portul de comunicare nu este neapărat.
    Cauza timpului de expirare.
  • LpoveLapped. - adresa structurii suprapuse utilizate
    Pentru operațiuni asincrone.

În cazul finalizării normale, funcția este returnată la
diferite de zero, în caz de eroare - zero.

Voi da un exemplu de operare de citire și scriere:

#Include.

…………..

Dword numbyts, numbytes_ok, temp;

Comstat comină;

Suprapuse suprapuse;

char buf_in \u003d "salut!";

numbytes \u003d 6;

// Dacă temperatura nu este zero, înseamnă că portul este capabil
Erori

dacă (! temp) Writefile (mâner, Buf_in, numbytes,
& Numbytes_ok, & suprapunere);

ClearCommerror (mâner, și temp, și comină);

dacă (! temp) Readfile (mâner, buf_in, numbytes, & numbytes_ok,
& SUPRAPUNE);

// în variabila numbytes_ok conține un număr real
transmitere

// Byte acceptat

În acest exemplu, am folosit două necunoscute mai devreme
Comstabil și structuri suprapuse, precum și funcția ClearCommerError. Pentru
Cazul nostru de comunicare "în trei fire" Suprapunerea suprapusă
Ia în considerare (doar utilizați ca în exemplul). Funcția de prototip
ClearCommerror are forma:

Bool ClearCommerror (

Manipulați hfile

Lperors lpdword,

Lpcomstat lpstat.

Această caracteristică resetează semnul de eroare (dacă este cazul
loc) și returnează informații despre starea portului din structură
Comstant:

typedef struct _comstat.

DWORD FCTSHOLD: 1;

DWORD FDSRHOLD: 1;

DWORD FRLSDHOL: 1;

DWORD FXOffHold: 1;

Dword fxoffsent: 1;

DWORD FEOF: 1;

DWORD FTXIM: 1;

DWORD FRACKED: 25;

Dword cbinque;

Dword cboutque;

) Comstat, * lpcomstat;

Putem folosi două câmpuri ale acestei structuri:


  • Cbinque. - numărul de caractere din tamponul de recepție. Aceste simboluri
    luate din linie, dar care nu sunt încă citite de funcția de readfile;
  • CBOUTQUE. - numărul de caractere din tamponul de transmisie. Aceste
    Simbolurile nu sunt încă transmise la linie.

Câmpurile rămase ale acestei structuri conțin informații despre
Erori.

În cele din urmă, după finalizarea lucrărilor cu portul, ar trebui să fie închisă.
Închiderea obiectului în Win32 execută funcția CloseHandle:

Bool CloseHandle (

Manipulați hobject

Pe site-ul nostru puteți găsi textul integral al clasei pentru a lucra cu
portul secvențial în modul asincron "în trei fire" și
De asemenea, un exemplu de program care utilizează această clasă. Toate acestea
Scrisă sub Builder C ++, dar pentru că sunt utilizate numai funcțiile.
API Win32, textul programului este ușor de schimbat pentru orice compilator C ++.
Este, de asemenea, posibil ca clasa să nu fie scrisă destul de "conform regulilor" - întreb
scuză, autorul nu este un programator "drept" și scrie astfel
Cum este confortabil j.

Salut toată lumea din nou pe paginile blogului dvs. și astăzi vreau să spun cum conectați COM. port USB În ferestre. Să vorbim că este și pentru ceea ce este folosit. Cred că pentru administratorii de rețea Novice și doar pentru utilizatorii avansați, va fi interesant, pentru mine, la un moment dat a fost doar un fel de magie care vă permite să configurați echipamentul serverului.

Ceea ce este conectat prin portul COM

Prin modemurile conexe conectate anterior, șoareci. Acum este folosit pentru a vă conecta la surse putere neîntreruptă, pentru comunicarea cu dezvoltarea hardware a sistemelor de calcul încorporate, receptoare prin satelit, registrele de numerar, cu dispozitive pentru sisteme de securitate a obiectelor, precum și cu multe alte dispozitive.

Folosind portul COM, puteți conecta două computere utilizând așa-numitul "cablu zero-modem" (vezi mai jos). Folosit de la MS-DOS Times pentru a pompa fișiere de la un computer la altul, în Unix pentru accesul terminal la o altă mașină și în Windows (chiar și modern) - pentru depanatorul nivelului kernelului.

Dar în lumea rețelei prin portul COM.conectați-vă la portul de instalare a dispozitivelor de rețea (comutatoare, routere, mărci cum ar fi Cisco sau Ilieper)

Care este circuitul de conectare la comutatoarele prin portul serial. Există adaptoare, de exemplu, de la ST-laborator la un capăt al USB pe care îl conectați la un computer, iar al doilea este un port COM.

Instalarea portului USB COM Drivere în Windows

Din păcate, în dispozitivele conectate Windows, USB la COM nu este întotdeauna instalat automat în sistem și trebuie să le căutați șoferii. Dacă l-ați cumpărat singur, atunci unitatea a fost inclusă împreună cu șoferii și îl puteți folosi dacă nu este, apoi uitați-vă la modul de a găsi drivere.

Deschideți managerul de dispozitiv în Windows. Dacă nu știți cum, apoi apăsați CTR + Ruake Pause sau apăsați pe Win + R și introduceți Devmgmt.msc în fereastră. După cum puteți vedea în secțiunea Porturi (COM și LPT), am fost găsit pe cel de-al treilea portul Comt Necunoscut, iar șoferii nu l-au găsit de la sistem, pe care ne spune pictograma galbenă.

Du-te la proprietăți acest aparat Și alegeți ID-ul echipamentului, veți avea, ceva după tipul USB \\ Vid_067B & PID_2303 & REV_0300, aici îl copiați și căutați în Google sau Yandex.

Apoi faceți clic pe clic dreapta pe dispozitivul din Managerul dispozitivului și selectați Instalați driverele, indicați calea către ele și puneți-vă dacă totul este în regulă, atunci aveți pictograma va dispărea Avertizări.

Apoi, puteți utiliza deja posibilitățile portului COM, utilizând astfel de utilitare pe aparență de chit, unde selectați Serial și specificați portul COM dorit, îl puteți vedea în același manager de dispozitive.

Sper că ați învățat și ați dat seama cum să conectați portul COM USB în Windows.