Академический Документы
Профессиональный Документы
Культура Документы
Project ini bermaksud sebagai sensor pendeteksi garis pada robot pengikut garis (line follower
robot) sebagai pengganti sensor proximity photodioda.
Berikut kodenya.
using
using
using
using
using
using
using
using
using
using
using
using
using
using
System;
System.Collections.Generic;
System.ComponentModel;
System.Data;
System.Drawing;
System.Linq;
System.Text;
System.Windows.Forms;
AForge;
AForge.Controls;
AForge.Video;
AForge.Video.DirectShow;
AForge.Imaging;
AForge.Imaging.Filters;
namespace line_tracker2
{
public partial class Form1 : Form
{
//reference sudah ditambahkan
private FilterInfoCollection VideoCaptureDevices;//mengumpulkan setiap
perangkat video yg terdeteksi
private VideoCaptureDevice FinalVideoSource;//menampung perangkat
video yang akan digunakan
public Form1()
{
InitializeComponent();
}
video
FinalVideoSource = new
VideoCaptureDevice(VideoCaptureDevices[comboBox1.SelectedIndex].MonikerString)
;
FinalVideoSource.NewFrame += new
NewFrameEventHandler(FinalVideoSource_NewFrame);
FinalVideoSource.Start();
}
private Rectangle objectRect;
int x1, y1,x1_bawah, y1_bawah;
void FinalVideoSource_NewFrame(object sender, NewFrameEventArgs
eventArgs)
{
//sekarang kita tambahkan kode berikut untuk menampilkan new frame
event (frame dari webcam) untuk menampilkan gambar pada picturebox
Bitmap image = (Bitmap)eventArgs.Frame.Clone();//bitmap boxing
Bitmap image_unfilter = (Bitmap)eventArgs.Frame.Clone();
Bitmap image_bawah = (Bitmap)eventArgs.Frame.Clone();//bitmap
boxing
Bitmap image_unfilter_bawah = (Bitmap)eventArgs.Frame.Clone();
Crop filter = new Crop(new Rectangle(0, 0, image.Width,
(image.Height/8)));
// apply the filter
image = filter.Apply(image);
image_unfilter = filter.Apply(image_unfilter);
Crop filter_bawah = new Crop(new Rectangle(0, 320,
image_bawah.Width, (image_bawah.Height / 8)));
// apply the filter
image_bawah = filter_bawah.Apply(image_bawah);
image_unfilter_bawah = filter_bawah.Apply(image_unfilter_bawah);
// create filter
ColorFiltering filtercr = new ColorFiltering();
// set color ranges to keep
filtercr.Red = new IntRange(200, 255);
filtercr.Green = new IntRange(200, 255);
filtercr.Blue = new IntRange(200, 255);
filtercr.FillOutsideRange = true;
of
for
size
blobCounter.MinHeight = 20;
// objects we look
blobCounter.FilterBlobs = true;
// filter blobs by
}
blobCounter.ProcessImage(image_bawah);
Rectangle[] rects_bawah = blobCounter.GetObjectsRectangles();
// draw rectangle around the biggest blob
if (rects_bawah.Length > 0)
{
objectRect = rects_bawah[0];
Graphics g = Graphics.FromImage(image_unfilter_bawah);
using (Pen pen = new Pen(Color.YellowGreen, 3))
{
g.DrawRectangle(pen, objectRect);
}
g.Dispose();
// calculate X,Y coordinates of object's center
x1_bawah = (objectRect.Left + objectRect.Right image_bawah.Width) / 2;
y1_bawah = (image_bawah.Height - (objectRect.Top +
objectRect.Bottom)) / 2;
}
pictureBox1.Image = image_unfilter;
pictureBox2.Image = image_unfilter_bawah;
System;
System.Collections.Generic;
System.ComponentModel;
System.Data;
System.Drawing;
System.Linq;
System.Text;
System.Windows.Forms;
System.Runtime.InteropServices;
namespace mouse
{
public partial class Form1 : Form
{
public const UInt32 SPI_SETMOUSESPEED = 0x0071;
[DllImport("User32.dll")]
static extern Boolean SystemParametersInfo(
UInt32 uiAction,
UInt32 uiParam,
UInt32 pvParam,
UInt32 fWinIni);
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
SystemParametersInfo(SPI_SETMOUSESPEED, 0, 1, 0);
label1.Text
label2.Text
label3.Text
label4.Text
}
=
=
=
=
Convert.ToString(x);
Convert.ToString(y);
Convert.ToString(count_x);
Convert.ToString(count_y);
Filed under electrical engineering Tagged with c#, computer, Design Software, interfacing
perangkat, robotics, robotika, visual studio, visual studio 2010, visual studio 2010 express
System;
System.Collections.Generic;
System.Text;
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.
Tampilan program.
___________________________
Daftar Pustaka
http://balau82.wordpress.com/2009/04/18/simplest-serial-port-terminal-in-csharp/
Filed under electrical engineering Tagged with algoritma, c#, Design Software, interfacing
perangkat, komunikasi serial, programmer, Programming, Software, visual studio, visual studio
2010, visual studio 2010 express
strHostName = Dns.GetHostName();
Console.WriteLine(Local Machines 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.
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;
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
{
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);
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();
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();
}
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
(computers 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.
Filed under electrical engineering Tagged with algoritma, chat, client, Design Software, ethernet,
interfacing perangkat, programmer, Programming, server, socket programming, Software, visual
studio, visual studio 2010, visual studio 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
http://wangready.wordpress.com/2011/02/02/pemrograman-usart-pada-mikrokontroler-avr-avrstudio-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.
1
2
3
4
5
6
7
8
9
10
using
using
using
using
using
using
using
using
System;
System.Collections.Generic;
System.ComponentModel;
System.Data;
System.Drawing;
System.Linq;
System.Text;
System.Windows.Forms;
namespace serial
{
public partial class Form1 : Form
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
{
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
57 serialPort.Close();
58 //menampilkan status dari serial port dan
// enable/disable -kan tombol
59 lblMessage.Text = serialPort.PortName +" disconnected.";
60 btnConnect.Enabled = true;
61 btnDisconnect.Enabled = false;
62 }
catch (Exception ex)
63 {
64 MessageBox.Show(ex.ToString());
65 }
66 }
67
68 private void btnSend_Click(object sender, EventArgs e)
{
69 try
70 {
71 //menulis tipe data string pada serial port
72 serialPort.Write(txtDataToSend.Text + Environment.NewLine);
string yang telah dikirim pada TextBox control
73 //menambahkan
txtDataReceived.AppendText(">" + txtDataToSend.Text +
74 Environment.NewLine);
75 txtDataReceived.ScrollToCaret();
76 //bersihkanTextBox control
77 txtDataToSend.Text = string.Empty;
}
78 catch (Exception ex)
79 {
80 MessageBox.Show(ex.ToString());
81 }
82 }
83
//Event handler untuk DataReceived event
84 private void DataReceived(object sender,
85 System.IO.Ports.SerialDataReceivedEventArgs e)
86 {
87 //memanggil delegasi untuk mengambil data yang diterima
myDelegate(updateTextBox));
88 txtDataReceived.BeginInvoke(new
}
89
90 //Delegate and subroutine untuk ditampilkan pada TextBox control
91 public delegate void myDelegate();
92 public void updateTextBox()
93 {
//menambahkan data pada TextBox control
94 txtDataReceived.AppendText(serialPort.ReadExisting());
95 txtDataReceived.ScrollToCaret();
96 }
97 }
98 }
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
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.