Minggu, 03 Juni 2012

Baca Data Dan Kirim Data Pada Port Serial

Project 1 Baca Data Dan Kirim Data
Dalam berkomunikasi dengan “dunia luar” atau perangkat lain di luar komputer, Visual Basic 6.0 menyediakan komponen MS Comm Control 6.0, sebagai media komunikasi. Untuk menambahkan komponen ini pada Visual Basic, pilih Project -> Components. Setelah itu akan muncul tampilan sebagai berikut :

Gambar . Penambahan komponen pada Visual Basic 6.0
Fungsi dari komponen ini adalah sebagai berikut :
a. Mengadakan hubungan dengan serial port PC
b. Berhubungan dengan alat komunikasi lain ( contoh: modem )
c. Melakukan pertukaran data
d. Memonitor dan merespon event dan error yang terjadi pada hubungan serial
Untuk mengadakan suatu komunikasi serial antara 2 peralatan, kita harus melakukan beberapa langkah.
1. Membuka serial port
2. Mengatur serial device
3. Setting Receive and Transmit Buffer Properties
4. Managing Receive and Transmit Buffer
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 digunakan
MSComm1.Settings = "9600,N,8,1" 'contoh setting serial port
MSComm1.InputLen = 0
MSComm1.RThreshold = 1
MSComm1.PortOpen = True
Program untuk menerima data yang dikirim oleh serial dan Untuk menonaktifkan port serial yang dipilih setelah selesai menggunakan aplikasi, tambahkan code berikut pada Form_Unload
Private Sub Command1_Click()
MSComm1.Output = Text1.Text
End Sub
Program untuk menggakhiri koneksi serial
Private Sub Command2_Click()
End
End Sub
Porgram untuk membuka port serial apakah data sudah siap untuk data dikirim.
Serial port MSComm1.PortOpen = True ‘untuk mengaktifkan port serial yang dipilih
Disini komputer yang saya pakai memiliki 2 COM virtual dari com0com (lihat posting saya sebelumnya tentang virtual serial port) yaitu COM 1 dan COM 2. Untuk aplikasi yang saya buat menggunakan COM 1. Setelah port serial siap digunakan, berarti data siap dikirimkan melalui port serial. Untuk mengirimkan data ini,saya buat tombol kirim, yang akan mengirimkan data yang ada pada textbox.
Private Sub Command3_Click()
If MSComm1.PortOpen = False Then
MSComm1.PortOpen = True
End If
End Sub
Untuk mengakhiri data yang masuk / data belum siap diterima dan kirim dan mengnonaktifkan port serial
Private Sub Command4_Click()
If MSComm1.PortOpen = True Then
MSComm1.PortOpen = False
End If
End Sub
Program untuk menampilkan / baca data yang dikirim
Private Sub MSComm1_OnComm()
Text2.Text = MSComm1.Input
End Sub

Hasil Tampilannya

project 1




Project 2 Penggontrolan Lampu Treffic Light dengan port serial




Program Visual basic 6.0
Private Sub Command1_Click()
End
End Sub
Private Sub Command2_Click()
If MSComm1.PortOpen = False Then
MSComm1.PortOpen = True
End If
End Sub
Private Sub Command3_Click()
If MSComm1.PortOpen = True Then
MSComm1.PortOpen = False
End If
End Sub
Private Sub MSComm1_OnComm()
Label1.Caption = MSComm1.Input
If Label1.Caption = "B" Then
Label1.ForeColor = vbRed
Shape1.FillColor = vbRed
Shape2.FillColor = vbWhite
Shape3.FillColor = vbWhite
Shape4.FillColor = vbYellow

ElseIf Label1.Caption = "C" Then
Label1.ForeColor = vbYellow
Shape1.FillColor = vbWhite
Shape2.FillColor = vbYellow
Shape3.FillColor = vbWhite
Shape4.FillColor = vbGreen

