Bilgisayardaki bir kedi limanı nedir. Kişisel bir bilgisayarın limanları nelerdir? Ve onlar neler? Bilgisayarı kapattığınızda USB bağlantı noktalarını nasıl devre dışı bırakılır?

RS-232 arayüzünün açıklaması, kullanılan konektörlerin formatı ve çıkışların, sinyallerin, veri değişim protokolünün atanması.

Genel açıklama

Resmi "EIA / TIA-232-E" olarak adlandırılan RS-232 arayüzü, ancak daha önce "COM Portu" arayüzü olarak bilinen daha iyi bilinen en yaygın arayüzlerden biriydi. bilgisayar teknisyeni. Hala buluşuyor masa bilgisayarlarıUSB ve güvenlik şortu gibi daha hızlı ve "akıllı" arayüzlerin ortaya çıkmasına rağmen. Radyo amatörler açısından avantajları, protokolün ev yapımı cihazda uygulanmasının düşük asgari hızı ve basitliğine bağlanabilir.

Fiziksel arayüz, iki tür konektörden biri tarafından uygulanır: DB-9M veya DB-25M, mevcut mevcut bilgisayarlarda ikincisi pratik olarak bulunmaz.

9 pinli konnektör sonuçlarının atanması


9-Pin DB-9M tipi fiş
PIN İLETİŞİM NUMARALARI
Sinyallerin yönü ana bilgisayara göre gösterilir (bilgisayar)
İletişim Sinyal Yönlendirmek Açıklama
1 CD Giriş Yükleme tespit edildi
2 Rxd. Giriş Kabul edilen veriler
3 Txd. Çıktı İletilen veriler
4 DTR. Çıktı Ev sahibi hazır
5 GND. - Ortak tel
6 DSR. Giriş Cihaz hazır
7 Rts Çıktı Şanzıman için hazır ev sahibi
8 Cts. Giriş Cihaz almaya hazır
9 ri Giriş Bir zorluk bulundu

15 pinli konnektör sonuçlarının atanması

İletişim Sinyal Yönlendirmek Açıklama
1 Kalkan - Ekran
2 Txd. Çıktı İletilen veriler
3 Rxd. Giriş Kabul edilen veriler
4 Rts Çıktı Şanzıman için hazır ev sahibi
5 Cts. Giriş Cihaz almaya hazır
6 DSR. Giriş Cihaz hazır
7 GND. - Ortak tel
8 CD Giriş Yükleme tespit edildi
9 - - Rezerv
10 - - Rezerv
11 - - Kullanılmamış
12 SCD. Giriş Taşıyıcı tespit edildi. # 2
13 SCTS. Giriş Cihaz alımı için hazır # 2
İletişim Sinyal Yönlendirmek Açıklama
14 Stxd. Çıktı İletilen Veri # 2
15 TRC. Giriş Vericiyi alarak
16 Srxd. Giriş Kabul Edilen Veri # 2
17 Ricc Giriş Alıcıya inceliğini
18 Lloop. Çıktı Yerel döngü
19 Srs. Çıktı Ana bilgisayar # 2 iletmeye hazır
20 DTR. Çıktı Ev sahibi hazır
21 Rloop. Çıktı Dış döngü
22 ri Giriş Bir zorluk bulundu
23 DRD. Giriş Verilerin hızı belirlenir
24 Tro Çıktı Harici vericiyi al
25 Ölçek Giriş Test modu

Tablo, 25 pinli arayüzün, tam teşekküllü bir ikinci alım kanalının ("# 2" belirtilen sinyaller) ve sayısız ek kontrol ve kontrol sinyalinin varlığı ile ayırt edildiğini göstermektedir. Bununla birlikte, genellikle, "Geniş" konektördeki varlığa rağmen, ek sinyaller basitçe bağlı değildir.

Elektriksel özellikler

Mantıksal Verici Seviyeleri: "0" - +5 ila +15 volt, "1" - -5 ila -15 volt arasında.

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

giriş direnci alıcı en az 3 com.

Bu özellikler standart olarak en az standart olarak tanımlanır, bununla birlikte, cihaz uyumluluğunu garanti eder, ancak gerçek özellikler genellikle, bir yandan, bağlantı noktasından düşük güçlü cihazları beslemek için genellikle önemli ölçüde daha iyidir (örneğin, sayısız ev yapımı veri kablosu için tasarlandı cep telefonları) ve diğer tarafta - liman limanına göndermek için ters Bipolar bir sinyal yerine TTL seviyesi.

Ana arayüz sinyallerinin açıklaması

CD - Cihaz, alınan sinyaldeki taşıyıcıyı algıladığında bu sinyali ayarlar. Tipik olarak, bu sinyal modemler tarafından kullanılır, bu da ana bilgisayarı, hattın diğer ucundaki çalışma modeminin keşfedilmesine bildirir.

Rxd. - Ana bilgisayar verilerini cihazdan alın. "Veri Değişim Protokolü" bölümünde ayrıntılı olarak açıklanmaktadır.

Txd. - Cihaza veri ana aktarım hattı. "Veri Değişim Protokolü" bölümünde ayrıntılı olarak açıklanmaktadır.

