com port connector. COM port (serial port)

Noong una, nang lumitaw sila mga personal na computer, kasama nila ang ilang hindi masyadong sopistikado, ngunit medyo matagumpay na gumagana kasama ang lahat ng iba pang pagpuno, mga port o mga interface ng circuit. Ang salitang port ay tumutukoy sa paraan ng paglilipat ng data. Para itong memory cell. Ang impormasyon lamang ang nakasulat sa RAM at nananatili doon hangga't kailangan ito ng ilang program, hanggang sa iproseso ito ng program (o ang program mismo ay kailangan pa rin ng isang tao sa computer).

Port at memorya

Iyon ay, babasahin ng programa ang data mula sa memorya papunta sa processor, gumawa ng isang bagay dito, maaaring makatanggap ng ilang bagong data mula sa impormasyong ito, na isusulat nito sa ibang lokasyon. O ang ibinigay mismo ay muling isusulat sa ibang lugar. Sa anumang kaso, sa memorya, ang impormasyon na minsan nang naitala ay maaaring basahin o mabura. Ang selda ay parang dibdib na nakatayo sa dingding. At ang lahat ng memorya ay binubuo ng isang cell, ang bawat cell ay may sariling address. Katulad ng mga dibdib na magkasunod na nakatayo sa dingding sa silong ng isang kuripot na kabalyero.

Well, maaari mo ring isipin ang isang port bilang isang cell. Tanging tulad ng isang cell sa likod ay may bintana na humahantong sa isang lugar sa likod ng dingding. Maaari kang sumulat ng impormasyon dito, at dadalhin ito ng impormasyon at lilipad sa labas ng bintana, bagaman sa loob ng ilang oras mananatili ito sa cell sa parehong paraan tulad ng sa isang regular na cell random access memory.

O vice versa, ang impormasyon ay maaaring "lumipad" sa port cell mula sa window. Makikita ito ng processor at babasahin ang bagong impormasyong ito na lalabas. At gagawin niya ito - muling isusulat niya ito sa isang lugar, muling kalkulahin kasama ang ilang iba pang data. Maaari pa itong isulat sa ibang cell. O sa isa pang cell-port, kung gayon ang impormasyong ito na natanggap sa pamamagitan ng unang port ay maaaring "lumipad palayo" sa window ng pangalawang port - mabuti, ganyan ang pagpapasya ng processor. Mas tiyak, ang programa na sa sandaling ito ay nag-uutos sa processor at pinoproseso ang data na naitala sa memorya at nagmumula sa mga port.

Simple at maganda. Ang mga port na ito ay agad na tinawag - mga input-output port. Sa pamamagitan ng ilan sa kanila, ang data ay ipinadala sa isang lugar, sa pamamagitan ng iba, ito ay natanggap mula sa isang lugar.

Well, pagkatapos ay ang paggalaw ay nagsisimula sa isang bilog. May isang device, at may isa pa. At ngayon ay mayroong isang chain ng mga character, ang bawat isa ay binubuo ng mga indibidwal na binary bits, at ang chain na ito ay kailangang maipadala. Paano mag transfer? Maaari mong agad na magpadala ng isang buong character sa isang linya ng 8 wire - isang wire = isang bit, pagkatapos ay ang code ng isa pa, pagkatapos ay isang pangatlo, at iba pa hanggang sa maipadala mo ang buong chain.

At posible na ibuka ang bawat bit hindi sa espasyo (sa pamamagitan ng mga wire), ngunit sa oras: unang magpadala ng isang bit ng simbolo, pagkatapos ay ang pangalawa, at iba pa walong beses. Ito ay malinaw na sa pangalawang kaso ang ilang mga karagdagang paraan ay kinakailangan upang ibuka ang mga simbolo sa ganitong paraan sa oras.

Parallel at serial

At ang bilis ng paghahatid ay magkakaiba:

Ito ay lumiliko na ang bawat pagpipilian ay may mga pakinabang nito, ngunit din ang mga disadvantages nito.

  1. Mas mabilis na magpadala ng walong bits sa isang pagkakataon (iyon ay, byte byte), ngunit kailangan mo ng walong beses na higit pang mga wire
  2. Ang pagpapadala ng paisa-isa ay nangangailangan lamang ng isang paghahatid ng impormasyon, ngunit ito ay magiging 8 beses na mas mabagal.

Kaya sa unang kaso tinawag nila ang transmission parallel, at sa pangalawang kaso - serial.

Port Interface

At ang buong sistema ng naturang paghahatid - sa isang kaso sa ganitong paraan, sa isa pa - tulad nito, tinatawag na interface. Ang isang interface ay parallel, ang isa ay serial. Halos parehong bagay, mga port, isang parallel, ang isa pang serial.

Paano naiiba ang konsepto ng port sa konsepto ng "interface"? Sa modernong teknolohiya, ang mga salita ay hindi lamang lumilitaw, sila ay lumalaki at tumatanggap ng "edukasyon." At tulad ng sa mga tao, maaari silang maging mga makitid na espesyalista, o maaari silang maging "mga baguhan." Ito ay isang tipikal na salita ng amateur - "interface". Dahil ito ay "isang plug para sa bawat butas." Ang mga interface ay:

At ang kahulugan ng salita ay isang bagay sa pagitan ng isang bagay. Inter - sa pagitan, mukha - mukha. Ito ay naging maganda, kaya't ito ay ginagamit kahit saan. Halimbawa, ang user interface ng Windows system ay ang on-screen na mukha ng system, na idinisenyo upang makipag-usap sa isang tao.

At ito ay binubuo ng isang larawang iginuhit sa screen + mga panuntunan para sa pagpapatakbo ng bawat elemento ng larawan (halimbawa, mag-click sa isang pindutan sa screen gamit ang mouse - ito ay pinindot) + mga panuntunan para sa tugon ng bawat elemento at ang buong sistema sa kabuuan + lahat ng hardware na nakikilahok sa diyalogo (mouse, keyboard, screen) + lahat ng mga program na nagbibigay ng diyalogo kapwa mula sa gilid ng buong system at mula sa gilid ng mga indibidwal na device (driver).

Hindi nila binanggit ang tao, ngunit dahil bahagi din siya ng pakikipag-ugnayan, dapat siyang magkaroon ng kaalaman at kasanayan upang magtrabaho sa system, at para dito mayroong mga programa sa pagsasanay, mga sistema ng tulong... At mula sa lahat ng ito ay isang maganda at bumangon ang malawak na salita: interface.

Sa aming tema, ang interface ay nangangahulugan ng mga bagay na medyo mas simple.

Ang mga ito ay hardware + software transfer means + transfer rules. Hardware - naiintindihan. Ngunit ang software sa mga computer at sa modernong komunikasyon ay palaging at saanman naroroon. Nangyayari pa nga ito: una, ang isang bagay na gumagana ay nilikha sa ilang base ng hardware, na hindi agad naipatupad, ngunit gamit ang mga espesyal na nakasulat na programa. At lahat ng mga programa ay napapasadya.

