Forum: Mikrocontroller und Digitale Elektronik Kommando Interpreter


von Matze (Gast)


Lesenswert?

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

von gast (Gast)


Lesenswert?

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

von Karl H. (kbuchegg)


Lesenswert?

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
Noch kein Account? Hier anmelden.