Hallo,
bin jetzt ein paar Tage damit beschäftigt, eine C# Form zu schreiben. Einige Sachen gehen bereits auch ohne Bücher und Tutorials recht gut. Doch reicht mein Kenntnisstand teils doch nicht aus.
Kennt jemand ein geeignetes Buch, welches er empfehlen kann? Mich interessiert kein allgemeines Buch über C#, bei dem mein eigentlicher Einsatzzweck viel zu kurz kommt.
Mir geht es hauptsächlich um das Visualisierung und Steuern von Mikrokontrollern. Das Steuern ist hierbei eher weniger das Problem.
Habe jedoch Probleme mit dem Empfangen von Strings, folgender Sketch funktioniert bis auf das empfangen von Strings. Ob das nun guter Programmierstil ist, wage ich zu bezweifeln, da einen großteil VS selber anlegt.
Das Problem hier liegt in der letzen Funktion, diese führt zu einem Abbruch!
Ein Ausnahmefehler des Typs "System.InvalidOperationException" ist in System.Windows.Forms.dll aufgetreten.
Zusätzliche Informationen: Ungültiger threadübergreifender Vorgang: Der Zugriff auf das Steuerelement label1 erfolgte von einem anderen Thread als dem Thread, für den es erstellt wurde.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO.Ports; // Serial Port
namespace WindowsFormsApplication4
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
listBox1.Items.Clear();
foreach (string item in SerialPort.GetPortNames())
{
listBox1.Items.Add(item);
}
}
private void setEnableInputs()
{
if (serialPort1.IsOpen)
{
listBox1.Enabled = false;
trackBar1.Enabled = true;
trackBar2.Enabled = true;
trackBar3.Enabled = true;
trackBar4.Enabled = true;
trackBar5.Enabled = true;
trackBar5.Enabled = true;
trackBar6.Enabled = true;
trackBar7.Enabled = true;
trackBar8.Enabled = true;
buttonConnect.Enabled = false;
buttonDisconnect.Enabled = true;
}
else
{
listBox1.Enabled = true;
trackBar1.Enabled = false;
trackBar2.Enabled = false;
trackBar3.Enabled = false;
trackBar4.Enabled = false;
trackBar5.Enabled = false;
trackBar5.Enabled = false;
trackBar6.Enabled = false;
trackBar7.Enabled = false;
trackBar8.Enabled = false;
buttonConnect.Enabled = true;
buttonDisconnect.Enabled = false;
}
}
private void sendData(int id, int value)
{
serialPort1.WriteLine(Convert.ToString(value + (id * 256)));
labelSendData.Text = Convert.ToString(value + (id * 256), 16);
}
private void buttonConnect_Click(object sender, EventArgs e)
{
serialPort1.PortName = listBox1.Text;
serialPort1.BaudRate = 115200;
serialPort1.Open();
setEnableInputs();
}
private void buttonDisconnect_Click(object sender, EventArgs e)
{
serialPort1.Close();
setEnableInputs();
}
private void trackBar1_Scroll(object sender, EventArgs e)
{
int id = 0;
int value = trackBar1.Value;
sendData(id, value);
}
private void trackBar2_Scroll(object sender, EventArgs e)
{
int id = 1;
int value = trackBar2.Value;
sendData(id, value);
}
private void trackBar3_Scroll(object sender, EventArgs e)
{
int id = 2;
int value = trackBar3.Value;
sendData(id, value);
}
private void trackBar4_Scroll(object sender, EventArgs e)
{
int id = 3;
int value = trackBar4.Value;
sendData(id, value);
}
private void trackBar5_Scroll(object sender, EventArgs e)
{
int id = 4;
int value = trackBar5.Value;
sendData(id, value);
}
private void trackBar6_Scroll(object sender, EventArgs e)
{
int id = 5;
int value = trackBar6.Value;
sendData(id, value);
}
private void trackBar7_Scroll(object sender, EventArgs e)
{
int id = 6;
int value = trackBar7.Value;
sendData(id, value);
}
private void trackBar8_Scroll(object sender, EventArgs e)
{
int id = 7;
int value = trackBar1.Value;
sendData(id, value);
}
private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
label1.Text = serialPort1.ReadLine();
}
}
}