At unti-unti, habang gumagana ang bagong function (o functional block), ang mga program na "gumawa" nito - at naiiba sila sa hardware dahil madali silang mai-configure - ay dinadala sa ilang estado ng pinakamainam na pagsasaayos. Na hindi na kailangan pang i-configure. At pagkatapos ay ang programa sa bagong bersyon ng functional block ay maaaring mapalitan ng isang hardware-based na kapalit para sa bahagi ng software. Halimbawa, "tahiin" ang isang mahusay na gumagana well-tuned na programa sa permanenteng memorya. O makabuo ng isang espesyal na lohikal na circuit na gagawa ng eksaktong parehong bagay na ginawa ng isang mahusay na na-configure na programa - nang hindi umiiwas at kung minsan ay nakakalimutan ang lahat ng mga kapaki-pakinabang na setting nito.

Iyon ang dahilan kung bakit ang interface ay madalas na tinatawag na ito - software at hardware.

Kinakailangan ang mga panuntunan sa paghahatid upang matiyak na ang parehong mga bagay ay naiintindihan (at naproseso) sa parehong paraan sa magkabilang dulo ng pakikipag-ugnayan. Pinag-uusapan ba natin ang tungkol sa impulse transmission? Nangangahulugan ito na ang mga impulses ay dapat na mahigpit na magkapareho.

Halimbawa, upang ang 1 bit ay dumating sa anyo ng +12 o +15 volts ng pagbaba ng boltahe mula sa zero. At upang ito ay nasa anyo ng isang rektanggulo, o isang matalim na pagsabog - ang rurok na kung saan ay dapat na hindi bababa sa, well, + 5 volts, at ito ay hindi talagang kinakailangan upang ipakilala ang isang itaas na limitasyon, halimbawa. Ito ay dahil kapag nagpapadala ng mga impulses sa ilang distansya, ang mga signal ng kuryente ay may posibilidad na humina at "magpahid."

Kung mahigpit na 12 volts ang ipinadala mula sa isang dulo, kung gayon ang 3 volts ay maaaring umabot sa isa pa, at ito ay maaaring bigyang-kahulugan ng sistema ng pagtanggap bilang ingay sa linya, at ang ipinadala na impormasyon ay mawawala.

Ang kahulugan ng mga impulses ay dapat ding maunawaan sa parehong paraan. At ang mga impulses ay maaaring impormasyon, serbisyo, pag-synchronize. At sa pangkalahatan, halimbawa, hindi mga impulses, ngunit pare-pareho lamang ang boltahe. Na maaaring gamitin sa kabilang dulo upang paganahin ang isang maliit na aparato.

At ang mga wire mismo na tinalakay sa simula ay dapat ding maunawaan nang pantay. Dito dapat sabihin kaagad na hindi mangyayari na mayroon lamang isang wire. Kahit na ang telepono ay may dalawang wire sa cable, ngunit karaniwang ang cable ay dapat na may apat. At ang mga interface ng data ay palaging may ilang mga conductor. Ang ilan sa kanila ay impormasyon, ang ilan ay serbisyo. At ito ang dapat na kilalanin nang pantay sa magkabilang dulo ng pakikipag-ugnayan. At ang mga wire ay kinikilala bilang? Sa pamamagitan ng kulay, kung nasa cable at ayon sa lokasyon, kung nasa mga contact ng koneksyon.

Ang port ay isang simpleng salita at hindi rin lubos na malabo. Ngunit ang kahulugan ay magkatulad: na ang isang bagay ay ikinarga sa isang bagay at ipinadala sa isang lugar. O vice versa, isang bagay na tumatanggap ng isang bagay at naglalabas ng isang bagay mula dito. Ang kahulugan ay halos kapareho ng interface ng hardware-software, ngunit kahit papaano ay mas maigsi. At mas mahigpit, tulad ng sa hukbong-dagat ("Sasabihin nila sa iyo - huwag makipagtalo ... ngunit hindi kami nagtatalo ..."). Tanging ang aming mga signal ay naglalakbay hindi sa pamamagitan ng dagat, ngunit sa pamamagitan ng cable.

Pinout ng COM port connectors

Ang pinout ay walang koneksyon na may pagpapako sa krus, bagaman, tulad ng mga wire na malayang tumatakbo sa isang kaluban ng cable, ang mga ito ay kinakalas sa mga gilid at matigas na ibinebenta sa kanilang mga pin, katulad ng pagpapako sa krus. Pin, sa Ingles na "pin", pin, samakatuwid ay pinout, ang salita ay isa nang computer-communications "pro-English" jargon. Nangangahulugan ito na i-wire ang mga wire sa mga pin sa connector.

Ang hugis ng connector, ang pagkakasunud-sunod ng mga kable (pin) sa loob nito, ang layunin ng bawat pin, pati na rin ang mga rating ng boltahe at ang kahulugan ng mga signal sa bawat isa - ito ay bahagi ng interface. Karaniwan ang lahat ng impormasyong ito ay pinagsama-sama sa isang hiwalay na dokumento na tinatawag na isang detalye ng port. Napakasimple at malinaw na isang pahinang tanda. Sa iba pang mga uri ng mga interface, ang isang bagay na tulad nito ay maaaring tinatawag na "protocol." At dito lang nila itong tinatawag na "pinout".

Mga serial COM port

Ang mga COM port ng isang computer ay isang long-range na koneksyon sa pagitan ng isang computer complex. Hindi tulad ng mga parallel na port at cable na humantong sa "mabigat" na mga aparato - mga printer, scanner, Com port na nakakonekta sa mga "light" unit sa computer - isang mouse, isang modem. Ang unang computer-to-computer interface (sa pamamagitan ng "null modem"). Dagdag pa, kailan kumalat ang mga local network, at ang mga daga ay nagsimulang ikonekta sa pamamagitan ng parehong connector bilang keyboard - port ps/2 (pe-es-in kalahati) - ang com port ay kahit papaano ay nakalimutan.

Ang muling pagbabangon ay dumating sa pagdating ng USB serial interface. Kaya ito ay naging isang paggalaw sa isang bilog. Ngayon sa USB mahahanap mo, bilang karagdagan sa mga flash drive, USB mice at USB keyboard. Mga printer, scanner, modem - lahat ng mga peripheral ay nasa USB na ngayon, nakalimutan ko na ang tungkol sa makapal at solidong parallel na LTP cable, na kailangang i-screw sa bawat panig na may 2 bolts. At mayroong dalawang signal wire sa mga USB na ito (sa totoo lang, mayroong isang channel, isang direktang signal, ang isa ay pareho - kabaligtaran) at dalawa - power supply at pabahay.

Mayroong ilang mga nakaraang serial COM port. Ang pinakamaliit - at ang pinakasikat Isang 9-pin port (D9), kung saan nakakonekta ang karamihan sa mga device: mice, modem, null-modem cable. Ang mga contact ay nakaayos sa dalawang hanay, 5 at 4 sa isang hilera, na lumilikha ng isang trapezoid. Kaya ang pangalan D9. Sa "ina" ang pagnunumero ay mula kaliwa hanggang kanan at mula sa itaas hanggang sa ibaba:

1 2 3 4 5

COM port wiring, port RS232, 9 pin.

