Go Down

Topic: Serial String Analysieren und verwenden. (Read 515 times) previous topic - next topic

atc1441

Hallo, habe mir hier nun doch mal angemeldet da ich bei einem Problem nicht weiterkomme.

ich bekomme über die Serielle Schnittstelle einen String gesendet.

Dieser sieht wie folgt aus: schaltcode|01011000|21:28:15|

jetzt soll der Arduino überprüfen ob am Anfang  "schaltcode" steht und dann die 8 zahlen als werte verwenden.

Es gibt im Internet ein paar beispiele wie ein String mit dem Arduino empfangen wird aber danach einfach nur der String verglichen, habe da etwas mit versucht es zu meinen Bedürfnissen umzuschreiben aber es will einfach nicht hinhauen.

Ich muss ganz ehrlich sagen das ich Bascom mittlerweile irgendwie besser als Arduino finde nur ist bei Arduino der Upload einfacher und es läuft meistens auf jedem Board... naja nur mal so angemerkt...


hoffe ihr nehmt mir meine Rechtschreibung nicht übel :D


uwefed

C hat eine grauenhafte Stringverwaltung wenn Du Basic gewohnt bist.

Schreibe die erhaltenen Zeichen in ein Array und vergleiche das Array mit dem Referenzarray wo "schaltcode".
Mann kann sich das Leben auch leichter machen wenn man "schaltcode" Durch ein Zeichen abkürzt.
Grüße Uwe

atc1441

Danke für die Antwort.

Das problem mit dem einen zeichen ist, dass es der serielle port aus einem Router mit DD-WRT ist und dort auch noch jede menge anderer sachen rauskommen.
Mit dem schaltcode am anfang möchte ich verhindern das eine falsche Ausgabe verwendet wird.


atc1441

Habs  nun hinbekommen.
Bei den Code's die ich im Internet gefunden hatte wurde per strcmp immer nur der ganze string verglichen.
Ich habe es jetzt so gemacht das alles mit nullen aufgefüllt wird bis auf das "schaltcode".
Falls es irgendwann mal wem nutzt.


Code: [Select]
char Comp(char* This){

while(Serial.available() > 0) // Don't read unless
   // there you know there is data
{
   if(index < 36) // One less than the size of the array
   {
     inChar = Serial.read(); // Read a character
     inData[index] = inChar; // Store it
     index++; // Increment where to write next
     inData[index] = '\0'; // Null terminate the string
   }
}
ma=splitString(inData,'|',1);
for(int i=11;i<36;i++){
     inData[i]=0;
   }

if(strcmp(inData,"schaltcode|")  == 0){
   
   
   for(int i=0;i<36;i++){
     inData[i]=0;
   }
   index=0;
   return(0);

}
else{
   index=0;
   return(1);


}
}

Go Up