Mis on COM-port ja mida saab sellega teha?

COM (sõnast communication) on kommunikatsiooniliides, mida nimetatakse ka jadaliideseks või -pordiks. COM ühenduspesa on DE-9 (vt pilt 1) ja standard on RS-232.

Pilt 1
Pilt 1. Emane ja isane DE-9 pesa. Allikas: mbedded.ninja
RS232 kontaktide tähendused
Kontakti nrNimetusFunktsioon
1DCD (Data Carrier Detect)Andmekandja tuvastamine
2RXD (Receive Data)Andmete vastuvõtmine
3TXD (Transmit Data)Andmete saatmine
4DTR (Data Terminal Ready)Terminal/arvuti on kommunikatsiooniks valmis
5GND (Ground)Maandus
6DSR (Data Set Ready)Seade on kommunikatsiooniks valmis
7RTS (Request to Send)Andmete saatmise päring
8CTS (Clear to Send)RTS päringu aktsepteerimine
9RI (Ring Indicator)Telefonihelina tuvastus

Kõige olulisemad kontaktid on 2 (RXD) ja 3 (TXD), mille kaudu toimub põhiline andmevahetus. Olgugi et RS-232 standard mõeldi algselt andmesideks üle telefoniliini, millele viitab hästi kontakt nr 9 (Ring Indicator), leidis COM-liides laia kasutust ka muude väliste seadmete ühendamiseks, nt arvutihiir, UPS, mängupult ja triipkoodilugeja. Isegi esimesed ID-kaardilugejad olid veel DE-9 pesaga, kui 2002a hakati ID-kaarte väljastama. USB-liidese tulek 1990. aastate lõpus vähendas vajadust aeglase (115,2 Kbit/s => 14 KiB/s) COM-pordi järele, mistõttu hakkas see liides 2000. aastatel järk-järgult emaplaatide tagapaneelilt kaduma, tehes ruumi kiirematele ja mugavamatele USB-pesadele (USB 1.0 = 12 Mbit/s => 1,5 MiB/s). Trükkplaadile jäeti siiski IDC10 pistikuga ühilduvad nõelkontaktid (vt pilt 2), mida saab laienduskaabliga (vt pilt 3) ühendada, et lisada DE-9 pesa arvuti tagapaneelile. COM-pordi ühendamiseks võib kasutada ka USB-to-serial (USB-RS232) adapterit (vt pilt 4), soovitatavalt FTDI või Prolific kiibistikuga, mille kasutamiseks ei ole tarvis paigaldada täiendavat draiverit.

Pilt 2
Pilt 2. Laienduskaabli kontaktid.
Pilt 3
Pilt 3. Laienduskaabel.
Pilt 4
Pilt 4. USB-to-serial adapter.

Vanadele seadmetele on sageli keeruline toimivaid draivereid leida ning need ei pruugi uuemate operatsioonisüsteemidega ühilduda. Uute arvutitega saab kasutada vaid selliseid COM-pordiga seadmeid, mille kasutamiseks ei ole vaja draiverit, vaid sellega ühenduv programm oskab seadmega ilma draiveri vahenduseta andmeid vahetada. Vanu seadmeid on kõige reaalsem tööle saada vanas Windows XP-ga masinas.

Vana veloergomeeter

Ostsin kunagi kasutatud veloergomeetri Kettler Ergoracer GT (vt pilt 5), mida sai ühendada arvutiga ja kasutada rattasõitu visualiseerivaid programme, et pedaalimine huvitavamaks muuta.

Pilt 5
Pilt 5. Veloergomeeter Kettler Ergoracer GT

Sellel ergomeetril on arvutiga ühendamiseks DE-9 pesa. Kuna mu arvuti tagapaneelil sellist pesa enam ei olnud, siis ostsin emaplaadi laienduskaabli (vt pilt 3). Paraku ei õnnestunud arvuti ja ergomeetri vahel ühendust luua. Aastaid hiljem proovisin odava USB-RS232 adapteriga uuesti, aga taas tulemusteta. Asja sügavamalt uurides selgus, et adapterites kasutatakse erinevad kiibistikke ja iga adapter ei sobigi iga seadmega. Prolific PL2303 kiibiga adapter sobis Windows 10-ga ja sain lõpuks oma voki ühendatud. Kettleri programm enam Windows 10-ga ei käivitunud, aga leidsin avatud lähtekoodiga Java rakenduse JErgometer, mis võimaldab ergomeetrist andmeid lugeda ja treeningpäevikut pidada.

Miks laienduskaabel ei töötanud?

Katsetasin hiljuti COM-pordiga ID-kaardilugejat, mis ühe arvutiga toimis, aga selle masinaga mitte, millega üritasin varem veloergomeetrit ühendada. Üritasin välja selgitada, miks mu vana arvuti ühtegi COM-pordiga seadet ei tunnista. Asja uurides sain teada, et kasutusel on kaks erinevat kontaktide paigutust [pinoutguide]:

  1. DTK / Intel: paaritud kontaktid (1,3,5,7,9) on pikemas reas ja paaris kontaktid (2,4,6,8) on lühemas reas.
  2. AT / EVEREX: kontaktid on paigutatud järjest - kõigepealt pikem rida (1,2,3,4,5), seejärel lühem rida (6,7,8,9), nagu pildil nr 1.

