Seperti halnya pada project mengirim data melalui serial port, untuk membaca data dari serial port, kita juga menggunakan komponen MScomm. Disini ada contoh paling sederhana untuk membaca data serial port. Pertama kita buat form, dengan sebuah textbox dan komponen MScomm. Sekali lagi , ini hanyalah salah satu contoh dan untuk pengembangan tergantung aplikasi yang akan kita buat.
Kemudian pada Form_Load() tambahkan code berikut :
MSComm1.CommPort = 2 'tergantung COM port yang tersedia, saya menggunakan COM 2
MSComm1.Settings = "9600,N,8,1" 'contoh setting serial port
MSComm1.InputLen = 0
MSComm1.RThreshold = 1
MSComm1.PortOpen = True
Pada aplikasi ini sengaja saya menggunakan COM 2 karena COM 1 sudah saya pakai untuk aplikasi mengirim data. Jadi nantinya untuk menguji hasil aplikasi ini bisa kita lakukan aplikasi yang telah dibuat menggunakan virtual port.
Untuk menerima data dari serial port, kita siapkan textbox yang akan menampilkan data- data yang diterima dari serial Port. Data – data ini diterima melalui event onComm (tulisan awal tentang serial port dan visual basic.)
Jadi pada event onComm kita tambahkan code berikut :
Select Case MSComm1.CommEvent
' Errors
Case comEventRxParity ' Parity Error.
MsgBox "Parity"
' Events
Case comEvReceive ' Received RThreshold # of chars.
Text1.Text = MSComm1.Input
End Select
Pada event oncomm yang saya buat, saya memberikan 1 event error (parity error) dan 1 events komunikasi yaitu comevreceive untuk membaca data. Data yang diterima akan langsung ditampilkan ke textbox melalui code
Text1.Text=MsComm1.Input
Untuk menonaktifkan port serial yang dipilih setelah selesai menggunakan aplikasi, tambahkan code berikut pada Form_Unload
MSComm1.PortOpen = False ‘untuk menonaktifkan port serial
Hasil aplikasi ini dapat kita uji menggunakan aplikasi yang sudah kita buat sebelumnya menggunakan COM 1 dan aplikasi baru ini menggunakan COM 2.
Hasilnya seperti terlihat berikut:
Untuk lebih jelasnya dapat di donlod contoh aplikasinya disini…



28 komentar:
thanks.........
Ok sama-sama...
antara com1 dan com2 harus di sambung sama kabel ga??
Kalo menggunakan virtual COM, yg cuman software aplikasi, jelas tidak ada kabel yang perlu di sambung. Virtual COM yg saya sampaikan sudah mensimulasikan null modem kabel. Tapi jika anda menggunakan COM serial yang nyata secara fisik, anda perlu menyiapkan kabel null modem yang dapat anda buat menggunakan dua buah DB9 dan koneksinya :
DB9-1. DB9-2
2 ----------3
3 ----------2
5 ----------5
Terima Kasih Gan , Nice Share :)
Sama2....semoga berguna...#berbagi yang sedikit
kalau data yang dikirim alat yang terpasang di port serial berupa data hexa gimana mengolahnya
misal alat nya RFID reader
Mas Firmansyah :
Sebenarnya ini sudah saya jawab di sini :
http://www.kinglaplace.com/2010/12/akses-serial-port-komputer-menggunakan_24.html
Jadi intinya, data yang kita terima dari hex kita ubah dulu menjadi desimal :
Text2.Text = CLng("&H" & Text1.Text)
dengan catatan :
Text2.text = hasil desimal
Text1.Text = nilai hexa dari peralatan
kalau data berurutan yang masuk, bikin aja prosedur untuk convert data tiap byte pake mid.
Contoh :
baca data :
AA BB 03 01 00 03
01 menjadi desimal
Text1.Text = Str((Asc(Mid(MsComm1.Input, 4, 1)) * CLng(256)
Selamat mencoba...
duh masih bingung eum
ini penjelasan dari contoh program nya
Program RFID1.exe ini secara garis besar bekerja sebagai berikut:
1. Program melakukan inisialisasi COM port yaitu pada baudrate 9600 bps, 8 bit data, 1 bit stop, tanpa bit parity ,
tanpa flow control. Kemudian progam melakukan deklarasi variabel yang akan digunakan antara lain:
• Counter adalah variabel bertipe byte dan digunakan sebagai penghitung jumlah byte data yang diterima.
• Nomor adalah variabel bertipe string dan digunakan untuk menampung data ID dari RFID transponder.
• Data adalah variabel bertipe byte yang digunakan untuk menampung data serial dari COM port.
2. Kemudian program memberi nilai nol pada variabel counter dan membuat variabel nomor menjadi null
(kosong).
3. Program menunggu datangnya data serial dari COM port. Bila data serial datang maka progam akan
menyimpannya pada variabel data dan melanjutkan ke langkah berikutnya.
4. Program akan menambah variabel counter dengan 1, dan memeriksa nilai vaiabel counter. Jika variabel
counter bernilai 1 maka program akan memeriksa apakah variabel data bernilai 2. Jika variabel data tidak
bernilai 2 maka program akan memberi nilai variabel counter dengan 0 dan membuat variabel nomor menjadi
null.
5. Jika variabel counter bernilai 4 hingga 11 maka program akan mengkonversi nilai variabel data menjadi string
dan menambahkannya ke variabel nomor (sintaksis nomor:=nomor+chr[data]).
6. Jika nilai variabel counter adalah 16 maka program akan memeriksa apakah variabel data bernilai 3. Jika
variabel data bernilai 3 maka program akan mengkonversi data dalam variabel nomor yang berformat
heksadesimal menjadi format desimal lalu menampilkannya pada jendela program (melalui label1). Jika data
tidak bernilai 3 maka program akan langsung melanjutkan ke langkah berikutnya.
7. Kemudian program memberi nilai nol pada variabel counter dan membuat variabel nomor menjadi null
(kosong).
8. Lalu program kembali ke langkah 3.
kartu RFID kalau di baca pakai software agan datanya 4C00F3114CE2
tp kalau pake software conto bawaaan nya jadi 15929676
SDK nya pake Delphi saya pake VB jadi bingung
kalau kita mau baca data input nya byte perbyte gimana?
jangan di baca langsung satu paket
Wah sepertinya saya harus melihat datasheet atau manual dari peralatan Mas Firman dan memeriksa SDK Delphi-nya. Kalau boleh silakan kirim ke email saya : arief@kinglaplace.com
slam kenal mas,, bagaimana terima data melalui port serial, tetapi datanya lebih dari satu, kemudian masing2 data tersebut ditampilkan pada text yang berbeda. tx..
Buat Anonymous : kalau data berasal dari port yang sama, berarti anda tinggal pake string operation seperti : Right, Left atau Mid.
ma kasih penjelasannya mas..
Sama-sama bos
Siang Mas mau tanya2 kalau saya ada alat ukur sudut inclinometer untuk membaca data X axis dan dan y Axisnya via serial port dengan visual basic 6 gimana ya mas?. Terima kasih sebelumnya.
Untuk baca data melalui serial port. semuanya prinsipnya sama untuk alat apapun. Masalahnya mungkin alat tersebut mengirimkan data yang perlu diolah terlebih dahulu seperti misalkan alat tersebut mengirimkan data dalam bentuk hexa atau string, yang perlu diolah menjadi nilai desimal. Dalam hal ini yang anda lakukan adalah membuat algoritma untuk mengolah data tersebut.
Ok, Mas terima kasih pencerahannya apa bisa diberi samplenya dalam bentuk visual basic 6 cara mengolah datanya gimana ya mas?mohon bantuanya
Untuk contohnya silakan liat di komentar saya di posting ini, sebelum komentar anda (Komentar untuk Firmansyah Maulana SN pd February 24, 2013 at 7:45 PM ). Disitu saya bikin contoh untuk mengubah data hexa menjadi desimal. Semoga membantu.
Baik mas, saya akan coba dulu...kalau masih blm bisa saya tanya mas lagi ya errornya dimana.
Sip. Kalo bingung bisa kirim file via email saya bos.
Kalo gini gmana mas??
ada data hexa terbaca seperti ini :
7E 00 0E 83 59 4B 28 00 01 0C 08 00 08 03 FF 03 FF 8F
tapi yg mau kita konvert dan kita tampilkan hanya 3 Bil hexa terakhir
03 FF 8F
itu jdi 3 data, 03 sendiri , FF sendiri ,dan 8F sendiri.
gmana kira2 algorithmanya mas??
terimakasih sebelumnya mas
Mas Irzaki Ibnu Ali :
Coba mas download di link berikut (http://www.4shared.com/zip/EQ59v2RV/iris_data.html), ada contoh seperti yang mas mau. Semoga bisa membantu.
Mas, sy lg coba bikin sensor jarak dgn sensor Ultrasonic.
Tampilan di LCD ok, dan saya coba tampilkan di PC dengan aplikasi yang Mas buat (Baca Serial) hasilnya tidak sama jika kita bandingkan dengan Virtual Terminal.
Pada Virtual Terminal hasilnya :
misalkan
107 cm
107 cm
dst...........(Vertikal / ganti baris)
tetapi pada VB yg ditampilkan :
107 cm||107 cm ||........( tidak ganti baris)
dan lebih sering tidak tampil Nilainya hanya "||".... (blank)
Tolong dibantu donk Mas, bagian mana yang perlu di edit agar tampilan di PC persis seperti pada Virtual Terminal, maksud saya data yang ditampilkan tidak sejajar kekanan tetapi ke bawah (data baru = baris baru)
Terima kasih ya Mas..
Buat Mbak Linda,
mohon info, yang dikirim ke port serial PC via mikrcontroller?data yang dikirim apa saja?kalau saya lihat, data setelah cm, itu data ascii. Apakah data yang dikirim ke PC ditambah misalkan (enter) atau spasi?
karena kalau saya lihat, itu kode ascii. Terima kasih.
Betul Mas, pakai PIC16F628A data yg dikirim menggunakan command SEROUT2 (picbasic):
SEROUT2 PORTA.4,396,[#RX, "cm", 10,13]
Linda : Untuk menangani masalah anda, anda harus menambahkan chr$(text) agar angka 10 dan 13 itu menjadi line feed (chr$(10)) dan carriage return (chr$(13)) atau sama dengan kalau kita menggunakan vbCRLF. Untuk mengatasi ini, anda dapat menggunakan filter untuk tiap karakter yang masuk melalui serial port dan menambahkan chr$ ke data yang anda terima.
kok form kirim serial nya gk ada di aplikasi yang di project download
Post a Comment
Komentarnya donk....