Port bersiri. port COM. Pendawaian, pinout dan litar

Jadi kami sampai ke pelabuhan COM. Tetapi dengan itu semuanya tidak semudah dengan LPT, dan penggunaan penuhnya akan memerlukan lebih banyak usaha. Masalah utama juga adalah kelebihan utamanya - pemindahan data bersiri. Jika dalam LPT satu bait data dihantar sepanjang 8 baris, bit setiap baris, dan keadaan setiap baris dapat dilihat dengan mudah, maka dalam port COM satu bait data dihantar sedikit demi sedikit sepanjang satu baris (berbanding dengan tanah , sudah tentu) dan lihat apa yang dihantar ke sana dengan LED sahaja tidak akan melakukannya. Untuk melakukan ini, anda memerlukan peranti khas - penukar aliran data bersiri menjadi selari, yang dipanggil. USART (Pemancar Penerima Segerak/Asynchronous Universal). Sebagai contoh, ia termasuk dalam papan induk komputer yang dilengkapi dengan port COM, atau dalam mana-mana mikropengawal yang lebih serius.


Saya harap anda masih tawar hati dalam menguasai port COM. Ia bukan semua azab dan kesuraman. Sesetengah keputusan boleh diperolehi tanpa USART. Mari kita rumuskan tugas yang akan kita laksanakan pada peringkat awal bekerja dengan port COM:


"Saya ingin LED disambungkan ke komputer melalui port COM. Saya melancarkan program ini. Saya melakukan beberapa tindakan dalam program ini, LED menyala, saya melakukan sesuatu yang lain - LED padam."


Tugas itu agak khusus (dengan mengambil kira hakikat bahawa USART tidak digunakan) dan merupakan tugas "buat sendiri" tulen, tetapi ia agak boleh dilaksanakan dan boleh dilaksanakan. Mari kita mula melaksanakannya.


1. COM port

Sekali lagi, ambil unit sistem PC anda dan lihat bahagian belakang. Kami perhatikan terdapat penyambung 9-pin - ini adalah port COM. Pada hakikatnya mungkin terdapat beberapa daripadanya (sehingga 4). PC saya mempunyai dua port COM (lihat foto).


2. Sambungan port COM


3. Perkakasan

Kami juga perlu "bermain" dengan perkakasan, dalam erti kata bahawa ia akan menjadi lebih rumit daripada dengan peranti pertama untuk port LPT. Hakikatnya ialah protokol RS-232, di mana data ditukar dalam port COM, mempunyai hubungan voltan keadaan logik yang sedikit berbeza. Jika biasanya ini logik 0 0 V, logik 1 +5 V, maka dalam RS-232 hubungan ini adalah seperti berikut: logik 0 +12 V, logik 1 -12 V.

Dan sebagai contoh, setelah menerima -12 V, tidak jelas apa yang perlu dilakukan dengan voltan ini. Biasanya, tahap RS-232 ditukar kepada TTL (0.5 V). Pilihan paling mudah ialah diod zener. Tetapi saya bercadang untuk membuat penukar ini pada cip khas. Ia dipanggil MAX232.

Sekarang mari kita lihat apakah isyarat dari port COM yang boleh kita lihat pada LED? Malah, terdapat sebanyak 6 talian bebas dalam port COM, yang menarik minat pembangun peranti antara muka. Dua daripadanya belum tersedia kepada kami - talian data bersiri. Tetapi baki 4 direka untuk mengawal dan menunjukkan proses pemindahan data dan kami boleh "memindahkan" mereka untuk memenuhi keperluan kami. Dua daripadanya bertujuan untuk kawalan daripada peranti luaran dan kami tidak akan menyentuhnya buat masa ini, tetapi kini kami akan menggunakan dua baris terakhir yang tinggal. Mereka dipanggil:

  • RTS- Permintaan untuk pemindahan. Garis interaksi yang menunjukkan bahawa komputer bersedia untuk menerima data.
  • DTR- Komputer sudah siap. Garis interaksi yang menunjukkan bahawa komputer dihidupkan dan bersedia untuk berkomunikasi.

Sekarang kami memindahkan sedikit tujuannya, dan LED yang disambungkan kepada mereka akan sama ada padam atau menyala, bergantung pada tindakan dalam program kami sendiri.

Jadi, mari kita susun rajah yang membolehkan kita melaksanakan tindakan yang kita inginkan.

Dan inilah pelaksanaan praktikalnya. Saya fikir anda akan memaafkan saya bahawa saya membuatnya dalam versi papan roti yang begitu bodoh, kerana saya tidak mahu membuat papan untuk litar "sangat produktif".


4. Bahagian perisian

Segala-galanya lebih mudah di sini. Mari cipta aplikasi Windows dalam Microsoft Visual C++ 6.0 berdasarkan MFC untuk mengurus dua baris komunikasi port COM. Untuk melakukan ini, buat projek MFC baharu dan beri nama, sebagai contoh, TestCOM. Seterusnya, pilih pilihan untuk membina berdasarkan dialog.

Berikan rupa tetingkap dialog program kami seperti dalam Rajah. di bawah, iaitu tambah empat butang, dua untuk setiap baris. Satu daripadanya masing-masing perlu untuk "memadamkan" garisan, yang lain untuk "menetapkannya" kepada satu.

