Aplikasi Serialport Berbasis Console Application Visual C# 2010 Express

Pertama-tama buatlah sebuah project baru.

Lalu pada bagian Program.cs masukan kode berikut.

using System;
using System.Collections.Generic;
using System.Text;
using System.IO.Ports;

namespace SerialTest
{
    class Program
    {
        static void Main(string[] args)
        {
            string[] names = SerialPort.GetPortNames();
            Console.WriteLine("Serial ports:");
            foreach (string name in names)
                Console.WriteLine(name);
            Console.Write("Choose one:");
            SerialPort p = new SerialPort(Console.ReadLine());
            p.DataReceived += new SerialDataReceivedEventHandler(p_DataReceived);
            p.Open();
            string line;
            do
            {
                line = Console.ReadLine();
                p.Write(line);
            } while (line != "quit");
            p.Close();
        }

        static void p_DataReceived(object sender, SerialDataReceivedEventArgs e)
        {
            Console.WriteLine(
                (sender as SerialPort).ReadExisting());
        }
    }
}

Setelah itu, jangan lupa save program yang sudah dibuat. Run program (F5). Program bisa dicoba berkomunikasi dengan Hyperterminal atau aplikasi serial port lainnya dengan bantuan VSPE (Virtual Serial Port Emulator) yang bisa di download di http://www.eterlogic.com/downloads/SetupVSPE.zip

Pada program yang sudah dibuat tadi, setelah dijalankan, untuk memilih COM, langsung saja diketik nama COM nya. Misal COM5. Untuk mengirim data, tekan enter. Untuk keluar dari program, ketik “quit” lalu tekan enter.

VSPE (Virtual Serial Port Emulator).

Tampilan program.

___________________________

Daftar Pustaka

http://balau82.wordpress.com/2009/04/18/simplest-serial-port-terminal-in-csharp/

PICPgm – Software Programmer PIC Untuk Windows atau Linux

Sumber: http://www.members.aon.at/electronics/pic/picpgm/index.html


Berikut link untuk mendownload software tersebut. http://www.members.aon.at/electronics/pic/picpgm/download.html. Support untuk tipe programmer JDM, Tait, Microchip AN589 programmer, El Cheapo, … Cek link berikut. http://www.members.aon.at/electronics/pic/picpgm/hardware.html. Beberapa tipe programmer yang cukup simpel adalah JDM Programmer dan Olimex PIC-PG2 Programmer karena menggunakan portserial pada PC.

Untuk JDM, berdasarkan penglaman sendiri, tidak berhasil jika portserial yang digunakan adalah usbtoserial. Hal ini biasanya karena ada beberapa pin yang tidak berfungsi secara penuh pada konfigurasi konektor DB9-nya. Jadi sebaiknya menggunakan portserial yang terdapat pada PC.

JDM Programmer schematic.

PICPgm support untuk tipe PIC di bawah ini.

PIC10F:
PIC10F200, PIC10F202, PIC10F204, PIC10F206, PIC10F220, PIC10F222

PIC12F:
PIC12F508, PIC12F509, PIC12F510, PIC12F519, PIC12F609, PIC12F615, PIC12F617, PIC12F629, PIC12F635, PIC12F675, PIC12F683, PIC12HV609, PIC12HV615

PIC16F:
PIC16F505, PIC16F506, PIC16F526, PIC16F610, PIC16F616, PIC16F627, PIC16F627A, PIC16F628, PIC16F628A, PIC16F630, PIC16F631, PIC16F636, PIC16F639, PIC16F648A, PIC16F676, PIC16F677, PIC16F684, PIC16F685, PIC16F687, PIC16F688, PIC16F689, PIC16F690, PIC16F716, PIC16F72, PIC16F73, PIC16F737, PIC16F74, PIC16F747, PIC16F76, PIC16F767, PIC16F77, PIC16F777, PIC16F818, PIC16F819, PIC16F84A, PIC16F87, PIC16F870, PIC16F871, PIC16F872, PIC16F873, PIC16F873A, PIC16F874, PIC16F874A, PIC16F876, PIC16F876A, PIC16F877, PIC16F877A, PIC16F88, PIC16F882, PIC16F883, PIC16F884, PIC16F886, PIC16F887, PIC16F913, PIC16F914, PIC16F916, PIC16F917, PIC16F946, PIC16HV610, PIC16HV616

