messen mit Arduino und VB 2010

Hallo Zusammen,

ich bin einen blutigen Anfänger :cry: :-[ , vor kurzem habe ich das arduino Lernpakete gekauft, und habe ich die BSP getestet, bis die Beispiele die mit Visual Basic programmiert sind.
Kann mir jemand Hilfen?? ich möchte einen gemessene Messwert mit Arduino in einem TextBox (VB2010) lesen/darstellen?

Vielen Dank im Voraus.

Fang doch mit etwas einfacheren an. Eine Ausgabe in der Konsole (zB. mit Putty oder Arduino IDE) reicht für den Anfang vollkommen aus.

Visual Basic Visualisierung und Arduino Programmierung sind 2 unterschiedliche Paare Schuhe. Wenn du scheinbar keine/kaum Kenntnisse in Visual Basic hast, warum möchtest du das zwingend nehmen? Alternative Java oder C#. Schau dir mal Processing an. Ist ähnlich wie Arduino gestrickt. Viele Tutorials sind auf den Arduino abgestimmt.

Wenn du dich nicht mit VB auskennst und du sowie etwas lernen musst, würde ich dir auch C# empfehlen. Ist angenehmer zu lesen und die Syntax ist ähnlich zu C++. Außerdem ist es die Hauptsprache für .NET und es gibt daher mehr Anleitungen dazu.

Der Trick ist hier dass du nicht nach "Arduino und C# verbinden" o.ä. suchst. Diesen Fehler machen einige Leute. Das sind zwei völlig getrennte Sachen die man unabhängig behandeln kann.
Ob dem auf dem Arduino etwas an den seriellen Monitor, an ein Terminal Programm oder eine .NET Anwendung schickst macht keinen Unterschied. Und die .NET Anwendung kümmert es auch nicht ob die Daten von einem Arduino oder sonst wo her kommen. Das ist für die einfach ein String, der eingelesen, eventuell geparst und angezeigt werden muss. Für die serielle Schnittstelle in .NET gibt es auch massig Anleitungen.

Das kann man also schon etwas in kleinere Aufgaben teilen, aber einem Anfänger würde ich sowas auch nicht empfehlen. Wenn es dir eher darum geht zu lernen die Daten irgendwo anzuzeigen als eine GUI Anwendung zu programmieren, gibt es bessere Alternativen.

Hallo sschultewolter,
Hallo Serenifly,

Vielen Dank für euren Antwort und Tipps, ich habe schon kleine Programme mit VB programmiert aber noch nie einen Signal direkt mit einem Mikrocontroller gefangen oder gemessen. und das möchte ich gerne können... bis jetzt ich kann erfolgreich mit VB2010 Arduino steuern (LEDs an- und ausschalten) aber die Werte als String in VB textBox oder Label ausgeben . klappt leider noch nicht. ich weiß das ist vielleicht nur eine "get" Zeile aber leider komme ich nicht drauf. :frowning:

Jungs bitte hilft mir

Dann schau dir halt mal die MSDN Doku der Serial Klasse an und dabei speziell den DataReceived Event Handler:

Das ist dort alles gut erklärt, mit Code Beispielen zu jeder Klasse und den meisten wichtigen Methoden.

Den String lesen kann man mit ReadExisting() wie da steht. Ich bevorzuge ReadLine(). Das liest bis zu einem LF+CR (also println() auf dem Arduino):

Hat den Vorteil, dass eben nicht alles eingelesen wird was gerade da ist, sondern immer eine komplette Zeile. Also nicht mal mehr oder mal weniger.

Das ist nicht die beste Lösung. Ich habe bei hohen Baudraten und vor allem vielen Daten festgestellt, dass der Event Handler nicht immer triggert, was das ganze sehr langsam macht. Die bessere Lösung ist ein Timer der die Schnittstelle ständig abfragt. Aber für dich reicht erst mal so.

Einen großen Fallstrick gibt es dabei, der da nicht dabei steht (weil es eine Konsolen Anwendung ist):
du kannst nicht aus einem fremden Thread auf das GUI Thread zugreifen. Deshalb muss man beim Zugriff auf GUI Komponenten über Serial immer mit BeginInvoke() arbeiten!

Am schönsten geht das mit einem anonymen delegate und MethodInvoker (das geht inzwischen auch in VB):

(bei letzterem Link ist viel Code im diese alte VB Limitation zu umgehen aber von Jay Riggs gibt es auch kurzen Code mit MethodInvoker. Steht aber nicht dabei ob das wirklich 100%ig geht)
Oder man verzichtet auf die anonyme Funktion und ruft eine normale Funktion auf wie auf MSDN gezeigt:

Der Vorteil einer anonymen Funktion ist, dass man sich die extra Methoden Definition spart und eine Funktion ohne Namen innerhalb von Invoke() definieren kann. In VB ging das aber früher nicht über mehrere Zeilen...