Pagtatalaga Uri Paglalarawan
1 DCD Pagpasok Mataas na antas mula sa modem kapag natanggap nito ang carrier modem partner
2 RxD Pagpasok Mga papasok na pulso ng data
3 TxD Lumabas Mga papalabas na pulso ng data
4 DTR Lumabas Ang isang mataas na antas (+12V) ay nagpapahiwatig na ang computer ay handa nang tumanggap ng data. Ginamit ng nakakonektang mouse ang pin na ito bilang pinagmumulan ng kuryente
5 GND Heneral Lupa
6 DSR Pagpasok Handa na ang device na magpadala ng data
7 RTS Lumabas Kahandaan sa pagtugon ng partner device
8 CTS Pagpasok Kahandaang tumanggap ng data mula sa isang kasosyo
9 R.I. Pagpasok Isang signal na nagpapaalam sa computer tungkol sa isang papasok na tawag na natanggap ng modem mula sa linya ng komunikasyon

Kasama ng parallel port, ang COM port, o serial port, ay isa sa mga tradisyonal na computer input/output port, na ginamit sa mga unang PC. Kahit na ang COM port ay may limitadong paggamit sa modernong mga computer, gayunpaman, ang impormasyon tungkol dito ay maaaring maging kapaki-pakinabang sa maraming mga gumagamit.

Ang serial port, tulad ng parallel port, ay lumitaw nang matagal bago ang pagdating ng mga personal na computer ng IBM PC architecture. Sa mga unang personal na computer, ginamit ang COM port upang ikonekta ang mga peripheral na device. Gayunpaman, ang saklaw ng aplikasyon nito ay medyo naiiba sa saklaw ng parallel port. Kung ang parallel port ay pangunahing ginamit upang kumonekta sa mga printer, kung gayon ang COM port (sa pamamagitan ng paraan, ang prefix na COM ay isang pagdadaglat lamang para sa salitang komunikasyon) ay karaniwang ginagamit upang gumana sa mga aparatong telekomunikasyon, tulad ng mga modem. Gayunpaman, maaari kang kumonekta sa port, halimbawa, isang mouse, pati na rin ang iba pang mga peripheral na aparato.

COM port, pangunahing mga lugar ng aplikasyon:

  1. Pagkonekta ng mga terminal
  2. ~ panlabas na mga modem
  3. ~ mga printer at plotter
  4. ~ daga
  5. Direktang koneksyon sa pagitan ng dalawang computer

Sa kasalukuyan, ang saklaw ng COM port ay makabuluhang nabawasan dahil sa pagpapakilala ng isang mas mabilis at mas compact, at, sa pamamagitan ng paraan, din serial, USB interface. Ang mga panlabas na modem na idinisenyo upang kumonekta sa isang port, pati na rin ang "COM" na mga daga, ay halos hindi na ginagamit. At bihira na ang sinuman ngayon ay nagkokonekta ng dalawang computer gamit ang isang null modem cable.

Gayunpaman, ginagamit pa rin ng ilang espesyal na device ang serial port. Mahahanap mo ito sa maraming motherboard. Ang katotohanan ay, kumpara sa USB, ang isang COM port ay may isang mahalagang kalamangan - ayon sa RS-232 serial data transmission standard, maaari itong gumana sa mga device sa layo na ilang sampu-sampung metro, habang ang saklaw ng isang USB cable ay karaniwang limitado sa 5 metro.

Ang prinsipyo ng pagpapatakbo ng isang serial port at ang pagkakaiba nito mula sa isang parallel

Hindi tulad ng parallel (LPT) port, ang serial port ay nagpapadala ng data nang paunti-unti sa isang linya, sa halip na sa maraming linya nang sabay-sabay. Ang mga pagkakasunud-sunod ng mga bit ay pinagsama-sama sa mga serye ng data, na nagsisimula sa isang panimulang bit at nagtatapos sa isang stop bit, pati na rin ang mga parity bit na ginagamit para sa pagsuri ng error. Dito nagmula ang isa pang pangalan sa Ingles, na mayroong serial port - Serial Port.

Ang serial port ay may dalawang linya kung saan ipinapadala ang aktwal na data - ito ay mga linya para sa paglilipat ng data mula sa terminal (PC) patungo sa device ng komunikasyon at pabalik. Bilang karagdagan, mayroong ilang higit pang mga linya ng kontrol. Ang Serial port ay pinaglilingkuran ng isang espesyal na chip ng UART, na may kakayahang suportahan ang medyo mataas na rate ng paglilipat ng data, na umaabot sa 115,000 baud (bytes/s). Gayunpaman, nararapat na tandaan na ang aktwal na bilis ng pagpapalitan ng impormasyon ay nakasalalay sa parehong mga aparatong pangkomunikasyon. Bilang karagdagan, ang mga function ng UART controller ay kinabibilangan ng pag-convert ng parallel code sa serial code at vice versa.

Ang port ay gumagamit ng medyo mataas na boltahe na mga de-koryenteng signal - hanggang sa +15 V at -15 V. Ang lohikal na zero level ng serial port ay +12 V, at ang lohikal na isang antas ay -12 V. Ang ganitong malaking pagbaba ng boltahe ay nagpapahintulot sa amin na ginagarantiyahan ang isang mataas na antas ng kaligtasan sa ingay ng ipinadalang data. Sa kabilang banda, ang matataas na boltahe na ginagamit sa Serial port ay nangangailangan ng mga kumplikadong solusyon sa circuit. Ang pangyayaring ito ay nag-ambag din sa pagbaba ng katanyagan ng daungan.

Serial interface RS-232

Ang pagpapatakbo ng serial port sa isang PC ay batay sa pamantayan sa paglilipat ng data para sa mga serial device na RS-232. Inilalarawan ng pamantayang ito ang proseso ng pagpapalitan ng data sa pagitan ng isang aparatong telekomunikasyon, tulad ng isang modem, at isang terminal ng computer. Ang pamantayang RS-232 ay tumutukoy sa mga de-koryenteng katangian ng mga signal, ang kanilang layunin, tagal, pati na rin ang mga sukat ng mga konektor at pinout para sa kanila. Gayunpaman, inilalarawan lamang ng RS-232 ang pisikal na antas ng proseso ng paglilipat ng data at hindi nauugnay ang mga protocol ng transportasyon na ginamit, na maaaring mag-iba depende sa kagamitan sa komunikasyon at software na ginamit.

Ang pamantayang RS-232 ay nilikha noong 1969, at ang pinakabagong bersyon nito, ang TIA 232, ay inilabas noong 1997. Ang RS-232 ay itinuturing na ngayon na hindi na ginagamit, ngunit sinusuportahan pa rin ito ng karamihan sa mga operating system.

Sa modernong mga computer, ang Serial port connector ay isang 9-pin DB-9 male connector, bagama't ang RS-232 standard ay naglalarawan din ng 25-pin DB-25 connector, na kadalasang ginagamit sa mga lumang computer. Ang DB-9 connector ay karaniwang matatagpuan sa PC motherboard, bagama't sa mas lumang mga computer ay maaaring ito ay matatagpuan sa isang espesyal na multicard na ipinasok sa isang expansion slot.

9-pin DB-9 socket sa motherboard

DB-9 connector sa cable ng device na nakakonekta sa port

Hindi tulad ng isang parallel port, ang mga konektor sa magkabilang panig ng isang two-way serial cable ay magkapareho. Bilang karagdagan sa mga linya para sa pagpapadala ng data mismo, ang port ay naglalaman ng ilang mga linya ng serbisyo kung saan ang impormasyon ng kontrol ay maaaring maipadala sa pagitan ng terminal (computer) at ng telecommunications device (modem). Bagama't ayon sa teorya, tatlong channel lang ang kailangan para gumana ang serial port - pagtanggap ng data, paghahatid ng data at ground, ipinakita ng pagsasanay na ang pagkakaroon ng mga linya ng serbisyo ay ginagawang mas mahusay, maaasahan at, bilang resulta, mas mabilis ang komunikasyon.

