Hallo allerseits, ich habe das Problem, mich in die Funktionsweise von Visual Basic 2008 Express hineinzuversetzen und suche jemanden, der mir ein paar Schritte in die richtige Richtung zeigt. Vielleicht habe ich auch nur eine Denkblockade... Bisher habe ich hauptsächlich in Assembler (Mikrocontroller) und ein paar einfachen Basic-Dialekten programmiert und beherrsche das eigentlich auch ganz gut. Für ein aktuelles Projekt will ich Daten vom uC via RS232 auf den PC übertragen und dort auswerten. Die Wahl fiel aus verschiedenen Gründen auf VB2008, nicht zuletzt, weil es sehr einfach zu programmieren sein soll. Für den Einstieg habe ich mir zwei Bücher reingezogen und auch die Beispiele auf der mitgelieferten CD mal ausprobiert. Das hat soweit auch funktioniert. Jedoch stolpere ich immer wieder über Ereignisse, Multithreading und die Funktionsweise von VB allgemein. Bisher war ich es gewohnt, dass ein Programm sequentiell abgearbeitet wird und wenn gerade nichts zu tun war, dann lief das Programm in einer Endlosschleife. Sowas habe ich in VB nicht gefunden. Ich kann zwar auf Ereignisse reagieren, wenn ein Button angeklickt wurde oder die serielle Schnittstelle ein Zeichen empfängt. Soweit habe ich das auch verstanden. Doch wie lasse ich das "normale" Programm (main) ablaufen? Weiterhin ist für mich unverständlich, wieso eine Reaktion auf ein Button-Ereignis, z.B. Ausgabe in einer Listbox, klappt, die selbe Ausgabe auf ein DataReceived Event aber einen Fehler meldet, da es sich um einen anderen Thread handeln würde. Woher weiß ich, wann welcher Thread aktiv ist und wie kann ich das verhindern? Das sind erstmal genug Probleme und ich würde mich freuen, wenn mir hier jemand etwas unter die Arme greifen würde. Danke schon mal.
Interessant mir geht es genau entgegengesetzt Hochsprachen behersche ich wie aus dem FF. Versuche nun gerade mich mit uC auseinanderesetzen und muss mich daran gewöhnen nicht mehr in Threads, Events, ansynchronen Funktionsaufrufen, ... etc. zu denken :-) > Bisher war ich > es gewohnt, dass ein Programm sequentiell abgearbeitet wird und wenn > gerade nichts zu tun war, dann lief das Programm in einer > Endlosschleife. Im Grunde könntest du wenn du in VB.NET auch so weiterprogrammieren nur wäre nicht besonder klug. Dein Programm würde duch die Endlosschleife die CPU permanent arbeiten lassen obwohl es nichts zu tun gibt. Deswegen reagiert man auf Ereignisse und führt dann die Arbeit aus oder startet einen Thread dafür. > Doch wie lasse ich das "normale" Programm (main) ablaufen? Das läuft permanent im Hintergrund und wartet eben auf die Ereignisse und führt dann entsprechend wie du es programmiert hast Funktionen aus wenn diese eintreten. > Weiterhin ist > für mich unverständlich, wieso eine Reaktion auf ein Button-Ereignis, > z.B. Ausgabe in einer Listbox, klappt, die selbe Ausgabe auf ein > DataReceived Event aber einen Fehler meldet, da es sich um einen anderen > Thread handeln würde. Das liegt daran das für die Funktion die bei einem DataReceive Event ausgeführt wird ein separater Thread unsichtbar vor dir versteckt von VB gestartet wird um das Empfangen von Daten von der Oberfläche zu entkoppeln. Sonst würde z.B. eine Animation die auf der GUI läuft jedesmal stocken wenn deine Funktion irgendwas mit den Daten macht. Lösung: http://msdn.microsoft.com/en-us/library/ms171728.aspx Jens A: schrieb: > Woher weiß ich, wann welcher Thread aktiv ist und > wie kann ich das verhindern? Außer in einigen Sonderfällen wie Datereceive wird kein Thread automatisch erzeugt und es funktioniert wie bei dem Button. Außer du startest selber einen Thread der irgendwas tun soll.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.