PIC18F:
PIC18F1220, PIC18F1230, PIC18F1320, PIC18F1330, PIC18F1330-ICD, PIC18F13K50, PIC18F14K50, PIC18F2220, PIC18F2221, PIC18F2320, PIC18F2321, PIC18F2331, PIC18F23K20, PIC18F2410, PIC18F242, PIC18F2420, PIC18F2423, PIC18F2431, PIC18F2450, PIC18F2455, PIC18F2458, PIC18F248, PIC18F2480, PIC18F24J10, PIC18F24J11, PIC18F24J50, PIC18F24K20, PIC18F2510, PIC18F2515, PIC18F252, PIC18F2520, PIC18F2523, PIC18F2525, PIC18F2550, PIC18F2553, PIC18F258, PIC18F2580, PIC18F2585, PIC18F25J10, PIC18F25J11, PIC18F25J50, PIC18F25K20, PIC18F2610, PIC18F2620, PIC18F2680, PIC18F2682, PIC18F2685, PIC18F26J11, PIC18F26J13, PIC18F26J50, PIC18F26J53, PIC18F26K20, PIC18F27J13, PIC18F27J53, PIC18F4220, PIC18F4221, PIC18F4320, PIC18F4321, PIC18F4331, PIC18F43K20, PIC18F4410, PIC18F442, PIC18F4420, PIC18F4423, PIC18F4431, PIC18F4450, PIC18F4455, PIC18F4458, PIC18F448, PIC18F4480, PIC18F44J10, PIC18F44J11, PIC18F44J50, PIC18F44K20, PIC18F4510, PIC18F4515, PIC18F452, PIC18F4520, PIC18F4523, PIC18F4525, PIC18F4550, PIC18F4553, PIC18F458, PIC18F4580, PIC18F4585, PIC18F45J10, PIC18F45J11, PIC18F45J50, PIC18F45K20, PIC18F4610, PIC18F4620, PIC18F4680, PIC18F4682, PIC18F4685, PIC18F46J11, PIC18F46J13, PIC18F46J50, PIC18F46J53, PIC18F46K20, PIC18F47J13, PIC18F47J53, PIC18F6520, PIC18F6527, PIC18F6585, PIC18F6620, PIC18F6622, PIC18F6627, PIC18F6628, PIC18F6680, PIC18F6720, PIC18F6722, PIC18F6723, PIC18F8520, PIC18F8527, PIC18F8585, PIC18F8620, PIC18F8622, PIC18F8627, PIC18F8628, PIC18F8680, PIC18F8720, PIC18F8722, PIC18F8723

PIC24H:
PIC24HJ128GP202, PIC24HJ128GP204, PIC24HJ128GP206, PIC24HJ128GP210, PIC24HJ128GP306, PIC24HJ128GP310, PIC24HJ128GP502, PIC24HJ128GP504, PIC24HJ128GP506, PIC24HJ128GP510, PIC24HJ12GP201, PIC24HJ12GP202, PIC24HJ16GP304, PIC24HJ256GP206, PIC24HJ256GP210, PIC24HJ256GP610, PIC24HJ32GP202, PIC24HJ32GP204, PIC24HJ32GP302, PIC24HJ32GP304, PIC24HJ64GP202, PIC24HJ64GP204, PIC24HJ64GP206, PIC24HJ64GP210, PIC24HJ64GP502, PIC24HJ64GP504, PIC24HJ64GP506, PIC24HJ64GP510, PIC24HJ128GP206A, PIC24HJ128GP210A, PIC24HJ128GP306A, PIC24HJ128GP310A, PIC24HJ128GP506A, PIC24HJ128GP510A, PIC24HJ256GP206A, PIC24HJ256GP210A, PIC24HJ256GP610A, PIC24HJ64GP206A, PIC24HJ64GP210A, PIC24HJ64GP506A, PIC24HJ64GP510A

