Top Banner

Click here to load reader

PC Interfacing

Jun 24, 2015

ReportDownload

Documents

PC Interfacing Pengenalan Komunikasi SerialPada prinsipnya, komunikasi serial ialah komunikasi dimana pengiriman data dilakukan per bit, sehingga lebih lambat dibandingkan komunikasi parallel seperti pada port printer yang mampu mengirim 8 bit sekaligus dalam sekali detak. Beberapa contoh komunikasi serial ialah mouse, scanner dan system akuisisi data yang terhubung ke port COM1/COM2.Peralatan Komunikasi Serial

Devais pada komunikasi serial port dibagi menjadi 2 (dua ) kelompok yaitu Data Communication Equipment (DCE) dan Data Terminal Equipment (DTE). Contoh dari DCE ialah modem, plotter, scanner dan lain lain sedangkan contoh dari DTE ialah terminal di komputer. Spesifikasi elektronik dari serial port merujuk pada Electronic Industry Association (EIA) : 1. Space (logika 0) ialah tegangan antara + 3 hingga +25 V. 2. Mark (logika 1) ialah tegangan antara 3 hingga 25 V. 3. Daerah antara + 3V hingga 3V tidak didefinisikan /tidak terpakai 4. Tegangan open circuit tidak boleh melebihi 25 V. 5. Arus hubungan singkat tidak boleh melebihi 500mA. Komunikasi serial membutuhkan port sebagai saluran data. Berikut tampilan port serial DB9 yang umum digunakan sebagai port serial

Gambar Port DB9 jantan

Gambar Port DB9 betina

