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; using System.IO; namespace SerialPortTerminal { public partial class Form1 : Form { public Form1() { InitializeComponent(); } SerialPort serialPort; //Serialport den wir später verwenden - globale Deklaration delegate void InvokeLB(string Data); InvokeLB lbRecievedDelegate; private void label3_Click(object sender, EventArgs e) { } private void bCreateSP_Click(object sender, EventArgs e) { //Hier erstellen wir unseren Serialport und legen die Einstellungen fest serialPort = new SerialPort(cbPort.Text, Convert.ToInt32(cbBaudRate.Text), (Parity)Enum.Parse(typeof(Parity), cbParity.Text), Convert.ToInt16(cbDataBits.Text), (StopBits)Enum.Parse(typeof(StopBits), cbStopbits.Text)); serialPort.Handshake = (Handshake)Enum.Parse(typeof(Handshake), cbHandshake.Text); serialPort.RtsEnable = Boolean.Parse(cbRtsEnable.Text); serialPort.DtrEnable = Boolean.Parse(cbDtrEnable.Text); if (!serialPort.IsOpen) { serialPort.Open(); //Serialport öffnen } lbRecievedDelegate = new InvokeLB(InvokeLBRecieved); serialPort.DataReceived += new SerialDataReceivedEventHandler(serialPort_DataReceived); //DataRecieved Event abonnieren } void serialPort_DataReceived(object sender, SerialDataReceivedEventArgs e) { string RecievedLine = " "; while (RecievedLine != " ") { RecievedLine = serialPort.ReadLine(); lbRecieved.Invoke(lbRecievedDelegate, new object[] { RecievedLine }); } } void InvokeLBRecieved(string Data) { lbRecieved.Items.Add(Data); } private void Form1_Load(object sender, EventArgs e) { //Hier befüllen wir die Options-ComboBoxen foreach (var item in SerialPort.GetPortNames()) { cbPort.Items.Add(item); } cbPort.Text = cbPort.Items[0].ToString(); foreach (var item in Enum.GetNames(typeof(Parity))) { cbParity.Items.Add(item); } cbParity.Text = cbParity.Items[0].ToString(); foreach (var item in Enum.GetNames(typeof(StopBits))) { cbStopbits.Items.Add(item); } cbStopbits.Text = cbStopbits.Items[1].ToString(); cbBaudRate.Items.Add("110"); cbBaudRate.Items.Add("300"); cbBaudRate.Items.Add("600"); cbBaudRate.Items.Add("1200"); cbBaudRate.Items.Add("2400"); cbBaudRate.Items.Add("4800"); cbBaudRate.Items.Add("9600"); cbBaudRate.Items.Add("14400"); cbBaudRate.Items.Add("19200"); cbBaudRate.Items.Add("28800"); cbBaudRate.Items.Add("38400"); cbBaudRate.Items.Add("56000"); cbBaudRate.Items.Add("57600"); cbBaudRate.Items.Add("115200"); cbBaudRate.Text = cbBaudRate.Items[8].ToString(); cbDataBits.Items.Add("5"); cbDataBits.Items.Add("6"); cbDataBits.Items.Add("7"); cbDataBits.Items.Add("8"); cbDataBits.Items.Add("9"); cbDataBits.Text = "8"; foreach (var item in Enum.GetNames(typeof( Handshake))) { cbHandshake.Items.Add(item); } cbHandshake.Text = cbHandshake.Items[0].ToString(); cbDtrEnable.Items.Add("True"); cbDtrEnable.Items.Add("False"); cbDtrEnable.Text = "False"; cbRtsEnable.Items.Add("True"); cbRtsEnable.Items.Add("False"); cbRtsEnable.Text = "False"; } private void bSendData_Click(object sender, EventArgs e) { //Hier werden die eingebenen Daten über die serielle Schnittstelle gesendet serialPort.WriteLine(tbDataToSend.Text); lbSent.Items.Add(tbDataToSend.Text); tbDataToSend.Clear(); tbDataToSend.Focus(); } private void bClearSent_Click(object sender, EventArgs e) { } private void bClearRecieved_Click(object sender, EventArgs e) { lbRecieved.Items.Clear(); } } }