Anda sedang offline saat ini, menunggu internet Anda untuk menyambung kembali

Cara mengirim dan menerima data biner dengan menggunakan kontrol VFP MSComm32

PENTING: Artikel ini diterjemahkan menggunakan perangkat lunak mesin penerjemah Microsoft dan bukan oleh seorang penerjemah. Microsoft menawarkan artikel yang diterjemahkan oleh seorang penerjemah maupun artikel yang diterjemahkan menggunakan mesin sehingga Anda akan memiliki akses ke seluruh artikel baru yang diterbitkan di Pangkalan Pengetahuan (Knowledge Base) dalam bahasa yang Anda gunakan. Namun, artikel yang diterjemahkan menggunakan mesin tidak selalu sempurna. Artikel tersebut mungkin memiliki kesalahan kosa kata, sintaksis, atau tata bahasa, hampir sama seperti orang asing yang berbicara dalam bahasa Anda. Microsoft tidak bertanggung jawab terhadap akurasi, kesalahan atau kerusakan yang disebabkan karena kesalahan penerjemahan konten atau penggunaannya oleh para pelanggan. Microsoft juga sering memperbarui perangkat lunak mesin penerjemah.

Klik disini untuk melihat versi Inggris dari artikel ini:154741
RINGKASAN
Artikel ini menggambarkan beberapa teknik yang menggunakan Visual FoxPro 3.0Komunikasi (MSComm) kontrol untuk menerima dan mengirimkan data bineratas kabel RS-232 (tanpa modem).
INFORMASI LEBIH LANJUT
Kontrol komunikasi, MSCOMM32.OCX, menyediakan komunikasi serialuntuk aplikasi Anda dengan memungkinkan transmisi dan penerimaan datamelalui serial port di mana hanya serangkaian karakter untuk transmisipenyangga diperbolehkan. Fitur ini membatasi Anda untuk transmisi hanya teks-file berbasis.

Artikel ini menunjukkan bagaimana untuk menggunakan kontrol MSComm untuk mengirimkan danmenerima data biner yang menggunakan kabel RS-232. (Teknik dalam artikel inijuga akan bekerja dengan modem.) Data biner harus dikonversi satu byte padawaktu untuk sebuah karakter yang kemudian diteruskan. Ketika menerima, data harusdikonversi dari karakter kembali ke data biner satu byte pada suatu waktu.

Pada sistem operasi diaktifkan DBCS (menjalankan perangkat lunak sistem operasi yangmenggunakan salah satu rangkaian karakter ganda-byte), data biner akan rusakJika salah satu nilai-nilai biner pertandingan tokoh utama DBCS. MSCommkontrol akan menafsirkan byte ini dan byte berikut sebagai satu byte gandakarakter dan kembali hanya satu byte untuk karakter ASCII setara. Padamengatasi masalah ini, Anda perlu mengkonversi satu byte ke ASCII ukuran tigakarakter untuk melestarikan tokoh utama.

Kode sampel

Kode berikut menggambarkan proses ini.

Warning PENGGUNAAN KODE CONTOH YANG TERSEDIA DI DALAM ARTIKEL INI ADALAH PADA ANDARISIKO SENDIRI. Microsoft menyediakan kode contoh ini "sebagaimana mestinya" tanpajaminan apapun, baik tersurat maupun tersirat, termasuk tetapi tidakterbatas pada jaminan tersirat mengenai keadaan yang dapat diperjualbelikan dan/atau kebugaranuntuk tujuan tertentu.
* Transmitter Code.* INIT event of Comm OLE control* 28800 baud, no parity, 8 data, and 1 stop bit.* In RS-232, maximum speed of 28800 baud can be used   This.Settings = "28800,N,8,1"   This.InputLen = 1   This.CommPort = 1   This.PortOpen = .T.* ONCOMM event of Comm OLE Control* The following code is needed to make sure that next set of characters* can be transmitted (CommEvent = 2 is triggered from the receiver side)   IF This.CommEvent = 2      This.input       IF gnTop <= gnEnd         gcString = FREAD(gnFileHandle, 1)  && Store to memory         q=asc(gcstring)         * change ASCII to character (size of 3) to preserve the lead char    thisform.olecontrol1.output = str(q,3)    gnTop = gnTop + 1       ENDIF   ENDIF* INIT event of form   PUBLIC gnFileHandle   PUBLIC gnEnd   PUBLIC gnTop   PUBLIC q   * You should replace 'c:\sample.hlp' with your own binary file   STORE FOPEN('c:\sample.hlp') TO gnFileHandle    && Open the file   STORE FSEEK(gnFileHandle, 0, 2) TO gnEnd  && Move pointer to EOF   STORE FSEEK(gnFileHandle, 0) TO gnTop  && Move pointer to BOF   gntop=1   q=""-----------------------Property of OleControl1RThreshold = 1     * triggers when at least one char is on the bufferSThreshold = 3-----------------------* Receiver Code.* INIT event of OleControl1* 28800 baud, no parity, 8 data, and 1 stop bit.   This.Settings = "28800,N,8,1"   This.InputLen = 3   This.CommPort = 1   This.PortOpen = .T.* OnComm event   IF This.CommEvent = 2 AND This.InBufferCount > 0      qq=CHR(VAL(This.Input))      =FWRITE(gnFileHandle,qq)      this.output = CHR(26)   ENDIF* INIT event of form   PUBLIC gnFileHandle   * You should replace 'c:\sample.hlp' with your own file name   IF FILE('c:\sample.hlp')  && Does file exist?      gnErrFile = FOPEN('c:\sample.hlp',12)  && If so, open read-write   ELSE      gnErrFile = FCREATE('c:\sample.hlp')  && If not, create it   ENDIF   = FCLOSE(gnErrFile)  && Close the file   STORE FOPEN('c:\sample.hlp',1) TO gnFileHandle     && Open the file* CLICK event of button   *This tells the transmitting side to start sending the file   Thisform.Olecontrol1.output = CHR(26)-----------------------Property of OleControl1RThreshold = 3-----------------------				
Event-driven teknik menghasilkan acara OnComm ketika adakarakter yang menunggu di buffer masukan. Juga, properti CommEvent akanberisi 2 numerik. OnComm acara dipicu, Anda harus mengaturRthreshold properti nilai lain dari nol (nilai). Yang palingumum pengaturan untuk properti RThreshold adalah 1, berarti bahwa OnCommacara yang dipicu jika minimal satu karakter menunggu pada inputbuffer. Pada artikel ini, 3 sedang digunakan sebagai nilai properti RThresholdkarena 3 karakter pada satu waktu yang sedang dikirim.

Peringatan: Artikel ini telah diterjemahkan secara otomatis

Properti

ID Artikel: 154741 - Tinjauan Terakhir: 09/15/2011 11:12:00 - Revisi: 2.0

Microsoft Visual FoxPro 3.0 Standard Edition, Microsoft Visual FoxPro 6.0 Professional Edition, Microsoft Visual FoxPro 7.0 Professional Edition, Microsoft Visual FoxPro 8.0 Professional Edition, Microsoft Visual FoxPro 9.0 Professional Edition

  • kbmt KB154741 KbMtid
Tanggapan