Konektor port serial terdiri dari 2 jenis, yaitu konektor 25 pin (DB25 dan 9 pin (DB9) yang berpasangan (jantan dan betina). Bentuk dari konektor DB-25 sama persis dengan port paralel. Umumnyua COM1 berada dialamat 3F8H, sedangkan COM2 dialamat 2F8H.Tabel Jenis SInyal RS232 yang umum digunakan

Konverter Logika RS-232

Jika peralatan yang kita gunakan menggunakan logika TTL maka sinyal serial port harus kita konversikan dahulu ke pulsa TTL sebelum kita gunakan, dan sebaliknya sinyal dari peralatan kita harus dikonversikan ke logika RS-232 sebelum di-inputkan ke serial port. Konverter yang paling mudah digunakan adalah MAX-232. Di dalam IC ini terdapat Charge Pump yang akan membangkitkan +10 Volt dan -10 Volt dari sumber +5 Volt tunggal. Dalam IC DIP (Dual In-line Package) 16 pin (8 pin x 2 baris) ini terdapat 2 buah transmiter dan 2 receiver. Sering juga sebagai buffer serial digunakan chip DS275. Untuk menghubungkan antara 2 buah PC, biasanya digunakan format null mode, dimana pin TxD dihubungkan dengan RxD pasangan, pin Sinyal ground (5) dihubungkandengan SG di pasangan, dan masing masing pin DTR, DSR dan CD dihubung singkat, dan pin RTS dan CTS dihubung singkat di setiap devais.

Pemrograman Port Serial KomputerPort serial sering digunakan untuk interfacing komputer dan mikrokontroler, karena kemampuan jarak pengiriman data dibandingkan port paralel. Berikut contoh program assembly untuk komunikasi serial antara 2 PC. Untuk komunikasi ini, anda cukup menghubungkan : 1. Pin TxD ke pin RxD computer lain 2. Pin RXD dihubungkan ke pin TxD komputer lain 3. RTS dan CTS dihubung singkat 4. DSR dan DTR dihubung singkat 5. GND dihubungkan ke GND komputer lain Program Komunikasi Serial antara 2 PC (SerialPC.asm)TITLE Komunikasi data serial antara 2 PC .model small .stack .data Message db Komunikasi serial melalui Com2,4800,tanpa parity, 1 stop, 8 bit data.,0ah,0dh db key apa saja ditekan akan dikirim ke komputer lain ,0ah,0dh db Tekan ESC untuk keluar,$ .code main proc mov ax,@data mov,ds,ax mov ah,09 mov dx, offset message int 21h ;inisialisasi com2 mov ah,0 ;inisialisasi port com mov dx,1 ;com2 mov al,0c3h ;4800,tanpa parity,1 stop, 8 bit data int 14h ;mengcek key yang ditekan dan dikirim ke com2 untuk transfer data again: mov ah,01 ;cek key yang ditekan menggunakan int 16h, ah=01 int 16h ;jika ZF=1, tidak ada key yang ditekan jz next ;jika tidak ada key cek port port mov ah,0 ;ya, ada key yang ditekan, ambil ! int 16h ;kita harus menggunakan int 16h 2 kali, untuk keuda kalinya ;dengan ah=0 untuk mengambil karakter. al=ascii karakter yang ditekan cmp al,1bh ;apakah key ESC? Je exit ;ya exit

next:

Exit: Main

Mov ah,1 ;tidak, kirim karakter ke com2 Mov dx,01 Int 14h ;cek com2 untuk melihat apakah ada karater, jika ada ambil dan tampilkan mov ah,03 ;ambil status com2 mov dx,01 int 14h and ah,01 ;ah mempunyai status com, mask seluruh bit kecuali D0 cmp ah,01 ;cek D0 untuk melihat jika ada sebuah karakter jne again ;tidak ada data, untuk memonitor keyboard mov ah,02 ;ya, com2 mempunyai data, ambil! Mov dx,01 Int 14h ;ambil Mov dl,al ;dan tampilkan menggunakan int 21h Mov ah,02 ;dl mempunyai karakter yang akan ditampilkan Int 21h Jmp again ;terus memonitor keyboard mov ah, 4ch ;keluar ke DOS Int 21h endp End

Anda juga dapat memprogram komunikasi serial antara 2 PC menggunakan C dengan lebih mudah . Berikut program komunikasi data serial menggunakan fungsi BIOSCOM.Program Komunikasi serial menggunakan C (SerialC.c) //Program komunikasi serial menggunakan fungsi bioscom //Dibuat oleh Widodo Budiharto //nilai port 0 untuk COM1, 1 untuk COM2 dan seterusnya. //8 bit teratas dari return value ialah untuk status //8 bit terendeah tergantung pada perintah yang telah ditentukan //perintah dapat berisi : // 0 |Sets the communications parameters to the value in abyte. // 1 | Sends the character in abyte out over the communications line // 2 | Receives a character from the communications line. // 3 | Returns the current status of the communications port. //abyte ialah kombinasi dari bit berikut // // // // // // // // 0x02 | 7 data bits 0x00 0x03 | 8 data bits 0x20 0x00 | 0x04 | 0x00 | 0x08 | 0x18 | 1 stop bit 2 stop bits No parity Odd parity Even parity 0x60 0x80 0xA0 0xC0 0xE0 110 baud 150 baud 0x40 300 baud 600 baud 1200 baud 2400 baud 4800 baud 9600 baud

//Sebagai contoh, 0xEB //(0xE0|0x08|0x00|0x03) untuk abyte akan menset //port komunikasi ke 9600 baud, odd parity,1 stop bit, dan 8 bit data //bioscom menggunakan BIOS 0x14 interrupt. //Menyertakan header file yang dibutuhkan #include #include //definisi port #define COM1 0 #define DATA_READY 0x100 #define TRUE 1 #define FALSE 0 //definisi settings #define SETTINGS ( 0x80 | 0x02 | 0x00 | 0x00) int main(void) { int in, out, status, DONE = FALSE; bioscom(0, SETTINGS, COM1);//3 parameter dari bioscom cprintf("Komunikasi serial menggunakan BIOSCOM, tekan [ESC] untuk keluar \n"); while (!DONE) { status = bioscom(3, 0, COM1); if (status & DATA_READY) if ((out = bioscom(2, 0, COM1) & 0x7F) != 0)

putch(out); if (kbhit()) { if ((in = getch()) == '\x1B') DONE = TRUE; bioscom(1, in, COM1); } } return 0; } Jika Anda ingin membuat aplikasi menggunakan bahasa Visual Basic .NET, menggunakan kelas Rs232, berikut contohnya :