Layunin ng Serial port DB-9 connector lines ayon sa RS-232 at ang kanilang mga sulat sa mga contact ng DB-25 connector:

Makipag-ugnayan sa DB-9 Ingles na pangalan pangalang Ruso Makipag-ugnayan sa DB-25
1 Data Carrier Detect Natukoy ang carrier 8
2 Magpadala ng Data Ipinadalang data 2
3 Tumanggap ng Data Natanggap na data 3
4 Handa na ang Data Terminal Paghahanda sa terminal 20
5 Lupa Lupa 7
6 Handa na ang Data Set Kahandaan ng transmiter 6
7 Kahilingan na Ipadala Kahilingan na magpadala ng data 4
8 I-clear Upang Ipadala Pinapayagan ang paglipat ng data 5
9 Tagapahiwatig ng singsing Tagapagpahiwatig ng singsing 22

Configuration at mga pagkagambala

Dahil ang isang computer ay maaaring magkaroon ng ilang serial port (hanggang 4), ang system ay naglalaan ng dalawang hardware interrupts para sa kanila - IRQ 3 (COM 2 at 4) at IRQ 4 (COM 1 at 3) at ilang BIOS interrupts. Maraming mga programa sa komunikasyon, pati na rin ang mga built-in na modem, ang gumagamit ng mga interrupt at ang address space ng mga COM port para sa kanilang trabaho. Sa kasong ito, hindi totoong mga port ang karaniwang ginagamit, ngunit ang tinatawag na mga virtual port, na ginagaya ng mismong operating system.

Tulad ng maraming iba pang mga bahagi ng motherboard, ang mga parameter ng COM port, lalo na ang mga halaga ng pagkagambala ng BIOS na tumutugma sa mga pagkagambala ng hardware, ay maaaring i-configure sa pamamagitan ng interface ng BIOS Setup. Para dito, ginagamit ang mga opsyon sa BIOS tulad ng COM Port, Onboard Serial Port, Serial Port Address, atbp.

Konklusyon

Ang PC serial port ay kasalukuyang hindi malawakang ginagamit na paraan ng input/output. Gayunpaman, dahil mayroong isang malaking halaga ng kagamitan, pangunahin para sa mga layunin ng telekomunikasyon, na idinisenyo upang gumana sa isang serial port, at dahil din sa ilan sa mga pakinabang ng RS-232 serial data protocol, ang serial interface ay hindi pa dapat isulat. bilang isang ganap na hindi napapanahong panimulang arkitektura ng personal na computer.

