Voila dans le cadre de mes études j'ai un projet qui consiste à la récupération d'information provenant d'un capteur de particules(SDS011)
Ce capteur est connecté à un Raspberry et je doit lui envoyer différentes trames pour configurer le capteur et pour demander l'envoie de données de ce capteur vers le Raspberry ( je récupère ensuite les donnée que j'envoie sur un serveur MQTT mosquitto).
En regardant les datasheet et un code en python donné avec le capteur, je me rends comptes que les trames à envoyer possèdent une succession de 0.
Le problème étant que je doit non pas envoyer un 0 mais un char(0) qui est le caractère d'échappement des chaines de caractères. ce qui suit ce char(0) ou \0 n'est donc pas lu par le compilateur.
Existe t-il un moyen pour pouvoir stocker ce caractère à plusieurs reprises dans une chaine de caractère me permettant ainsi d'envoyer la bonne trame au capteur ?
Merci d'avance pour l'aide que vous pourrez, je l'espère m'apporter!
tu n'expliques pas comment tu envoies tes données mais il est clair qu'utiliser les fonctions qui attendent des strings n'est pas forcément une bonne idée. Tu as write qui prend pour paramètre un buffer et une taille … tu pourras envoyer autant de \0 que tu veux avec ça.
Une chaine de caractères en C, c'est "une succession de caractères dont aucun n'est '\0', le '\0' servant à en indiquer la fin". Un tableau de caractère c'est "une succession de caractères quelconques dont on connait la taille par ailleurs". Donc il suffit d'utiliser des tableaux de caractères.
tu n'expliques pas comment tu envoies tes données mais il est clair qu'utiliser les fonctions qui attendent des strings n'est pas forcément une bonne idée. Tu as write qui prend pour paramètre un buffer et une taille … tu pourras envoyer autant de \0 que tu veux avec ça.
pour gérer mon port série j'utilise la bibliothèque WiringSerial (serialPrintf(mon port, mes données)pour écrire sur le port)
si tu as un handle fd utilises write (par exemple).
D'une manière général les fonctions dont le nom finit par f (comme printf, scanf) sont conçues pour des IO formattées, et donc les strings à 0 terminal sont des strings.
Merci White crow, en envoyant un tableau de caractère avec write(fd,requete,taille), j'arrive a récupérer les infos avec read(fd,buf,taille)
envoie caractère vide sur port série
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
En recherche d'emploi.