Beberapa catatan tentang kontrol MSCOMM
Kontrol komunikasi MSComm VB5.0/6 menyediakan serangkaian antarmuka perintah komunikasi standar, yang memungkinkan pembentukan koneksi port serial dan dapat dihubungkan ke perangkat komunikasi lain (seperti Modem).
Anda juga dapat mengirim perintah, bertukar data, dan memantau serta merespons berbagai kesalahan dan peristiwa yang mungkin terjadi selama proses komunikasi, memungkinkan Anda membuat dupleks penuh, berbasis peristiwa.
Program komunikasi yang dinamis, efisien dan praktis. Namun, dalam proses perancangan perangkat lunak komunikasi sebenarnya, pengendalian MSComm tidak sesempurna dan semudah yang dibayangkan. Khususnya di Wln Cina
Akan ada lebih banyak masalah ketika berkomunikasi di bawah 95/98. Berikut ini akan dimulai dengan pengenalan dasar, kemudian secara bertahap membahas permasalahan yang muncul dalam pemrograman kontrol MSComm dan teknik pemrogramannya.
1. Berkomunikasi dengan kontrol MSComm
1. Pengetahuan dasar komunikasi serial
Umumnya komputer memiliki satu atau lebih port serial, yaitu com1, com2,..., port serial ini juga menyediakan perangkat eksternal dan PC untuk transmisi data dan
Bagian dari surat itu. Port serial ini bertindak sebagai penerjemah antara CPU dan periferal. Ketika data karakter dikirim dari CPU ke periferal, data karakter ini diubah menjadi bit serial
Aliran data; saat menerima data, data aliran bit diubah menjadi data karakter dan diteruskan ke CPU. Selanjutnya, dalam hal sistem operasi, Windows menggunakan driver komunikasi
(COMM.DRV) memanggil fungsi API untuk mengirim dan menerima data. Ketika fungsi API dipanggil dengan kontrol komunikasi atau deklarasi, fungsi tersebut diinterpretasikan oleh COMM.DRV dan diteruskan ke driver perangkat.
Sebagai seorang programmer vB, Anda perlu menulis program komunikasi. Anda hanya perlu mengetahui antarmuka yang disediakan oleh kontrol komunikasi ke fungsi komunikasi Windows AP1. Dengan kata lain, cukup atur dan pantau
Percaya saja pada properti dan kejadian kontrol.
2. Menggunakan kontrol Mscomm
Sebelum mulai menggunakan kontrol MSComm. Perlu terlebih dahulu memahami properti, peristiwa, atau kesalahannya
Deskripsi properti
CommPort menetapkan atau mengembalikan nomor port komunikasi
Pengaturan menetapkan atau mengembalikan baud rate, paritas, bit data, dan bit stop sebagai string
PortOpen menetapkan atau mengembalikan status port komunikasi. Port juga bisa dibuka dan ditutup
Input mengembalikan dan menghapus karakter di buffer penerimaan
Output menulis string ke dalam buffer pengiriman
Properti CommEvent mengembalikan salah satu nilai berikut untuk peristiwa atau kesalahan komunikasi. Konstanta ini juga dapat ditemukan di perpustakaan objek kontrol.
Deskripsi nilai konstan
ComEventBreak1001 menerima sinyal istirahat
ComEventCTSTO1002ClearToSendTimeout. Saat mengirim karakter, dalam peristiwa yang ditentukan oleh sistem, jalur CTS (ClearToSend) berada pada level rendah
ComEventDSRTO1003DataSetReadyTimeout. Saat mengirim karakter, dalam peristiwa yang ditentukan oleh sistem, baris DSR (DataSetReady) berada pada level rendah
Kesalahan bingkai data ComEventFrame1004. Perangkat keras mendeteksi kesalahan bingkai data
Pelabuhan ComEventOverrun1006 meluap. Karakter di hardware belum terbaca, karakter berikutnya datang dan hilang
ComEventCDTO1007CarrierDetectTime. Saat mengirim karakter, baris CD (CarrierDetect) berada pada level rendah dalam peristiwa yang ditentukan oleh sistem. CD
Juga disebut RLSD (ReceiveLineSingalDetect, menerima deteksi sinyal saluran)
ComEventRxOver1008 menerima buffer overflow. Tidak ada ruang di buffer penerimaan
Kesalahan paritas ComEventRxParity1009. Kesalahan paritas terdeteksi perangkat keras 7
ComEventTxFull1010 Buffer pengiriman penuh. Saat mengantri karakter pengiriman, buffer pengiriman penuh.
ComEventDCB1011 Terjadi kesalahan tak terduga saat mengambil port DCB (DeviceControlBlick).
Peristiwa komunikasi mencakup pengaturan berikut:
Deskripsi nilai konstan
Jumlah karakter dalam buffer pengiriman ComEvSend1 lebih rendah dari nilai Sthreshold
ComEvReceive2 menerima karakter Rthreshold. Peristiwa ini terus dihasilkan hingga data di buffer penerimaan dihapus menggunakan properti Input.
Jalur ComEvCTS3CTS(ClearToSend) berubah
Baris ComEvDSR4DSR(DataSetReady) diubah. Peristiwa ini terjadi ketika DSR berubah dari 1 menjadi 0
Garis ComEvCD5CD (CarrierDetect) berubah ketika ComEvRing6 mendeteksi sinyal dering. Beberapa URAT (UniversalAsynchronousReciver-
-Pemancar, Pemancar-Penerima Asinkron Universal) tidak mendukung acara ini
ComEvEOF7 menerima karakter EOF (karakter ASCII 26)
Pesan kesalahan (kontrol MSComm) Tabel berikut mencantumkan pesan kesalahan yang dapat ditangkap oleh kontrol MSComm:
Deskripsi nilai konstan
ComInvalidPropertyValue380 Nilai properti tidak valid
Properti ComSetNotSupported383 hanya dapat dibaca
Properti ComGetNotSupported394 hanya dapat dibaca
Kehadiran ini tidak valid ketika port ComPortOpen8000 dibuka.
Pengaturan batas waktu 8001 harus lebih besar dari 0
ComPortInvalid8002 Nomor port tidak valid
Atribut 8003 hanya valid saat runtime
Properti 8004 bersifat read-only pada saat runtime
Port ComPortAleadyOpen8005 telah dibuka
8006 Pengenal perangkat tidak valid atau tidak didukung
8007 Kecepatan baud perangkat tidak didukung
8008 Ukuran byte yang ditentukan tidak valid
8009 Kesalahan parameter default
8010 Perangkat keras tidak tersedia (dikunci oleh perangkat lain)
Fungsi 8011 tidak dapat mengalokasikan antrian
Perangkat ComNoOpen8012 tidak terbuka
8013 Perangkat sudah terbuka
8014 Notifikasi komunikasi tidak dapat digunakan
ComSetCommStateFailed8015 tidak dapat mengatur status komunikasi
8016 Tidak dapat menyetel pelindung peristiwa komunikasi
ComPortNotOpen8018 Kehadiran ini hanya valid ketika port terbuka
8019 Perangkat sibuk
ComReadError8020 Kesalahan pembacaan perangkat komunikasi
ComDCBError8021 Terjadi kesalahan internal saat mengambil blok kontrol perangkat port
Setelah memahami sifat dasar di atas, Anda dapat mulai menulis program izin komunikasi. Buat file proyek baru di VB5.0/6.0. Tambahkan grup MicrosoftCommControl5.0
File, tambahkan tombol Perintah ke Formulir Sederhana1 dan beri nama CmdTest, beri nama kontrol MSComm MSComm1, dan tambahkan kode program berikut.
PrivateSubcmdTestClick()'Buka port serial
MSComml.CommPort=2'Atur Com2
IfMSComml.PortOpen=FalseThen
MSComm1.Settings="9600,n,8,1"'9600 baud rate, tanpa paritas, 8 bit data, 1 stop bit
MSComm1.PortOpen=Benar'Buka port serial
Endif
MSComm1.OutBufferCount=0'Kosongkan buffer pengiriman
MSComm1.InBufferCount=0'Selipkan buffer penerimaan
'Saat mengirim data karakter, pastikan untuk mengakhirinya dengan pengangkutan kembali (vbcr)
MSComm1.Output="Buku ini adalahqood!"&vbCr
'Ciptakan nomor telepon atau kirim perintah AT
MSComm1.Output="ATDT05778191898,&vbCr
'Saat mengirim data array karakter, perhatikan bahwa ByteArray harus diberi nilai terlebih dahulu
DimByteArrayasbyte()
'Tentukan array dinamis
ReDimByteArray(1)
'Definisikan ulang ukuran array
ByteArray(0)=0
ByteArray(1)=1
MSComm1.Output=ByteArray
Sub Akhir
privateSubMScommEvent()
PilihCaseMSComm1.CommEvent
CasecomEvReceive
DimBufferAsVariant
MSComm1.InputLen=0
'Terima data biner
MSComm1.InputMode=ComInputModeBinary
Buffer=MSComm1.Masukan
'Terima data karakter
MSComm1.InputMode=comInputModeText
Buffer=MSComml.Masukan
Kasus lain
Pilihan Akhir
Sub akhir
(Prosedur 1)
1 2Baca teks selengkapnya di halaman berikutnya