dsPIC30F:
dsPIC30F2010, dsPIC30F2011, dsPIC30F2012, dsPIC30F3010, dsPIC30F3011, dsPIC30F3012, dsPIC30F3013, dsPIC30F3014, dsPIC30F4011, dsPIC30F4012, dsPIC30F4013, dsPIC30F5011, dsPIC30F5013, dsPIC30F5015, dsPIC30F5016, dsPIC30F6010, dsPIC30F6010A, dsPIC30F6011, dsPIC30F6011A, dsPIC30F6012, dsPIC30F6012A, dsPIC30F6013, dsPIC30F6013A, dsPIC30F6014, dsPIC30F6014A, dsPIC30F6015

dsPIC33F:
dsPIC33FJ06GS101, dsPIC33FJ06GS102, dsPIC33FJ06GS202, dsPIC33FJ128GP202, dsPIC33FJ128GP204, dsPIC33FJ128GP206, dsPIC33FJ128GP206A, dsPIC33FJ128GP306, dsPIC33FJ128GP306A, dsPIC33FJ128GP310, dsPIC33FJ128GP310A, dsPIC33FJ128GP706, dsPIC33FJ128GP706A, dsPIC33FJ128GP708, dsPIC33FJ128GP708A, dsPIC33FJ128GP710, dsPIC33FJ128GP710A, dsPIC33FJ128GP802, dsPIC33FJ128GP804, dsPIC33FJ128MC202, dsPIC33FJ128MC204, dsPIC33FJ128MC506, dsPIC33FJ128MC506A, dsPIC33FJ128MC510, dsPIC33FJ128MC510A, dsPIC33FJ128MC706, dsPIC33FJ128MC706A, dsPIC33FJ128MC708, dsPIC33FJ128MC708A, dsPIC33FJ128MC710, dsPIC33FJ128MC710A, dsPIC33FJ128MC802, dsPIC33FJ128MC804, dsPIC33FJ12GP201, dsPIC33FJ12GP202, dsPIC33FJ12MC201, dsPIC33FJ12MC202, dsPIC33FJ16GP304, dsPIC33FJ16GS402, dsPIC33FJ16GS404, dsPIC33FJ16GS502, dsPIC33FJ16GS504, dsPIC33FJ16MC304, dsPIC33FJ256GP506, dsPIC33FJ256GP506A, dsPIC33FJ256GP510, dsPIC33FJ256GP510A, dsPIC33FJ256GP710, dsPIC33FJ256GP710A, dsPIC33FJ256MC510, dsPIC33FJ256MC510A, dsPIC33FJ256MC710, dsPIC33FJ256MC710A, dsPIC33FJ32GP202, dsPIC33FJ32GP204, dsPIC33FJ32GP302, dsPIC33FJ32GP304, dsPIC33FJ32GS406,dsPIC33FJ32GS606, dsPIC33FJ32GS608, dsPIC33FJ32GS610, dsPIC33FJ32MC202, dsPIC33FJ32MC204, dsPIC33FJ32MC302, dsPIC33FJ32MC304, dsPIC33FJ64GP202, dsPIC33FJ64GP204, dsPIC33FJ64GP206, dsPIC33FJ64GP206A, dsPIC33FJ64GP306, dsPIC33FJ64GP306A, dsPIC33FJ64GP310, dsPIC33FJ64GP310A, dsPIC33FJ64GP706, dsPIC33FJ64GP706A, dsPIC33FJ64GP708, dsPIC33FJ64GP708A, dsPIC33FJ64GP710, dsPIC33FJ64GP710A, dsPIC33FJ64GP802, dsPIC33FJ64GP804, dsPIC33FJ64GS406, dsPIC33FJ64GS606, dsPIC33FJ64GS608, dsPIC33FJ64GS610, dsPIC33FJ64MC202, dsPIC33FJ64MC204, dsPIC33FJ64MC506, dsPIC33FJ64MC506A, dsPIC33FJ64MC508, dsPIC33FJ64MC508A, dsPIC33FJ64MC510, dsPIC33FJ64MC510A, dsPIC33FJ64MC706, dsPIC33FJ64MC706A, dsPIC33FJ64MC710, dsPIC33FJ64MC710A, dsPIC33FJ64MC802, dsPIC33FJ64MC804

