Uy / Sharhlar / COM portining tavsifi. COM port nima. Modem va COM porti

COM portining tavsifi. COM port nima. Modem va COM porti

So'nggi paytlarda ma'lumotlarni uzatishning ketma-ket usuli parallelni almashtirmoqda.
Misollarni uzoqdan izlash shart emas: USB va SATA avtobuslarining ko'rinishi o'z-o'zidan gapiradi.
Darhaqiqat, parallel avtobusni masshtablash qiyin (kabel uzunroq, avtobusning soat tezligi yuqori), texnologiyalar orqada parallel avtobuslarga o'tayotgani ajablanarli emas.

Seriyali interfeyslar

Bugungi kunda juda ko'p turli xil ketma-ket ma'lumotlar interfeyslari mavjud.
Yuqorida aytib o'tilgan USB va SATA-dan tashqari, biz kamida ikkita taniqli RS-232 va MIDI standartlarini (aka GamePort) esga olishimiz mumkin.
Ularning barchasi bir xil - har bir ma'lumot bitining ketma-ket uzatilishi yoki Seriyali interfeys bilan birlashtirilgan.
Bunday interfeyslar juda ko'p afzalliklarga ega va ularning eng muhimi oz sonli ulanish simlari va shuning uchun past narxdir.

Ma'lumotlarni uzatish

Seriyali aloqa ikki usulda amalga oshirilishi mumkin: asinxron va sinxron.

Sinxron ma'lumotlarni uzatish uzatiladigan signalga soat ma'lumotlarini kiritish yoki maxsus sinxronlash liniyasidan foydalanish orqali qabul qiluvchi va uzatuvchining ishlashini sinxronlashtirishni o'z ichiga oladi.
Qabul qilgich va uzatuvchi qurilmalarning bir xil chastotada ishlashini ta'minlaydigan maxsus sinxronizatsiya kabeli bilan ulanishi kerak.

Asinxron uzatish ma'lumotlarning boshlanishi va oxirini belgilovchi maxsus bitlardan foydalanishni o'z ichiga oladi - boshlash (mantiqiy nol) va to'xtash (mantiqiy bitta) bit.
Shuningdek, uzatiladigan yagona bitlarning juft yoki toq sonini aniqlaydigan (qabul qilingan konventsiyaga qarab) maxsus paritet bitidan foydalanish mumkin.
Qabul qiluvchi tomonda bu bit tahlil qilinadi va agar paritet bit bitta bitlar soniga mos kelmasa, u holda ma'lumotlar paketi yana yuboriladi.

Shuni ta'kidlash kerakki, bunday tekshirish faqat bitta bit noto'g'ri uzatilgan bo'lsa, xatoni aniqlashga imkon beradi, agar bir nechta bit noto'g'ri uzatilgan bo'lsa, bu tekshirish allaqachon noto'g'ri bo'lib qoladi.
Keyingi ma'lumotlar paketini jo'natish to'xtash bitini yuborgandan keyin istalgan vaqtda sodir bo'lishi mumkin va, albatta, boshlang'ich bit bilan boshlanishi kerak.
Hech narsa aniq emasmi?

Xo'sh, agar hamma narsa bo'lsa Kompyuter texnologiyalari oddiy edi, keyin har qanday uy bekasi allaqachon köfte bilan parallel ravishda yangi protokollarni haykaltarosh qilgan bo'lar edi ...
Keling, jarayonga boshqa tomondan qarashga harakat qilaylik.
Ma'lumotlar paketlarda uzatiladi, taxminan IP-paketlar kabi, axborot bitlari ma'lumotlar bilan birga boradi, bu bitlarning soni 2 dan 3 yarimgacha o'zgarishi mumkin.
Yarim bilan?!
Ha, to'g'ri eshitdingiz, yarmi bilan!

To'xtash biti, to'g'rirog'i, to'xtash bitiga mos keladigan uzatilgan signal bir bitga mos keladigan signaldan kattaroq, lekin ikki bit uchun kamroq vaqtga ega bo'lishi mumkin.
Shunday qilib, paket har doim boshlang'ich bit bilan boshlanadi, u har doim nolga teng bo'ladi, undan keyin ma'lumotlar bitlari, keyin parite biti va har doim bitta bo'lgan to'xtash biti keladi.
Keyin, o'zboshimchalik bilan bir qancha vaqt o'tgach, Moskvaga zarbalar yurishi davom etadi.

