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; //serielleSchnittstelle
using System.Collections; //ArrayListe
using System.Threading; //Delagation invoke (Threadübergreifend)
using System.Timers; //Timer


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


SerialPort Schnittstelle = new SerialPort("COM1"); //Deklaration


byte[] daten = new byte [3];








private void Form1_Load(object sender, EventArgs e)
{
}

















private void buttonConnect_Click(object sender, EventArgs e)
{ //Festlegung Parameter=

Schnittstelle.BaudRate = 9600;
Schnittstelle.Parity = Parity.None;
Schnittstelle.DataBits = 8;
Schnittstelle.StopBits = StopBits.One;
Schnittstelle.Handshake = Handshake.None;
Schnittstelle.ReadTimeout = 500;
Schnittstelle.WriteTimeout = 500;

try
{
Schnittstelle.Open(); //Serialport öffnen

if (Schnittstelle.IsOpen)
{
buttonConnect.Enabled = false; //Connect_Button blass
buttonConnect.Text = "Erfolgreich";
}
}
catch
{
MessageBox.Show("Keine Verbindung möglich", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}



Schnittstelle.DataReceived += new SerialDataReceivedEventHandler(Nebenthread); // Abo_Event abonnieren

}





void Nebenthread(object sender, SerialDataReceivedEventArgs e) //Diese Methode wird ausgelöst. Wurde vorher abonniert
{
//string serialIn = Schnittstelle.ReadLine();

//listBox1.Invoke(new EventHandler(delegate { listBox1.Items.Add(serialIn); }));



this.textBox1.Text = Schnittstelle.ReadExisting();

}



















private void buttonDisconnect_Click(object sender, EventArgs e)
{
Schnittstelle.Close();
buttonConnect.Enabled = true;
buttonConnect.Text = "Connect";
}

private void buttonSenden_Click(object sender, EventArgs e)
{
daten[0] = 1;
daten[1] = 2;

if (Schnittstelle.IsOpen)
{
Schnittstelle.Write(daten, 0, daten.Length); //Daten senden
// oder//Schnittstelle.Write(daten, 0, 2);
}
}


private void Form1_FormClosed(object sender, FormClosedEventArgs e) // Anwendungen schließen = Verbindung trennen
{
Schnittstelle.Close();
}

}
}