Membuat Aplikasi Chat via Ethernet/Sockets Programming dengan Visual Studio C# 2010

Pendahuluan

Program yang akan dibahas terdiri dari dua bagian, yaitu:

1.       Server, sebagai server yang mana semua client akan mengirim pesan ke computer yang ada aplikasi ini dan mem-broadcast semua pesan ke client.

2.       Client, aplikasi yang dipakai oleh user untuk melakukan chat yang akan terhubung ke server.

Membuat Server

Pertama bukalah aplikasi Visual Studio C# 2010. Lalu pilih new project. Kemudian pilih Console Application dan berilah nama project chat_server pada bagian bawah form, lalu klik OK.

Setelah itu cobalah masukan kode di bawah ini.

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Net.Sockets;

using System.Net;

namespace ConsoleApplication1

{

class Program

{

const int portNo = 500;

static void Main(string[] args)

{

//==================================================================

//Mendapatkan Local Machine’s Host Name & IPAddress

//==================================================================

String strHostName = “”;

if (args.Length == 0)

{

// Mendapatkan Ip address dari local machine…

// Pertama cari host name dari local machine.

strHostName = Dns.GetHostName();

Console.WriteLine(“Local Machine’s Host Name: ” + strHostName);

}

else

{

strHostName = args[0];

}

IPHostEntry ipEntry = Dns.GetHostByName(strHostName);

IPAddress[] addr = ipEntry.AddressList;

for (int i = 0; i < addr.Length; i++)

{

Console.WriteLine(“IP Address {0}: {1} “, i, addr[i].ToString());

}

//===================================================================

System.Net.IPAddress localAdd = System.Net.IPAddress.Parse(addr[0].ToString());

TcpListener listener = new TcpListener(localAdd, portNo);

listener.Start();

while (true)

{

ChatClient user = new

ChatClient(listener.AcceptTcpClient());

}

}

}

}

Setelah itu, buat class baru dengan nama “ChatClient” dengan cara klik kanan pada nama project seperti di bawah ini.

Setelah itu, akan muncul form berikut.


Pilih Class dan jangan lupa beri nama “ChatClient” pada bagian bawah form dan klik Add. Setelah itu coba masukan kode seperti di bawah ini.

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Net.Sockets;

using System.Collections;

namespace ConsoleApplication1

{

class ChatClient

{

//—berisi daftar semua client—

public static Hashtable AllClients = new Hashtable();

//—informasi tentang client—

private TcpClient _client;

private string _clientIP;

private string _clientNick;

//—digunakan untuk mengirim/menerima data—

private byte[] data;

//—apakah nickname sudah dikirim—

private bool ReceiveNick = true;

public ChatClient(TcpClient client)

{

_client = client;

//—mendapatkan client IP address—

_clientIP = client.Client.RemoteEndPoint.ToString();

//—menambahkan client saat ini ke hash table—

AllClients.Add(_clientIP, this);

//—memulai membaca data dari client pada

// thread terpisah—

data = new byte[_client.ReceiveBufferSize];

client.GetStream().BeginRead(data, 0,

System.Convert.ToInt32(_client.ReceiveBufferSize), ReceiveMessage, null);

}

public void ReceiveMessage(IAsyncResult ar)

{

//—membaca dari client—

int bytesRead;

try

{

lock (_client.GetStream())

{

bytesRead = _client.GetStream().EndRead(ar);

}

//—client tidak tersambung—

if (bytesRead < 1)

{

AllClients.Remove(_clientIP);

Broadcast(_clientNick + ” has left the chat.”);

return;

}

else

{

//—mendapat pesan yang telah dikirim—

string messageReceived = System.Text.Encoding.ASCII.GetString(data, 0, bytesRead);

//—client mengirimkan nicknamenya—

if (ReceiveNick)

{

_clientNick = messageReceived;

//—memberitahu semua client memasuki

// chat—

Broadcast(_clientNick + ” has joined the chat.”);

ReceiveNick = false;

}

else

{

//—memberikan pesan pada semuanya—

Broadcast(_clientNick + “>” + messageReceived);

}

}

//—melanjutkan membaca dari client—

lock (_client.GetStream())

{

_client.GetStream().BeginRead(data, 0,

System.Convert.ToInt32(_client.ReceiveBufferSize),ReceiveMessage,null);

}

}

catch (Exception ex)

{

AllClients.Remove(_clientIP);

Broadcast(_clientNick + ” has left the chat.”);

}

}

public void SendMessage(string message)

{

try

{

//—mengirim text—

System.Net.Sockets.NetworkStream ns;

lock (_client.GetStream())

{

ns = _client.GetStream();

}

byte[] bytesToSend =

System.Text.Encoding.ASCII.GetBytes(message);

ns.Write(bytesToSend, 0, bytesToSend.Length);

ns.Flush();

}

catch (Exception ex)

{

Console.WriteLine(ex.ToString());

}

}

public void Broadcast(string message)

{

//—log secara lokal—

Console.WriteLine(message);

foreach (DictionaryEntry c in AllClients)

{

//—memberi pesan pada semua user—

((ChatClient)(c.Value)).SendMessage(

message + Environment.NewLine);

}

}

}

}