Kontaktide paigutuse saab välja selgitada multimeetriga, kui mõõta takistust (piiksurežiimis) korpuse ja maanduskontakti (5 - GND) vahel:

Tuvastasin enda arvuti emaplaadilt Intel paigutuse. Kuna teisel arvutil on AT kontaktide paigutus, mis tundis ID-kaardilugeja ära, siis kahtlustasin, et probleem võib olla standardi erinevuses. Selle lahendamiseks avasin laienduskaabli DE-9 pesa (vt pilt 6), et tõsta juhtmed ringi.

Ühendusi vaadates selgus, et laienduskaabli juhtmed on joodetud vaheldumisi ülemisele ja alumisele reale (vt pilt 7), mis sisuliselt AT/EVEREX → DTK/INTEL üleminek.

Juhtmete paigutust on võimalik tuvastada ka ilma DE-9 pesa avamata – DTK/Intel paigutuse korral on juhe nr 1 märgistatud punase triibuga (vt pilt 7), mis AT/EVEREX standardi järgi on märgistatud punase punktiirjoonega [scantips]

Kuna minu emaplaadil oli juba algselt DTK/Intel paigutus (9 7 5 3 1 | 8 6 4 2), siis laienduskaabel tõstis need kontaktid veel ühe korra ringi, tekkis täiesti ebastandardne paigutus (8 4 9 5 1 | 6 2 7 3), mis oligi kurja juur. Probleemi lahendamiseks jootsin juhtmed AT/EVEREX standardi järgi ümber (vt pilt 8), et kontaktid paikneks samamoodi nagu emaplaadil (järjest).

Pilt 6
Pilt 6. Lahtivõetud DE-9 pesa.
Pilt 7
Pilt 7. DTK/Intel juhtmepaigutus DE-9 pesas.
Pilt 8
Pilt 8. Ümberjoodetud juhtmed DE-9 pesas (AT/EVEREX)

Ümberjootmise tulemusel tundis arvuti lõpuks ID-kaardilugeja ära (SCM SCR131), millele õnnestus isegi draiver leida. Katse näitas, et COM-port toimib mõlema standardiga.

Milleks kasutatakse COM-porti tänapäeval?

Tänapäeval leiavad COM-pordid kasutust peamiselt elektroonikahuviliste, inseneride ja programmeerijate seas. Arendusplaatidel (nt Arduino, ESP32, STM32, Raspberry Pi Pico) kasutatakse mikrokontrolleri- ja arvutivaheliseks suhtluseks UART-protokolli. See on sageli ainus võimalus saada silumiseks vajalikku infot seadme siseelust, kui seadmel puudub ekraan. Kuna RS232 kui ka UART toimib tarkvaralisel tasemel sarnaselt, siis tekkis mõte, et prooviks arendusplaadi UART TX kontakti ühendada arvuti RS232 RXD kontakti külge. Kui arendusplaadid kasutavad 3.3V või 5V pinget, siis ühe lauaarvuti COM-pordi TXD kontaktilt mõõtsin 10,77V ja teisel arvutil 11,35V. Kuna RXD kanal toimib sisendina ja pinget seal ei ole, siis tundus eksperiment ohutu. Katse käigus ei ilmunud PuTTY konsoolile teksti, mille väljastamiseks oli arendusplaat programmeeritud – selle asemel tuli mingi muu pläust. RS232 ja UART erinevuse kohta uurides leidsin ka sellele küsimusele vastuse [sparkfun] – andmete kodeerimise loogika on riistvaralisel tasandil erinev:

BittRS232UART
0+3V…+15V (positiivne pinge)0V
1-3V…-15V (negatiivne pinge)+3.3V / +5V

Suurema elektroonikahuvi korral saaks pingemuunduri abil probleemi ära lahendada, aga oluliselt lihtsam on kasutada USB-UART adapterit.

COM-pordist andmete vastuvõtmine

COM-pordi kaudu edastatud teksti kättesaamiseks tuleb teha järgmised sammud:

  1. Selgitada välja COM-pordi number. Emaplaadil asuv füüsiline port on tavaliselt COM1 ja virtuaalsed USB-liidesega COM-pordid algavad tavaliselt numbrist COM6, kuna väiksemad numbrid on operatsioonisüsteemi poolt reserveeritud. Täpse numbri leiab Windowsis Device Manager grupist "Ports (COM & LPT)".
  2. Tuvastada seadme andmeedastuskiirus (baud rate). Paljudel seadmetel on vaikimisi kiiruseks 9600 või 115200.
  3. Ühendada TX kontakt vastuvõtva seadme RX kontaktiga ning mõlema seadme GND omavahel.
  4. Käivitada tarkvara PuTTY.
    • Valida connection type: Serial.
    • Veenduda, et COM pordi nr (Serial line) ja andmeedastuskiirus (Speed) on õiged.
    • Vajutada nuppu Open.
    • Seadmest saadetud info hakkab ilmuma ekraanile.

Avaldatud: 04.08.2026

←Tagasi arvutijutu pealehele