mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Kommando Interpreter


Autor: Matze (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mit Kommandozeilen wär ich mal etwas vorsichtig...
Oder zieh die Gardinen vorher zu ;)


http://www.eff.org/deeplinks/2009/04/boston-colleg...

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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

   switch( numCommand )
   {
     case 1:
       // send Value to Slave
       break;

     case 2:
       // get value from Slave
       break;

     default:
       // unknown command
   }

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.