Ushbu uzatish usuli qabul qiluvchi va uzatuvchi bir xil tezlikda (yaxshi yoki deyarli bir xil tezlikda) ishlashi kerakligini anglatadi, aks holda qabul qiluvchining kiruvchi ma'lumotlar bitlarini qayta ishlashga vaqti bo'lmaydi yoki eski bitni yangisiga oladi. .
Bunga yo'l qo'ymaslik uchun har bir bit strobed qilinadi, ya'ni qurilma ichida yaratilgan maxsus signal - "strob" bilan sinxron ravishda yuboriladi.
Asinxron qurilmalar uchun bir qator maxsus tezliklar mavjud - 50, 75, 110, 150, 300, 600, 1200, 2400, 4800, 9600, 19200, 38400, 57600 va sekundiga 115200 bit.

Ehtimol siz "bod" ma'lumotlarni uzatish tezligini o'lchash birligi sifatida ishlatilishini eshitgansiz - liniya holatini o'zgartirish chastotasi va bu qiymat faqat signal ikkita qiymatdan biriga ega bo'lishi mumkin bo'lsa, ma'lumotlar uzatish tezligiga to'g'ri keladi. .
Agar bitta signal o'zgarishida bir nechta bit kodlangan bo'lsa (va bu ko'plab modemlarda bo'lsa), uzatish tezligi va chiziqni o'zgartirish chastotasi butunlay boshqacha qiymatlarga ega bo'ladi.

Endi "ma'lumotlar paketi" sirli atamasi haqida bir necha so'z.
Paket ostida bu holat boshlang'ich va to'xtash bitlari o'rtasida uzatiladigan bitlar to'plamiga ishora qiladi.
Ularning soni beshdan sakkizgacha o'zgarishi mumkin.
Nima uchun aynan besh-sakkiz bit?
Nima uchun bir vaqtning o'zida, aytaylik, paket ichida bir kilobayt ma'lumotni uzatmaslik kerak?

Javob aniq: kichik ma'lumotlar paketlarini uzatishda biz ular bilan uchta xizmat bitini jo'natish orqali yo'qotishimiz mumkin (ma'lumotlarning 50 dan 30 foizigacha), lekin uzatish paytida paket buzilgan bo'lsa, biz buni osongina tan olamiz (esda tuting). parite bit?) va tezda uni yana uzating.
Ammo bir kilobayt ma'lumotda xatoni aniqlash qiyin bo'ladi va uni uzatish ancha qiyin bo'ladi.

Asinxron ketma-ket ma'lumotlarni uzatish moslamasiga misol sifatida kompyuterning MAQOMOTI porti, Trussardi tomonidan ishlab chiqilgan sevimli modem va bir xil portga ulangan sichqonchani keltirish mumkin, ular negadir tor fikrli kotiblar har doim PS / 2 ga kirishga harakat qilishadi.
Ushbu qurilmalarning barchasi RS-232 interfeysida, aniqrog'i uning asinxron qismida ishlaydi, chunki standart sinxron ma'lumotlarni uzatishni ham tavsiflaydi.

AMD Radeon Software Adrenalin Edition Driver 19.9.2 Majburiy emas

Yangi AMD Radeon Software Adrenalin Edition 19.9.2 ixtiyoriy drayveri Borderlands 3 da unumdorlikni yaxshilaydi va Radeon Image Sharpening uchun qo‘shimcha yordam beradi.

