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 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