Kommando Interpreter

Gast #1234570
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
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
   }

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.