Loading...
Pages: [1]   Go Down
Author Topic: Serial Communication  (Read 311 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 3
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo,
ich habe gerade ein ziemlich großes Problem mit einer einfachen Serial Communication.
Ich muss nämlich ein Schulprojekt mit Arduino machen und hab leider überhaupt keine Vorkenntnisse smiley-sad
Als Idee hab ich mir ein einfaches Frage/Statement -> Antwort Prinzip gedacht
Also das ich etwas in die Zeile beim Serial Monitor reinschreib und das jenachdem was da steht die dazupassende Antwort
rauskommt.

Quote
void setup()                   
{
  Serial.begin(9600);         
 
}

void loop(){
  if(Serial.read()==("Frage/Statement"){
  Serial.println("Antwort");
}
delay(500);
}

Leider funktioniert das überhaupt nicht smiley-sad
Tut mir Leid das ich einfach so reinplatze aber ich bekomm einfach, obwohl ich dem Internet meine Seele verkauft hab, nirgends eine passende Antwort...
Wer sehr nett wenn mir jemand weiterhelfen könnte...
Liebe Grüße
Logged

Forum Moderator
BZ (I)
Offline Offline
Brattain Member
*****
Karma: 172
Posts: 16128
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Serial.read() liest immer nur 1 Zeichen.
In C gibt es keine Strings wie in anderen Programmiersprachen. Darum kannst Du nicht einfach 2 Strings vergleichen.
Informiere Dich über Strings in C. Wenn Du Strings Verwendest läuft das RAM schnell voll und der Arduino blockiert.
Grüße Uwe
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 3
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Danke für die Antwort aber ich weiß leider immernoch nich wie ich dieses Problem angehen kann
Logged

Germany
Offline Offline
Edison Member
*
Karma: 28
Posts: 1583
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
Also das ich etwas in die Zeile beim Serial Monitor reinschreib und das jenachdem was da steht die dazupassende Antwort
rauskommt.


Wenn du selbst definieren kannst was rein und raus geht, ist es einfach:

Am einfachsten sind einbuchstabige Kommandos, z.B. :

v - Version
? - Liste aller Kommandos
m - aktuelle Zeit (millis() )
s - Sekunden seit Start

Am schönsten hierfür in c ist ein switch:
Code:
void loop ()
{
   int q = Serial.read();
   switch (q) {
    case -1 : return;  // keine Eingabe
    case 'v' : Serial.println(" Version 0.0"); break;
    // ... usw
    case 'm' : Serial.println(millis()); break;
    default: break;  // alternativ: Fehlermeldung
   }
}

break; ( oder return; wie bei -1 ) nicht vergessen
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 3
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

habs am Ende doch nich hinbekommen und mach mein Projekt über was anderes... smiley-sad
Trotzdem dankeschön für alle Antworten (:
Logged

Germany S-H
Offline Offline
God Member
*****
Karma: 35
Posts: 948
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

habs am Ende doch nich hinbekommen und mach mein Projekt über was anderes... smiley-sad
Trotzdem dankeschön für alle Antworten (:

Wobei es über "Kommandos von der seriellen Schnittstelle auswerten" natürlich nicht nur Antworten unter Deiner Frage gibt, sondern auch Antworten zu ganz vielen anderen Postings und Fragen hier im Forum. Quasi dieselben Fragen kommen ja mehrmals pro Monat immer wieder vor. Und oft gibt es Antworten. Manchmal sogar mit Beispielcode.

Z.B. von mir in http://arduino.cc/forum/index.php/topic,136027.0.html
Reply #3 on: December 08, 2012, 04:33:25 PM »

Oder von mir zu einer noch spezielleren Auswertung in http://arduino.cc/forum/index.php/topic,137669.0.html
Reply #4 on: December 16, 2012, 07:58:37 PM

Es ist in diesem Forum nicht verboten, auch "alte" Threads und "alte" Postings zu lesen, wenn es um ein Thema geht, zu dem schon zig alte Fragen in der Messagebase des Forums existieren.
Logged

Pages: [1]   Go Up
Print
 
Jump to: