czwartek, 24 kwietnia 2014

Prosty terminal debugowy



Witajcie!

Jako, że prowadzę ciąg artykułów o zestawie FRDM-KL46Z nieodłącznym narzędziem
dla nas będzie prosty terminal do wizualizacji danych z naszej płytki.
W sieci można znaleźć wiele różnych programów typu terminal ale ja jak zawsze
wole swoje narzędzie - zresztą człowiek zawsze się nauczy czegoś nowego :)

Terminal, który przedstawiam nie jest jakimś tam super programem ma jedynie za
 zadanie wyświetlenie naszych wyników. Oczywiście narzędzie to przyda nam się
w przyszłości gdzie na pewno jeszcze zajdzie potrzeba użycia go nie koniecznie z
opisywaną płytką.



Nasz terminal zapamiętuje ostatnie ustawienia portu COM oraz prędkości BaudRate
co jest fajne ponieważ nie trzeba za każdym razem rozwijać comboboxów i wybierać
portu jak i prędkości.

Myślę, że z czasem zostaną dodane inne funkcje na potrzeby opisywanych programów.

Poniżej kod w c#:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO.Ports;

namespace serial_receive
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();                     


            button1.Text = "Otwórz";
            button1.BackColor = Color.Green;

            string[] porty = SerialPort.GetPortNames();

            foreach (var ports in porty)
            {
                comboBox1.Items.Add(ports);
            }
            comboBox1.Text = Properties.Settings.Default.port;
            comboBox2.Text = Properties.Settings.Default.baud;
        }

        private string rxString;
        private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
        {
            rxString = serialPort1.ReadExisting(); 
            this.Invoke(new EventHandler(displayText)); 
        }
        private void displayText(object o, EventArgs e)
        {
            
            richTextBox1.AppendText(rxString); 
        }



        private void Form1_Load(object sender, EventArgs e)
        {

        }

        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (serialPort1.IsOpen)
            {
                serialPort1.Close();
            }
            else
            {
                serialPort1.PortName = comboBox1.SelectedItem.ToString();
            }
            
        }
        int flaga = 0;
        private void button1_Click(object sender, EventArgs e)
        {
            flaga++;
            if (flaga == 1)
            {
                button1.Text = "Zamknij";
                button1.BackColor = Color.Red;
                try
                {
                    serialPort1.Open();
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
                
            }
            if (flaga != 1)
            {
                button1.Text = "Otwórz";
                button1.BackColor = Color.Green;
                try
                {
                    serialPort1.Close();
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
                flaga = 0;
            }
        }

        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            Properties.Settings.Default.port = comboBox1.SelectedItem.ToString();
            Properties.Settings.Default.baud = comboBox2.Text;
            Properties.Settings.Default.Save();
            if (serialPort1.IsOpen) serialPort1.Close();
        }
    }
}

Program można pobrać tutaj:
link

Brak komentarzy:

Prześlij komentarz