Membuat Client

Buatlah project baru dan pilih template Windows Form Application dan berilah nama project tersebut dengan nama “chat” pada bagian bawah form lalu klik OK. Setelah itu, buatlah form seperti pada gambar di bawah ini.

Setelah itu coba buatlah kode seperti di bawah ini.

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

using System.Net.Sockets;

namespace WindowsFormsApplication1

{

public partial class Form1 : Form

{

const int portNo = 500;

TcpClient client;

byte[] data;

public Form1()

{

InitializeComponent();

}

private void btnSignIn_Click(object sender, EventArgs e)

{

if (btnSignIn.Text == “Sign In”)

{

try

{

//—menghubungkan ke server—

client = new TcpClient();

client.Connect(IPServer.Text, portNo);

data = new byte[client.ReceiveBufferSize];

//—membaca dari server—

SendMessage(txtNick.Text);

client.GetStream().BeginRead(data, 0,

System.Convert.ToInt32(

client.ReceiveBufferSize),

ReceiveMessage, null);

btnSignIn.Text = “Sign Out”;

btnSend.Enabled = true;

}

catch (Exception ex)

{

MessageBox.Show(ex.ToString());

}

}

else

{

//—disconnect dari server—

Disconnect();

btnSignIn.Text = “Sign In”;

btnSend.Enabled = false;

}

}

private void btnSend_Click(object sender, EventArgs e)

{

SendMessage(txtMessage.Text);

txtMessage.Clear();

}

public void SendMessage(string message)

{

try

{

//—mengirim pesan ke server—

NetworkStream ns = client.GetStream();

byte[] data =

System.Text.Encoding.ASCII.GetBytes(message);

//—mengirim text—

ns.Write(data, 0, data.Length);

ns.Flush();

}

catch (Exception ex)

{

MessageBox.Show(ex.ToString());

}

}

public void ReceiveMessage(IAsyncResult ar)

{

try

{

int bytesRead;

//—membaca data dari server—

bytesRead = client.GetStream().EndRead(ar);

if (bytesRead < 1)

{

return;

}

else

{

//—memanggil delegate untuk menampilkan

// data yang diterima—

object[] para = {System.Text.Encoding.ASCII.GetString(data, 0, bytesRead) };

this.Invoke(new delUpdateHistory(UpdateHistory),

para);

}

//—melanjutkan membaca…—

client.GetStream().BeginRead(data, 0,

System.Convert.ToInt32(client.ReceiveBufferSize),

ReceiveMessage, null);

}

catch (Exception ex)

{

//—abaikan error, dibuang ketika pengguna sign off—

}

}

//—delegate dan subroutine untuk mengupdate TextBox control—

public delegate void delUpdateHistory(string str);

public void UpdateHistory(string str)

{

txtMessageHistory.AppendText(str);

}

public void Disconnect()

{

try

{

//—Disconnect dari server—

client.GetStream().Close();

client.Close();

}

catch (Exception ex)

{

MessageBox.Show(ex.ToString());

}

}

private void Form_Closing(object sender,FormClosingEventArgs e)

{

Disconnect();

}

}

}

