Apa itu port kucing di komputer. Apa port komputer pribadi? Dan apa mereka? Cara menonaktifkan port USB saat Anda mematikan komputer

Deskripsi antarmuka RS-232, format konektor yang digunakan dan penugasan output, sinyal, protokol pertukaran data.

gambaran umum

Antarmuka RS-232, cukup resmi disebut "EIA / TIA-232-E", tetapi lebih dikenal sebagai antarmuka "COM Port", sebelumnya adalah salah satu antarmuka paling umum di teknisi komputer. Dia masih bertemu komputer mejaTerlepas dari penampilan lebih cepat dan antarmuka "cerdas" seperti USB dan fireware. Keuntungannya dari sudut pandang amatir radio dapat dikaitkan dengan kecepatan minimum dan kesederhanaan implementasi protokol di perangkat buatan sendiri.

Antarmuka fisik diimplementasikan oleh salah satu dari dua jenis konektor: DB-9M atau DB-25M, yang terakhir di komputer yang tersedia saat ini praktis tidak ditemukan.

Penunjukan Konektor 9-Pin Kesimpulan


Steker tipe 9-pin DB-9M
PIN Nomor Kontak
Arah sinyal ditunjukkan relatif terhadap host (komputer)
Kontak Sinyal Arah Deskripsi
1 CD jalan masuk Memuat terdeteksi
2 Rxd. jalan masuk Data yang diterima
3 Txd. Keluaran Data yang ditransmisikan
4 DTR. Keluaran Host Ready.
5 Gnd. - Kawat umum.
6 DSR. jalan masuk Perangkat sudah siap
7 RTS. Keluaran Host siap untuk transmisi
8 CTS. jalan masuk Perangkat siap menerima
9 Ri. jalan masuk Tantangan ditemukan

Pengangkatan kesimpulan konektor 15-pin

Kontak Sinyal Arah Deskripsi
1 Melindungi. - Layar
2 Txd. Keluaran Data yang ditransmisikan
3 Rxd. jalan masuk Data yang diterima
4 RTS. Keluaran Host siap untuk transmisi
5 CTS. jalan masuk Perangkat siap menerima
6 DSR. jalan masuk Perangkat sudah siap
7 Gnd. - Kawat umum.
8 CD jalan masuk Memuat terdeteksi
9 - - Memesan
10 - - Memesan
11 - - Tidak digunakan
12 SCD. jalan masuk Pembawa terdeteksi. # 2
13 SCTS. jalan masuk Perangkat siap untuk penerimaan # 2
Kontak Sinyal Arah Deskripsi
14 Stxd. Keluaran Data yang Ditransmisikan # 2
15 TRC. jalan masuk Mengambil pemancar
16 Srxd. jalan masuk Data Diterima # 2
17 RCC. jalan masuk Tact on Receiver.
18 Lloop. Keluaran LOOP LOKAL
19 Srts. Keluaran Host Ready to Transmit # 2
20 DTR. Keluaran Host Ready.
21 Rloop. Keluaran LOOP OUTER
22 Ri. jalan masuk Tantangan ditemukan
23 Drd. jalan masuk Kecepatan data ditentukan
24 TRCO. Keluaran Ambil pemancar eksternal
25 Uji jalan masuk Mode uji

Tabel menunjukkan bahwa antarmuka 25-pin dibedakan oleh keberadaan saluran penerima kedua yang lengkap (sinyal yang ditunjukkan "# 2"), serta banyak kontrol tambahan dan sinyal kontrol. Namun, meskipun ada kehadiran di konektor "lebar" komputer, sinyal tambahan sama sekali tidak terhubung.

Karakteristik listrik

Tingkat pemancar logis: "0" - Dari +5 hingga +15 volt, "1" - dari -5 ke -15 volt.

Tingkat logis penerima: "0" - di atas +3 volt, "1" - di bawah -3 volt.

resistensi input Penerima minimal 3 com.

Karakteristik ini didefinisikan oleh standar sebagai minimum, menjamin kompatibilitas perangkat, bagaimanapun, karakteristik aktual biasanya secara signifikan lebih baik, yang memungkinkan, di satu sisi, untuk memberi makan perangkat daya rendah dari port (misalnya, banyak kabel data buatan sendiri adalah dirancang untuk handphone), dan di sisi lain - untuk tunduk ke port port terbalik Tingkat TTL bukan sinyal bipolar.

Deskripsi sinyal antarmuka utama

CD - Perangkat menetapkan sinyal ini ketika mendeteksi operator dalam sinyal yang diterima. Biasanya, sinyal ini digunakan oleh modem, yang dengan demikian melaporkan tuan rumah pada penemuan modem kerja di ujung lain.

Rxd. - Terima data host dari perangkat. Dijelaskan secara rinci di bagian "Protokol Pertukaran Data".

Txd. - Garis transfer host data ke perangkat. Dijelaskan secara rinci di bagian "Protokol Pertukaran Data".

