Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 19/10/2016, à 17:34

cherault

C++ Termios.h + Arduino

Bonjour à vous tous,

Je voudrai simplement pouvoir lire plusieurs données en provenance d'un Arduino sur le port série.
Actuellement, je pense pouvoir configurer correctement le port en C++.
En revanche, je ne sais pas comment lire "simplement" plusieurs données émises par l'Arduino.

Je vous joins le code:

#include <iostream>
#include <fcntl.h>
#include <unistd.h>
#include <termios.h>
#include <stdlib.h>

using namespace std;

int openSerial(const char *path);

int main()
{
	int serial = openSerial("/dev/ttyUSB1");

	char c;
	read(serial, &c, 1);
	while (c != ' ')
	{
	    read(serial, &c, 1);
            //je passe la conversion en int avec atoi volontairement.
	}

	return 0;
}

int openSerial(const char *path)
{
	int port;
	struct termios options;

	port = open(path, O_RDWR | O_NOCTTY | O_NDELAY);

	fcntl(port, F_SETFL, 0);

	tcgetattr(port, &options);
	cfsetispeed(&options, B9600); //9600 bauds input
	cfsetospeed(&options, B9600); //9600 bauds output
	options.c_cflag |= (CLOCAL | CREAD | CS8);
	options.c_cflag &= ~(PARENB | CSTOPB);
	tcsetattr(port, TCSANOW, &options);

	return port;
}

Comment puis-je faire si mon arduino envoi par exemple la chose suivante:

Serial.print(v); //vitesse
Serial.print(" ");
Serial.println(h); //altitude

Merci pour votre aide.

Amitiés,

Hors ligne

#2 Le 19/10/2016, à 21:58

alius

Re : C++ Termios.h + Arduino

Je connais pas arduino.

es tu sur de ta condition dans le while ? as tu essayé avec un while (true) ?
du coté de l'arduino est-ce que tu as bien flush le buffer ?


Alius

Hors ligne

#3 Le 20/10/2016, à 08:46

cherault

Re : C++ Termios.h + Arduino

Bonjour Alius,

Merci pour ta réponse.
Oui je suis sur de ma condition while, mais le while(true) est correct également.
Enfin concernant le flush du buffer, il existe aussi.

Que puis-je faire pour lire ces deux valeurs en sortie de l'arduino ?
Car au final, Arduino ou pas, il y a deux valeurs sur le port série à lire.
C'est ce que je veux faire.

Merci pour ton aide.

Amitiés,

Hors ligne