Setelah itu, double clik pada Form1.Designer.cs dan tambahkan kode seperti di bawah ini.

private void InitializeComponent()

{

this.FormClosing += new

System.Windows.Forms.FormClosingEventHandler(this.Form_Closing);

}

Setelah kedua aplikasi diatas (chat server dan client) sudah selesai dibuat, maka program bisa langsung dites pada komputer yang berbeda atau pada satu komputer. Akan tetapi, jika menggunakan satu komputer, aturlah IP address yang diakses oleh client adalah “127.0.0.1” (computer’s loopback address).

————————————————————————————————————-

Daftar Pustaka

http://www.codeproject.com/KB/cs/network.aspx

Lee, Wei-Meng[2007].”Practical .NET 2.0 Networking Projects”. Apress, New York, USA.

MPP Set : Software dan Hardware Pemutar Musik Monophonic

http://www.dailymotion.com/video/xiiabt_mpp-set-clip_tech

MonoPhonicPlayer (MPPlayer)

MonoPhonicPlayer adalah software yang digunakan untuk membuat atau memainkan file .mpp, file yang memainkan music monophonic. .mpp sendiri di buat dengan menggunakan format kode nokia composer. Software ini berbasis java jadi terlebih dahulu harus menginstall JDK (Java Development Kit) agar bisa di-running di PC. Berikut link untuk mendownload file JDK http://www.oracle.com/technetwork/java/javase/downloads/index.html.

MPProgrammer (MPProgrammer)

MPProgrammer adalah software yang digunakan untuk membuat atau mendownload file .mpp ke MPP-Box via serialport. Sama seperti aplikasi di atas, MPProgrammer menggunakan format kode nokia composer.

MPP-Box (Hardware)

MPP-Box adalah perangkat yang memainkan musik monophonic yang terlebih dahulu didownload dari PC menggunakan MPProgrammer  via serialport.

Aplikasi

MPP set ini bisa digunakan sebagai bell di rumah atau sebagai klakson di sepeda atau di motor yang suaranya bisa diganti sesuai keinginan pengguna.

Berikut link untuk mendownload MPP Set http://www.mediafire.com/file/s9qotntbf284k0w/MPP%20set.rar. Isi file : aplikasi MPPlayer, MPProgrammer, MPP-Box (firmware MPP-Box.hex, file PCB Project Eagle format, dan readme.txt).

______________________________________________

Sample Code

Walls

4e1 8g1 4c1 8- 4a1 8c2 4f1 8- 8b1 8g1 8a1 8b1 8d2 8c2

Creed-Higher

16d2 16d2 8d2 16d2 8e2 16e2 16e2 8#f2 16#f2 16e2 16#f2 16#f2 16g2 16e2 16e2 8e2 16e2 8#f2 16#f2 32e2 32#f2 16d2 8e2 16e2 8#f2 8e2 16d2 8d2 16d2 4e2 16e2 8d2 16d2 16d2 16d2 8d2 16b1 16b1 16g2 8#f2 8#f2 16#f2 16e2 8#f2 16#f2 16e2 16d2 8d2 16d2 16d2

Warkop

8d1 8#d1 8- 8e1 8f1 2- 8g1 8#g1 2- 8e1 8f1 8-8g1 8#g1 8- 8#c2 8c2 8- 8f1 8#g1 8- 8c2 1b1 16- 16#a1 16#g1 8f1 8- 8#d1 8f1

Java s0ng
4g1 4b1 4c2 4- 4c2 8- 8e2 4f2 4g2 4f2 4e2 4c2 8- 32b2 32b3 16- 32c3 32c3 32c3 16- 32b2 32b3 16- 32g2 32g2 16- 32g2 32b3 16- 32c3 32c3 4- 4c2 4b1 4g1 4f1 4- 4f1 8- 8e1 4f1 4e1 4g1 4f1 2e1 8-

file .mpp yang dapat didownload. http://www.mediafire.com/file/5y02w2190kb0cu2/tones.mpp.rar


