LOCODUINO
Discussions Générales => Discussions ouvertes => Discussion démarrée par: Claudius29 le juillet 15, 2024, 01:55:37 am
-
Bonjour,
Dans le cadre d'un projet plus important en C++ pour piloter un reseau depuis mon PC, je souhaite dans un premier temps, écrire et lire sur le port serie d'un Arduino à partir d'un programme en C++ sur mon PC. En d'autre termes faire la même chose que le Serial Monitor de l'IDE Arduino.
Je ne trouve pas de programme en C++ qui fonctionne.
Merci d'avance.
Claudius29
-
Bonsoir Claudius,
J'avais fait une réponse mais un peu rapide, je croyais que c'était pour communiquer entre deux Arduino.
Mais à partir d'un ordi ce n'est pas beaucoup plus compliqué
// Code pour l'Arduino
void setup() {
Serial.begin(9600); // Initialiser la communication série à 9600 bauds
}
void loop() {
// Vérifier si une donnée a été reçue de l'ordinateur
if (Serial.available() > 0) {
String request = Serial.readStringUntil('\n');
Serial.print("Reçu de l'ordinateur: ");
Serial.println(request);
// Répondre à l'ordinateur
Serial.println("Bonjour Ordinateur!");
}
}
#include <iostream>
#include <boost/asio.hpp>
#include <boost/asio/serial_port.hpp>
#include <boost/asio/serial_port_base.hpp>
using namespace boost::asio;
int main() {
io_service io;
serial_port serial(io, "COM3"); // Remplacer "COM3" par le port série utilisé par votre Arduino
serial.set_option(serial_port_base::baud_rate(9600));
serial.set_option(serial_port_base::character_size(8));
serial.set_option(serial_port_base::parity(serial_port_base::parity::none));
serial.set_option(serial_port_base::stop_bits(serial_port_base::stop_bits::one));
serial.set_option(serial_port_base::flow_control(serial_port_base::flow_control::none));
// Envoyer un message à l'Arduino
std::string message = "Bonjour Arduino!\n";
write(serial, buffer(message.c_str(), message.size()));
// Lire la réponse de l'Arduino
char reply[128];
read(serial, buffer(reply, 128));
std::cout << "Réponse de l'Arduino: " << reply << std::endl;
return 0;
}
Tu vérifiras, c'est pas testé entre autres choses les lib mais le principe est là
Christophe