DTR. - Tuan rumah menetapkan sinyal ini saat siap untuk bertukar data. Bahkan, sinyal diatur ketika Anda membuka port program komunikasi dan tetap dalam keadaan ini sepanjang waktu sampai port terbuka.

DSR. - Perangkat menetapkan sinyal ini saat diaktifkan dan siap untuk bertukar data dengan host. Sinyal ini dan sebelumnya (DTR) harus diinstal untuk bertukar data.

RTS. - Tuan rumah menetapkan sinyal ini sebelum memulai transfer data ke perangkat, dan juga menyebutkan kesiapan untuk menerima data dari perangkat. Digunakan saat kontrol perangkat keras dari pertukaran data.

CTS. - Perangkat menetapkan sinyal ini sebagai respons terhadap instalasi host sebelumnya (RTS) ketika siap untuk mengambil data (misalnya, ketika data host sebelumnya mengirim data ditransmisikan ke baris dalam barisan atau ada ruang kosong di perantara penyangga).

Ri. - Perangkat (biasanya modem) menetapkan sinyal ini saat menerima panggilan dari sistem jarak jauh, misalnya, saat menerima panggilan teleponJika modem dikonfigurasi untuk menerima panggilan.

Protokol pertukaran data

Protokol RS-232 ada dua metode manajemen data: perangkat keras dan perangkat lunak, serta dua mode transmisi: sinkron dan asinkron. Protokol memungkinkan Anda untuk menggunakan salah satu metode manajemen bersama dengan mode transmisi apa pun. Bekerja tanpa kontrol aliran juga diperbolehkan, yang menyiratkan kesiapan konstan tuan rumah dan perangkat untuk menerima data ketika koneksi diatur (DTR dan sinyal DSR diinstal).

Metode kontrol perangkat keras Ini diimplementasikan menggunakan sinyal RTS dan CTS. Untuk mentransfer host data (komputer), menetapkan sinyal RTS dan menunggu sinyal CTS untuk diinstal, setelah itu data dimulai hingga sinyal CTS diatur. Sinyal CTS diperiksa oleh tuan rumah segera sebelum memulai transmisi byte berikutnya, jadi byte, yang sudah mulai ditransmisikan, akan ditransmisikan sepenuhnya terlepas dari nilai CTS. Dalam mode pertukaran data setengah dupleks (perangkat dan host mengirimkan data pada gilirannya, dalam mode dupleks penuh, mereka dapat melakukannya pada saat yang sama) Penghapusan sinyal RTS oleh host berarti transisinya ke mode penerimaan.

Metode Manajemen Perangkat Lunak Ini untuk mentransfer tuan rumah simbol berhenti khusus (simbol dengan kode 0x13, yang disebut xoff) dan pembaruan (simbol dengan kode 0x11, yang disebut Xon). Saat menerima karakter-karakter ini, pihak transmisi harus menghentikan transmisi sesuai atau melanjutkannya (jika ada data yang menunggu transmisi). Metode ini lebih mudah dalam hal implementasi peralatan, bagaimanapun, memberikan reaksi yang lebih lambat dan, dengan demikian, mengharuskan pemberitahuan pemancar pemancar ketika ruang bebas dikurangi dalam buffer penerima hingga batas tertentu.

Mode transmisi sinkron Ini menyiratkan pertukaran data yang berkelanjutan ketika bit mengikuti satu demi satu tanpa jeda tambahan pada kecepatan tertentu. Mode Port COM ini tidak didukung.

Mode transmisi asinkron Itu adalah bahwa setiap byte data (dan sedikit kontrol paritas, jika ada kehadiran), "ternyata" urutan sinkronisasi satu nol start-bit dan satu atau lebih bit berhenti tunggal. Diagram aliran data dalam mode asinkron disajikan pada gambar.

Salah satu algoritma yang mungkin dari penerima berikut:

  1. Harapkan level "0" dari sinyal penerimaan (RXD dalam kasus host, TXD dalam kasus perangkat).
  2. Hitung setengah dari durasi baterai dan periksa bahwa level sinyal masih "0"
  3. Hitung durasi bit penuh dan tingkat sinyal saat ini menulis ke batch data yang lebih muda (bit 0)
  4. Ulangi item sebelumnya untuk semua bit data lainnya
  5. Hitung durasi bit penuh dan level sinyal saat ini untuk digunakan untuk memverifikasi kebenaran penerimaan menggunakan kontrol paritas (lihat di bawah)
  6. Peras durasi bit penuh dan pastikan bahwa level sinyal saat ini "1".

Saat menghitung, port serial adalah antarmuka komunikasi serial yang melaluinya informasi ditransmisikan atau dikeluarkan pada suatu waktu. Untuk sebagian besar riwayat komputer pribadi, data ditransmisikan melalui port serial pada perangkat, seperti modem, terminal, dan berbagai perangkat periferal.