link tentang library tone untuk avr https://wangready.wordpress.com/2011/06/17/library-bahasa-c-untuk-aplikasi-nada-monophonic-pada-mikrokontroler-avr-dengan-compiler-winavr/

file source http://www.mediafire.com/file/wu6z3dmn1ej6dbu/mppset.rar

Aplikasi Komunikasi Serial pada PC Menggunakan Visual C# 2010 / Express

Komunikasi serial pada PC masih sering digunakan untuk beberapa aplikasi yang membutuhkan koneksi dengan mikrokontroler. Mikrokontroler yang mempunyai USART dapat terkoneksi dengan port serial pada PC dengan konektor DB9 dengan menggunakan RS232 standard . Jika menggunakan mikrokontroler avr, maka bisa lihat page berikut https://wangready.wordpress.com/2011/02/02/pemrograman-usart-pada-mikrokontroler-avr-avr-studio-4/ untuk pemrograman menggunakan AVR Studio 4. Berikut perancangan software untuk komunikasi serial dengan mode UART.

Pertama buka aplikasi Visual C# 2010. Kemudian, pilih new project. Lalu pilih lagi Windows Forms Aplication dan ketikan nama project pada bagian bawah form lalu OK. Lalu setelah itu buatlah Form seperti di bawah ini dengan terlebih daulu double click pada Form1.cs pada panel Solution Explorer sebelah kanan agar muncul template dari form tersebut.

Setelah selesai membuat form seperti di atas, perhatikan nilai property pada setiap komponen.

Control

Property

Value

Form1

Text

“Komunikasi serial”

Form1

AcceptButton

btnSend

lblMessage

BorderStyle

FixedSingle

txtDataReceived

ScrollBars

Vertical

txtDataReceived

MultiLine

True

txtDataToSend

MultiLine

True

Setelah itu klik Toolbox yang biasanya ada di sebelah kiri. Lalu pada sub Components klik SerialPort dan klik kembali pada form yang tampil untuk menambahkan komponen SerialPort pada form yang sedang kita buat. Setelah itu ganti nama serialPort1 dengan serialPort sebagai nama yang akan kita gunakan pada panel Properties.

Setelah selesai mengatur tampilan dari Form1, silakan fahami source code di bawah ini.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace serial
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)
{
//—menset event handler untuk DataReceived event—
serialPort.DataReceived += new System.IO.Ports.SerialDataReceivedEventHandler(DataReceived);
//—menampilkan nama serialport yang tersedia pada
// komputer—
string[] portNames = System.IO.Ports.SerialPort.GetPortNames();
for (int i = 0; i <= portNames.Length - 1; i++)
{
cbbCOMPorts.Items.Add(portNames[i]);
}
btnDisconnect.Enabled = false;
}

private void btnConnect_Click(object sender, EventArgs e)
{
//—menutup akses serialport apabila akses serialport terbuka—
if (serialPort.IsOpen)
{
serialPort.Close();
}
try
{
//—mengatur beberapa parameter untuk koneksi serial
// port—
serialPort.PortName = cbbCOMPorts.Text;
serialPort.BaudRate = 9600;
serialPort.Parity = System.IO.Ports.Parity.None;
serialPort.DataBits = 8;
serialPort.StopBits = System.IO.Ports.StopBits.One;
//—buka serial port—
serialPort.Open();
//—menampilkan status dari serial port dan
// enable/disable -kan tombol—
lblMessage.Text = cbbCOMPorts.Text + " connected.";
btnConnect.Enabled = false;
btnDisconnect.Enabled = true;
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}

private void btnDisconnect_Click(object sender, EventArgs e)
{
try
{
//—tutup serial port—
serialPort.Close();
//—menampilkan status dari serial port dan
// enable/disable -kan tombol—
lblMessage.Text = serialPort.PortName +" disconnected.";
btnConnect.Enabled = true;
btnDisconnect.Enabled = false;
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}

private void btnSend_Click(object sender, EventArgs e)
{
try
{
//—menulis tipe data string pada serial port—
serialPort.Write(txtDataToSend.Text + Environment.NewLine);
//—menambahkan string yang telah dikirim pada TextBox control—
txtDataReceived.AppendText(">" + txtDataToSend.Text +  Environment.NewLine);
txtDataReceived.ScrollToCaret();
//—bersihkanTextBox control—
txtDataToSend.Text = string.Empty;
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}

//—Event handler untuk DataReceived event—
private void DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
//—memanggil delegasi untuk mengambil data yang diterima—
txtDataReceived.BeginInvoke(new myDelegate(updateTextBox));
}

//—Delegate and subroutine untuk ditampilkan pada TextBox control—
public delegate void myDelegate();
public void updateTextBox()
{
//—menambahkan data pada TextBox control—
txtDataReceived.AppendText(serialPort.ReadExisting());
txtDataReceived.ScrollToCaret();
}
}
}

