Arduino και εφαρμογές windows c# (μέρος 3ο)

Arduino και εφαρμογές windows c# (μέρος 3ο)

εφαρμογές windows c-sharp: Δημιουργία κώδικα C# για την εφαρμογή

Επιλέγουμε το Tab MainWindow.xaml.cs. Βλέπουμε πως και εδώ το Visual Studio έχει δημιουργήσει ήδη τον αναγκαίο αρχικό κώδικα.
Εμείς τώρα θα πρέπει να προσθέσουμε τις εξής βιβλιοθήκες που μας εξασφαλίζουν τη σειριακή επικοινωνία της εφαρμογής.

Αρκεί να προσθέσουμε τις παρακάτω γραμμές:

using System.IO.Ports;
using System.IO;

Επιπλέον Θα πρέπει να ξεκινήσουμε και μια νέα σειριακή επικοινωνία μέσα στον κώδικα. Αυτό μπορούμε να το πετύχουμε εφόσον γράψουμε την παρακάτω γραμμή κάπου μέσα στις αγκύλες του (public partial class MainWindow : Window) και έξω από τις αγκύλες του (public MainWindow())

SerialPort arduinoPort = new SerialPort();

Έτσι δημιουργήσαμε ένα καινούριο αντικείμενο με όνομα arduinoPort που είναι της κλάσης SerialPort. Σε αυτή την κλάση υπάρχουν όλες αυτές οι μέθοδοι και οι ιδιότητες που θα χρησιμοποιήσουμε πιο κάτω για την επικοινωνία με το Arduino.

εφαρμογές windows c-sharp: επικοινωνία με το Arduino

O τελικός κώδικας στο Tab MainWindow.xaml.cs. θα πρέπει να έχει την παρακάτω μορφή.

using System;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
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.Navigation;
using System.Windows.Shapes;
using System.IO.Ports;
using System.IO;

namespace Led_Control
{
   
    //public partial class MainWindow : Window
    {
        //Δημιουργία καινούριου Serial port με όνομα arduinoPort
        SerialPort arduinoPort = new SerialPort(); 


        public MainWindow()
        {
            InitializeComponent();
        }

        // Δημιουργία καινούριου event που αντιστοιχεί στην κατάσταση του (connect/disconnect) button
        private void button_Connect_Click(object sender, RoutedEventArgs e)
        {

            if (arduinoPort.IsOpen == false)
            {
                try
                {
                    //καταχώρησε για PortName (η θύρα που είναι συνδεδεμένο το arduino με το PC) 
                    //το περιεχόμενο του textbox_SerialPort
                    arduinoPort.PortName = textBox_SerialPort.Text;
                    //Ορισμού μετάδoσης επικοινωνίας δεδoμένων 9600 bpps 
                    //(Προσοχή πρέπει να είναι ο ίδιος ρυθμός με αυτόν που θα φορτωθεί στο sketch του arduino)
                    arduinoPort.BaudRate = 9600;
                    //Ξεκίνα την σύνδεση με το arduino
                    arduinoPort.Open();
                    //Γράψε στο textBlock που εμφανίζει την κατάσταση της σύνδεσης
                    textBlock_Status.Text = "Connected";
                    //Άλλαξε το χρώμα του φόντου του textBlock σε πράσινο
                    textBlock_Status.Background = System.Windows.Media.Brushes.Green;
                }
                catch (Exception)
                {

                }
            }
            else
            {
                try
                {
                    //Κλείσε την σύνδεση με το arduino
                    arduinoPort.Close();
                    //Γράψε στο textBlock που εμφανίζει την κατάσταση της σύνδεσης
                    textBlock_Status.Text = "Disconnected";
                    //Άλλαξε το χρώμα του φόντου του textBlock σε κόκκινο
                    textBlock_Status.Background = System.Windows.Media.Brushes.Red;
                }
                catch (Exception)
                {

                }
            }

        }

        // Δημιουργία καινούριου event που αντιστοιχεί στην κατάσταση του (off) button
        private void button_Led_Off_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                //Γράψε στην σειριακή θύρα με σκοπό να διαβάσει το arduino και 
                // να εκτελέσει ανάλογα
                arduinoPort.Write("0");
                //Γράψε στο textBlock που εμφανίζει την κατάσταση του LED
                textBlockLedStatus.Text = "Off";
                //Άλλαξε το χρώμα του φόντου του textBlock σε γκρι
                textBlockLedStatus.Background = Brushes.Gray;
            }
            catch (Exception)
            {

            }
        }

        // Δημιουργία καινούριου event που αντιστοιχεί στην κατάσταση του (off) button
        private void button_Led_On_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                //Γράψε στην σειριακή θύρα με σκοπό να διαβάσει το arduino και 
                // να εκτελέσει ανάλογα
                arduinoPort.Write("1");
                //Γράψε στο textBlock που εμφανίζει την κατάσταση του LED
                textBlockLedStatus.Text = "On";
                //Άλλαξε το χρώμα του φόντου του textBlock σε πράσινο
                textBlockLedStatus.Background = Brushes.Green;
            }
            catch (Exception)
            {

            }
        }

        
    }
}

Στον παραπάνω κώδικα χρησιμοποιούμε το Try/Catch Block γιατί στην περίπτωση που η σύνδεση με το Arduino δεν είναι ενεργή, ή το Arduino δεν μπορεί να επικοινωνήσει, η εφαρμογή μας θα καταρρεύσει.

εφαρμογές windows c-sharp: εκτέλεση εφαρμογής

Αφού τελείωσαμε και με αυτό το κομμάτι πατάμε το κουμπί Play στο Visual Studio και τότε θα ξεκινήσει να τρέχει η εφαρμογή. Αφού έχουμε φορτώσει το sketch στο Arduino και είναι συνδεδεμένο με τον υπλογιστή μας, τότε μπορούμε να το χρήσιμοποιήσουμε και να δούμε πως δουλεύει.

Σε περίπτωση που θέλουμε να τρέξουμε την εφαρμογή χωρίς το Visual Studio τότε θα πρέπει να πάμε στο φάκελο του Project (Documents\Visual Studio 2015\Projects) και μέσα σε αυτόν το φάκελο στο \bin\Debug Θα βρούμε το εκτελέσιμο αρχείο .exe .

Απάντηση

Αυτός ο ιστότοπος χρησιμοποιεί το Akismet για να μειώσει τα ανεπιθύμητα σχόλια. Μάθετε πώς υφίστανται επεξεργασία τα δεδομένα των σχολίων σας.