DTR. - Ana bilgisayar veri değiştirmeye hazır olduğunda bu sinyali ayarlar. Aslında, iletişim programının portunu açtığınızda sinyal ayarlanır ve bu durumda bağlantı noktası açık olana kadar her zaman kalır.

DSR. - Cihaz, etkinken bu sinyali ayarlar ve ana bilgisayarla veri alışverişinde bulunmaya hazır. Verileri değiştirmek için bu ve önceki (DTR) sinyalleri kurulmalıdır.

Rts - Ana bilgisayar, cihaza veri aktarımını başlamadan önce bu sinyali ayarlar ve cihazdan veri almak için hazırlık sağlar. Veri alışverişinin donanım kontrolü yapıldığında kullanılır.

Cts. - Cihaz bu sinyali, önceki ana bilgisayar kurulumuna (RTS) verilerine hazır olduğunda yanıt olarak ayarlar (örneğin, önceki ana bilgisayar verisi gönderilen verilerin satırda satıra iletildiğinde veya ara sıra boş bir alan var. tampon).

ri - Cihaz (genellikle modem) bu sinyali uzak sistemden bir arama alırken, örneğin alırken, telefon görüşmesiModem arama alacak şekilde yapılandırılmışsa.

Veri Değişimi Protokolü

RS-232 protokolü iki veri yönetimi yöntemi vardır: Donanım ve Yazılım, ayrıca iki şanzıman modu: senkron ve asenkron. Protokol, herhangi bir aktarım moduyla birlikte yönetim yöntemlerinden herhangi birini kullanmanızı sağlar. Akış kontrolü olmadan çalışmak da izin verilir, bu da ana bilgisayarın ve cihazın ayarlandığında (DTR ve DSR sinyalleri takıldığında) veri almak için cihazın sabit hazırlığını ifade eder.

Donanım Yönetimi Yöntemi RTS ve CTS sinyalleri kullanılarak uygulanır. Veri sunucusunu (bilgisayar) aktarmak için, RTS sinyalini ayarlar ve CTS sinyalinin kurulmasını bekler ve ardından CTS sinyali ayarlanana kadar veriler başlatılır. CTS sinyali, bir sonraki baytın iletilmesine başlamadan hemen önce ana bilgisayar tarafından kontrol edilir, bu nedenle zaten iletilmeye başlamış olan bayt, CTS değerinden bağımsız olarak tamamen iletilecektir. Yarı çift yönlü veri değişim modunda (Cihaz ve Ana Bilgisayarlar, tam çift yönlü modda, tam çift yönlü modda, aynı zamanda yapabilecekler) RTS sinyali, ana bilgisayar tarafından kaldırılması, alım moduna geçişi anlamına gelir.

Yazılım Yönetimi Yöntemi Özel stop sembollerinin (XOFF olarak adlandırılan 0x13 kodlu) (XOFF olarak adlandırılan sembol) ve yenileme (XON adlı 0x11 olan sembolü) aktarmaktır. Bu karakterleri alırken, iletim partisi şanzımanı buna göre durdurmalı ya da devam ettirmeli (veri için bekleyen veriler varsa). Bununla birlikte, bu yöntem, ekipmanın uygulanması açısından daha kolaydır, ancak daha yavaş bir reaksiyon sağlar ve buna göre, boş alan alıcı tamponda belirli bir sınıra düşürüldüğünde, vericinin vericinin vericisini gerektirir.

Senkron iletim modu Bitler, belirli bir hızda ek duraklamalar olmadan birbirinden birini takip ettiğinde sürekli bir veri değişimi anlamına gelir. Bu COM port modu desteklenmiyor.

Asenkron İletim Modu Her veri baytının (ve parite kontrol bitinin varlığı durumunda), "bir sıfır start-bit ve bir veya daha fazla tek durdurma bitinin bir senkronize edici sırasını" ortaya çıkarmasıdır. Asenkron moddaki veri akış şeması şekilde sunulur.

Alıcının olası algoritmalarından biri takip etme:

  1. Resepsiyon sinyalinin "0" seviyesini bekleyin (bir cihaz durumunda bir ana bilgisayar, TXD durumunda RxD).
  2. Pil süresinin yarısını sayın ve sinyal seviyesinin hala "0" olduğunu kontrol edin.
  3. Tam bit süresini ve akım sinyal seviyesini daha küçük veri toplu olarak yazın (bit 0)
  4. Diğer tüm veri bitleri için önceki öğeyi tekrarlayın
  5. Eşlik kontrolünü kullanarak alımın doğruluğunu doğrulamak için kullanmak için tam bit süresini ve akım sinyal seviyesini sayınız (aşağıya bakınız)
  6. Tam bit süresini sıkın ve "1" sinyalinin mevcut seviyesinin olduğundan emin olun.

Hesaplama yaparken, seri port, bir seferde bilgilerin iletildiği veya yayınlandığı seri bir iletişim arayüzüdür. Kişisel bilgisayarların tarihinin çoğu için, veriler modemler, terminaller ve çeşitli çevresel cihazlar gibi cihazlardaki seri bağlantı noktalarıyla iletildi.

