je suis sur un projet de train DCC format N
je cherche à récupéré la valeur d'un RFID dur port série dans un arduino NANO (port 0;1)
pour la lecture du port série pas de problème voici mon code :
char inData[64];
char inChar=-1;
void setup()
{
Serial.begin(9600);
}
void loop()
{
byte numBytesAvailable= Serial.available();
// if there is something to read
if (numBytesAvailable > 0){
// store everything into "inData"
int i;
for (i=0;i<numBytesAvailable;i++){
inChar= Serial.read();
inData[i] = inChar;
}
inData[i] = '\0';
Serial.print("Arduino Received: ");
Serial.println(inData);
}
maintenant je voudrais recupéré la valeur : inData
dans un tableau Array : num_train[0] = inData;
la variable num_train est declaré comme ca : char* num_train[3];
apres quand je lis les valeurs du tableau avec cette methode :
Ce que tu constates est normal.
Le tableau numtrain contient des pointeurs sur des tableaux de char.
A chaque fois tu fais l'affectation numtrain[x] = inData qui ne transfère pas de données puisque l'opération ne met en oeuvre que des pointeurs. Donc chaque élément de numtrain pointe sur inData. Le contenu de inData change à chaque réception de données donc tu relis la dernière valeur acquise.
Si tu veux conserver la valeur unique pour chaque train, il faut que numtrain soit un tableau de chaines de caractères. Il faudrait donc le définir ainsi:
char numtrain[3][64]
Et les affectations de valeurs de inData vers numtrain doivent se faire par strcpy ou strncpy
Merci pour ta réponse
Apres test je m’aperçois que la variable passe bien mais le problème c'est dans mon code de debug sur le port serie
il m'affiche toujours 8250 puis pares la valeur que je rentre dans un serial.read()
exemple :
je rentre la valeur 123 il va me marque 8250123
même si je met une variable type string : Serial.print(String (rfid));
et même si je met la variable inData : Serial.print(inData);
alors que la ligne :
après j'ai mis la fonction "clearAndHome()" juste avant mon debug serial ( mon bout code pour le debug)
**a savoir que ça fonctionne avec putty mais pas avec le terminal arduino**
Cordialement Philippe
Normal le "terminal" de l'IDE arduino n'émule pas une VT100. En fait le "terminal" Arduino est une hérésie.