Meskipun antarmuka seperti Ethernet, FireWire dan USB, semua mengirim data sebagai aliran berurutan, istilah "port serial" biasanya mengidentifikasi perangkat keras, lebih atau kurang kompatibel dengan standar RS-232, dimaksudkan untuk berinteraksi dengan modem atau dengan tautan komunikasi yang sama.

Komputer modern tanpa port serial mungkin memerlukan konverter dengan antarmuka serial untuk memastikan kompatibilitas dengan perangkat serial RS-232. Port serial masih digunakan dalam aplikasi seperti sistem otomasi industri, perangkat ilmiah, sistem penjualan dan beberapa barang industri dan konsumen. Komputer server dapat menggunakan port serial sebagai konsol manajemen atau diagnostik. Peralatan jaringan (misalnya, router dan switch) sering menggunakan konsol serial untuk konfigurasi. Port serial masih digunakan di area ini, karena mereka sederhana, murah, dan fungsi konsol mereka sangat standar dan tersebar luas.

Com port pinout (RS232)

Ada varietas ke-2 dari port COM, konektor lama 25-pin dan mengganti konektor 9-pin yang lebih baru.

Di bawah ini adalah diagram konektor RS232 standar 9-pin standar dengan konektor, jenis konektor ini juga disebut konektor DB9.

  1. Deteksi pembawa (DCD).
  2. Data yang diperoleh (RXD).
  3. Transfer Data (TXD).
  4. Kesiapan untuk pertukaran dari penerima (DTR).
  5. Bumi (GND).
  6. Kesiapan untuk pertukaran dari sumber (DSR).
  7. Permintaan transfer (RTS).
  8. Kesiapan transmisi (CTS).
  9. Sinyal panggilan (RI).

Informasi RJ-45 ke DB-9 tentang output dari adaptor port berurutan untuk beralih

Port konsol adalah antarmuka serial RS-232, yang menggunakan konektor RJ-45 untuk terhubung ke perangkat kontrol, seperti PC atau laptop. Jika tidak ada PIN PIN DB-9 pada laptop atau PC Anda, dan Anda ingin menghubungkan laptop atau PC ke sakelar, gunakan kombinasi adaptor RJ-45 dan DB-9.

Db-9.RJ-45.
Data yang diperoleh2 3
Transfer data3 6
Pertukaran kesiapan4 7
Tanah5 5
Tanah5 4
Pertukaran kesiapan6 2
Permintaan transfer7 8
Kesiapan untuk transmisi8 1

Warna kawat:

1 hitam
2 coklat
3 merah
4 oranye.
5 kuning
6 hijau
7 biru
8 abu-abu (atau putih)

Terkadang Anda harus menyelesaikan tugas komunikasi peralatan elektronik Dengan komputer, apakah itu hanya bertukar data atau remote control. Artikel ini menjelaskan bagaimana ini dapat diimplementasikan menggunakan port serial. Keuntungan utamanya adalah perangkat lunak standar antarmuka Windows. (API) memungkinkan Anda untuk secara langsung mengontrol garis output, memberikan kontrol langsung atas mereka, dan memiliki fungsi menunggu peristiwa tertentu yang terkait dengan port COM. Juga, standar RS-232 yang dilakukan port COM, memungkinkan Anda untuk menghubungkan dan mematikan kabel selama pengoperasian perangkat (hot plug).

Deskripsi

Port com (port serial) - Antarmuka dua arah mentransmisikan data secara berurutan (bit di luar) melalui protokol RS-232. Ini adalah protokol yang agak umum digunakan untuk mengkomunikasikan satu perangkat (misalnya, komputer) dengan kabel lain hingga 30 m. Sinyal logis berbeda di sini dari standar: tingkat unit logis adalah dari +5 hingga + 15V, level logis nol adalah dari -5 ke -15v, yang membutuhkan transformasi tambahan dari sirkuit, tetapi memberikan kekebalan kebisingan yang baik.

Pertimbangkan konektor 9-pin (DB-9M). Di bawah ini adalah pinoutnya:

Output №. Nama Karakter sinyal Sinyal
1 Dcd. Memasukkan Data Carrier mendeteksi.
2 Rxd. Keluaran Mengirimkan data.
3 Txd. Memasukkan Terima data.
4 DTR. Keluaran Terminal Data Siap
5 Gnd. - Tanah
6 DSR. Memasukkan SET DATA SIAP
7 RTS. Keluaran Meminta untuk mengirim.
8 CTS. Memasukkan Jelas untuk mengirim.
9 Ri. Memasukkan Indikator dering

Yang terpenting, kami akan tertarik pada pin 2 (transfer data), 3 (penerimaan data) dan 5 (tanah). Ini adalah set minimum untuk kemungkinan peralatan dua sisi.

Mulai detail pada deskripsi protokol tidak akan. Untuk ini ada gost dan sejenisnya. Karena itu, kami akan melangkah lebih jauh dan mari kita bicara tentang cara mengelola binatang ini.

Aplikasi

