com portundan programlama örnekleri. Bir COM bağlantı noktasının anatomisi. COM genişletme kartları

RS-232 arayüzünün tanımı, kullanılan konektörlerin formatı ve pinlerin amacı, sinyal atamaları, veri değişim protokolü.

Genel açıklama

Resmi olarak "EIA/TIA-232-E" olarak adlandırılan ancak daha çok "COM bağlantı noktası" arabirimi olarak bilinen RS-232 arabirimi, bir zamanlar bilgisayar teknolojisindeki en yaygın arabirimlerden biriydi. USB ve FireWare gibi daha hızlı ve daha akıllı arayüzlerin ortaya çıkmasına rağmen, masaüstü bilgisayarlarda hala bulunur. Radyo amatörlerinin bakış açısından, avantajları arasında düşük bir minimum hız ve protokolün ev yapımı bir cihazda uygulanması kolaylığı bulunur.

Fiziksel arabirim, iki tip konektörden biri tarafından uygulanır: DB-9M veya DB-25M, ikincisi şu anda üretilmekte olan bilgisayarlarda pratik olarak hiçbir zaman bulunmaz.

9 pinli konnektörün pin ataması


9 pinli erkek DB-9M tipi
Pin tarafında pin numaralandırma
Sinyallerin yönü ana bilgisayara (bilgisayar) göredir
Temas sinyal Yön Açıklama
1 CD giriş taşıyıcı algılandı
2 RXD giriş Alınan veri
3 TXD çıkış Aktarılan veriler
4 DTR çıkış Ana Bilgisayar Hazır
5 GND - ortak tel
6 DSR giriş Cihaz hazır
7 RTS çıkış Ana bilgisayar aktarıma hazır
8 CTS giriş Cihaz alınmaya hazır
9 Rİ. giriş Çağrı algılandı

25 pinli konnektörün pin ataması

Temas sinyal Yön Açıklama
1 KALKAN - Ekran
2 TXD çıkış Aktarılan veriler
3 RXD giriş Alınan veri
4 RTS çıkış Ana bilgisayar aktarıma hazır
5 CTS giriş Cihaz alınmaya hazır
6 DSR giriş Cihaz hazır
7 GND - ortak tel
8 CD giriş taşıyıcı algılandı
9 - - Rezerv
10 - - Rezerv
11 - - Kullanılmamış
12 SCD giriş 2. taşıyıcı algılandı
13 SCTS giriş Cihaz #2 almaya hazır
Temas sinyal Yön Açıklama
14 STXD çıkış Aktarılan veriler #2
15 Türk Kızılayı giriş verici zamanlaması
16 SRXD giriş Veri Al #2
17 RCC giriş alıcı zamanlaması
18 LOOP çıkış yerel döngü
19 SRTS çıkış Ana Bilgisayar 2 Numarayı Aktarmaya Hazır
20 DTR çıkış Ana Bilgisayar Hazır
21 RLOOP çıkış Dış döngü
22 Rİ. giriş Çağrı algılandı
23 DRD giriş Veri hızı belirlendi
24 KKTC çıkış Harici verici zamanlaması
25 ÖLÇEK giriş Test modu

Tablolardan, 25 pimli arabirimin, tam teşekküllü bir ikinci gönderme-alma kanalının ("#2" işaretli sinyaller) yanı sıra çok sayıda ek kontrol ve kontrol sinyalinin mevcudiyeti ile ayırt edildiği görülebilir. Bununla birlikte, çoğu zaman, bilgisayarda "geniş" bir konektör olmasına rağmen, ek sinyaller ona bağlı değildir.

Elektriksel özellikler

Verici mantık seviyeleri:"0" - +5 ile +15 Volt arası, "1" - -5 ile -15 Volt arası.

Alıcı mantık seviyeleri:"0" - +3 Volt'un üstünde, "1" - -3 Volt'un altında.

alıcının giriş empedansı 3 kOhm'dan az değil.

Bu özellikler standart tarafından minimum olarak tanımlanır, cihaz uyumluluğunu garanti eder, ancak gerçek özellikler genellikle çok daha iyidir, bu da bir yandan düşük güçlü cihazlara bağlantı noktasından güç verilmesine izin verir (örneğin, çok sayıda ev yapımı veri kablosu cep telefonları için bu şekilde tasarlanmıştır) ve diğer yandan port girişini sağlamak için ters Bipolar sinyal yerine TTL seviyesi.

Ana arayüz sinyallerinin açıklaması

CD- Cihaz, alınan sinyalde bir taşıyıcı tespit ettiğinde bu sinyali ayarlar. Tipik olarak, bu sinyal modemler tarafından kullanılır ve bu şekilde ana bilgisayara hattın diğer ucunda çalışan bir modem algıladıklarını bildirir.

RXD- Ana cihazdan hat alma verileri. "Veri alışverişi protokolü" bölümünde ayrıntılı olarak açıklanmıştır.

TXD- Cihaza veri bağlantısı barındırın. "Veri alışverişi protokolü" bölümünde ayrıntılı olarak açıklanmıştır.

DTR- Ana bilgisayar, veri alışverişi yapmaya hazır olduğunda bu sinyali ayarlar. Aslında sinyal, iletişim programı tarafından port açıldığında ayarlanır ve port açık olduğu sürece bu durumda kalır.

DSR- Cihaz, açıldığında ve ana bilgisayarla iletişim kurmaya hazır olduğunda bu sinyali ayarlar. Bu ve önceki (DTR) sinyaller iletişim için ayarlanmalıdır.

RTS- Host, bu sinyali cihaza veri iletmeye başlamadan önce ayarlar ve ayrıca cihazdan veri almaya hazır olduğunu bildirir. Donanım iletişim kontrolü için kullanılır.

CTS- Cihaz, veri almaya hazır olduğunda (örneğin, host tarafından gönderilen önceki veriler hat üzerinde modem tarafından iletildiğinde veya mevcut olduğunda) host tarafından bir önceki sete (RTS) yanıt olarak bu sinyali verir. ara tampondaki boş alan).

Rİ.- Cihaz (genellikle bir modem), modem aramaları alacak şekilde yapılandırılmışsa bir telefon araması alma gibi, uzak bir sistemden bir arama aldığında bu tonu ayarlar.

iletişim protokolü

RS-232 protokolünde, iki veri alışverişi kontrolü yöntemi vardır: donanım ve yazılım, ayrıca iki iletim modu: senkron ve asenkron. Protokol, herhangi bir kontrol yönteminin herhangi bir iletim modu ile birlikte kullanılmasına izin verir. Ayrıca akış kontrolü olmadan çalışmaya izin verir; bu, bağlantı kurulduğunda (DTR ve DSR sinyalleri ayarlandığında) ana bilgisayar ve cihazın her zaman veri almaya hazır olduğu anlamına gelir.

