Hallo ![]()
wie kann man z.B. die messungen die Arduino programm macht während der messung, direkt in Visual studio c# als graphik (auswertungsgraph) anzeigen lassen?
Gibt es ein beispiel die man sich anschauen kann?
Hallo ![]()
wie kann man z.B. die messungen die Arduino programm macht während der messung, direkt in Visual studio c# als graphik (auswertungsgraph) anzeigen lassen?
Gibt es ein beispiel die man sich anschauen kann?
you can transfer data from the arduino to C# using serial communications (text and Binary see serial input basics), Ethernet or WiFi (UDP/TCP), etc and display using the C# Chart component
how much data per second do you wish to display?
I will every 5 second by continue messurmed take continue data to display
for example like ther
but for pressure messuremed Drucksensor
if your data update rate is low serial communication is probably the simplest
for an example using the Visual Studio SerialPort components see C# terminal emulator
if you do a web search for C# chart component you will get plenty of links
as you receive the data parse it (integer or floating point data) and plot it using a chart
I write in Visual C# this code for chart :
but we can i messured pressure from arduino seriel monitor in visual studio c# ?
private void chart1_Click(object sender, EventArgs e)
{
//while (port.IsOpen)
//{
//var sp = (SerialPort)sender;
//string appendedText = sp.ReadExisting();
//serialMonitor.Invoke(new Action(() =>
{
//serialMonitor.AppendText(appendedText);
// serialMonitor.ScrollToCaret();
//}));
this.chart1.Series["Druck_FL1"].Points.AddXY("Zeit", 250);
this.chart1.Series["Druck_FL2"].Points.AddXY("Zeit", 250);
}
}
[visualc# druckanzeige chart.PNG](http://visualc# druckanzeige chart.PNG)
Thanks for help
picture from visual c#

Hallo
Na ja , wenn Du irgendwo im Arduino Program Seriel.print(pressure) stehen hast geht das ja zunächst mal auf die Serielle Schnittstelle als Textzeichen. Ich würde das erst mal auch so lassen weil du das bessert lesen kannst. In Visualstudio musst Du jetzt ein Programm schreiben was die Daten über die COM Schnitstelle einliest und der Grafik zur verfügung stellt. Wie man unter Visualstudio C# das Proramm dann schreibt musst Du dir mal da ansehen, gehört ja nicht hier hin. Ich kenne das nur von Visual Basic da gibts ein Timer Ereigniss in dem Du dann im Hintergrung die Schnittstelle einlesen kann. Da gibts aber auch Beispiele zu.
Heinz
kennst du eine seite mit so ein beispiel?, weil suche schon in youtoup und google, leider nichts passendes gefunden.
MSDN kennst du nicht?
Aber daran denken dass du nicht aus anderen Threads auf das GUI Thread zugreifen kannst. Die Beispiele da behandeln das nicht weil es Konsolenanwendungen sind:
(die maschinelle Übersetzung ist da aber ziemlich grauenhaft)
Statt ReadExisting() ist hier auch ReadLine() sehr gut um bis zum Zeilen-Ende zu lesen
Danke ![]()
folgendes funktioniert mit dem Code:
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
port.PortName = serialPort_ComboBox.Text;
}
private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
if (port.IsOpen)
{
serialMonitor.Text = port.ReadLine();
}
}
private void DataReceivedHandler(object sender, SerialDataReceivedEventArgs e)
{
while (port.IsOpen)
{
var sp = (SerialPort)sender;
string appendedText = sp.ReadExisting();
serialMonitor.Invoke(new Action(() =>
{
serialMonitor.AppendText(appendedText);
serialMonitor.ScrollToCaret();
}));
}
}
Ich möchte gernne anstatt in texbox werte angezeigt zu bekommen (siehe bild), ein graphen durch chart erstellen. Leider weiß ich nicht wie man das in visual c# macht?
Was muss ich für den chart anders hinschreiben oder machen?
private void chart1_Click(object sender, EventArgs e)
{
}

Die Chart Klasse ist recht kompliziert. Es ist aber völlig unverständlich wieso du dazu keine Anleitungen findest
z.B.:
http://www.just-about.net/mschart-grundlagen
Generell fügt man einfach jedesmal wenn man Daten erhält neue Punkte hinzu
Hallo,
müssen die Daten denn online dargestellt werden. Du kannst auch mittels copy & past den Inhalt vom Monitor kopieren und in excell einfügen.
Wenn Du ein Terminal Programm findest das die Daten in eine Datei im CSV Format schreiben kann wird es noch etwas einfacher.
Hallo,
das mit kopieren und einfügen in excel hatte ich auch bisjetzt so gemacht.
Nur ich möchte gerne mit visual studio chart, live durch lieniendarstzellung die veränderung der beiden drucksensoren sehen, ob sich da was verändert. Also live
Bin leider nur soweit gekommen und weiß nicht weiter, ist es überhaupt richtig? weil will ja nur die daten von seriellen monitor als Graphik kontinuierlich laufen lassen
private void chart1_Click(object sender, EventArgs e)
{
while (port.IsOpen)
{
var sp = (SerialPort)sender;
string appendedText = sp.ReadExisting();
serialMonitor.Invoke(new Action(() =>
{
serialMonitor.AppendText(appendedText);
serialMonitor.ScrollToCaret();
}));
InitializeComponent();
chart1.Titles.Add("Regelung Über-und Unterdruck");
chart1.Series["Druck1"].Points.AddXY("time","serialMonitor");
chart1.Series["Druck2"].Points.AddXY("time", "serialMonitor");
chart1.Series["Druck3].Points.AddXY("time", "serialMonitor");
}
}
Wieso willst du etwas tun wenn die Grafik angeclickt wird? Das ist schon mal grundlegend Unsinn. Es gibt einen Event Handler der aufgerufen wird wenn serielle Daten ankommen. Das reicht i.d.R. aus
In dem Fall ist sender auch sicherlich kein SerialPort Objekt!
Das mit der while-Schleife kannst du dir auch sparen
Bei AddXY() gibt man die Zahlen an die man darstellen will. Das sollte eigentlich offensichtlich sein:
Wieso und wann man Invoke braucht hast du auch noch nicht verstanden. Wenn man wirklich schon in im GUI rumglickt ist man auch im gleichen Thread