J'utilise ces fonctions:
SDL_Init(SDL_INIT_VIDEO|SDL_INIT_JOYSTICK);
si processing peut le faire alors je m'y met sans plus tarder
J'utilise ces fonctions:
SDL_Init(SDL_INIT_VIDEO|SDL_INIT_JOYSTICK);
si processing peut le faire alors je m'y met sans plus tarder
Mais elle ne sert à rien cette fonction ! Quel est ton besoin : utiliser un joystick, utiliser une caméra ? Il y a des solutions différentes, et SDL est juste une façon de le faire, donc même si tu n'as pas cette fonction, il y aura un équivalent dans chacun des langages.
Bon, Processing ne fait pas d'appel direct à la SDL, c'est beaucoup plus simple et performant, donc oublie et reprend l'utilisation de C++ et de SDL.
le besoin est effectivement utiliser un joystick, La SDL est juste un moyen, mais c'est le seul moyen qui était expliqué en tutoriels, donc c'était un excellent moyen pour moi qui n'ai aucune notion de programmation :-/
(le SDL vidéo est pour l'interface
et le SDL joystick .... )
mais je doit dire que je ne sais pas comment prendre cette phrase:
Processing ne fait pas d'appel direct à la SDL, c'est beaucoup plus simple et performant, donc oublie et reprend l'utilisation de C++ et de SDL.
:o
donc je continu sur la voie du C++
de ce point de vue le statu a avancé,mais je ai ces erreurs :
request for member ReadData' in
COM3', which is of non-class type Serial*'| request for member
WriteData' in COM3', which is of non-class type
Serial*'|
COM3' is not of type
Serial'|
||=== Build finished: 3 errors, 0 warnings ===|
pour ce texte:
COM3.ReadData(*COM3, tailleMot);
COM3.WriteData(*recu, tailleMot);
COM3.~Serial();
(en tout cas j'explore les exemples de processing et je crois que je vais le garder pour d'autres projets éventuels : )
COM3 n'est pas une variable, c'est le nom de ton port série. Il faut trouver un exemple en C++ qui utilise cette librairie, ou quelqu'un qui connait assez bien le C++ pour t'aider.
A mon avis il faudrait faire
char* buffer = "0123456789";
Serial mySerial = new Serial("COM3");
// lire 8 caractères sur la liaison série
int qty = mySerial.ReadData(buffer,8);
// buffer contient maintenant qty octets reçus de l'Arduino
// on veut envoyer "a6" à l'Arduino
buffer[0] = 'a';
buffer[1] = '6';
mySerial.WriteData(buffer,2);
effectivement nuance non négligeable COM 3 n'est pas une variable
je corrige tout de suite
quelques minutes après, ça fonctionne beaucoup mieux:
j'ai un peut modifié les fonctions :
mais un problème persiste avec la déclaration des variables
Arduino = new Serial(*COM3);
renvois:
Arduino' was not declared in this scope|
COM3' was not declared in this scope|
unused variable 'COM3'|
||=== Build finished: 2 errors, 1 warnings ===|
(quelle est la signification du "new"?)
je commence à comprendre à quoi sert chaque membre mais il me reste des erreurs à corriger:
soit j'écris ça
Serial Arduino = new Serial("COM3");
int qty = Arduino.ReadData(buffer, 1);
Arduino.WriteData(buffer, 3);
Arduino.~Serial();...
conversion fromSerial*' to non-scalar type
Serial' requested|
||=== Build finished: 1 errors, 0 warnings ===|
et le message d'erreur porte sur l'utilisation du constructeur
soit j'écris ça
Serial *Arduino = new Serial("COM3");
...
int qty = Arduino.ReadData(buffer, 1);
Arduino.WriteData(buffer, 3);
Arduino.~Serial();request for member
ReadData' in
Arduino', which is of non-class typeSerial*'| request for member
WriteData' inArduino', which is of non-class type
Serial*'|
Arduino' is not of type
Serial'|
||=== Build finished: 3 errors, 0 warnings ===|
et l'erreur est reportée sur les fonctions.
Essaie une instruction à la fois. Je pense que c'est le Arduino.~Serial(); qui ne va pas. Je connais mal les destructeurs en C++ mais je pense que ça ne s'appelle pas comme ça mais avec l'instruction delete :
delete Arduino;
Serial *Arduino = new Serial("COM3");
Arduino.ReadData(buffer, 1);
Arduino.WriteData(buffer, 3);delete Arduino;
ERREURS:
request for member
ReadData' in
Arduino', which is of non-class typeSerial*'| request for member
WriteData' inArduino', which is of non-class type
Serial*'|||=== Build finished: 2 errors, 0 warnings ===|
Si je comprend, la variable créé est dynamique, il faut donc utiliser un destructeur approprié
reste ces deux dernières erreurs...
Tu mélanges tes 2 exemples, ça ne va pas.
la différence entre le premier et le deuxième exemple vient du * dans la déclaration; Si d'après ce que j'ai compris il faut s'adresser au pointeur dans les déclarations usuelles, donc il faut garder l'exemple avec *
mais une chose m'étonne, dans ce cas, pourquoi l'exemple "sans *" n'a-t-il qu'une erreur? :o
Si tu veux utiliser un pointeur, appelle tes fonctions comme il faut. Demande à un expert, je n'en suis pas un.
Ok compris
En tout cas merci pour tout ce que tu m'a montré ça m'a permis de faire de grandes avancées
bon pour le problème c'est résolus, on vient de me montrer où ça clochait.
Donc pour utiliser le headers Serial en C++
les lignes sont les suivantes:
char* buffer = "0123456789";
Serial *Le_nom_que_je_veux = new Serial("COM3");
Le_nom_que_je_veux->ReadData(buffer, 1);
Le_nom_que_je_veux->WriteData(buffer, 3);
delete Le_nom_que_je_veux;
apparemment je définissait le membre comme un pointeur (on fait de même avec les évènement d'un joystick)
donc le membre définit devait être traité comme un pointeur
c'est à dire, au lieu d'utiliser ".", on utilise "->"
encore merci pour l'aide que vous m'avez apporté, problème résolut à 100% ;D