Seperti yang telah disebutkan, level RS-232 berbeda dari level TTL standar. Oleh karena itu, kita perlu entah bagaimana mengkonversi nilai tegangan. Itu. Buat 5V dari + 15V dan 0V dari -15V (dan sebaliknya). Salah satu cara (dan, mungkin, yang termudah) - penggunaan microsirit MAX232 khusus. Mudah dimengerti dan pada saat yang sama dapat mengubah dua sinyal logis.

Di bawah ini adalah skema inklusi-nya:


Saya pikir seharusnya tidak ada kesulitan. Ini adalah salah satu penggunaan chip ini: transmisi data dari mikrokontroler pada komputer dan sebaliknya. Sinyal yang ditransmisikan datang pada kaki t x.Di satu sisi dan pada r x.Di sisi lain. Sinyal input dihapus dari t x.Dan R. x.Masing-masing.

Pemrograman

Untuk memulainya, mari kita bicara tentang pemrograman port pada tingkat rendah. Jadi itu akan lebih benar. Saya menghabiskan banyak saraf, berurusan dengan antarmuka ini, sampai saya mulai mempelajari prinsip pekerjaannya pada tingkat yang lebih rendah daripada, lebih tepatnya transfer Sederhana Simbol. Jika jelas, itu berarti tidak akan ada masalah dengan bahasa tingkat tinggi.

Di bawah ini adalah alamat port COM yang dengannya kami harus bekerja:

Nama port. Alamat IRQ.
Com 1. 3F8H. 4
Com 2. 2f8h. 3
Com 3. 3E8H. 4
Com 4. 2E8h. 3

Mereka mungkin bervariasi. Atur nilai dalam pengaturan BIOS. Ini adalah alamat dasar. Mereka juga akan bergantung pada alamat register yang bertanggung jawab atas pekerjaan port:

Alamat Dlab. Membaca / menulis. Singkatan Daftar Nama
+ 0 =0 Menulis. Pemancar memegang buffer.
=0 Baca baca. Buffer penerima.
=1 Baca tulis. Byte latch byte rendah
+ 1 =0 Baca tulis. Ier. Interrupt Enable Register.
=1 Baca tulis. Pembagi kait byte tinggi
+ 2 - Baca baca. IIR. Mendaftar identifikasi interupsi
- Menulis. FCR. Daftar Kontrol FIFO
+ 3 - Baca tulis. Lcr. Daftar Kontrol LINE
+ 4 - Baca tulis. Mcr. Daftar Kontrol Modem
+ 5 - Baca baca. LSR. Daftar Status Line.
+ 6 - Baca baca. MSR. Daftar Status Modem
+ 7 - Baca tulis. Daftar awal.

Kolom pertama adalah alamat register relatif terhadap dasar. Misalnya, untuk COM1: Alamat register LCR akan menjadi 3F8H + 3 \u003d 3FB. Kolom kedua - DLAB (bit Access Latch Divisor), mendefinisikan tujuan yang berbeda untuk register yang sama .. I.E. Ini memungkinkan Anda untuk beroperasi dengan 12 register hanya menggunakan 8 alamat. Misalnya, jika DLAB \u003d 1, kemudian merujuk ke 3F8h, kami akan menetapkan nilai byte yang lebih muda dari frekuensi generator jam. Jika DLAB \u003d 0, lalu mengacu pada alamat yang sama, byte yang dikirim atau diterima akan direkam dalam register ini.

Nol Daftar

Ini sesuai dengan register register / transmisi data dan koefisien pembagi frekuensi generator. Seperti disebutkan di atas, jika DLAB \u003d 0, maka register digunakan untuk merekam data yang diterima / ditransmisikan, jika itu 1, maka nilai byte bawah pada pembatas frekuensi generator jam diatur. Kecepatan transfer data tergantung pada nilai frekuensi ini. Byte Divider Eldest ditulis ke sel memori berikutnya (I.E., untuk port COM1, itu akan menjadi 3F9H). Di bawah ini adalah ketergantungan dari kecepatan data dari koefisien pembagi:

Interrupt Enable Register (ier)

Jika DLAB \u003d 0, digunakan sebagai daftar register interupsi dari adaptor asinkron, jika DLAB \u003d 1, maka ia menetapkan byte senior frekuensi generator jam.

Daftar Identifikasi Interupsi (IIR)

Interupsi adalah peristiwa di mana eksekusi program utama berhenti dan prosedur interupsi dimulai. Daftar ini menentukan jenis gangguan.

Daftar Kontrol Line (LCR)

Ini adalah daftar kontrol.

Bit 7. 1 Bit Access Bit Divisor Latch - Kecepatan Pertukaran Data
0 Mode umum (kontrol interupsi, penerimaan / transmisi data)
Bit 6. Istirahat garis mimik (Mengirim urutan beberapa nol)
Bit 3 - 5 Bit 5. Bit 4. Bit 3. Pilihan keyakinan
X. X. 0 Tidak ada paritas
0 0 1 Paritas aneh.
0 1 1 Bahkan paritas.
1 0 1 Paritas tinggi (lengket)
1 1 1 Paritas rendah (lengket)
Bit 2. Jumlah bit berhenti
0 1 Stop Bit.
1 2 menghentikan bit pada 6,7 \u200b\u200batau 8 bit data atau 1,5 berhenti bit dengan 5 bit data.
Bit 0 dan 1 Bit 1. Bit 0. Jumlah bit data
0 0 5 bits.
0 1 6 bits.
1 0 7 bits.
1 1 8 bits.