ElseIf Label1.Caption = "A" Then
Label1.ForeColor = vbGreen
Shape1.FillColor = vbWhite
Shape2.FillColor = vbWhite
Shape3.FillColor = vbGreen
Shape4.FillColor = vbRed

End If
End Sub

Tamilan Hasil adalah sebagai berikut

Apa bila Data yang dikirim adalah 
Data "A" maka akan menampilkan lampu warna Hijau...
Data "B" maka akan menampilkan lampu warna Merah...
Data "C" maka akan menampilkan lampu warna Kuning...

PEMROGRAMAN TCP/IP

Perintah-perintah umum jaringan

Dalam komputasi, jaringan pemrograman, pada dasarnya identik dengan pemrograman socket atau pemrograman client-server, melibatkan programmer menulis program yang berkomunikasi dengan program lain di sebuah jaringan komputer. Program atau proses yang memulai komunikasi disebut proses clien, dan program yang menunggu komunikasi untuk dimulai adalah proses server. clien dan server berproses bersama-sama untuk membentuk suatu sistem terdistribusi. Komunikasi antara clien dan proses server dapat berupa connection-oriented (seperti sirkuit TCP didirikan virtual atau sesi), atau connectionless (berdasarkan datagrams UDP).

Sebuah program yang dapat bertindak baik sebagai clien dan server didasarkan pada komunikasi peer-to-peer.
Ini adalah contoh dari fungsi atau metode biasanya disediakan oleh library API:

    * Socket () membuat soket baru dari jenis socket tertentu, yang diidentifikasi oleh nomor integer, dan mengalokasikan sumber daya sistem untuk itu.
    * Bind () biasanya digunakan pada sisi server, dan rekan soket dengan struktur alamat soket, yaitu nomor port tertentu lokal dan alamat IP.
    * listen () digunakan pada sisi server, dan menyebabkan socket TCP terikat untuk memasukkan mendengarkan negara.
    * connect () digunakan pada sisi client, dan memberikan nomor pelabuhan bebas lokal untuk socket. Dalam kasus soket TCP, hal itu menyebabkan upaya untuk membangun sebuah koneksi TCP yang baru.
    * accept () digunakan pada sisi server. Ia menerima upaya masuk yang diterima untuk membuat koneksi TCP yang baru dari klien remote, dan menciptakan socket baru yang terkait dengan pasangan alamat soket sambungan ini.
    * Send () dan recv (), atau write () dan read (), atau recvfrom () dan sendto (), digunakan untuk mengirim dan menerima data ke / dari soket remote.
    * Close () menyebabkan sistem untuk melepaskan sumber daya yang dialokasikan untuk socket. Dalam kasus TCP, koneksi dihentikan

Alamat socket Lokal: Lokal alamat IP dan nomor port
*alamat Remote socket : Hanya untuk soket TCP yang ditetapkan. Sebagaimana dibahas di bagian Client-Server di bawah ini, hal ini penting karena server TCP dapat melayani beberapa klien secara bersamaan. Server membuat satu socket untuk setiap klien, dan soket ini berbagi alamat soket.
*Protocol: Sebuah protokol transportasi (misalnya, TCP, UDP), IP, atau lainnya. port TCP UDP port 53 dan 53 secara konsekuen berbeda, soket yang berbeda.

Selanjutnya mengenai Scoket bisa kita lihat di wiki
http://en.wikipedia.org/wiki/Internet_socket
http://en.wikipedia.org/wiki/Socket_programming

nah pada kali ini kita akan membuat sebuah program yaitu basic TCP/IP Socket di C# ...


bisa di jelaskan ap itu TCP/IP ??

TCP/IP adalah salah satu jenis protokol* yg memungkinkan kumpulan komputer untuk berkomunikasi dan bertukar data didalam suatu  network (jaringan).
Merupakan himpunan aturan yg memungkinkan komputer untuk  berhubungan  antara satu dengan yg lain, biasanya berupa bentuk / waktu / barisan /  pemeriksaan error saat transmisi data.