Kümülatif windows yangilanishi 10 1903 KB4515384 (qo'shilgan)

2019-yil 10-sentabrda Microsoft Windows 10-ning 1903-versiyasi – KB4515384 uchun bir qator xavfsizlik yaxshilanishlari va buzilgan xatoni tuzatish bilan jamlangan yangilanishni chiqardi. Windows ishi Qidiruv va yuqori protsessordan foydalanishga sabab bo'ldi.

MAQOMOTI porti ko'pincha mikrokontrollerni kompyuterga ulash uchun ishlatiladi. Ushbu maqolada biz kompyuterdan boshqaruv buyruqlarini qanday yuborishni va boshqaruvchidan ma'lumotlarni yuborishni ko'rsatamiz.

Ishga tayyorgarlik

Aksariyat mikrokontrollerlar bir nechta kiritish-chiqarish portlariga ega. UART protokoli shaxsiy kompyuter bilan aloqa qilish uchun eng mos keladi. Bu ketma-ket asenkron ma'lumotlarni uzatish protokoli. Uni USB interfeysiga aylantirish uchun platada USB-RS232 konvertori - FT232RL mavjud.
Ushbu maqoladagi misollarni ishlatish uchun sizga faqat Arduino-mos plata kerak. Biz foydalanamiz. Bortingizda 13-pinga ulangan LED va qayta o'rnatish tugmasi borligiga ishonch hosil qiling.

Misol uchun, ASCII jadvalini ko'rsatadigan doskaga kod yuklaymiz. ASCII - o'nlik raqamlar, lotin va milliy alifbolar, tinish belgilari va boshqaruv belgilarini ifodalash uchun kodlash.

int belgisi = 33; void setup() ( Serial. begin(9600 ) ; Serial. println(" ASCII Table ~ Character Map " ) ; ) void loop() ( Serial. write(symbol) ; Serial. print(" , dec: " ) ; Serial. .print(belgi) ; Serial.print(" , hex: " ); Serial.print(ramz, HEX) ; Serial.print(" , okt: " ) ; Serial.print(ramz, OCT) ; Serial.print( " , bin: " ); Serial.println(belgi, BIN) ; if (belgi == 126 ) ( while (haqiqiy) (davomi ; ) ) belgisi+ + ; )

Belgi o'zgaruvchisi belgi kodini saqlaydi. Jadval 33 dan boshlanadi va 126 da tugaydi, shuning uchun belgi dastlab 33 ga o'rnatiladi.
UART portining ishlashini boshlash uchun funksiyadan foydalaning Serial.begin(). Uning yagona parametri - tezlik. Tezlikni uzatuvchi va qabul qiluvchi tomonlar oldindan kelishib olishlari kerak, chunki uzatish protokoli asinxrondir. Ushbu misolda tezlik 9600bps.
Portga qiymat yozish uchun uchta funktsiyadan foydalaniladi:

  1. Serial.write()– portga ma’lumotlarni ikkilik shaklda yozadi.
  2. Serial.print() ko'p qadriyatlarga ega bo'lishi mumkin, lekin ularning barchasi ma'lumotni inson uchun qulay shaklda ko'rsatishga xizmat qiladi. Misol uchun, agar o'tish uchun parametr sifatida ko'rsatilgan ma'lumot tirnoq ichiga olingan bo'lsa, terminal dasturi uni o'zgarmagan holda ko'rsatadi. Agar biron-bir qiymatni ko'rsatishni istasangiz muayyan tizim hisob, keyin xizmat so'zini qo'shishingiz kerak: BIN-ikkilik, OCT - sakkizlik, DEC - o'nlik, HEX - o'n oltilik. Masalan, Serial.print(25,HEX).
  3. Serial.println() kabi qiladi Serial.print(), lekin ma'lumotni ko'rsatgandan keyin ham satrni tarjima qiladi.

Dasturning ishlashini tekshirish uchun kompyuterda COM portidan ma'lumotlarni qabul qiluvchi terminal dasturi bo'lishi kerak. DA Arduino IDE allaqachon qurilgan. Uni chaqirish uchun menyudan Tools->Port Monitor-ni tanlang. Ushbu yordamchi dasturning oynasi juda oddiy:

Endi qayta ishga tushirish tugmasini bosing. MK qayta ishga tushadi va ASCII jadvalini ko'rsatadi:

Kodning ushbu qismiga e'tibor bering:

agar (belgi = = 126 ) ( while (to'g'ri) (davomi ; ) )

Bu dasturning bajarilishini to'xtatadi. Agar siz uni istisno qilsangiz, jadval cheksiz ko'rsatiladi.
Olingan bilimlarni mustahkamlash uchun sekundiga bir marta nomingizni ketma-ket portga yuboradigan cheksiz tsiklni yozishga harakat qiling. Chiqishga qadam raqamlarini qo'shing va ismdan keyingi qatorni tarjima qilishni unutmang.

Kompyuterdan buyruqlar yuborish

Buni amalga oshirishdan oldin, siz COM porti qanday ishlashi haqida tasavvurga ega bo'lishingiz kerak.
Avvalo, barcha almashinuv xotira buferi orqali sodir bo'ladi. Ya'ni, kompyuterdan qurilmaga biror narsa yuborganingizda, ma'lumotlar xotiraning qandaydir maxsus bo'limiga joylashtiriladi. Qurilma tayyor bo'lishi bilanoq buferdan ma'lumotlarni o'qiydi. Funktsiya bufer holatini tekshirish imkonini beradi serial.avaliable(). Bu funksiya buferdagi baytlar sonini qaytaradi. Ushbu baytlarni ayirish uchun siz funktsiyadan foydalanishingiz kerak Serial.read(). Keling, ushbu funktsiyalar qanday ishlashini misol bilan ko'rib chiqaylik:

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

Kod mikrokontroller xotirasiga yuklangandan so'ng, MAQOMOTI port monitorini oching. Bitta belgini kiriting va Enter tugmasini bosing. Qabul qilingan ma'lumotlar maydonida siz quyidagilarni ko'rasiz: “Men oldim: X”, oʻrniga qayerda X siz kiritgan belgi bo'ladi.
Dastur asosiy tsiklda cheksiz aylanadi. Portga bayt yozilayotgan vaqtda Serial.available() funksiyasi 1 qiymatini oladi, ya'ni shart bajariladi. Serial.available() > 0. Keyingi funksiya Serial.read() bu baytni o'qiydi va shu bilan buferni tozalaydi. Shundan so'ng, sizga allaqachon ma'lum bo'lgan funktsiyalardan foydalanib, chiqish paydo bo'ladi.
Arduino IDE-ning o'rnatilgan MAQOMOTI port monitoridan foydalanish ba'zi cheklovlarga ega. Kengashdan MAQOMOTI portiga ma'lumotlarni jo'natishda chiqish ixtiyoriy formatda tashkil etilishi mumkin. Va kompyuterdan plataga jo'natishda belgilarni uzatish ASCII jadvaliga muvofiq amalga oshiriladi. Bu shuni anglatadiki, siz, masalan, "1" belgisini kiritganingizda, ikkilik "00110001" (ya'ni o'nli kasrda "49") MAQOMOTI porti orqali yuboriladi.
Keling, kodni biroz o'zgartiramiz va ushbu bayonotni tekshiramiz:

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

Yuklab olingandan so'ng, port monitorida "1" ni yuborishda siz javobni ko'rasiz: "Men oldim: 110001". Chiqish formatini o'zgartirishingiz va taxtaning boshqa belgilar bilan nimani qabul qilishini ko'rishingiz mumkin.

COM port orqali qurilmani boshqarish

Shubhasiz, shaxsiy kompyuterdan kelgan buyruqlar bilan siz mikrokontrollerning istalgan funksiyasini boshqarishingiz mumkin. Dasturni yuklab oling ishni boshqarish LED:

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

MAQOMOTI portiga "H" belgisi yuborilganda, 13-chi chiqishdagi LED yonadi va "L" yuborilganda, LED o'chadi.
Agar MAQOMOTI portidan ma'lumotlarni qabul qilish natijalariga ko'ra, dasturning asosiy tsiklda turli xil amallarni bajarishini xohlasangiz, asosiy tsikldagi shartlarni tekshirishingiz mumkin. Masalan.

MAQOMOTI porti yoki ketma-ket port - bu bayt ma'lumotlarini almashish uchun mo'ljallangan ikki tomonlama ketma-ket interfeys. Dastlab, bu port terminalni ulash uchun, keyin esa modem va sichqoncha uchun ishlatilgan. Endi uni manbani ulash, shuningdek, o'rnatilgan hisoblash tizimlarini qayta ishlash bilan bog'lash uchun ishlatish odatiy holdir.

Foydalanish

Shunday qilib, MAQOMOTI porti nima ekanligi haqida batafsilroq gapirishdan oldin, uning ma'nosini tushunish uchun o'tmishga qarashimiz kerak. 15 yil oldin, orqa panelda joylashgan maxsus standart ulagich yordamida qurilmalarni kompyuterga ulash usuli ishlatilgan. tizim bloki maxsus RS-232 seriyali kabeli yordamida. Bu usul juda ko'p kamchiliklarga ega. Bunday kabel, zamonaviy standartlarga ko'ra, juda past ma'lumotlarni uzatish tezligini ta'minlaydi - sekundiga yuz kilobit. Ulagichlarning jismoniy ulanishi amalga oshirilgandan tashqari, uskunani o'chirib qo'yish kerak edi va ular o'zlari bir-biriga ishonchliligini ta'minlovchi vintlar bilan biriktirilgan, shu bilan birga ularning o'lchamlari sezilarli darajada farq qilgan.

Biroz tarix

O'sha paytdagi kompyuterlardagi MAQOMOTI porti an'anaviy ravishda 1 yoki 2 raqamlangan edi, chunki odatda ikkitadan ko'p bo'lmagan. Agar kerak bo'lsa, qo'shimcha portlar o'rnatilishi mumkin. Foydalanuvchi konfiguratsiya qilganda dasturiy ta'minot, chalkashtirmaslik va ulanish ta'minlanganini to'g'ri o'rnatish talab qilindi zarur jihozlar. Har bir MAQOMOTI porti tezlikni to'g'ri sozlashni, shuningdek, faqat tor doiradagi mutaxassislarga ma'lum bo'lgan bir qator boshqa sirli parametrlarni talab qildi. Uskunaning muvaffaqiyatli ulanishi uchun barcha kerakli parametrlarni biron bir joydan aniqlash yoki eksperimental ravishda tanlash kerak edi, chunki bu holda avtomatik konfiguratsiya yo'q edi. Bundan tashqari, MAQOMOTI porti orqali ulanish har qanday dasturiy ta'minotni o'zboshimchalik bilan tashqi uskunalar bilan, hatto butunlay mos kelmaydigan qurilmalar bilan ulash imkonini berdi, bu esa sozlash jarayonida juda ko'p xatolarga olib keldi.

Zamonaviylik

Endi MAQOMOTI porti orqali ulanish butunlay ko'proq bilan almashtirildi zamonaviy usul, bu amalga oshirish uchun maxsus bilimlarni talab qilmaydi, ya'ni USB port orqali. Ushbu usul yuqorida aytib o'tilgan barcha kamchiliklardan mahrum. Biroq, barcha turdagi GPS uskunalari va juda xilma-xil dasturiy ta'minotni ulashning mosligi uchun zamonaviy standartlar hozirgi vaqtda arxaik bo'lib qolgan COM portlari tushunchasi atrofida ancha vaqt oldin shakllangan.

Buning sababi shundaki, dastlab deyarli har qanday uskuna, jumladan GPS tashqi bo'lib, uning kompyuterga ulanishi apparat portlaridan biriga ulangan ketma-ket kabel orqali amalga oshirildi. Konfiguratsiya jarayonida foydalanuvchi port raqamini va u orqali ma'lumotlarni uzatish tezligini to'g'ri tanlashi kerak edi. O'sha paytda GPS qabul qilgichdan dasturga ma'lumotlarni uzatishning asosiy standarti paydo bo'ldi, u endi NMEA-0183 deb nomlanadi. Aslida, ushbu standart barcha ishlab chiquvchilardan hatto eng zamonaviy apparat va dasturiy ta'minotni ham COM portlari orqali ma'lumotlarni almashishni talab qiladi. Va bularning barchasi sharoitlarda zamonaviy kompyuterlar, shuningdek, PDA-larda USB standarti uzoq vaqtdan beri asosiy hisoblanadi. Yana bir xususiyat shundaki, so'nggi paytlarda GPS qabul qiluvchilar tobora ko'proq to'g'ridan-to'g'ri qurilma korpusiga o'rnatilmoqda, ya'ni u va asosiy qurilma o'rtasida ulanish kabeli yo'q.

Virtual COM portlari

Chiqish yo'li ixtiro qilindi, ya'ni "virtual" COM portlari ishlab chiqildi. Ma'lum bo'lishicha, PDA-ning ichki qurilmasi, masalan, GPS qabul qiluvchisi, dasturiy ta'minotda MAQOMOTI porti ko'rinishida taqlid qilingan, ammo apparat jihatidan bunday emas. Shu bilan birga, bunday standart orqali interfeysga mo'ljallangan dastur qanday amalga oshirilishini farq qilmaydi. Bu erda apparatni amalga oshirishning majburiy mavjudligi emas, balki virtual simulyatsiya mavjudligiga ruxsat beriladi. Shunday qilib, eski uslubdagi GPS dasturlarini zamonaviy uskunalar bilan muvofiqligini ta'minlash mumkin.

O'zgarishlar kiritildi

Shu bilan birga, COM portini boshqarish sezilarli darajada o'zgarmadi. Foydalanuvchi, eski usulda, murakkab sozlamalarni deyarli qo'lda qilish kerak. Biroq, zamonaviy MAQOMOTI porti endi tizim blokining orqa panelida joylashgan katta hajmli qurilma emas, balki butunlay boshqa qurilma. Va bu erda gap shundaki, dasturiy ta'minot nuqtai nazaridan ularning barcha amalga oshirishlari yuzsiz ko'rinadi, ya'ni virtual va real portlar o'rtasida farq yo'q. Dasturiy ta'minot uchun portlar faqat PDA ishlab chiqaruvchilari tomonidan to'liq tasodifiy ravishda tayinlangan raqamlar bilan farqlanadi. Misol uchun, ASUS qabul qiluvchisi odatda COM5 da joylashgan bo'lsa, PocketLOOX 560 qabul qiluvchini COM8 da ko'rsatadi. Ma'lum bo'lishicha, GPS qabul qiluvchisidan ma'lumot olishni xohlaydigan dastur dastlab ushbu PDA-da qabul qiluvchiga mos keladigan port paydo bo'lgan shartli raqam haqida ishonchli ma'lumotga ega emas.

Hammasi qanday ishlaydi?

Mavjud bo'lgan barcha MAQOMOTI portlari orasida shuni hisobga olsak, mumkin avtomatik qidiruv to'g'ri bo'lsa, bunday so'rovni o'tkazish tartibi ancha ishonchsiz va ancha mashaqqatli. Buning sababi shundaki, tizimda MAQOMOTI portlari sifatida ko'rsatilgan qurilmalar juda xilma-xil bo'lishi mumkin va GPS bilan hech qanday aloqasi yo'q, ular bunday so'rovga mutlaqo kutilmagan tarzda javob berishlari mumkin. Masalan, PDA-da ichki uyali modem, USB, infraqizil port va boshqa elementlar bilan bog'langan portlar mavjud. Muayyan qurilma bilan ishlash uchun mo'ljallangan dastur orqali ularga kirish butunlay oldindan aytib bo'lmaydigan reaktsiyaga, shuningdek, ko'pincha PDA ning muzlashiga olib keladigan turli xil nosozliklarga olib kelishi mumkin. Shuning uchun MAQOMOTI portini ochishga urinish kutilmagan vaziyatlarga olib kelishi mumkin, Bluetooth-ni yoqishgacha yoki Va yana tushunarsiz holatlar bo'lishi mumkin.

COM portining ishlashi

MAQOMOTI portlari uchun asos sifatida asinxron universal transceiver chipi ishlatiladi. Ushbu mikrosxema bir nechta navlarda mavjud: Intel 16550A, 16550, 16450, 8250. U har bir MAQOMOTI porti uchun ma'lumotlarni qabul qiluvchi va uzatuvchi registrlarni, shuningdek, BIOS, Windows va MS DOS dasturlari orqali kirish mumkin bo'lgan bir qator boshqaruv registrlarini o'z ichiga oladi. Da oxirgi versiyalari mikrochip uzatilgan va qabul qilingan ma'lumotlarni vaqtincha saqlash uchun buferlar to'plamiga ega. Ushbu imkoniyat tufayli markaziy protsessorning ishini kamroq to'xtatish, shuningdek, ma'lumotlarni uzatish tezligini muvofiqlashtirish mumkin.

asosiy parametrlar

COM port qurilmasi quyidagi xarakterli xususiyatlarni o'z ichiga oladi:

Axborotni kiritish va chiqarish uchun portning asosiy manzili;

Uskuna uzilish raqamlari;

Bitta ma'lumot blokining hajmi;

Ma'lumotlarni uzatish tezligi;

Halollikni aniqlash rejimi;

Axborot oqimini boshqarish usuli;

To'xtash bitlari soni.

Kompyuterning COM portini qanday tekshirish mumkin? Nimaga e'tibor berish kerak?

Yuqorida aytib o'tilganidek, bu turdagi port bit darajasidagi ketma-ket yo'l uchun ikki yo'nalishli interfeysdir. Bu erda parallel port bilan solishtirganda o'ziga xos xususiyat - bu ma'lumotlarning bit bilan uzatilishi. MAQOMOTI portining anatomiyasi shundan iboratki, u ketma-ket ma'lumotlarni uzatish usulidan foydalanadigan kompyuterda yagona emas. Masalan, Ethernet yoki USB kabi interfeyslar ham shunga o'xshash printsipdan foydalanadi, ammo tarixan shunday bo'lganki, RS232 standart seriyali portiga qo'ng'iroq qilish odatiy holdir.

Ko'pincha kompyuterni ta'mirlash va diagnostika qilish uchun COM portini ochish talab qilinadi, shu bilan birga uning ishlashini tekshirish kerak. Elementni yoqish juda oson. Ko'pincha bu qurilmani noto'g'ri uzib qo'ygan, interfeys ulanganda ulagichni tortib olgan foydalanuvchining aybi bilan sodir bo'ladi. Interfeys ishlayotganligini tekshirishning eng oson yo'li unga sichqonchani ulashdir. Biroq, to'liq tasvirni olish juda qiyin, chunki manipulyator mavjud sakkizta signalning faqat yarmidan foydalanadi. Faqat maxsus vilka va dasturdan foydalanish ishlashni tekshirishga imkon beradi. Ushbu maqsadlar uchun allaqachon maxsus ishlab chiqilgan dasturiy ta'minot mavjud.

Seriyali portlar texnik xizmat ko'rsatish va foydalanish qulayligi uchun ishlab chiquvchilar tomonidan yaxshi ko'riladi.

Va, albatta, terminal dasturining konsoliga yozish yaxshi, lekin men o'zimning ilovamni xohlayman, u ekrandagi tugmachani bosish orqali sizga kerak bo'lgan amallarni bajaradi;)

