Hallo Leute, habe folgende Frage: Ich habe eine µC Platine mit einem Mega168, habe eine Kommunikation über PC(USB) -> UART(µC) hergestellt und möchte daten vom PC zum µC und dann über den I²C schicken. Das geht nun soweit. Nun mein Problem: Ich möchte die Daten vom PC folgendermaßen aussehen lassen. 1:AAA Erklärung: [1:] steht für die erste anzusprechende Karte, also Adresse des ersten I²C Slave(Hardware mäßig einstellbar auf dem Slave) [AAA] steht für die Adresse die mitgeschickt werden soll, um den Adressbaustein auf dem Slave anzusprechen, damit dieser den jeweiligen Port schaltet. Habe schon mal etwas gehört von den Befehlen Switch/Case, aber ich verstehe es irgendwie gar nicht. Was ich also letztendlich haben möchte:: Ich kann in einem Hyperterminal eingeben -> 1:010 (und mit Enter drücken wegschicken) Daraufhin soll der µC alles auflösen und dann per I²C dem Slave die Daten [010] schicken. Daraufhin schaltet der Adressbaustein auf dem Slave den Ausgang [010] worauf sich dann eine LED oder sonstiges schalten lässt. Ich hoffe mir kann jemand helfen:-) Ein kleiner Beispiel Code wäre auch sehr hilfreich denke ich.... Bin schon gespannt auf antworten oder viell besseren Vorschlägen, wie so etwas schneller und einfacher gehen kann. MfG Matze
Mit Kommandozeilen wär ich mal etwas vorsichtig... Oder zieh die Gardinen vorher zu ;) http://www.eff.org/deeplinks/2009/04/boston-college-prompt-commands-are-suspicious
Fang mal damit an, das komplette Kommando als 1 String zu empfangen. Also vom Start der Kommandozeile bis zum Enter. Der nächste Schritt ist dann diese kompletten String in einzelne Teile zu zerlegen. Bei dir wär das zb. zwischen den Teilstrings befindet sich ein ':' Danach wandelst du die einzelnen Strings gegebenenfalls in Zahlen um falls notwendig. Und dann kann der grosse Auftritt des switch/case erfolgen. Also: Dein µC empfängt diesen String hier "1:010" du zerlegst diesen String zunächst mal in die Einzelteile char Command[20]; char Value[100]; wobei Command "1" enthält, während Value "010" enthält. Da deine Kommando auch numerisch ist, wandelst du erst mal alles in Zahlen um (zb. mit atoi) numCommand sei dann 1 numValue sei dann 10 und dann der switch/case
1 | switch( numCommand ) |
2 | {
|
3 | case 1: |
4 | // send Value to Slave
|
5 | break; |
6 | |
7 | case 2: |
8 | // get value from Slave
|
9 | break; |
10 | |
11 | default:
|
12 | // unknown command
|
13 | }
|
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.