Ethernet, FireWire ve USB gibi arayüzler, tümü sıralı bir akış olarak veri göndermek, "Seri port" terimi tipik olarak tanımlar. donanım, RS-232 standardıyla az ya da çok uyumlu, bir modemle veya benzer bir iletişim bağlantısı ile etkileşime girmeyi amaçlayan.

Seri port olmayan modern bilgisayarlar, RS-232 seri cihazlarıyla uyumluluk sağlamak için seri arayüze sahip dönüştürücüler gerektirebilir. Seri portlar hala endüstriyel otomasyon sistemleri, bilimsel cihazlar, satış sistemleri ve bazı endüstriyel ve tüketim malları gibi uygulamalarda kullanılmaktadır. Sunucu bilgisayarları bir seri bağlantı noktasını bir yönetim konsolu veya teşhis olarak kullanabilir. Ağ ekipmanı (örneğin, yönlendiriciler ve anahtarlar) genellikle yapılandırma için seri konsolu kullanın. Seri bağlantı noktaları bu alanlarda hala kullanılmaktadır, çünkü basit, ucuz ve konsol fonksiyonları oldukça standart ve yaygındır.

COM PORT PINOUT (RS232)

COM portu, 25 pinli eski konektörün 2. çeşitleri vardır ve yeni 9 pinli konnektörünü değiştirdi.

Aşağıda, standart bir standart 9 pimli RS232 konnektörünün konektörlü bir şemasıdır, bu tip konektörün DB9 konektörü de denir.

  1. Taşıyıcı algılama (DCD).
  2. Veri alma (RxD).
  3. Veri aktarımı (TXD).
  4. Alıcıdan (DTR) değişim için hazırlık.
  5. Dünya (GND).
  6. Kaynaktan (DSR) borsa hazırlığı.
  7. Transfer (RTS) isteği.
  8. İletim Hazırlık (CTS).
  9. Çağrı sinyali (RI).

RJ-45 ila DB-9-9 Anahtar için sıralı bağlantı noktası adaptörünün çıkışı hakkında bilgi

Konsol portu, PC veya dizüstü bilgisayar gibi kontrol cihazına bağlanmak için RJ-45 konektörünü kullanan RS-232 seri arayüzüdür. Dizüstü bilgisayarınızda veya PC'nizde DB-9 PIN pimi yoksa ve bir dizüstü bilgisayar veya PC'yi anahtara bağlamak istiyorsanız, RJ-45 ve DB-9 adaptör kombinasyonunu kullanın.

Db-9.Rj-45.
Veri elde etme2 3
Veri transferi3 6
Değişim hazırlığı4 7
Arazi5 5
Arazi5 4
Değişim hazırlığı6 2
Transfer talebi7 8
İletim için hazır olma8 1

Tel Renkleri:

1 siyah
2 kahverengi
3 kırmızı
4 turuncu
5 sarı
6 yeşil
7 mavi
8 gri (veya beyaz)

Bazen iletişim görevini çözmelisin elektronik cihaz Bir bilgisayarla, basitçe veri veya uzaktan kumanda olup olmadığı. Bu makalede, bunun seri bağlantı noktası kullanılarak nasıl uygulanabileceğini açıklar. Ana avantajı bu standart yazılımdır windows arayüzü (API), çıkış hatlarını doğrudan kontrol etmenizi sağlar, üzerine doğrudan kontrol vermenizi sağlar ve COM portu ile ilişkili belirli bir olayı bekleme işlevine sahiptir. Ayrıca, COM bağlantı noktalarının yapıldığı RS-232 standardı, cihazların çalışması sırasında kabloları bağlamanıza ve kapanmanıza izin verir (sıcak fiş).

Açıklama

COM Limanı (Seri Port) - Çift yönlü arayüz verilerin RS-232 protokolü üzerinden sıralı bir formda (biraz öteye) iletilmesi. Bu, bir cihazı (örneğin, bir bilgisayar) 30M'ye kadar olan tellerle iletişim kurmak için kullanılan oldukça yaygın bir protokoldür. Mantıksal sinyaller burada standarttan farklıdır: mantıksal birimin seviyesi +5 ila + 15V arasında, mantıksal sıfır seviyesi, devrenin ek dönüşümleri gerektiren, ancak iyi gürültü bağışıklığı sağlayan -5 ila -15V'dir.

9 pinli bir konnektörü (DB-9M) düşünün. Aşağıda pinout:

№ № İsim vermek Sinyal karakteri Sinyal
1 DCD. Giriş Veri taşıyıcısı tespit edildi.
2 Rxd. Çıktı VERİ İLET.
3 Txd. Giriş Veri almak.
4 DTR. Çıktı Veri terminali Hazır
5 GND. - Zemin
6 DSR. Giriş Veri ayarlandı
7 Rts Çıktı Gönderme isteği.
8 Cts. Giriş Göndermek için temizleyin.
9 ri Giriş Halka göstergesi

Hepsinden önemlisi, pimler 2 (veri aktarımı), 3 (veri alımı) ve 5 (arsa) ile ilgileneceğiz. Bu, çift taraflı cihazların olasılığı için asgari bir settir.

Protokolün açıklaması üzerine ayrıntılı olarak başlamaz. Bunun için gost ve benzerleri var. Bu nedenle, daha ileri gideceğiz ve bu canavarı nasıl yöneteceğiz hakkında konuşalım.

Uygulama

Daha önce de belirtildiği gibi, RS-232 seviyeleri standart TTL seviyelerinden farklıdır. Bu nedenle, bir şekilde voltaj değerlerini dönüştürmemiz gerekir. Şunlar. -15V (ve tam tersi) 'dan + 15V ve 0V'den 5V yapın. Yollardan biri (ve muhtemelen en kolay) - özel bir maks232 mikrokirbağının kullanımı. Anlamak kolaydır ve aynı zamanda iki mantıksal sinyal dönüştürebilirsiniz.

Aşağıda dahil edilmesinin şeması:


Bence zorluk olmamalı. Bu, bu çipin kullanımından biridir: bir bilgisayardaki bir mikrodenetleyiciden veri iletimi ve bunun tersi de geçerlidir. İletilen sinyal bacaklarda x.Bir tarafta ve r x.Diğerinde. Giriş sinyalleri t'den kaldırılır x.Dışarı ve r. x.Sırasıyla.

Programlama

Başlamak için, programlama limanları hakkında düşük seviyede konuşalım. Bu yüzden daha doğru olacak. Bir çok sinir harcadım, bu arayüzle uğraştım, çalışmalarının prensibine daha düşük bir düzeyde sarkmaya başladım. basit transfer Semboller. Eğer açıksa, üst düzey dillerde hiçbir sorun olmayacağı anlamına gelir.

Aşağıda, çalışmak zorunda kalacağımız COM limanlarının adresleri bulunmaktadır:

Port adı Adres IRQ.
Com 1. 3f8h 4
Com 2. 2f8h 3
Com 3. 3e8h. 4
Com 4. 2e8h. 3

Değişebilirler. BIOS ayarlarında değerleri ayarlayın. Bu temel adreslerdir. Ayrıca, limanların çalışmasından sorumlu kayıtların adresine de bağlı olacaklar:

Adres Dlab Okuma yazma Kısaltma Kayıt Adı
+ 0 =0 Yazmak Verici tutma tamponu.
=0 Okumak. Alıcı tamponu.
=1 Okuma yazma. Bölen mandalı düşük bayt
+ 1 =0 Okuma yazma. İer Kesinti Etkinleştir Kayıt
=1 Okuma yazma. Bölen mandalı yüksek bayt
+ 2 - Okumak. İir. Kesinti kimlik kaydı
- Yazmak Fcr. Fifo kontrol kaydı
+ 3 - Okuma yazma. LCR. Hat kontrolü kaydı
+ 4 - Okuma yazma. Mcr. Modem Kontrol Kayıt
+ 5 - Okumak. Lsr. Hat Durum Kaydı.
+ 6 - Okumak. Msr. Modem Durum Kaydı.
+ 7 - Okuma yazma. Kazı Kayıt.

İlk sütun, Temel'e göre kayıt adresidir. Örneğin, COM1 için: LCR kaydı adresi 3F8H + 3 \u003d 3FB olacaktır. İkinci sütun - DLAB (bölen mandalı erişim biti) bit, aynı kayıt için farklı bir amaç tanımlama .. yani. Sadece 8 adres kullanarak 12 kayıtla çalışmanızı sağlar. Örneğin, eğer DLAB \u003d 1 ise, 3F8H'ye atıfta bulunun, saat jeneratörü frekansının genç baytının değerini ayarlayacağız. Dlab \u003d 0 ise, daha sonra aynı adrese atıfta bulunun, iletilen veya kabul edilen bayt bu kayıtta kaydedilir.

Sıfır kayıt

Kayıtlar / veri iletim kayıtlarına ve jeneratör frekansı bölücü katsayısına uygundur. Yukarıda belirtildiği gibi, eğer DLAB \u003d 0 ise, kayıt, alınan / iletilen verileri kaydetmek için kullanılır, eğer 1 ise, saat jeneratörü frekans bölücünün alt baytının değeri ayarlanır. Veri aktarım hızı, bu frekansın değerine bağlıdır. En büyük bölücü bayt, bir sonraki bellek hücresine (yani, COM1 portu için 3F9H olacaktır) yazılır. Aşağıda, veri hızının bölücü katsayısından bağımlılığıdır:

Kesinti Etkinleştir Kaydı (IER)

DLAB \u003d 0 ise, eğer DLAB \u003d 1 ise, bir asenkron adaptörden bir kayıt kaydı olarak kullanılır, daha sonra saat jeneratörü frekansının kıdemli baytını ayarlar.

Kesinti Kimlik Kaydı (IIR)

Kesme, ana programın durdurulması ve kesme prosedürünün başladığı bir olaydır. Bu kayıt, kesinti türünü belirler.

Hat kontrolü kaydı (LCR)

Bu kontrol kaydıdır.

