Comment lire une valeur de chaîne avec un délimiteur sur Arduino?
J'ai à gérer les servos à partir d'un ordinateur.
J'ai donc envoyer gérer les messages de l'ordinateur à l'Arduino. J'ai besoin de gérer le nombre de servo et le coin. Je suis en train de penser sendin quelque chose comme ceci : "1;130" (première servo et coin 130, le délimiteur ";").
Y a de meilleures méthodes pour accomplir cette?
Voici mon ce code :
String foo = "";
void setup(){
Serial.begin(9600);
}
void loop(){
readSignalFromComp();
}
void readSignalFromComp() {
if (Serial.available() > 0)
foo = '';
while (Serial.available() > 0){
foo += Serial.read();
}
if (!foo.equals(""))
Serial.print(foo);
}
Cela ne fonctionne pas. Quel est le problème?
source d'informationauteur yital9
Vous devez vous connecter pour publier un commentaire.
les chaînes de Série sur arduino
Exemple De Code
La valeur pour l'envoi de série serait "mon string\n5" et le résultat serait str = "ma chaîne" et x = 5
C'est un Grand sous que j'ai trouvé. Cela a été super utile et j'espère que ce sera pour vous.
C'est la méthode qui appelle le sous.
C'est Le sous!
La plupart des autres réponses sont soit très détaillé ou très général, alors j'ai pensé que je donnerais un exemple de la façon dont il peut être fait avec votre exemple d'utilisation de l'Arduino bibliothèques:
Vous pouvez utiliser la méthode Numéro de série.readStringUntil à lire jusqu'à ce que votre délimiteur de la
Serial
port.Et ensuite utiliser toInt pour convertir la chaîne en un entier.
Donc, pour un exemple complet:
Bien sûr, nous pouvons le simplifier un peu:
Vous avez besoin pour construire une mémoire tampon de lecture, et de calculer où votre 2 champs (servo # et les angles de début et de fin. Ensuite, vous pouvez les lire dans, et de convertir les caractères en nombres Entiers à utiliser dans le reste de votre code. Quelque chose comme cela devrait fonctionner (pas testé sur un Arduino, mais C standard):
Il semble que vous simplement besoin de les corriger
J'ai fait aussi truc similaire..: