1. Tujuan praktikum ini adalah untuk menerima data dari mikrokontroller melalui port serial. Data yang dikirim oleh mikrokontroller adalah kondisi dari potensiometer. Nilai analog tegangan akan dikonversi oleh mikro ke nilai digital dalam range 0 – 1023. Kemudian nilai digital ini yang dikirim ke komputer melalui port serial. Program pada mikro (kita akan menggunakan arduino) cukup sederhana:

2. Buat solution baru. Susun form dengan control-control seperti terlihat pada gambar.

Atur properties “Series” pada chart, sehingga muncul window baru seperti dibawah ini.

Anda bisa mengubah jenis grafik dengan mengubah ChartType nya.
3. Komponen SerialPort ada di Components toolbar, sedangkan komponen Chart ada di data.
4. Tambahkan program berikut untuk control button1:

5. Tambahkan program berikut ke event DataReceived-nya serial:

Kita menggunakan method Invoke karena thread untuk receive serial berbeda dengan thread program utama. Padahal object RichTextBox atau Label, tempat kita untuk menampilkan data serial, terletak di thread utama. Invoke membuat kita dapat melakukan cross-thread. Program di atas akan membuat event DataReceived memanggil event handler baru yang terletak di thread utama, yaitu DisplayText
6. Untuk method DisplayText, tambahkan program berikut:

7. Compile dan jalankan prog
Dan ini adalah program utuhnya :
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace SerialPortfix
{
public partial class Form1 : Form
{
int a;
string rxString;
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
if (button1.Text == “Connect”)
{
button1.Text = “Disconnect”;
serialPort1.Open();
richTextBox1.Text = “”;
a = 0;
}
else
{
button1.Text = “Connect”;
serialPort1.Close();
}
}
private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
rxString = serialPort1.ReadLine();
this.Invoke(new EventHandler(DisplayText));
}
private void DisplayText(object sender, EventArgs e)
{
richTextBox1.AppendText(rxString);
richTextBox1.ScrollToCaret();
chart1.Series[“Series1″].Points.AddXY(a, Convert.ToInt16(rxString));
a++;
}
}
}
inilah saat berjalannya

0 komentar:
Posting Komentar