Bit 7. 1 ExpiSor Mandal Erişim Bit - Veri Değişimi Hızı
0 Ortak Mod (Kesme Kontrolü, Alım / Veri İletimi)
Bit 6. Taklit hat sonağı (birkaç sıfır dizisi gönderir)
BITS 3 - 5 Bit 5. Bit 4. Bit 3. İnanç seçimi
X. X. 0 Parite yok
0 0 1 Tuhaf parite.
0 1 1 Parite bile.
1 0 1 Yüksek Parite (Yapışkan)
1 1 1 Düşük parite (yapışkan)
Bit 2. Boş bit sayısı
0 1 durak bit
1 2 Bit'leri 6.7 veya 8 veri bitlerinde veya 5 veri biti ile 1.5 durdurma biti durdurun.
0 ve 1 bitleri Bit 1. Bit 0. Veri bit sayısı
0 0 5 bit
0 1 6 bit
1 0 7 bit
1 1 8 bit

Hazırlık kontrolü, başka bir bit iletimini ima eder - hazır olma noktası. Değeri, bit paketinde, port kayıtlarının montajına bağlı olarak, toplam birim (veya sıfır) sayısının eşit veya garip olduğu şekilde ayarlanır. Bu bit, hattaki girişim nedeniyle veri iletimi sırasında oluşabilecek hataları tespit etmek için kullanılır. Alıcı cihaz, veri paritesini yeniden hesaplar ve sonucu bir parite biti ile karşılaştırır. Eşlik çakışmadıysa, verilerin bir hata ile iletildiğine inanılmaktadır.

Bit biti veri aktarımının bitmesi anlamına gelir.

Modem Kontrol Kayıt (MCR)

Modem kontrol kaydı.

Bit Değer vermek
0 Çizgi dtr.
1 Rts çizgisi.
2 Satır Out1 (Yedek)
3 Satır Out2 (Yedek)
4 Bir eşzamansız adaptör girerken teşhis başlatma, çıkışında kapatılır.
5-7 Eşit 0.

Hat Durum Kaydı (LSR)

Çizginin durumunu tanımlama.

Bit Değer vermek
0 Veriler elde edilir ve okuma için hazır, veri okurken otomatik olarak sıfırlanır.
1 Taşma hatası. Yeni bir veri baytı kabul edildi ve önceki kişi henüz program tarafından okunmadı. Önceki bayt kayboldu.
2 Hatanın durumunu okuduktan sonra Hata Hazırlığı sıfırlanır.
3 Senkronizasyon hatası.
4 "Break" şanzımanını kesme talebi tespit edilir - uzun bir sıfır.
5 Verici depolama kaydı boş, iletim için yeni bir bayt kaydedebilirsiniz.
6 Verici vardiya kaydı boş. Bu kayıt depolama kaydından veri alır ve bunları şanzıman için seri tipine dönüştürür.
7 Zaman aşımı (cihaz bilgisayara bağlı değil).

Modem Durum Kaydı (MSR)

Modem Durum Kaydı.

Bu kadar. Bu kayıtları çalıştırarak, COM bağlantı noktasıyla doğrudan iletişim kurabilirsiniz, veri iletimi ve alımını kontrol edebilirsiniz. Hafızayla uğraşmak istemiyorsanız, çeşitli programlama ortamları için hazır bileşenleri kullanabilirsiniz: C ++, VB, Delphi, Pascal vb. Sezgiseldirler, öyleyse, burada dikkat etmeye değmez.

Stopbits. - Boş bitlerin sayısını ayarlar. Alan belki
Aşağıdaki değerleri alın:


  • Onestopbit. - Bir durak biti;
  • One5stopbit. - Bir buçuk durdurma biti (pratikte değil)
    Kullanılmış);
  • Twostopbit. - İki durak biti.

Tüm DCB yapısı alanları doldurulduktan sonra, ihtiyacınız var
SetTomMState işlevini arayarak bağlantı noktasını yapılandırma:

