Pages: [1]   Go Down
Author Topic: Hilfe beim senden von Klartextbefehlen über Seriell  (Read 600 times)
0 Members and 1 Guest are viewing this topic.
0
Offline Offline
Jr. Member
**
Karma: 0
Posts: 77
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo liebe mitarduiniere,
ich habe diesen Code von einem Freund gekriegt und möchte gerne mit ihm arbeiten.
Mit ihm kann man über das Serial Display Klartextbefehle schicken.
Diese beginnen mit "/", dann dem Namen eines Befehls (4zeichen) und dann kann man 3 4-Stellige werte übermitteln.
Zum Abschluss folgt ein"-" also zum Beispiel /prog100020003000-
Über das Serielle Display diese Befehle zu schicken funktioniert super und sie werden auch weiterverarbeitet, doch wenn ich sie von einem anderen Arduino schicken, passiert nichts, obwohl sie auf dem Seriellen Display ausgelesen exakt gleich aussehen.
Hier ist der Code zum Auslesen der Befehle:


char    receivedString[17];
char    receivedCommand[5];
char    receivedParameter1[5];
char    receivedParameter2[5];
char    receivedParameter3[5];

boolean commandCatch          = false;
int     commandLength         = 0;
void setup()
{
  Serial.begin(4800);
  Serial.println("EXECUTING...");
  Serial.println("COMMANDS HAVE TO CONSIST OF 8 CHARACTERS.");
  Serial.println("THERE HAS TO BE AN / IN FRONT OF EVERY COMMAND AND A - AFTER EVERY COMMAND.");
}


void loop()
{
 if(Serial.available() > 0)
      {
        int receivedByte = Serial.read();
        char receivedChar = char(receivedByte);   
        processReceivedChar(receivedChar);




}
void executeCommand()
{
  int receivedValue1 = 0;
  int receivedValue2 = 0;
  int receivedValue3 = 0;

  for(int i = 0; i<4; i++)
  {
    switch(i)
    {
    case 0:
      {
        receivedValue1 = receivedValue1 + (int(receivedParameter1)-48)*1000;
        receivedValue2 = receivedValue2 + (int(receivedParameter2)-48)*1000;
        receivedValue3 = receivedValue3 + (int(receivedParameter3)-48)*1000;
        break;
      }
    case 1:
      {
        receivedValue1 = receivedValue1 + (int(receivedParameter1)-48)*100;
        receivedValue2 = receivedValue2 + (int(receivedParameter2)-48)*100;
        receivedValue3 = receivedValue3 + (int(receivedParameter3)-48)*100;
        break;
      }
    case 2:
      {
        receivedValue1 = receivedValue1 + (int(receivedParameter1)-48)*10;
        receivedValue2 = receivedValue2 + (int(receivedParameter2)-48)*10;
        receivedValue3 = receivedValue3 + (int(receivedParameter3)-48)*10;
        break;
      }
    case 3:
      {
        receivedValue1 = receivedValue1 + (int(receivedParameter1)-48);
        receivedValue2 = receivedValue2 + (int(receivedParameter2)-48);
        receivedValue3 = receivedValue3 + (int(receivedParameter3)-48);
        break;
      }
    }       
  }

  if(strcmp(receivedCommand,"setP")==0) //Richtung
  {

    R = map(receivedValue1,1000,2023,0,1023);
    G = map(receivedValue2,1000,2023,0,1023);
    B = map(receivedValue3,1000,2023,0,1023);
  }
  if(strcmp(receivedCommand,"prog")==0) //Richtung
  {

    Programm = receivedValue1-1000;

  }
}

(es sind eventuell noch teile meines Hinzugefügten Codes dabei, auf jeden Fall werden die Werte je nach Befehl in receivedValue[1,2,3]
gespeichert, es funktioniert auch wunderbar)

und hier ist mein Code zum senden von Befehlen auf dem anderen Arduino.

      {
        mySerial.print("/setP");
        mySerial.print(R);
        mySerial.print(G);
        mySerial.print(B);
        mySerial.println("-");
      }

R,G,B sind ints von 1000-2032 und auf wenn ich mir anschaue, was er da sendet sieht es auch exact so aus wie die Befehle die ich Manuell sende und funktionieren.
Wenn mir jemand helfen kann wäre ich sehr dankbar :)




Logged

0
Offline Offline
Jr. Member
**
Karma: 0
Posts: 77
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

achja,
mySerial ist mein "Virtueller Serieller Schnittpunkt" der auch bei 4600 sendet.
Logged

CH
Offline Offline
God Member
*****
Karma: 19
Posts: 703
Book Writer "Arduino Praxiseinstieg"
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
doch wenn ich sie von einem anderen Arduino schicken, passiert nichts
Wie hast du die beiden seriellen Schnittstellen (Sender-Arduino und Empfänger-Arduino) miteinander verbunden?
Logged

0
Offline Offline
Jr. Member
**
Karma: 0
Posts: 77
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Rx an Tx und umgekehrt.
Ich habe es allerdings auch umgekehrt versucht, nur um sicherzugehen, aber es funktioniert nicht.
Logged

Pages: [1]   Go Up
Jump to: