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