Découpage message sur arduino

A voir également:Découpage message sur arduinoMessage instagram pc ✓ - Forum - Instagram Message d'absence outlook - Conseils pratiques - Microsoft Outlook Diff message sms ✓ - Forum - IPhone Envoyer un message en inconnu ✓ - Forum - Mobile Message d'absence thunderbird - Conseils pratiques - Messagerie électronique

Bonjour

j'espère que vous allez bien
je voulais savoir si vous pouvez m'aidé
je reçoit se message "X00/00/00 04:45:03 1234 000 B J 019074 A N 00 G 00.00" par rs 232 sur arduino et je voulais découpé à chaque espace " " pour récupéré quelque partie après l'espace pour les imprimés sur un écran lcd16/2

Merci à vous

Forum

A voir également:Découpage message sur arduinoMessage instagram pc ✓ - Forum - Instagram Message d'absence outlook - Conseils pratiques - Microsoft Outlook Diff message sms ✓ - Forum - IPhone Envoyer un message en inconnu ✓ - Forum - Mobile Message d'absence thunderbird - Conseils pratiques - Messagerie électronique

Web: www.shapebootstrap.net

2 réponses

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

Salut kamal3018,

Vois la fonction standard du C

strtok()
:

http://www.cplusplus.com/reference/cstring/strtok/


Dal

Reply

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

re
moi j'ai ce code



#include <LiquidCrystal.h>
// chaine de caractères pour contenir les données brutes
String inputString = "";
const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
// pour savoir si la chaine est complète
boolean stringComplete = false;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
int cnt = 0; // nombre de données découpées
String data[10]; // stockage des données découpées

void setup() {
lcd.begin(16, 2);
Serial.begin(9600);
lcd.setCursor(0,0);
lcd.print(" Scanner un ANT");
lcd.setCursor(0,1);
lcd.print(" Scan een ANT");
}

void loop() {
// si le message est complet
if (stringComplete) {
// on le découpe à chaque espace ' '
// et on stocke les bouts dans un tableau
splitString(inputString, ' ');

// appel des fonctions selon le premier sélecteur
if (data[0] == "X00/00/00") {
light(data[1].toInt(), data[2].toInt());
}


// vide la chaine
inputString = "";
stringComplete = false;
}
}

// serialEvent()
void serialEvent() {
while (Serial.available()) {

// récupérer le prochain octet (byte ou char) et l'enlever
char inChar = (char)Serial.read();
// concaténation des octets reçus
inputString += inChar;


// caractère de fin pour notre chaine
if (inChar == '\n') {
stringComplete = true;
}
}
}

// méthode pour découper le message avec un séparateur (ou "parser")
void splitString(String message, char separator) {
int index = 0;
cnt = 0;
do {
index = message.indexOf(separator);
// s'il y a bien un caractère séparateur
if(index != 0) {
// on découpe la chaine et on stocke le bout dans le tableau
data[cnt] = message.substring(0,index);
cnt++;
// on enlève du message le bout stocké
message = message.substring(index+1, message.length());
} else {
// après le dernier espace
// on s'assure que la chaine n'est pas vide
if(message.length() > 0) {
data[cnt] = message.substring(0,index); // dernier bout
cnt++;
}
}
} while(index >=0); // tant qu'il y a bien un séparateur dans la chaine
}

// fonction personnalisable
void light(int pin, int brightness) {


Serial.print("Tram ");
Serial.print(pin);
Serial.print(" POST ");
Serial.println(brightness);

//analogWrite(pin,brightness);
}


en fait je reçois ce message à chaque passage d'un tram "X00/00/00 04:45:03 1234 000 B J 019074 A N 00 G 00.00" et je doit afficher ses information sur un écran lcd 16/2

je recouper 1234,B,A,N,G

et je les imprime par exemple : Tram 1234 Post B
Ant A MdF N ED G

Merci à vous

Reply
réponses:
  • auteur

  • auteur

  • auteur

  • auteur

  • auteur

  • auteur

  • auteur

  • auteur

  • auteur

  • auteur

  • auteur

  • auteur

  • auteur

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed