Port COM

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 :slight_smile:

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 ::slight_smile: )

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 from Serial*' 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 type Serial*'| request for member WriteData' in Arduino', 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;

http://www.commentcamarche.net/contents/cpp/cppconst.php3

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 type Serial*'| request for member WriteData' in Arduino', 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 :wink:

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