Bonjour,
Je débute un peu en C et du coup je sais pas si la formulation du topic utilise le bon vocabulaire, mais rien ne vaut un bon exemple pour mettre au clair :
En gros j'ai une carte arduino UNO reliée à un pc et à une autre carte arduino (Mega). Je communique en série avec les deux périphériques en utilisant l'objet built-in Serial et la bibiliothèque SoftwareSerial, un pour l'odi et l'autre pour l'arduino.
Jusque là tout va bien. Mon problème est que j'utilise une fonction de lecture que et que j'aimerais que cette fonction marche, grace à un argument, à la fois pour la lecture sur le port série de l'ordi et de l'arduino.
voila le code que j'ai écrit et qui évidment ne marche pas. Il dois y avoir un truc avec les pointeur, mais je soit mal les définir soit ce n'est tout simplement pas possible :
#include <SoftwareSerial.h>
int Rx = 12;
int Tx = 13;
char Entree[] = "USB"; //deux entree possible soit par le moniteur serie ("USB")soit par l'autre arduino ("arduino")
void * pointeurPeripherique_Entree = &(Serial);
SoftwareSerial arduinoMega(Rx, Tx);
void setup() {
Serial.begin(250000);
while (!Serial) {} //attente de la communication avec l'arduino
if (Entree == "arduino") {
pointeurPeripherique_Entree = &(arduinoMega);
arduinoMega.begin(9600);
}
else {
Serial.println("==> ERREUR variable de peripherique d'entree non reconnu !");
while (true) {
;
}
}
}
int lecture(char * data, void *Peripherique_Entree) {
while (Peripherique_Entree.available()) {
if (Peripherique_Entree.peek() == ('A') || Peripherique_Entree.peek() == 'E') {
nbbytes = Peripherique_Entree.readBytesUntil('F', data, 10); //format de valeur au max A-182.485F
}
return nbbytes;
}
void loop() {
lecture(pointeurPeripherique_Entree);
}
Pour l'instant ca me retourne l'erreur : request for member 'available' in 'Peripherique_Entree', wich is of non-class type 'void*'
Je sais pas trop comment la résoudre, déjà que je ne sais si je m'y prend bien (et j'imagine que non :D).
Ce n'est pas la totalitée du code car j'ai découpé pour garder que l'essentiel.