Bool setcommstate (

HFILE kullan

Lpdcb lpdcb.

Başarılı bir şekilde tamamlanma durumunda, fonksiyon sıfırdan farklı geri döner
değer ve hata durumunda - sıfır.

Bağlantı noktasını yapılandırmak için ikinci zorunlu yapı
Commtioouts yapısı. Geçici gecikme parametrelerini tanımlar
Alırken. İşte bu yapının açıklaması:

typeDef Struct _Commtimeouts (

DWORD ReadintervalTimeout;

DWORD READTOTUTTIMUTMULTIPIER;

DWORD READTOTOTTIMEOUTCONTANT;

DWORD WRITETOTTIMEOTMULTIPIER;

DWORD WRITETOLTIMEOUTCONSTANT;

) COMMTIMOUTS, * lpcommtimeouts;

Commthouts Yapısı alanları aşağıdaki değerlere sahiptir:


  • Readintervaltimeout. - Maksimum zaman aralığı
    (milisaniye cinsinden) iki okunabilir arasında izin verilen
    Ardışık karakterlerle iletişim hattı. Sırasında
    Zaman dönemi okumanın zamanı, geri saymaya başlar.
    İlk sembolün resepsiyonu. Eğer iki arasındaki aralık
    Sıralı karakterler belirtilen değeri aşacak, işlem
    Okuma ve tamponda biriken tüm veriler iletilir
    programda. Sıfır değeri bu alan verilen anlamına gelir
    Zaman aşımı kullanılmaz.
  • ReadTotOtTimeoutmultiplier - Çarpanı belirtir (içinde


    okumak istenen karakter sayısı ile çarpılır.
  • READTOTOTTIMEOUTCANT - Bir sabit belirtir (içinde

    Okuma işlemleri. Her okuma işlemi için bu değer
    Artı Çarpma ReadToTumTimeOtmultiplier'ın sonucunda
    Okunması istenen karakter sayısı. Sıfır alanlar
    READTOTUTTIMEOUTMULTIPIER ve READTOTOTTIMEOUTCONTANT
    Okuma işlemi için genel zaman aşımının kullanılmadığı.
  • Writetotumtimeoutmultiplier - Çarpanı belirtir (içinde
    milisaniye) toplam zaman aşımını hesaplamak için kullanılır

    yazılı karakter sayısı ile çarpılır.
  • Writetottimeoutconstant - Bir sabit belirtir (içinde
    milisaniye) toplam zaman aşımını hesaplamak için kullanılır
    Kayıt işlemleri. Her kayıt işlemi için bu değer
    WRITETOTTIMEOUTMULTIPIER'in çoğalması sonucuna eklendi
    Yazılabilir karakterlerin sayısı. Sıfır alanlar
    WriteToTTimeOtmultiplier ve WritetOtTimeoutConstant araçları
    Kayıt işlemi için genel zaman aşımının kullanılmadığı.

Zaman aşımı hakkında biraz daha detaylı. 50 limandan okumamıza izin verin
9,600 bit / s hızında semboller. 8 bit kullanılıyorsa
sembolde, pariteye ek olarak ve bir durak biti, sonra bir
Fiziksel hattaki sembol 11 bit (başlangıç \u200b\u200bbitleri dahil) hesaplar.
9.600 bit hızında 50 karakterin kabul edileceği anlamına gelir

50 × 11/9600 \u003d 0.0572916

veya yaklaşık 57.3 milisaniye, sıfır aralığı sağladı
ardışık karakter almak arasında. Aralıksa
Karakterler, birinin iletim süresinin yaklaşık yarısıdır.
Sembol, yani 0.5 milisaniye, resepsiyon süresi olacak

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

veya yaklaşık 82 milisaniye. Daha fazla okuma sürecinde ise
82 milisaniye, o zaman bir hata oluştuğunu varsayma hakkımız var.
Harici cihazın çalışması ve böylece okumayı bırakabilir, böylece
Programın dondurulmasından kaçınılması. Bu genel zaman aşımı işlemidir
Okuma. Benzer şekilde, kayıt işleminin toplam zaman aşımı vardır.

Örneğin toplam zaman aşımı işleminin hesaplanması için formül,
Okuma, şöyle görünüyor:

Numofhar x readtotumtimeoutmultiplier +
READTOTOTTIMEOUTCANT

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

Bizim durumumuzda, zaman aşımı kaydı kullanılamaz ve
Onları sıfıra eşit olarak ayarlayın.

Commtiouts yapısını doldurduktan sonra, aramanız gerekir.
Zaman aşımı kurulum özelliği:

Bool setcommtimeouts (

HFILE kullan

Lpcommtimeouts lpcommtimeouts.

İletim resepsiyon işlemleri düşük hızda gerçekleştirildiğinden,
Kullanılan veri tamponlama. Resepsiyon tamponunun boyutunu ayarlamak ve
Transferler fonksiyon tarafından kullanılmalıdır:

Bool setupcomm (

HFILE kullan

DWORD DWINQUEUE,

DWORD DWOUTQUEUE.

Harici cihaz paketleriyle değiş tokuş yaptığınızı varsayalım.
1024 bayt boyutunun bilgisi, daha sonra makul bir tampon boyutu
1200'ün bir değeri olacak. Setupcomm işlevi ilginç çünkü
Sadece kendi ayarlamalarınızı yaparak not almak için boyutlarınızı alın veya
Genel olarak, sizin tarafınızdan sunulan tampon boyutlarını reddetmek - bu durumda
Bu özellik bir hatayla tamamlanır.

Sıralı açma ve yapılandırma örneği vereceğim
Port Com1. Kısalık için - hata tanımı olmadan. Bu örnekte
Liman, 9,600 bit / c hızında çalışmayı açar, kullanılmış 1
Bit durdurma, parite biti kullanılmıyor:

#Dahil etmek.

. . . . . . . . . .

Kolu tutma;

Commtiouts Commtiouts;

DCB DCB;

sOLAP \u003d CreateFile ("COM1", Generic_Read | Generic_write,
Null, , open_existing, file_flag_overlapped, null);

SETUPTOMM (Kolu, SizeBuffer, SizeBuffer);

GetComMState (Kolu ve DCB);

dcb.baudrate \u003d cbr_9600;

dcb.fbinary \u003d true;

dcb.foutxctsflow \u003d false;

dcb.foutxdsrflow \u003d false;

dcb.fdtrcontrol \u003d dtr_control_handshake;

dcb.fdsrsensitiity \u003d false;

dcb.fnull \u003d false;

dcb.frtscontrol \u003d rts_control_disable;

dcb.fabortonError \u003d false;

dcb.bytesize \u003d 8;

dcb.parity \u003d noparite;

dcb.stopbits \u003d 1;

SetTomMState (Kolu ve DCB);

Commtyouts.readintervaltimeout \u003d 10;

Commtyaouts.readtotumtimeoutmultiplier \u003d 1;

// bu zamanın değerleri - çıkışlar kesin olarak yeterince yeter
resepsiyon

// Hız 110 Baud'da bile

CommTiOuts.ReadTotTimeoutConstant \u003d 100;

// Kullanılmış B bu durum Bekleme süresi gibi
parsel

Commtyaouts.writeTumtimeoutmultiplier \u003d 0;

COMMTIMOUTS.WRITETALTIMEOUTCONSTANT \u003d 0;

SetTommTimeouts (Kolu, & Commtiouts);

Purgecomm (Kolu, Purge_RxClear);

Purgecomm (kolu, purge_txclear);

Limanı açtıktan sonra, kaybetmeniz gereken ilk şey, bu yüzden
Resepsiyon tamponlarındaki gibi ve şanzıman "çöp" olabilir. Bu nedenle B.
Örneğin sonu Daha önce bize bilinmeyen işlevi uyguladık
PurgeComm:

Bool purgecomm (

HFILE kullan

Dword dwflags

Bu özellik iki görevi gerçekleştirebilir: Sırayı temizleyin
Sürücüdeki resepsiyon ve şanzıman veya tüm işlemleri tamamlama
G / Ç Tam olarak gerçekleştirilecek eylemler, diğerine ayarlanmış
Parametre:


  • Purge_txabort
    tamamlanmadığında bile kayıtlar;
  • Purge_rxabort. - hemen tüm işlemleri durdurur
    Okuma, tamamlanmamış olsalar bile;
  • Purge_txclear - Sürücüdeki şanzıman kuyruğunu temizler;
  • Purge_rxClear - Resepsiyon kuyruğunu temizler
    Sürücü.
    Bu değerler dövülmüş bir şekilde birleştirilebilir
    Operasyonlar veya. Hatalardan sonra temiz tamponlar önerilir
    kabul ve bağlantı noktasıyla tamamlandıktan sonra.

Doğrudan operasyonları düşünmenin zamanı geldi
Liman için okuma yazma. Dosyalarla çalıştığın, kullanılan
ReadFile ve WriteFile özellikleri. İşte prototipleri:

Bool readfile (

HFILE kullan

Lpvoid lpbuffer,

DWORD NNUMOFBYTESTOREAD,

Lpdword lpnumofbytesread,

Lpoverlpapped lpoverlepfed.

Bool WriteFile (

HFILE kullan

Lpvoid lpbuffer,

DWORD NNUMOFBYTEWRITE,

Lpdword lpnumofbyteswritenten,

Lpoverlpapped lpoverlepfed.

Bu işlevlerin parametrelerinin atanmasını düşünün:


  • hile - Tanımlayıcı açık dosya İletişim
    Liman;
  • lpbuffer. - Tamponun adresi. Yazma işlemi verileri için
    Bu tampon bağlantı noktasına iletilecektir. Bu konuda okumak için
    Tampon, satırdan alınan veriler tarafından yerleştirilecektir;
  • nnumofbytestoread, nnumofbytewrite - Beklenen sayısı
    iletim baytları için almak veya amaçlamak;
  • nnumofbytesread, nnumofbyteswritten. - gerçek sayısı
    kabul edilen veya iletilen baytlar. Kabul edilirse veya daha az aktarılırsa
    İstenilen veriler, disk dosyasına tanıklık eder
    Hata hakkında ve iletişim portu için mutlaka değil.
    Zaman aşımına neden olur.
  • Lpoverlapfed. - Kullanılan örtüşen yapının adresi
    Asenkron operasyonlar için.

Normal tamamlanma durumunda, işlev döndürülür.
Sıfırdan farklı, hata durumunda - sıfır.

Okuma ve yazma işlemine bir örnek vereceğim:

#Dahil etmek.

…………..

DWORD NUMBYTS, NUMBYTES_OK, TEMP;

Comstat Comstate;

Üst üste binmiş örtüşme;

char buf_in \u003d "Merhaba!";

numbytes \u003d 6;

// Temp sıfır değilse, limanın mümkün olduğu anlamına gelir.
Hatalar

eğer (! Temp) WriteFile (Kolu, Buf_in, Numbytes,
& Numbytes_OK, & OverLap);

ClearComMerror (Kolu, ve Temp ve Comstate);

eğer (! TEMP) ReadFile (Kolu, Buf_in, Numbytes, & Numbytes_OK,
& ÜST ÜSTE GELMEK);

// numbytes_ok değişkeninde gerçek bir sayı içeriyor
iletilen

// bayt kabul edildi

Bu örnekte, daha önce hiç bilinmeyen iki kişiyi kullandık
Comstat ve örtüşen yapıların yanı sıra ClearCommerror işlevi. İçin
"Üç kabloda" iletişim vademiz üst üste bindi
Düşünün (sadece örnekte olduğu gibi kullanın). Prototip fonksiyonu
ClearComMerror forma:

Bool Clearcommerror (

HFILE kullan

LPDWORD LPERRORS,

Lpcomstat lpstat.

Bu özellik bağlantı noktası hatası işaretini belirler (varsa
yerleştirin) ve yapıda limanın durumu hakkında bilgi döndürür
Comstat:

typeDef Struct _comstat.

DWORD FCTSHOLD: 1;

DWORD FDSRODH: 1;

Dword frlsdhold: 1;

DWORD FXOffhold: 1;

DWORD FXOffSENT: 1;

DWORD FEOF: 1;

DWORD FTXIM: 1;

DWORDRED: 25;

DWORD CBINQUE;

DWORD CBOUTQUE;

) Comstat, * lpcomstat;

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


  • Cbinque - Alıcı tampondaki karakter sayısı. Bu semboller
    çizgiden alınmış, ancak henüz ReadFile işlevi tarafından okunmamış;
  • Cboutque - İletim tamponundaki karakter sayısı. Bunlar
    Semboller henüz çizgiye iletilmez.

Bu yapının kalan alanları hakkında bilgi içermektedir.
Hatalar.

Son olarak, bağlantı noktasıyla çalışmayı tamamladıktan sonra kapatılmalıdır.
Nesneyi Win32'de kapatma CloseHandle işlevini yürütür:

Bool closehandle (

Hobject'i kullanın.

Sitemizde sınıfın tam metnini çalışmak için bulabilirsiniz.
Asenkron modunda "üç tel" olarak sıralı bağlantı noktası ve
Ayrıca bu sınıfı kullanarak bir programın örneği. Hepsi bu
Oluşturucu C ++ altında yazılmış, ancak yalnızca işlevler kullanıldığı için.
API WIN32, program metninin herhangi bir C ++ derleyicisi için değişmesi kolaydır.
Ayrıca, sınıfın oldukça "kurallara göre" yazılmaması da mümkündür -
Affedersiniz, yazar "doğru" bir programcı değildir ve yazar
Nasıl rahattır J.

Blogunuzun sayfalarında tekrar herkese hoş geldiniz ve bugün nasıl söylemek istiyorum com bağlamak uSB girişi Windows'ta. Bunun olduğu ve kullanıldığı için konuşalım. Acemi ağ yöneticileri için düşünüyorum ve sadece gelişmiş kullanıcılar için ilginç olacak, benim için, bir seferde sunucu ekipmanını yapılandırmanıza izin veren bir tür sihirdi.

COM bağlantı noktası üzerinden nelerdir

COM portundan daha önce bağlı modemler, fareler. Şimdi kaynaklara bağlanmak için kullanılır kesintisiz güç, gömülü bilgisayar sistemlerinin donanım gelişimi ile iletişim için, uydu alıcıları, Nesne Güvenlik Sistemleri cihazları ve diğer birçok cihazla birlikte nakit kayıtları.

COM portunu kullanarak, "sıfır modem kablosu" olarak adlandırılan iki bilgisayarı bağlayabilirsiniz (aşağıya bakınız). MS-DOS zamanlarından dosya dosyalarını bir bilgisayardan diğerine, başka bir makineye terminal erişimi için UNIX'te ve Windows'ta (hatta modern) - çekirdek seviye hata ayıklayıcısı için kullanılır.

Ancak ağ dünyasında com limanındanağ cihazlarının konsol portuna bağlanın (anahtarlar, yönlendiriciler, Cisco veya Ardıç gibi markalar)

Seri port üzerinden geçiş yapmanın devresi nedir. Örneğin, bir bilgisayara bağladığınız USB'nin bir ucundaki st-laboratuvardan adaptörler vardır ve ikincisi bir COM bağlantı noktasıdır.

COM sürücülerini yükleme USB portu Windows'ta

Maalesef Windows bağlı cihazlarda, USB to COM sistemde her zaman otomatik olarak yüklenmez ve onlara sürücüleri aramak zorundasınız. Kendiniz satın aldıysanız, sürücü sürücülere dahil edildi ve değilse kullanabilirsiniz, sonra sürücüleri nasıl bulacağınıza bakın.

Cihaz Yöneticisini Windows'ta açın. Nasıl bilmiyorsanız, daha sonra CTR + Duraklatın Breake tuşuna basın veya Win + R tuşuna basın ve pencerede devmgmt.msc girin. Limanlar bölümünde (COM ve LPT) görebileceğiniz gibi, üçüncü COM Limanı bilinmeyen telde bulundum ve sürücüler, sarı simgesinin bize bildirdiği sistemden bulamadı.

Mülklere git bu cihaz Ve ekipman kimliğini seçin, USB \\ VID_067B & PID_2303 & REV_0300 yazın, burada kopyalayın ve Google veya Yandex'te arayın.

Ardından, Aygıt Yöneticisi'ndeki cihaza sağ tıklayın ve Sürücüleri Yükle'yi seçin, yolunu belirtin ve her şey yolunda olursa, o zaman simge kaybolacak Uyarılar.

Daha sonra, COM portunun olanaklarını, Macun Semblance'u, SERIAL'ı seçtiğiniz ve istenen COM port bağlantı noktasını belirleyeceğiniz, aynı cihaz yöneticisinde görebilirsiniz.

Umarım, Windows'ta COM USB portunun nasıl bağlanacağını öğrenir ve bulursunuz.