Program Inisialisasi dan membuka port komunikasiPrivate Sub btnOpenCom_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOpenCom.Click moRS232 = New Rs232() buat ojek serial Try '// setup parameter koneksi With moRS232 .Port = miComPort .BaudRate = CInt(txtBaudrate.Text) .DataBit = 8 .StopBit = Rs232.DataStopBit.StopBit_1 .Parity = Rs232.DataParity.Parity_None .Timeout = CInt(txtTimeout.Text) .WorkingMode = CType(IIf(chkOl.Checked, Rs232.Mode.Overlapped, Rs232.Mode.NonOverlapped), Rs232.Mode) btnAsyncTx.Enabled = (.WorkingMode = Rs232.Mode.Overlapped) btnAsync.Enabled = (.WorkingMode = Rs232.Mode.Overlapped) chkOl.Enabled = False End With '// inisialisasi port serial moRS232.Open() '// Set state of RTS / DTS moRS232.Dtr = (chkDTR.CheckState = CheckState.Checked) moRS232.Rts = (chkRTS.CheckState = CheckState.Checked) Catch Ex As Exception MessageBox.Show(Ex.Message, "Error koneksi ", MessageBoxButtons.OK) Finally btnCloseCom.Enabled = moRS232.IsOpen btnOpenCom.Enabled = Not moRS232.IsOpen btnTx.Enabled = moRS232.IsOpen btnRx.Enabled = moRS232.IsOpen btnCheck.Enabled = moRS232.IsOpen End Try End Sub Untuk menulis data, gunakan fungsi-fungsi berikut ini : Private Sub Kirim_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnTx.Click gunakan fungsi write() moRS232.Write(txtTx.Text) 'moRS232.Write(Chr() & Chr(3) & Chr(0) & Chr(0) & Chr(0) & Chr(16) & Chr(68) & Chr(83)) ' Bersihkan textbox txtRx.Text = String.Empty txtRx.Refresh() lbHex.Items.Clear() If chkAutorx.Checked Then Button1_Click(Nothing, Nothing) End Sub

Untuk membaca data gunakan fungsi-fungsi Read dan InputStreamString seperti berikut :Try gunakan fungsi Read() moRS232.Read(CInt(txtBytes2Read.Text)) txtRx.Text = moRS232.InputStreamString txtRx.ForeColor = Color.Black txtRx.BackColor = Color.White

'// Fills listbox with hex values Dim aBytes As Byte() = moRS232.InputStream Dim iPnt As Int32 For iPnt = 0 To aBytes.Length - 1 lbHex.Items.Add(iPnt.ToString & ControlChars.Tab & String.Format("0x{0}", aBytes(iPnt).ToString("X"))) Next Catch Ex As Exception txtRx.BackColor = Color.Red txtRx.ForeColor = Color.White txtRx.Text = "Terjadi error " & Ex.Message & " data fetched: " & moRS232.InputStreamString End Try

Gambar Program Komunikasi Serial VB .NET

Kita juga dapat menggunakan komponen yang sudah dibuat oleh suatu perusahaan, misalnya PortController.Net yang terdapat pada CD Program, sehingga pemrograman menjadi lebih mudah seperti contoh mebuka dan menulis ke suatu port serial berikut :Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load myPortController.Open("COM1") End Sub Private Sub SendButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SendButton.Click myPortController.Write(SendText.Text) SendText.Clear() End Sub Private Sub myPortController_OnDataReceived(ByVal sender As Object, ByVal e As System.EventArgs) Handles myPortController.OnDataReceived ReceiveText.AppendText(myPortController.Read()) End Sub

Jika hanya menggunakan bahasa Visual Basic 6, tempelkan kontrol MSComm1, dan masukkan kode untuk menset MSComm1 dimana memperoleh input dari suatu combobox berikut :MsComm1.commPort=cmbPort.ListIndex +1 MsComm1.Settings=cmbbitspersecond.text MSComm1.Handshaking=cmbFlowCon

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.