Ushbu maqolada men tasvirlab beraman bilan qanday ishlash kerak com porti C++ da.

Yechim oddiy, lekin negadir ishlaydigan misol darhol topilmadi. Sim uchun men uni shu yerda saqlayman.

Albatta, siz QSerial kabi kross-platforma echimlaridan foydalanishingiz mumkin - Qt-dagi kutubxona, men ehtimol shunday qilaman, lekin kelajakda. Endi biz "sof" Windows haqida gapiramiz C++. Biz Visual Studio'da yozamiz. Menda 2010 yil bor, garchi bu hech qanday rol o'ynamasa ham ...

Yangi konsol Win32 loyihasini yarating.

Sarlavha fayllarini qo'shing:

#o'z ichiga oladi #o'z ichiga oladi std nom maydonidan foydalanish;

Biz com port ishlov beruvchisini e'lon qilamiz:

HANDLE hSerial;

Men buni global miqyosda qilaman, shuning uchun uni funktsiyalarga o'tkazishda ko'rsatkichlar haqida tashvishlanishga hojat yo'q.

int _tmain (int argc, _TCHAR* argv) (

Men Windows dasturlash uslubiga dosh berolmayman. Ular hamma narsani o'zlariga ko'ra chaqirishdi va xursand bo'lib o'tirishdi ...

Endi port nomi bilan qatorni e'lon qilish sehri. Gap shundaki, u charning o'zini o'zgartira olmaydi.

LPCTSTR sPortName = L"COM1";

Windows-da ketma-ket portlar bilan ishlash fayl bilan ishlash kabi ishlaydi. Birinchisini ochish yozish/o'qish uchun com porti:

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

Funktsionallikni tekshirish:

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

Endi siz ulanish parametrlarini sozlashingiz kerak:

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

Msdn-da avval parametrlarni olish va keyin ularni o'zgartirish tavsiya etiladi. Biz hali ham o'rganyapmiz, shuning uchun biz so'ragandek qilamiz.

Endi biz o'tadigan qatorni va buning uchun zarur bo'lgan o'zgaruvchilarni e'lon qilamiz:

Char data = "C++ dan salom"; // DWORD o'tkazish uchun satr dwSize = sizeof(ma'lumotlar); // ushbu qatorning o'lchami DWORD dwBytesWritten; // bu erda haqiqatda uzatilgan baytlar soni bo'ladi

String yuborish. Sizga eslatib o'taman, misol eng oddiy, shuning uchun men hech qanday maxsus tekshiruvlar qilmayman:

BOOL iRet = WriteFile(hSerial,ma'lumotlar,dwSize,&dwBytesWritten,NULL);

Shuningdek, nazorat qilish uchun yuborilgan satr hajmi va baytlar sonini ko'rsatishga qaror qildim:

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

Dastur oxirida biz ma'lumotlarni o'qishning cheksiz tsiklini qilamiz:

While(1) ( ReadCOM(); ) 0 ni qaytaradi; )

Endi o'qish funktsiyasi:

Void ReadCOM() ( DWORD iSize; char sReceivedChar; while (to'g'ri) (ReadFile(hSerial, &sReceivedChar, 1, &iSize, 0); // agar (iSize > 0) bo'lsa, 1 bayt oling // biror narsa qabul qilingan bo'lsa, chop eting.<< sReceivedChar; } }

Bu aslida butun misol.

Hisoblashda ketma-ket port ketma-ket aloqa interfeysi bo'lib, u orqali ma'lumotlar bir vaqtning o'zida uzatiladi yoki chiqariladi. Shaxsiy kompyuterlar tarixining ko'p qismida ma'lumotlar ketma-ket portlar orqali modemlar, terminallar va turli xil tashqi qurilmalar kabi qurilmalarga uzatilgan.

Ethernet, FireWire va USB kabi interfeyslar ma'lumotlarni ketma-ket oqim sifatida yuborsa-da, "seriyali port" atamasi odatda modem yoki shunga o'xshash aloqa moslamasi bilan interfeysga mo'ljallangan RS-232 standartiga ko'proq yoki kamroq mos keladigan uskunani aniqlaydi.

Seriya portlari bo'lmagan zamonaviy kompyuterlar RS-232 seriyali qurilmalari bilan mosligini ta'minlash uchun ketma-ket konvertorlarni talab qilishi mumkin. Seriya portlar hali ham sanoat avtomatlashtirish tizimlari, ilmiy asboblar, savdo nuqtalari tizimlari va ba'zi sanoat va iste'mol mahsulotlari kabi ilovalarda qo'llaniladi. Server kompyuterlari ketma-ket portdan boshqaruv yoki diagnostika konsoli sifatida foydalanishi mumkin. Tarmoq uskunalari (masalan, marshrutizatorlar va kalitlar) konfiguratsiya uchun ko'pincha ketma-ket konsoldan foydalanadi. Ushbu sohalarda ketma-ket portlardan foydalanish davom etmoqda, chunki ular oddiy, arzon va konsol funksionalligi yuqori darajada standartlashtirilgan va keng tarqalgan.

COM port pinout (RS232)

com portining 2 turi mavjud: 25-pinli eski ulagich va uning oʻrniga yangiroq 9-pinli ulagich.

Quyida konnektorli odatiy standart 9-pinli RS232 ulagichining diagrammasi keltirilgan, bu turdagi ulagich DB9 ulagichi deb ham ataladi.

  1. Carrier Detect (DCD).
  2. Ma'lumotlarni qabul qilish (RXD).
  3. Ma'lumot uzatish (TXD).
  4. Almashtirishga tayyor qabul qiluvchi (DTR).
  5. Yer (GND).
  6. Almashishga tayyor manba (DSR).
  7. Yuborish uchun so'rov (RTS).
  8. O'tkazishga tayyor (CTS).
  9. Qo'ng'iroq signali (RI).

Switch uchun RJ-45 dan DB-9 seriyali port adapter PIN ma'lumotlari

Konsol porti RS-232 seriyali interfeys bo'lib, u kompyuter yoki noutbuk kabi boshqaruv qurilmasiga ulanish uchun RJ-45 ulagichidan foydalanadi. Noutbuk yoki shaxsiy kompyuteringizda DB-9 ulagichi bo'lmasa va siz noutbuk yoki shaxsiy kompyuteringizni kalitga ulamoqchi bo'lsangiz, RJ-45 va DB-9 adapterlarining kombinatsiyasidan foydalaning.

DB-9RJ-45
Ma'lumot olish2 3
Ma'lumotlarni uzatish3 6
Almashishga tayyorlik4 7
Yer5 5
Yer5 4
Almashishga tayyorlik6 2
Transfer so'rovi7 8
Transfer tayyor8 1

Tel ranglari:

1 qora
2 Jigarrang
3 Qizil
4 apelsin
5 Sariq
6 yashil
7 Moviy
8 Kulrang (yoki oq)