Donanım kontrol yöntemi RTS ve CTS sinyalleri kullanılarak gerçekleştirilir. Veri iletmek için host (bilgisayar) RTS sinyalini ayarlar ve cihazın CTS sinyalini ayarlamasını bekler ve ardından CTS sinyali ayarlandığı sürece veri iletmeye başlar. CTS sinyali, bir sonraki baytın iletiminin başlamasından hemen önce ana bilgisayar tarafından kontrol edilir, bu nedenle halihazırda iletilmeye başlayan bayt, CTS'nin değerinden bağımsız olarak tamamen iletilecektir. Yarım dupleks iletişim modunda (cihaz ve ana bilgisayar sırayla veri iletir, tam çift yönlü modda bunu aynı anda yapabilirler), ana bilgisayar tarafından RTS sinyalinin kaldırılması, alma moduna geçtiği anlamına gelir.

Yazılım kontrol yöntemi durdurma (karakter kodu 0x13, XOFF olarak adlandırılır) ve devam ettirilmesi (karakter kodu 0x11, XON olarak adlandırılır) için özel karakterlerin alıcı tarafından iletilmesinden oluşur. Bu karakterlerin alınması üzerine, gönderen taraf iletimi durdurmalı veya uygun şekilde devam ettirmelidir (iletilmeyi bekleyen veri varsa). Bu yöntem, donanım uygulaması açısından daha basittir, ancak daha yavaş bir yanıt sağlar ve buna bağlı olarak, alıcı arabelleğindeki boş alan belirli bir sınıra düştüğünde vericinin önceden bildirilmesini gerektirir.

Senkron aktarım modu bitler belirli bir oranda ek duraklamalar olmaksızın birbirini takip ettiğinde sürekli veri alışverişini ifade eder. COM portu ile bu mod desteklenmiyor.

Eşzamansız iletim modu her veri baytının (ve varsa eşlik bitinin) bir sıfır başlangıç ​​biti ve bir veya daha fazla bir durdurma biti saat dizisiyle "sarılması". Asenkron moddaki veri akış şeması şekilde gösterilmiştir.

Olası alıcı işlem algoritmalarından biri sonraki:

  1. Alma sinyalinin "0" seviyesini bekleyin (ana bilgisayar olması durumunda RXD, cihaz olması durumunda TXD).
  2. Bit süresinin yarısını sayın ve sinyal seviyesinin hala "0" olduğunu kontrol edin
  3. Bitin toplam süresini sayın ve mevcut sinyal seviyesini en az anlamlı veri bitine (bit 0) yazın
  4. Diğer tüm veri bitleri için önceki noktayı tekrarlayın
  5. Pariteyi kullanarak doğru alımı kontrol etmek için kullanılacak toplam bit süresini ve mevcut sinyal seviyesini sayın (aşağıya bakın)
  6. Bitin toplam süresini sayın ve mevcut sinyal seviyesinin "1" olduğundan emin olun.

bitleri durdur- durdurma bitlerinin sayısını ayarlar. alan can
aşağıdaki değerleri alın:


  • TEK DURBİT- bir durak biti;
  • ONE5STOPBIT- bir buçuk durak biti (neredeyse hiç
    Kullanılmış);
  • TWOSTOPBIT- iki durdurma biti.

DCB yapısının tüm alanları doldurulduktan sonra,
SetCommState işlevini çağırarak bağlantı noktasını yapılandırın:

