Breaking News
Loading...
Jumat, 21 Februari 2014

Antarmuka Komunikasi Data Serial

Dalam proyek ini aplikasi desktop akan menerima data pengukuran detak jantung dan suhu yang dikirim oleh arduino untuk ditampilkan pada antarmuka Health Diagnostic Mouse. Maka dari itu kita harus menentukan parameter – parameter yang dibutuhkan, agar arduino dan aplikasi desktop Health Diagnostic Mouse dapat terhubung atau berkomunikasi. Beberapa parameter yang dibutuhkan untuk komunikasi seperti nama Port dan Baudratenya.
Komunikasi data yang dipakai dalam proyek ini yaitu komunikasi serial. Komunikasi serial adalah komunikasi yang pengiriman datanya per-bit secara berurutan dan bergantian, Atau dengan kata lain komunikasi serial merupakan salah satu metode komunikasi data di mana hanya satu bit data yang dikirimkan melalui seuntai kabel pada suatu waktu tertentu.
Komunikasi serial ada dua macam, asynchronous serial dan synchronous serial. Synchronous serial adalah komunikasi dimana hanya ada satu pihak (pengirim atau penerima) yang menghasilkan clock dan mengirimkan clock tersebut bersama-sama dengan data. Contoh pengunaan synchronous serial terdapat pada transmisi data keyboard. Asynchronous serial adalah komunikasi dimana kedua pihak (pengirim dan penerima) masing-masing menghasilkan clock namun hanya data yang ditransmisikan, tanpa clock. Agar data yang dikirim sama dengan data yang diterima, maka kedua frekuensi clock harus sama dan harus terdapat sinkronisasi. Setelah adanya sinkronisasi, pengirim akan mengirimkan datanya sesuai dengan frekuensi clock pengirim dan penerima akan membaca data sesuai dengan frekuensi clock penerima. Contoh penggunaan asynchronous serial adalah pada Universal Asynchronous Receiver Transmitter (UART) yang digunakan pada serial port (COM) komputer. Beberapa contoh komunikasi serial adalah mouse, scanner.

Berikut adalah langkah – langkah dan source code untuk mengatur parameter yang dibutuhkan.
1.    Bentuk form pengaturan komunikasi serial

Form Setting Serial Port
2.    Selanjutnya buat class baru dengan cara :
v  klik kanan pada project =>pilih Add =>pilih New Item


       v  Setelah jendela ini tampil, pilih class dan ketikan nama class => klik Add



v  Selanjutnya ketikan sintax program ini didalamnya 

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

namespace SmartMouse
{
    public class SerialComPort : SerialPort
    {
        public static SerialComPort sp = new SerialComPort();

        public SerialComPort()
        {
            setupPort(" ", 9600, 8, StopBits.One, Parity.None, Handshake.None);
            this.ReadBufferSize = 8192;
            //this.ReadBufferSize = 1024;
        }

        public void setupPort(string name, int baudrate, int bits, StopBits sb, Parity pr, Handshake hs)
        {
            try
            {
                this.PortName = name;
                this.BaudRate = baudrate;
                this.DataBits = bits;
                this.StopBits = sb;
                this.Parity = pr;
                this.Handshake = hs;
            }
            catch (Exception ex)
            {

            }
        }

        public void openSetup()
        {
            SerialPortSetupWindow ss = new SerialPortSetupWindow(this);
            ss.ShowDialog();
            if (ss.OkState)
            {
                //ss.OkState = false;
                try
                {
                    this.PortName = ss.cbPortName.Text;
                    this.BaudRate = int.Parse(ss.cbBaudrate.Text);
                    this.DataBits = int.Parse(ss.cbDataBits.Text);
                    this.StopBits = (StopBits)Enum.Parse(typeof(StopBits), ss.cbStopBits.Text);
                    this.Parity = (Parity)Enum.Parse(typeof(Parity), ss.cbParity.Text);
                    this.Handshake = (Handshake)Enum.Parse(typeof(Handshake), ss.cbHandshake.Text);
                }
                catch (Exception ex)
                {
                }
            }
        }
    }
}

3. Setelah itu ketikkan sintax program ini pada file.xaml.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
using System.IO.Ports;

namespace SmartMouse
{
    /// 
    /// Interaction logic for SerialPortSetupWindow.xaml
    /// 
    public partial class SerialPortSetupWindow : Window
    {
        public bool OkState { get; set; }

        public SerialPortSetupWindow(SerialComPort sp)
        {
            InitializeComponent();
            initSetup(sp);
        }

        public void initSetup(SerialComPort sp) {
            OkState = false;

            int[] baudrates = { 9600, 115200 };
            int[] databits = { 8 };
            this.cbBaudrate.ItemsSource = baudrates;
            this.cbDataBits.ItemsSource = databits;

            String[] ports = SerialPort.GetPortNames();

            foreach (string str in ports)
            {
                this.cbPortName.Items.Add(str);
            }

            foreach (string str in Enum.GetNames(typeof(StopBits)))
            {
                this.cbStopBits.Items.Add(str);
            }

            foreach (string str in Enum.GetNames(typeof(Parity)))
            {
                this.cbParity.Items.Add(str);
            }

            foreach (string str in Enum.GetNames(typeof(Handshake)))
            {
                this.cbHandshake.Items.Add(str);
            }

            this.cbPortName.Text = sp.PortName;
            this.cbBaudrate.Text = sp.BaudRate.ToString();
            this.cbDataBits.Text = sp.DataBits.ToString();
            this.cbStopBits.Text = sp.StopBits.ToString();
            this.cbParity.Text = sp.Parity.ToString();
            this.cbHandshake.Text = sp.Handshake.ToString();
        }

        private void Button_Click(object sender, RoutedEventArgs e)
        {
            this.OkState = true;
            this.Close();
        }
   }
}

0 komentar:

Posting Komentar

 
Toggle Footer