Hallo Leute, ich habe in VB 2010 Express ein Form entwickelt auf dem sich ein Start- und ein Stop-Button zur Aktivierung bzw Deaktivierung eines µC befinden. Verbunden ist der µC mit dem PC über eine RS232-Schnittstelle. Meine Frage ist nun, wie ich den µC per Klick starten bzw stoppen kann? Hat jemand schon mal so mit einem µC kommuniziert? Vielen Dank und schöne Grüße Chris
christb schrieb: > Hallo Leute, > > ich habe in VB 2010 Express ein Form entwickelt auf dem sich ein Start- > und ein Stop-Button zur Aktivierung bzw Deaktivierung eines µC befinden. > Verbunden ist der µC mit dem PC über eine RS232-Schnittstelle. > > Meine Frage ist nun, wie ich den µC per Klick starten bzw stoppen kann? Was verstehst du darunter, den µC zu "starten" oder "stoppen"? Man kann einen µC nicht einfach so anhalten, außer vielleicht per Debugging. Ich vermute, du willst irgendeinen Teil deines Programms ein- und ausschalten können. > Hat jemand schon mal so mit einem µC kommuniziert? Deine Frage ist nicht so ganz präzise. Was willst du eigentlich wissen? Wie man ein serielles Protokoll definiert? Wie man mit VB serielle Kommunikation macht? Das hat ja alles mit irgendwelchen Buttons und mit dem, was der µC als Reaktion macht, erstmal gar nichts zu tun.
Hallo Rolf, danke für deine schnelle Antwort! Auf meinem µC befindet sich bereits das von mir erstellte C-Programm! Jetzt möchte ich dieses Programm quasi per Button-Klick starten (debuggen). Dazu muss ich irgendwie eine Verbindung mit dem µC herstellen. Und genau vor diesem Problem steh ich gerade, wie lässt sich das am Besten realisieren? Mit dem Stop-Button Klick, soll nur das auf dem µC laufende Programm abgebrochen werden! Du hast recht, dafür müsste ich wahrscheinlich grundsätzlich erstmal wissen, wie man mit VB 2010 Express eine serielle Kommunikation aufstellt? Als Schnittstelle verwende ich einen RS232-Anschluss auf COM1! Sorry, aber ich bin absoluter VB-Anfänger! Gruß Chris
Unter Visual c# 2010 ist eine serielle Schnittstelle zumindest kein Problem; wenn ich mich richtig erinnere, gab es da sogar ein entsprechendes Control für. Du scheinst da ein Verständnisproblem zu haben: "den Mikrocontroller stoppen" kannst Du schon - indem Du die entsprechende Clock deaktivierst (im einfachsten Fall: Quarz abklemmen - noch einfacher: Betriebsspannung aus). Nachteil: Die serielle Verbindung ist auch tot (Selbst wenn die UART-Hardware eine separat (de-)aktivierbare Clock hat, so wird zumindest die Verarbeitung Deines Datenstroms fehlschlagen - die Recheneinheit ist ja aus. Alternative: Den gewünschten Code nur ausführen, wenn ein bestimmtes z. B. Zeichen per UART empfangen wurde, und Ausführung wieder stoppen nach Empfang eines anderen Zeichens.
christb schrieb: > Hallo Rolf, > > danke für deine schnelle Antwort! > > Auf meinem µC befindet sich bereits das von mir erstellte C-Programm! > Jetzt möchte ich dieses Programm quasi per Button-Klick starten > (debuggen). was heißt 'starten'? Ein µC arbeitet immer sein Programm ab. Der einzige Fall, wann er das nicht tut ist, wenn man ihm die Stromversorung abdreht. Allerdings reagiert ein stromloser µC nicht auf irgendeine UART. Den so gesehen ist der ja in dem Moment ohne Strom einfach nur totes Silizium. > Dazu muss ich irgendwie eine Verbindung mit dem µC herstellen. Und genau > vor diesem Problem steh ich gerade, wie lässt sich das am Besten > realisieren? > > Mit dem Stop-Button Klick, soll nur das auf dem µC laufende Programm > abgebrochen werden! Du musst dich von der Vorstellung lösen, dass da irgendwas 'gestartet' oder 'gestoppt' wird. Auf deinem µC läuft ein Programm. Punkt. Dieses Programm reagiert auf Befehle, die über die UART reinkommen. Einer dieser Befehle kann jetzt sein, eine bestimmte Funktionalität auszuführen oder eben sie nicht auszuführen. > Du hast recht, dafür müsste ich wahrscheinlich grundsätzlich erstmal > wissen, wie man mit VB 2010 Express eine serielle Kommunikation > aufstellt? Das wäre sicher nicht schlecht. Es gibt Unmengen von Web-Seiten da draussen, die einem das erklären. Aus Sicht des µC allerdings ist das irrelevant. Denn den µC kümmert es nicht, wer ihm da jetzt Kommandos schickt. Ob das ein Programm ist oder ob das ein Terminal ist, auf dem ein Mensch die Kommandos eintippt. Den µC interessiert nur, welche Bytes über die UART hereinkommen. Die wertet er in seinem Programm aus, egal wer am anderen Ende der Leitung sitzt.
Hallo zusammen, das heißt quasi, das ich nur ein Zeichen senden kann um z.B. einen Timer zu starten? Bzw um ihn zu stoppen, seh ich das richtig? Vielen Dank für eure Ratschläge und Hilfen. Gruß Chris
christb schrieb: > Hallo zusammen, > > das heißt quasi, das ich nur ein Zeichen senden kann um z.B. einen Timer > zu starten? > Bzw um ihn zu stoppen, seh ich das richtig? So kann man das ausdrücken. Ja. Ob bei diesem Zeichen dann der Timer tatsächlich gestartet wird oder nicht, entscheidet das Programm welches auf dem µC läuft.
1 | int main() |
2 | {
|
3 | ....
|
4 | |
5 | while( 1 ) { // die übliche Hauptschleife |
6 | |
7 | if( Zeichen von der UART da ) { |
8 | if( Zeichen == 's' ) |
9 | Starte den Timer |
10 | |
11 | else if( Zeichen == 't' ) |
12 | Stoppe den Timer |
13 | |
14 | else if( Zeichen == 'A' ) |
15 | erste LED einschalten |
16 | |
17 | else if( Zeichen == 'a' ) |
18 | erste LED ausschalten |
19 | |
20 | else if( Zeichen == 'R' ) |
21 | Sirene einschalten |
22 | |
23 | else if( Zeichen == 'r' ) |
24 | Sirene ausschalten |
25 | }
|
26 | |
27 | mach was es sonst noch so in jedem Durchgang zu tun gibt |
28 | }
|
Und dein Programm auf dem PC schickt über die UART zb das Zeichen 'A', wenn der Benutzer den Button "LED" hineindrückt (oder in eine Checkbox ein Häkchen hineinmacht). Und wenn der Benutzer den Button wieder rausdrückt (oder eben das Häkchen wieder wegmacht), dann schickt dein Programm ein 'a' über die UART.
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.