Memeriksa kesiapan menyiratkan transmisi sedikit lagi - titik kesiapan. Nilainya diatur sedemikian rupa sehingga dalam paket bit, jumlah total unit (atau nol) bahkan atau aneh, tergantung pada instalasi register port. Bit ini digunakan untuk mendeteksi kesalahan yang dapat terjadi selama transmisi data karena interferensi pada garis. Perangkat penerima menghitung ulang paritas data dan membandingkan hasilnya dengan paritas bit. Jika paritas belum bertepatan, diyakini bahwa data ditransmisikan dengan kesalahan.

Stop bit berarti mengakhiri transfer data.

Daftar Kontrol Modem (MCR)

Daftar Kontrol Modem.

Sedikit Nilai
0 Line dtr.
1 Garis RTS.
2 Line Out1 (cadangan)
3 Line Out2 (cadangan)
4 Memulai diagnostik saat memasuki adaptor asinkron, ditutup pada outputnya.
5-7 Sama dengan 0.

Daftar Status Line (LSR)

Mendaftar mendefinisikan status garis.

Sedikit Nilai
0 Data diperoleh dan siap membaca, secara otomatis diatur ulang saat membaca data.
1 Kesalahan meluap. Byte data baru diadopsi, dan yang sebelumnya belum dibaca oleh program. Byte sebelumnya hilang.
2 Kesalahan reapyness diatur ulang setelah membaca status garis.
3 Kesalahan sinkronisasi.
4 Permintaan untuk mengganggu transmisi "Break" terdeteksi - deretan nol panjang.
5 Daftar penyimpanan pemancar kosong, Anda dapat merekam byte baru untuk transmisi.
6 Daftar perubahan pemancar kosong. Register ini menerima data dari register penyimpanan dan mengubahnya menjadi tipe serial untuk transmisi.
7 Time-Out (perangkat tidak terhubung ke komputer).

Daftar Status Modem (MSR)

Daftar Status Modem.

Itu dia. Mengoperasikan register ini, Anda dapat berkomunikasi langsung dengan port COM, mengontrol transmisi dan penerimaan data. Jika Anda tidak ingin mengacaukan memori, Anda dapat menggunakan komponen siap pakai untuk berbagai lingkungan pemrograman: C ++, VB, Delphi, Pascal, dll. Mereka intuitif, jadi, saya pikir itu tidak sepadan dengan perhatian di sini.

Stopbits. - Mengatur jumlah bit berhenti. Bidang mungkin
Ambil nilai-nilai berikut:


  • Onestopbit. - Sedikit berhenti;
  • One5stopbit. - satu setengah bit berhenti (praktis tidak
    bekas);
  • Twostopbit. - dua bit berhenti.

Setelah semua bidang struktur DCB diisi, Anda perlu
Mengkonfigurasi port dengan memanggil fungsi SetComMState:

Bool setcommstate (

Menangani hfile.

LPDCB LPDCB.

Dalam hal penyelesaian yang berhasil, fungsi akan kembali berbeda dari nol
nilai, dan jika terjadi kesalahan - nol.

Struktur wajib kedua untuk mengkonfigurasi port adalah
Struktur comtimeout. Ini mendefinisikan parameter penundaan sementara
Saat menerima. Berikut ini adalah deskripsi struktur ini:

typedef struct _comtimeouts (

Dword readintervaltimeout;

Dword readtotaltimeoutmultiplier;

Dword readtotoltimeoutconstant;

DWORD WRITETOLTIMEOUTMULTIPLIER;

DWORD WRITETOLTIMEUTHANTSTANT;

) ComTimeOut, * lpcommimtimeout;

Bidang Struktur ComTimeOut memiliki nilai-nilai berikut:


  • Readintervaltimeout. - Interval waktu maksimum
    (dalam milidetik) diizinkan antara dua yang dapat dibaca
    Jalur komunikasi dengan karakter berturut-turut. Selama
    Waktu membaca periode waktu mulai menghitung mundur dari
    penerimaan simbol pertama. Jika interval antara dua
    Karakter berurutan akan melebihi nilai yang ditentukan, operasi
    Membaca dan semua data yang terakumulasi dalam buffer ditransmisikan
    dalam program. Nilai nol lapangan ini berarti yang diberikan
    Time-out tidak digunakan.
  • Readtotaltimeoutmultiplier. - Menentukan pengganda (dalam


    dikalikan dengan jumlah karakter yang diminta untuk dibaca.
  • Readtotaltimeoutconstant. - Menentukan konstanta (dalam

    Operasi membaca. Untuk setiap operasi baca, nilai ini
    ditambah hingga hasil multiplikasi readtotaltimeoutmultiplier pada
    Jumlah karakter yang diminta untuk dibaca. Nol bidang
    Readtotaltimeoutmultiplier dan readtotaltimeout berarti
    Bahwa batas waktu keseluruhan untuk operasi baca tidak digunakan.
  • WriteTetotalTimultiplier. - Menentukan pengganda (dalam
    milidetik) digunakan untuk menghitung batas waktu total

    dikalikan dengan jumlah karakter tertulis.
  • WriteTetotalTimeOutnstant. - Menentukan konstanta (dalam
    milidetik) digunakan untuk menghitung batas waktu total
    Operasi perekaman. Untuk setiap operasi rekaman, nilai ini
    Ditambahkan ke hasil multiplikasi writetotaltimeoutmultiplier pada
    Jumlah karakter yang dapat ditulis. Nol bidang
    Writetotaltimeoutmultiplier dan writetotaltimeout berarti
    Bahwa batas waktu keseluruhan untuk operasi catatan tidak digunakan.

Sedikit lebih detail tentang batas waktu. Biarkan kita membaca dari port 50
Simbol dengan kecepatan 9.600 bits / s. Jika 8 bit digunakan
pada simbol, penambahan paritas dan satu stop bit, lalu satu
Simbol dalam garis fisik menyumbang 11 bit (termasuk bit awal).
Ini berarti 50 karakter dengan kecepatan 9.600 bit akan diterima

50 × 11/9600 \u003d 0,0572916 dengan

atau sekitar 57,3 milidetik, memberikan interval nol
antara menerima karakter berturut-turut. Jika interval antara
Karakter kira-kira setengah dari waktu transmisi satu
simbol, mis. 0,5 milidetik, waktu penerimaan akan

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

atau sekitar 82 milidetik. Jika lebih banyak dalam proses membaca
82 milidetik, maka kita memiliki hak untuk mengasumsikan bahwa terjadi kesalahan pada
pekerjaan perangkat eksternal dan dapat berhenti membaca, dengan demikian
menghindari pembekuan program. Ini adalah operasi batas waktu keseluruhan
Bacaan. Demikian pula, ada batas waktu total operasi.

Formula untuk menghitung total operasi batas waktu, misalnya,
Membaca, terlihat seperti ini:

Numofchar x readtotaltimeoutmultiplier +
Readtotaltimeoutconstant.

di mana Numofchar adalah jumlah karakter yang diminta untuk operasi baca.

Dalam kasus kami, perekaman batas waktu tidak dapat digunakan dan
Atur mereka sama dengan nol.

Setelah mengisi struktur comtimeout, Anda perlu menelepon
Fitur instalasi batas waktu:

Bool setcommimeouts (

Menangani hfile.

Lpcommimtimeout lpcommimeouts.

Karena operasi penerimaan transmisi dilakukan dengan kecepatan rendah,
Buffer data yang digunakan. Untuk mengatur ukuran buffer penerimaan dan
Transfer harus digunakan oleh fungsi:

Setupcomm bool (

Menangani hfile.

Dwinqueue dwinqueue,

Dword dwoutqueue.

Misalkan Anda bertukar dengan paket perangkat eksternal
informasi ukuran 1024 byte, maka ukuran buffer yang masuk akal
Akan ada nilai 1200. Fungsi setupcomm menarik karena bisa
Ambil saja dimensi Anda untuk diperhatikan dengan membuat penyesuaian Anda sendiri atau
Secara umum, tolak ukuran buffer yang ditawarkan oleh Anda - dalam hal ini
Fitur ini dilengkapi dengan kesalahan.

Saya akan memberikan contoh pembukaan dan konfigurasi berurutan
port com1. Untuk singkatnya - tanpa definisi kesalahan. Dalam contoh ini
Port terbuka untuk bekerja dengan kecepatan 9.600 bits / c, digunakan 1
Stop bit, bit paritas tidak digunakan:

#Include.

. . . . . . . . . .

Menangani pegangan;

ComTimeouts ComTimeouts;

DCB DCB;

handle \u003d createfile ("com1", generic_read | generic_write,
Null, , open_existing, file_flag_overlapped, null);

SetupComm (Handle, SuckBuffer, SIZEBuffer);

GetComMState (Handle, & DCB);

dcb.baudrate \u003d cbr_9600;

dcb.fbinary \u003d true;

dcb.foutxctsflow \u003d false;

dcb.foutxdsrflow \u003d false;

dcb.fdtrontrol \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.parition \u003d noparity;

dcb.stopbits \u003d 1;

SetCommState (Handle, & DCB);

Comtimeouts.readintervaltimeout \u003d 10;

ComTimeOuteS.READTOTALTIMEOUTMULTIPLIER \u003d 1;

// nilai-nilai saat ini - out sudah cukup pasti
penerimaan

// bahkan pada kecepatan 110 baud

ComTimeOute.READTOTALTIMEOUTONSTANT \u003d 100;

// bekas B. kasus ini Seperti waktu tunggu
paket

Comtimeouts.writetaltimeoutmultiplier \u003d 0;

Comtimeouts.writetaltimeoutoncstant \u003d 0;

Setcommimeouts (handle, & comtimeout);

Purgecomm (handle, purge_rxclear);

Purgecomm (handle, purge_txclear);

Setelah membuka port, hal pertama yang Anda butuhkan untuk kehilangannya, jadi
Seperti dalam penyangga penerimaan dan transmisi dapat menjadi "sampah". Karena itu B.
akhir dari contoh kami menerapkan fungsi yang sebelumnya tidak diketahui oleh kami
Purgecomm:

Bool purgecomm (

Menangani hfile.

DWLAG DWFLAGS

Fitur ini dapat melakukan dua tugas: Bersihkan antrian
Penerimaan dan transmisi dalam driver atau menyelesaikan semua operasi
I / O. Apa sebenarnya tindakan yang harus dilakukan, diatur ke yang lain
Parameter:


  • Purge_txabort.
    catatan bahkan jika mereka tidak selesai;
  • Purge_rxabort. - Segera menghentikan semua operasi
    membaca, bahkan jika mereka tidak selesai;
  • Purge_txclear. - Membersihkan antrian transmisi pada driver;
  • Purge_rxclear. - Membersihkan antrian penerimaan di
    Sopir.
    Nilai-nilai ini dapat digabungkan menggunakan dipukuli
    Operasi atau. Buffer bersih disarankan setelah kesalahan
    penerimaan dan setelah selesai dengan port.

Inilah saatnya untuk mempertimbangkan operasi langsung
Baca-tulis untuk port. Sedangkan untuk bekerja dengan file, digunakan
Fitur pembacaan dan writefile. Berikut ini adalah prototipe mereka:

Readfile bool (

Menangani hfile.

Lpvoid lpbuffer,

Dword nnumofbytestoread,

Lpdword lpnumofbytesread,

Lpoverlapped Lpoverlapped.

Writefile bool (

Menangani hfile.

Lpvoid lpbuffer,

Dword nnumofbytewrite,

Lpdword lpnumofbyteswritenten,

Lpoverlapped Lpoverlapped.

Pertimbangkan penugasan parameter dari fungsi-fungsi ini:


  • hfile. - Descriptor. membuka file Komunikasi
    Pelabuhan;
  • lpbuffer. - Alamat buffer. Untuk menulis data operasi dari
    Buffer ini akan ditransmisikan ke port. Untuk operasi membaca dalam hal ini
    Buffer akan ditempatkan oleh data yang diambil dari garis;
  • nnumofbytestoread, nnumofbytewrite. - Jumlah yang diharapkan
    untuk menerima atau ditujukan untuk byte transmisi;
  • nnumofbytesread, nnumofbyteswritten. - jumlah aktual
    byte yang diterima atau ditularkan. Jika diterima atau ditransfer lebih sedikit
    data daripada yang diminta, bersaksi ke file disk
    Tentang kesalahan, dan untuk port komunikasi belum tentu.
    Menyebabkan batas waktu.
  • Lpoverlapped. - Alamat struktur yang tumpang tindih digunakan
    Untuk operasi asinkron.

Dalam hal penyelesaian normal, fungsi dikembalikan ke
berbeda dari nol, jika terjadi kesalahan - nol.

Saya akan memberikan contoh operasi membaca dan menulis:

#Include.

…………..

NUMBBYTS DWORD, NUMBYTES_OK, TEMP;

Comstat Comstate;

Tumpang tindih tumpang tindih;

char buf_in \u003d "Halo!";

nUMBYTES \u003d 6;

// jika temp bukan nol, itu berarti port mampu
Kesalahan

jika (! TEMP) WRITEFILE (HANDLE, BUF_IN, NUMBYTES,
& Numbytes_ok, & tumpang tindih);

Clearcommerror (Handle, & Temp, & Comstate);

jika (! temp) readfile (menangani, buf_in, numbytes, & numbytes_ok,
& Tumpang tindih);

// dalam variabel numbytes_ok berisi bilangan real
ditularkan

// Diterima byte.

Dalam contoh ini, kami menggunakan dua saya yang tidak diketahui sebelumnya
Comstat dan struktur tumpang tindih, serta fungsi ClearComRor. Untuk
kasus komunikasi kami "dalam struktur tiga kabel" tumpang tindih
Pertimbangkan (cukup gunakan seperti pada contoh). Fungsi prototipe
Clearcommerror memiliki formulir:

Bool clearcommerror (

Menangani hfile.

LPDWord Lperrors,

Lpcctat lpstat.

Fitur ini mengatur ulang tanda kesalahan port (jika ada
tempat) dan mengembalikan informasi tentang keadaan port dalam struktur
Comstat:

structff struct _cstat.

DWORD FCTSHOLD: 1;

DWORD FDSRHROLD: 1;

Dword frlsdhold: 1;

Dword fxoffold: 1;

DWORD FXOFFSENT: 1;

DWORD FEOF: 1;

DWORD FTIME: 1;

DWORD SELESAI: 25;

Dword cbinque;

Dword cboutque;

) Comstat, * lpconstat;

Kita dapat menggunakan dua bidang struktur ini:


  • Cbinque. - Jumlah karakter dalam buffer penerima. Simbol-simbol ini
    diambil dari garis, tetapi belum dibaca oleh fungsi readFile;
  • Cboutque. - Jumlah karakter dalam buffer transmisi. Ini
    Simbol belum ditransmisikan ke garis.

Bidang yang tersisa dari struktur ini berisi informasi tentang
Kesalahan.

Akhirnya, setelah menyelesaikan pekerjaan dengan port, itu harus ditutup.
Menutup objek di Win32 mengeksekusi fungsi CloseHandle:

Bool closhandle (

Menangani hobject.

Di situs kami, Anda dapat menemukan teks lengkap kelas untuk bekerja dengan
port berurutan dalam mode asinkron "dalam tiga kabel", dan
Juga merupakan contoh dari suatu program menggunakan kelas ini. Semua ini
Ditulis di bawah Builder C ++, tetapi karena hanya fungsi yang digunakan.
API Win32, teks program mudah diubah untuk kompiler C ++.
Dimungkinkan juga bahwa kelas tidak ditulis cukup "sesuai dengan aturan" - saya bertanya
Alasan, penulis bukan programmer "benar" dan menulis begitu
Bagaimana itu nyaman j.

Saya menyambut semua orang lagi di halaman blog Anda dan hari ini saya ingin memberi tahu caranya hubungkan com port USB. Di Windows. Mari kita bicara bahwa itu dan untuk apa yang digunakan. Saya pikir untuk administrator jaringan pemula, dan hanya untuk pengguna tingkat lanjut itu akan menarik, bagi saya, pada suatu waktu itu hanya semacam sihir yang memungkinkan Anda untuk mengkonfigurasi peralatan server.

Apa yang terhubung melalui port com

Melalui port COM yang sebelumnya terhubung modem, tikus. Sekarang digunakan untuk terhubung ke sumber kekuatan tanpa gangguan, untuk komunikasi dengan pengembangan perangkat keras sistem komputasi tertanam, penerima satelit, register kas, dengan perangkat untuk sistem keamanan objek, serta dengan banyak perangkat lain.

Menggunakan port COM, Anda dapat menghubungkan dua komputer menggunakan apa yang disebut "kabel nol-modem" (lihat di bawah). Digunakan dari MS-DOS kali untuk memompa file dari satu komputer ke komputer lain, di Unix untuk akses terminal ke mesin lain, dan di Windows (bahkan modern) - untuk debugger tingkat kernel.

Tetapi di dunia jaringan melalui COM Port.hubungkan ke Port Cantilever dari Perangkat Jaringan (Switch, Router, Merek-Merek seperti Cisco atau Juniper)

Apa sirkuit menghubungkan untuk beralih melalui port serial. Ada adaptor, misalnya, dari ST-lab di salah satu ujung USB yang Anda sambungkan ke komputer, dan yang kedua adalah port COM.

Menginstal com driver port USB di Windows

Sayangnya di perangkat yang terhubung Windows, USB untuk COM tidak selalu diinstal secara otomatis di sistem, dan Anda harus mencari mereka driver. Jika Anda membelinya sendiri, maka drive disertakan dengan driver, dan Anda dapat menggunakannya jika tidak, lalu lihat cara menemukan driver.

Buka manajer perangkat di Windows. Jika Anda tidak tahu caranya, lalu tekan CTR + Jeda Breake, atau tekan Win + R dan masukkan devmgmt.msc di jendela. Seperti yang dapat Anda lihat di bagian port (COM dan LPT), saya ditemukan pada kawat Port COM ketiga yang tidak diketahui, dan driver tidak menemukannya dari sistem, yang dikatakan ikon kuning kepada kita.

Pergi ke properti alat ini Dan pilih ID Peralatan, Anda akan memiliki, sesuatu dengan tipe USB \\ VID_067B & PID_2303 & REV_0300, di sini Anda menyalinnya dan mencari di Google atau Yandex.

Kemudian klik pada klik kanan pada perangkat di manajer perangkat dan pilih instal driver, tunjukkan path ke mereka dan letakkan jika semuanya OK, maka Anda miliki ikon akan hilang Peringatan.

Selanjutnya, Anda sudah dapat menggunakan kemungkinan port COM, menggunakan utilitas tersebut pada kemiripan Putty, di mana Anda memilih Serial dan menentukan port port COM yang diinginkan, Anda dapat melihatnya di manajer perangkat yang sama.

Saya harap Anda belajar dan menemukan cara menghubungkan port USB COM di Windows.