BOOL SetCommState(

KOLU hDosya,

LPDCB lpDCB

Başarılı olursa, işlev sıfırdan farklı bir değer döndürür.
değer ve hata durumunda - sıfır.

Bir bağlantı noktası kurmak için ikinci zorunlu yapı,
COMMTIMEOUTS yapısı. Zamanlama parametrelerini tanımlar
alırken ve gönderirken. İşte bu yapının bir açıklaması:

typedef struct_COMMTIMEOUTS(

DWORD ReadIntervalTimeout;

DWORD ReadTotalTimeoutMultiplier;

DWORD ReadTotalTimeoutConstant;

DWORD WriteTotalTimeoutMultiplier;

DWORD WriteTotalTimeoutConstant;

) COMMTIMEOUTS,*LPCOMMTIMEOUTS;

COMMTIMEOUTS yapısının alanları aşağıdaki anlamlara sahiptir:


  • OkumaAralığıZaman Aşımı- maksimum zaman aralığı
    (milisaniye cinsinden) iki okuma arasında izin verilir
    ardışık karakterlerle iletişim hattı. Sırasında
    okuma işlemleri, zaman periyodu andan itibaren saymaya başlar
    ilk karakteri al. Eğer ikisi arasındaki aralık
    ardışık karakterler belirtilen değeri aşacak, işlem
    okuma tamamlanır ve arabellekte biriken tüm veriler aktarılır
    programa. Bu alan için boş bir değer,
    zaman aşımı kullanılmaz.
  • ReadTotalTimeoutMultiplier- çarpanı ayarlar (içinde


    okuma için istenen karakter sayısı ile çarpılır.
  • OkumaToplamZaman AşımıSabit- bir sabit belirtir (içinde

    işlemleri oku. Her okuma işlemi için bu değer
    artı ReadTotalTimeoutMultiplier ile çarpmanın sonucu
    okunması istenen karakter sayısı. Boş alan değeri
    ReadTotalTimeoutMultiplier ve ReadTotalTimeoutConstant araçları
    okuma işlemi için genel zaman aşımının kullanılmadığını.
  • WriteTotalTimeoutÇarpan- çarpanı ayarlar (içinde
    milisaniye) toplam zaman aşımını hesaplamak için kullanılır

    yazılacak karakter sayısı ile çarpılır.
  • WriteTotalTimeoutSabit- bir sabit belirtir (içinde
    milisaniye) toplam zaman aşımını hesaplamak için kullanılır
    işlemleri yaz. Her yazma işlemi için bu değer
    WriteTotalTimeoutMultiplier ile çarpmanın sonucuna eklenir
    yazılacak karakter sayısı. Boş alan değeri
    WriteTotalTimeoutMultiplier ve WriteTotalTimeoutConstant anlamına gelir
    yazma işlemi için genel zaman aşımının kullanılmadığını.

Zaman aşımları hakkında biraz daha. 50 numaralı bağlantı noktasından okuyalım
9.600 bps hızında karakterler. 8 bit kullanıyorsa
karakter, eşlik tamamlayıcısı ve bir durak biti, ardından bir
fiziksel satırdaki bir karakter 11 bittir (başlangıç ​​biti dahil).
Yani 9600 bps'de 50 karakter alınacak

50×11/9600=0.0572916 sn

veya sıfır boşluk varsayarak yaklaşık 57.3 milisaniye
ardışık karakterleri alma arasında. arasındaki aralık ise
karakterler, birinin iletim süresinin yaklaşık yarısıdır
karakter, yani 0,5 milisaniye, daha sonra alma süresi

50×11/9600+49×0.0005=0.0817916 sn

veya yaklaşık 82 milisaniye. daha fazla ise
82 milisaniye, sonra bir hata oluştuğunu varsayabiliriz
harici bir cihazın çalışması ve okumayı durdurabiliriz, böylece
programı dondurmadan. Bu toplam işlem zaman aşımıdır
okuma. Benzer şekilde, genel bir yazma işlemi zaman aşımı vardır.

Toplam işlem zaman aşımını hesaplama formülü, örneğin,
okuma şöyle görünür:

NumOfChar x ReadTotalTimeoutMultiplier +
OkumaToplamZaman AşımıSabit

burada NumOfChar, okuma işlemi için istenen karakter sayısıdır.

Bizim durumumuzda, yazma zaman aşımları atlanabilir ve
onları sıfıra ayarlayın.

COMMTIMEOUTS yapısını doldurduktan sonra aramanız gerekir.
zaman aşımlarını ayarlama işlevi:

BOOL SetCommTimeout(

KOLU hDosya,

LPCOMMTIMEOUTS lpCommTimeouts

İletim-alım işlemleri düşük hızda yapıldığından,
veri arabelleğe alma kullanılır. Alma arabelleği boyutunu ayarlamak ve
aktarmak için şu işlevi kullanmalısınız:

BOOL SetupComm(

KOLU hDosya,

DWORD dwInQueue,

DWORD dwOutQueue

Harici bir cihazla paket alışverişi yaptığınızı varsayalım.
1024 bayt boyutunda bilgi, ardından makul boyutta bir arabellek
1200 olacaktır. SetupComm işlevi ilginçtir, çünkü
sadece kendi ayarlarınızı yaparak ölçülerinizi not edin veya
önerilen arabellek boyutlarınızı tamamen reddedin - bu durumda
bu işlev başarısız olur.

Seri açma ve yapılandırma örneği vereceğim
bağlantı noktası COM1. Kısaca, hata tanımı yok. Bu örnekte
port 9600 bps'de çalışmaya açılır, 1 kullanılır
dur biti, eşlik biti yok:

#Dahil etmek

. . . . . . . . . .

KOL-sap;

COMMTIMEOUTS CommTimeOuts;

DCB dcb;

tanıtıcı = CreateFile("COM1", GENERIC_READ | GENERIC_WRITE,
NULL, NULL, OPEN_EXISTING, FILE_FLAG_OVERLAPPED, NULL);

SetupComm(tutamaç, SizeBuffer, SizeBuffer);

GetCommState(tanıtıcı, &dcb);

dcb.BaudRate = CBR_9600;

dcb.fBinary = DOĞRU;

dcb.fOutxCtsFlow = YANLIŞ;

dcb.fOutxDsrFlow = YANLIŞ;

dcb.fDtrControl = DTR_CONTROL_HANDSHAKE;

dcb.fDsrSensitivity = YANLIŞ;

dcb.fNull = YANLIŞ;

dcb.fRtsControl = RTS_CONTROL_DISABLE;

dcb.fAbortOnError = YANLIŞ;

dcb.ByteSize = 8;

dcb.parity = NOPARITY;

dcb.StopBits = 1;

SetCommState(tanıtıcı, &dcb);

CommTimeOuts.ReadIntervalTimeout=10;

CommTimeOuts.ReadTotalTimeoutMultiplier = 1;

// bu zaman aşımlarının değerleri kendinden emin bir
resepsiyon

// 110 baud'da bile

CommTimeOuts.ReadTotalTimeoutConstant = 100;

// bu durumda zaman aşımı olarak kullanılır
parseller

CommTimeOuts.WriteTotalTimeoutMultiplier = 0;

CommTimeOuts.WriteTotalTimeoutConstant = 0;

SetCommTimeouts(tanıtıcı, &CommTimeOuts);

PurgeComm(tanıtıcı, PURGE_RXCLEAR);

PurgeComm(tutucu, PURGE_TXCLEAR);

Portu açtıktan sonra ilk adım onu ​​sıfırlamaktır, yani
alma ve gönderme arabelleklerinde "çöp" nasıl olabilir. Bu nedenle,
Örneğin sonunda daha önce bilinmeyen bir fonksiyon uyguladık.
TemizlemeComm:

BOOL PurgeComm(

KOLU hDosya,

DWORD dwFlag'lar

Bu işlev iki şey yapabilir: kuyrukları temizleme
sürücüde ilet-al veya tüm işlemleri tamamla
giriş çıkış. Hangi eylemlerin gerçekleştirileceği başkalarına verilir
parametre:


  • PURGE_TXABORT
    kayıtlar, tamamlanmamış olsalar dahi;
  • PURGE_RXABORT- tüm işlemleri hemen durdurur
    okumalar, tamamlanmamış olsalar bile;
  • PURGE_TXCLEAR- sürücüdeki aktarım kuyruğunu temizler;
  • PURGE_RXCLEAR- alma kuyruğunu temizler
    sürücü.
    Bu değerler bitsel kullanılarak birleştirilebilir.
    VEYA işlemleri. Hatalardan sonra arabellekleri temizlemeniz de önerilir.
    iletim ve alım ve liman ile çalışmanın tamamlanmasından sonra.

Şimdi operasyonlara daha yakından bakma zamanı
port için okuma-yazma. Dosyalarla çalışmanın yanı sıra, kullanılır
ReadFile ve WriteFile işlevleri. İşte onların prototipleri:

BOOL Okuma Dosyası(

KOLU hDosya,

LPVOID lpTampon,

DWORD nNumOfBytesToRead,

LPDWORD lpNumOfBytesOkuma,

LPOVERLAPPED lpOverlapped

BOOL WriteFile(

KOLU hDosya,

LPVOID lpTampon,

DWORD nNumOfBytesToWrite,

LPDWORD lpNumOfBytesYazılı,

LPOVERLAPPED lpOverlapped

Bu işlevlerin parametrelerinin amacını göz önünde bulundurun:


  • hDosya- açık iletişim dosyasının tanımlayıcısı
    Liman;
  • lpTampon- arabellek adresi. Bir yazma işlemi için, verilerden
    bu arabellek bağlantı noktasına gönderilecektir. Bunda bir okuma işlemi için
    arabellek hattan alınan verileri içerecektir;
  • nNumOfBytesToRead, nNumOfBytesToWrite- beklenen sayı
    bayt almak veya iletmek için;
  • nNumOfBytesRead, nNumOfBytesYazılı- gerçek sayı
    alınan veya iletilen baytlar. Daha az alınır veya iletilirse
    veri, daha sonra bir disk dosyası için bu gösterir
    bir hata hakkında, ancak iletişim portu için hiç gerekli değil.
    Nedeni zaman aşımıdır.
  • LpÇakışmış- kullanılan OVERLAPPED yapısının adresi
    asenkron işlemler için.

Normal tamamlamada, işlevler bir değer döndürür,
sıfırdan farklı, hata durumunda - sıfır.

İşte bir okuma ve yazma işlemi örneği:

#Dahil etmek

…………..

DWORD uyuşuk, uyuşuk_ok, temp;

COMSTAT ComState;

Örtüşen Örtüşme;

charbuf_in = "Merhaba!";

uyuşuk = 6;

// temp sıfıra eşit değilse, bağlantı noktası durumundadır
hatalar

if(!temp) WriteFile(tanıtıcı, buf_in, uygarlıklar,
&numbytes_ok, &Örtüşme);

ClearCommError(tanıtıcı, &temp, &ComState);

if(!temp) ReadFile(tanıtıcı, buf_in, Nugytes, &numbytes_ok,
&Üst üste gelmek);

// Nugytes_ok değişkeni gerçek sayıyı içerir
transfer-

// alınan baytlar

Bu örnekte, daha önce bilinmeyen iki
COMSTAT ve OVERLAPPED yapıları ve ClearCommError işlevi. İçin
“Üç telli” iletişim durumumuzda, OVERLAPPED yapısı şu şekilde olabilir:
düşünün (sadece örnekte olduğu gibi kullanın). Fonksiyon Prototipi
ClearCommError şöyle görünür:

BOOL ClearCommError(

KOLU hDosya,

LPDWORD lpHataları,

LPCOMSTAT lpStat

Bu işlev, bir bağlantı noktası hatasının bayrağını (varsa) sıfırlar.
yer) ve yapıdaki limanın durumu hakkında bilgi verir.
KOSTATLAR:

typedef struct_COMSTAT

DWORD fCtsHold:1;

DWORD fDsrHold:1;

DWORD fRlsdHold:1;

DWORD fXoffHold:1;

DWORD fXoffSent:1;

DWORD fEof:1;

DWORD fTxim:1;

DWORD fAyrılmış:25;

DWORD cbInQue;

DWORD cbOutQue;

) COMSTAT, *LPCOMSTAT;

Bu yapının iki alanını kullanabiliriz:


  • CbInQue alma arabelleğindeki karakter sayısıdır. Bu karakterler
    satırdan alınmış, ancak ReadFile işlevi tarafından henüz okunmamış;
  • CbOutQue iletim arabelleğindeki karakter sayısıdır. Bunlar
    karakterler henüz satıra aktarılmamıştır.

Bu yapının kalan alanları hakkında bilgi içerir
hatalar.

Ve son olarak, limanla çalışmayı bitirdikten sonra kapatılmalıdır.
Win32'de bir nesneyi kapatmak, CloseHandle işlevi tarafından gerçekleştirilir:

BOOL CloseHandle(

KOLU hNesne

Sitemizde çalışmak için sınıfın tam metnini bulabilirsiniz.
"üç kablo üzerinden" asenkron modda seri port ve
Ayrıca bu sınıfı kullanan örnek bir programa bakın. Hepsi bu
C++ Builder altında yazılmıştır, ancak yalnızca işlevler kullanıldığından
Win32 API, program metni herhangi bir C++ derleyicisi için kolayca değiştirilebilir.
Sınıfın tam olarak “kurallara göre” yazılmamış olması da mümkündür - lütfen
üzgünüm, yazar "doğru" bir programcı değil ve şöyle yazıyor,
ona ne kadar yakışıyor J .

Selam arkadaşlar. Sistem bloğunu incelemeye devam ediyoruz. Bugün bilgisayar portlarından bahsedeceğim. Ne olduğunu? İnternet teknolojilerinin hızla gelişmesiyle birlikte "port", "soket" kavramları yaygın olarak duyulmaktadır. Bu başka bir dal ve bugün bunun hakkında konuşmayacağız. Bu makalenin konusu, çeşitli cihazları sistem birimine bağlamak için tasarlanmış tamamen "demir", "gerçek" konektörler (veya bağlantı noktaları) hakkında bilgi içerir.

Donanım da gelişiyor ve her nesilde satın alınan sistem birimlerinde yeni tip konektörler (veya bağlantı noktaları) keşfediyoruz. Çeşitli sözde çevresel cihazlar bunlara bağlanır. Sistem birimi + monitör = bilgisayar. Bunlara bağlanan her şey (yazıcılar, tarayıcılar, programcılar, video kartları, monitörler vb.) çevre birimleridir.

Bilgisayarda birçok bağlantı noktası vardır. Sistem biriminin ana kartında bulunurlar ve konektörlerdir (çoğu arkadadır). Bazı konektörler de ön panelde görüntülenir ve ayrıca ana karta da bağlıdırlar.

Ayrıca özel genişletme yuvaları aracılığıyla üzerine ek cihazlar da kurabilirsiniz. Bu aygıtlar, ayrı grafik kartları, ağ kartları, Wi-Fi bağdaştırıcıları, USB hub'ları, kart okuyucuları, elektronik kilitler, video kartları ve çok daha fazlasını içerir.

Genişletme yuvalarının varlığı, fazladan bir gün harcamadan tercihlerinize göre bir tasarımcı gibi bir bilgisayarı bağımsız olarak monte etmenize olanak tanır. Çünkü geliştiriciler, üretilen ekipmanı uzun süredir standartlaştırdı. Gerekirse, güncelleyebilirsiniz. IBM-PC uyumlu bilgisayarların (bu tür bir platform olarak adlandırılır) bir zamanlar Apple Macintosh pazarından çıkarılmasının ana nedeni budur.

Sistem birimleri başlangıçta ayrılamazdı ve ekipman değiştirilemezdi. Böyle bir cihazı yükseltmek imkansızdır ve böyle bir cihazın bakımı azalır.

Bilgisayar bağlantı noktalarının kısa listesi

Konektörleri görsel olarak birbirinden ayırt edebilmeniz gerekir. Üretici her zaman isimlerini belirtmez. Konnektörler sistem biriminin arka panelinde gruplandırılmış olduğundan, onunla başlayacağız. Tüm bağlantı noktalarının İngilizce adı vardır, yapılacak bir şey yoktur. Kısaca ayrılabilirler:

  1. Seri bağlantı girişleri;
  2. Paralel bağlantı noktası;
  3. Bilgisayar ve fare için bağlantı noktaları;
  4. USB bağlantı noktaları;
  5. SCSI bağlantı noktaları;
  6. Video bağlantı noktaları;
  7. Ağ kablosu konektörleri;
  8. Ses konektörleri;
  9. Kart okuyucular;

Bu çeşitlerden bazıları çoktan unutulmaya yüz tuttu ve artık modern anakartlarda bulunamıyor. Diğer çeşitler, aksine, işlevlerini genişletir ve gurmeler için anakartlar vardır - kaliteli ses veya video severler.


Bu tür kartlar, üçüncü taraf ses veya video formatlarını da (Sony, Philips) destekleyebilir ve ardından böyle bir bilgisayarda uygun konektörü bulabilirsiniz. Ses ve video bağlantı noktaları bugün özel bir çeşitlilikle övünebilir.

Çevre birimlerini bağlamak için bilgisayar bağlantı noktaları

Seri port- bugün zaten modası geçmiş. Ancak elektronik cihazları onaran uzmanlar için değerlidirler. Başlangıçta, bu bağlantı noktası bir modemi bağlamak için kullanıldı. Veri aktarım hızı tipiktir - saniyede 110 ila 115200 bit. Genellikle konektörlü iki tane vardı. DB 9 baba tipi:

Hız, programcının bir mikrodenetleyiciyi veya bir cep telefonunu flaş etmesi için yeterlidir. Veya kesintisiz bir güç kaynağı ile veri alışverişi için. Bu bağlantı noktaları denir COM1 ve COM2.

paralel bağlantı noktası- çoğu kişiye aşinadır, çünkü esas olarak bir yazıcıyı bağlamak için tasarlanmıştır. Ayrıca nesli tükenmek üzere olan bir tür. Ayrıca donanım güvenlik anahtarlarını bağlamak için kullanıldı.


Bağlantı için konektör kullanılır. DB25"anne" gibi. Veri aktarım hızı düşüktür - ancak bir programcı veya eski bir lazer yazıcı için yeterlidir. Çoğu eski bilgisayarın her zaman iki seri bağlantı noktası ve bir paralel bağlantı noktası vardır.

Klavye ve fare bağlantı noktaları tüm kullanıcılara aşinadır. Modern bilgisayarlarda mor ve yeşildir. Fare ve klavyenin fişleri aynı renktedir. Kafa karıştırmak zor. Konektörler altı pimli (mini-Din) tip "anne"dir. Almanya'da icat edildiler ve standart haline geldi. IBM/PC2 için başka bir ad

daha önce bahsedilen IBM PC platformunda ilk kez kullanıldıklarından beri. Bağlanırken konektörler karışırsa, cihazlar çalışmayacaktır. Kesin bir artı - USB bağlantı noktalarından tasarruf edin. Eksi - yanlış bağlanırsa bilgisayarı yeniden başlattığınızdan emin olun. Bu arada, aynı zamanda yok olan bir tür. Birçok modern bilgisayarda, bu bağlantı noktası yalnızca bir tane bırakılır ve aynı zamanda mor-yeşile boyanır. Fare veya klavye olmak üzere yalnızca bir cihaz bağlayabilirsiniz.

USB bağlantı noktaları. Evrensel seri veriyolu, ( Evrensel seri veriyolu). 1998'den beri diğer limanları dışarıda bırakıyor; bugün araba radyolarında ve kameralarda bile bu konektörü bulacaksınız. İlk nesillerde veri aktarım hızı yaklaşık 12 Mb/sn idi. - o zamanlar için akıllara durgunluk veren. Bugün 5 Gbps hıza sahip USB 3 kullanıyoruz.

Bu portlar harici olarak değişmemiştir. Bilgisayarda Tip A konektörler bulunur. Bağlı herhangi bir cihazdaki konektöre "B" adı verilir. İkisi akım, ikisi veri iletimi için olmak üzere dört kontağı vardır. Buna göre USB 3.0 portlarında iki kat daha fazla pin bulunuyor.

SCSI bağlantı noktaları(Küçük Bilgisayar Sistemleri Arayüzü) . Bizde oldukça spesifik ve nadir bir şey; Sıradan bir kullanıcıyla yurt dışında bulamayacağınızı düşünüyorum. Bu tür arayüzlere sahip cihazların kurumsal kullanım için sipariş üzerine yapıldığına inanıyorum. Bu, 160 Mbps'ye kadar hızlarda veri alışverişi için bir ağ arayüzüdür.


1999 yılında Dell tarafından Amerika'dan getirilen bir dizüstü bilgisayara rastladım. Bu çok pinli bağlantı noktalarından birine sahipti. Sadece laptop masanın üzerine yerleştirilerek kullanılabilecek şekilde yerleştirilmişti. Konektörün kendisi yaylardaki perdelerle kapatılmıştır. Sonuç olarak, Amerika'da bir yerde bu konektörün yerleşik olduğu masalar da vardı ... Getiriyorsun, masanın üzerine koyuyorsun ve şirket ağına bağlı.

Arayüzün çeşitleri bize zaten tanıdık geliyor db-25, 50-Yüksek Yoğunluk, 68-pin-Yüksek-Yoğunluk, 80-pin SCA, Centronics'in yanı sıra. Bu arayüze sabit diskleri bağlamak da mümkün oldu. Bağlantıdan sorumlu özel bir karttır - ana bilgisayar adaptörü.


video bağlantı noktaları. Onları başkalarıyla da karıştıramazsınız. Standart video bağlantı noktası, mavi bir 15 pimli dişi D tipi VGA konektörüdür. Bir monitör bağlamak için kullanılır. Bu, 1987'de kabul edilen eski bir standarttır. Tüm anakartlarda yoktur. "Gemide" yoksa, sistem biriminin altında bulunabilir. Genişletme yuvasına bir video kartı takılı:

Zaten sahip olduğunuza ("gemide") ek olarak bir video kartı takmaya karar verirseniz, ikincisi artık çalışmayacaktır. Bu iyi. Monitör yalnızca kurulu olana bağlandığında çalışır.

Modern video kartlarında VGA bağlantı noktası bulmak zaten zorlaştı; başka bir çeşitlilikle değiştiriliyorlar - DVI. Bir geçiş anakartında şuna benzer:

Çoğu zaman bir VGA ekran kartının arızalandığı durumlar vardır. Yeni bir tane satın aldıktan sonra, yalnızca DVI bağlantı noktalarına sahip olduğu ortaya çıktı.Bu durumda, bir adaptör satın almanız ve DVI konektörüne yüklemeniz gerekir:

Adaptör tipine dikkat edin. Gerçek şu ki, DVI konektörleri de farklıdır - yeni pahalı video kartlarında DVI-D veya DVI-I bağlantı noktaları bulunur. Adaptörler birbiriyle değiştirilemez, bu noktayı satıcıyla kontrol edin.

Bu durumda yeni bir monitör almanıza gerek kalmayacak. Şimdiye kadarki yeni monitörler ayrıca iki tür konektörle birlikte gelir - VGA ve DVI.

HDMI bağlantı noktası. 21. yüzyılda onsuz nerede şimdi? Multimedya arayüzü, kopya korumalı yüksek tanımlı video ve ses iletmek için tasarlanmıştır. Hem yukarıdaki videoyu hem de bazı ses bağlantı noktalarını (SCART, VGA, YPbPr, RCA, S-Video.) aynı anda değiştirir. Muhtemelen bu arayüz sonunda diğer her şeyin yerini alacak. Herhangi bir dijital ekipmanda bulunabilir - kameradan bilgisayara (veya dizüstü bilgisayara).

Boyut, bir USB bağlantı noktasıyla karşılaştırılabilir ve veri aktarım hızı, yukarıdakilere kıyasla çok büyük - 48 Gbps'ye kadar. Veri iletimi, parazit koruması iyi olan bir kablo üzerinden gerçekleştirilir. Kablo bir dizüstü bilgisayara ve TV'ye bağlanabilir ve video izleyebilirsiniz. Kablo uzunluğu 10 metreyi geçmemelidir, aksi takdirde bir amplifikatör/sinyal tekrarlayıcı gereklidir.

profesyonel ses jakları Detaylı konuşmayacağım. Özel bir şey söz konusu olduğunda, her şey bir ev DVD oynatıcısında olduğu gibi görünür. Bunun bir örneği, bir genişletme yuvasına takılabilen SPDiF konektörüdür:

SONY ve PHILIPS'ten ses standardı olan bu kart, ilgili konektöre bir konektör kullanılarak ana karta bağlanır. Bir mikrofon, hoparlör, kulaklık bağlamak için standart jaklar şöyle görünür:

HD ses istiyorsanız, uygun adaptörü buraya takmanız gerekebilir. Anakartınızın belgelerini okuyun:

ağ bağlantı noktaları. Zamanımızda onlarsız yapmak imkansız. İnterneti kablo veya radyo aracılığıyla bir ağ arayüzü üzerinden alıyoruz. Anakartlarda standart bir yerleşik konektör bulunur RJ45 bir internet kablosu bağlamak için:

Eski bilgisayarlarda hız standardı 100 Mbps idi, modern ağ kartları 1000 Mbps veriyor. Bir ağ kartı sizin için yeterli değilse, bir tane daha satın alabilir ve genişletme yuvasına takabilirsiniz:

Bu kart PCI yuvası için uygundur. PCI-express için daha küçük seçenekler vardır:

Satın alırken belirli bir kartın veri aktarım hızını belirtin. Kablosuz ağların hayranları için geniş bir Wi-Fi adaptör yelpazesi de sunulmaktadır:

Ayrıca PCI genişletme yuvalarına veya PCI Express'e takılabilirler. Ancak, sistem biriminde dolaşmak istemiyorsanız, böyle bir kartın bir çeşidi olan bir USB de satın alabilirsiniz:

Porta takıp WIFI şifresini giriyorsunuz. Ve bağlı başka bir çevre biriminiz var. Birçok ev tipi yazıcı modelinde ayrıca bir WIi-Fi adaptörü bulunur ve bu kurulumla kablosuz olarak yazdırabilirsiniz. Neyse ki, bugün zengin bir ağ kartı ve yazıcı seçeneği var.

Bilgisayarı kapatırken USB bağlantı noktaları nasıl devre dışı bırakılır?

Son olarak, size bir sorunu nasıl çözeceğinizi anlatacağım. Video kaydı ve skype sohbeti için mikrofonlu bir kulaklığım var. Çinliler gerektiğinde itmeyi severler ve güzellik için LED'lere ihtiyaç duymazlar. Bilgisayar kapatıldığında, USB bağlantı noktasından güç aldığı için arka ışık yanmaya devam eder.

Klavye de parlıyor, bu da geceleri pek uygun değil, ancak fena değil (karanlıkta yazarsanız). Bağlantı noktalarına giden gücü kalıcı olarak kapatmak için tuş kombinasyonunu yazmayı deneyin. Kazan+R ve "Çalıştır" satırına komutu yapıştırın powercfg /h kapalı.

Ardından bilgisayarı kapatmanız gerekir. Semptomlar büyük olasılıkla ortadan kalkacaktır. Bu komut uyku modunu devre dışı bırakır ve bilgisayar tamamen kesilir. Güç ayarları için kontrol panelinde "Güç Planı"na bakabilirsin ama bu ayarın BIOS üzerinden kapatıldığı anakart modelleri var. Ve en gelişmişinde, bu işlev devre dışı bırakılmaz veya çok derinde gizlenmez. Gadget'ları gece şarj etmenin çok uygun olduğu varsayılmaktadır.

Zor durumlarda, anakart belgeleri yardımcı olabilir. İstediğiniz jumper'ı (jumper) bulun ve gücü manuel olarak kapatın. Ama bu çok zor. Ve en kolay yol, anahtarlı bir USB hub satın almak ve gerekli çevre birimlerini ona bağlamaktır. Ve acı çekme. Tekrar buluşana kadar hoşçakalın!

Son zamanlarda, seri veri iletimi yöntemi paralel olanın yerini alıyor.
Örnekler için çok uzaklarda aramanıza gerek yok: USB ve SATA veri yollarının görünümü kendini gösteriyor.
Gerçekten de, paralel veri yolunu ölçeklendirmek zordur (daha uzun kablo, daha yüksek veri yolu saat hızı), teknolojilerin arkada paralel veri yollarına dönüşmesi şaşırtıcı değildir.

seri arayüzler

Günümüzde çok sayıda farklı seri veri arabirimi bulunmaktadır.
Daha önce bahsedilen USB ve SATA'ya ek olarak, en az iki iyi bilinen RS-232 ve MIDI standardını da (aka GamePort) hatırlayabiliriz.
Hepsi aynı şey tarafından birleştirilir - her bilgi bitinin seri iletimi veya Seri Arayüz.
Bu tür arayüzlerin birçok avantajı vardır ve bunlardan en önemlisi az sayıda bağlantı kablosu ve dolayısıyla daha düşük bir fiyattır.

Veri aktarımı

Seri iletişim iki şekilde gerçekleştirilebilir: asenkron ve senkron.

Senkron veri iletimi, iletilen sinyale saat bilgisi ekleyerek veya özel bir senkron hattı kullanarak alıcı ve vericinin çalışmasının senkronize edilmesini içerir.
Alıcı ve verici, cihazların aynı frekansta çalışmasını sağlayan özel bir senkronizasyon kablosu ile bağlanmalıdır.

Asenkron iletim, verinin başlangıcını ve sonunu işaretleyen özel bitlerin kullanımını içerir - başlangıç ​​(mantıksal sıfır) ve durdurma (mantıksal olan) bitleri.
Aktarılan tek bitlerin çift veya tek sayısını belirleyen özel bir eşlik biti kullanmak da mümkündür (kabul edilen kurala bağlı olarak).
Alıcı tarafta bu bit analiz edilir ve eşlik biti tek bit sayısıyla eşleşmezse veri paketi tekrar gönderilir.

Böyle bir kontrolün, yalnızca bir bitin yanlış iletilmesi durumunda bir hatayı tespit etmenize izin verdiğini, birkaç bit yanlış iletilmişse, bu kontrolün zaten yanlış olduğunu belirtmekte fayda var.
Bir sonraki veri paketinin gönderilmesi, durdurma bitinin gönderilmesinden sonra herhangi bir zamanda gerçekleşebilir ve elbette, başlangıç ​​biti ile başlamalıdır.
Hiçbir şey anlayamıyor musunuz?

Peki, tüm bilgisayar teknolojileri basit olsaydı, o zaman herhangi bir ev hanımı uzun zaman önce köfte ile paralel olarak yeni protokoller şekillendirirdi ...
Sürece farklı bir açıdan bakmaya çalışalım.
Veriler, yaklaşık olarak IP paketleri gibi paketler halinde iletilir, bilgi bitleri verilerle birlikte gider, bu bitlerin sayısı 2 ila 3 buçuk arasında değişebilir.
Yarım mı?!
Evet, doğru duydunuz, yarım!

Durdurma biti veya daha doğrusu durdurma bitine karşılık gelen iletilen sinyal, bir bite karşılık gelen sinyalden daha uzun, ancak iki bitten daha kısa bir süreye sahip olabilir.
Bu nedenle, bir paket her zaman sıfır olan bir başlangıç ​​biti ile başlar, ardından veri bitleri, ardından bir eşlik biti ve ardından her zaman bir olan bir durdurma biti gelir.
Ardından, keyfi bir süre sonra, Moskova'daki vuruşların yürüyüşü devam ediyor.

Bu iletim yöntemi, alıcı ve vericinin aynı hızda (iyi veya neredeyse aynı hızda) çalışması gerektiğini ima eder, aksi takdirde alıcının gelen veri bitlerini işlemek için zamanı olmaz veya eski biti yenisi için alır. bir.
Bunu önlemek için, her bit strobe edilir, yani cihaz içinde üretilen özel bir sinyal - bir "strobe" ile eşzamanlı olarak gönderilir.
Asenkron cihazlar için bir dizi belirli hız vardır - saniyede 50, 75, 110, 150, 300, 600, 1200, 2400, 4800, 9600, 19200, 38400, 57600 ve 115200 bit.

Muhtemelen "baud" un veri aktarım hızını ölçmek için bir birim olarak kullanıldığını duymuşsunuzdur - hattın durumunu değiştirme sıklığı ve bu değer, yalnızca sinyal iki değerden birine sahip olabilirse veri aktarım hızıyla çakışacaktır. .
Bir sinyal değişikliğinde birkaç bit kodlanırsa (ve bu birçok modemde olduğu gibi), iletim hızı ve hat değiştirme frekansı tamamen farklı değerler olacaktır.

Şimdi gizemli "veri paketi" terimi hakkında birkaç söz.
Bu durumda paket, başlangıç ​​ve bitiş bitleri arasında iletilen bir dizi bit olarak anlaşılır.
Sayıları beş ila sekiz arasında değişebilir.
İnsan neden tam olarak beş ila sekiz bit olduğunu merak edebilir.
Neden bir paket içinde bir kilobayt veriyi bir kerede aktarmıyorsunuz?

Cevap açıktır: küçük veri paketlerini iletirken, onlarla üç servis biti göndererek kaybedebiliriz (verinin yüzde 50 ila 30'u), ancak paket iletim sırasında bozulursa, bunu kolayca tanıyabiliriz (unutmayın) parite biti?) ve onu tekrar hızlı bir şekilde iletir.
Ancak bir kilobayt veride bir hatayı tespit etmek zor olacak ve iletmek çok daha zor olacak.

Eşzamansız bir seri veri aktarım aygıtının bir örneği, bir bilgisayar COM bağlantı noktası, Trussardi tarafından tasarlanan favori bir modem ve aynı bağlantı noktasına bağlı bir faredir; bu, bir nedenden dolayı dar görüşlü sekreterler her zaman PS / 2'ye girmeye çalışırlar.
Standart aynı zamanda senkron veri aktarımını da tanımladığı için, tüm bu cihazlar RS-232 arayüzünde veya daha doğrusu asenkron kısmında çalışır.

AMD Radeon Software Adrenalin Edition Sürücü 19.9.2 İsteğe Bağlı

Yeni AMD Radeon Software Adrenalin Edition 19.9.2 Opsiyonel sürücü, Borderlands 3'teki performansı iyileştirir ve Radeon Image Sharpening için destek ekler.

Windows 10 Toplu Güncelleştirme 1903 KB4515384 (eklendi)

10 Eylül 2019'da Microsoft, bir dizi güvenlik iyileştirmesi ve Windows Arama'yı bozan ve yüksek CPU kullanımına neden olan bir hata için düzeltme içeren Windows 10 sürüm 1903 - KB4515384 için toplu güncelleştirmeyi yayımladı.

Mikrodenetleyiciyi bir bilgisayara bağlamak için genellikle bir COM bağlantı noktası kullanılır. Bu yazıda, bir bilgisayardan kontrol komutlarının nasıl gönderileceğini ve bir kontrol cihazından nasıl veri gönderileceğini göstereceğiz.

İşe hazırlık

Çoğu mikrodenetleyicide birden fazla G/Ç bağlantı noktası bulunur. UART protokolü, bir PC ile iletişim için en uygun olanıdır. Seri asenkron veri aktarım protokolüdür. Kartı bir USB arayüzüne dönüştürmek için, kartta bir USB-RS232 dönüştürücü - FT232RL bulunur.
Bu makaledeki örnekleri çalıştırmak için yalnızca Arduino uyumlu bir panoya ihtiyacınız var. Kullanırız . Kartınızda pim 13'e bağlı bir LED ve bir sıfırlama düğmesi olduğundan emin olun.

Örneğin, bir ASCII tablosu görüntüleyen panoya bir kod yükleyelim. ASCII, ondalık basamakları, Latin ve ulusal alfabeleri, noktalama işaretlerini ve kontrol karakterlerini temsil eden bir kodlamadır.

int sembolü = 33 ; void setup() ( Serial. start(9600 ) ; Serial. println(" ASCII Tablosu ~ Karakter Haritası " ) ; ) void loop() ( Serial. write(symbol) ; Serial. print(" , dec: " ) ; Serial .print(sembol) ; Serial.print(" , hex: " ) ; Serial.print(sembol, HEX) ; Serial.print(" , ekim: " ) ; Serial.print(sembol, OCT) ; Serial.print( " , bin: " ) ; Serial.println(sembol, BIN) ; if (sembol == 126) ( while (true) ( ​​​devam ; ) ) symbol+ + ; )

Sembol değişkeni sembol kodunu saklar. Tablo 33'te başlar ve 126'da biter, bu nedenle sembol başlangıçta 33'e ayarlanır.
UART bağlantı noktasının çalışmasını başlatmak için işlevi kullanın Seri.başlangıç(). Tek parametresi hızdır. İletim protokolü eşzamansız olduğundan, hız, verici ve alıcı taraflar arasında önceden anlaşılmalıdır. Bu örnekte, hız 9600bps'dir.
Bir bağlantı noktasına değer yazmak için üç işlev kullanılır:

  1. Seri.write()– verileri porta ikili biçimde yazar.
  2. Seri.baskı() birçok değere sahip olabilir, ancak hepsi bilgiyi insan dostu bir biçimde göstermeye yarar. Örneğin, geçilecek bir parametre olarak belirtilen bilgi tırnak içine alınmışsa, terminal programı bunu değişmeden gösterecektir. Belirli bir sayı sisteminde herhangi bir değeri görüntülemek istiyorsanız, bir hizmet sözcüğü eklemeniz gerekir: BIN-ikili, OCT - sekizli, Aralık - ondalık, HEX - onaltılık. Örneğin, Seri.baskı(25,HEX).
  3. Seri.println() ile aynı şeyi yapar Seri.baskı(), ancak bilgileri görüntüledikten sonra yine de dizeyi çevirir.

Programın çalışmasını kontrol etmek için bilgisayarın COM bağlantı noktasından veri alan bir terminal programına sahip olması gerekir. Arduino IDE'de zaten yerleşik bir tane var. Aramak için menüden Araçlar->Port İzleme'yi seçin. Bu yardımcı programın penceresi çok basittir:

Şimdi yeniden başlat düğmesine tıklayın. MK yeniden başlatılacak ve ASCII tablosunu görüntüleyecektir:

Kodun şu kısmına dikkat edin:

if (sembol = = 126 ) ( while (true) ( ​​​devam ; ) )

Programın yürütülmesini durdurur. Bunu hariç tutarsanız, tablo süresiz olarak görüntülenecektir.
Edinilen bilgileri pekiştirmek için, adınızı saniyede bir seri bağlantı noktasına gönderecek sonsuz bir döngü yazmayı deneyin. Çıktıya adım numaralarını ekleyin ve adından sonraki satırı çevirmeyi unutmayın.

PC'den komut gönderme

Bunu yapmadan önce, bir COM portunun nasıl çalıştığı hakkında bir fikir edinmeniz gerekir.
Her şeyden önce, tüm değiş tokuş bellek arabelleği aracılığıyla gerçekleşir. Yani, bir PC'den bir cihaza bir şey gönderdiğinizde, veriler hafızanın bazı özel bölümlerine yerleştirilir. Cihaz hazır olur olmaz arabellekten verileri okur. İşlev, arabelleğin durumunu kontrol etmenizi sağlar seri.uygun(). Bu işlev, arabellekteki bayt sayısını döndürür. Bu baytları çıkarmak için işlevi kullanmanız gerekir. Seri.okuma(). Bir örnekle bu fonksiyonların nasıl çalıştığını görelim:

int değer = 0 ; void setup() ( Serial. startup(9600 ) ; ) void loop() ( if (Serial.available() > 0 ) ( val = Serial. read() ; Serial. print(" Aldım: " ) ; Serial. write(val) ; Serial.println() ; ) )

Kod mikrodenetleyicinin belleğine yüklendikten sonra COM bağlantı noktası monitörünü açın. Bir karakter yazın ve Enter'a basın. Alınan veri alanında şunları göreceksiniz: "Aldım: X", yerine nerede x girdiğiniz karakter olacaktır.
Program, ana döngüde süresiz olarak döner. Porta bir bayt yazıldığı anda Serial.available() fonksiyonu 1 değerini alır yani koşul sağlanır. Seri.kullanılabilir() > 0. Sonraki işlev Seri.okuma() bu baytı okur, böylece arabelleği temizler. Bundan sonra, zaten bildiğiniz işlevleri kullanarak çıktı gerçekleşir.
Arduino IDE'nin yerleşik COM bağlantı noktası monitörünü kullanmanın bazı sınırlamaları vardır. Karttan COM bağlantı noktasına veri gönderirken, çıktı keyfi bir biçimde düzenlenebilir. Ve PC'den karta gönderirken, karakterlerin aktarımı ASCII tablosuna göre gerçekleşir. Bu, örneğin "1" karakterini girdiğinizde, "00110001" ikilisinin (yani, ondalık olarak "49") COM bağlantı noktası üzerinden gönderildiği anlamına gelir.
Kodu biraz değiştirelim ve şu ifadeyi kontrol edelim:

int değer = 0 ; void setup() ( Serial. startup(9600 ) ; ) void loop() ( if (Serial.available() > 0 ) ( val = Serial. read() ; Serial. print(" Aldım: " ) ; Serial. println(val, BIN) ; ) )

İndirdikten sonra, “1” gönderirken bağlantı noktası monitöründe yanıt olarak şunu göreceksiniz: “Aldım: 110001”. Çıktı formatını değiştirebilir ve diğer karakterlerle kartın neyi kabul ettiğini görebilirsiniz.

COM portu üzerinden cihaz kontrolü

Açıkçası, bir PC'den gelen komutlarla mikrodenetleyicinin herhangi bir işlevini kontrol edebilirsiniz. LED'in çalışmasını kontrol eden programı indirin:

int değer = 0 ; void setup() ( Serial. startup(9600 ) ; ) void loop() ( if (Serial.available() > 0 ) ( val = Serial. read() ; if (val= = "H" ) digitalWrite(13 , YÜKSEK) ; if (val= = "L" ) digitalWrite(13 , DÜŞÜK) ; ) )

COM portuna “H” karakteri gönderildiğinde 13. çıkıştaki LED yanar, “L” gönderildiğinde LED söner.
COM bağlantı noktasından veri almanın sonuçlarına göre, programın ana döngüde farklı eylemler gerçekleştirmesini istiyorsanız, ana döngüdeki koşulları kontrol edebilirsiniz. Örneğin.

gastroguru 2017