PROC of Consep program :
Dalam tutrial kali ini kita akan menganalisis dua aplikasi. Dengan kata lain clien dan server sebuah tutorial yang sangat dasar :)
Cara kerjanya? server menunggu sampai clien tersambung ke IP Address dan Port. Ketika  ini terjadi, server dan client siap untuk bertukar informasi melalui koneksi streaming(established connection streaming)

Catatan: Untuk membuat soket clien ini lebih mudah dan server dapat bertukar hanya satu pesan dan juga semua koneksi kita akan mengunakan alamat 127.0.0.1 (localhost).

Sebelum kita mulai kita akan mengunakan library C# Yaitu
 
[code]System.Net.Sockets[/code]
ok mari kita lihat code untuk servernya :
[code]using System;
using System.Text;
using System.Net.Sockets;
public class Simple_server
{
    public static void Main()
    {
        uint id = 0;
        // Pesan hanya terlihat pada console server
        // di sini kita memberitahukan abhwa program telah berjalan dan memberitahukan kapan program berjalan
        // dengan tambahan waktu + DateTime.Now.TimeOfDay.ToString());
        Console.WriteLine("Aplikasi telah running pada time \t" + DateTime.Now.TimeOfDay.ToString());     
        TcpListener tcpListener = new TcpListener(5);//kita menentukan berapa banyak clien yang bisa terkoneksi (5)->5 clien
        tcpListener.Start();
        Socket clientSocket = tcpListener.AcceptSocket();
        if (clientSocket.Connected)//jika client sudah terconnection
        {
            id++;
            //pemberitahuan jika clien sudah terkoneksi di ikuti waktu kapan dia terkoneksi
            Console.WriteLine("Client Telah terkoneksi \t" + DateTime.Now.TimeOfDay.ToString());
            NetworkStream myStream = new NetworkStream(clientSocket);
            System.IO.StreamWriter streamWriter = new System.IO.StreamWriter(myStream);
            System.IO.StreamReader streamReader = new System.IO.StreamReader(myStream);
            string messageString = "Client " + id.ToString() + " Telah terkoneki";
            streamWriter.WriteLine(messageString);
            Console.WriteLine(messageString);
            streamWriter.Flush();
            messageString = streamReader.ReadLine();
            Console.WriteLine(messageString);
            streamReader.Close();
            myStream.Close();
            streamWriter.Close();
        }
        clientSocket.Close();
        Console.WriteLine("");   
        Console.ReadLine();
    }
}

[/code]
Penjelasan :
Seperti yang kita lihat basic server sangat simple. Satu-satunya hal yang harus kita lakukan adalah TcpListener seperti pada line:
[code] tcpListener.Start();[/code]
menunggu Sinyal Klien. Kemudian, ketika clientSocket Socket terkonek
[code]Socket clientSocket = tcpListener.AcceptSocket();[/code],
server dapat mengirim atau menerima pesan apapun melalui myStream NetworkStream.
[code]NetworkStream myStream = new NetworkStream(clientSocket); [/code]
Pada akhir kode server tidak lupa untuk menutup clientSocket Socket.
[code]streamReader.Close();   
             myStream.Close();   
             streamWriter.Close();   
         }   
clientSocket.Close(); [/code]
Dengan kata lain kita harus memutuskan klien yang terhubung sebelum mematikan server.

ok sekarang kita lihat code untuk clientnya ...