Kelas CTestCOMDlg: CDialog awam ( // Pembinaan awam: CTestCOMDlg(CWnd* pParent = NULL); // pembina standard HANDLE hFile;

Agar program kami mengawal baris port COM, ia mesti dibuka terlebih dahulu. Mari tulis kod yang bertanggungjawab untuk membuka port semasa memuatkan program.

HFile = CreateFile("COM2", GENERIC_READ|GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0,NULL); if(hFile==INVALID_HANDLE_VALUE) ( MessageBox("Port tidak boleh dibuka!", "Ralat", MB_ICONERROR); ) else ( MessageBox("Port berjaya dibuka", "Ok", MB_OK); )

Menggunakan fungsi Win API standard CreateFile() buka port COM COM2. Seterusnya, kami menyemak kejayaan pembukaan dan memaparkan mesej maklumat. Di sini kita perlu membuat nota penting: COM2 ada pada komputer saya, tetapi pada komputer anda, anda boleh menyambungkannya ke port COM lain. Sehubungan itu, namanya perlu ditukar kepada mana-mana port yang anda gunakan. Anda boleh melihat nombor port yang terdapat pada komputer anda seperti ini: Mula -> Tetapan -> Panel Kawalan -> Sistem -> Perkakasan -> Pengurus Peranti -> Port (COM dan LPT).

Akibatnya, fungsi CTestCOMDlg::OnInitDialog(), terletak dalam fail TestCOMDlg.cpp, kelas dialog kami hendaklah dalam bentuk:

BOOL CTestCOMDlg::OnInitDialog() ( CDialog::OnInitDialog(); // Tambah "Perihal..." item menu ke menu sistem. // IDM_ABOUTBOX mesti berada dalam julat arahan sistem. ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX); ASSERT(IDM_ABOUTBOX AppendMenu(MF_SEPARATOR); pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu); ) ) // Tetapkan ikon untuk dialog ini. Rangka kerja melakukan ini secara automatik // apabila tetingkap utama aplikasi bukan SetIcon dialog(m_hIcon, TRUE); // Tetapkan ikon besar SetIcon(m_hIcon, FALSE); // Tetapkan ikon kecil // TODO: Tambah permulaan tambahan di sini hFile = CreateFile("COM2", GENERIC_READ|GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0,NULL); if(hFile==INVALID_HANDLE_VALUE) ( MessageBox("Tidak dapat membuka port!", "Ostbk", MB_ICONERROR); ) else ( MessageBox("Port berjaya dibuka", "Ok", MB_OK); ) return TRUE; // return TRUE melainkan anda menetapkan fokus kepada kawalan )

Sekarang mari tambah pengendali untuk butang kawalan talian. Saya memberi mereka nama yang sesuai: fungsi yang menetapkan satu pada baris DTR ialah OnDTR1(), 0 ialah OnDTR0(). Untuk baris RTS, dengan cara yang sama. Biar saya ingatkan anda bahawa pengendali dibuat apabila anda mengklik dua kali pada butang. Akibatnya, empat fungsi ini sepatutnya kelihatan seperti:

Void CTestCOMDlg::OnDTR1() ( // TODO: Tambahkan kod pengendali pemberitahuan kawalan anda di sini EscapeCommFunction(hFile, 6); ) void CTestCOMDlg::OnDTR0() ( // TODO: Tambah kod pengendali pemberitahuan kawalan anda di sini EscapeCommFunction(hFile, 5); ) void CTestCOMDlg::OnRTS1() ( // TODO: Tambahkan kod pengendali pemberitahuan kawalan anda di sini EscapeCommFunction(hFile, 4); ) void CTestCOMDlg::OnRTS0() ( // TODO: Tambahkan kod pengendali pemberitahuan kawalan anda di sini EscapeCommFunction(hFile, 3); )

Biar saya terangkan sedikit bagaimana ia berfungsi. Seperti yang anda lihat, di dalamnya mengandungi panggilan ke fungsi Win API yang sama EscapeCommFunction() dengan dua parameter. Yang pertama ialah pemegang (HANDLE) ke port terbuka, yang kedua ialah kod tindakan khas yang sepadan dengan keadaan baris yang diperlukan.

Itu sahaja, kami menyusun dan melancarkan. Jika semuanya baik-baik saja, anda akan melihat mesej tentang kejayaan pembukaan pelabuhan. Seterusnya, dengan menekan butang yang sepadan, kami kelipkan LED yang disambungkan ke port COM.

© Ivanov Dmitry
Disember 2006

Pemindahan data dari pemproses pusat ke mana-mana peranti persisian dan sebaliknya dikawal dengan menetapkan permintaan gangguan IRQ...

Gangguan dan alamat

Pemindahan data daripada pemproses pusat ke mana-mana peranti persisian dan sebaliknya dikawal dengan menetapkan permintaan gangguan (IRQ) dan alamat I/O. Untuk peranti persisian luaran, permintaan gangguan dan alamat I/O diberikan kepada port yang melaluinya ia disambungkan.

Perkataan "permintaan gangguan" menunjukkan bahawa CPU sedang terganggu dan diarahkan untuk menangani data yang datang dari beberapa peranti. Terdapat 16 sampukan secara keseluruhan - dari 0 hingga 15. Semua port bersiri dan selari biasanya memerlukan permintaan sampukan mereka sendiri, kecuali COM1 dan COM3, serta COM2 dan COM4, ​​sering mempunyai permintaan sampukan biasa.

Untuk setiap port, anda perlu menentukan alamat I/O yang unik, yang serupa dengan peti mel untuk surat-menyurat yang tiba di alamat CPU, di mana ia disimpan sehingga diproses. Jika sebarang permintaan gangguan atau alamat I/O digunakan oleh lebih daripada satu peranti pada masa yang sama, maka tiada satu pun daripada mereka akan berfungsi dengan betul malah boleh membekukan PC.

Jika terdapat masalah dengan port, semak permintaan gangguan dan alamat I/O yang diberikan kepadanya.

Panel kawalan - Sistem - Peranti - Port COM dan LPT

Jika anda melihat bulatan kuning dengan tanda seru di dalam sebelum mana-mana baris, anda mungkin menemui punca "gangguan". Dengan garis yang diserlahkan, klik "Properties - Resources". Dalam medan "Senarai peranti bercanggah", cari perkara yang menyebabkan konflik. Jika ternyata ia adalah beberapa papan lama yang tidak menyokong Plug & Play, ia akan disenaraikan sebagai "Peranti Tidak Diketahui".

Untuk menyelesaikan masalah, tukar permintaan gangguan atau alamat I/O untuk salah satu peranti yang menyinggung perasaan. Jika port berada pada papan sistem, gunakan program Persediaan Sistem (BIOS) untuk melakukan ini.

Untuk memasukkan Persediaan Sistem semasa permulaan PC, tekan kekunci "Padam", "F1" atau kekunci lain - ketahui dalam dokumentasi sistem. Dalam banyak atur cara persediaan, anda boleh menetapkan permintaan gangguan dan alamat I/O (menetapkan sumber) kepada setiap port tertentu, mengatasi port lama.

Cari permintaan gangguan yang tidak digunakan atau alamat I/O.

Panel Kawalan - Sistem - Peranti - Komputer

Anda akan melihat senarai lengkap sumber yang digunakan. Jika tiada permintaan gangguan yang tidak digunakan, cuba lumpuhkan port yang tidak digunakan menggunakan Persediaan Sistem.

Selepas itu...

Sistem - Peranti - Peranti bercanggah - Sumber

Matikan ciri Persediaan Auto. Dalam tetingkap "Senarai Sumber", pilih jenis sumber, klik butang "Tukar" dan dalam medan "Nilai", nyatakan nilai permintaan gangguan atau alamat I/O baharu (tidak digunakan).

Menetapkan Parameter Pelabuhan Selari

Port selari disingkatkan LPT. Komputer secara automatik memberikan alamat LPT1 kepada LPT3 kepada setiap port selari yang dikesan.

Jika anda memasang port selari kedua, pastikan ia tidak menggunakan permintaan gangguan sedia ada. Pada sesetengah komputer, LPT1 dan LPT2 menggunakan IRQ7 secara lalai. Menggunakan Pengurus Peranti, tetapkan IRQ5 untuk LPT2. Jika ini tidak mungkin, gunakan program Persediaan CMOS sistem anda.

Tetapan Sumber Port Selari Standard

pelabuhan LPT Permintaan Gangguan Alamat I/O
LPT1 IRQ7 ZVS
LPT2 IRQ7 378
LPT3 IRQ5 278

Menetapkan Parameter Port Bersiri

Setiap port bersiri dikenal pasti oleh salah satu daripada lapan alamat COM yang mungkin - COM1, COM2, dsb., yang setiap satunya mempunyai alamat I/O yang unik dan permintaan gangguan.

Berhati-hati apabila memasang peranti yang memerlukan port COM ke dalam PC anda. Port COM1 dan COM2 mempunyai alamat I/O standard dan permintaan gangguan yang tidak boleh ditukar di mana-mana sahaja (biasanya hanya boleh ditukar dalam program Persediaan CMOS PC anda). Jika anda perlu menetapkan port COM1 atau COM2 kepada peranti baharu, maka apabila anda but PC, masukkan program Persediaan dan sama ada nyahdayakan port bersiri yang diberikan kepada COM1 atau COM2, atau, jika anda perlu mengosongkan tetapan yang sepadan untuk peranti tambahan, tukar permintaan gangguan dan alamat yang mengenal pasti I/O itu

Ambil perhatian bahawa semua alamat I/O standard hanya menggunakan sampukan ketiga dan keempat. Memandangkan dua peranti tidak sepatutnya berkongsi permintaan gangguan yang sama, cuba petakan peranti luaran baharu ke port COM3 melalui COM3 dengan menetapkan permintaan gangguan dan alamat I/O secara manual menggunakan Pengurus Peranti (kotak dialog "Sifat: Sistem").

Tetapan Sumber Port Serial Standard

port COM Permintaan Gangguan Alamat I/O
COM1 IRQ4 3F8
COM2 IRQ3 2F8
COM3 IRQ4 ZE8
COM4 IRQ3* 2E8
COM5 IRQ4* ZEO
COM6 IRQ3* 2EO
COM7 IRQ4* 338
COM8 IRQ3* 238

*Boleh dipasang menggunakan Pengurus Peranti Windows 9x (Properties: System)

Pengoptimuman Port Bersiri

Komputer mempunyai satu atau dua port bersiri 9-pin terbina dalam, biasanya terletak di bahagian belakang komputer. Menggunakan port sedemikian, hanya 1 bit data boleh dipindahkan setiap unit masa, manakala melalui port selari - 8 bit. Kelajuan port bersiri bergantung pada transceiver tak segerak universal (UART), yang menukar aliran data selari yang melalui bas PC menjadi satu bit tunggal.

Biasanya, PC moden didatangkan dengan model UART 16550. Dalam kes ini, daya pemprosesan maksimum ialah 115 kbps, yang menyediakan lebar jalur yang mencukupi untuk kebanyakan peranti bersiri. Model UART yang lebih lama 16450 dan 8250 tidak lagi dapat mengatasi tugas ini. Tetapi kadangkala prestasi UART 16550 mungkin tidak mencukupi, kerana sesetengah modem analog memproses data termampat pada kelajuan 230 kbps, dan penyesuai ISDN - sehingga 1 Mbps. Jadi, jika anda memerlukan kelajuan pemindahan data yang lebih tinggi, beli kad pengembangan dengan model 16750 UART yang mampu berjalan pada 921 kbps.

Bekerja dengan Pelabuhan Selari

Port selari biasanya digunakan untuk pencetak, walaupun ia juga boleh menyambungkan peranti lain, seperti pengimbas, ke PC. Dengan bantuan mereka, anda boleh memindahkan data pada kelajuan dari 40 KB/s kepada 1 MB/s, dan kadangkala lebih tinggi.

Pada asasnya, semua PC datang dengan satu port selari dalam bentuk penyambung 25-pin pada panel belakang. Untuk menambah port kedua, anda perlu membeli pengawal I/O dan memasangnya dalam slot pengembangan pada papan sistem. Terdapat empat jenis port selari - satu arah, dua arah, keupayaan dipertingkat (port EPP) dan keupayaan dipertingkat (port ECP). Setiap daripada mereka mempunyai kelajuan dan keupayaan yang berbeza. Kebanyakan port PC baharu menyokong keempat-empat mod, dan untuk mengetahui yang mana satu menyediakan port selari, lihat dalam utiliti Persediaan CMOS PC anda di bawah bahagian Peranti bersepadu.

Pelabuhan satu arah kadang-kadang juga dipanggil port SPP. Konfigurasi asas ini menghantar data pada kelajuan 40-50 KB/s dalam satu arah sahaja - ke pencetak atau peranti luaran yang lain.

Pelabuhan dua arah. Menyediakan pertukaran data dua hala dengan kelajuan pemindahan dari 100 hingga 300 KB/s antara PC dan peranti luaran. Dalam kes ini, maklumat tentang keadaan yang terakhir memasuki komputer.

Pelabuhan Dipertingkat (EPP). Direka untuk pemacu luaran dan penyesuai rangkaian yang memerlukan prestasi tinggi. Menyediakan kelajuan pemindahan data daripada 400 KB/s kepada 1 MB/s atau lebih.

Apabila memasang pilihan EPP dalam program Persediaan Sistem, versi 1.7 dan 1.9 ditawarkan. Untuk hampir semua peranti yang dibeli dalam beberapa tahun kebelakangan ini, anda perlu memilih 1.9.

Port Keupayaan Lanjutan (ECP). Meningkatkan kelajuan dan mengembangkan keupayaan pertukaran data antara peranti luaran dan komputer. Jika pencetak dan peranti persisian lain menyokong ECP, mereka secara langsung melaporkan status peranti dan ralat.

Jika dalam program. Persediaan Sistem, tetapkan pilihan ECP, kemudian baris akan muncul untuk memilih saluran DMA (saluran akses memori langsung). Ia mesti ditetapkan dengan cara yang sama seperti untuk permintaan gangguan. Untuk mengelakkan konflik saluran DMA, lihat yang percuma dalam tetingkap "Sifat: Komputer", seperti yang diterangkan di atas. Jika konflik tidak dapat dielakkan, kemudian kembali ke mod port dua arah.

Pelabuhan terbaik untuk taufan data.

Dalam sistem baharu dan peranti persisian, port selari dan bersiri mula digantikan oleh bas bersiri universal ( Bas Bersiri Universal, USB). Dengan bantuannya, anda boleh mencapai kadar pemindahan data sehingga 12 Mbit/s, dan juga menyambung, dengan hanya satu port, papan kekunci, monitor, tetikus dan banyak peranti lain (sehingga 127), yang, seperti antara muka SCSI yang menyelesaikan masalah yang sama, boleh disambungkan "rantai". Dalam kes ini, hanya satu permintaan gangguan digunakan. Bas USB juga boleh dipasang pada komputer lama dengan membeli kad pengembangan yang sesuai.

Kadangkala anda perlu menyelesaikan masalah menyambungkan peranti elektronik dengan komputer, sama ada pertukaran data atau alat kawalan jauh. Artikel ini menerangkan cara ini boleh dilaksanakan menggunakan port bersiri. Kelebihan utamanya ialah antara muka pengaturcaraan Windows standard (API) membenarkan kawalan terus ke atas talian keluaran, memberikan kawalan langsung ke atasnya, dan mempunyai fungsi menunggu beberapa acara yang dikaitkan dengan port COM. Juga, standard RS-232, mengikut mana port COM dibuat, membolehkan untuk menyambung dan memutuskan kabel semasa peranti beroperasi (palam panas).

Penerangan

Port COM (port bersiri)– antara muka dwiarah yang menghantar data dalam bentuk bersiri (sedikit demi sedikit) melalui protokol RS-232. Ini adalah protokol yang agak biasa digunakan untuk menyambungkan satu peranti (contohnya, komputer) dengan yang lain melalui wayar sehingga 30 m panjang. Tahap isyarat logik di sini berbeza daripada yang standard: tahap satu logik adalah dari +5 hingga +15V, tahap sifar logik adalah dari -5 hingga -15V, yang memerlukan transformasi litar tambahan, tetapi memberikan imuniti bunyi yang baik.

Pertimbangkan penyambung 9-pin (DB-9M). Di bawah ialah pinoutnya:

Pin no. Nama Watak isyarat Isyarat
1 DCD Input Pengesan pembawa data
2 RxD Hari cuti Hantar data
3 TxD Input Terima data
4 DTR Hari cuti Terminal data sedia
5 GND - tanah
6 DSR Input Set data sedia
7 RTS Hari cuti Permintaan untuk menghantar
8 CTS Input Kosongkan untuk dihantar
9 R.I. Input Penunjuk cincin

Kami akan paling berminat dengan pin 2 (penghantaran data), 3 (penerimaan data) dan 5 (tanah). Ini ialah set minimum untuk komunikasi dua hala antara peranti.

Saya tidak akan membincangkan perihalan protokol secara terperinci. Untuk ini terdapat GOST, dsb. Oleh itu, kita akan pergi lebih jauh dan bercakap tentang cara mengawal binatang ini.

Permohonan

Seperti yang telah disebutkan, tahap RS-232 LAN adalah berbeza daripada tahap TTL standard. Oleh itu, entah bagaimana kita perlu menukar nilai voltan. Itu. buat 5V daripada +15V dan 0V daripada -15V (dan sebaliknya). Satu cara (dan mungkin yang paling mudah) ialah menggunakan cip MAX232 khas. Ia mudah difahami dan boleh menukar dua isyarat logik secara serentak.

Di bawah ialah gambar rajah kemasukannya:


Saya rasa tidak sepatutnya ada sebarang kesulitan. Ini adalah salah satu pilihan untuk menggunakan cip ini: memindahkan data daripada mikropengawal ke komputer dan sebaliknya. Isyarat yang dihantar pergi ke pin T x IN di satu sisi dan di R x IN pada yang lain. Isyarat input diambil daripada T x OUT dan R x KELUAR masing-masing.

Pengaturcaraan

Mula-mula, mari bercakap tentang port pengaturcaraan pada tahap rendah. Ini akan menjadi lebih betul. Saya menghabiskan banyak saraf untuk memahami antara muka ini sehingga saya mula menyelidiki prinsip operasinya pada tahap yang lebih rendah daripada penghantaran aksara mudah. Jika ini jelas, maka tidak akan ada masalah dengan bahasa peringkat tinggi.

Di bawah ialah alamat port COM yang kami perlu bekerjasama:

Nama pelabuhan Alamat IRQ
COM 1 3F8j 4
COM 2 2F8j 3
COM 3 3E8j 4
COM 4 2E8j 3

Mereka mungkin berbeza-beza. Anda boleh menetapkan nilai dalam tetapan BIOS. Ini adalah alamat asas. Alamat daftar yang bertanggungjawab untuk operasi pelabuhan akan bergantung kepada mereka:

Alamat DLAB Baca tulis Singkatan Daftar nama
+ 0 =0 tulis Penampan Pegangan Pemancar
=0 Baca Penampan Penerima
=1 Baca tulis Selak Pembahagi Bait Rendah
+ 1 =0 Baca tulis IER Interrupt Enable Register
=1 Baca tulis Selak Pembahagi Bait Tinggi
+ 2 - Baca IIR Daftar Pengenalan Gangguan
- tulis FCR Daftar Kawalan FIFO
+ 3 - Baca tulis LCR Daftar Kawalan Talian
+ 4 - Baca tulis MCR Daftar Kawalan Modem
+ 5 - Baca LSR Daftar Status Talian
+ 6 - Baca MSR Daftar Status Modem
+ 7 - Baca tulis Daftar Gores

Lajur pertama ialah alamat daftar relatif kepada pangkalan. Contohnya, untuk COM1: alamat daftar LCR ialah 3F8h+3=3FB. Lajur kedua ialah bit DLAB (Divisor Latch Access Bit), yang mentakrifkan tujuan berbeza untuk daftar yang sama.. I.e. ia membolehkan anda mengendalikan 12 daftar menggunakan hanya 8 alamat. Sebagai contoh, jika DLAB=1, maka dengan mengakses alamat 3F8h kita akan menetapkan nilai bait rendah pembahagi frekuensi penjana jam. Jika DLAB = 0, maka apabila mengakses alamat yang sama, bait yang dihantar atau diterima akan ditulis ke daftar ini.

Daftar "Sifar".

Ia sepadan dengan daftar untuk menerima/menghantar data dan menetapkan pekali pembahagi frekuensi penjana. Seperti yang dinyatakan di atas, jika DLAB = 0, maka daftar digunakan untuk merekod data yang diterima / dihantar, tetapi jika ia sama dengan 1, maka nilai bait rendah pembahagi frekuensi penjana jam ditetapkan. Kelajuan penghantaran data bergantung pada nilai frekuensi ini. Bait tinggi pembahagi ditulis ke sel memori seterusnya (iaitu untuk port COM1 ia akan menjadi 3F9h). Di bawah ialah pergantungan kadar pemindahan data pada pekali pembahagi:

Interrupt Enable Register (IER)

Jika DLAB=0, maka ia digunakan sebagai daftar untuk mengawal gangguan daripada penyesuai tak segerak; jika DLAB=1, maka bait tinggi pembahagi frekuensi penjana jam ditetapkan di dalamnya.

Daftar Pengenalan Gangguan (IIR)

Interrupt ialah peristiwa yang menghentikan pelaksanaan program utama dan memulakan pelaksanaan rutin interrupt. Daftar ini menentukan jenis gangguan yang berlaku.

Daftar Kawalan Talian (LCR)

Ini adalah daftar kawalan.

Bit 7 1 Bit Akses Selak Pembahagi – menetapkan kadar pertukaran data
0 Mod biasa (kawalan gangguan, penerimaan/penghantaran data)
Bit 6 Simulasikan pemisah baris (menghantar urutan berbilang sifar)
Bit 3 – 5 Bit 5 Bit 4 Bit 3 Pemilihan pariti
X X 0 Tiada Pariti
0 0 1 Pariti Ganjil
0 1 1 Malah Parity
1 0 1 Pariti Tinggi (Lekit)
1 1 1 Pariti Rendah (Lekit)
Bit 2 Bilangan bit hentian
0 1 hentian sedikit
1 2 bit hentian untuk 6,7 atau 8 bit data atau 1.5 bit hentian untuk 5 bit data.
Bit 0 Dan 1 Bit 1 Bit 0 Bilangan bit data
0 0 5 bit
0 1 6 bit
1 0 7 bit
1 1 8 bit

Pemeriksaan pariti melibatkan penghantaran satu bit lagi - bit pariti. Nilainya ditetapkan supaya jumlah bilangan satu (atau sifar) dalam paket bit adalah genap atau ganjil, bergantung pada tetapan daftar port. Bit ini digunakan untuk mengesan ralat yang mungkin berlaku semasa penghantaran data akibat gangguan pada talian. Peranti penerima mengira semula pariti data dan membandingkan hasilnya dengan bit pariti yang diterima. Jika pariti tidak sepadan, maka ia dianggap bahawa data telah dihantar dengan ralat.

Bit henti menunjukkan tamat penghantaran data.

Daftar Kawalan Modem (MCR)

Daftar kawalan modem.

sedikit Maknanya
0 talian DTR
1 talian RTS.
2 Talian OUT1 (ganti)
3 Talian OUT2 (ganti)
4 Menjalankan diagnostik apabila input penyesuai tak segerak dipendekkan ke outputnya.
5-7 Sama dengan 0

Daftar Status Talian (LSR)

Daftar yang menentukan keadaan talian.

sedikit Maknanya
0 Data diterima dan sedia untuk dibaca, ditetapkan semula secara automatik apabila data dibaca.
1 Ralat limpahan. Satu bait data baharu telah diterima, tetapi yang sebelumnya belum lagi dibaca oleh atur cara. Bait sebelumnya hilang.
2 Ralat pariti, dikosongkan selepas membaca status baris.
3 Ralat penyegerakan.
4 Permintaan untuk mengganggu penghantaran "BREAK" telah dikesan - rentetan panjang sifar.
5 Daftar pemegang pemancar kosong dan bait baharu boleh ditulis kepadanya untuk penghantaran.
6 Daftar anjakan pemancar kosong. Daftar ini menerima data daripada daftar pegangan dan mensirikannya untuk penghantaran.
7 Tamat masa (peranti tidak disambungkan ke komputer).

Daftar Status Modem (MSR)

Daftar status modem.

OK semuanya sudah berakhir Sekarang. Dengan mengendalikan daftar ini, anda boleh berkomunikasi secara langsung dengan port COM dan mengawal penghantaran dan penerimaan data. Jika anda tidak mahu bermain-main dengan memori, anda boleh menggunakan komponen siap sedia untuk pelbagai persekitaran pengaturcaraan: C++, VB, Delphi, Pascal, dsb. Mereka intuitif, jadi saya fikir tidak perlu memberi tumpuan kepada mereka di sini.

Ciri khas port ini berbanding dengan teknologi "siri" lain ialah hakikat bahawa tiada keperluan masa antara 2 bait. Terdapat keperluan pemasaan hanya antara bit satu bait (termasuk mula, henti dan pariti), timbal balik jeda masa antara bit satu bait dipanggil kadar baud - kadar baud. Juga dalam teknologi ini tidak ada konsep "pakej".

Teknologi "siri" lain, seperti X.25, USB atau Ethernet, mempunyai konsep "paket", dan mengenakan keperluan pemasaan yang ketat antara semua bit satu paket.

Atas sebab ini, dalam terminologi Cisco IOS, port ini dipanggil async - berbeza dengan siri segerak, i.e. X.25. Atas sebab yang sama, modul Windows yang melaksanakan PPP ke atas port ini dipanggil AsyncMac.sys (standard PPP secara berasingan menerangkan pelaksanaan PPP, yang menggunakan konsep "paket", melalui port bersiri yang tidak mempunyai konsep ini) .

Sesetengah protokol komunikasi industri mengenakan keperluan pemasaan yang ketat antara bait port bersiri. Protokol sedemikian amat sukar untuk dilaksanakan dalam sistem pengendalian berbilang tugas dengan sokongan masa nyata yang lemah, seperti Windows, dan oleh itu sering memerlukan MS-DOS dan perisian lapuk dari hampir 20 tahun lalu pada komputer kawalan.

Tujuan

Piawaian yang paling biasa digunakan untuk port bersiri komputer peribadi ialah RS-232C. Sebelum ini, port bersiri digunakan untuk menyambung terminal, kemudian untuk modem atau tetikus. Ia kini digunakan untuk menyambung kepada, untuk berkomunikasi dengan perkakasan untuk pembangunan sistem pengkomputeran terbenam, penerima satelit, daftar tunai, serta dengan peranti sistem keselamatan kemudahan.

Menggunakan port COM, anda boleh menyambungkan dua komputer menggunakan apa yang dipanggil "kabel modem null" (lihat di bawah). Ia telah digunakan sejak zaman MS-DOS untuk memindahkan fail dari satu komputer ke komputer lain, dalam UNIX untuk akses terminal ke mesin lain, dan dalam Windows (walaupun yang moden) untuk debugger peringkat kernel.

Kelebihan teknologi adalah kesederhanaan melampau peralatan. Kelemahannya ialah kelajuan rendah, saiz penyambung yang besar, serta selalunya keperluan yang tinggi untuk masa tindak balas OS dan pemacu dan bilangan gangguan yang tinggi (satu setiap separuh daripada baris gilir perkakasan, iaitu 8 bait).

Penyambung

Pada papan induk daripada pengeluar terkemuka (contohnya, Intel) atau sistem sedia (contohnya, IBM, Hewlett-Packard, Fujitsu Siemens Computers), simbol berikut digunakan untuk port bersiri:

Penyambung berbentuk D yang paling biasa digunakan, diseragamkan pada tahun 1969, ialah 9-pin dan 25-pin (DB-9 dan DB-25, masing-masing). Sebelum ini, DB-31 dan pusingan lapan pin DIN-8 turut digunakan. Kelajuan penghantaran maksimum dalam versi port biasa ialah 115,200 baud.

Perkaitan

Terdapat piawaian untuk meniru port bersiri melalui USB dan melalui Bluetooth (teknologi ini sebahagian besarnya direka sebagai "port bersiri tanpa wayar").

Namun begitu, emulasi perisian port ini masih digunakan secara meluas hari ini. Sebagai contoh, hampir semua telefon mudah alih meniru port COM klasik dan modem dalam diri mereka sendiri untuk melaksanakan penambatan - akses komputer ke Internet melalui peralatan GPRS/EGDE/3G telefon. Dalam kes ini, USB, Bluetooth atau Wi-Fi digunakan untuk sambungan fizikal ke komputer.

Juga, emulasi perisian port ini disediakan kepada "tetamu" mesin maya VMWare dan Microsoft Hyper-V, tujuan utamanya adalah untuk menyambungkan penyahpepijat peringkat kernel Windows kepada "tetamu".

peralatan

Penyambung mempunyai kenalan:

DTR (Data Terminal Ready - kesediaan untuk menerima data) - output pada komputer, input pada modem. Menunjukkan bahawa komputer sedia untuk menggunakan modem. Menetapkan semula baris ini menyebabkan but semula hampir lengkap modem kepada keadaan asalnya, termasuk. menutup telefon (beberapa daftar kawalan bertahan dalam penetapan semula sedemikian). Pada UNIX, ini berlaku apabila semua aplikasi telah menutup fail pada pemacu port bersiri. Tetikus menggunakan wayar ini untuk menerima kuasa.

DSR (Data Set Ready - kesediaan untuk pemindahan data) - input pada komputer, output pada modem. Menunjukkan bahawa modem sudah sedia. Jika baris ini berada pada sifar, maka dalam beberapa sistem pengendalian menjadi mustahil untuk membuka port sebagai fail.

RxD (Terima Data) - input pada komputer, output pada modem. Aliran data yang memasuki komputer.

TxD (Transmit Data) - output pada komputer, input pada modem. Aliran data yang datang dari komputer.

CTS (Clear to Send - kesediaan untuk menghantar) - input pada komputer, output pada modem. Komputer dikehendaki menggantung penghantaran data sehingga wayar ini ditetapkan kepada satu. Digunakan dalam protokol kawalan aliran perkakasan untuk mengelakkan limpahan dalam modem.

RTS (Request to Send - request to send) - output pada komputer, input pada modem. Modem diperlukan untuk menggantung penghantaran data sehingga wayar ini ditetapkan kepada satu. Digunakan dalam protokol kawalan aliran perkakasan untuk mengelakkan limpahan perkakasan dan pemacu.

DCD (Carrier Detect - kehadiran pembawa) - input pada komputer, output pada modem. Tetapkan kepada satu oleh modem selepas membuat sambungan dengan modem di sisi lain, tetapkan semula kepada sifar apabila sambungan terputus. Perkakasan komputer mungkin mengeluarkan gangguan apabila peristiwa sedemikian berlaku.

RI (Penunjuk Dering - isyarat deringan) - input pada komputer, output pada modem. Ditetapkan oleh modem kepada satu selepas mengesan isyarat deringan panggilan telefon. Perkakasan komputer mungkin mengeluarkan gangguan apabila peristiwa sedemikian berlaku.

SG (Signal Ground) - wayar isyarat biasa port, bukan tanah biasa, sebagai peraturan, diasingkan daripada sarung komputer atau modem.

Kabel modem null menggunakan dua pasangan bersilang: TXD/RXD dan RTS/CTS.

Perkakasan port standard (sejak IBM PC asal) dipanggil UART 16550 (kini termasuk dalam cip SuperIO pada motherboard bersama-sama dengan beberapa peranti lain). Sejak zaman PC IBM, baris gilir bait perkakasan telah muncul di dalamnya, yang sangat mengurangkan bilangan gangguan yang dikeluarkan oleh peranti.

Akses terprogram ke port COM

UNIX

Terdapat bahagian pendaftaran untuk setiap port. Bahagian ini mempunyai nama berikut:

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

di mana nilai terakhir "Serial10000" ialah nombor unik untuk setiap port COM baharu yang ditambahkan pada sistem, untuk yang kedua - "Serial10001", dsb.

Untuk berkomunikasi dengan peranti yang menyokong Bluetooth, sesetengah atur cara (contohnya, program sedemikian termasuk: program yang menyegerakkan senarai kenalan dengan telefon mudah alih; program yang mendapatkan semula koordinat GPS daripada penerima GPS) memerlukan port COM pada komputer pengguna.

Program yang menggunakan port COM untuk menyokong komunikasi menggunakan teknologi wayarles Bluetooth, yang dibangunkan secara langsung oleh Microsoft, termasuk:

  • HotSync digunakan dalam komputer pegang tangan
  • ActiveSync, digunakan dalam PC poket

OS/2

Pemacu COM.SYS sedia ada hanya menyokong 4 port COM, setiap satunya mesti mempunyai talian sampukan sendiri. Untuk menyediakan port COM dengan talian gangguan biasa, anda mesti menggunakan pemacu SIO.

Kabel modem null

Rencana utama: Kabel modem null

Dalam sesetengah kes, adalah mungkin untuk menggunakan versi mudah kabel, di mana hanya pin 2, 3 dan 5 digunakan.

lihat juga

  • Isyarat Port Bersiri

Nota

Pautan

  • Terjemahan panduan pengaturcaraan port COM dalam sistem pengendalian POSIX
  • Memprogramkan port dalam java - membolehkan anda bekerja dari Windows, tidak seperti pakej rasmi dari Sun.
  • Memprogramkan port COM dalam C++ untuk Windows. Pustaka siap sedia, kod sumber, program contoh.
  • Yashkardin V.L. Port bersiri. Memprogramkan port COM dalam Windows dan MS-DOS. SoftElectro (2009). Diarkibkan daripada yang asal pada 8 Februari 2012.

). Walaupun fakta bahawa beberapa antara muka komputer (contohnya, Ethernet, FireWire dan USB) juga menggunakan kaedah bersiri untuk bertukar maklumat, nama "port bersiri" diberikan kepada port standard RS-232.

YouTube ensiklopedia

  • 1 / 5

    Piawaian yang paling biasa digunakan untuk port bersiri komputer peribadi ialah RS-232C. Sebelum ini, port bersiri digunakan untuk menyambung terminal, kemudian untuk modem atau tetikus. Ia kini digunakan untuk menyambung kepada perkakasan untuk pembangunan sistem pengkomputeran terbenam, penerima satelit, daftar tunai, sistem keselamatan dan banyak peranti lain.

    Menggunakan port COM, anda boleh menyambungkan dua komputer menggunakan apa yang dipanggil "kabel modem null" (lihat di bawah). Ia telah digunakan sejak zaman MS-DOS untuk memindahkan fail dari satu komputer ke komputer lain, dalam UNIX untuk akses terminal ke mesin lain, dan dalam Windows (walaupun yang moden) untuk debugger peringkat kernel.

    Kelebihan teknologi adalah kesederhanaan melampau peralatan. Kelemahannya ialah kelajuan rendah, saiz penyambung yang besar, serta keperluan yang sering tinggi untuk masa tindak balas OS dan pemacu dan sejumlah besar gangguan (satu per separuh daripada baris gilir perkakasan, iaitu, 8 bait).

    Penyambung

    Pada papan induk daripada pengeluar terkemuka (contohnya, Intel) atau sistem sedia (contohnya, IBM, Hewlett-Packard, Fujitsu Siemens Computers), simbol berikut digunakan untuk port bersiri:

    Penyambung berbentuk D yang paling biasa digunakan, diseragamkan pada tahun 1969, ialah 9- dan 25-pin, (masing-masing DE-9 dan DB-25). Sebelum ini, DA-31 dan pusingan lapan pin DIN-8 turut digunakan. Kelajuan penghantaran maksimum dalam versi port biasa ialah 115,200 baud.

    Perkaitan

    Terdapat piawaian untuk meniru port bersiri melalui USB dan melalui Bluetooth (teknologi ini sebahagian besarnya direka sebagai "port bersiri tanpa wayar").

    Namun begitu, emulasi perisian port ini masih digunakan secara meluas hari ini. Sebagai contoh, hampir semua telefon mudah alih meniru port COM klasik dan modem dalam diri mereka sendiri untuk melaksanakan penambatan - akses komputer ke Internet melalui peralatan GPRS/EDGE/3G telefon. Dalam kes ini, USB, Bluetooth atau Wi-Fi digunakan untuk sambungan fizikal ke komputer.

    Juga, emulasi perisian port ini disediakan kepada "tetamu" mesin maya VMWare dan Microsoft Hyper-V, tujuan utamanya adalah untuk menyambungkan penyahpepijat peringkat kernel Windows kepada "tetamu".

    Dalam bentuk UART, yang berbeza dalam tahap voltan dan ketiadaan isyarat tambahan, ia terdapat dalam hampir semua mikropengawal, kecuali yang sangat kecil, SoC, papan pembangun, dan juga terdapat pada papan kebanyakan peranti, tetapi penyambung tidak terletak pada kes itu. Populariti ini disebabkan oleh kesederhanaan antara muka ini, baik dari sudut fizikal dan kemudahan akses ke port daripada perisian berbanding antara muka lain.

    peralatan

    Penyambung mempunyai kenalan:

    DTR (Data Terminal Ready - kesediaan untuk menerima data) - output pada komputer, input pada modem. Menunjukkan bahawa komputer sedia untuk menggunakan modem. Menetapkan semula talian ini menyebabkan but semula hampir lengkap modem kepada keadaan asalnya, termasuk menutup telefon (sesetengah daftar kawalan bertahan daripada tetapan semula sedemikian). Pada UNIX, ini berlaku apabila semua aplikasi telah menutup fail pada pemacu port bersiri. Tetikus menggunakan wayar ini untuk menerima kuasa.

    DSR (Data Set Ready - kesediaan untuk pemindahan data) - input pada komputer, output pada modem. Menunjukkan bahawa modem sudah sedia. Jika baris ini berada pada sifar, maka dalam beberapa sistem pengendalian menjadi mustahil untuk membuka port sebagai fail.

    RxD (Terima Data) - input pada komputer, output pada modem. Aliran data yang memasuki komputer.

    TxD (Transmit Data) - output pada komputer, input pada modem. Aliran data yang datang dari komputer.

    CTS (Clear to Send - kesediaan untuk menghantar) - input pada komputer, output pada modem. Komputer dikehendaki menggantung penghantaran data sehingga wayar ini ditetapkan kepada satu. Digunakan dalam protokol kawalan aliran perkakasan untuk mengelakkan limpahan dalam modem.

    RTS (Request to Send - request to send) - output pada komputer, input pada modem. Modem diperlukan untuk menggantung penghantaran data sehingga wayar ini ditetapkan kepada satu. Digunakan dalam protokol kawalan aliran perkakasan untuk mengelakkan limpahan perkakasan dan pemacu.

    DCD (Carrier Detect - kehadiran pembawa) - input pada komputer, output pada modem. Tetapkan kepada satu oleh modem selepas membuat sambungan dengan modem di sisi lain, tetapkan semula kepada sifar apabila sambungan terputus. Perkakasan komputer mungkin mengeluarkan gangguan apabila peristiwa sedemikian berlaku.

    RI (Penunjuk Dering - isyarat deringan) - input pada komputer, output pada modem. Ditetapkan oleh modem kepada satu selepas mengesan isyarat deringan panggilan telefon. Perkakasan komputer mungkin mengeluarkan gangguan apabila peristiwa sedemikian berlaku.

    SG (Signal Ground) - wayar isyarat biasa port, bukan tanah biasa, sebagai peraturan, diasingkan daripada sarung komputer atau modem.

    Kabel modem null menggunakan dua pasangan bersilang: TXD/RXD dan RTS/CTS.

    Pada mulanya, dalam IBM PC dan IBM PC/XT, peralatan port dibina pada cip UART 8250 daripada National Semiconductor, kemudian cip itu digantikan oleh 16450, perisian yang serasi dengan yang sebelumnya, tetapi membenarkan kelajuan sehingga 115,200 bit setiap kedua, kemudian cip 16550 muncul, mengandungi penimbal data FIFO dua hala untuk mengurangkan beban pada pengawal gangguan. Pada masa ini termasuk dalam cip SuperIO pada papan induk bersama-sama dengan beberapa peranti lain.