THR - transmiter intermediate data register(isulat lamang) Ang data na nakasulat sa rehistro ay ililipat sa output shift register (kapag ito ay libre), kung saan ito ay magiging output kapag ang enable signal ay naroroon. CTS. Ang bit 0 ay ipinadala (at natanggap) muna. Kung ang haba ng pagpapadala ay mas mababa sa 8 bits, hindi papansinin ang pinakamahalagang bits.
RBR - tumanggap ng data buffer register(read only) Ang data na natanggap ng input shift register ay inilalagay sa rehistro RBR, mula sa kung saan mababasa sila ng processor. Kung sa oras na ang susunod na character ay natanggap, ang nauna ay hindi pa nababasa mula sa rehistro, isang overflow error ay naitala. Kapag ang haba ng pagpapadala ay mas mababa sa 8 bits, ang pinakamahalagang bits sa rehistro ay may zero na halaga.
DLL - frequency divider mababang byte register.
DLM - frequency divider mataas na byte register. Ang divisor ay tinutukoy ng formula D=115200/V, kung saan ang V ay ang bilis ng paghahatid, bit/s. Ang dalas ng input clock na 1.8432 MHz ay ​​hinati sa isang partikular na salik upang makagawa ng 16 na beses ang rate ng data.
IER - matakpan paganahin ang pagpaparehistro. Ang kaunting halaga ng isa ay nagbibigay-daan sa isang interrupt mula sa kaukulang pinagmulan.
Magrehistro ng mga bit na takdang-aralin IER:
* bits =0 - hindi ginagamit;
* bit 3 - Mod_IE- sa pamamagitan ng pagbabago ng estado ng modem (alinman sa mga linya CTS, DSR, RI, DCD);
* bit 2 - RxL_IE- dahil sa line break/error;
* bit 1 - TxD_IE- sa pagkumpleto ng paglipat;
* bit 0 - RxD_IE- sa pagtanggap ng isang character (sa FIFO mode - timeout interruption).
IIR - interrupt identification register at FIFO mode sign(para lamang sa pagbabasa). Upang gawing simple ang pagsusuri ng software, inaayos ng UART ang mga panloob na kahilingan sa interrupt ayon sa isang apat na antas na sistema ng priyoridad. Priyoridad na pagkakasunud-sunod (pababa): katayuan ng linya, pagtanggap ng character, pagpapalabas ng rehistro ng transmitter, status ng modem. Kapag naganap ang mga kondisyon ng pagkaantala, itinuturo ng UART ang pinakamataas na priyoridad na pinagmulan hanggang sa ma-clear ito ng kaukulang operasyon. Pagkatapos lamang nito ay maglalabas ng kahilingan na nagsasaad ng susunod na pinagmulan. Ang layunin ng mga bit ng rehistro ay inilarawan sa ibaba: IIR.
* Bits - isang tanda ng FIFO mode:
11-mode na FIFO 16550A;
10 - FIFO 16550 mode;
00 - normal.
* Bits - hindi ginagamit.
* Bit 3 - makatanggap ng timeout interrupt sa FIFO mode (may mga character na babasahin sa buffer).
* Bits - ang dahilan ng pagkaantala na may pinakamataas na priyoridad (sa normal, hindi FIFO mode):
11 - error/line break, ang pag-reset ay isinasagawa sa pamamagitan ng pagbabasa ng line status register;
10 - natanggap na simbolo, ang pag-reset ay isinasagawa sa pamamagitan ng pagbabasa ng data;
01 - ipinadala ang character (rehistro THR walang laman), ang pag-reset ay isinasagawa sa pamamagitan ng pagsulat ng data;
00 - pagbabago ng estado ng modem; Ang pag-reset ay isinasagawa sa pamamagitan ng pagbabasa ng modem status register.
* Ang Bit 0 ay isang senyales ng isang hindi na-serve na kahilingan sa interrupt (1 - walang kahilingan, 0 - mayroong isang kahilingan).
Sa FIFO mode, ang sanhi ng pagkaantala ay tinutukoy ng mga bit.
* O11 - error/line break. Isinasagawa ang pag-reset sa pamamagitan ng pagbabasa sa rehistro ng katayuan ng linya.
* 010 - tinanggap ang character. Isinasagawa ang pag-reset sa pamamagitan ng pagbabasa ng rehistro ng data ng receiver
* 110 - tagapagpahiwatig ng timeout (sa isang 4 na beses na agwat ng oras ng character, walang isang character ang nailipat o natanggap, bagama't mayroong kahit isa sa buffer). Isinasagawa ang pag-reset sa pamamagitan ng pagbabasa ng rehistro ng data ng receiver.
* 001 - magparehistro THR walang laman Isinasagawa ang pag-reset sa pamamagitan ng pagsulat ng data.
* 000 - pagbabago ng estado ng modem ( CIS, DSR, RI o DCD). Ang pag-reset ay isinasagawa sa pamamagitan ng pagbabasa ng rehistro MSR.
FCR - rehistro ng kontrol ng FIFO(para sa pag-record lamang). Ang layunin ng mga bit ng rehistro ay inilarawan sa ibaba: FCR:
* Bits - ITL(Interrupt Trigger Level) - FIFO buffer fill level kung saan nabuo ang isang interrupt:
00 - 1 byte (default);
01 - 4 byte;
10 - 8 byte;
11 - 14 byte.
*Ang mga bit ay nakalaan.
* Bit 3 - paganahin ang mga pagpapatakbo ng DMA.
* Bit 2 - RESETTF(I-reset ang Transmitter FIFO) - i-reset ang FIFO transmitter counter (sa pamamagitan ng pagsulat ng isa; ang shift register ay hindi na-reset).
* Bit 1 - RESETRF(I-reset ang Receiver FIFO) - i-reset ang FIFO receiver counter (sa pamamagitan ng pagsulat ng isa; ang shift register ay hindi na-reset).
* Bit 0 - TRIFFOE(Transmit And Receive FIFO Enable) - paganahin (ayon sa unit) FIFO mode para sa transmitter at receiver. Kapag nagpapalit ng mode, awtomatikong iki-clear ang mga buffer ng FIFO.
LCR - rehistro ng kontrol ng linya(mga setting ng parameter ng channel). Ang layunin ng mga bit ng rehistro ay inilarawan sa ibaba: LCR.
* Bit 7 - DLAB(Divisor Latch Access Bit) - kinokontrol ang access sa frequency divider.
* Bit 6 - BRCON(Break Control) - bumubuo ng line break (nagpapadala ng mga zero) kapag BRCON=1.
* Bit 5 - STICPAR(Sticky Parity) - sapilitang pagbuo ng parity bit:
0 - ang check bit ay nabuo alinsunod sa parity ng simbolo ng output;
1 - pare-pareho ang halaga ng control bit: kailan EVENPAR=1 - zero, may EVENPAR=0 - walang asawa.
* Bit 4 - EVENPAR(Even Parity Select) - pagpili ng uri ng kontrol: 0 - odd, 1 - even.
* Bit 3 - PAREN(Parity Enable) - control bit resolution:
1 - pinagana ang control bit (parity o pare-pareho);
0 - hindi pinagana ang control bit.
* Bit 2 - STOPB(Stop Bits) - bilang ng mga stop bit:
0 - 1 stop bit;
1 - 2 stop bits (para sa isang 5-bit code, ang stop bit ay magiging 1.5 bits ang haba).
* Bits - SERIALDB(Serial Data Bits) - bilang ng data bits:
00 - 5 bits;
01-6 bits;
10 - 7 bits;
11 - 8 bits.
MCR - rehistro ng modem control. Ang layunin ng mga bit ng rehistro ay inilarawan sa ibaba: MCR.
* Bits =0 - nakalaan.
* Bit 4 - LME(Paganahin ang Loopback Mode) - paganahin ang diagnostic mode:
0 - normal na mode;
1 - diagnostic mode (tingnan sa ibaba).
* Bit 3 - I.E.(Interrupt Enable) - pagpapagana ng mga interrupt gamit ang isang panlabas na output OUT2 MSR.7:
0 - ang mga pagkagambala ay hindi pinagana;
1 - pinagana ang mga interrupt.
* Bit 2 - OUT1C(OUT1 Bit Control) - kontrol ng output signal 1 (hindi ginagamit); sa diagnostic mode ito ay pumapasok sa input MSR.6.
* Bit 1 - RTSC(Request To Send Control) - kontrol sa output RTS; sa diagnostic mode ito ay pumapasok sa input MSR.4:
0 - aktibo (-V);
1 - passive (+V).
* Bit 0 - DTRC(Data Terminal Ready Control) - kontrol sa output DTR; sa diagnostic mode ito ay pumapasok sa input MSR.5:
0 - aktibo (-V);
1 - passive (+V).
LSR - rehistro ng katayuan ng linya(mas tiyak, ang estado ng transceiver). Ang layunin ng LSR register bits ay inilarawan sa ibaba.
* Bit 7 - FIFOE(FIFO Error Status) - error sa natanggap na data sa FIFO mode (ang buffer ay naglalaman ng hindi bababa sa isang character na natanggap na may error sa format, parity error, o break). Sa non-FIFO mode ito ay palaging 0.
* Bit 6 - TUKSO(Transmitter Empty Status) - walang laman ang transmitter register (walang data na maipapadala sa alinman sa shift register o buffer registers THR o FIFO).
* Bit 5 - TATLO(Transmitter Holding Register Empty) - ang rehistro ng transmitter ay handa nang tumanggap ng isang byte para sa paghahatid. Sa FIFO mode, ay nagpapahiwatig na walang mga character sa FIFO transmit buffer. Maaaring pagmulan ng pagkagambala.
* Bit 4 - BD(Break Detected) - line break indicator (ang input ng receiver ay nasa estado 0 nang hindi bababa sa oras na ipinadala ang simbolo).
* Bit 3 - F.E.(Framing Error) - frame error (maling stop bit).
* Bit 2 - RE(Parity Error) - suriin ang bit error (parity o fixed).
* Bit 1 - OE(Overrun Error) - overflow (pagkawala ng karakter). Kung ang pagtanggap ng susunod na karakter ay magsisimula bago ang nauna ay ibinaba mula sa shift register papunta sa buffer register o sa FIFO register, ang dating karakter sa shift register ay mawawala.
* Bit 0 - D.R.(Receiver Data Ready) - ang natanggap na data ay handa na (sa DHR o FIFO buffer). I-reset - sa pamamagitan ng pagbabasa ng receiver.
Ang mga tagapagpahiwatig ng error - mga bit - ay na-reset pagkatapos basahin ang rehistro LSR. Sa FIFO mode, ang mga error na flag ay iniimbak sa FIFO buffer kasama ng bawat karakter. Sa rehistro, nakatakda ang mga ito (at nagdudulot ng interrupt) sa sandaling ang character na natanggap sa error ay nasa tuktok ng FIFO (unang nasa pila na babasahin). Sa kaganapan ng isang line break, isang "break" na character lamang ang ipinasok sa FIFO, at ang UART ay naghihintay para sa pagbawi at ang kasunod na simula ng bit. MSR- modem status register. Ang layunin ng mga bit ng rehistro ay inilarawan sa ibaba: MSR:
* Bit 7 - DCD(Data Carrier Detect) - status ng linya DCD:
0 - aktibo (-V);
1 - passive (+V).
* Bit 6 - R.I.(Ring Indicator) - status ng linya R.I.:
0 - aktibo (-V);
1 - passive (+V).
* Bit 5 - DSR(Data Set Ready) - status ng linya DSR:
0 - aktibo (-V);
1 - passive (+V).
* Bit 4 - CTS(Clear To Send) - status ng linya CTS:
0 - aktibo (-V);
1 - passive (+V).
* Bit 3 - DDCD(Delta Data Carrier Detect) - pagbabago ng estado DCD.
* Bit 2 - TERI(Trailing Edge Of Ring Indicator) - pagkabulok ng sobre R.I.(end call).
* Bit 1 - DDSR(Delta Data Set Ready) - pagbabago ng estado DSR.
* Bit 0 - DCTS(Delta Clear To Send) - pagbabago ng estado CTS.
Ang mga palatandaan ng pagbabago (mga bit) ay na-reset kapag nabasa ang rehistro.
SRC - gumaganang rehistro(8 bits), hindi nakakaapekto sa pagpapatakbo ng UART, ay inilaan para sa pansamantalang imbakan ng data (hindi magagamit sa 8250).
SA diagnostic mode(sa LME=1) isang panloob na "stub" ay nakaayos sa loob ng UART:
* ang output ng transmitter ay inililipat sa isang lohikal na estado;
* Ang input ng receiver ay hindi pinagana; * mga input DSR, CTS, RI At DCD nadiskonekta mula sa mga linya ng input at panloob na kinokontrol ng mga bit DTRC, RTSC, OUT1C, IE;
* Ang mga output ng modem control ay inililipat sa isang passive state (logical zero).
Ang ipinadala na data sa serial form ay agad na natanggap, na nagbibigay-daan sa iyo upang suriin ang panloob na channel ng data ng port (kabilang ang mga shift register) at matakpan ang pagproseso, pati na rin matukoy ang bilis ng UART.

Ang isang espesyal na tampok ng port na ito kumpara sa iba pang mga "serial" na teknolohiya ay ang katotohanan na walang mga kinakailangan sa tiyempo sa pagitan ng 2 byte. May mga kinakailangan sa timing lamang sa pagitan ng mga bit ng isang byte (kabilang ang start, stop at parity), ang kapalit ng time pause sa pagitan ng mga bit ng isang byte ay tinatawag na baud rate - ang baud rate. Gayundin sa teknolohiyang ito ay walang konsepto ng "package".

Ang iba pang "serial" na teknolohiya, tulad ng X.25, USB o Ethernet, ay may konseptong "packet", at nagpapataw ng mahigpit na mga kinakailangan sa timing sa pagitan ng lahat ng piraso ng isang packet.

Para sa kadahilanang ito, sa terminolohiya ng Cisco IOS, ang port na ito ay tinawag na async - sa kaibahan sa kasabay na serial, i.e. X.25. Para sa parehong dahilan, ang Windows module na nagpapatupad ng PPP sa port na ito ay tinatawag na AsyncMac.sys (hiwalay na inilalarawan ng pamantayan ng PPP ang pagpapatupad ng PPP, na gumagamit ng konsepto ng "packet", sa isang serial port na walang ganitong konsepto) .

Ang ilang mga protocol ng pang-industriya na komunikasyon ay nagpapataw ng mahigpit na mga kinakailangan sa timing sa pagitan ng mga serial port byte. Ang mga naturang protocol ay napakahirap ipatupad sa multitasking operating system na may mahinang real-time na suporta, tulad ng Windows, at samakatuwid ay madalas na nangangailangan ng MS-DOS at hindi napapanahong software mula halos 20 taon na ang nakakaraan sa control computer.

Layunin

Ang pinakakaraniwang ginagamit na pamantayan para sa serial port ng mga personal na computer ay RS-232C. Dati, ang serial port ay ginamit upang kumonekta sa isang terminal, mamaya para sa isang modem o mouse. Ginagamit na ito ngayon para kumonekta sa, para makipag-ugnayan sa hardware para sa pagbuo ng mga naka-embed na computing system, satellite receiver, cash register, gayundin sa mga kagamitan sa sistema ng seguridad ng pasilidad.

Gamit ang isang COM port, maaari mong ikonekta ang dalawang computer gamit ang tinatawag na "null modem cable" (tingnan sa ibaba). Ito ay ginamit mula pa noong panahon ng MS-DOS para sa paglilipat ng mga file mula sa isang computer patungo sa isa pa, sa UNIX para sa terminal access sa isa pang makina, at sa Windows (kahit na mga modernong) para sa isang kernel-level debugger.

Ang bentahe ng teknolohiya ay ang matinding pagiging simple ng kagamitan. Ang kawalan ay mababa ang bilis, malalaking sukat ng connector, pati na rin ang madalas na mataas na mga kinakailangan para sa oras ng pagtugon ng OS at driver at isang mataas na bilang ng mga interrupts (isa sa bawat kalahati ng hardware queue, i.e. 8 bytes).

Mga konektor

Sa mga motherboard mula sa mga nangungunang tagagawa (halimbawa, Intel) o mga ready-made na system (halimbawa, IBM, Hewlett-Packard, Fujitsu Siemens Computers), ang sumusunod na simbolo ay ginagamit para sa serial port:

Ang pinakakaraniwang ginagamit na D-shaped connectors, na na-standardize noong 1969, ay 9-pin at 25-pin (DB-9 at DB-25, ayon sa pagkakabanggit). Dati, ginamit din ang DB-31 at round eight-pin DIN-8. Ang maximum na bilis ng paghahatid sa normal na bersyon ng port ay 115,200 baud.

Kaugnayan

May mga pamantayan para sa pagtulad sa isang serial port sa USB at sa Bluetooth (ang teknolohiyang ito ay higit na idinisenyo bilang isang "wireless serial port").

Gayunpaman, ang software emulation ng port na ito ay malawak na ginagamit ngayon. Halimbawa, halos lahat ng mga mobile phone ay tumutulad sa isang klasikong COM port at modem sa loob ng kanilang sarili upang ipatupad ang pag-tether - pag-access sa computer sa Internet sa pamamagitan ng kagamitang GPRS/EGDE/3G ng telepono. Sa kasong ito, ang USB, Bluetooth o Wi-Fi ay ginagamit para sa pisikal na koneksyon sa computer.

Gayundin, ang software emulation ng port na ito ay ibinibigay sa "mga bisita" ng VMWare at Microsoft Hyper-V virtual machine, ang pangunahing layunin nito ay upang ikonekta ang isang Windows kernel-level debugger sa "guest".

Kagamitan

Ang connector ay may mga contact:

DTR (Data Terminal Ready - kahandaang tumanggap ng data) - output sa computer, input sa modem. Isinasaad na ang computer ay handa nang gamitin ang modem. Ang pag-reset sa linyang ito ay nagdudulot ng halos kumpletong pag-reboot ng modem sa orihinal nitong estado, kasama. pag-hang up (ang ilang mga control register ay nakaligtas sa gayong pag-reset). Sa UNIX, ito ay nangyayari kapag ang lahat ng mga application ay nagsara ng mga file sa serial port driver. Ginagamit ng mouse ang wire na ito upang makatanggap ng kapangyarihan.

DSR (Data Set Ready - kahandaan para sa paglipat ng data) - input sa computer, output sa modem. Isinasaad na handa na ang modem. Kung ang linyang ito ay nasa zero, kung gayon sa ilang mga operating system ay nagiging imposibleng buksan ang port bilang isang file.

RxD (Receive Data) - input sa computer, output sa modem. Isang stream ng data na pumapasok sa isang computer.

TxD (Transmit Data) - output sa computer, input sa modem. Isang stream ng data na nagmumula sa isang computer.

CTS (Clear to Send - kahandaang magpadala) - input sa computer, output sa modem. Kinakailangang suspindihin ng computer ang paghahatid ng data hanggang sa maitakda ang wire na ito sa isa. Ginamit sa hardware flow control protocol upang maiwasan ang overflow sa modem.

RTS (Request to Send - request to send) - output sa computer, input sa modem. Kinakailangang suspindihin ng modem ang paghahatid ng data hanggang sa maitakda ang wire na ito sa isa. Ginagamit sa hardware flow control protocol upang maiwasan ang pag-apaw ng hardware at driver.

DCD (Carrier Detect - presensya ng carrier) - input sa computer, output sa modem. Itakda sa isa ng modem pagkatapos magtatag ng koneksyon sa modem sa kabilang panig, i-reset sa zero kapag nasira ang koneksyon. Ang hardware ng computer ay maaaring mag-isyu ng pagkagambala kapag nangyari ang naturang kaganapan.

RI (Ring Indicator - ringing signal) - input sa computer, output sa modem. Itinakda ng modem sa isa pagkatapos matukoy ang nagri-ring signal ng isang tawag sa telepono. Ang hardware ng computer ay maaaring mag-isyu ng pagkagambala kapag nangyari ang naturang kaganapan.

SG (Signal Ground) - karaniwang signal wire ng port, ay hindi karaniwang lupain, bilang panuntunan, nakahiwalay sa computer case o modem.

Gumagamit ang null modem cable ng dalawang crossed pairs: TXD/RXD at RTS/CTS.

Ang standard (dahil sa orihinal na IBM PC) na port hardware ay tinatawag na UART 16550 (kasalukuyang kasama sa SuperIO chip sa motherboard kasama ang ilang iba pang device). Mula noong panahon ng IBM PC, lumitaw ang isang hardware byte queue dito, na lubos na binabawasan ang bilang ng mga interrupts na inisyu ng device.

Programmatic na pag-access sa COM port

UNIX

Mayroong isang seksyon ng pagpapatala para sa bawat port. Ang mga seksyong ito ay may mga sumusunod na pangalan:

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

kung saan ang huling halaga na "Serial10000" ay isang natatanging numero para sa bawat bagong COM port na idinagdag sa system, para sa pangalawa - "Serial10001", atbp.

Upang makipag-ugnayan sa mga device na sumusuporta sa Bluetooth, ang ilang mga program (halimbawa, ang mga naturang program ay kinabibilangan ng: isang program na nagsi-synchronize ng listahan ng contact sa isang mobile phone; isang program na kumukuha ng mga GPS coordinates mula sa isang GPS receiver) ay nangangailangan ng COM port sa computer ng user.

Ang mga program na gumagamit ng mga COM port upang suportahan ang komunikasyon gamit ang Bluetooth wireless na teknolohiya, na direktang binuo ng Microsoft, ay kinabibilangan ng:

  • HotSync na ginagamit sa mga handheld na computer
  • ActiveSync, ginagamit sa mga pocket PC

OS/2

Ang umiiral na driver ng COM.SYS ay sumusuporta lamang sa 4 na COM port, ang bawat isa ay dapat na may sariling interrupt na linya. Upang maserbisyuhan ang mga COM port na may karaniwang interrupt na linya, dapat mong gamitin ang driver ng SIO.

Null modem cable

Pangunahing artikulo: Null modem cable

Sa ilang mga kaso, posible na gumamit ng isang pinasimple na bersyon ng cable, kung saan ginagamit lamang ang mga pin 2, 3 at 5.

Tingnan din

  • Mga Senyales ng Serial Port

Mga Tala

Mga link

  • Pagsasalin ng COM port programming guide sa POSIX operating system
  • Programming ang port sa java - nagbibigay-daan sa iyo upang gumana mula sa Windows, hindi tulad ng mga opisyal na pakete mula sa Sun.
  • Pagprograma ng COM port sa C++ para sa Windows. Handa nang library, source code, sample program.
  • Yashkardin V.L. Serial port. Pagprograma ng COM port sa Windows at MS-DOS. SoftElectro (2009). Na-archive mula sa orihinal noong Pebrero 8, 2012.

Kaya nakarating kami sa COM port. Ngunit kasama nito ang lahat ay hindi kasing simple ng LPT, at ang buong paggamit nito ay mangangailangan ng higit na pagsisikap. Ang pangunahing problema ay din ang pangunahing bentahe nito - serial data transfer. Kung sa LPT ang isang byte ng data ay ipinadala sa kahabaan ng 8 linya, isang bit bawat linya, at ang estado ng bawat linya ay madaling matingnan, pagkatapos ay sa COM port isang byte ng data ay ipinadala nang paunti-unti sa isang linya (na may kaugnayan sa lupa , siyempre) at makita kung ano ang ipinadala doon gamit ang mga LED lamang ay hindi ito magagawa. Upang gawin ito, kailangan mo ng isang espesyal na aparato - isang converter ng isang serial data stream sa isang parallel isa, ang tinatawag na. USART (Universal Synchronous/Asynchronous Receiver Transmitter). Halimbawa, kasama ito sa motherboard ng isang computer na nilagyan ng COM port, o sa anumang mas seryosong microcontroller.


Sana ay panghinaan ka pa rin ng loob sa pag-master ng COM port. Ito ay hindi lahat ng kapahamakan at kadiliman. Ang ilang mga resulta ay maaaring makuha nang walang USART. Bumuo tayo ng isang gawain na ipapatupad natin sa paunang yugto ng pagtatrabaho sa COM port:


"Gusto kong ikonekta ang isang LED sa computer sa pamamagitan ng COM port. Inilunsad ko ang programa. Nagsasagawa ako ng ilang aksyon sa program na ito, ang LED ay umiilaw, may iba pa akong ginagawa - ang LED ay napupunta."


Ang gawain ay medyo tiyak (isinasaalang-alang ang katotohanan na ang USART ay hindi ginagamit) at ito ay isang purong "do-it-yourself" na gawain, ngunit ito ay lubos na magagawa at magagawa. Simulan natin itong ipatupad.


1.COM port

Muli, kunin ang system unit ng iyong PC at tumingin sa likuran. Tandaan namin na mayroong 9-pin connector - ito ang COM port. Sa katotohanan, maaaring marami sa kanila (hanggang 4). Ang aking PC ay may dalawang COM port (tingnan ang larawan).


2. Extension ng COM port


3. Hardware

Kakailanganin din nating "mag-uukit" sa hardware, sa diwa na ito ay magiging mas kumplikado kaysa sa unang aparato para sa LPT port. Ang katotohanan ay ang RS-232 protocol, kung saan ang data ay ipinagpapalit sa COM port, ay may bahagyang naiibang lohikal na estado-boltahe na relasyon. Kung kadalasan ito ay lohikal 0 0 V, lohikal 1 +5 V, kung gayon sa RS-232 ang relasyon na ito ay ang mga sumusunod: lohikal 0 +12 V, lohikal 1 -12 V.

At halimbawa, sa pagtanggap ng -12 V, hindi agad malinaw kung ano ang gagawin sa boltahe na ito. Karaniwan, ang mga antas ng RS-232 ay kino-convert sa TTL (0.5 V). Ang pinakasimpleng opsyon ay zener diodes. Ngunit ipinapanukala kong gawin ang converter na ito sa isang espesyal na chip. Ito ay tinatawag na MAX232.

Ngayon tingnan natin kung anong mga signal mula sa COM port ang makikita natin sa mga LED? Sa katunayan, mayroong kasing dami ng 6 na independiyenteng linya sa COM port na interesado sa developer ng mga interface device. Dalawa sa mga ito ay hindi pa magagamit sa amin - mga linya ng serial data. Ngunit ang natitirang 4 ay idinisenyo upang kontrolin at ipahiwatig ang proseso ng paglilipat ng data at maaari naming "ilipat" ang mga ito upang umangkop sa aming mga pangangailangan. Ang dalawa sa mga ito ay inilaan para sa kontrol mula sa isang panlabas na aparato at hindi namin sila hawakan sa ngayon, ngunit gagamitin namin ngayon ang huling dalawang natitirang linya. Sila ay tinatawag na:

  • RTS- Kahilingan sa paglipat. Isang linya ng pakikipag-ugnayan na nagsasaad na ang computer ay handa nang tumanggap ng data.
  • DTR- Ang computer ay handa na. Isang linya ng pakikipag-ugnayan na nagsasaad na ang computer ay naka-on at handang makipag-ugnayan.

Ngayon ay inililipat namin ang kanilang layunin nang kaunti, at ang mga LED na nakakonekta sa kanila ay mawawala o sisindi, depende sa mga aksyon sa aming sariling programa.

Kaya, magsama-sama tayo ng isang diagram na magpapahintulot sa atin na maisakatuparan ang ating mga nilalayong aksyon.

At narito ang praktikal na pagpapatupad nito. Sa tingin ko ay patatawarin mo ako na ginawa ko ito sa napakagandang bersyon ng breadboard, dahil ayaw kong gumawa ng board para sa ganoong "highly productive" na circuit.


4. Bahagi ng software

Mas simple ang lahat dito. Gumawa tayo ng Windows application sa Microsoft Visual C++ 6.0 batay sa MFC para pamahalaan ang dalawang linya ng komunikasyon sa COM port. Upang gawin ito, lumikha ng bagong proyekto ng MFC at bigyan ito ng pangalan, halimbawa, TestCOM. Susunod, piliin ang opsyon ng pagbuo batay sa diyalogo.

Ibigay ang hitsura ng dialog window ng aming programa tulad ng sa Fig. sa ibaba, ibig sabihin magdagdag ng apat na mga pindutan, dalawa para sa bawat isa sa mga linya. Ang isa sa kanila ay ayon sa pagkakabanggit ay kinakailangan upang "patayin" ang linya, ang isa pa ay "itakda" ito sa isa.

Class CTestCOMDlg: pampublikong CDialog ( // Pampublikong konstruksiyon: CTestCOMDlg(CWnd* pParent = NULL); // karaniwang constructor HANDLE hFile;

Upang makontrol ng aming programa ang mga linya ng isang COM port, kailangan muna itong buksan. Isulat natin ang code na responsable para sa pagbubukas ng port kapag naglo-load ng programa.

HFile = CreateFile("COM2", GENERIC_READ|GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0,NULL); if(hFile==INVALID_HANDLE_VALUE) ( MessageBox("Hindi mabuksan ang port!", "Error", MB_ICONERROR); ) else ( MessageBox("Ang port ay matagumpay na nabuksan", "Ok", MB_OK); )

Gamit ang karaniwang function ng Win API CreateFile() buksan ang COM port COM2. Susunod, sinusuri namin ang tagumpay ng pagbubukas at nagpapakita ng isang mensahe ng impormasyon. Dito kailangan nating gumawa ng isang mahalagang tala: Ang COM2 ay nasa aking computer, ngunit sa iyong computer maaari mo itong ikonekta sa isa pang COM port. Alinsunod dito, kailangang baguhin ang pangalan nito sa anumang port na iyong ginagamit. Maaari mong makita kung anong mga numero ng port ang naroroon sa iyong computer tulad nito: Start -> Mga Setting -> Control Panel -> System -> Hardware -> Device Manager -> Mga Port (COM at LPT).

Bilang isang resulta, ang pag-andar CTestCOMDlg::OnInitDialog(), na matatagpuan sa file TestCOMDlg.cpp, ang aming klase sa diyalogo ay dapat magkaroon ng anyo:

BOOL CTestCOMDlg::OnInitDialog() ( CDialog::OnInitDialog(); // Idagdag ang "About..." menu item sa system menu. // IDM_ABOUTBOX ay dapat nasa system command range. ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX); ASSERT(IDM_ABOUTBOX AppendMenu(MF_SEPARATOR); pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu); ) ) // Itakda ang icon para sa dialog na ito. Awtomatikong ginagawa ito ng framework // kapag ang pangunahing window ng application ay hindi isang dialog SetIcon(m_hIcon, TRUE); // Itakda ang malaking icon na SetIcon(m_hIcon, FALSE); // Itakda ang maliit na icon // TODO: Magdagdag ng karagdagang pagsisimula dito hFile = CreateFile("COM2", GENERIC_READ|GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0,NULL); if(hFile==INVALID_HANDLE_VALUE) ( MessageBox("Hindi mabuksan ang port!", "Ostbk", MB_ICONERROR); ) else ( MessageBox("Tagumpay na binuksan ang port", "Ok", MB_OK); ) ibalik ang TRUE; // ibalik ang TRUE maliban kung itinakda mo ang focus sa isang control

Ngayon magdagdag tayo ng mga tagapangasiwa para sa mga pindutan ng kontrol ng linya. Binigyan ko sila ng naaangkop na mga pangalan: ang function na nagtatakda ng isa sa linya ng DTR ay OnDTR1(), 0 ay OnDTR0(). Para sa linya ng RTS, sa parehong paraan. Ipaalala ko sa iyo na ang handler ay nilikha kapag nag-double click ka sa button. Bilang resulta, ang apat na function na ito ay dapat magmukhang:

Void CTestCOMDlg::OnDTR1() ( // TODO: Idagdag ang iyong control notification handler code dito EscapeCommFunction(hFile, 6); ) void CTestCOMDlg::OnDTR0() ( // TODO: Idagdag ang iyong control notification handler code dito EscapeCommFunction(hFile, 5); ) void CTestCOMDlg::OnRTS1() ( // TODO: Idagdag ang iyong control notification handler code dito EscapeCommFunction(hFile, 4); ) void CTestCOMDlg::OnRTS0() ( // TODO: Idagdag ang iyong control notification handler code dito EscapeCommFunction(hFile, 3);

Hayaan akong ipaliwanag nang kaunti kung paano gumagana ang mga ito. Tulad ng nakikita mo, sa loob ay naglalaman ang mga ito ng isang tawag sa parehong function ng Win API EscapeCommFunction() na may dalawang parameter. Ang una sa kanila ay isang hawakan (HANDLE) sa isang bukas na port, ang pangalawa ay isang espesyal na code ng aksyon na naaayon sa kinakailangang estado ng linya.

Iyon lang, pinagsama-sama namin at inilunsad. Kung maayos ang lahat, dapat kang makakita ng mensahe tungkol sa matagumpay na pagbubukas ng port. Susunod, sa pamamagitan ng pagpindot sa kaukulang mga pindutan, kumurap kami sa mga LED na konektado sa COM port.

© Ivanov Dmitry
Disyembre 2006