Setelah program jadi dan tidak terdapat pesan pada Error List yang terdapat pada bagian bawah panel kerja, maka program bisa di debug. Klik tombol Start Debugging atau tekan F5.

Setelah berhasil di debug, maka program bisa langsung di-publish untuk menghasilkan setup.exe. Klik kanan pada nama project yang ada pada panel Solution Explorer dan klik properties. Lalu pilih menu Publish dan setting juga Publish Location sesuai keinginan. Lalu klik Publish Wizard… untuk melakukan settingan terlebih dahulu atau Publish Now untuk publish langsung.

Berikut link demo aplikasi komunikasi serial di atas :  files.indowebster.com/download/files/ser_file_app

Berikut link download project :  files.indowebster.com/download/files/ser_code

Daftar Pustaka:

Lee, Wei-Meng[2007].”Practical .NET 2.0 Networking Projects”. Apress, New York, USA.

Control

Property

Value

Form1

Text

“Komunikasi serial”

Form1

AcceptButton

btnSend

lblMessage

BorderStyle

FixedSingle

txtDataReceived

ScrollBars

Vertical

txtDataReceived

MultiLine

True

txtDataToSend

MultiLine

True

AVRminiProg ISPMkII(USB) – programmer untuk mikrokontroler AVR

Programmer untuk mikrokontroler AVR ada banyak jenisnya. Salah satunya AVRminiProg ISPMkII(USB). Koneksi USB ke PC membuat lebih nyaman untuk digunakan, apalagi jika menggunakan laptop. Berikut site reference yang saya temukan untuk membuat ISPMkII: http://www.simonqian.com/en/AVRminiProg/ dengan lisensi GNU GPL version 2.

Rangkaian yang saya dapatkan dari situs di atas membuat saya bingung karena tidak terbiasa memahami schematic berformat tersebut. Tapi karena saya baca bahwa disain elektronik dari programmer ini kompatibel dengan programmer usbasp, maka saya kira bisa menggunakan schematic dari usbasp. Berikut schematiknya dari http://www.fischl.de/usbasp/

Setelah dibuat rangkaiannya, download firmware-nya ke dalam chip pada rangkaian yang telah dibuat dengan menggunakan programmer yang lain. Chip yang digunakan bisa atmega48 atau atmega8. firmware-nya sendiri bisa di-download pada situs yang bersangkutan.

Biasanya ada beberapa kendala pada perancangan programmer ini. Salah satunya ialah karena kita menggunakan konektor usb, maka adakalanya id dari ISPMkII tidak terdeteksi oleh PC. Padahal seharusnya pada saat pertamakali terkoneksi dengan PC, PC meminta driver. Berikut sedikit tips berdasarkan beberapa pengalaman:

  1. Hindari penggunaan PCB bolong karena jika solderan tidak kokoh memungkinkan perangkat tidak berfungsi semestinya. Mungkin sebaiknya menggunakan PCB yang dicetak.
  2. Hindari penggunaan polygon plane pada desain PCB. Apalagi jika tidak memakai masking. Hal ini untuk menghindari short circuit yang tidak terdeteksi.
  3. Gunakan komponen dengan nilai yang sesui dengan schematic.
  1. Hindari penggunaan polygon plane pada desain PCB. Apalagi jika tidak memakai masking. Hal ini untuk menghindari short circuit yang tidak terdeteksi.