Les chaînes de caractères
Du texte, toujours du texte...
. Par : Thierry
Vous répondez à :
Bonjour. Je n’ai pas utilisé cette classe String maintenant présente par défaut avec l’IDE actuel. La contrainte du caractère de fin de chaîne existe toujours puisqu’en interne, la classe utilise un banal char * pour stocker son texte. Mais elle est complètement masquée par la classe qui se débrouille pour gérer ce zéro. Elle utilise en plus un entier qui donne la longueur de la chaîne.
17 Messages
-
Les chaînes de caractères 25 octobre 2015 17:25, par DDEFF
Bravo Thierry !
Toujours aussi clair.
Peux-tu un peu développer le "F" dans Serial.println(F(...)) ?-
Merci :). J’ai revu cette partie. Dis moi ce que tu en penses...
-
-
Les chaînes de caractères 27 octobre 2015 16:16, par DDEFF
Parfait !
Et ce qu’il y a de bien avec ce genre d’article, c’est qu’on a tout au même endroit.
Si je me pose une question sur une chaîne de caractères, c’est là que j’irai, au lieu de piocher des bribes à gauche ou a droite.
Merci -
Les chaînes de caractères 10 novembre 2015 01:00, par jac56
Très bon article.
Un complément proposé :
il n’est pas aisé de trouver dans la documentation Arduino toutes les informations utiles pour éviter de saturer la mémoire sram (la mémoire de stockage des variables du programme, dont les chaînes de caractères, notamment, très grosses consommatrices de cette mémoire).
A propos de l’utilisation de la mémoire programme pour stocker des données, voici un (vieux) lien qui donne des informations complémentaires :
http://www.nongnu.org/avr-libc/user...
(déclaration et récupération des données en ’progmem’ dans le cas de tableaux de chaînes par exemple, et aussi de tableaux de nombres).
Il pourrait être agréable de le mettre sous la forme d’un article Locoduino qui mentionnerait conjointement l’utilisation de la fonction freeMemory() qui permets de connaître la taille de sram restant libre. Cette fonction a déjà été citée dans un article, mais il manque peut-être une vue synthétique sur ce sujet assez délicat qui mériterait bien un article à lui tout seul. -
Les chaînes de caractères 17 avril 2016 19:36, par Eric
Bonjour,
J’utilise un shield GSM qui doit envoyer le message suivant :
"sos ][1.1][2.0][3 ;0"
Le sms est traité et l’état des capteurs 1 2 et 3 sont inscrits dans une base de données.
Lors de l’envoi du sms, les ][ se transforme en )(... et l’info n’est pas traitée
Quelqu’un peut -il m’aider ???
Merci -
Les chaînes de caractères 18 avril 2016 10:49, par Jean-Luc
Les crochets ne font pas partie du jeu de caractères des SMS. Il faut changer votre protocole. Quel est le rapport avec le modélisme ferroviaire ? Les forum de arduino.cc ne seraient-il pas plus adaptés pour ce genre de demande ?
-
Les chaînes de caractères 13 avril 2017 19:19, par PIVAR
Merci , vos articles sont bien (et agréables à lire , même si on saisit pas tout du premier coup) ; j’ai vu dans la doc arduino que les chaines de caractère "string" étaient utilisables , un peu comme celles des Vb , python ou b4x ; ont-elles la même contrainte de zero final que les chaines de caractères ?
-
Les chaînes de caractères 21 avril 2017 21:10, par Thierry
Bonjour. Je n’ai pas utilisé cette classe String maintenant présente par défaut avec l’IDE actuel. La contrainte du caractère de fin de chaîne existe toujours puisqu’en interne, la classe utilise un banal char * pour stocker son texte. Mais elle est complètement masquée par la classe qui se débrouille pour gérer ce zéro. Elle utilise en plus un entier qui donne la longueur de la chaîne.
-
Les chaînes de caractères 28 avril 2017 00:57, par pivar
Bonjour , j’ai pu regarder les echanges de string pc-arduino ; ce que j’ai vu : lorsque le pc envoie une string en serial , la string se retrouve avec un zero de fin dans arduino ; je teste la fin de message sur ce zero
lorsque arduino envoie un message au pc , la string n’a rien en fin si elle est envoyée avec un Serial.print et elle a les caracteres 10 et 13 avec un Serial .println ; c’est normal , ce sont les caractères de retour ligne ; comme il y a plus de memoire dispo dans les dernières cartes , string peut parfois être plus commode -
Les chaînes de caractères 5 décembre 2017 15:26, par Frangville
Bonjour je voudrais savoir comment obtenir la longueur d’une variable en char* (char* BSF[]= "Boissons","Sandwichs","Friandises","Chips" ;).
Merci d’avance. -
Les chaînes de caractères 5 décembre 2017 15:43, par Thierry
Bonjour.
Dans votre exemple, vous avez quatre chaînes de caractères... Pour obtenir la longueur de l’une d’entre elles vous devez utiliser la fonction strlen() :char* BSF[]= { "Boissons","Sandwichs","Friandises","Chips" }; void setup() { int longueur = strlen(BSF[2]); } void loop() { // put your main code here, to run repeatedly: }
-
Les chaînes de caractères 17 avril 2018 17:31, par Bobillier Eric
Bonjour.
Merci pour cet article très instructif (comme tout le site).
J’aimerais comprendre une chose concernant les chaines et l’objet Chaine en particulier.
Il est possible dans Arduino de déclarer une chaine comme suit : String(Toto) et de la manipuler avec les méthodes de la classe string et surtout de lui associer une valeur. Cependant à aucun moment il n’est fait référence à une quelconque taille comme c’est le cas avec la déclaration des tableaux de char. Cela voudrait-il dire que le compilateur réserve automatiquement et de manière implicite une place définit en mémoire (genre 256 bytes). De plus, il existe une méthode reserve() dans la classe String, mais elle n’est pas systématiquement utilisée pour définir la taille mémoire réservée pour la chaine dans la plupart des exemples, et donc quelle est son utilité. Merci par avance pour vos éclaircissements.Voir en ligne : Reserve()
-
stocker des messages dans la Ram pour économiser de la place dans le programme 3 mai 2019 08:09, par dominique POPELIN
Bonjour mon problème est inverse. J’ai un croquis qui dépasse les 32256 Octets. Dans celui-ci il y a de stocker "lundi" "mardi" etc et "Janviee" "Février" etc.
Je voudrais créer deux tableaux en Ram pour qu’à l’adresse 1 il y est "lundi" jusqu"à dimanche (soit 8 case de 0 à 7) et un autre avec Janvier jusqu’à Décembre soit de 0 à 12.
Ensuite avec le N° du jour (de 1 à 7) je charge le jour correspondant et de 1 à 12 le mois. J’espère que ca réduiras suffisamment mon croquis car actuellement j’ai environ 1000 "places" dans la Ram. Merci de votre aide.-
-
stocker des messages dans la Ram pour économiser de la place dans le programme 3 mai 2019 23:12, par dominique POPELIN
merci mais mon problème est l’inverse. Je veux économiser de la mémoire programme.
Comme indiqué dans le dossier que tu m’a proposé la solution consiste à changer de µP (je vais utilisser un ATMéga 644P) car je ne peux pas réduire le programme sauf à stocker mes variables constituant mes messages en Ram ce que je ne sais pas faire...
Merci pour ton aide.
-
stocker des messages dans la Ram pour économiser de la place dans le programme 5 mai 2019 09:45, par Dominique
La Ram étant vierge à la mise sous tension, il faut bien un bout de programme pour la charger au démarrage : donc occuper de la mémoire programme.
Si vous ne changez pas de processeur, ça ne va pas être simple !-
stocker des messages dans la Ram pour économiser de la place dans le programme 5 mai 2019 11:28, par POPELIN
Bonjour merci pour les infos j ai commandé un ATMega644 pour lequel j ai fais un sheild spécifique pour charger le boorlaoder..
-
-
-
-