[code]using System;
using System.Text;
using System.Net.Sockets;
public class Simple_client
{
    static public void Main(string[] Args)
    {
                // Pesan hanya terlihat pada console clien
        // di sini kita memberitahukan abhwa program telah berjalan dan memberitahukan kapan program berjalan
        // dengan tambahan waktu + DateTime.Now.TimeOfDay.ToString());
        Console.WriteLine("Aplikasi Client telah running pada time \t" + DateTime.Now.TimeOfDay.ToString());
        TcpClient serverSocket;
        try
        {
            serverSocket = new TcpClient("localhost", 5);
            //pemberitahuan jika clien berhasil terkoneksi ke server di ikuti waktu kapan dia terkoneksi
            Console.WriteLine("Berhasil terkoneksi ke server \t" + DateTime.Now.TimeOfDay.ToString());
        }
        catch
        {   //Pemberitahuan saat client gagal terkoneksi ke server
            Console.WriteLine("Gagagl terkoneksi ke server pada {0}:999", "localhost");
            Console.WriteLine("");
            Console.ReadLine();
            return;
        }
        NetworkStream myStream = serverSocket.GetStream();
        System.IO.StreamReader streamReader = new System.IO.StreamReader(myStream);
        System.IO.StreamWriter streamWriter = new System.IO.StreamWriter(myStream);
        try
        {
            // Baca pesan dari server dan tampilkan di console
            string messageString;
            messageString = streamReader.ReadLine();
            Console.WriteLine(messageString);
            streamWriter.WriteLine("Halo server gue berhasil terkoneksi ni !");
            Console.WriteLine("Halo server gue berhasil terkoneksi ni !");
            streamWriter.Flush();
        }
        catch
        {
            Console.WriteLine("Gagal Menerima dari Server");
        }
        myStream.Close();
        Console.WriteLine("");
        Console.ReadLine();
    }
}
[/code]

Dalam kode di atas kita lihat prosedur kebalikan seperti yang kita lihat pada TcpClient ServerSocket
[code]TcpClient serverSocket; [/code]
dan kemudian kita mencoba untuk terhubung ke aplikasi server. Perhatikan bahwa semua sambungan sedang berlangsung di localhost. Jadi jika koneksi berhasil maka klien dapat mengirim atau menerima pesan apapun melalui  NetworkStream myStream.
[code]NetworkStream myStream = serverSocket.GetStream(); [/code]
 
ini sreen shotnya :

  
 
( http://dcc-dp.org/berita93-tutorial basic tcp ip socket di csharp.html )

TCP/IP Tutorial 

TCP/IP atau Transmission Control Protocol/Internet Protocol

            TCP / IP (Transmission Control Protocol / Internet Protocol) adalah bahasa komunikasi dasar atau protokol Internet. Hal ini juga dapat digunakan sebagai protokol komunikasi di jaringan pribadi (baik intranet atau extranet ). Ketika Anda mengatur dengan akses langsung ke Internet, komputer Anda dilengkapi dengan salinan program TCP / IP seperti setiap komputer lain yang mungkin Anda mengirim pesan atau mendapatkan informasi dari juga memiliki salinan dari TCP / IP.

           TCP / IP adalah sebuah program dua-lapisan. Semakin tinggi lapisan, Transmission Control Protocol, mengelola assembling dari pesan atau file menjadi lebih kecil paket yang ditransmisikan melalui internet dan diterima oleh lapisan TCP yang reassembles paket ke pesan asli. Lapisan yang lebih rendah, Internet Protocol, menangani alamat bagian dari tiap paket sehingga sampai ke tujuan yang tepat. Setiap Gateway komputer pada jaringan memeriksa alamat ini untuk melihat mana untuk meneruskan pesan. Meskipun beberapa paket dari pesan yang sama yang diarahkan berbeda dari yang lain, mereka akan berkumpul kembali di tempat tujuan. TCP / IP menggunakan cliet / server model komunikasi di mana pengguna komputer (klien) permintaan dan memberikan layanan (seperti mengirim halaman web) oleh komputer lain (server) di jaringan. TCP / IP komunikasi terutama point-to-point, yang berarti setiap komunikasi dari satu titik (atau host komputer) dalam jaringan ke jalur atau host komputer. TCP / IP dan tingkat yang lebih tinggi aplikasi yang menggunakannya secara kolektif dikatakan "tanpa negara" karena masing-masing permintaan klien dianggap sebagai permintaan baru yang tidak terkait dengan salah satu sebelumnya (seperti percakapan telepon biasa yang memerlukan sambungan yang didedikasikan untuk durasi panggilan). Menjadi stateless membebaskan jalur jaringan sehingga setiap orang dapat menggunakannya terus menerus. (Perhatikan bahwa lapisan TCP sendiri tidak bernegara sejauh sebagai salah satu pesan yang bersangkutan. Koneksinya tetap di tempat sampai semua paket dalam pesan telah diterima.)

         Banyak pengguna internet yang akrab dengan protokol lapisan yang lebih tinggi aplikasi yang menggunakan TCP / IP untuk mendapatkan ke Internet. Ini termasuk World Wide Web Hypertext Transfer Protocol ( HTTP ), File Transfer Protocol (FTP), Telnet ( Telnet ) yang memungkinkan Anda logon ke komputer remote, dan Simple Mail Transfer Protocol ( SMTP ). Ini dan lain protokol sering dikemas bersama-sama dengan TCP / IP sebagai "suite."

           Pengguna komputer pribadi dengan sebuah telepon analog modem koneksi ke Internet biasanya mendapatkan ke Internet melalui Internet Protocol Garis Serial (SLIP) atau Protokol Point-to-Point ( PPP ). Protokol ini encapsulate paket IP sehingga mereka dapat dikirim melalui sambungan telepon dial-up ke modem penyedia akses itu.

              Protokol yang terkait dengan TCP / IP termasuk User Datagram Protocol ( UDP ), yang digunakan bukan TCP untuk tujuan khusus. Protokol lain yang digunakan oleh host komputer jaringan untuk bertukar router informasi. Ini termasuk Internet Control Message Protocol ( ICMP ), yang Interior Gateway Protokol ( IGP ), yang Exterior Gateway Protocol (EGP), dan Border Gateway Protocol ( BGP ).

( http://dq-online.com/index.php?option=com_content&view=article&id=54:tcp-ip-tutorial catid=50:network&Itemid=64 )

Pemrograman Serial Port pada VB

           Serial Port bekerja pada program Visual Basic. Port RS232 terdapat pada komputer desktop.  Tapi jika anda memiliki laptop model baru, kemungkinan besar port ini sudah tidak ada. Meskipun demikian, anda dapat menggunakan USB-RS232 converter yang harganya cukup murah. 
            Program komputer Visual Basic ini bertujuan untuk mengirim teks dari komputer 1 ke komputer 2 dan kebalikannya.  Yang harus anda lakukan adalah membuat kabel serial dengan konfigurasi pin sebagai berikut:
Komputer 1  Komputer 2 
Pin 2 (Rx) Pin 3 (Tx) 
Pin 3 (Tx) Pin 2 (Rx)
Pin 7 (RTS)  Pin 8 (CTS)
Pin 8 (CTS) Pin 7 (RTS)
Pin 5 (Gnd) Pin 5 (Gnd)
 
Program Visual Basic -nya sebagai berikut, jalankan pada kedua komputer .
Private Sub Form_Load()
    MSComm1.RThreshold = 1
    MSComm1.RTSEnable = True
    MSComm1.Settings = "9600,n,8,1"
    MSComm1.PortOpen = True
  
    Text1.Text = Clear
    Text2.Text = Clear
  
End Sub

Private Sub Command1_Click()
    MSComm1.Output = Text1.Text
End Sub

Private Sub MSComm1_OnComm()
    c = MSComm1.Input
    Text2.Text = Text2.Text & c
End Sub

Obyek yang diperlukan adalah Text1, Text2, Command1, MSComm1.
MSComm dapat ditambahkan dengan cara : tekan Ctrl-T lalu pilih Microsoft Comm Control.
Baud rate yang digunakan sebesar 9600 bps, tapi anda dapat mencoba menggunakan yang lain, asal kedua komputer diset yang sama.  
( http://madajimmy.com/artikel/tutorial/17-pemrograman-serial-port-pada-vb.html )

Program Komunikasi Serial RS232 Mikrokontroler CodeVision AVR 

              USART | RS232 | Pada transmisi data serial, dikenal 2 jenis komunikasi sata, yaitu sinkron dan asinkron. Masing-masing jenis komunikasi itu dibedakan oleh sistem clock pendorong datanya, maaf ya dalam artikel ini tidak dibahas secara mendalam, heee. Aplikasi sistem instrumentasi tertentu membutuhkan komunikasi ini untuk pengiriman data, dalam hal ini pengiriman data ke komputer. Untuk melakukan pengiriman data ke komputer (yg dibunakan dalam tulisan ini, heeee), dibutuhkan jalur DB9 dengan segala pirantinya.

              DB9 mempunyai level tegangan RS232, sedangkan mikrokontroler punya level tegangan TTL, jadi perlu driver untuk mengkonversi level tegangan tersebut. Dalam hal ini, digunakan IC MAX232 dengan rangkaian berikut :
 
Mikrokontroler yang digunakan adalah ATMega 16, dengan fasilitas USART. Langsung ya, ini dia langkahnya : (maaf lo ya, hanya sekedar sharing, heeee)

1.    Setting komunikasi USART di Code Wizard, centang reciever dan transmitter.

2.    Didefinisikan preprosesor


                    #include
                    #include
                    #include


3.    Dibuat sintak pengiriman data di loop 


                    while (1)
                              {
                              printf ("\n belajar serial");
                              delay_ms(200);
                              };


4.    Compile dan download program, langsung cek di Run the Terminal :

 
( http://wongsablenglab.blogspot.com/2012/03/program-komunikasi-serial-rs232.html )

Komunikasi Serial Dalam Visual Basic 6.0 

Pengaksesan Port Serial Pada Visual Basic
      Untuk pengaksesan port serial kita dapat mengaksesnya secara langsung menggunakan kontrol MSComm yang telah disediakan Visual basic. Kontrol MSComm menyediakan fisilitas komunikasi antara program aplikasi yang kita buat dengan port serial untuk mengirim atau menerima data melalui port serial. Setiap MSComm hanya menangani satu port serial sehingga jika kita ingin menggunakan lebih dari satu port serial harus digunakan MSComm lain.
      Properti MSComm
                 Jumlah properti pada MSComm sangat banyak, dan hanya beberapa properti yang perlu kita
    ketahui. Properti yang sering digunakan adalah :    
        
  •           CommPort
      Digunakan untuk menentukan nomor port serial yang akan dipakai.
  •           Setting
      Digunakan untuk menset nilai baud rate, pariti, jumlah bit data, dan jumlah bit stop.
  •            PortOpen
      Digunakan untuk membuka ataupun menutup port serial yang dihubungkan dengan MSComm ini.
  •            Input
      Digunakan untuk mengambil data string yang ada pada buffer penerima.
  •       Output
      Digunakan untuk menulis data string pada buffer kirim Input.
 
Untuk menambahkan komponen ini pada Visual Basic, pilih Project -> Components. Setelah itu akan muncul tampilan sebagai berikut :


Fungsi dari komponen ini adalah sebagai berikut :
a. Mengadakan hubungan dengan serial port PC
b. Berhubungan dengan alat komunikasi lain ( contoh: modem )
c. Melakukan pertukaran data
d. Memonitor dan merespon event dan error yang terjadi pada hubungan serial
Untuk mengadakan suatu komunikasi serial antara 2 peralatan, kita harus melakukan beberapa langkah.
1. Membuka serial port
2. Mengatur serial device
3. Setting Receive and Transmit Buffer Properties
4. Managing Receive and Transmit Buffer